Bug #164 » batman-adv_001_fix_softiface_mac_update_v2.patch
| soft-interface.c | ||
|---|---|---|
| { | ||
| 	struct batadv_priv *bat_priv = netdev_priv(dev); | ||
| 	struct sockaddr *addr = p; | ||
| 	uint8_t old_addr[ETH_ALEN]; | ||
| 	if (!is_valid_ether_addr(addr->sa_data)) | ||
| 		return -EADDRNOTAVAIL; | ||
| 	memcpy(old_addr, dev->dev_addr, ETH_ALEN); | ||
| 	memcpy(dev->dev_addr, addr->sa_data, ETH_ALEN); | ||
| 	/* only modify transtable if it has been initialized before */ | ||
| 	if (atomic_read(&bat_priv->mesh_state) == BATADV_MESH_ACTIVE) { | ||
| 		batadv_tt_local_remove(bat_priv, dev->dev_addr, | ||
| 		batadv_tt_local_remove(bat_priv, old_addr, | ||
| 				       "mac address changed", false); | ||
| 		batadv_tt_local_add(dev, addr->sa_data, BATADV_NULL_IFINDEX); | ||
| 	} | ||
| 	memcpy(dev->dev_addr, addr->sa_data, ETH_ALEN); | ||
| 	dev->addr_assign_type &= ~NET_ADDR_RANDOM; | ||
| 	return 0; | ||
| } | ||
- « Previous
- 1
- 2
- 3
- Next »