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 <[email protected]> --- 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 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
