aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/icmp.c
diff options
context:
space:
mode:
authorPavel Emelyanov <xemul@openvz.org>2007-11-20 01:35:57 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 17:54:29 -0500
commit69d6da0b0faa70249a243a14e6066c013e9294e5 (patch)
treef3678fc834f0b7ba1fc46ef2a4a240e7a937d747 /net/ipv6/icmp.c
parent7bc54c90307b4bc3d7fb2ffd6ad8fbda0671a45e (diff)
[IPv6] RAW: Compact the API for the kernel
Same as in the previous patch for ipv4, compact the API and hide hash table and rwlock inside the raw.c file. Plus fix some "bad" places from checkpatch.pl point of view (assignments inside if()). Signed-off-by: Pavel Emelyanov <xemul@openvz.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/icmp.c')
-rw-r--r--net/ipv6/icmp.c15
1 files changed, 1 insertions, 14 deletions
diff --git a/net/ipv6/icmp.c b/net/ipv6/icmp.c
index f1240688dc58..93c96cfd5ee1 100644
--- a/net/ipv6/icmp.c
+++ b/net/ipv6/icmp.c
@@ -555,9 +555,7 @@ out:
555 555
556static void icmpv6_notify(struct sk_buff *skb, int type, int code, __be32 info) 556static void icmpv6_notify(struct sk_buff *skb, int type, int code, __be32 info)
557{ 557{
558 struct in6_addr *saddr, *daddr;
559 struct inet6_protocol *ipprot; 558 struct inet6_protocol *ipprot;
560 struct sock *sk;
561 int inner_offset; 559 int inner_offset;
562 int hash; 560 int hash;
563 u8 nexthdr; 561 u8 nexthdr;
@@ -579,9 +577,6 @@ static void icmpv6_notify(struct sk_buff *skb, int type, int code, __be32 info)
579 if (!pskb_may_pull(skb, inner_offset+8)) 577 if (!pskb_may_pull(skb, inner_offset+8))
580 return; 578 return;
581 579
582 saddr = &ipv6_hdr(skb)->saddr;
583 daddr = &ipv6_hdr(skb)->daddr;
584
585 /* BUGGG_FUTURE: we should try to parse exthdrs in this packet. 580 /* BUGGG_FUTURE: we should try to parse exthdrs in this packet.
586 Without this we will not able f.e. to make source routed 581 Without this we will not able f.e. to make source routed
587 pmtu discovery. 582 pmtu discovery.
@@ -597,15 +592,7 @@ static void icmpv6_notify(struct sk_buff *skb, int type, int code, __be32 info)
597 ipprot->err_handler(skb, NULL, type, code, inner_offset, info); 592 ipprot->err_handler(skb, NULL, type, code, inner_offset, info);
598 rcu_read_unlock(); 593 rcu_read_unlock();
599 594
600 read_lock(&raw_v6_lock); 595 raw6_icmp_error(skb, nexthdr, type, code, inner_offset, info);
601 if ((sk = sk_head(&raw_v6_htable[hash])) != NULL) {
602 while ((sk = __raw_v6_lookup(sk, nexthdr, saddr, daddr,
603 IP6CB(skb)->iif))) {
604 rawv6_err(sk, skb, NULL, type, code, inner_offset, info);
605 sk = sk_next(sk);
606 }
607 }
608 read_unlock(&raw_v6_lock);
609} 596}
610 597
611/* 598/*