On 2019/10/03 13:34, Michael Biebl wrote: > Hi > > Am 03.10.19 um 10:17 schrieb Benjamin Poirier: > > Package: udev > > Version: 243-2 > > Severity: normal > > > > /lib/udev/rules.d/73-usb-net-by-mac.rules prevents the renaming of network > > interfaces from usb adapters using the systemd.link(5) mechanism. > > > > The latter is implemented using /lib/udev/rules.d/80-net-setup-link.rules > > which is ineffective because 73-usb-net-by-mac.rules has previously > > unconditionally set a name (based on the mac address). > > Not quite unconditionally. The conditions are
That's right, thanks for correcting me. > - user has not disabled persistent interface naming via the kernel > command line (net.ifnames=0) systemd.link also checks this kernel option: "NamePolicy= may be disabled by specifying net.ifnames=0 on the kernel command line." > - the interface name has not been provided by user space > ATTR{name_assign_type}=="3" We can change the 73-usb-net-by-mac.link I gave as an example to add "keep": [Link] NamePolicy=keep mac > - NAME= is unset This is also checked by 80-net-setup-link.rules > - it has a universally administered (stable) MAC address (second bit > is 0). net_setup_link implements the same condition: "ID_NET_NAME_MAC=prefixxAABBCCDDEEFF [...] It is available if the device has a fixed MAC address. [...] " The check is based on addr_assign_type provided by the kernel. See src/udev/udev-builtin-net_id.c names_mac(). > - the user has no custom /etc/udev/rules.d/80-net-setup-link.rules or ^^^^^^ incorrect > /etc/systemd/network/99-default.link This is an incomplete way of reimplementing udev functionality. In particular, the user will get a different behavior if they do $ cp /lib/systemd/network/99-default.link /etc/systemd/network/ even though the naming rules are effectively the same. > > You are correct though, we do not handle the case where a user has a > arbitrarily named .link file which is used to rename a USB device. > > Fwiw, I've run into this issue myself some time ago, where I created a > .link file which supposedly was not applied. After some head scratching > it was then clear that the udev rule file had already renamed the interface. > > My solution back then was a > touch /etc/udev/rules.d/73-usb-net-by-mac.rules (basically what you > figured out as well) > > > > For example > > ben@f3:~$ cat /etc/systemd/network/10-dock.link > > [Match] > > MACAddress=3c:e1:a1:01:02:03 > > > > [Link] > > Name=dock > > does not work (with the related interface being a usb adapter). > > > > I believe that /lib/udev/rules.d/73-usb-net-by-mac.rules should be removed. > > In > > fact, the same functionality can be provided by the systemd.link mechanism > > while also allowing users to override the default rule. I tested this by > > setting up > > /etc/udev/rules.d/73-usb-net-by-mac.rules -> /dev/null > > and adding > > ben@f3:~$ cat /etc/systemd/network/73-usb-net-by-mac.link > > [Match] > > Path=*-usb-* > > > > [Link] > > NamePolicy=mac > > > > (Ideally the match would be done using something like Type= but DEVTYPE is > > not > > an attribute of the network device. Matching on the ID_BUS udev attribute > > would work but is not supported by net_setup_link I think.) I just noticed that 73-usb-net-by-mac.rules matches on 'SUBSYSTEMS=="usb"' which "[searches] the devpath upwards for a matching device subsystem name." [udev(7)]. I think this is equivalent to the 'Path=*-usb-*' expression in the .link file I suggested. I still think that match is not ideal, but at least its equivalent in behavior to 73-usb-net-by-mac.rules. > > > > This still used a name based on the mac address by default (instead of based > > on the slot) and also allowed me to change the name by adding a file like > > the > > 10-dock.link example above. > > > Using a .link file is an interesting idea but afaics we can't express > all the conditions I mentioned above. > So we would trade one set of corner cases where it doesn't behave as > expected with another set of corner cases. > Not sure if we can make everyone happy. > > Martin, as main author of 73-usb-net-by-mac.rules, what's your take on this? > > Michael > > -- > Why is it that all of the instruments seeking intelligent life in the > universe are pointed away from Earth? >
signature.asc
Description: Digital signature