mirror of
https://github.com/openvswitch/ovs
synced 2025-10-23 14:57:06 +00:00
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>
This commit is contained in:
@@ -78,6 +78,12 @@ void match_set_vlan_vid(struct match *, ovs_be16);
|
||||
void match_set_vlan_vid_masked(struct match *, ovs_be16 vid, ovs_be16 mask);
|
||||
void match_set_any_pcp(struct match *);
|
||||
void match_set_dl_vlan_pcp(struct match *, uint8_t);
|
||||
void match_set_any_mpls_label(struct match *);
|
||||
void match_set_mpls_label(struct match *, ovs_be32);
|
||||
void match_set_any_mpls_tc(struct match *);
|
||||
void match_set_mpls_tc(struct match *, uint8_t);
|
||||
void match_set_any_mpls_bos(struct match *);
|
||||
void match_set_mpls_bos(struct match *, uint8_t);
|
||||
void match_set_tp_src(struct match *, ovs_be16);
|
||||
void match_set_tp_src_masked(struct match *, ovs_be16 port, ovs_be16 mask);
|
||||
void match_set_tp_dst(struct match *, ovs_be16);
|
||||
|
||||
Reference in New Issue
Block a user