|
@@ -1078,6 +1078,7 @@ static void ndisc_router_discovery(struct sk_buff *skb)
|
|
|
struct ndisc_options ndopts;
|
|
|
int optlen;
|
|
|
unsigned int pref = 0;
|
|
|
+ __u32 old_if_flags;
|
|
|
|
|
|
__u8 *opt = (__u8 *)(ra_msg + 1);
|
|
|
|
|
@@ -1148,6 +1149,7 @@ static void ndisc_router_discovery(struct sk_buff *skb)
|
|
|
* Remember the managed/otherconf flags from most recently
|
|
|
* received RA message (RFC 2462) -- yoshfuji
|
|
|
*/
|
|
|
+ old_if_flags = in6_dev->if_flags;
|
|
|
in6_dev->if_flags = (in6_dev->if_flags & ~(IF_RA_MANAGED |
|
|
|
IF_RA_OTHERCONF)) |
|
|
|
(ra_msg->icmph.icmp6_addrconf_managed ?
|
|
@@ -1155,6 +1157,9 @@ static void ndisc_router_discovery(struct sk_buff *skb)
|
|
|
(ra_msg->icmph.icmp6_addrconf_other ?
|
|
|
IF_RA_OTHERCONF : 0);
|
|
|
|
|
|
+ if (old_if_flags != in6_dev->if_flags)
|
|
|
+ inet6_ifinfo_notify(RTM_NEWLINK, in6_dev);
|
|
|
+
|
|
|
if (!in6_dev->cnf.accept_ra_defrtr) {
|
|
|
ND_PRINTK(2, info,
|
|
|
"RA: %s, defrtr is false for dev: %s\n",
|