ipvlan: always use the current L2 addr of the master
authorMahesh Bandewar <maheshb@google.com>
Thu, 12 Oct 2017 00:16:26 +0000 (17:16 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 13 Oct 2017 05:54:22 +0000 (22:54 -0700)
commit32c10bbfe914c76d8802be33c97b59be9582df1b
treeeafc0f002c5e84bebc6bb5cad5138cf32ddabdf1
parent743b8bb6a247c1aed3f86c144786e778adb65e3a
ipvlan: always use the current L2 addr of the master

If the underlying master ever changes its L2 (e.g. bonding device),
then make sure that the IPvlan slaves always emit packets with the
current L2 of the master instead of the stale mac addr which was
copied during the device creation. The problem can be seen with
following script -

  #!/bin/bash
  # Create a vEth pair
  ip link add dev veth0 type veth peer name veth1
  ip link set veth0 up
  ip link set veth1 up
  ip link show veth0
  ip link show veth1
  # Create an IPvlan device on one end of this vEth pair.
  ip link add link veth0 dev ipvl0 type ipvlan mode l2
  ip link show ipvl0
  # Change the mac-address of the vEth master.
  ip link set veth0 address 02:11:22:33:44:55

Fixes: 2ad7bf363841 ("ipvlan: Initial check-in of the IPVLAN driver.")
Signed-off-by: Mahesh Bandewar <maheshb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ipvlan/ipvlan_main.c