netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] net: ipv6: Don't purge default router if accept_ra=2
@ 2013-03-04  6:46 Lorenzo Colitti
  2013-03-04 10:09 ` YOSHIFUJI Hideaki
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Lorenzo Colitti @ 2013-03-04  6:46 UTC (permalink / raw)
  To: netdev; +Cc: Eric Dumazet

Setting net.ipv6.conf.<interface>.accept_ra=2 causes the kernel
to accept RAs even when forwarding is enabled. However, enabling
forwarding purges all default routes on the system, breaking
connectivity until the next RA is received. Fix this by not
purging default routes on interfaces that have accept_ra=2.

Signed-off-by: Lorenzo Colitti <lorenzo@google.com>
---
 net/ipv6/route.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index 9282665..e5fe004 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -1915,7 +1915,8 @@ void rt6_purge_dflt_routers(struct net *net)
 restart:
 	read_lock_bh(&table->tb6_lock);
 	for (rt = table->tb6_root.leaf; rt; rt = rt->dst.rt6_next) {
-		if (rt->rt6i_flags & (RTF_DEFAULT | RTF_ADDRCONF)) {
+		if (rt->rt6i_flags & (RTF_DEFAULT | RTF_ADDRCONF) &&
+		    (!rt->rt6i_idev || rt->rt6i_idev->cnf.accept_ra != 2)) {
 			dst_hold(&rt->dst);
 			read_unlock_bh(&table->tb6_lock);
 			ip6_del_rt(rt);
-- 
1.8.1.3

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] net: ipv6: Don't purge default router if accept_ra=2
  2013-03-04  6:46 [PATCH] net: ipv6: Don't purge default router if accept_ra=2 Lorenzo Colitti
@ 2013-03-04 10:09 ` YOSHIFUJI Hideaki
  2013-03-04 14:58 ` Eric Dumazet
  2013-03-04 19:15 ` David Miller
  2 siblings, 0 replies; 4+ messages in thread
From: YOSHIFUJI Hideaki @ 2013-03-04 10:09 UTC (permalink / raw)
  To: David Miller; +Cc: Lorenzo Colitti, netdev, Eric Dumazet

Lorenzo Colitti wrote:
> Setting net.ipv6.conf.<interface>.accept_ra=2 causes the kernel
> to accept RAs even when forwarding is enabled. However, enabling
> forwarding purges all default routes on the system, breaking
> connectivity until the next RA is received. Fix this by not
> purging default routes on interfaces that have accept_ra=2.
> 
> Signed-off-by: Lorenzo Colitti <lorenzo@google.com>
> ---
>  net/ipv6/route.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/net/ipv6/route.c b/net/ipv6/route.c
> index 9282665..e5fe004 100644
> --- a/net/ipv6/route.c
> +++ b/net/ipv6/route.c
> @@ -1915,7 +1915,8 @@ void rt6_purge_dflt_routers(struct net *net)
>  restart:
>  	read_lock_bh(&table->tb6_lock);
>  	for (rt = table->tb6_root.leaf; rt; rt = rt->dst.rt6_next) {
> -		if (rt->rt6i_flags & (RTF_DEFAULT | RTF_ADDRCONF)) {
> +		if (rt->rt6i_flags & (RTF_DEFAULT | RTF_ADDRCONF) &&
> +		    (!rt->rt6i_idev || rt->rt6i_idev->cnf.accept_ra != 2)) {
>  			dst_hold(&rt->dst);
>  			read_unlock_bh(&table->tb6_lock);
>  			ip6_del_rt(rt);
> 

Acked-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>

--yoshfuji

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] net: ipv6: Don't purge default router if accept_ra=2
  2013-03-04  6:46 [PATCH] net: ipv6: Don't purge default router if accept_ra=2 Lorenzo Colitti
  2013-03-04 10:09 ` YOSHIFUJI Hideaki
@ 2013-03-04 14:58 ` Eric Dumazet
  2013-03-04 19:15 ` David Miller
  2 siblings, 0 replies; 4+ messages in thread
From: Eric Dumazet @ 2013-03-04 14:58 UTC (permalink / raw)
  To: Lorenzo Colitti; +Cc: netdev, Eric Dumazet

On Mon, 2013-03-04 at 15:46 +0900, Lorenzo Colitti wrote:
> Setting net.ipv6.conf.<interface>.accept_ra=2 causes the kernel
> to accept RAs even when forwarding is enabled. However, enabling
> forwarding purges all default routes on the system, breaking
> connectivity until the next RA is received. Fix this by not
> purging default routes on interfaces that have accept_ra=2.
> 
> Signed-off-by: Lorenzo Colitti <lorenzo@google.com>
> ---
>  net/ipv6/route.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/net/ipv6/route.c b/net/ipv6/route.c
> index 9282665..e5fe004 100644
> --- a/net/ipv6/route.c
> +++ b/net/ipv6/route.c
> @@ -1915,7 +1915,8 @@ void rt6_purge_dflt_routers(struct net *net)
>  restart:
>  	read_lock_bh(&table->tb6_lock);
>  	for (rt = table->tb6_root.leaf; rt; rt = rt->dst.rt6_next) {
> -		if (rt->rt6i_flags & (RTF_DEFAULT | RTF_ADDRCONF)) {
> +		if (rt->rt6i_flags & (RTF_DEFAULT | RTF_ADDRCONF) &&
> +		    (!rt->rt6i_idev || rt->rt6i_idev->cnf.accept_ra != 2)) {
>  			dst_hold(&rt->dst);
>  			read_unlock_bh(&table->tb6_lock);
>  			ip6_del_rt(rt);

Acked-by: Eric Dumazet <edumazet@google.com>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] net: ipv6: Don't purge default router if accept_ra=2
  2013-03-04  6:46 [PATCH] net: ipv6: Don't purge default router if accept_ra=2 Lorenzo Colitti
  2013-03-04 10:09 ` YOSHIFUJI Hideaki
  2013-03-04 14:58 ` Eric Dumazet
@ 2013-03-04 19:15 ` David Miller
  2 siblings, 0 replies; 4+ messages in thread
From: David Miller @ 2013-03-04 19:15 UTC (permalink / raw)
  To: lorenzo; +Cc: netdev, edumazet

From: Lorenzo Colitti <lorenzo@google.com>
Date: Mon, 4 Mar 2013 15:46:46 +0900

> Setting net.ipv6.conf.<interface>.accept_ra=2 causes the kernel
> to accept RAs even when forwarding is enabled. However, enabling
> forwarding purges all default routes on the system, breaking
> connectivity until the next RA is received. Fix this by not
> purging default routes on interfaces that have accept_ra=2.
> 
> Signed-off-by: Lorenzo Colitti <lorenzo@google.com>

Applied and queued up for -stable.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2013-03-04 19:15 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-03-04  6:46 [PATCH] net: ipv6: Don't purge default router if accept_ra=2 Lorenzo Colitti
2013-03-04 10:09 ` YOSHIFUJI Hideaki
2013-03-04 14:58 ` Eric Dumazet
2013-03-04 19:15 ` David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).