From: Geliang Tang <geliang.tang@suse.com>
To: Stephen Hemminger <stephen@networkplumber.org>,
David Ahern <dsahern@kernel.org>
Cc: Geliang Tang <geliang.tang@suse.com>,
netdev@vger.kernel.org, mptcp@lists.linux.dev,
Paolo Abeni <pabeni@redhat.com>,
Mat Martineau <mathew.j.martineau@linux.intel.com>
Subject: [PATCH iproute2-next v3 2/3] mptcp: add fullmesh support for setting flags
Date: Wed, 23 Feb 2022 14:50:38 +0800 [thread overview]
Message-ID: <fb00a0803b7244ce39bdc32a10d3d47053809565.1645598911.git.geliang.tang@suse.com> (raw)
In-Reply-To: <cover.1645598911.git.geliang.tang@suse.com>
A pair of new flags, fullmesh and nofullmesh, had been added in the
setting flags of MPTCP PM netlink in kernel space recently by the commit
73c762c1f07d ("mptcp: set fullmesh flag in pm_netlink").
This patch added the corresponding logic to pass these two flags to the
netlink in user space.
These new flags can be used like this:
ip mptcp endpoint change id 1 fullmesh
ip mptcp endpoint change id 1 nofullmesh
ip mptcp endpoint change id 1 backup fullmesh
ip mptcp endpoint change id 1 nobackup nofullmesh
Here's an example of setting fullmesh flags:
> sudo ip mptcp endpoint add 10.0.2.1 subflow
> sudo ip mptcp endpoint show
10.0.2.1 id 1 subflow
> sudo ip mptcp endpoint change id 1 fullmesh
> sudo ip mptcp endpoint show
10.0.2.1 id 1 subflow fullmesh
> sudo ip mptcp endpoint change id 1 nofullmesh
> sudo ip mptcp endpoint show
10.0.2.1 id 1 subflow
It can be seen that 'ip mptcp endpoint show' already supports showing
the fullmesh flag.
Acked-by: Paolo Abeni <pabeni@redhat.com>
Acked-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
ip/ipmptcp.c | 20 ++++++++++++--------
man/man8/ip-mptcp.8 | 8 ++++++--
2 files changed, 18 insertions(+), 10 deletions(-)
diff --git a/ip/ipmptcp.c b/ip/ipmptcp.c
index 5682c7df..c7b63761 100644
--- a/ip/ipmptcp.c
+++ b/ip/ipmptcp.c
@@ -25,14 +25,15 @@ 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 CHANGE-OPT\n"
" ip mptcp endpoint show [ id ID ]\n"
" ip mptcp endpoint flush\n"
" ip mptcp limits set [ subflows NR ] [ add_addr_accepted NR ]\n"
" ip mptcp limits show\n"
" ip mptcp monitor\n"
"FLAG-LIST := [ FLAG-LIST ] FLAG\n"
- "FLAG := [ signal | subflow | backup | fullmesh ]\n");
+ "FLAG := [ signal | subflow | backup | fullmesh ]\n"
+ "CHANGE-OPT := [ backup | nobackup | fullmesh | nofullmesh ]\n");
exit(-1);
}
@@ -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)
@@ -102,6 +104,7 @@ static int get_flags(const char *arg, __u32 *flags)
static int mptcp_parse_opt(int argc, char **argv, struct nlmsghdr *n, int cmd)
{
+ bool setting = cmd == MPTCP_PM_CMD_SET_FLAGS;
bool adding = cmd == MPTCP_PM_CMD_ADD_ADDR;
bool deling = cmd == MPTCP_PM_CMD_DEL_ADDR;
struct rtattr *attr_addr;
@@ -121,10 +124,11 @@ static int mptcp_parse_opt(int argc, char **argv, struct nlmsghdr *n, int cmd)
(flags & MPTCP_PM_ADDR_FLAG_FULLMESH))
invarg("flags mustn't have both signal and fullmesh", *argv);
- /* allow changing the 'backup' flag only */
- if (cmd == MPTCP_PM_CMD_SET_FLAGS &&
- (flags & ~MPTCP_PM_ADDR_FLAG_BACKUP))
- invarg("invalid flags\n", *argv);
+ /* allow changing the 'backup' and 'fullmesh' flags only */
+ if (setting &&
+ (flags & ~(MPTCP_PM_ADDR_FLAG_BACKUP |
+ MPTCP_PM_ADDR_FLAG_FULLMESH)))
+ invarg("invalid flags, backup and fullmesh only", *argv);
} else if (matches(*argv, "id") == 0) {
NEXT_ARG();
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.34.1
next prev parent reply other threads:[~2022-02-23 6:50 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-23 6:50 [PATCH iproute2-next v3 0/3] mptcp: add the fullmesh flag setting support Geliang Tang
2022-02-23 6:50 ` [PATCH iproute2-next v3 1/3] mptcp: add fullmesh check for adding address Geliang Tang
2022-02-23 6:50 ` Geliang Tang [this message]
2022-02-23 6:50 ` [PATCH iproute2-next v3 3/3] mptcp: add port support for setting flags Geliang Tang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=fb00a0803b7244ce39bdc32a10d3d47053809565.1645598911.git.geliang.tang@suse.com \
--to=geliang.tang@suse.com \
--cc=dsahern@kernel.org \
--cc=mathew.j.martineau@linux.intel.com \
--cc=mptcp@lists.linux.dev \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=stephen@networkplumber.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.