]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
bridge: fdb: add support for sticky flag
authorNikolay Aleksandrov <nikolay@cumulusnetworks.com>
Thu, 27 Sep 2018 13:35:12 +0000 (16:35 +0300)
committerDavid Ahern <dsahern@gmail.com>
Fri, 28 Sep 2018 17:52:22 +0000 (10:52 -0700)
Add support for the new sticky flag that can be set on fdbs and update the
man page.

CC: David Ahern <dsahern@gmail.com>
Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Signed-off-by: David Ahern <dsahern@gmail.com>
bridge/fdb.c
man/man8/bridge.8

index 4dbc894ceab9396ac53712dc1d55bdbb2589fd90..828fdab264cba1726be31881ab74484d41050d7a 100644 (file)
@@ -37,8 +37,8 @@ static void usage(void)
        fprintf(stderr,
                "Usage: bridge fdb { add | append | del | replace } ADDR dev DEV\n"
                "              [ self ] [ master ] [ use ] [ router ] [ extern_learn ]\n"
-               "              [ local | static | dynamic ] [ dst IPADDR ] [ vlan VID ]\n"
-               "              [ port PORT] [ vni VNI ] [ via DEV ]\n"
+               "              [ sticky ] [ local | static | dynamic ] [ dst IPADDR ]\n"
+               "              [ vlan VID ] [ port PORT] [ vni VNI ] [ via DEV ]\n"
                "       bridge fdb [ show [ br BRDEV ] [ brport DEV ] [ vlan VID ] [ state STATE ] ]\n");
        exit(-1);
 }
@@ -101,6 +101,9 @@ static void fdb_print_flags(FILE *fp, unsigned int flags)
        if (flags & NTF_MASTER)
                print_string(PRINT_ANY, NULL, "%s ", "master");
 
+       if (flags & NTF_STICKY)
+               print_string(PRINT_ANY, NULL, "%s ", "sticky");
+
        close_json_array(PRINT_JSON, NULL);
 }
 
@@ -414,6 +417,8 @@ static int fdb_modify(int cmd, int flags, int argc, char **argv)
                        req.ndm.ndm_flags |= NTF_USE;
                } else if (matches(*argv, "extern_learn") == 0) {
                        req.ndm.ndm_flags |= NTF_EXT_LEARNED;
+               } else if (matches(*argv, "sticky") == 0) {
+                       req.ndm.ndm_flags |= NTF_STICKY;
                } else {
                        if (strcmp(*argv, "to") == 0)
                                NEXT_ARG();
index 53cd3d0a3d9330da75651d04c3fcb5e83502249f..c0415bc646df438fa7a8fe0f0aadad540911b51d 100644 (file)
@@ -63,7 +63,7 @@ bridge \- show / manipulate bridge addresses and devices
 .B dev
 .IR DEV " { "
 .BR local " | " static " | " dynamic " } [ "
-.BR self " ] [ " master " ] [ " router " ] [ " use " ] [ " extern_learn " ] [ "
+.BR self " ] [ " master " ] [ " router " ] [ " use " ] [ " extern_learn " ] [ " sticky " ] [ "
 .B dst
 .IR IPADDR " ] [ "
 .B vni
@@ -448,6 +448,10 @@ indicate to the kernel that an entry was hardware or user-space
 controller learnt dynamic entry. Kernel will not age such an entry.
 .sp
 
+.B sticky
+- this entry will not change its port due to learning.
+.sp
+
 .in -8
 The next command line parameters apply only
 when the specified device