User-Space MPLS actions and matches
authorSimon Horman <horms@verge.net.au>
Fri, 25 Jan 2013 07:22:07 +0000 (16:22 +0900)
committerBen Pfaff <blp@nicira.com>
Tue, 5 Feb 2013 17:17:45 +0000 (09:17 -0800)
commitb02475c53b3ca857c45eb5e17d12fdf233a9dac8
tree2f655ed5868adfceff879e372951e04a89599750
parentd224e3501437af4a8480d734a99ca371a1eafa11
User-Space MPLS actions and matches

This patch implements use-space datapath and non-datapath code
to match and use the datapath API set out in Leo Alterman's patch
"user-space datapath: Add basic MPLS support to kernel".

The resulting MPLS implementation supports:
* Pushing a single MPLS label
* Poping a single MPLS label
* Modifying an MPLS lable using set-field or load actions
  that act on the label value, tc and bos bit.
* There is no support for manipulating the TTL
  this is considered future work.

The single-level push pop limitation is implemented by processing
push, pop and set-field/load actions in order and discarding information
that would require multiple levels of push/pop to be supported.

e.g.
   push,push -> the first push is discarded
   pop,pop -> the first pop is discarded

This patch is based heavily on work by Ravi K.

Cc: Ravi K <rkerur@gmail.com>
Reviewed-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
29 files changed:
include/linux/openvswitch.h
include/openflow/nicira-ext.h
include/openflow/openflow-1.1.h
lib/dpif-netdev.c
lib/flow.c
lib/flow.h
lib/match.c
lib/match.h
lib/meta-flow.c
lib/meta-flow.h
lib/nx-match.c
lib/odp-util.c
lib/ofp-actions.c
lib/ofp-actions.h
lib/ofp-parse.c
lib/ofp-print.c
lib/ofp-util.c
lib/ofp-util.def
lib/ofpbuf.c
lib/ofpbuf.h
lib/packets.c
lib/packets.h
ofproto/ofproto-dpif.c
tests/odp.at
tests/ofproto-dpif.at
tests/test-bundle.c
tests/test-multipath.c
utilities/ovs-dpctl.c
utilities/ovs-ofctl.8.in