This series implements support for layer 3 encapsulated packets. At the core of this change is removing the assumption that all packets/flows have Ethernet header. Support for layer 3 packets in GRE tunnels is also added by this patchset.
The implementation automatically adds appropriate pop_eth and push_eth actions to datapath flows. This may change in the future if OpenFlow support for these actions is added. This series is based on work by Lorand Jakab, Thomas Morin and others. Unlike Lorand's work this series does not update the kernel datapath nor the LISP vport implementation in the version of the kernel datapath in the OVS tree. Rather it focuses only on userspace including the user-space datapath, and provides layer 3 GRE support. It should, however, be in keeping with his goal of providing a clean path for porting the LISP datapath support to the mainline kernel for inclusion there. To aid review this series is available at: tree: https://github.com//horms/openvswitch branch: me/l3-vpn tag: l3-vpn-v11 I have prepared a separate series for the kernel datapath against the net-next tree. I plan to post it in conjunction with this patchset as: "[PATCH v11 net-next 0/6] openvswitch: support for layer 3 encapsulated packets" It may be found on github: tree: https://github.com//horms/linux branch: l3-vpn tag: l3-vpn-v12 Lorand Jakab (2): userspace: add support for pop_eth and push_eth actions userspace: add layer 3 flow and switching support Simon Horman (1): userspace: add non-tap (l3) support to GRE vports build-aux/extract-ofp-fields | 1 + datapath/linux/compat/include/linux/openvswitch.h | 17 ++ include/openvswitch/flow.h | 23 ++- include/openvswitch/match.h | 1 + include/openvswitch/meta-flow.h | 9 +- include/openvswitch/ofp-print.h | 8 +- lib/dp-packet.h | 14 +- lib/dpif-netdev.c | 6 +- lib/dpif-netlink.c | 4 + lib/dpif.c | 9 +- lib/flow.c | 122 ++++++++---- lib/flow.h | 2 + lib/match.c | 13 +- lib/meta-flow.c | 10 + lib/netdev-bsd.c | 2 + lib/netdev-dummy.c | 1 + lib/netdev-linux.c | 5 +- lib/netdev-native-tnl.c | 26 ++- lib/netdev-vport.c | 22 ++- lib/netdev.h | 1 + lib/nx-match.c | 2 +- lib/odp-execute.c | 20 ++ lib/odp-util.c | 227 ++++++++++++++++++---- lib/odp-util.h | 4 +- lib/ofp-print.c | 27 ++- lib/ofp-util.c | 2 +- lib/packets.c | 33 ++++ lib/packets.h | 6 + lib/tnl-ports.c | 49 +++-- lib/tnl-ports.h | 3 +- ofproto/ofproto-dpif-rid.h | 2 +- ofproto/ofproto-dpif-sflow.c | 8 + ofproto/ofproto-dpif-xlate.c | 30 ++- ofproto/ofproto-dpif-xlate.h | 2 +- ofproto/ofproto-dpif.c | 4 +- ofproto/tunnel.c | 4 +- tests/ofproto-dpif.at | 6 +- tests/tunnel-push-pop-ipv6.at | 22 ++- tests/tunnel-push-pop.at | 36 +++- tests/tunnel.at | 10 +- vswitchd/vswitch.xml | 13 ++ 41 files changed, 635 insertions(+), 171 deletions(-) -- 2.7.0.rc3.207.g0ac5344 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev