[PATCH iproute-next v4 4/4] mptcp: add the fullmesh flag setting support

Geliang Tang posted 4 patches 4 years ago
[PATCH iproute-next v4 4/4] mptcp: add the fullmesh flag setting support
Posted by Geliang Tang 4 years ago
This patch added the fullmesh flag setting support.

 ip mptcp endpoint change id 1 fullmesh
 ip mptcp endpoint change id 1 nofullmesh

Added the fullmesh flag check for the adding address too.

Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
 v4:
 - put into 'fullmesh flag setting support' serirs.
 - No code changed.

 v2:
 - drop MPTCP_PM_ADDR_FLAG_NOFULLMESH.
 - rename MPTCP_PM_ADDR_FLAG_NOBACKUP to MPTCP_PM_ADDR_FLAG_NONE.
 - Needs to apply the patch "mptcp: add id check for deleting address"
first.
---
 ip/ipmptcp.c        | 16 ++++++++++++----
 man/man8/ip-mptcp.8 |  8 ++++++--
 2 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/ip/ipmptcp.c b/ip/ipmptcp.c
index f85c49a8..564500a8 100644
--- a/ip/ipmptcp.c
+++ b/ip/ipmptcp.c
@@ -25,7 +25,8 @@ static void usage(void)
 		"Usage:	ip mptcp endpoint add ADDRESS [ dev NAME ] [ id ID ]\n"
 		"				      [ port NR ] [ FLAG-LIST ]\n"
 		"	ip mptcp endpoint delete id ID [ ADDRESS ]\n"
-		"	ip mptcp endpoint change id ID [ backup | nobackup ]\n"
+		"	ip mptcp endpoint change id ID [ backup | nobackup |\n"
+		"					 fullmesh | nofullmesh ]\n"
 		"	ip mptcp endpoint show [ id ID ]\n"
 		"	ip mptcp endpoint flush\n"
 		"	ip mptcp limits set [ subflows NR ] [ add_addr_accepted NR ]\n"
@@ -46,7 +47,7 @@ static int genl_family = -1;
 	GENL_REQUEST(_req, MPTCP_BUFLEN, genl_family, 0,	\
 		     MPTCP_PM_VER, _cmd, _flags)
 
-#define MPTCP_PM_ADDR_FLAG_NOBACKUP 0x0
+#define MPTCP_PM_ADDR_FLAG_NONE 0x0
 
 /* Mapping from argument to address flag mask */
 static const struct {
@@ -57,7 +58,8 @@ static const struct {
 	{ "subflow",		MPTCP_PM_ADDR_FLAG_SUBFLOW },
 	{ "backup",		MPTCP_PM_ADDR_FLAG_BACKUP },
 	{ "fullmesh",		MPTCP_PM_ADDR_FLAG_FULLMESH },
-	{ "nobackup",		MPTCP_PM_ADDR_FLAG_NOBACKUP }
+	{ "nobackup",		MPTCP_PM_ADDR_FLAG_NONE },
+	{ "nofullmesh",		MPTCP_PM_ADDR_FLAG_NONE }
 };
 
 static void print_mptcp_addr_flags(unsigned int flags)
@@ -116,9 +118,15 @@ static int mptcp_parse_opt(int argc, char **argv, struct nlmsghdr *n, int cmd)
 	ll_init_map(&rth);
 	while (argc > 0) {
 		if (get_flags(*argv, &flags) == 0) {
+			if (adding &&
+			    (flags & MPTCP_PM_ADDR_FLAG_SIGNAL) &&
+			    (flags & MPTCP_PM_ADDR_FLAG_FULLMESH))
+				invarg("invalid flags\n", *argv);
+
 			/* allow changing the 'backup' flag only */
 			if (cmd == MPTCP_PM_CMD_SET_FLAGS &&
-			    (flags & ~MPTCP_PM_ADDR_FLAG_BACKUP))
+			    (flags & ~MPTCP_PM_ADDR_FLAG_BACKUP) &&
+			    (flags & ~MPTCP_PM_ADDR_FLAG_FULLMESH))
 				invarg("invalid flags\n", *argv);
 
 		} else if (matches(*argv, "id") == 0) {
diff --git a/man/man8/ip-mptcp.8 b/man/man8/ip-mptcp.8
index 0e789225..bddbff3c 100644
--- a/man/man8/ip-mptcp.8
+++ b/man/man8/ip-mptcp.8
@@ -41,7 +41,7 @@ ip-mptcp \- MPTCP path manager configuration
 .BR "ip mptcp endpoint change id "
 .I ID
 .RB "[ "
-.I BACKUP-OPT
+.I CHANGE-OPT
 .RB "] "
 
 .ti -8
@@ -68,10 +68,14 @@ ip-mptcp \- MPTCP path manager configuration
 .RB  "]"
 
 .ti -8
-.IR BACKUP-OPT " := ["
+.IR CHANGE-OPT " := ["
 .B backup
 .RB "|"
 .B nobackup
+.RB "|"
+.B fullmesh
+.RB "|"
+.B nofullmesh
 .RB  "]"
 
 .ti -8
-- 
2.31.1


Re: [PATCH iproute-next v4 4/4] mptcp: add the fullmesh flag setting support
Posted by Mat Martineau 4 years ago
On Wed, 12 Jan 2022, Geliang Tang wrote:

> This patch added the fullmesh flag setting support.
>
> ip mptcp endpoint change id 1 fullmesh
> ip mptcp endpoint change id 1 nofullmesh
>
> Added the fullmesh flag check for the adding address too.
>
> Signed-off-by: Geliang Tang <geliang.tang@suse.com>
> ---
> v4:
> - put into 'fullmesh flag setting support' serirs.
> - No code changed.
>

The patch looks good to me:

Acked-by: Mat Martineau <mathew.j.martineau@linux.intel.com>


For future patches that might involve more than one repository, it is 
helpful to group them in a separate series for each repository (for 
example, posting separately for this patch and the previous 3 mptcp-next 
patches). Noting the dependencies in the cover letters or notes section 
of the commit message is very helpful, thanks for doing that. Keeping the 
series separated helps with using tools like patchew and b4.

Thanks!

-Mat

> v2:
> - drop MPTCP_PM_ADDR_FLAG_NOFULLMESH.
> - rename MPTCP_PM_ADDR_FLAG_NOBACKUP to MPTCP_PM_ADDR_FLAG_NONE.
> - Needs to apply the patch "mptcp: add id check for deleting address"
> first.
> ---
> ip/ipmptcp.c        | 16 ++++++++++++----
> man/man8/ip-mptcp.8 |  8 ++++++--
> 2 files changed, 18 insertions(+), 6 deletions(-)
>
> diff --git a/ip/ipmptcp.c b/ip/ipmptcp.c
> index f85c49a8..564500a8 100644
> --- a/ip/ipmptcp.c
> +++ b/ip/ipmptcp.c
> @@ -25,7 +25,8 @@ static void usage(void)
> 		"Usage:	ip mptcp endpoint add ADDRESS [ dev NAME ] [ id ID ]\n"
> 		"				      [ port NR ] [ FLAG-LIST ]\n"
> 		"	ip mptcp endpoint delete id ID [ ADDRESS ]\n"
> -		"	ip mptcp endpoint change id ID [ backup | nobackup ]\n"
> +		"	ip mptcp endpoint change id ID [ backup | nobackup |\n"
> +		"					 fullmesh | nofullmesh ]\n"
> 		"	ip mptcp endpoint show [ id ID ]\n"
> 		"	ip mptcp endpoint flush\n"
> 		"	ip mptcp limits set [ subflows NR ] [ add_addr_accepted NR ]\n"
> @@ -46,7 +47,7 @@ static int genl_family = -1;
> 	GENL_REQUEST(_req, MPTCP_BUFLEN, genl_family, 0,	\
> 		     MPTCP_PM_VER, _cmd, _flags)
>
> -#define MPTCP_PM_ADDR_FLAG_NOBACKUP 0x0
> +#define MPTCP_PM_ADDR_FLAG_NONE 0x0
>
> /* Mapping from argument to address flag mask */
> static const struct {
> @@ -57,7 +58,8 @@ static const struct {
> 	{ "subflow",		MPTCP_PM_ADDR_FLAG_SUBFLOW },
> 	{ "backup",		MPTCP_PM_ADDR_FLAG_BACKUP },
> 	{ "fullmesh",		MPTCP_PM_ADDR_FLAG_FULLMESH },
> -	{ "nobackup",		MPTCP_PM_ADDR_FLAG_NOBACKUP }
> +	{ "nobackup",		MPTCP_PM_ADDR_FLAG_NONE },
> +	{ "nofullmesh",		MPTCP_PM_ADDR_FLAG_NONE }
> };
>
> static void print_mptcp_addr_flags(unsigned int flags)
> @@ -116,9 +118,15 @@ static int mptcp_parse_opt(int argc, char **argv, struct nlmsghdr *n, int cmd)
> 	ll_init_map(&rth);
> 	while (argc > 0) {
> 		if (get_flags(*argv, &flags) == 0) {
> +			if (adding &&
> +			    (flags & MPTCP_PM_ADDR_FLAG_SIGNAL) &&
> +			    (flags & MPTCP_PM_ADDR_FLAG_FULLMESH))
> +				invarg("invalid flags\n", *argv);
> +
> 			/* allow changing the 'backup' flag only */
> 			if (cmd == MPTCP_PM_CMD_SET_FLAGS &&
> -			    (flags & ~MPTCP_PM_ADDR_FLAG_BACKUP))
> +			    (flags & ~MPTCP_PM_ADDR_FLAG_BACKUP) &&
> +			    (flags & ~MPTCP_PM_ADDR_FLAG_FULLMESH))
> 				invarg("invalid flags\n", *argv);
>
> 		} else if (matches(*argv, "id") == 0) {
> diff --git a/man/man8/ip-mptcp.8 b/man/man8/ip-mptcp.8
> index 0e789225..bddbff3c 100644
> --- a/man/man8/ip-mptcp.8
> +++ b/man/man8/ip-mptcp.8
> @@ -41,7 +41,7 @@ ip-mptcp \- MPTCP path manager configuration
> .BR "ip mptcp endpoint change id "
> .I ID
> .RB "[ "
> -.I BACKUP-OPT
> +.I CHANGE-OPT
> .RB "] "
>
> .ti -8
> @@ -68,10 +68,14 @@ ip-mptcp \- MPTCP path manager configuration
> .RB  "]"
>
> .ti -8
> -.IR BACKUP-OPT " := ["
> +.IR CHANGE-OPT " := ["
> .B backup
> .RB "|"
> .B nobackup
> +.RB "|"
> +.B fullmesh
> +.RB "|"
> +.B nofullmesh
> .RB  "]"
>
> .ti -8
> -- 
> 2.31.1
>
>
>

--
Mat Martineau
Intel

Re: [PATCH iproute-next v4 4/4] mptcp: add the fullmesh flag setting support
Posted by Geliang Tang 4 years ago
On Thu, Jan 13, 2022 at 03:44:42PM -0800, Mat Martineau wrote:
> On Wed, 12 Jan 2022, Geliang Tang wrote:
> 
> > This patch added the fullmesh flag setting support.
> > 
> > ip mptcp endpoint change id 1 fullmesh
> > ip mptcp endpoint change id 1 nofullmesh
> > 
> > Added the fullmesh flag check for the adding address too.
> > 
> > Signed-off-by: Geliang Tang <geliang.tang@suse.com>
> > ---
> > v4:
> > - put into 'fullmesh flag setting support' serirs.
> > - No code changed.
> > 
> 
> The patch looks good to me:
> 
> Acked-by: Mat Martineau <mathew.j.martineau@linux.intel.com>

Hi Mat,

This patch is updated for support to set backup and fullmesh flags
together. I just sent out a v5.

> 
> 
> For future patches that might involve more than one repository, it is
> helpful to group them in a separate series for each repository (for example,
> posting separately for this patch and the previous 3 mptcp-next patches).
> Noting the dependencies in the cover letters or notes section of the commit
> message is very helpful, thanks for doing that. Keeping the series separated
> helps with using tools like patchew and b4.
> 
> Thanks!
> 
> -Mat
> 
> > v2:
> > - drop MPTCP_PM_ADDR_FLAG_NOFULLMESH.
> > - rename MPTCP_PM_ADDR_FLAG_NOBACKUP to MPTCP_PM_ADDR_FLAG_NONE.
> > - Needs to apply the patch "mptcp: add id check for deleting address"
> > first.
> > ---
> > ip/ipmptcp.c        | 16 ++++++++++++----
> > man/man8/ip-mptcp.8 |  8 ++++++--
> > 2 files changed, 18 insertions(+), 6 deletions(-)
> > 
> > diff --git a/ip/ipmptcp.c b/ip/ipmptcp.c
> > index f85c49a8..564500a8 100644
> > --- a/ip/ipmptcp.c
> > +++ b/ip/ipmptcp.c
> > @@ -25,7 +25,8 @@ static void usage(void)
> > 		"Usage:	ip mptcp endpoint add ADDRESS [ dev NAME ] [ id ID ]\n"
> > 		"				      [ port NR ] [ FLAG-LIST ]\n"
> > 		"	ip mptcp endpoint delete id ID [ ADDRESS ]\n"
> > -		"	ip mptcp endpoint change id ID [ backup | nobackup ]\n"
> > +		"	ip mptcp endpoint change id ID [ backup | nobackup |\n"
> > +		"					 fullmesh | nofullmesh ]\n"
> > 		"	ip mptcp endpoint show [ id ID ]\n"
> > 		"	ip mptcp endpoint flush\n"
> > 		"	ip mptcp limits set [ subflows NR ] [ add_addr_accepted NR ]\n"
> > @@ -46,7 +47,7 @@ static int genl_family = -1;
> > 	GENL_REQUEST(_req, MPTCP_BUFLEN, genl_family, 0,	\
> > 		     MPTCP_PM_VER, _cmd, _flags)
> > 
> > -#define MPTCP_PM_ADDR_FLAG_NOBACKUP 0x0
> > +#define MPTCP_PM_ADDR_FLAG_NONE 0x0
> > 
> > /* Mapping from argument to address flag mask */
> > static const struct {
> > @@ -57,7 +58,8 @@ static const struct {
> > 	{ "subflow",		MPTCP_PM_ADDR_FLAG_SUBFLOW },
> > 	{ "backup",		MPTCP_PM_ADDR_FLAG_BACKUP },
> > 	{ "fullmesh",		MPTCP_PM_ADDR_FLAG_FULLMESH },
> > -	{ "nobackup",		MPTCP_PM_ADDR_FLAG_NOBACKUP }
> > +	{ "nobackup",		MPTCP_PM_ADDR_FLAG_NONE },
> > +	{ "nofullmesh",		MPTCP_PM_ADDR_FLAG_NONE }
> > };
> > 
> > static void print_mptcp_addr_flags(unsigned int flags)
> > @@ -116,9 +118,15 @@ static int mptcp_parse_opt(int argc, char **argv, struct nlmsghdr *n, int cmd)
> > 	ll_init_map(&rth);
> > 	while (argc > 0) {
> > 		if (get_flags(*argv, &flags) == 0) {
> > +			if (adding &&
> > +			    (flags & MPTCP_PM_ADDR_FLAG_SIGNAL) &&
> > +			    (flags & MPTCP_PM_ADDR_FLAG_FULLMESH))
> > +				invarg("invalid flags\n", *argv);
> > +
> > 			/* allow changing the 'backup' flag only */

Update this comment to:

	/* allow changing the 'backup' and 'fullmesh' flags only */

> > 			if (cmd == MPTCP_PM_CMD_SET_FLAGS &&
> > -			    (flags & ~MPTCP_PM_ADDR_FLAG_BACKUP))
> > +			    (flags & ~MPTCP_PM_ADDR_FLAG_BACKUP) &&
> > +			    (flags & ~MPTCP_PM_ADDR_FLAG_FULLMESH))

This two line change to:

	(flags & ~MPTCP_PM_ADDR_FLAG_BACKUP & ~MPTCP_PM_ADDR_FLAG_FULLMESH))

Thanks,
-Geliang

> > 				invarg("invalid flags\n", *argv);
> > 
> > 		} else if (matches(*argv, "id") == 0) {
> > diff --git a/man/man8/ip-mptcp.8 b/man/man8/ip-mptcp.8
> > index 0e789225..bddbff3c 100644
> > --- a/man/man8/ip-mptcp.8
> > +++ b/man/man8/ip-mptcp.8
> > @@ -41,7 +41,7 @@ ip-mptcp \- MPTCP path manager configuration
> > .BR "ip mptcp endpoint change id "
> > .I ID
> > .RB "[ "
> > -.I BACKUP-OPT
> > +.I CHANGE-OPT
> > .RB "] "
> > 
> > .ti -8
> > @@ -68,10 +68,14 @@ ip-mptcp \- MPTCP path manager configuration
> > .RB  "]"
> > 
> > .ti -8
> > -.IR BACKUP-OPT " := ["
> > +.IR CHANGE-OPT " := ["
> > .B backup
> > .RB "|"
> > .B nobackup
> > +.RB "|"
> > +.B fullmesh
> > +.RB "|"
> > +.B nofullmesh
> > .RB  "]"
> > 
> > .ti -8
> > -- 
> > 2.31.1
> > 
> > 
> > 
> 
> --
> Mat Martineau
> Intel
>