mirror of
git://github.com/lxc/lxc
synced 2025-08-31 08:49:38 +00:00
Merge pull request #3731 from samboyles1/master
network: handle name collisions when returning interfaces to host
This commit is contained in:
@@ -3612,6 +3612,10 @@ static bool lxc_delete_network_priv(struct lxc_handler *handler)
|
||||
}
|
||||
|
||||
if (netdev->type == LXC_NET_PHYS) {
|
||||
/* Physical interfaces are initially returned to the parent namespace
|
||||
* with their transient name to avoid collisions
|
||||
*/
|
||||
netdev->ifindex = if_nametoindex(netdev->transient_name);
|
||||
ret = lxc_netdev_rename_by_index(netdev->ifindex, netdev->link);
|
||||
if (ret < 0)
|
||||
WARN("Failed to rename interface with index %d "
|
||||
@@ -3684,6 +3688,12 @@ clear_ifindices:
|
||||
netdev->priv.veth_attr.veth1[0] = '\0';
|
||||
netdev->priv.veth_attr.ifindex = 0;
|
||||
}
|
||||
|
||||
/* Clear transient name */
|
||||
if (!is_empty_string (netdev->transient_name))
|
||||
{
|
||||
netdev->transient_name[0] = '\0';
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -3761,7 +3771,10 @@ int lxc_restore_phys_nics_to_netns(struct lxc_handler *handler)
|
||||
continue;
|
||||
}
|
||||
|
||||
ret = lxc_netdev_move_by_index_fd(netdev->ifindex, oldfd, netdev->link);
|
||||
/* Restore physical interfaces to host's network namespace with its transient name
|
||||
* to avoid collisions with the host's other interfaces.
|
||||
*/
|
||||
ret = lxc_netdev_move_by_index_fd(netdev->ifindex, oldfd, netdev->transient_name);
|
||||
if (ret < 0)
|
||||
WARN("Error moving network device \"%s\" back to network namespace", ifname);
|
||||
else
|
||||
|
@@ -136,6 +136,7 @@ union netdev_p {
|
||||
* @created_name : the name with which this interface got created before
|
||||
* being renamed to final_name.
|
||||
* Currenly only used for veth devices.
|
||||
* @transient_name : temporary name to avoid namespace collisions
|
||||
* @hwaddr : mac address
|
||||
* @mtu : maximum transmission unit
|
||||
* @priv : information specific to the specificed network type
|
||||
|
Reference in New Issue
Block a user