diff options
author | Ville Nuorvala <vnuorval@tcs.hut.fi> | 2006-09-22 14:43:19 -0700 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-09-22 15:20:24 -0700 |
commit | 62dd93181aaa1d5a501a9cebcb254f44b8a48af7 (patch) | |
tree | b19cc7f630d3fecccc338f1c5a75000a4485565a /net/core/neighbour.c | |
parent | 5f3e6e9e19f50a6910aec2dbd479187aabba04b7 (diff) | |
download | op-kernel-dev-62dd93181aaa1d5a501a9cebcb254f44b8a48af7.zip op-kernel-dev-62dd93181aaa1d5a501a9cebcb254f44b8a48af7.tar.gz |
[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.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/net/core/neighbour.c b/net/core/neighbour.c index a45bd21..b6c69e1 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) lladdr = tb[NDA_LLADDR] ? nla_data(tb[NDA_LLADDR]) : NULL; if (ndm->ndm_flags & NTF_PROXY) { - err = 0; - if (pneigh_lookup(tbl, dst, dev, 1) == NULL) - err = -ENOBUFS; + struct pneigh_entry *pn; + + err = -ENOBUFS; + pn = pneigh_lookup(tbl, dst, dev, 1); + if (pn) { + pn->flags = ndm->ndm_flags; + err = 0; + } goto out_dev_put; } |