[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <EDA0A4495861324DA2618B4C45DCB3EE5896D2@blrx3m08.blr.amer.dell.com>
Date: Wed, 4 Nov 2009 19:53:38 +0530
From: <Narendra_K@...l.com>
To: <bryan@...zban.is-a-geek.net>
Cc: <dannf@...com>, <bhutchings@...arflare.com>,
<netdev@...r.kernel.org>, <linux-hotplug@...r.kernel.org>,
<Matt_Domsch@...l.com>, <Jordan_Hargrave@...l.com>,
<Charles_Rose@...l.com>, <Sandeep_K_Shandilya@...l.com>
Subject: RE: PATCH: Network Device Naming mechanism and policy
>>> 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 netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists