OSDN Git Service

selftests: mptcp: set and print the fullmesh flag
authorGeliang Tang <geliangtang@xiaomi.com>
Tue, 17 Aug 2021 22:07:25 +0000 (15:07 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 18 Aug 2021 09:10:01 +0000 (10:10 +0100)
This patch dealt with the MPTCP_PM_ADDR_FLAG_FULLMESH flag in add_addr()
and print_addr(), to set and print out the fullmesh flag.

Signed-off-by: Geliang Tang <geliangtang@xiaomi.com>
Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
tools/testing/selftests/net/mptcp/pm_nl_ctl.c

index 115decf..3547845 100644 (file)
@@ -25,7 +25,7 @@
 static void syntax(char *argv[])
 {
        fprintf(stderr, "%s add|get|set|del|flush|dump|accept [<args>]\n", argv[0]);
-       fprintf(stderr, "\tadd [flags signal|subflow|backup] [id <nr>] [dev <name>] <ip>\n");
+       fprintf(stderr, "\tadd [flags signal|subflow|backup|fullmesh] [id <nr>] [dev <name>] <ip>\n");
        fprintf(stderr, "\tdel <id> [<ip>]\n");
        fprintf(stderr, "\tget <id>\n");
        fprintf(stderr, "\tset <ip> [flags backup|nobackup]\n");
@@ -236,11 +236,18 @@ int add_addr(int fd, int pm_family, int argc, char *argv[])
                                        flags |= MPTCP_PM_ADDR_FLAG_SIGNAL;
                                else if (!strcmp(tok, "backup"))
                                        flags |= MPTCP_PM_ADDR_FLAG_BACKUP;
+                               else if (!strcmp(tok, "fullmesh"))
+                                       flags |= MPTCP_PM_ADDR_FLAG_FULLMESH;
                                else
                                        error(1, errno,
                                              "unknown flag %s", argv[arg]);
                        }
 
+                       if (flags & MPTCP_PM_ADDR_FLAG_SIGNAL &&
+                           flags & MPTCP_PM_ADDR_FLAG_FULLMESH) {
+                               error(1, errno, "error flag fullmesh");
+                       }
+
                        rta = (void *)(data + off);
                        rta->rta_type = MPTCP_PM_ADDR_ATTR_FLAGS;
                        rta->rta_len = RTA_LENGTH(4);
@@ -422,6 +429,13 @@ static void print_addr(struct rtattr *attrs, int len)
                                        printf(",");
                        }
 
+                       if (flags & MPTCP_PM_ADDR_FLAG_FULLMESH) {
+                               printf("fullmesh");
+                               flags &= ~MPTCP_PM_ADDR_FLAG_FULLMESH;
+                               if (flags)
+                                       printf(",");
+                       }
+
                        /* bump unknown flags, if any */
                        if (flags)
                                printf("0x%x", flags);