summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorJohn Hurley <john.hurley@netronome.com>2019-07-30 12:05:14 +0100
committerSimon Horman <simon.horman@netronome.com>2019-08-01 18:09:42 +0200
commitabef79598cc6c2e33d6219f032a86fb864443c5c (patch)
tree3006d8a85cc749d7eda72d0bd8808903c033dcb4 /include/linux
parent0770429e38f49df374f6c337f4969504a97ab1b2 (diff)
downloadopenvswitch-abef79598cc6c2e33d6219f032a86fb864443c5c.tar.gz
compat: add compatibility headers for tc mpls action
OvS includes compat code for several TC actions including vlan, mirred and tunnel key. MPLS actions have recently been added to TC in the kernel. In preparation for adding TC offload code for MPLS, add the MPLS compat code. Signed-off-by: John Hurley <john.hurley@netronome.com> Reviewed-by: Simon Horman <simon.horman@netronome.com> Signed-off-by: Simon Horman <simon.horman@netronome.com>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/automake.mk1
-rw-r--r--include/linux/tc_act/tc_mpls.h37
2 files changed, 38 insertions, 0 deletions
diff --git a/include/linux/automake.mk b/include/linux/automake.mk
index 24f85200b..4873a6ae6 100644
--- a/include/linux/automake.mk
+++ b/include/linux/automake.mk
@@ -1,6 +1,7 @@
noinst_HEADERS += \
include/linux/netfilter/nf_conntrack_sctp.h \
include/linux/pkt_cls.h \
+ include/linux/tc_act/tc_mpls.h \
include/linux/tc_act/tc_pedit.h \
include/linux/tc_act/tc_skbedit.h \
include/linux/tc_act/tc_tunnel_key.h \
diff --git a/include/linux/tc_act/tc_mpls.h b/include/linux/tc_act/tc_mpls.h
new file mode 100644
index 000000000..25ebe3a8b
--- /dev/null
+++ b/include/linux/tc_act/tc_mpls.h
@@ -0,0 +1,37 @@
+#ifndef __LINUX_TC_ACT_TC_MPLS_WRAPPER_H
+#define __LINUX_TC_ACT_TC_MPLS_WRAPPER_H 1
+
+#if defined(__KERNEL__) || defined(HAVE_TCA_MPLS_TTL)
+#include_next <linux/tc_act/tc_mpls.h>
+#else
+
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+/* Copyright (C) 2019 Netronome Systems, Inc. */
+
+#define TCA_MPLS_ACT_POP 1
+#define TCA_MPLS_ACT_PUSH 2
+#define TCA_MPLS_ACT_MODIFY 3
+#define TCA_MPLS_ACT_DEC_TTL 4
+
+struct tc_mpls {
+ tc_gen; /* generic TC action fields. */
+ int m_action; /* action of type TCA_MPLS_ACT_*. */
+};
+
+enum {
+ TCA_MPLS_UNSPEC,
+ TCA_MPLS_TM, /* struct tcf_t; time values associated with action. */
+ TCA_MPLS_PARMS, /* struct tc_mpls; action type and general TC fields. */
+ TCA_MPLS_PAD,
+ TCA_MPLS_PROTO, /* be16; eth_type of pushed or next (for pop) header. */
+ TCA_MPLS_LABEL, /* u32; MPLS label. Lower 20 bits are used. */
+ TCA_MPLS_TC, /* u8; MPLS TC field. Lower 3 bits are used. */
+ TCA_MPLS_TTL, /* u8; MPLS TTL field. Must not be 0. */
+ TCA_MPLS_BOS, /* u8; MPLS BOS field. Either 1 or 0. */
+ __TCA_MPLS_MAX,
+};
+#define TCA_MPLS_MAX (__TCA_MPLS_MAX - 1)
+
+#endif /* __KERNEL__ || HAVE_TCA_MPLS_TTL */
+
+#endif /* __LINUX_TC_ACT_TC_MPLS_WRAPPER_H */