答复: [PATCH] ipvlan: flush arp table when mac address changed
From: liuqifa <hidden>
Date: 2018-05-14 08:49:27
Also in:
lkml
Hi,
Hi, On Sat, 2018-05-12 at 19:00 +0800, liuqifa@huawei.com wrote:quoted
From: Keefe Liu <redacted> When master device's mac has been changed, the commit <32c10bbfe914> "ipvlan: always use the current L2 addr of the master" makes the IPVlan devices's mac changed also, but it doesn't flush the IPVlan's arp table. Signed-off-by: Keefe Liu <redacted> --- drivers/net/ipvlan/ipvlan_main.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)diff --git a/drivers/net/ipvlan/ipvlan_main.cb/drivers/net/ipvlan/ipvlan_main.c index 450eec2..a1edfe1 100644--- a/drivers/net/ipvlan/ipvlan_main.c +++ b/drivers/net/ipvlan/ipvlan_main.c@@ -7,6 +7,8 @@ * */ +#include <net/neighbour.h> +#include <net/arp.h> #include "ipvlan.h" static unsigned int ipvlan_netid __read_mostly; @@ -792,8 +794,10 @@static int ipvlan_device_event(struct notifier_block *unused, break; case NETDEV_CHANGEADDR: - list_for_each_entry(ipvlan, &port->ipvlans, pnode) + list_for_each_entry(ipvlan, &port->ipvlans, pnode) { ether_addr_copy(ipvlan->dev->dev_addr, dev- dev_addr); + neigh_changeaddr(&arp_tbl, ipvlan->dev); + }Why don't using: call_netdevice_notifiers(NETDEV_CHANGEADDR, ipvlan->dev); instead? that is what other stacked device - bridge and vlans - are currently doing in the same scenario. Thanks, Paolo
Yes, I agre with you, this is a better solution. Thanks Keefe