From e08e6fba9c05e79f2cccdb07fea65cb9178a69ab Mon Sep 17 00:00:00 2001 From: Ville Nuorvala Date: Fri, 22 Sep 2006 14:42:46 -0700 Subject: [PATCH] --- yaml --- r: 34738 b: refs/heads/master c: 5f3e6e9e19f50a6910aec2dbd479187aabba04b7 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/net/ipv6/ndisc.c | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index c64f2bae6c08..6d02688aa92b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 74553b09dcd9194cbda737016f0b89f245145670 +refs/heads/master: 5f3e6e9e19f50a6910aec2dbd479187aabba04b7 diff --git a/trunk/net/ipv6/ndisc.c b/trunk/net/ipv6/ndisc.c index ed01f9a330d6..0e0d6ce69021 100644 --- a/trunk/net/ipv6/ndisc.c +++ b/trunk/net/ipv6/ndisc.c @@ -952,6 +952,15 @@ static void ndisc_recv_na(struct sk_buff *skb) if (neigh->nud_state & NUD_FAILED) goto out; + /* + * Don't update the neighbor cache entry on a proxy NA from + * ourselves because either the proxied node is off link or it + * has already sent a NA to us. + */ + if (lladdr && !memcmp(lladdr, dev->dev_addr, dev->addr_len) && + pneigh_lookup(&nd_tbl, &msg->target, dev, 0)) + goto out; + neigh_update(neigh, lladdr, msg->icmph.icmp6_solicited ? NUD_REACHABLE : NUD_STALE, NEIGH_UPDATE_F_WEAK_OVERRIDE|