net: bridge: vlan: add basic option setting support
This patch adds support for option modification of single vlans and ranges. It allows to only modify options, i.e. skip create/delete by using the BRIDGE_VLAN_INFO_ONLY_OPTS flag. When working with a range option changes we try to pack the notifications as much as possible. v2: do full port (all vlans) notification only when creating/deleting vlans for compatibility, rework the range detection when changing options, add more verbose extack errors and check if a vlan should be used (br_vlan_should_use checks) Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
7a53e718c5
commit
a5d29ae226
@@ -976,6 +976,8 @@ void br_vlan_notify(const struct net_bridge *br,
|
||||
const struct net_bridge_port *p,
|
||||
u16 vid, u16 vid_range,
|
||||
int cmd);
|
||||
bool br_vlan_can_enter_range(const struct net_bridge_vlan *v_curr,
|
||||
const struct net_bridge_vlan *range_end);
|
||||
|
||||
static inline struct net_bridge_vlan_group *br_vlan_group(
|
||||
const struct net_bridge *br)
|
||||
@@ -1197,6 +1199,12 @@ bool br_vlan_opts_eq(const struct net_bridge_vlan *v1,
|
||||
const struct net_bridge_vlan *v2);
|
||||
bool br_vlan_opts_fill(struct sk_buff *skb, const struct net_bridge_vlan *v);
|
||||
size_t br_vlan_opts_nl_size(void);
|
||||
int br_vlan_process_options(const struct net_bridge *br,
|
||||
const struct net_bridge_port *p,
|
||||
struct net_bridge_vlan *range_start,
|
||||
struct net_bridge_vlan *range_end,
|
||||
struct nlattr **tb,
|
||||
struct netlink_ext_ack *extack);
|
||||
#endif
|
||||
|
||||
struct nf_br_ops {
|
||||
|
Reference in New Issue
Block a user