diff options
-rw-r--r-- | include/net/dst.h | 1 | ||||
-rw-r--r-- | net/core/dst.c | 3 | ||||
-rw-r--r-- | net/decnet/dn_route.c | 13 | ||||
-rw-r--r-- | net/ipv4/route.c | 11 | ||||
-rw-r--r-- | net/ipv6/exthdrs.c | 13 | ||||
-rw-r--r-- | net/ipv6/route.c | 21 |
6 files changed, 13 insertions, 49 deletions
diff --git a/include/net/dst.h b/include/net/dst.h index 69888f1502b1..7a0b1bde8e28 100644 --- a/include/net/dst.h +++ b/include/net/dst.h | |||
@@ -179,6 +179,7 @@ static inline struct dst_entry *dst_pop(struct dst_entry *dst) | |||
179 | return child; | 179 | return child; |
180 | } | 180 | } |
181 | 181 | ||
182 | extern int dst_discard(struct sk_buff *skb); | ||
182 | extern void * dst_alloc(struct dst_ops * ops); | 183 | extern void * dst_alloc(struct dst_ops * ops); |
183 | extern void __dst_free(struct dst_entry * dst); | 184 | extern void __dst_free(struct dst_entry * dst); |
184 | extern struct dst_entry *dst_destroy(struct dst_entry * dst); | 185 | extern struct dst_entry *dst_destroy(struct dst_entry * dst); |
diff --git a/net/core/dst.c b/net/core/dst.c index 03daead3592a..f538061f4b93 100644 --- a/net/core/dst.c +++ b/net/core/dst.c | |||
@@ -153,11 +153,12 @@ loop: | |||
153 | #endif | 153 | #endif |
154 | } | 154 | } |
155 | 155 | ||
156 | static int dst_discard(struct sk_buff *skb) | 156 | int dst_discard(struct sk_buff *skb) |
157 | { | 157 | { |
158 | kfree_skb(skb); | 158 | kfree_skb(skb); |
159 | return 0; | 159 | return 0; |
160 | } | 160 | } |
161 | EXPORT_SYMBOL(dst_discard); | ||
161 | 162 | ||
162 | void * dst_alloc(struct dst_ops * ops) | 163 | void * dst_alloc(struct dst_ops * ops) |
163 | { | 164 | { |
diff --git a/net/decnet/dn_route.c b/net/decnet/dn_route.c index 23aa3556e56f..2a5bb0714c7e 100644 --- a/net/decnet/dn_route.c +++ b/net/decnet/dn_route.c | |||
@@ -765,17 +765,6 @@ drop: | |||
765 | } | 765 | } |
766 | 766 | ||
767 | /* | 767 | /* |
768 | * Drop packet. This is used for endnodes and for | ||
769 | * when we should not be forwarding packets from | ||
770 | * this dest. | ||
771 | */ | ||
772 | static int dn_blackhole(struct sk_buff *skb) | ||
773 | { | ||
774 | kfree_skb(skb); | ||
775 | return NET_RX_DROP; | ||
776 | } | ||
777 | |||
778 | /* | ||
779 | * Used to catch bugs. This should never normally get | 768 | * Used to catch bugs. This should never normally get |
780 | * called. | 769 | * called. |
781 | */ | 770 | */ |
@@ -1396,7 +1385,7 @@ make_route: | |||
1396 | default: | 1385 | default: |
1397 | case RTN_UNREACHABLE: | 1386 | case RTN_UNREACHABLE: |
1398 | case RTN_BLACKHOLE: | 1387 | case RTN_BLACKHOLE: |
1399 | rt->u.dst.input = dn_blackhole; | 1388 | rt->u.dst.input = dst_discard; |
1400 | } | 1389 | } |
1401 | rt->rt_flags = flags; | 1390 | rt->rt_flags = flags; |
1402 | if (rt->u.dst.dev) | 1391 | if (rt->u.dst.dev) |
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 | ||
2360 | static int ipv4_blackhole_output(struct sk_buff *skb) | ||
2361 | { | ||
2362 | kfree_skb(skb); | ||
2363 | return 0; | ||
2364 | } | ||
2365 | |||
2366 | static int ipv4_dst_blackhole(struct rtable **rp, struct flowi *flp, struct sock *sk) | 2361 | static 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; |
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 @@ | |||
32 | #include <linux/in6.h> | 32 | #include <linux/in6.h> |
33 | #include <linux/icmpv6.h> | 33 | #include <linux/icmpv6.h> |
34 | 34 | ||
35 | #include <net/dst.h> | ||
35 | #include <net/sock.h> | 36 | #include <net/sock.h> |
36 | #include <net/snmp.h> | 37 | #include <net/snmp.h> |
37 | 38 | ||
@@ -318,18 +319,8 @@ void __init ipv6_destopt_init(void) | |||
318 | printk(KERN_ERR "ipv6_destopt_init: Could not register protocol\n"); | 319 | printk(KERN_ERR "ipv6_destopt_init: Could not register protocol\n"); |
319 | } | 320 | } |
320 | 321 | ||
321 | /******************************** | ||
322 | NONE header. No data in packet. | ||
323 | ********************************/ | ||
324 | |||
325 | static int ipv6_nodata_rcv(struct sk_buff *skb) | ||
326 | { | ||
327 | kfree_skb(skb); | ||
328 | return 0; | ||
329 | } | ||
330 | |||
331 | static struct inet6_protocol nodata_protocol = { | 322 | static struct inet6_protocol nodata_protocol = { |
332 | .handler = ipv6_nodata_rcv, | 323 | .handler = dst_discard, |
333 | .flags = INET6_PROTO_NOPOLICY, | 324 | .flags = INET6_PROTO_NOPOLICY, |
334 | }; | 325 | }; |
335 | 326 | ||
diff --git a/net/ipv6/route.c b/net/ipv6/route.c index 20083e0d3995..ac70e2d3b10c 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c | |||
@@ -152,7 +152,6 @@ struct rt6_info ip6_null_entry = { | |||
152 | 152 | ||
153 | static int ip6_pkt_prohibit(struct sk_buff *skb); | 153 | static int ip6_pkt_prohibit(struct sk_buff *skb); |
154 | static int ip6_pkt_prohibit_out(struct sk_buff *skb); | 154 | static int ip6_pkt_prohibit_out(struct sk_buff *skb); |
155 | static int ip6_pkt_blk_hole(struct sk_buff *skb); | ||
156 | 155 | ||
157 | struct rt6_info ip6_prohibit_entry = { | 156 | struct rt6_info ip6_prohibit_entry = { |
158 | .u = { | 157 | .u = { |
@@ -181,8 +180,8 @@ struct rt6_info ip6_blk_hole_entry = { | |||
181 | .obsolete = -1, | 180 | .obsolete = -1, |
182 | .error = -EINVAL, | 181 | .error = -EINVAL, |
183 | .metrics = { [RTAX_HOPLIMIT - 1] = 255, }, | 182 | .metrics = { [RTAX_HOPLIMIT - 1] = 255, }, |
184 | .input = ip6_pkt_blk_hole, | 183 | .input = dst_discard, |
185 | .output = ip6_pkt_blk_hole, | 184 | .output = dst_discard, |
186 | .ops = &ip6_dst_ops, | 185 | .ops = &ip6_dst_ops, |
187 | .path = (struct dst_entry*)&ip6_blk_hole_entry, | 186 | .path = (struct dst_entry*)&ip6_blk_hole_entry, |
188 | } | 187 | } |
@@ -782,12 +781,6 @@ struct dst_entry * ip6_route_output(struct sock *sk, struct flowi *fl) | |||
782 | 781 | ||
783 | EXPORT_SYMBOL(ip6_route_output); | 782 | EXPORT_SYMBOL(ip6_route_output); |
784 | 783 | ||
785 | static int ip6_blackhole_output(struct sk_buff *skb) | ||
786 | { | ||
787 | kfree_skb(skb); | ||
788 | return 0; | ||
789 | } | ||
790 | |||
791 | int ip6_dst_blackhole(struct sock *sk, struct dst_entry **dstp, struct flowi *fl) | 784 | int ip6_dst_blackhole(struct sock *sk, struct dst_entry **dstp, struct flowi *fl) |
792 | { | 785 | { |
793 | struct rt6_info *ort = (struct rt6_info *) *dstp; | 786 | struct rt6_info *ort = (struct rt6_info *) *dstp; |
@@ -800,8 +793,8 @@ int ip6_dst_blackhole(struct sock *sk, struct dst_entry **dstp, struct flowi *fl | |||
800 | 793 | ||
801 | atomic_set(&new->__refcnt, 1); | 794 | atomic_set(&new->__refcnt, 1); |
802 | new->__use = 1; | 795 | new->__use = 1; |
803 | new->input = ip6_blackhole_output; | 796 | new->input = dst_discard; |
804 | new->output = ip6_blackhole_output; | 797 | new->output = dst_discard; |
805 | 798 | ||
806 | memcpy(new->metrics, ort->u.dst.metrics, RTAX_MAX*sizeof(u32)); | 799 | memcpy(new->metrics, ort->u.dst.metrics, RTAX_MAX*sizeof(u32)); |
807 | new->dev = ort->u.dst.dev; | 800 | new->dev = ort->u.dst.dev; |
@@ -1811,12 +1804,6 @@ static int ip6_pkt_prohibit_out(struct sk_buff *skb) | |||
1811 | return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES); | 1804 | return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES); |
1812 | } | 1805 | } |
1813 | 1806 | ||
1814 | static int ip6_pkt_blk_hole(struct sk_buff *skb) | ||
1815 | { | ||
1816 | kfree_skb(skb); | ||
1817 | return 0; | ||
1818 | } | ||
1819 | |||
1820 | #endif | 1807 | #endif |
1821 | 1808 | ||
1822 | /* | 1809 | /* |