diff options
Diffstat (limited to 'net/ipv6/route.c')
| -rw-r--r-- | 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 2a4c8d48977f..412fad809a3b 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -2399,10 +2399,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; | 
