After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 766404 - unmanaged-devices directive does not work for interfaces renamed by udev when connecting them
unmanaged-devices directive does not work for interfaces renamed by udev when...
Status: RESOLVED FIXED
Product: NetworkManager
Classification: Platform
Component: general
1.2.x
Other Linux
: Normal normal
: ---
Assigned To: NetworkManager maintainer(s)
NetworkManager maintainer(s)
Depends on:
Blocks:
 
 
Reported: 2016-05-14 01:31 UTC by bart.polot
Modified: 2016-05-17 10:22 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description bart.polot 2016-05-14 01:31:02 UTC
While using udev rules to rename interfaces to user-friendly names, the [keyfile] unmanaged-devices directive does not recognize the user-friendly names when plugging a USB device. It does work if NetworkManager is restarted while the device is plugged.


$ cat /etc/udev/rules.d/10-network.rules
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="7c:dd:90:aa:bb:cc", NAME="logilink0"

$ cat /etc/NetworkManager/NetworkManager.conf
[main]
plugins=keyfile
dhcp=dhclient
dns=default

[keyfile]
unmanaged-devices=interface-name:logilink0


Inserting device marks it as managed:

May 14 03:20:23 my_hostname NetworkManager[20926]: <info>  [1463188823.5999] (wlan0): driver supports SSID scans (scan_capa 0x3F).
May 14 03:20:23 my_hostname NetworkManager[20926]: <info>  [1463188823.5999] (wlan0): using WEXT for WiFi device control
May 14 03:20:23 my_hostname NetworkManager[20926]: <info>  [1463188823.6012] manager: (wlan0): new 802.11 WiFi device (/org/freedesktop/NetworkManager/Devices/5)
May 14 03:20:24 my_hostname NetworkManager[20926]: <info>  [1463188824.1487] device (wlan0): interface index 8 renamed iface from 'wlan0' to 'logilink0'
May 14 03:20:24 my_hostname NetworkManager[20926]: <info>  [1463188824.1513] device (logilink0): state change: unmanaged -> unavailable (reason 'managed') [10 20 2]
May 14 03:20:24 my_hostname NetworkManager[20926]: <info>  [1463188824.5613] sup-iface[0x1eca1f0,logilink0]: supports 1 scan SSIDs
May 14 03:20:24 my_hostname NetworkManager[20926]: <info>  [1463188824.5627] device (logilink0): supplicant interface state: starting -> ready
May 14 03:20:24 my_hostname NetworkManager[20926]: <info>  [1463188824.5628] device (logilink0): state change: unavailable -> disconnected (reason 'supplicant-available') [20 30 42]
May 14 03:20:26 my_hostname NetworkManager[20926]: <info>  [1463188826.5701] device (logilink0): supplicant interface state: ready -> inactive


Restarting NM:

May 14 03:25:23 my_hostname systemd[1]: Starting Network Manager...
-- Subject: Unit NetworkManager.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit NetworkManager.service has begun starting up.
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.1395] NetworkManager (version 1.2.2) is starting...
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.1396] Read config: /etc/NetworkManager/NetworkManager.conf
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.1436] manager[0x9401d0]: monitoring kernel firmware directory '/usr/lib/firmware'.
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.1452] dns-mgr[0x9508b0]: set resolv-conf-mode: default
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.1452] dns-mgr[0x9508b0]: using resolv.conf manager 'resolvconf'
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.1481] rfkill1: found WiFi radio killswitch (at /sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/ieee80211/phy0/rfkill1) (driver iwlwifi)
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.1483] WiFi hardware radio set enabled
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.1483] WWAN hardware radio set enabled
May 14 03:25:23 my_hostname systemd[1]: Started Network Manager.
-- Subject: Unit NetworkManager.service has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit NetworkManager.service has finished starting up.
-- 
-- The start-up result is done.
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.1534] settings: loaded plugin keyfile: (c) 2007 - 2015 Red Hat, Inc.  To report bugs please use the NetworkManager mailing list.
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.1653] keyfile: new connection /etc/NetworkManager/system-connections/[...]
[CUT]
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.5275] settings: hostname: using hostnamed
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.5275] settings: hostname changed from (none) to "my_hostname"
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.5277] Using DHCP client 'dhclient'
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.5278] manager: WiFi enabled by radio killswitch; enabled by state file
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.5278] manager: WWAN enabled by radio killswitch; enabled by state file
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.5278] manager: Networking is enabled by state file
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.5279] Loaded device plugin: NMVxlanFactory (internal)
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.5279] Loaded device plugin: NMVlanFactory (internal)
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.5279] Loaded device plugin: NMVethFactory (internal)
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.5280] Loaded device plugin: NMTunFactory (internal)
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.5280] Loaded device plugin: NMMacvlanFactory (internal)
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.5280] Loaded device plugin: NMIPTunnelFactory (internal)
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.5281] Loaded device plugin: NMInfinibandFactory (internal)
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.5281] Loaded device plugin: NMEthernetFactory (internal)
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.5281] Loaded device plugin: NMBridgeFactory (internal)
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.5282] Loaded device plugin: NMBondFactory (internal)
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.5289] Loaded device plugin: NMWifiFactory (/usr/lib/NetworkManager/libnm-device-plugin-wifi.so)
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.5295] Loaded device plugin: NMAtmManager (/usr/lib/NetworkManager/libnm-device-plugin-adsl.so)
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.5313] Loaded device plugin: NMBluezManager (/usr/lib/NetworkManager/libnm-device-plugin-bluetooth.so)
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.5355] Loaded device plugin: NMTeamFactory (/usr/lib/NetworkManager/libnm-device-plugin-team.so)
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.5359] Loaded device plugin: NMWwanFactory (/usr/lib/NetworkManager/libnm-device-plugin-wwan.so)
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.9418] (logilink0): driver supports SSID scans (scan_capa 0x3F).
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.9419] (logilink0): using WEXT for WiFi device control
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.9457] manager: (logilink0): new 802.11 WiFi device (/org/freedesktop/NetworkManager/Devices/0)
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.9477] manager: (en0): new Ethernet device (/org/freedesktop/NetworkManager/Devices/1)
May 14 03:25:23 my_hostname NetworkManager[25726]: <info>  [1463189123.9493] device (en0): state change: unmanaged -> unavailable (reason 'managed') [10 20 2]
May 14 03:25:24 my_hostname NetworkManager[25726]: <info>  [1463189124.1567] (intel0): using nl80211 for WiFi device control
May 14 03:25:24 my_hostname NetworkManager[25726]: <info>  [1463189124.1569] device (intel0): driver supports Access Point (AP) mode
May 14 03:25:24 my_hostname NetworkManager[25726]: <info>  [1463189124.1588] manager: (intel0): new 802.11 WiFi device (/org/freedesktop/NetworkManager/Devices/2)
May 14 03:25:24 my_hostname NetworkManager[25726]: <info>  [1463189124.1613] device (intel0): state change: unmanaged -> unavailable (reason 'managed') [10 20 2]
May 14 03:25:24 my_hostname NetworkManager[25726]: <info>  [1463189124.1636] device (lo): link connected
May 14 03:25:24 my_hostname NetworkManager[25726]: <info>  [1463189124.1651] manager: (lo): new Generic device (/org/freedesktop/NetworkManager/Devices/3)
May 14 03:25:24 my_hostname NetworkManager[25726]: <info>  [1463189124.1846] bluez: use BlueZ version 5
May 14 03:25:24 my_hostname NetworkManager[25726]: <info>  [1463189124.1872] ModemManager available in the bus
May 14 03:25:24 my_hostname NetworkManager[25726]: <info>  [1463189124.1876] supplicant: wpa_supplicant running
May 14 03:25:24 my_hostname NetworkManager[25726]: <info>  [1463189124.1878] device (intel0): supplicant interface state: init -> starting
May 14 03:25:24 my_hostname NetworkManager[25726]: <info>  [1463189124.2605] sup-iface[0x9f1aa0,intel0]: supports 5 scan SSIDs
May 14 03:25:24 my_hostname NetworkManager[25726]: <info>  [1463189124.2620] device (intel0): supplicant interface state: starting -> ready
[CUT]
May 14 03:25:27 my_hostname NetworkManager[25726]: <info>  [1463189127.5356] device (intel0): supplicant interface state: inactive -> authenticating
May 14 03:25:27 my_hostname NetworkManager[25726]: <info>  [1463189127.5418] device (intel0): supplicant interface state: authenticating -> associating
May 14 03:25:27 my_hostname NetworkManager[25726]: <info>  [1463189127.5468] device (intel0): supplicant interface state: associating -> associated
May 14 03:25:27 my_hostname NetworkManager[25726]: <info>  [1463189127.5614] device (intel0): supplicant interface state: associated -> completed
May 14 03:25:27 my_hostname NetworkManager[25726]: <info>  [1463189127.5614] device (intel0): Activation: (wifi) Stage 2 of 5 (Device Configure) successful.  Connected to wireless network 'SSID_NAME'.
May 14 03:25:27 my_hostname NetworkManager[25726]: <info>  [1463189127.5615] device (intel0): state change: config -> ip-config (reason 'none') [50 70 0]
May 14 03:25:27 my_hostname NetworkManager[25726]: <info>  [1463189127.5623] dhcp4 (intel0): activation: beginning transaction (timeout in 45 seconds)
May 14 03:25:27 my_hostname NetworkManager[25726]: <info>  [1463189127.5640] dhcp4 (intel0): dhclient started with pid 25785
May 14 03:25:27 my_hostname dhclient[25785]: DHCPREQUEST on intel0 to 255.255.255.255 port 67





Using the mac address works as expected, both when inserting the device and of course when restarting NM.
Comment 2 Beniamino Galvani 2016-05-17 08:03:27 UTC
(In reply to Thomas Haller from comment #1)
> how about
> 
> https://cgit.freedesktop.org/NetworkManager/NetworkManager/commit/
> ?id=th%2Fdevice-rename-unmanaged-bgo766404

+    update_unmanaged_specs = TRUE;
     ...

     nm_device_set_unmanaged_by_flags (self, NM_UNMANAGED_PLATFORM_INIT, FALSE, reason);

+    if (update_unmanaged_specs)
+         nm_device_set_unmanaged_by_user_config (self, nm_connection_provider_get_unmanaged_specs (priv->con_provider));


When the device is announced by udev (with the updated name), this will initially set it to managed (because the last flag preventing it - PLATFORM_INIT - is removed), triggering a state change to UNAVAILABLE, and only after the device will be unmanaged again, causing another state change.

Maybe it would be better to move the set_unmanaged_by_user_config() directly in the "if (info.name[0] && strcmp (priv->iface, info.name) != 0)" block, so that the device never goes to UNAVAILABLE?
Comment 3 Thomas Haller 2016-05-17 10:22:18 UTC
Thanks.


patch adjusted and merged to master: https://cgit.freedesktop.org/NetworkManager/NetworkManager/commit/?id=25bf73292cfe88c179095eef4f2535ec74a2f639


(including a new 
  device/trivial: rename nm_device_set_unmanaged_by_user_config() to ...
commit).