mirror of
https://github.com/torvalds/linux.git
synced 2024-12-04 18:13:04 +00:00
arp: flush arp cache on IFF_NOARP change
IFF_NOARP affects what kind of neighbor entries are created (nud NOARP or nud INCOMPLETE). If the flag changes, flush the arp cache to refresh all entries. Signed-off-by: Timo Teräs <timo.teras@iki.fi> Signed-off-by: Jiri Pirko <jiri@resnulli.us> v2->v3: shortened notifier_info struct name Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
be9efd3653
commit
6c8b4e3ff8
@ -1235,12 +1235,18 @@ static int arp_netdev_event(struct notifier_block *this, unsigned long event,
|
|||||||
void *ptr)
|
void *ptr)
|
||||||
{
|
{
|
||||||
struct net_device *dev = netdev_notifier_info_to_dev(ptr);
|
struct net_device *dev = netdev_notifier_info_to_dev(ptr);
|
||||||
|
struct netdev_notifier_change_info *change_info;
|
||||||
|
|
||||||
switch (event) {
|
switch (event) {
|
||||||
case NETDEV_CHANGEADDR:
|
case NETDEV_CHANGEADDR:
|
||||||
neigh_changeaddr(&arp_tbl, dev);
|
neigh_changeaddr(&arp_tbl, dev);
|
||||||
rt_cache_flush(dev_net(dev));
|
rt_cache_flush(dev_net(dev));
|
||||||
break;
|
break;
|
||||||
|
case NETDEV_CHANGE:
|
||||||
|
change_info = ptr;
|
||||||
|
if (change_info->flags_changed & IFF_NOARP)
|
||||||
|
neigh_changeaddr(&arp_tbl, dev);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user