mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-07 06:52:07 +00:00
openvswitch: 802.1AD Flow handling, actions, vlan parsing, netlink attributes
Add support for 802.1ad including the ability to push and pop double tagged vlans. Add support for 802.1ad to netlink parsing and flow conversion. Uses double nested encap attributes to represent double tagged vlan. Inner TPID encoded along with ctci in nested attributes. This is based on Thomas F Herbert's original v20 patch. I made some small clean ups and bug fixes. Signed-off-by: Thomas F Herbert <thomasfherbert@gmail.com> Signed-off-by: Eric Garver <e@erig.me> Acked-by: Pravin B Shelar <pshelar@ovn.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
fe19c4f971
commit
018c1dda5f
5 changed files with 282 additions and 124 deletions
|
@ -246,20 +246,24 @@ static int pop_vlan(struct sk_buff *skb, struct sw_flow_key *key)
|
|||
int err;
|
||||
|
||||
err = skb_vlan_pop(skb);
|
||||
if (skb_vlan_tag_present(skb))
|
||||
if (skb_vlan_tag_present(skb)) {
|
||||
invalidate_flow_key(key);
|
||||
else
|
||||
key->eth.tci = 0;
|
||||
} else {
|
||||
key->eth.vlan.tci = 0;
|
||||
key->eth.vlan.tpid = 0;
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
static int push_vlan(struct sk_buff *skb, struct sw_flow_key *key,
|
||||
const struct ovs_action_push_vlan *vlan)
|
||||
{
|
||||
if (skb_vlan_tag_present(skb))
|
||||
if (skb_vlan_tag_present(skb)) {
|
||||
invalidate_flow_key(key);
|
||||
else
|
||||
key->eth.tci = vlan->vlan_tci;
|
||||
} else {
|
||||
key->eth.vlan.tci = vlan->vlan_tci;
|
||||
key->eth.vlan.tpid = vlan->vlan_tpid;
|
||||
}
|
||||
return skb_vlan_push(skb, vlan->vlan_tpid,
|
||||
ntohs(vlan->vlan_tci) & ~VLAN_TAG_PRESENT);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue