[ovs-dev] [PATCH v2 2/2] datapath: Remove OVS_FRAGMENT_BACKPORT

Pravin B Shelar pshelar at ovn.org
Wed Feb 24 05:01:42 UTC 2016


This macro is not required as we drop support for unsupported
kernel versions.

Signed-off-by: Pravin B Shelar <pshelar at ovn.org>
---
Added back compat ip_defrag()
---
 acinclude.m4                                                  |  9 ---------
 datapath/compat.h                                             |  5 -----
 datapath/linux/compat/include/linux/netfilter_ipv6.h          |  7 -------
 datapath/linux/compat/include/net/inet_frag.h                 |  2 --
 datapath/linux/compat/include/net/inetpeer.h                  |  5 ++---
 datapath/linux/compat/include/net/ip.h                        |  9 +++++----
 datapath/linux/compat/include/net/ip6_route.h                 |  9 ---------
 datapath/linux/compat/include/net/ipv6.h                      |  2 +-
 .../linux/compat/include/net/netfilter/ipv6/nf_defrag_ipv6.h  | 11 -----------
 datapath/linux/compat/inet_fragment.c                         |  4 ++--
 datapath/linux/compat/ip6_output.c                            |  4 ++--
 datapath/linux/compat/ip_fragment.c                           |  4 ++--
 datapath/linux/compat/reassembly.c                            |  6 +++---
 13 files changed, 17 insertions(+), 60 deletions(-)

diff --git a/acinclude.m4 b/acinclude.m4
index 0ae6a81..78743d9 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -551,15 +551,6 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [
   OVS_GREP_IFELSE([$KSRC/include/linux/utsrelease.h], [el6],
                   [OVS_DEFINE([HAVE_RHEL6_PER_CPU])])
 
-  dnl Conntrack support, and therefore, IP fragment handling backport, should
-  dnl only be enabled on kernels 3.10+. In future when OVS drops support for
-  dnl kernels older than 3.10, this macro could be removed from the codebase.
-  if test "$version" = 4; then
-        OVS_DEFINE([OVS_FRAGMENT_BACKPORT])
-  elif test "$version" = 3 && test "$patchlevel" -ge 10; then
-        OVS_DEFINE([OVS_FRAGMENT_BACKPORT])
-  fi
-
   if cmp -s datapath/linux/kcompat.h.new \
             datapath/linux/kcompat.h >/dev/null 2>&1; then
     rm datapath/linux/kcompat.h.new
diff --git a/datapath/compat.h b/datapath/compat.h
index 8bf779f..816f754 100644
--- a/datapath/compat.h
+++ b/datapath/compat.h
@@ -35,7 +35,6 @@
 #define GROUP_ID(grp)	0
 #endif
 
-#ifdef OVS_FRAGMENT_BACKPORT
 #ifdef HAVE_NF_IPV6_OPS_FRAGMENT
 static inline int __init ip6_output_init(void) { return 0; }
 static inline void ip6_output_exit(void) { }
@@ -74,9 +73,5 @@ static inline void compat_exit(void)
 	nf_ct_frag6_cleanup();
 	rpl_ipfrag_fini();
 }
-#else
-static inline int __init compat_init(void) { return 0; }
-static inline void compat_exit(void) { }
-#endif
 
 #endif /* compat.h */
diff --git a/datapath/linux/compat/include/linux/netfilter_ipv6.h b/datapath/linux/compat/include/linux/netfilter_ipv6.h
index 3939e14..8d896fb 100644
--- a/datapath/linux/compat/include/linux/netfilter_ipv6.h
+++ b/datapath/linux/compat/include/linux/netfilter_ipv6.h
@@ -18,7 +18,6 @@ struct ovs_nf_ipv6_ops {
 };
 #define nf_ipv6_ops ovs_nf_ipv6_ops
 
-#if defined(OVS_FRAGMENT_BACKPORT)
 static struct ovs_nf_ipv6_ops ovs_ipv6_ops = {
 	.fragment = ip6_fragment,
 };
@@ -27,12 +26,6 @@ static inline struct ovs_nf_ipv6_ops *ovs_nf_get_ipv6_ops(void)
 {
 	return &ovs_ipv6_ops;
 }
-#else /* !OVS_FRAGMENT_BACKPORT */
-static inline const struct ovs_nf_ipv6_ops *ovs_nf_get_ipv6_ops(void)
-{
-	return NULL;
-}
-#endif
 #define nf_get_ipv6_ops ovs_nf_get_ipv6_ops
 
 #endif /* HAVE_NF_IPV6_OPS_FRAGMENT */
diff --git a/datapath/linux/compat/include/net/inet_frag.h b/datapath/linux/compat/include/net/inet_frag.h
index 606e952..aa9a019 100644
--- a/datapath/linux/compat/include/net/inet_frag.h
+++ b/datapath/linux/compat/include/net/inet_frag.h
@@ -13,7 +13,6 @@
 	} while (0)
 #endif
 
-#ifdef OVS_FRAGMENT_BACKPORT
 #ifdef HAVE_INET_FRAGS_LAST_IN
 #define q_flags(q) (q->last_in)
 #define qp_flags(qp) (qp->q.last_in)
@@ -80,6 +79,5 @@ void rpl_inet_frags_exit_net(struct netns_frags *nf, struct inet_frags *f);
 void rpl_inet_frag_destroy(struct inet_frag_queue *q, struct inet_frags *f);
 #define inet_frag_destroy(q, f, work) rpl_inet_frag_destroy(q, f)
 #endif /* !HAVE_CORRECT_MRU_HANDLING */
-#endif /* OVS_FRAGMENT_BACKPORT */
 
 #endif /* inet_frag.h */
diff --git a/datapath/linux/compat/include/net/inetpeer.h b/datapath/linux/compat/include/net/inetpeer.h
index c086f3b..c5f5eb1 100644
--- a/datapath/linux/compat/include/net/inetpeer.h
+++ b/datapath/linux/compat/include/net/inetpeer.h
@@ -3,8 +3,7 @@
 
 #include_next <net/inetpeer.h>
 
-#if defined(OVS_FRAGMENT_BACKPORT) && \
-    !defined(HAVE_INETPEER_VIF_SUPPORT)
+#ifndef HAVE_INETPEER_VIF_SUPPORT
 static inline struct inet_peer *rpl_inet_getpeer_v4(struct inet_peer_base *base,
 						    __be32 v4daddr, int vif,
 						    int create)
@@ -12,6 +11,6 @@ static inline struct inet_peer *rpl_inet_getpeer_v4(struct inet_peer_base *base,
 	return inet_getpeer_v4(base, v4daddr, create);
 }
 #define inet_getpeer_v4 rpl_inet_getpeer_v4
-#endif /* OVS_FRAGMENT_BACKPORT */
+#endif /* HAVE_INETPEER_VIF_SUPPORT */
 
 #endif /* _NET_INETPEER_WRAPPER_H */
diff --git a/datapath/linux/compat/include/net/ip.h b/datapath/linux/compat/include/net/ip.h
index cd87bcc..54532de 100644
--- a/datapath/linux/compat/include/net/ip.h
+++ b/datapath/linux/compat/include/net/ip.h
@@ -77,7 +77,7 @@ static inline unsigned int rpl_ip_skb_dst_mtu(const struct sk_buff *skb)
  * correctly, which would lead to reassembled packets not being refragmented.
  * So, we backport all of ip_defrag() in these cases.
  */
-#if !defined(HAVE_CORRECT_MRU_HANDLING) && defined(OVS_FRAGMENT_BACKPORT)
+#ifndef HAVE_CORRECT_MRU_HANDLING
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0)
 static inline bool ip_defrag_user_in_between(u32 user,
@@ -118,10 +118,10 @@ static inline int rpl_ip_do_fragment(struct sock *sk, struct sk_buff *skb,
 
 int rpl_ip_defrag(struct sk_buff *skb, u32 user);
 #define ip_defrag rpl_ip_defrag
-
 int __init rpl_ipfrag_init(void);
 void rpl_ipfrag_fini(void);
-#else /* HAVE_CORRECT_MRU_HANDLING || !OVS_FRAGMENT_BACKPORT */
+
+#else /* HAVE_CORRECT_MRU_HANDLING */
 
 /* We have no good way to detect the presence of upstream commit 8282f27449bf
  * ("inet: frag: Always orphan skbs inside ip_defrag()"), but it should be
@@ -137,7 +137,8 @@ static inline int rpl_ip_defrag(struct sk_buff *skb, u32 user)
 
 static inline int rpl_ipfrag_init(void) { return 0; }
 static inline void rpl_ipfrag_fini(void) { }
-#endif /* HAVE_CORRECT_MRU_HANDLING && OVS_FRAGMENT_BACKPORT */
+#endif /* HAVE_CORRECT_MRU_HANDLING */
+
 #define ipfrag_init rpl_ipfrag_init
 #define ipfrag_fini rpl_ipfrag_fini
 
diff --git a/datapath/linux/compat/include/net/ip6_route.h b/datapath/linux/compat/include/net/ip6_route.h
index 16027e4..e49ca39 100644
--- a/datapath/linux/compat/include/net/ip6_route.h
+++ b/datapath/linux/compat/include/net/ip6_route.h
@@ -31,17 +31,8 @@ struct dst_entry *rpl_ip6_route_output(struct net *net, const struct sock *sk,
 #endif /* 2.6.39 */
 
 #ifndef HAVE_NF_IPV6_OPS_FRAGMENT
-#ifdef OVS_FRAGMENT_BACKPORT
 int rpl_ip6_fragment(struct sock *sk, struct sk_buff *skb,
 		     int (*output)(OVS_VPORT_OUTPUT_PARAMS));
-#else
-static inline int rpl_ip6_fragment(struct sock *sk, struct sk_buff *skb,
-				   int (*output)(struct sk_buff *))
-{
-	kfree_skb(skb);
-	return -ENOTSUPP;
-}
-#endif /* OVS_FRAGMENT_BACKPORT */
 #define ip6_fragment rpl_ip6_fragment
 #endif /* HAVE_NF_IPV6_OPS_FRAGMENT */
 
diff --git a/datapath/linux/compat/include/net/ipv6.h b/datapath/linux/compat/include/net/ipv6.h
index 30b5061..ac1564b 100644
--- a/datapath/linux/compat/include/net/ipv6.h
+++ b/datapath/linux/compat/include/net/ipv6.h
@@ -47,7 +47,7 @@ static inline u32 ipv6_addr_hash(const struct in6_addr *a)
 }
 #endif
 
-#if defined(OVS_FRAGMENT_BACKPORT) && !defined(HAVE___IPV6_ADDR_JHASH)
+#ifndef HAVE___IPV6_ADDR_JHASH
 static inline u32 __ipv6_addr_jhash(const struct in6_addr *a, const u32 unused)
 {
        return ipv6_addr_jhash(a);
diff --git a/datapath/linux/compat/include/net/netfilter/ipv6/nf_defrag_ipv6.h b/datapath/linux/compat/include/net/netfilter/ipv6/nf_defrag_ipv6.h
index 97052cc..416caff 100644
--- a/datapath/linux/compat/include/net/netfilter/ipv6/nf_defrag_ipv6.h
+++ b/datapath/linux/compat/include/net/netfilter/ipv6/nf_defrag_ipv6.h
@@ -13,22 +13,11 @@
  */
 #if defined(HAVE_NF_CT_FRAG6_CONSUME_ORIG) || \
     defined(HAVE_NF_CT_FRAG6_OUTPUT)
-#if defined(OVS_FRAGMENT_BACKPORT)
 #define OVS_NF_DEFRAG6_BACKPORT 1
 struct sk_buff *rpl_nf_ct_frag6_gather(struct sk_buff *skb, u32 user);
 int __init rpl_nf_ct_frag6_init(void);
 void rpl_nf_ct_frag6_cleanup(void);
 void rpl_nf_ct_frag6_consume_orig(struct sk_buff *skb);
-#else /* !OVS_FRAGMENT_BACKPORT */
-static inline struct sk_buff *rpl_nf_ct_frag6_gather(struct sk_buff *skb,
-						     u32 user)
-{
-	return skb;
-}
-static inline int __init rpl_nf_ct_frag6_init(void) { return 0; }
-static inline void rpl_nf_ct_frag6_cleanup(void) { }
-static inline void rpl_nf_ct_frag6_consume_orig(struct sk_buff *skb) { }
-#endif /* OVS_FRAGMENT_BACKPORT */
 #define nf_ct_frag6_gather rpl_nf_ct_frag6_gather
 #else /* HAVE_NF_CT_FRAG6_CONSUME_ORIG */
 static inline int __init rpl_nf_ct_frag6_init(void) { return 0; }
diff --git a/datapath/linux/compat/inet_fragment.c b/datapath/linux/compat/inet_fragment.c
index 10db99f..4479450 100644
--- a/datapath/linux/compat/inet_fragment.c
+++ b/datapath/linux/compat/inet_fragment.c
@@ -13,7 +13,7 @@
 
 #include <linux/version.h>
 
-#if !defined(HAVE_CORRECT_MRU_HANDLING) && defined(OVS_FRAGMENT_BACKPORT)
+#ifndef HAVE_CORRECT_MRU_HANDLING
 
 #include <linux/list.h>
 #include <linux/spinlock.h>
@@ -557,4 +557,4 @@ void inet_frag_maybe_warn_overflow(struct inet_frag_queue *q,
 		net_dbg_ratelimited("%s%s", prefix, msg);
 }
 
-#endif /* !HAVE_CORRECT_MRU_HANDLING && OVS_FRAGMENT_BACKPORT */
+#endif /* !HAVE_CORRECT_MRU_HANDLING */
diff --git a/datapath/linux/compat/ip6_output.c b/datapath/linux/compat/ip6_output.c
index c3ef46c..6888842 100644
--- a/datapath/linux/compat/ip6_output.c
+++ b/datapath/linux/compat/ip6_output.c
@@ -31,7 +31,7 @@
 
 #include <linux/version.h>
 
-#if !defined(HAVE_NF_IPV6_OPS_FRAGMENT) && defined(OVS_FRAGMENT_BACKPORT)
+#ifndef HAVE_NF_IPV6_OPS_FRAGMENT
 
 #include <linux/errno.h>
 #include <linux/kernel.h>
@@ -467,4 +467,4 @@ void ip6_output_exit(void)
 	kfree(ip_idents);
 }
 
-#endif /* OVS_FRAGMENT_BACKPORT */
+#endif /* !HAVE_NF_IPV6_OPS_FRAGMENT */
diff --git a/datapath/linux/compat/ip_fragment.c b/datapath/linux/compat/ip_fragment.c
index cf2daaa..66b56aa 100644
--- a/datapath/linux/compat/ip_fragment.c
+++ b/datapath/linux/compat/ip_fragment.c
@@ -25,7 +25,7 @@
 
 #include <linux/version.h>
 
-#if !defined(HAVE_CORRECT_MRU_HANDLING) && defined(OVS_FRAGMENT_BACKPORT)
+#ifndef HAVE_CORRECT_MRU_HANDLING
 
 #define pr_fmt(fmt) "IPv4: " fmt
 
@@ -747,4 +747,4 @@ void rpl_ipfrag_fini(void)
 	unregister_pernet_subsys(&ip4_frags_ops);
 }
 
-#endif /* !HAVE_CORRECT_MRU_HANDLING && OVS_FRAGMENT_BACKPORT */
+#endif /* !HAVE_CORRECT_MRU_HANDLING */
diff --git a/datapath/linux/compat/reassembly.c b/datapath/linux/compat/reassembly.c
index 716d875..d40ba73 100644
--- a/datapath/linux/compat/reassembly.c
+++ b/datapath/linux/compat/reassembly.c
@@ -32,8 +32,8 @@
 
 #define pr_fmt(fmt) "IPv6: " fmt
 
-#if defined(OVS_FRAGMENT_BACKPORT) && \
-    LINUX_VERSION_CODE < KERNEL_VERSION(3,17,0)
+#include <linux/version.h>
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,17,0)
 
 #include <linux/errno.h>
 #include <linux/types.h>
@@ -107,4 +107,4 @@ out:
 	inet_frag_put(&fq->q, frags);
 }
 
-#endif /* OVS_FRAGMENT_BACKPORT */
+#endif
-- 
1.9.1




More information about the dev mailing list