summaryrefslogtreecommitdiffstats
path: root/net/ipv6/exthdrs.c
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2007-11-14 06:34:06 +0100
committerDavid S. Miller <davem@davemloft.net>2008-01-28 23:53:37 +0100
commit352e512c32b634768303a43768245a0363cebbe7 (patch)
tree97509ac130ecbe2084808271ccc459918a9d5fc1 /net/ipv6/exthdrs.c
parent[IPV6]: Move nfheader_len into rt6_info (diff)
downloadlinux-352e512c32b634768303a43768245a0363cebbe7.tar.xz
linux-352e512c32b634768303a43768245a0363cebbe7.zip
[NET]: Eliminate duplicate copies of dst_discard
We have a number of copies of dst_discard scattered around the place which all do the same thing, namely free a packet on the input or output paths. This patch deletes all of them except dst_discard and points all the users to it. The only non-trivial bit is decnet where it returns an error. However, conceptually this is identical to the blackhole functions used in IPv4 and IPv6 which do not return errors. So they should either all return errors or all return zero. For now I've stuck with the majority and picked zero as the return value. It doesn't really matter in practice since few if any driver would react differently depending on a zero return value or NET_RX_DROP. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/exthdrs.c')
-rw-r--r--net/ipv6/exthdrs.c13
1 files changed, 2 insertions, 11 deletions
diff --git a/net/ipv6/exthdrs.c b/net/ipv6/exthdrs.c
index 1e89efd38a0c..cee06b1655c1 100644
--- a/net/ipv6/exthdrs.c
+++ b/net/ipv6/exthdrs.c
@@ -32,6 +32,7 @@
#include <linux/in6.h>
#include <linux/icmpv6.h>
+#include <net/dst.h>
#include <net/sock.h>
#include <net/snmp.h>
@@ -318,18 +319,8 @@ void __init ipv6_destopt_init(void)
printk(KERN_ERR "ipv6_destopt_init: Could not register protocol\n");
}
-/********************************
- NONE header. No data in packet.
- ********************************/
-
-static int ipv6_nodata_rcv(struct sk_buff *skb)
-{
- kfree_skb(skb);
- return 0;
-}
-
static struct inet6_protocol nodata_protocol = {
- .handler = ipv6_nodata_rcv,
+ .handler = dst_discard,
.flags = INET6_PROTO_NOPOLICY,
};