diff options
author | Paul Mackerras <paulus@samba.org> | 2008-04-14 13:11:02 +0200 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2008-04-14 13:11:02 +0200 |
commit | ac7c5353b189e10cf5dd27399f64f7b013abffc6 (patch) | |
tree | 8222d92b774c256d6ec4399c716d76b3f05ddc4b /net/ipv6/icmp.c | |
parent | [POWERPC] Remove CONFIG_PCI_LEGACY from some configs (diff) | |
parent | Linux 2.6.25-rc9 (diff) | |
download | linux-ac7c5353b189e10cf5dd27399f64f7b013abffc6.tar.xz linux-ac7c5353b189e10cf5dd27399f64f7b013abffc6.zip |
Merge branch 'linux-2.6'
Diffstat (limited to 'net/ipv6/icmp.c')
-rw-r--r-- | net/ipv6/icmp.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/net/ipv6/icmp.c b/net/ipv6/icmp.c index 121d517bf91c..893287ecc628 100644 --- a/net/ipv6/icmp.c +++ b/net/ipv6/icmp.c @@ -436,24 +436,26 @@ void icmpv6_send(struct sk_buff *skb, int type, int code, __u32 info, } if (xfrm_decode_session_reverse(skb, &fl2, AF_INET6)) - goto out; + goto relookup_failed; if (ip6_dst_lookup(sk, &dst2, &fl)) - goto out; + goto relookup_failed; err = xfrm_lookup(&dst2, &fl, sk, XFRM_LOOKUP_ICMP); - if (err == -ENOENT) { + switch (err) { + case 0: + dst_release(dst); + dst = dst2; + break; + case -EPERM: + goto out_dst_release; + default: +relookup_failed: if (!dst) goto out; - goto route_done; + break; } - dst_release(dst); - dst = dst2; - - if (err) - goto out; - route_done: if (ipv6_addr_is_multicast(&fl.fl6_dst)) hlimit = np->mcast_hops; |