aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/route.c
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2007-11-14 00:34:06 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 17:53:37 -0500
commit352e512c32b634768303a43768245a0363cebbe7 (patch)
tree97509ac130ecbe2084808271ccc459918a9d5fc1 /net/ipv4/route.c
parentb4ce92775c2e7ff9cf79cca4e0a19c8c5fd6287b (diff)
[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/ipv4/route.c')
-rw-r--r--net/ipv4/route.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index 49e008568ddf..137b8eb666b7 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -92,6 +92,7 @@
92#include <linux/jhash.h> 92#include <linux/jhash.h>
93#include <linux/rcupdate.h> 93#include <linux/rcupdate.h>
94#include <linux/times.h> 94#include <linux/times.h>
95#include <net/dst.h>
95#include <net/net_namespace.h> 96#include <net/net_namespace.h>
96#include <net/protocol.h> 97#include <net/protocol.h>
97#include <net/ip.h> 98#include <net/ip.h>
@@ -2357,12 +2358,6 @@ static struct dst_ops ipv4_dst_blackhole_ops = {
2357}; 2358};
2358 2359
2359 2360
2360static int ipv4_blackhole_output(struct sk_buff *skb)
2361{
2362 kfree_skb(skb);
2363 return 0;
2364}
2365
2366static int ipv4_dst_blackhole(struct rtable **rp, struct flowi *flp, struct sock *sk) 2361static int ipv4_dst_blackhole(struct rtable **rp, struct flowi *flp, struct sock *sk)
2367{ 2362{
2368 struct rtable *ort = *rp; 2363 struct rtable *ort = *rp;
@@ -2374,8 +2369,8 @@ static int ipv4_dst_blackhole(struct rtable **rp, struct flowi *flp, struct sock
2374 2369
2375 atomic_set(&new->__refcnt, 1); 2370 atomic_set(&new->__refcnt, 1);
2376 new->__use = 1; 2371 new->__use = 1;
2377 new->input = ipv4_blackhole_output; 2372 new->input = dst_discard;
2378 new->output = ipv4_blackhole_output; 2373 new->output = dst_discard;
2379 memcpy(new->metrics, ort->u.dst.metrics, RTAX_MAX*sizeof(u32)); 2374 memcpy(new->metrics, ort->u.dst.metrics, RTAX_MAX*sizeof(u32));
2380 2375
2381 new->dev = ort->u.dst.dev; 2376 new->dev = ort->u.dst.dev;