Patchwork [net-next] ipv6: Make 'addrconf_rs_timer' send Router Solicitations (and re-arm itself) if Router Advertisements are accepted

login
register
mail settings
Submitter Shmulik Ladkani
Date Dec. 2, 2012, 11:44 a.m.
Message ID <1354448693-32155-1-git-send-email-shmulik.ladkani@gmail.com>
Download mbox | patch
Permalink /patch/203202/
State Accepted
Delegated to: David Miller
Headers show

Comments

Shmulik Ladkani - Dec. 2, 2012, 11:44 a.m.
As of 026359b [ipv6: Send ICMPv6 RSes only when RAs are accepted],
Router Solicitations are sent whenever kernel accepts Router
Advertisements on the interface.

However, this logic isn't reflected in 'addrconf_rs_timer'.

The timer fails to issue subsequent RS messages (and fails to re-arm
itself) if forwarding is enabled and the special hybrid mode is
enabled (accept_ra=2).

Fix the condition determining whether next RS should be sent, by using
'ipv6_accept_ra()'.

Reported-by: Ami Koren <amikoren@yahoo.com>
Signed-off-by: Shmulik Ladkani <shmulik.ladkani@gmail.com>
---
 net/ipv6/addrconf.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
David Miller - Dec. 3, 2012, 7 p.m.
From: Shmulik Ladkani <shmulik.ladkani@gmail.com>
Date: Sun,  2 Dec 2012 13:44:53 +0200

> As of 026359b [ipv6: Send ICMPv6 RSes only when RAs are accepted],
> Router Solicitations are sent whenever kernel accepts Router
> Advertisements on the interface.
> 
> However, this logic isn't reflected in 'addrconf_rs_timer'.
> 
> The timer fails to issue subsequent RS messages (and fails to re-arm
> itself) if forwarding is enabled and the special hybrid mode is
> enabled (accept_ra=2).
> 
> Fix the condition determining whether next RS should be sent, by using
> 'ipv6_accept_ra()'.
> 
> Reported-by: Ami Koren <amikoren@yahoo.com>
> Signed-off-by: Shmulik Ladkani <shmulik.ladkani@gmail.com>

Applied, thanks.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index ca1ed8a..3b990a2 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -2843,7 +2843,7 @@  static void addrconf_rs_timer(unsigned long data)
 	if (idev->dead || !(idev->if_flags & IF_READY))
 		goto out;
 
-	if (idev->cnf.forwarding)
+	if (!ipv6_accept_ra(idev))
 		goto out;
 
 	/* Announcement received after solicitation was sent */