about summary refs log tree commit diff
path: root/src/core/devices/nm-device-veth.c
diff options
context:
space:
mode:
authorJeremy Bicha <jeremy.bicha@canonical.com>2022-08-18 08:31:29 -0400
committerJeremy Bicha <jeremy.bicha@canonical.com>2022-08-18 08:31:29 -0400
commitb0887dd4d035acc0d84aa859748d36891548eaaf (patch)
treec4dc0dae50954f3c8fb600aa9e7cfaabeb80deb0 /src/core/devices/nm-device-veth.c
parent1a62dcfdc0470be37743914da69fe0b0677c6bfb (diff)
parent4741f1a52215c7ba466140912084d6906185bef3 (diff)
Merge branch 'debian/master' into ubuntu/master
Diffstat (limited to 'src/core/devices/nm-device-veth.c')
-rw-r--r--src/core/devices/nm-device-veth.c15
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,