diff options
author | Eric Garver <e@erig.me> | 2017-03-01 17:47:59 -0500 |
---|---|---|
committer | Ben Pfaff <blp@ovn.org> | 2017-03-16 15:18:40 -0700 |
commit | f0fb825a3785320430686834741c718ff4f8ebf4 (patch) | |
tree | e58d08de18a42bd74edbed5a9c0d8951d03e7d81 /lib/tnl-ports.c | |
parent | 4c71600d2256641b927e04b75e95751355e799f8 (diff) | |
download | openvswitch-f0fb825a3785320430686834741c718ff4f8ebf4.tar.gz |
Add support for 802.1ad (QinQ tunneling)
Flow key handling changes:
- Add VLAN header array in struct flow, to record multiple 802.1q VLAN
headers.
- Add dpif multi-VLAN capability probing. If datapath supports
multi-VLAN, increase the maximum depth of nested OVS_KEY_ATTR_ENCAP.
Refactor VLAN handling in dpif-xlate:
- Introduce 'xvlan' to track VLAN stack during flow processing.
- Input and output VLAN translation according to the xbundle type.
Push VLAN action support:
- Allow ethertype 0x88a8 in VLAN headers and push_vlan action.
- Support push_vlan on dot1q packets.
Use other_config:vlan-limit in table Open_vSwitch to limit maximum VLANs
that can be matched. This allows us to preserve backwards compatibility.
Add test cases for VLAN depth limit, Multi-VLAN actions and QinQ VLAN
handling
Co-authored-by: Thomas F Herbert <thomasfherbert@gmail.com>
Signed-off-by: Thomas F Herbert <thomasfherbert@gmail.com>
Co-authored-by: Xiao Liang <shaw.leon@gmail.com>
Signed-off-by: Xiao Liang <shaw.leon@gmail.com>
Signed-off-by: Eric Garver <e@erig.me>
Signed-off-by: Ben Pfaff <blp@ovn.org>
Diffstat (limited to 'lib/tnl-ports.c')
-rw-r--r-- | lib/tnl-ports.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/tnl-ports.c b/lib/tnl-ports.c index ffa13899a..5f6dc5096 100644 --- a/lib/tnl-ports.c +++ b/lib/tnl-ports.c @@ -136,7 +136,7 @@ map_insert(odp_port_t port, struct eth_addr mac, struct in6_addr *addr, } else { match.wc.masks.ipv6_dst = in6addr_exact; } - match.wc.masks.vlan_tci = OVS_BE16_MAX; + match.wc.masks.vlans[0].tci = OVS_BE16_MAX; memset(&match.wc.masks.dl_dst, 0xff, sizeof (struct eth_addr)); cls_rule_init(&p->cr, &match, 0); /* Priority == 0. */ |