diff options
Diffstat (limited to 'net/ipv4/arp.c')
| -rw-r--r-- | net/ipv4/arp.c | 8 | 
1 files changed, 7 insertions, 1 deletions
diff --git a/net/ipv4/arp.c b/net/ipv4/arp.c index 247ec1951c35..4429b013f269 100644 --- a/net/ipv4/arp.c +++ b/net/ipv4/arp.c @@ -1234,13 +1234,19 @@ out:  static int arp_netdev_event(struct notifier_block *this, unsigned long event,  			    void *ptr)  { -	struct net_device *dev = ptr; +	struct net_device *dev = netdev_notifier_info_to_dev(ptr); +	struct netdev_notifier_change_info *change_info;  	switch (event) {  	case NETDEV_CHANGEADDR:  		neigh_changeaddr(&arp_tbl, dev);  		rt_cache_flush(dev_net(dev));  		break; +	case NETDEV_CHANGE: +		change_info = ptr; +		if (change_info->flags_changed & IFF_NOARP) +			neigh_changeaddr(&arp_tbl, dev); +		break;  	default:  		break;  	}  | 
