diff options
| author | Michael Biebl <biebl@debian.org> | 2022-10-04 00:56:46 +0200 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2022-10-04 00:56:46 +0200 |
| commit | 3612e6355f3f40d264ec4657547761069baa5430 (patch) | |
| tree | 768e4f5b37b66f540dd7030aa2eaff2ac7bb0168 /src/core/devices/nm-device-veth.c | |
| parent | 7e9f00a3be8f65535e6620b344443ec4d403212b (diff) | |
| parent | 6f7fcde10e47d8af865af336becf1fd8a446e62e (diff) | |
Merge tag 'debian/1.40.0-1' into debian/bullseye-backports
network-manager Debian release 1.40.0-1
Diffstat (limited to 'src/core/devices/nm-device-veth.c')
| -rw-r--r-- | src/core/devices/nm-device-veth.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/core/devices/nm-device-veth.c b/src/core/devices/nm-device-veth.c index 8c95a293..63dfd8bb 100644 --- a/src/core/devices/nm-device-veth.c +++ b/src/core/devices/nm-device-veth.c @@ -82,6 +82,8 @@ create_and_realize(NMDevice *device, GError **error) { const char *iface = nm_device_get_iface(device); + const char *peer; + NMDevice *peer_device; NMSettingVeth *s_veth; int r; @@ -96,10 +98,15 @@ create_and_realize(NMDevice *device, return FALSE; } - r = nm_platform_link_veth_add(nm_device_get_platform(device), - iface, - nm_setting_veth_get_peer(s_veth), - out_plink); + peer = nm_setting_veth_get_peer(s_veth); + peer_device = nm_manager_get_device(NM_MANAGER_GET, peer, NM_DEVICE_TYPE_VETH); + if (peer_device) { + /* The veth device and its peer already exist. No need to create it again. */ + if (nm_streq0(nm_device_get_iface(nm_device_parent_get_device(peer_device)), iface)) + return TRUE; + } + + r = nm_platform_link_veth_add(nm_device_get_platform(device), iface, peer, out_plink); if (r < 0) { g_set_error(error, NM_DEVICE_ERROR, |