public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Stephen Clark <sclark46@earthlink.net>
To: linux-kernel <linux-kernel@vger.kernel.org>, Greg KH <greg@kroah.com>
Subject: kernel -2.6.35.13 longterm
Date: Tue, 05 Jul 2011 10:35:25 -0400	[thread overview]
Message-ID: <4E13212D.3020005@earthlink.net> (raw)

Hello,

Is it possible to get the following patches included in the longterm kernel
2.6.35.13?

They let linux behave according to:

"Basic Requirements for IPv6 Customer Edge Routers
    draft-ietf-v6ops-ipv6-cpe-router-09"

From: Thomas Graf
Subject: [PATCH] ipv6: add special mode accept_ra=2 to accept RA while 
configured as router
Date: Friday, September 3, 2010 - 5:59 am

The current IPv6 behavior is to not accept router advertisements while
forwarding, i.e. configured as router.

This does make sense, a router is typically not supposed to be auto
configured. However there are exceptions and we should allow the
current behavior to be overwritten.

Therefore this patch enables the user to overrule the "if forwarding
enabled then don't listen to RAs" rule by setting accept_ra to the
special value of 2.

An alternative would be to ignore the forwarding switch alltogether
and solely accept RAs based on the value of accept_ra. However, I
found that if not intended, accepting RAs as a router can lead to
strange unwanted behavior therefore we it seems wise to only do so
if the user explicitely asks for this behavior.

Signed-off-by: Thomas Graf <tgraf at infradead.org>

Index: net-2.6/net/ipv6/ndisc.c
===================================================================
--- net-2.6.orig/net/ipv6/ndisc.c
+++ net-2.6/net/ipv6/ndisc.c
@@ -1105,6 +1105,18 @@ errout:
       rtnl_set_sk_err(net, RTNLGRP_ND_USEROPT, err);
   }

+static inline int accept_ra(struct inet6_dev *in6_dev)
+{
+    /*
+     * If forwarding is enabled, RA are not accepted unless the special
+     * hybrid mode (accept_ra=2) is enabled.
+     */
+    if (in6_dev->cnf.forwarding && in6_dev->cnf.accept_ra < 2)
+        return 0;
+
+    return in6_dev->cnf.accept_ra;
+}
+
   static void ndisc_router_discovery(struct sk_buff *skb)
   {
       struct ra_msg *ra_msg = (struct ra_msg *)skb_transport_header(skb);
@@ -1158,8 +1170,7 @@ static void ndisc_router_discovery(struc
           return;
       }

-    /* skip route and link configuration on routers */
-    if (in6_dev->cnf.forwarding || !in6_dev->cnf.accept_ra)
+    if (!accept_ra(in6_dev))
           goto skip_linkparms;

   #ifdef CONFIG_IPV6_NDISC_NODETYPE
@@ -1309,8 +1320,7 @@ skip_linkparms:
                    NEIGH_UPDATE_F_ISROUTER);
       }

-    /* skip route and link configuration on routers */
-    if (in6_dev->cnf.forwarding || !in6_dev->cnf.accept_ra)
+    if (!accept_ra(in6_dev))
           goto out;

   #ifdef CONFIG_IPV6_ROUTE_INFO

Similar to accepting router advertisement, the IPv6 stack does not send router
solicitations if forwarding is enabled.

This patch enables this behavior to be overruled by setting forwarding to the
special value 2.

Signed-off-by: Thomas Graf <tgraf at xxxxxxxxxxxxx>

Index: net-2.6/net/ipv6/addrconf.c
===================================================================
--- net-2.6.orig/net/ipv6/addrconf.c
+++ net-2.6/net/ipv6/addrconf.c
@@ -2964,7 +2964,8 @@ static void addrconf_dad_completed(struc
          start sending router solicitations.
        */

-    if (ifp->idev->cnf.forwarding == 0 &&
+    if ((ifp->idev->cnf.forwarding == 0 ||
+         ifp->idev->cnf.forwarding == 2) &&
           ifp->idev->cnf.rtr_solicits > 0 &&
           (dev->flags&IFF_LOOPBACK) == 0 &&
           (ipv6_addr_type(&ifp->addr) & IPV6_ADDR_LINKLOCAL)) {





Thanks for your consideration,
Steve Clark

             reply	other threads:[~2011-07-05 14:48 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-05 14:35 Stephen Clark [this message]
2011-07-05 15:05 ` kernel -2.6.35.13 longterm Greg KH
2011-07-05 17:32   ` Stephen Clark
2011-07-05 17:38     ` Greg KH
2011-07-06 18:11       ` Andi Kleen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4E13212D.3020005@earthlink.net \
    --to=sclark46@earthlink.net \
    --cc=greg@kroah.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox