mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
net: bridge: vlan: share VLAN validation in br_should_learn
Both the pvid and tagged paths now resolve a VLAN entry. Select the entry first and share the state check and output assignment. Signed-off-by: Nikolay Aleksandrov <razor@blackwall.org> Reviewed-by: Ido Schimmel <idosch@nvidia.com> Link: https://patch.msgid.link/20261005143937.877466-4-razor@blackwall.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
6317ffc9bd
commit
33c73892ea
|
|
@ -742,21 +742,16 @@ bool br_should_learn(struct net_bridge_port *p, struct sk_buff *skb,
|
|||
if (!br_vlan_get_tag(skb, &vid) && skb->vlan_proto != br->vlan_proto)
|
||||
vid = 0;
|
||||
|
||||
if (!vid) {
|
||||
if (vid)
|
||||
v = br_vlan_find(vg, vid);
|
||||
else
|
||||
v = rcu_dereference(vg->pvid);
|
||||
if (!v || !br_vlan_state_allowed(br_vlan_get_state(v), true))
|
||||
return false;
|
||||
*vlan = v;
|
||||
return true;
|
||||
}
|
||||
|
||||
v = br_vlan_find(vg, vid);
|
||||
if (v && br_vlan_state_allowed(br_vlan_get_state(v), true)) {
|
||||
*vlan = v;
|
||||
return true;
|
||||
}
|
||||
if (!v || !br_vlan_state_allowed(br_vlan_get_state(v), true))
|
||||
return false;
|
||||
|
||||
return false;
|
||||
*vlan = v;
|
||||
return true;
|
||||
}
|
||||
|
||||
static int br_vlan_add_existing(struct net_bridge *br,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user