]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
bridge: vlan: Add support for neigh_suppress option
authorIdo Schimmel <idosch@nvidia.com>
Mon, 24 Apr 2023 16:09:50 +0000 (19:09 +0300)
committerDavid Ahern <dsahern@kernel.org>
Tue, 25 Apr 2023 14:52:28 +0000 (08:52 -0600)
Add support for the per-VLAN neigh_suppress option. Example:

 # bridge vlan set vid 10 dev swp1 neigh_suppress on
 # bridge -d -j -p vlan show dev swp1 vid 10
 [ {
         "ifname": "swp1",
         "vlans": [ {
                 "vlan": 10,
                 "state": "forwarding",
                 "mcast_router": 1,
                 "neigh_suppress": true
             } ]
     } ]
 # bridge -d vlan show dev swp1 vid 10
 port              vlan-id
 swp1              10
                     state forwarding mcast_router 1 neigh_suppress on

 # bridge vlan set vid 10 dev swp1 neigh_suppress off
 # bridge -d -j -p vlan show dev swp1 vid 10
 [ {
         "ifname": "swp1",
         "vlans": [ {
                 "vlan": 10,
                 "state": "forwarding",
                 "mcast_router": 1,
                 "neigh_suppress": false
             } ]
     } ]
 # bridge -d vlan show dev swp1 vid 10
 port              vlan-id
 swp1              10
                     state forwarding mcast_router 1 neigh_suppress off

Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Reviewed-by: Nikolay Aleksandrov <razor@blackwall.org>
Signed-off-by: David Ahern <dsahern@kernel.org>
bridge/vlan.c
man/man8/bridge.8

index 44e1ba39f01d9b75fb58b7c77e5ac5889995932a..5b304ea94224f2d657b9cc0e55175b73d6a2e9f8 100644 (file)
@@ -38,6 +38,7 @@ static void usage(void)
                "       bridge vlan { set } vid VLAN_ID dev DEV [ state STP_STATE ]\n"
                "                                               [ mcast_router MULTICAST_ROUTER ]\n"
                "                                               [ mcast_max_groups MAX_GROUPS ]\n"
+               "                                               [ neigh_suppress {on | off} ]\n"
                "       bridge vlan { show } [ dev DEV ] [ vid VLAN_ID ]\n"
                "       bridge vlan { tunnelshow } [ dev DEV ] [ vid VLAN_ID ]\n"
                "       bridge vlan global { set } vid VLAN_ID dev DEV\n"
@@ -354,6 +355,18 @@ static int vlan_option_set(int argc, char **argv)
                        addattr32(&req.n, sizeof(req),
                                  BRIDGE_VLANDB_ENTRY_MCAST_MAX_GROUPS,
                                  max_groups);
+               } else if (strcmp(*argv, "neigh_suppress") == 0) {
+                       bool neigh_suppress;
+                       int ret;
+
+                       NEXT_ARG();
+                       neigh_suppress = parse_on_off("neigh_suppress", *argv,
+                                                     &ret);
+                       if (ret)
+                               return ret;
+                       addattr8(&req.n, sizeof(req),
+                                BRIDGE_VLANDB_ENTRY_NEIGH_SUPPRESS,
+                                neigh_suppress);
                } else {
                        if (matches(*argv, "help") == 0)
                                NEXT_ARG();
@@ -1041,6 +1054,11 @@ static void print_vlan_opts(struct rtattr *a, int ifindex)
                print_uint(PRINT_ANY, "mcast_max_groups", "mcast_max_groups %u ",
                           rta_getattr_u32(vattr));
        }
+       if (vtb[BRIDGE_VLANDB_ENTRY_NEIGH_SUPPRESS]) {
+               vattr = vtb[BRIDGE_VLANDB_ENTRY_NEIGH_SUPPRESS];
+               print_on_off(PRINT_ANY, "neigh_suppress", "neigh_suppress %s ",
+                            rta_getattr_u8(vattr));
+       }
        print_nl();
        if (show_stats)
                __print_one_vlan_stats(&vstats);
index 4006ad23ea745af8f5b313b2df590cfd8a1e3831..3bda6dbd61d0bf77aa2334635a05355e0ddc4510 100644 (file)
@@ -184,7 +184,8 @@ bridge \- show / manipulate bridge addresses and devices
 .B mcast_max_groups
 .IR MAX_GROUPS " ] [ "
 .B mcast_router
-.IR MULTICAST_ROUTER " ]"
+.IR MULTICAST_ROUTER " ] [ "
+.BR neigh_suppress " { " on " | " off " } ]"
 
 .ti -8
 .BR "bridge vlan" " [ " show " | " tunnelshow " ] [ "
@@ -1204,6 +1205,14 @@ may be either
 enable multicast traffic forwarding. This mode is available only for ports.
 .sp
 
+.TP
+.BR "neigh_suppress on " or " neigh_suppress off "
+Controls whether neigh discovery (arp and nd) proxy and suppression is enabled
+for a given VLAN on a given port. By default this flag is off.
+
+Note that this option only takes effect when \fBbridge link\fR option
+\fBneigh_vlan_suppress\fR is enabled for a given port.
+
 .SS bridge vlan show - list vlan configuration.
 
 This command displays the current VLAN filter table.