From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paolo Abeni Subject: Re: [PATCH] ipvlan: flush arp table when mac address changed Date: Mon, 14 May 2018 09:39:41 +0200 Message-ID: <1526283581.4411.2.camel@redhat.com> References: <20180512110037.9116-1-liuqifa@huawei.com> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org To: liuqifa@huawei.com, davem@davemloft.net, dsahern@gmail.com, maheshb@google.com, weiyongjun1@huawei.com, maowenan@huawei.com, dingtianhong@huawei.com Return-path: In-Reply-To: <20180512110037.9116-1-liuqifa@huawei.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: netdev.vger.kernel.org Hi, On Sat, 2018-05-12 at 19:00 +0800, liuqifa@huawei.com wrote: > From: Keefe Liu > > 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 > --- > drivers/net/ipvlan/ipvlan_main.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/ipvlan/ipvlan_main.c b/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 > +#include > #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