[ovs-dev] [PATCH v2] compat: Add compat fix for old kernels
Roi Dayan
roid at mellanox.com
Mon Nov 4 09:49:44 UTC 2019
In kernels older than 4.8, struct tcf_t didn't have the firstuse.
If openvswitch is compiled with the compat pkt_cls.h then there is
a struct size mismatch between openvswitch and the kernel which cause
parsing netlink actions to fail.
After this commit parsing the netlink actions pass even if compiled with
the compat pkt_cls.h.
Signed-off-by: Roi Dayan <roid at mellanox.com>
---
v1->v2:
- fix mix of tabs and spaces in acinclude.m4
acinclude.m4 | 8 ++++++++
include/linux/pkt_cls.h | 2 ++
2 files changed, 10 insertions(+)
diff --git a/acinclude.m4 b/acinclude.m4
index a0507cfe019e..1e699191bb8b 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -186,6 +186,14 @@ AC_DEFUN([OVS_CHECK_LINUX_TC], [
[Define to 1 if TCA_FLOWER_KEY_ENC_IP_TTL_MASK is available.])])
AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([#include <linux/pkt_cls.h>], [
+ struct tcf_t x;
+ x.firstuse = 1;
+ ])],
+ [AC_DEFINE([HAVE_TCF_T_FIRSTUSE], [1],
+ [Define to 1 if struct tcf_t have firstuse.])])
+
+ AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([#include <linux/tc_act/tc_vlan.h>], [
int x = TCA_VLAN_PUSH_VLAN_PRIORITY;
])],
diff --git a/include/linux/pkt_cls.h b/include/linux/pkt_cls.h
index 4adea59e7c36..b6926a79a0af 100644
--- a/include/linux/pkt_cls.h
+++ b/include/linux/pkt_cls.h
@@ -64,7 +64,9 @@ struct tcf_t {
__u64 install;
__u64 lastuse;
__u64 expires;
+#ifdef HAVE_TCF_T_FIRSTUSE
__u64 firstuse;
+#endif
};
#define tc_gen \
--
2.8.4
More information about the dev
mailing list