Hi, Xiao. You did a good job. Unfortunately, this patch breaks dpdk build because of redeclaration of structure with same name:
include/openvswitch/packets.h: ---------------------------------- struct vlan_hdr { ovs_be16 tpid; /* ETH_TYPE_VLAN_DOT1Q or ETH_TYPE_DOT1AD */ ovs_be16 tci; }; DPDK:lib/librte_ether/rte_ether.h : ---------------------------------- /** * Ethernet VLAN Header. * Contains the 16-bit VLAN Tag Control Identifier and the Ethernet type * of the encapsulated frame. */ struct vlan_hdr { uint16_t vlan_tci; /**< Priority (3) + CFI (1) + Identifier Code (12) */ uint16_t eth_proto;/**< Ethernet type of encapsulated frame. */ } __attribute__((__packed__)); Actually, this structures are logically equal. This collision should be fixed somehow. Best regards, Ilya Maximets. On 03.07.2016 03:47, Xiao Liang wrote: > Flow key handleing 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. > > Refacter 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. > > Add new port VLAN mode "dot1q-tunnel": > - Example: > ovs-vsctl set Port p1 vlan_mode=dot1q-tunnel tag=100 > Pushes another VLAN 100 header on packets (tagged and untagged) on ingress, > and pops it on egress. > - Customer VLAN check: > ovs-vsctl set Port p1 vlan_mode=dot1q-tunnel tag=100 cvlans=10,20 > Only customer VLAN of 10 and 20 are allowed. > > Signed-off-by: Xiao Liang <shaw.l...@gmail.com> > --- > include/openvswitch/flow.h | 13 +- > include/openvswitch/ofp-actions.h | 10 +- > include/openvswitch/packets.h | 5 + > lib/dpctl.c | 29 ++- > lib/dpif-netdev.c | 7 +- > lib/flow.c | 109 ++++++---- > lib/flow.h | 6 +- > lib/match.c | 47 ++-- > lib/meta-flow.c | 22 +- > lib/nx-match.c | 14 +- > lib/odp-util.c | 227 ++++++++++++-------- > lib/odp-util.h | 4 +- > lib/ofp-actions.c | 61 +++--- > lib/ofp-util.c | 56 ++--- > lib/tnl-ports.c | 2 +- > ofproto/bond.c | 2 +- > ofproto/ofproto-dpif-ipfix.c | 6 +- > ofproto/ofproto-dpif-rid.h | 2 +- > ofproto/ofproto-dpif-sflow.c | 4 +- > ofproto/ofproto-dpif-xlate.c | 436 > ++++++++++++++++++++++++++------------ > ofproto/ofproto-dpif-xlate.h | 6 +- > ofproto/ofproto-dpif.c | 74 ++++++- > ofproto/ofproto.h | 8 +- > ovn/controller/pinctrl.c | 5 +- > tests/test-classifier.c | 15 +- > utilities/ovs-ofctl.c | 29 +-- > vswitchd/bridge.c | 27 ++- > vswitchd/vswitch.ovsschema | 16 +- > vswitchd/vswitch.xml | 31 +++ > 29 files changed, 866 insertions(+), 407 deletions(-) _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev