|
@@ -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;
|