net: bridge: Issue NETDEV_PRE_CHANGEADDR
When a port is attached to a bridge, the address of the bridge in question may change as well. Even if it would not change at this point (because the current bridge address is lower), it might end up changing later as a result of detach of another port, which can't be vetoed. Therefore issue NETDEV_PRE_CHANGEADDR regardless of whether the address will be used at this point or not, and make sure all involved parties would agree with the change. Signed-off-by: Petr Machata <petrm@mellanox.com> Acked-by: Jiri Pirko <jiri@mellanox.com> Reviewed-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
d59cdf9475
Коммит
ca935da7f4
|
@ -650,6 +650,15 @@ int br_add_if(struct net_bridge *br, struct net_device *dev,
|
|||
if (br_fdb_insert(br, p, dev->dev_addr, 0))
|
||||
netdev_err(dev, "failed insert local address bridge forwarding table\n");
|
||||
|
||||
if (br->dev->addr_assign_type != NET_ADDR_SET) {
|
||||
/* Ask for permission to use this MAC address now, even if we
|
||||
* don't end up choosing it below.
|
||||
*/
|
||||
err = dev_pre_changeaddr_notify(br->dev, dev->dev_addr, extack);
|
||||
if (err)
|
||||
goto err7;
|
||||
}
|
||||
|
||||
err = nbp_vlan_init(p, extack);
|
||||
if (err) {
|
||||
netdev_err(dev, "failed to initialize vlan filtering on this port\n");
|
||||
|
|
Загрузка…
Ссылка в новой задаче