|
@@ -1075,6 +1075,14 @@ static int inetdev_event(struct notifier_block *this, unsigned long event,
|
|
}
|
|
}
|
|
}
|
|
}
|
|
ip_mc_up(in_dev);
|
|
ip_mc_up(in_dev);
|
|
|
|
+ /* fall through */
|
|
|
|
+ case NETDEV_CHANGEADDR:
|
|
|
|
+ if (IN_DEV_ARP_NOTIFY(in_dev))
|
|
|
|
+ arp_send(ARPOP_REQUEST, ETH_P_ARP,
|
|
|
|
+ in_dev->ifa_list->ifa_address,
|
|
|
|
+ dev,
|
|
|
|
+ in_dev->ifa_list->ifa_address,
|
|
|
|
+ NULL, dev->dev_addr, NULL);
|
|
break;
|
|
break;
|
|
case NETDEV_DOWN:
|
|
case NETDEV_DOWN:
|
|
ip_mc_down(in_dev);
|
|
ip_mc_down(in_dev);
|
|
@@ -1439,6 +1447,7 @@ static struct devinet_sysctl_table {
|
|
DEVINET_SYSCTL_RW_ENTRY(ARP_ANNOUNCE, "arp_announce"),
|
|
DEVINET_SYSCTL_RW_ENTRY(ARP_ANNOUNCE, "arp_announce"),
|
|
DEVINET_SYSCTL_RW_ENTRY(ARP_IGNORE, "arp_ignore"),
|
|
DEVINET_SYSCTL_RW_ENTRY(ARP_IGNORE, "arp_ignore"),
|
|
DEVINET_SYSCTL_RW_ENTRY(ARP_ACCEPT, "arp_accept"),
|
|
DEVINET_SYSCTL_RW_ENTRY(ARP_ACCEPT, "arp_accept"),
|
|
|
|
+ DEVINET_SYSCTL_RW_ENTRY(ARP_NOTIFY, "arp_notify"),
|
|
|
|
|
|
DEVINET_SYSCTL_FLUSHING_ENTRY(NOXFRM, "disable_xfrm"),
|
|
DEVINET_SYSCTL_FLUSHING_ENTRY(NOXFRM, "disable_xfrm"),
|
|
DEVINET_SYSCTL_FLUSHING_ENTRY(NOPOLICY, "disable_policy"),
|
|
DEVINET_SYSCTL_FLUSHING_ENTRY(NOPOLICY, "disable_policy"),
|