In article <[EMAIL PROTECTED]> (at Tue, 19 Sep 2006 18:26:29 +0200), Nicolas
DICHTEL <[EMAIL PROTECTED]> says:
> > + if (pneigh)
> > + is_router = pneigh->flags & NTF_ROUTER;
> >
> In function ndisc_send_na(), is_router must be 1 or 0, doesn't it ? Because,
> icmph.icmp6_router is define as: "__u32 router:1,".
>
> So, patch will be:
>
> - is_router = pneigh->flags & NTF_ROUTER;
> + is_router = !!(pneigh->flags & NTF_ROUTER);
>
> Signed-off-by: Nicolas Dichtel <[EMAIL PROTECTED]>
>
>
> What do you think ?
Oh, good catch.
In addition, we are sending NA with wrong IsRouter if forwarding is
set to even non-zero value. We need to fix both.
Here's the patch on top of my git tree for IPv6 updates.
----
[IPV6] NDISC: Fix is_router flag setting.
We did not send appropriate IsRouter flag in proxy NAs, or in non-proxy NAs
if the forwarding setting is even non-zero value. To fix both cases,
let's ensure to give 1/0 value to ndisc_send_na().
Also, existing users of ndisc_send_na() give 0/1 to override,
we can omit redundant operation in that function.
Bug in proxy NAs was spotted by Nicolas Dichtel <[EMAIL PROTECTED]>.
Signed-off-by: YOSHIFUJI Hideaki <[EMAIL PROTECTED]>
---
net/ipv6/ndisc.c | 7 ++-----
1 files changed, 2 insertions(+), 5 deletions(-)
diff --git a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c
index 76517a5..0304b5f 100644
--- a/net/ipv6/ndisc.c
+++ b/net/ipv6/ndisc.c
@@ -496,7 +496,7 @@ static void ndisc_send_na(struct net_dev
msg->icmph.icmp6_unused = 0;
msg->icmph.icmp6_router = router;
msg->icmph.icmp6_solicited = solicited;
- msg->icmph.icmp6_override = !!override;
+ msg->icmph.icmp6_override = override;
/* Set the target address. */
ipv6_addr_copy(&msg->target, solicited_addr);
@@ -847,10 +847,7 @@ static void ndisc_recv_ns(struct sk_buff
goto out;
}
- if (pneigh)
- is_router = pneigh->flags & NTF_ROUTER;
- else
- is_router = idev->cnf.forwarding;
+ is_router = !!(pneigh ? pneigh->flags & NTF_ROUTER :
idev->cnf.forwarding);
if (dad) {
struct in6_addr maddr;
--
1.4.0
--
YOSHIFUJI Hideaki @ USAGI Project <[EMAIL PROTECTED]>
GPG-FP : 9022 65EB 1ECF 3AD1 0BDF 80D8 4807 F894 E062 0EEA
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html