bridge: vlan dst_metadata hooks in ingress and egress paths
- ingress hook:
- if port is a tunnel port, use tunnel info in
attached dst_metadata to map it to a local vlan
- egress hook:
- if port is a tunnel port, use tunnel info attached to
vlan to set dst_metadata on the skb
CC: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
efa5356b0d
commit
11538d039a
@@ -341,6 +341,7 @@ static void __vlan_flush(struct net_bridge_vlan_group *vg)
|
||||
}
|
||||
|
||||
struct sk_buff *br_handle_vlan(struct net_bridge *br,
|
||||
const struct net_bridge_port *p,
|
||||
struct net_bridge_vlan_group *vg,
|
||||
struct sk_buff *skb)
|
||||
{
|
||||
@@ -381,6 +382,12 @@ struct sk_buff *br_handle_vlan(struct net_bridge *br,
|
||||
|
||||
if (v->flags & BRIDGE_VLAN_INFO_UNTAGGED)
|
||||
skb->vlan_tci = 0;
|
||||
|
||||
if (p && (p->flags & BR_VLAN_TUNNEL) &&
|
||||
br_handle_egress_vlan_tunnel(skb, v)) {
|
||||
kfree_skb(skb);
|
||||
return NULL;
|
||||
}
|
||||
out:
|
||||
return skb;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user