|
@@ -2293,6 +2293,9 @@ static int addrconf_notify(struct notifier_block *this, unsigned long event,
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
+ if (!idev && dev->mtu >= IPV6_MIN_MTU)
|
|
|
+ idev = ipv6_add_dev(dev);
|
|
|
+
|
|
|
if (idev)
|
|
|
idev->if_flags |= IF_READY;
|
|
|
} else {
|
|
@@ -2357,12 +2360,18 @@ static int addrconf_notify(struct notifier_block *this, unsigned long event,
|
|
|
break;
|
|
|
|
|
|
case NETDEV_CHANGEMTU:
|
|
|
- if ( idev && dev->mtu >= IPV6_MIN_MTU) {
|
|
|
+ if (idev && dev->mtu >= IPV6_MIN_MTU) {
|
|
|
rt6_mtu_change(dev, dev->mtu);
|
|
|
idev->cnf.mtu6 = dev->mtu;
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
+ if (!idev && dev->mtu >= IPV6_MIN_MTU) {
|
|
|
+ idev = ipv6_add_dev(dev);
|
|
|
+ if (idev)
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
/* MTU falled under IPV6_MIN_MTU. Stop IPv6 on this interface. */
|
|
|
|
|
|
case NETDEV_DOWN:
|