[ovs-dev] [PATCH 3/6] compat: Remove ip6_expire_frag_queue().

Joe Stringer joe at ovn.org
Tue Jul 12 22:26:20 UTC 2016


This was previously backported to fix issues with our inet_fragment
backport; with that largely gone, we can get rid of this too.

Signed-off-by: Joe Stringer <joe at ovn.org>
---
This is effectively a revert of commit bf1f0d35ceb9 ("datapath: Fix IPv6
fragment expiry crash."). It should be paired with the previous patch,
but is kept separate to ease backporting.
---
 datapath/linux/Modules.mk                  |   2 -
 datapath/linux/compat/include/linux/ipv6.h |  15 ----
 datapath/linux/compat/reassembly.c         | 110 -----------------------------
 3 files changed, 127 deletions(-)
 delete mode 100644 datapath/linux/compat/include/linux/ipv6.h
 delete mode 100644 datapath/linux/compat/reassembly.c

diff --git a/datapath/linux/Modules.mk b/datapath/linux/Modules.mk
index ef080837bbfc..ec476c796c2e 100644
--- a/datapath/linux/Modules.mk
+++ b/datapath/linux/Modules.mk
@@ -20,7 +20,6 @@ openvswitch_sources += \
 	linux/compat/net_namespace.c \
 	linux/compat/nf_conntrack_core.c \
 	linux/compat/nf_conntrack_reasm.c \
-	linux/compat/reassembly.c \
 	linux/compat/reciprocal_div.c \
 	linux/compat/skbuff-openvswitch.c \
 	linux/compat/socket.c \
@@ -44,7 +43,6 @@ openvswitch_headers += \
 	linux/compat/include/linux/if_link.h \
 	linux/compat/include/linux/if_vlan.h \
 	linux/compat/include/linux/in.h \
-	linux/compat/include/linux/ipv6.h \
 	linux/compat/include/linux/jiffies.h \
 	linux/compat/include/linux/kconfig.h \
 	linux/compat/include/linux/kernel.h \
diff --git a/datapath/linux/compat/include/linux/ipv6.h b/datapath/linux/compat/include/linux/ipv6.h
deleted file mode 100644
index 8a79f9c0e6a8..000000000000
--- a/datapath/linux/compat/include/linux/ipv6.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifndef __LINUX_IPV6_WRAPPER_H
-#define __LINUX_IPV6_WRAPPER_H 1
-
-#include_next <linux/ipv6.h>
-
-struct frag_queue;
-struct inet_frags;
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(3,17,0)
-void rpl_ip6_expire_frag_queue(struct net *net, struct frag_queue *fq,
-			       struct inet_frags *frags);
-#define ip6_expire_frag_queue rpl_ip6_expire_frag_queue
-#endif
-
-#endif
diff --git a/datapath/linux/compat/reassembly.c b/datapath/linux/compat/reassembly.c
deleted file mode 100644
index d40ba7318608..000000000000
--- a/datapath/linux/compat/reassembly.c
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Backported from upstream commit a72a5e2d34ec
- * ("inet: kill unused skb_free op")
- *
- *      IPv6 fragment reassembly
- *      Linux INET6 implementation
- *
- *      Authors:
- *      Pedro Roque             <roque at di.fc.ul.pt>
- *
- *      Based on: net/ipv4/ip_fragment.c
- *
- *      This program is free software; you can redistribute it and/or
- *      modify it under the terms of the GNU General Public License
- *      as published by the Free Software Foundation; either version
- *      2 of the License, or (at your option) any later version.
- */
-
-/*
- *      Fixes:
- *      Andi Kleen      Make it work with multiple hosts.
- *                      More RFC compliance.
- *
- *      Horst von Brand Add missing #include <linux/string.h>
- *      Alexey Kuznetsov        SMP races, threading, cleanup.
- *      Patrick McHardy         LRU queue of frag heads for evictor.
- *      Mitsuru KANDA @USAGI    Register inet6_protocol{}.
- *      David Stevens and
- *      YOSHIFUJI,H. @USAGI     Always remove fragment header to
- *                              calculate ICV correctly.
- */
-
-#define pr_fmt(fmt) "IPv6: " fmt
-
-#include <linux/version.h>
-#if LINUX_VERSION_CODE < KERNEL_VERSION(3,17,0)
-
-#include <linux/errno.h>
-#include <linux/types.h>
-#include <linux/string.h>
-#include <linux/socket.h>
-#include <linux/sockios.h>
-#include <linux/jiffies.h>
-#include <linux/net.h>
-#include <linux/list.h>
-#include <linux/netdevice.h>
-#include <linux/in6.h>
-#include <linux/ipv6.h>
-#include <linux/icmpv6.h>
-#include <linux/random.h>
-#include <linux/jhash.h>
-#include <linux/skbuff.h>
-#include <linux/slab.h>
-#include <linux/export.h>
-
-#include <net/sock.h>
-#include <net/snmp.h>
-
-#include <net/ipv6.h>
-#include <net/ip6_route.h>
-#include <net/protocol.h>
-#include <net/transp_v6.h>
-#include <net/rawv6.h>
-#include <net/ndisc.h>
-#include <net/addrconf.h>
-#include <net/inet_frag.h>
-#include <net/inet_ecn.h>
-
-void ip6_expire_frag_queue(struct net *net, struct frag_queue *fq,
-			   struct inet_frags *frags)
-{
-	struct net_device *dev = NULL;
-
-	spin_lock(&fq->q.lock);
-
-	if (qp_flags(fq) & INET_FRAG_COMPLETE)
-		goto out;
-
-	inet_frag_kill(&fq->q, frags);
-
-	rcu_read_lock();
-	dev = dev_get_by_index_rcu(net, fq->iif);
-	if (!dev)
-		goto out_rcu_unlock;
-
-	IP6_INC_STATS_BH(net, __in6_dev_get(dev), IPSTATS_MIB_REASMFAILS);
-
-	if (inet_frag_evicting(&fq->q))
-		goto out_rcu_unlock;
-
-	IP6_INC_STATS_BH(net, __in6_dev_get(dev), IPSTATS_MIB_REASMTIMEOUT);
-
-	/* Don't send error if the first segment did not arrive. */
-	if (!(qp_flags(fq) & INET_FRAG_FIRST_IN) || !fq->q.fragments)
-		goto out_rcu_unlock;
-
-	/* But use as source device on which LAST ARRIVED
-	 * segment was received. And do not use fq->dev
-	 * pointer directly, device might already disappeared.
-	 */
-	fq->q.fragments->dev = dev;
-	icmpv6_send(fq->q.fragments, ICMPV6_TIME_EXCEED, ICMPV6_EXC_FRAGTIME, 0);
-out_rcu_unlock:
-	rcu_read_unlock();
-out:
-	spin_unlock(&fq->q.lock);
-	inet_frag_put(&fq->q, frags);
-}
-
-#endif
-- 
2.9.0




More information about the dev mailing list