On Tue, Sep 26, 2017 at 09:36:44AM +0200, Ulrich Ölmann wrote:
> Hi there,
> So far so good. The problem is met when the connections are teared down and
> NetworkManager is finally restarted:
> ...
> NetworkManager obviously created the MAC VLAN device on top of eth0 now which
> seems to be a bug (especially as eth0 was declared to be unmanaged). As a 
> result
> NetworkManager is not able to create the needed internal resources which is
> logged in the journal:
> 
>     [...]
>     device (eth0): link connected
>     manager: (eth0): new Ethernet device 
> (/org/freedesktop/NetworkManager/Devices/2)
>     manager: (link-local): new Macvlan device 
> (/org/freedesktop/NetworkManager/Devices/3)
>     device (eth1): link connected
>     manager: (eth1): new Ethernet device 
> (/org/freedesktop/NetworkManager/Devices/4)
>     [...]
>     manager: (link-local) can't register the device with manager: A device 
> with ifindex 7 already exists
>     [...]
> 
> It looks like NetworkManager does not create the devices in the correct order 
> in
> contrast to what has been done manually before restarting NetworkManager. This
> behaviour is only seen if the parent is referenced via a UUID. Using an
> interface name instead ("parent=eth1"), everything is fine.

Hi,

as it is currently implemented, "parent=$UUID" in the connection file
means that the parent device will be the device on which connection
$UUID is currently active or, if none, any device compatibile with
$UUID; there isn't any sort of temporal dependency implied by the
property.

Since connection 7ac61f21-bf59-4c4c-ae38-51ce131b2afc does not specify
an interface name, at startup NM can match it with any interface and
chooses the wrong (unmanaged) one. This is a bug and should be easy to
fix, as in the patch below.

As you already found, setting parent=$INTERFACE should work around
this bug, as well as setting the interface name in the parent
connection.

Beniamino

diff --git a/src/nm-manager.c b/src/nm-manager.c
index d0429fe9e..2e47a9759 100644
--- a/src/nm-manager.c
+++ b/src/nm-manager.c
@@ -1155,6 +1155,10 @@ find_parent_device_for_connection (NMManager *self, 
NMConnection *connection, NM
        for (iter = priv->devices; iter; iter = iter->next) {
                NMDevice *candidate = iter->data;

+               /* Unmanaged devices are not compatible with any connection */
+               if (!nm_device_get_managed (candidate, FALSE))
+                       continue;
+
                if (nm_device_get_settings_connection (candidate) == 
parent_connection)
                        return candidate;

--
2.13.5

Attachment: signature.asc
Description: PGP signature

_______________________________________________
networkmanager-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/networkmanager-list

Reply via email to