aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/ipv6/ndisc.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c
index 13d3c2beb93e..12fff091e043 100644
--- a/net/ipv6/ndisc.c
+++ b/net/ipv6/ndisc.c
@@ -1078,6 +1078,7 @@ static void ndisc_router_discovery(struct sk_buff *skb)
1078 struct ndisc_options ndopts; 1078 struct ndisc_options ndopts;
1079 int optlen; 1079 int optlen;
1080 unsigned int pref = 0; 1080 unsigned int pref = 0;
1081 __u32 old_if_flags;
1081 1082
1082 __u8 *opt = (__u8 *)(ra_msg + 1); 1083 __u8 *opt = (__u8 *)(ra_msg + 1);
1083 1084
@@ -1148,6 +1149,7 @@ static void ndisc_router_discovery(struct sk_buff *skb)
1148 * Remember the managed/otherconf flags from most recently 1149 * Remember the managed/otherconf flags from most recently
1149 * received RA message (RFC 2462) -- yoshfuji 1150 * received RA message (RFC 2462) -- yoshfuji
1150 */ 1151 */
1152 old_if_flags = in6_dev->if_flags;
1151 in6_dev->if_flags = (in6_dev->if_flags & ~(IF_RA_MANAGED | 1153 in6_dev->if_flags = (in6_dev->if_flags & ~(IF_RA_MANAGED |
1152 IF_RA_OTHERCONF)) | 1154 IF_RA_OTHERCONF)) |
1153 (ra_msg->icmph.icmp6_addrconf_managed ? 1155 (ra_msg->icmph.icmp6_addrconf_managed ?
@@ -1155,6 +1157,9 @@ static void ndisc_router_discovery(struct sk_buff *skb)
1155 (ra_msg->icmph.icmp6_addrconf_other ? 1157 (ra_msg->icmph.icmp6_addrconf_other ?
1156 IF_RA_OTHERCONF : 0); 1158 IF_RA_OTHERCONF : 0);
1157 1159
1160 if (old_if_flags != in6_dev->if_flags)
1161 inet6_ifinfo_notify(RTM_NEWLINK, in6_dev);
1162
1158 if (!in6_dev->cnf.accept_ra_defrtr) { 1163 if (!in6_dev->cnf.accept_ra_defrtr) {
1159 ND_PRINTK(2, info, 1164 ND_PRINTK(2, info,
1160 "RA: %s, defrtr is false for dev: %s\n", 1165 "RA: %s, defrtr is false for dev: %s\n",