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