diff options
author | Nikolay Aleksandrov <nikolay@cumulusnetworks.com> | 2015-10-04 14:23:47 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-10-05 01:46:07 +0200 |
commit | 0f963b7592ef9e054974b6672b86ec1edd84b4bc (patch) | |
tree | 5b2fe0f51f0dc0521fcbcd078bebb101cf4288d0 /net/bridge/br_vlan.c | |
parent | bridge: netlink: add support for netfilter tables config (diff) | |
download | linux-0f963b7592ef9e054974b6672b86ec1edd84b4bc.tar.xz linux-0f963b7592ef9e054974b6672b86ec1edd84b4bc.zip |
bridge: netlink: add support for default_pvid
Add IFLA_BR_VLAN_DEFAULT_PVID to allow setting/getting bridge's
default_pvid via netlink.
Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to '')
-rw-r--r-- | net/bridge/br_vlan.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/net/bridge/br_vlan.c b/net/bridge/br_vlan.c index b879111582f0..eae07ee9bfe0 100644 --- a/net/bridge/br_vlan.c +++ b/net/bridge/br_vlan.c @@ -727,7 +727,7 @@ static void br_vlan_disable_default_pvid(struct net_bridge *br) br->default_pvid = 0; } -static int __br_vlan_set_default_pvid(struct net_bridge *br, u16 pvid) +int __br_vlan_set_default_pvid(struct net_bridge *br, u16 pvid) { const struct net_bridge_vlan *pvent; struct net_bridge_port *p; @@ -735,6 +735,11 @@ static int __br_vlan_set_default_pvid(struct net_bridge *br, u16 pvid) int err = 0; unsigned long *changed; + if (!pvid) { + br_vlan_disable_default_pvid(br); + return 0; + } + changed = kcalloc(BITS_TO_LONGS(BR_MAX_PORTS), sizeof(unsigned long), GFP_KERNEL); if (!changed) @@ -825,12 +830,7 @@ int br_vlan_set_default_pvid(struct net_bridge *br, unsigned long val) err = -EPERM; goto unlock; } - - if (!pvid) - br_vlan_disable_default_pvid(br); - else - err = __br_vlan_set_default_pvid(br, pvid); - + err = __br_vlan_set_default_pvid(br, pvid); unlock: rtnl_unlock(); return err; |