Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ffe1d49c authored by Stephen Hemminger's avatar Stephen Hemminger Committed by David S. Miller
Browse files

bridge: allow changing hardware address to any valid address



For case of bridging pseudo devices, the get created/destroyed (Xen)
need to allow setting address to any valid value.

Signed-off-by: default avatarStephen Hemminger <shemminger@linux-foundation.org>
parent b86c4503
Loading
Loading
Loading
Loading
+7 −12
Original line number Diff line number Diff line
@@ -83,27 +83,22 @@ static int br_change_mtu(struct net_device *dev, int new_mtu)
	return 0;
}

/* Allow setting mac address of pseudo-bridge to be same as
 * any of the bound interfaces
 */
/* Allow setting mac address to any valid ethernet address. */
static int br_set_mac_address(struct net_device *dev, void *p)
{
	struct net_bridge *br = netdev_priv(dev);
	struct sockaddr *addr = p;
	struct net_bridge_port *port;
	int err = -EADDRNOTAVAIL;

	if (!is_valid_ether_addr(addr->sa_data))
		return -EINVAL;

	spin_lock_bh(&br->lock);
	list_for_each_entry(port, &br->port_list, list) {
		if (!compare_ether_addr(port->dev->dev_addr, addr->sa_data)) {
	memcpy(dev->dev_addr, addr->sa_data, ETH_ALEN);
	br_stp_change_bridge_id(br, addr->sa_data);
			err = 0;
			break;
		}
	}
	spin_unlock_bh(&br->lock);

	return err;
	return 0;
}

static void br_getinfo(struct net_device *dev, struct ethtool_drvinfo *info)