# cat /etc/udev/rules.d/010_netinterfaces.rules SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="a0:36:9f:34:51:64", NAME="eno1" SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="a0:36:9f:34:51:66", NAME="eno2" This works # cat /etc/udev/rules.d/010_netinterfaces.rules SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="A0:36:9F:34:51:64", NAME="eno1" SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="A0:36:9F:34:51:66", NAME="eno2" This fails, network devices end up with funny names like enp65s0f0 sys-fs/udev-216::gentoo USE="acl firmware-loader kmod -doc -gudev -introspection (-selinux) -static-libs"
I'm pretty sure that's intentional; sysfs exports the information in lower-case, and udev just does plain binary comparison.
Relevent discussion upstream from several years ago. http://thread.gmane.org/gmane.linux.hotplug.devel/12461/focus=12467 I'm going to call this a wontfix unless upstream can be persuaded.