>>> Matt, Ben and I talked about a few other possibilities on IRC. The >>> one I like the most at the moment is an idea Ben had to creat dummy >>> files named after the ifindex. Then, use symlinks for the >kernel name >>> and the various by-$property subdirectories. This means the KOBJ >>> events will need to expose the ifindex. >>> >> >> I suppose the KOBJ events already expose the ifindex of a network >> interface. The file "/sys/class/net/ethN/uevent" contains >> INTERFACE=ethN and IFINDEX=n already. But it looks like udev doesn't >> use it in any way. > >Right; it could simply do the equivalent of: > >touch /dev/netdev/$env{IFINDEX} > >instead of its normal mknod(2), and then do normal SYMLINK processing. >That last part is what would link >/dev/netdev/by-name/$env{INTERFACE} to that device, along with >/dev/netdev/by-mac/*, /dev/netdev/by-path/*, etc., etc., in as >many different ways as people want to add rules. > >(Or /dev/net/by-* instead of netdev; I'm mostly ambivalent >about the first-level directory under /dev. Looks like >libnetdevname requires /dev/netdev though.) > >> For example, with the kernel patch the "/sys/class/net/ethN/uevent" >> contains in addition to the above details, MAJOR=M and MINOR=m which >> the udev knows how to make use of with a rule like >> >> SUBSYSTEM=="net", KERNEL!="tun", NAME="netdev/%k", MODE="0600". > >And if the only point is to get the ifindex via stat(2) on the >resulting symlinks, but people don't like device files, then >why not get the ifindex via readlink(2) (and a bit of string >parsing, and a strtol(3) or >strtoul(3) call) instead? :-) I suppose this issue can also be addressed in another way. Currently, the sysfs contains various attributes of a network interface under the directory "/sys/class/net/ethN", for example "/sys/class/net/ethN/address". This will be used by udev as below - SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1d:09:6a:78:ec", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1". Similarly, export an attribute named "smbios_name" to sysfs, i.e "/sys/class/net/eth0/smbios_name". "Cat /sys/class/net/eth0/smbios_name" would show "Embedded_NIC_1[23..]" and this can be used by udev in 70-persistent-net.rules as SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{smbios_name}=="Embedded_NIC_1", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0". I suppose this would not need any changes to the udev code and existing udev infrastructure can be used as udev is capable handling ATTR{something}. This would also ensure that whichever device is "Embedded_NIC_1" as per the BIOS, will also be "eth0" in the os. Netdev, What are your views on this idea ? With regards, Narendra K -- To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html