net: ipv6: set route type for anycast routes
authorDavid Ahern <dsa@cumulusnetworks.com>
Thu, 16 Mar 2017 01:14:33 +0000 (18:14 -0700)
committerBen Hutchings <ben@decadent.org.uk>
Tue, 18 Jul 2017 17:38:35 +0000 (18:38 +0100)
commit 4ee39733fbecf04cf9f346de2d64788c35028079 upstream.

Anycast routes have the RTF_ANYCAST flag set, but when dumping routes
for userspace the route type is not set to RTN_ANYCAST. Make it so.

Fixes: 58c4fb86eabcb ("[IPV6]: Flag RTF_ANYCAST for anycast routes")
CC: Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>
Signed-off-by: David Ahern <dsa@cumulusnetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
[bwh: Backported to 3.2: adjust context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
net/ipv6/route.c

index d4059fa..cda5cfe 100644 (file)
@@ -2384,6 +2384,8 @@ static int rt6_fill_node(struct net *net,
                rtm->rtm_type = RTN_UNREACHABLE;
        else if (rt->rt6i_flags&RTF_LOCAL)
                rtm->rtm_type = RTN_LOCAL;
                rtm->rtm_type = RTN_UNREACHABLE;
        else if (rt->rt6i_flags&RTF_LOCAL)
                rtm->rtm_type = RTN_LOCAL;
+       else if (rt->rt6i_flags & RTF_ANYCAST)
+               rtm->rtm_type = RTN_ANYCAST;
        else if (rt->rt6i_dev && (rt->rt6i_dev->flags&IFF_LOOPBACK))
                rtm->rtm_type = RTN_LOCAL;
        else
        else if (rt->rt6i_dev && (rt->rt6i_dev->flags&IFF_LOOPBACK))
                rtm->rtm_type = RTN_LOCAL;
        else