From: Dave Taht <dave.t...@bufferbloat.net>

---
 ...-RTPROT_RA-markup-of-RA-routes-w-nexthops.patch |   55 ++++++++++++++++++++
 1 file changed, 55 insertions(+)
 create mode 100644 
target/linux/generic/patches-3.3/051-ipv6-fix-RTPROT_RA-markup-of-RA-routes-w-nexthops.patch

diff --git 
a/target/linux/generic/patches-3.3/051-ipv6-fix-RTPROT_RA-markup-of-RA-routes-w-nexthops.patch
 
b/target/linux/generic/patches-3.3/051-ipv6-fix-RTPROT_RA-markup-of-RA-routes-w-nexthops.patch
new file mode 100644
index 0000000..73b832a
--- /dev/null
+++ 
b/target/linux/generic/patches-3.3/051-ipv6-fix-RTPROT_RA-markup-of-RA-routes-w-nexthops.patch
@@ -0,0 +1,55 @@
+From patchwork Tue Jul 10 14:45:50 2012
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Subject: ipv6: fix RTPROT_RA markup of RA routes w/nexthops
+Date: Tue, 10 Jul 2012 04:45:50 -0000
+From: Denis Ovsienko <infrastat...@yandex.ru>
+X-Patchwork-Id: 170201
+Message-Id: <20120710184550.7a5a8d89802473b4c28d0...@yandex.ru>
+To: net...@vger.kernel.org
+
+From: Denis Ovsienko <infrastat...@yandex.ru>
+
+Userspace implementations of network routing protocols sometimes need to
+tell RA-originated IPv6 routes from other kernel routes to make proper
+routing decisions. This makes most sense for RA routes with nexthops,
+namely, default routes and Route Information routes.
+
+The intended mean of preserving RA route origin in a netlink message is
+through indicating RTPROT_RA as protocol code. Function rt6_fill_node()
+tried to do that for default routes, but its test condition was taken
+wrong. This change is modeled after the original mailing list posting
+by Jeff Haran. It fixes the test condition for default route case and
+sets the same behaviour for Route Information case (both types use
+nexthops). Handling of the 3rd RA route type, Prefix Information, is
+left unchanged, as it stands for interface connected routes (without
+nexthops).
+
+Signed-off-by: Denis Ovsienko <infrastat...@yandex.ru>
+
+---
+net/ipv6/route.c |   10 ++++++----
+ 1 files changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/net/ipv6/route.c b/net/ipv6/route.c
+index 999a982..238b1ee 100644
+--- a/net/ipv6/route.c
++++ b/net/ipv6/route.c
+@@ -2440,10 +2440,12 @@ static int rt6_fill_node(struct net *net,
+       rtm->rtm_protocol = rt->rt6i_protocol;
+       if (rt->rt6i_flags & RTF_DYNAMIC)
+               rtm->rtm_protocol = RTPROT_REDIRECT;
+-      else if (rt->rt6i_flags & RTF_ADDRCONF)
+-              rtm->rtm_protocol = RTPROT_KERNEL;
+-      else if (rt->rt6i_flags & RTF_DEFAULT)
+-              rtm->rtm_protocol = RTPROT_RA;
++      else if (rt->rt6i_flags & RTF_ADDRCONF) {
++              if (rt->rt6i_flags & (RTF_DEFAULT | RTF_ROUTEINFO))
++                      rtm->rtm_protocol = RTPROT_RA;
++              else
++                      rtm->rtm_protocol = RTPROT_KERNEL;
++      }
+ 
+       if (rt->rt6i_flags & RTF_CACHE)
+               rtm->rtm_flags |= RTM_F_CLONED;
-- 
1.7.9.5

_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to