diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-01-31 16:58:12 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-01-31 16:58:12 -0800 |
commit | 190ff5b3a168b666925897558998b5d97fec8731 (patch) | |
tree | 9c87169011f48e1ef10a46fcb2050a8795c69161 /net/ipv6/ndisc.c | |
parent | 6fd6b17c6d9713f56b5f20903ec3e00fa6cc435e (diff) | |
parent | 2e5530236645a042e1481aa19879b819c3e8f5c9 (diff) |
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6:
[NETFILTER]: xt_hashlimit: fix ip6tables dependency
[SCTP]: Force update of the rto when processing HB-ACK
[IPV6]: fix BUG of ndisc_send_redirect()
[IPV6]: Fix up some CONFIG typos
[NETFILTER]: SIP conntrack: fix out of bounds memory access
[NETFILTER]: SIP conntrack: fix skipping over user info in SIP headers
[NETFILTER]: xt_connbytes: fix division by zero
[MAINTAINERS]: netfilter@ is subscribers-only
Diffstat (limited to 'net/ipv6/ndisc.c')
-rw-r--r-- | net/ipv6/ndisc.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c index 6a9f616de37..39bb658f3c4 100644 --- a/net/ipv6/ndisc.c +++ b/net/ipv6/ndisc.c @@ -1413,6 +1413,13 @@ void ndisc_send_redirect(struct sk_buff *skb, struct neighbour *neigh, return; } + if (!ipv6_addr_equal(&skb->nh.ipv6h->daddr, target) && + !(ipv6_addr_type(target) & IPV6_ADDR_LINKLOCAL)) { + ND_PRINTK2(KERN_WARNING + "ICMPv6 Redirect: target address is not link-local.\n"); + return; + } + ndisc_flow_init(&fl, NDISC_REDIRECT, &saddr_buf, &skb->nh.ipv6h->saddr, dev->ifindex); |