aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/neighbour.c
diff options
context:
space:
mode:
authorVille Nuorvala <vnuorval@tcs.hut.fi>2006-09-22 17:43:19 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2006-09-22 18:20:24 -0400
commit62dd93181aaa1d5a501a9cebcb254f44b8a48af7 (patch)
treeb19cc7f630d3fecccc338f1c5a75000a4485565a /net/core/neighbour.c
parent5f3e6e9e19f50a6910aec2dbd479187aabba04b7 (diff)
[IPV6] NDISC: Set per-entry is_router flag in Proxy NA.
We have sent NA with router flag from the node-wide forwarding configuration. This is not appropriate for proxy NA, and it should be set according to each proxy entry's configuration. This is used by Mobile IPv6 home agent to support physical home link in acting as a proxy router for mobile node which is not a router, for example. Based on MIPL2 kernel patch. Signed-off-by: Ville Nuorvala <vnuorval@tcs.hut.fi> Signed-off-by: Masahide NAKAMURA <nakam@linux-ipv6.org> Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Diffstat (limited to 'net/core/neighbour.c')
-rw-r--r--net/core/neighbour.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/net/core/neighbour.c b/net/core/neighbour.c
index a45bd2124d6..b6c69e1463e 100644
--- a/net/core/neighbour.c
+++ b/net/core/neighbour.c
@@ -1544,9 +1544,14 @@ int neigh_add(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg)
1544 lladdr = tb[NDA_LLADDR] ? nla_data(tb[NDA_LLADDR]) : NULL; 1544 lladdr = tb[NDA_LLADDR] ? nla_data(tb[NDA_LLADDR]) : NULL;
1545 1545
1546 if (ndm->ndm_flags & NTF_PROXY) { 1546 if (ndm->ndm_flags & NTF_PROXY) {
1547 err = 0; 1547 struct pneigh_entry *pn;
1548 if (pneigh_lookup(tbl, dst, dev, 1) == NULL) 1548
1549 err = -ENOBUFS; 1549 err = -ENOBUFS;
1550 pn = pneigh_lookup(tbl, dst, dev, 1);
1551 if (pn) {
1552 pn->flags = ndm->ndm_flags;
1553 err = 0;
1554 }
1550 goto out_dev_put; 1555 goto out_dev_put;
1551 } 1556 }
1552 1557