ipv6: send NEWLINK on RA managed/otherconf changes
[firefly-linux-kernel-4.4.55.git] / net / ipv6 / ndisc.c
index 13d3c2beb93ea3e6e7745858ac2ba0520b0d65ba..12fff091e0439d29fe3dcaa707e40bafda40f212 100644 (file)
@@ -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",