104 lines
3.8 KiB
Diff
104 lines
3.8 KiB
Diff
|
|
From 7857a9b4fcdb2679687b8a1a0e0f666ee3bbba6b Mon Sep 17 00:00:00 2001
|
||
|
|
From: Florian Westphal <fw@strlen.de>
|
||
|
|
Date: Fri, 10 May 2019 12:30:10 -0700
|
||
|
|
Subject: [PATCH] datapath: Use new header file net/ipv6_frag.h
|
||
|
|
|
||
|
|
Upstream commit:
|
||
|
|
commit 70b095c84326640eeacfd69a411db8fc36e8ab1a
|
||
|
|
Author: Florian Westphal <fw@strlen.de>
|
||
|
|
Date: Sat Jul 14 01:14:01 2018 +0200
|
||
|
|
|
||
|
|
ipv6: remove dependency of nf_defrag_ipv6 on ipv6 module
|
||
|
|
|
||
|
|
IPV6=m
|
||
|
|
DEFRAG_IPV6=m
|
||
|
|
CONNTRACK=y yields:
|
||
|
|
|
||
|
|
net/netfilter/nf_conntrack_proto.o: In function `nf_ct_netns_do_get':
|
||
|
|
net/netfilter/nf_conntrack_proto.c:802: undefined reference to `nf_defrag_ipv6_enable'
|
||
|
|
net/netfilter/nf_conntrack_proto.o:(.rodata+0x640): undefined reference to `nf_conntrack_l4proto_icmpv6'
|
||
|
|
|
||
|
|
Setting DEFRAG_IPV6=y causes undefined references to ip6_rhash_params
|
||
|
|
ip6_frag_init and ip6_expire_frag_queue so it would be needed to force
|
||
|
|
IPV6=y too.
|
||
|
|
|
||
|
|
This patch gets rid of the 'followup linker error' by removing
|
||
|
|
the dependency of ipv6.ko symbols from netfilter ipv6 defrag.
|
||
|
|
|
||
|
|
Shared code is placed into a header, then used from both.
|
||
|
|
|
||
|
|
Signed-off-by: Florian Westphal <fw@strlen.de>
|
||
|
|
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||
|
|
|
||
|
|
This patch backports the above upstream patch to OVS.
|
||
|
|
|
||
|
|
Cc: Florian Westphal <fw@strlen.de>
|
||
|
|
Tested-by: Greg Rose <gvrose8192@gmail.com>
|
||
|
|
Reviewed-by: Greg Rose <gvrose8192@gmail.com>
|
||
|
|
Acked-by: Yi-Hung Wei <yihung.wei@gmail.com>
|
||
|
|
Signed-off-by: Yifeng Sun <pkusunyifeng@gmail.com>
|
||
|
|
Signed-off-by: Ben Pfaff <blp@ovn.org>
|
||
|
|
---
|
||
|
|
acinclude.m4 | 2 ++
|
||
|
|
datapath/conntrack.c | 1 +
|
||
|
|
datapath/linux/Modules.mk | 1 +
|
||
|
|
datapath/linux/compat/include/net/ipv6_frag.h | 8 ++++++++
|
||
|
|
4 files changed, 12 insertions(+)
|
||
|
|
create mode 100644 datapath/linux/compat/include/net/ipv6_frag.h
|
||
|
|
|
||
|
|
diff --git a/acinclude.m4 b/acinclude.m4
|
||
|
|
index d664450..f16c1da 100644
|
||
|
|
--- a/acinclude.m4
|
||
|
|
+++ b/acinclude.m4
|
||
|
|
@@ -952,6 +952,8 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [
|
||
|
|
OVS_GREP_IFELSE([$KSRC/include/net/netfilter/nf_conntrack_l3proto.h],
|
||
|
|
[nf_conntrack_l3proto],
|
||
|
|
[OVS_DEFINE([HAVE_NF_CONNTRACK_L3PROATO_H])])
|
||
|
|
+ OVS_GREP_IFELSE([$KSRC/include/net/ipv6_frag.h], [IP6_DEFRAG_CONNTRACK_IN],
|
||
|
|
+ [OVS_DEFINE([HAVE_IPV6_FRAG_H])])
|
||
|
|
|
||
|
|
if cmp -s datapath/linux/kcompat.h.new \
|
||
|
|
datapath/linux/kcompat.h >/dev/null 2>&1; then
|
||
|
|
diff --git a/datapath/conntrack.c b/datapath/conntrack.c
|
||
|
|
index 0d8f61f..93ca06d 100644
|
||
|
|
--- a/datapath/conntrack.c
|
||
|
|
+++ b/datapath/conntrack.c
|
||
|
|
@@ -31,6 +31,7 @@
|
||
|
|
#include <net/netfilter/nf_conntrack_seqadj.h>
|
||
|
|
#include <net/netfilter/nf_conntrack_zones.h>
|
||
|
|
#include <net/netfilter/ipv6/nf_defrag_ipv6.h>
|
||
|
|
+#include <net/ipv6_frag.h>
|
||
|
|
|
||
|
|
#ifdef CONFIG_NF_NAT_NEEDED
|
||
|
|
#include <linux/netfilter/nf_nat.h>
|
||
|
|
diff --git a/datapath/linux/Modules.mk b/datapath/linux/Modules.mk
|
||
|
|
index e31d784..642b7fb 100644
|
||
|
|
--- a/datapath/linux/Modules.mk
|
||
|
|
+++ b/datapath/linux/Modules.mk
|
||
|
|
@@ -86,6 +86,7 @@ openvswitch_headers += \
|
||
|
|
linux/compat/include/net/ip6_route.h \
|
||
|
|
linux/compat/include/net/ip6_tunnel.h \
|
||
|
|
linux/compat/include/net/ipv6.h \
|
||
|
|
+ linux/compat/include/net/ipv6_frag.h \
|
||
|
|
linux/compat/include/net/mpls.h \
|
||
|
|
linux/compat/include/net/net_namespace.h \
|
||
|
|
linux/compat/include/net/netlink.h \
|
||
|
|
diff --git a/datapath/linux/compat/include/net/ipv6_frag.h b/datapath/linux/compat/include/net/ipv6_frag.h
|
||
|
|
new file mode 100644
|
||
|
|
index 0000000..ba24fd1
|
||
|
|
--- /dev/null
|
||
|
|
+++ b/datapath/linux/compat/include/net/ipv6_frag.h
|
||
|
|
@@ -0,0 +1,8 @@
|
||
|
|
+#ifndef __NET_IPV6_FRAG_WRAPPER_H
|
||
|
|
+#define __NET_IPV6_FRAG_WRAPPER_H
|
||
|
|
+
|
||
|
|
+#if IS_ENABLED(CONFIG_NF_DEFRAG_IPV6) && defined(HAVE_IPV6_FRAG_H)
|
||
|
|
+#include_next <net/ipv6_frag.h>
|
||
|
|
+#endif
|
||
|
|
+
|
||
|
|
+#endif /* __NET_IPV6_FRAG_WRAPPER_H */
|
||
|
|
\ No newline at end of file
|
||
|
|
--
|
||
|
|
2.14.1.windows.1
|
||
|
|
|