2003-11-23 16:47:28 +03:00
#!/usr/bin/perl
# udev-test
#
# Provides automated testing of the udev binary.
# The whole test is self contained in this file, except the matching sysfs tree.
# Simply extend the @tests array, to add a new test variant.
#
# Every test is driven by its own temporary config file.
# This program prepares the environment, creates the config and calls udev.
#
2005-03-27 03:10:03 +04:00
# udev parses the rules, looks at the provided sysfs and
2003-11-23 16:47:28 +03:00
# first creates and then removes the device node.
# After creation and removal the result is checked against the
# expected value and the result is printed.
#
2006-08-20 21:11:32 +04:00
# Copyright (C) 2004-2006 Kay Sievers <kay.sievers@vrfy.org>
# Copyright (C) 2004 Leann Ogasawara <ogasawara@osdl.org>
2003-11-23 16:47:28 +03:00
use warnings ;
use strict ;
2005-03-27 03:10:03 +04:00
my $ PWD = $ ENV { PWD } ;
my $ sysfs = "sys/" ;
my $ udev_bin = "../udev" ;
my $ udev_root = "udev-root/" ; # !!! directory will be removed !!!
my $ udev_conf = "udev-test.conf" ;
my $ udev_rules = "udev-test.rules" ;
2003-11-23 16:47:28 +03:00
2005-04-27 10:15:56 +04:00
# uncomment following line to run udev with valgrind.
# Should make this a runtime option to the script someday...
#my $udev_bin = "valgrind --tool=memcheck --leak-check=yes ../udev";
2003-11-23 16:47:28 +03:00
my @ tests = (
2006-08-20 21:11:32 +04:00
{
desc = > "label test of scsi disc (old key names)" ,
subsys = > "block" ,
devpath = > "/block/sda" ,
exp_name = > "boot_disk" ,
rules = > << EOF
SUBSYSTEMS == "scsi" , SYSFS { vendor } == "IBM-ESXS" , NAME = "boot_disk%n"
KERNEL == "ttyUSB0" , NAME = "visor"
EOF
} ,
{
desc = > "label test of scsi disc (old key names)" ,
subsys = > "block" ,
devpath = > "/block/sda" ,
exp_name = > "boot_disk" ,
rules = > << EOF
SUBSYSTEMS == "scsi" , SYSFS { vendor } == "IBM-ESXS" , NAME = "boot_disk%n"
KERNEL == "ttyUSB0" , NAME = "visor"
EOF
} ,
2003-11-23 16:47:28 +03:00
{
2004-03-13 04:13:59 +03:00
desc = > "label test of scsi disc" ,
subsys = > "block" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/block/sda" ,
2004-03-13 05:18:58 +03:00
exp_name = > "boot_disk" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , ATTRS { vendor } == "IBM-ESXS" , NAME = "boot_disk%n"
2005-03-13 07:46:31 +03:00
KERNEL == "ttyUSB0" , NAME = "visor"
2003-11-23 16:47:28 +03:00
EOF
} ,
{
2004-03-13 04:13:59 +03:00
desc = > "label test of scsi partition" ,
subsys = > "block" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/block/sda/sda1" ,
2004-03-13 05:18:58 +03:00
exp_name = > "boot_disk1" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , ATTRS { vendor } == "IBM-ESXS" , NAME = "boot_disk%n"
2003-12-05 06:21:31 +03:00
EOF
} ,
{
2004-03-13 04:13:59 +03:00
desc = > "label test of pattern match" ,
subsys = > "block" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/block/sda/sda1" ,
2004-03-13 05:18:58 +03:00
exp_name = > "boot_disk1" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , ATTRS { vendor } == "?IBM-ESXS" , NAME = "boot_disk%n-1"
SUBSYSTEMS == "scsi" , ATTRS { vendor } == "IBM-ESXS?" , NAME = "boot_disk%n-2"
SUBSYSTEMS == "scsi" , ATTRS { vendor } == "IBM-ES??" , NAME = "boot_disk%n"
SUBSYSTEMS == "scsi" , ATTRS { vendor } == "IBM-ESXSS" , NAME = "boot_disk%n-3"
2003-12-23 09:32:06 +03:00
EOF
} ,
{
2004-03-13 04:13:59 +03:00
desc = > "label test of multiple sysfs files" ,
subsys = > "block" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/block/sda/sda1" ,
2004-03-13 04:13:59 +03:00
exp_name = > "boot_disk1" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , ATTRS { vendor } == "IBM-ESXS" , ATTRS { model } == "ST336605LW !#" , NAME = "boot_diskX%n"
SUBSYSTEMS == "scsi" , ATTRS { vendor } == "IBM-ESXS" , ATTRS { model } == "ST336605LW !#" , NAME = "boot_disk%n"
2003-12-23 09:32:06 +03:00
EOF
} ,
{
2004-03-13 04:13:59 +03:00
desc = > "label test of max sysfs files" ,
subsys = > "block" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/block/sda/sda1" ,
2004-03-13 04:13:59 +03:00
exp_name = > "boot_disk1" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , ATTRS { vendor } == "IBM-ESXS" , ATTRS { model } == "ST336605LW !#" , ATTRS { scsi_level } == "4" , ATTRS { rev } == "B245" , ATTRS { type } == "0" , ATTRS { queue_depth } == "32" , NAME = "boot_diskXX%n"
SUBSYSTEMS == "scsi" , ATTRS { vendor } == "IBM-ESXS" , ATTRS { model } == "ST336605LW !#" , ATTRS { scsi_level } == "4" , ATTRS { rev } == "B245" , ATTRS { type } == "0" , NAME = "boot_disk%n"
2003-12-03 04:52:26 +03:00
EOF
} ,
{
2004-03-13 04:13:59 +03:00
desc = > "catch device by *" ,
subsys = > "tty" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/class/tty/ttyUSB0" ,
2004-03-13 04:13:59 +03:00
exp_name = > "visor/0" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-03-13 07:46:31 +03:00
KERNEL == "ttyUSB*" , NAME = "visor/%n"
2004-02-12 11:49:52 +03:00
EOF
} ,
{
2004-03-13 04:13:59 +03:00
desc = > "catch device by * - take 2" ,
subsys = > "tty" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/class/tty/ttyUSB0" ,
2004-03-13 04:13:59 +03:00
exp_name = > "visor/0" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-03-13 07:46:31 +03:00
KERNEL == "*USB1" , NAME = "bad"
KERNEL == "*USB0" , NAME = "visor/%n"
2003-12-03 17:22:53 +03:00
EOF
} ,
{
2004-03-13 04:13:59 +03:00
desc = > "catch device by ?" ,
subsys = > "tty" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/class/tty/ttyUSB0" ,
2004-03-13 04:13:59 +03:00
exp_name = > "visor/0" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-03-13 07:46:31 +03:00
KERNEL == "ttyUSB??*" , NAME = "visor/%n-1"
KERNEL == "ttyUSB??" , NAME = "visor/%n-2"
KERNEL == "ttyUSB?" , NAME = "visor/%n"
2003-12-03 17:22:53 +03:00
EOF
} ,
{
2004-03-13 04:13:59 +03:00
desc = > "catch device by character class" ,
subsys = > "tty" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/class/tty/ttyUSB0" ,
2004-03-13 04:13:59 +03:00
exp_name = > "visor/0" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-03-13 07:46:31 +03:00
KERNEL == "ttyUSB[A-Z]*" , NAME = "visor/%n-1"
KERNEL == "ttyUSB?[0-9]" , NAME = "visor/%n-2"
KERNEL == "ttyUSB[0-9]*" , NAME = "visor/%n"
2003-11-23 16:47:28 +03:00
EOF
} ,
{
2004-03-13 04:13:59 +03:00
desc = > "replace kernel name" ,
subsys = > "tty" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/class/tty/ttyUSB0" ,
2004-03-13 04:13:59 +03:00
exp_name = > "visor" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-03-13 07:46:31 +03:00
KERNEL == "ttyUSB0" , NAME = "visor"
2003-12-18 05:28:05 +03:00
EOF
} ,
{
2004-03-13 04:13:59 +03:00
desc = > "Handle comment lines in config file (and replace kernel name)" ,
subsys = > "tty" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/class/tty/ttyUSB0" ,
2004-03-13 04:13:59 +03:00
exp_name = > "visor" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2003-12-18 05:28:05 +03:00
# this is a comment
2005-03-13 07:46:31 +03:00
KERNEL == "ttyUSB0" , NAME = "visor"
2003-12-18 05:28:05 +03:00
EOF
} ,
{
2004-03-13 04:13:59 +03:00
desc = > "Handle comment lines in config file with whitespace (and replace kernel name)" ,
subsys = > "tty" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/class/tty/ttyUSB0" ,
2004-03-13 04:13:59 +03:00
exp_name = > "visor" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2003-12-18 05:28:05 +03:00
# this is a comment with whitespace before the comment
2005-03-13 07:46:31 +03:00
KERNEL == "ttyUSB0" , NAME = "visor"
2003-12-18 05:28:05 +03:00
2004-09-15 04:45:48 +04:00
EOF
} ,
{
desc = > "Handle whitespace only lines (and replace kernel name)" ,
subsys = > "tty" ,
devpath = > "/class/tty/ttyUSB0" ,
exp_name = > "whitespace" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2004-09-15 04:45:48 +04:00
# this is a comment with whitespace before the comment
2005-03-13 07:46:31 +03:00
KERNEL == "ttyUSB0" , NAME = "whitespace"
2004-09-15 04:45:48 +04:00
2003-12-18 05:28:05 +03:00
EOF
} ,
{
2004-03-13 04:13:59 +03:00
desc = > "Handle empty lines in config file (and replace kernel name)" ,
subsys = > "tty" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/class/tty/ttyUSB0" ,
2004-03-13 04:13:59 +03:00
exp_name = > "visor" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2003-12-18 05:28:05 +03:00
2005-03-13 07:46:31 +03:00
KERNEL == "ttyUSB0" , NAME = "visor"
2003-12-18 05:28:05 +03:00
2004-12-20 09:38:33 +03:00
EOF
} ,
{
desc = > "Handle backslashed multi lines in config file (and replace kernel name)" ,
subsys = > "tty" ,
devpath = > "/class/tty/ttyUSB0" ,
exp_name = > "visor" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-03-13 07:46:31 +03:00
KERNEL == "ttyUSB0" , \ \
2004-12-20 09:38:33 +03:00
NAME = "visor"
2005-02-26 04:52:04 +03:00
EOF
} ,
{
desc = > "preserve backslashes, if they are not for a newline" ,
subsys = > "tty" ,
devpath = > "/class/tty/ttyUSB0" ,
exp_name = > "aaa" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-03-13 07:46:31 +03:00
KERNEL == "ttyUSB0" , PROGRAM == "/bin/echo -e \\101" , RESULT == "A" , NAME = "aaa"
2004-12-20 09:38:33 +03:00
EOF
} ,
{
desc = > "Handle stupid backslashed multi lines in config file (and replace kernel name)" ,
subsys = > "tty" ,
devpath = > "/class/tty/ttyUSB0" ,
exp_name = > "visor" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2004-12-20 09:38:33 +03:00
#
\ \
\ \ \ \
#\\
2005-03-13 07:46:31 +03:00
KERNEL == "ttyUSB0" , \ \
2004-12-21 00:24:19 +03:00
NAME = "visor"
2004-12-20 09:38:33 +03:00
2003-11-25 09:27:23 +03:00
EOF
} ,
{
2004-03-13 04:13:59 +03:00
desc = > "subdirectory handling" ,
subsys = > "tty" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/class/tty/ttyUSB0" ,
2004-03-13 04:13:59 +03:00
exp_name = > "sub/direct/ory/visor" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-03-13 07:46:31 +03:00
KERNEL == "ttyUSB0" , NAME = "sub/direct/ory/visor"
2003-11-23 16:47:28 +03:00
EOF
} ,
{
2006-01-16 08:12:49 +03:00
desc = > "parent device name match of scsi partition" ,
2004-03-13 04:13:59 +03:00
subsys = > "block" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/block/sda/sda3" ,
2004-03-13 04:13:59 +03:00
exp_name = > "first_disk3" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNELS == "0:0:0:0" , NAME = "first_disk%n"
2003-11-23 16:47:28 +03:00
EOF
} ,
{
2006-08-20 21:11:32 +04:00
desc = > "test substitution chars (old key names)" ,
2004-03-13 04:13:59 +03:00
subsys = > "block" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/block/sda/sda3" ,
2006-01-16 08:12:49 +03:00
exp_name = > "Major:8:minor:3:kernelnumber:3:id:0:0:0:0" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-01-16 08:12:49 +03:00
BUS == "scsi" , ID == "0:0:0:0" , NAME = "Major:%M:minor:%m:kernelnumber:%n:id:%b"
2006-08-20 21:11:32 +04:00
EOF
} ,
{
desc = > "test substitution chars" ,
subsys = > "block" ,
devpath = > "/block/sda/sda3" ,
exp_name = > "Major:8:minor:3:kernelnumber:3:id:0:0:0:0" ,
rules = > << EOF
SUBSYSTEMS == "scsi" , KERNELS == "0:0:0:0" , NAME = "Major:%M:minor:%m:kernelnumber:%n:id:%b"
2004-02-28 17:53:25 +03:00
EOF
} ,
{
2005-06-20 02:29:38 +04:00
desc = > "test substitution chars (with length limit)" ,
2004-03-13 04:13:59 +03:00
subsys = > "block" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/block/sda/sda3" ,
2006-01-16 08:12:49 +03:00
exp_name = > "M8-m3-n3-b0:0-sIBM" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNELS == "0:0:0:0" , NAME = "M%M-m%m-n%n-b%3b-s%3s{vendor}"
2005-06-25 15:10:16 +04:00
EOF
} ,
{
2005-06-25 20:58:49 +04:00
desc = > "import of shell-value file" ,
2005-06-25 15:10:16 +04:00
subsys = > "block" ,
devpath = > "/block/sda" ,
2005-11-10 03:50:06 +03:00
exp_name = > "subdir/info/node" ,
2005-06-25 15:10:16 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , IMPORT { file } = "udev-test.conf" , NAME = "subdir/%E{udev_log}/node"
2005-06-25 15:10:16 +04:00
KERNEL == "ttyUSB0" , NAME = "visor"
2005-06-25 20:58:49 +04:00
EOF
} ,
{
desc = > "import of shell-value returned from program" ,
subsys = > "block" ,
devpath = > "/block/sda" ,
exp_name = > "node12345678" ,
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , IMPORT = "/bin/echo -e \' TEST_KEY=12345678 \\n TEST_key2=98765 \'" , NAME = "node\$env{TEST_KEY}"
2005-06-25 20:58:49 +04:00
KERNEL == "ttyUSB0" , NAME = "visor"
[PATCH] Adding '%s' format specifier to NAME and SYMLINK
On Thu, Feb 12, 2004 at 05:34:57PM -0800, Greg KH wrote:
> On Tue, Feb 10, 2004 at 09:14:20AM +0100, Hannes Reinecke wrote:
> > Hi all,
> >
> > this patch makes the format for NAME and SYMLINK a bit more flexible:
> > I've added a new format specifier '%s{<SYSFS_var>}', which allows for
> > the value of any sysfs entry found for this device to be inserted.
> > Example (for our S/390 fcp adapter):
> >
> > BUS="ccw", SYSFS_devtype="1732/03", NAME="%k" \
> > SYMLINK="zfcp-%s{hba_id}-%s{wwpn}:%s{fcp_lun}"
> >
> > I know this could also be done with an external program, but having this
> > incorporated into udev makes life easier, especially if run from
> > initramfs. Plus it makes the rules easier to follow, as the result is
> > directly visible and need not to be looked up in some external program.
> >
> > Comments etc. welcome.
>
> Oops, sorry I missed this for the 017 release. I'll look at it tomorrow
> and get back to you. At first glance it looks like a good thing.
>
> Oh, you forgot to update the documentation, that's important to do if
> you want this change to make it in :)
I took a part of the code and made a version that uses already implemented
attribute finding logic.
The parsing of the format length '%3x' and the '%x{attribute}' is a fuction now,
maybe there are more possible users in the future.
I've also added the test to udev-test.pl.
2004-02-17 08:36:34 +03:00
EOF
} ,
{
2004-03-13 04:13:59 +03:00
desc = > "sustitution of sysfs value (%s{file})" ,
subsys = > "block" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/block/sda" ,
2004-03-13 04:13:59 +03:00
exp_name = > "disk-IBM-ESXS-sda" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , ATTRS { vendor } == "IBM-ESXS" , NAME = "disk-%s{vendor}-%k"
2005-03-13 07:46:31 +03:00
KERNEL == "ttyUSB0" , NAME = "visor"
2003-11-23 16:47:28 +03:00
EOF
} ,
{
2004-03-13 04:13:59 +03:00
desc = > "program result substitution" ,
subsys = > "block" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/block/sda/sda3" ,
2004-03-13 04:13:59 +03:00
exp_name = > "special-device-3" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , PROGRAM == "/bin/echo -n special-device" , RESULT == "-special-*" , NAME = "%c-1-%n"
SUBSYSTEMS == "scsi" , PROGRAM == "/bin/echo -n special-device" , RESULT == "special--*" , NAME = "%c-2-%n"
SUBSYSTEMS == "scsi" , PROGRAM == "/bin/echo -n special-device" , RESULT == "special-device-" , NAME = "%c-3-%n"
SUBSYSTEMS == "scsi" , PROGRAM == "/bin/echo -n special-device" , RESULT == "special-devic" , NAME = "%c-4-%n"
SUBSYSTEMS == "scsi" , PROGRAM == "/bin/echo -n special-device" , RESULT == "special-*" , NAME = "%c-%n"
[PATCH] netdev - udevdb+dev.d changes
Here is a patch to change the netdev handling in the database and for
the dev.d/ calls. I applies on top of the udevd.patch, cause klibc has
no sysinfo().
o netdev's are also put into our database now. I want this for the
udevruler gui to get a list of all handled devices.
All devices in the db are stamped with the system uptime value at
the creation time. 'udevinfo -d' prints it.
o the DEVPATH value is the key for udevdb, but if we rename
a netdev, the name is replaced in the kernel, so we add
the changed name to the db to match with the remove event.
NOTE: The dev.d/ scripts still get the original name from the
hotplug call. Should we replace DEVPATH with the new name too?
o We now only add a device to the db, if we have successfully created
the main node or successfully renamed a netdev. This is the main part
of the patch, cause I needed to clean the retval passing trough all
the functions used for node creation.
o DEVNODE sounds a bit ugly for netdev's so I exported DEVNAME too.
Can we change the name?
o I've added a UDEV_NO_DEVD to possibly skip the script execution
and used it in udev-test.pl.
udevstart is the same horror now, if you have scripts with logging
statements in dev.d/ it takes minutes to finish, can we skip the
scripts here too?
o The get_device_type() function is changed to be more strict, cause
'udevinfo -a -p /block/' gets a class device for it and tries to
print the major/minor values.
o bugfix, the RESULT value has now a working newline removal and a test
for this case.
2004-04-01 11:12:57 +04:00
EOF
} ,
{
desc = > "program result substitution (newline removal)" ,
subsys = > "block" ,
devpath = > "/block/sda/sda3" ,
exp_name = > "newline_removed" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , PROGRAM == "/bin/echo test" , RESULT == "test" , NAME = "newline_removed"
2003-11-24 09:25:13 +03:00
EOF
} ,
{
2004-03-13 04:13:59 +03:00
desc = > "program result substitution" ,
subsys = > "block" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/block/sda/sda3" ,
2006-01-16 08:12:49 +03:00
exp_name = > "test-0:0:0:0" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , PROGRAM == "/bin/echo -n test-%b" , RESULT == "test-0:0*" , NAME = "%c"
2004-01-14 05:34:33 +03:00
EOF
} ,
{
2004-03-13 04:13:59 +03:00
desc = > "program with escaped format char (tricky: callout returns format char!)" ,
subsys = > "block" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/block/sda/sda3" ,
2004-03-13 04:13:59 +03:00
exp_name = > "escape-3" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , PROGRAM == "/bin/echo -n escape-%%n" , KERNEL == "sda3" , NAME = "%c"
2004-02-27 08:29:49 +03:00
EOF
} ,
{
2004-03-13 04:13:59 +03:00
desc = > "program with lots of arguments" ,
subsys = > "block" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/block/sda/sda3" ,
2004-03-13 04:13:59 +03:00
exp_name = > "foo9" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , PROGRAM == "/bin/echo -n foo3 foo4 foo5 foo6 foo7 foo8 foo9" , KERNEL == "sda3" , NAME = "%c{7}"
2004-03-11 12:36:12 +03:00
EOF
} ,
{
2004-03-13 04:13:59 +03:00
desc = > "program with subshell" ,
subsys = > "block" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/block/sda/sda3" ,
2004-03-13 04:13:59 +03:00
exp_name = > "bar9" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , PROGRAM == "/bin/sh -c 'echo foo3 foo4 foo5 foo6 foo7 foo8 foo9 | sed s/foo9/bar9/'" , KERNEL == "sda3" , NAME = "%c{7}"
2004-03-11 12:36:12 +03:00
EOF
} ,
{
2004-03-13 04:13:59 +03:00
desc = > "program arguments combined with apostrophes" ,
subsys = > "block" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/block/sda/sda3" ,
2004-03-13 04:13:59 +03:00
exp_name = > "foo7" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , PROGRAM == "/bin/echo -n 'foo3 foo4' 'foo5 foo6 foo7 foo8'" , KERNEL == "sda3" , NAME = "%c{5}"
2004-03-04 11:55:22 +03:00
EOF
} ,
{
2004-03-13 04:13:59 +03:00
desc = > "characters before the %c{N} substitution" ,
subsys = > "block" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/block/sda/sda3" ,
2004-03-13 04:13:59 +03:00
exp_name = > "my-foo9" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , PROGRAM == "/bin/echo -n foo3 foo4 foo5 foo6 foo7 foo8 foo9" , KERNEL == "sda3" , NAME = "my-%c{7}"
2004-03-04 11:55:22 +03:00
EOF
} ,
{
2004-03-13 04:13:59 +03:00
desc = > "substitute the second to last argument" ,
subsys = > "block" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/block/sda/sda3" ,
2004-03-13 04:13:59 +03:00
exp_name = > "my-foo8" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , PROGRAM == "/bin/echo -n foo3 foo4 foo5 foo6 foo7 foo8 foo9" , KERNEL == "sda3" , NAME = "my-%c{6}"
2005-06-20 02:29:38 +04:00
EOF
} ,
{
desc = > "test substitution by variable name" ,
subsys = > "block" ,
devpath = > "/block/sda/sda3" ,
2006-01-16 08:12:49 +03:00
exp_name = > "Major:8-minor:3-kernelnumber:3-id:0:0:0:0" ,
2005-06-20 02:29:38 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNELS == "0:0:0:0" , NAME = "Major:\$major-minor:\$minor-kernelnumber:\$number-id:\$id"
2005-06-20 02:29:38 +04:00
EOF
} ,
{
desc = > "test substitution by variable name 2" ,
subsys = > "block" ,
devpath = > "/block/sda/sda3" ,
2006-01-16 08:12:49 +03:00
exp_name = > "Major:8-minor:3-kernelnumber:3-id:0:0:0:0" ,
2005-06-20 02:29:38 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNELS == "0:0:0:0" , DEVPATH == "*/sda/*" , NAME = "Major:\$major-minor:%m-kernelnumber:\$number-id:\$id"
2005-06-20 02:29:38 +04:00
EOF
} ,
{
desc = > "test substitution by variable name 3" ,
subsys = > "block" ,
devpath = > "/block/sda/sda3" ,
2006-01-16 08:12:49 +03:00
exp_name = > "830:0:0:03" ,
2005-06-20 02:29:38 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNELS == "0:0:0:0" , DEVPATH == "*/sda/*" , NAME = "%M%m%b%n"
2005-06-20 02:29:38 +04:00
EOF
} ,
{
desc = > "test substitution by variable name 4" ,
subsys = > "block" ,
devpath = > "/block/sda/sda3" ,
exp_name = > "833" ,
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNELS == "0:0:0:0" , DEVPATH == "*/sda/*" , NAME = "\$major\$minor\$number"
2005-06-20 02:29:38 +04:00
EOF
} ,
{
desc = > "test substitution by variable name 5" ,
subsys = > "block" ,
devpath = > "/block/sda/sda3" ,
2006-01-16 08:12:49 +03:00
exp_name = > "8330:0:0:0" ,
2005-06-20 02:29:38 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNELS == "0:0:0:0" , DEVPATH == "*/sda/*" , NAME = "\$major%m%n\$id"
2003-12-25 10:56:54 +03:00
EOF
} ,
{
2006-08-20 21:11:32 +04:00
desc = > "non matching SUBSYSTEMS for device with no parent" ,
2004-03-13 04:13:59 +03:00
subsys = > "tty" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/class/tty/console" ,
2006-01-16 08:12:49 +03:00
exp_name = > "TTY" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , PROGRAM == "/bin/echo -n foo" , RESULT == "foo" , NAME = "foo"
2005-03-13 07:46:31 +03:00
KERNEL == "console" , NAME = "TTY"
2003-12-25 11:05:28 +03:00
EOF
} ,
{
2006-08-20 21:11:32 +04:00
desc = > "non matching SUBSYSTEMS" ,
2004-03-13 04:13:59 +03:00
subsys = > "tty" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/class/tty/console" ,
2004-03-13 04:13:59 +03:00
exp_name = > "TTY" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "foo" , ATTRS { dev } == "5:1" , NAME = "foo"
2005-03-13 07:46:31 +03:00
KERNEL == "console" , NAME = "TTY"
2003-12-25 11:33:56 +03:00
EOF
} ,
{
2006-08-20 21:11:32 +04:00
desc = > "ATTRS match" ,
2004-03-13 04:13:59 +03:00
subsys = > "tty" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/class/tty/console" ,
2004-03-13 04:13:59 +03:00
exp_name = > "foo" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
ATTRS { dev } == "5:1" , NAME = "foo"
2005-03-13 07:46:31 +03:00
KERNEL == "console" , NAME = "TTY"
2003-11-27 04:45:26 +03:00
EOF
} ,
{
2004-03-13 04:13:59 +03:00
desc = > "program and bus type match" ,
subsys = > "block" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/block/sda" ,
2006-01-16 08:12:49 +03:00
exp_name = > "scsi-0:0:0:0" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "usb" , PROGRAM == "/bin/echo -n usb-%b" , NAME = "%c"
SUBSYSTEMS == "scsi" , PROGRAM == "/bin/echo -n scsi-%b" , NAME = "%c"
SUBSYSTEMS == "foo" , PROGRAM == "/bin/echo -n foo-%b" , NAME = "%c"
2004-01-23 11:21:13 +03:00
EOF
} ,
{
2004-03-13 04:13:59 +03:00
desc = > "create all possible partitions" ,
subsys = > "block" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/block/sda" ,
2004-03-13 04:13:59 +03:00
exp_name = > "boot_disk15" ,
[PATCH] fix stupid all_partitions bug
> On Mon, 2005-04-11 at 14:55 +0200, Norbert Preining wrote:
> > On Mon, 11 Apr 2005, Kay Sievers wrote:
> > > > brw-rw---- 1 root root 8, 0 2005-04-10 14:58 /dev/sdcard
> > > > brw-rw---- 1 root root 8, 1 2005-04-10 14:58 /dev/sdcard1
> > > > brw-rw---- 1 root root 8, 1 2005-04-10 14:58 /dev/sdcard2
> > > > brw-rw---- 1 root root 8, 1 2005-04-10 14:58 /dev/sdcard3
> > >
> > > This looks broken.
> >
> > Good to hear.
Yeah, I guess it's broken. In create_node() in udev_add.c there is
always added 1 to the minor number, thus the error. The attached patch
should fix this.
2005-04-12 03:05:03 +04:00
exp_majorminor = > "8:15" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , ATTRS { vendor } == "IBM-ESXS" , NAME { all_partitions } = "boot_disk"
2004-02-17 08:44:28 +03:00
EOF
} ,
{
2004-03-13 04:13:59 +03:00
desc = > "sysfs parent hierarchy" ,
subsys = > "tty" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/class/tty/ttyUSB0" ,
2004-03-13 04:13:59 +03:00
exp_name = > "visor" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
ATTRS { idProduct } == "2008" , NAME = "visor"
2004-02-12 10:34:21 +03:00
EOF
} ,
{
2004-03-13 04:13:59 +03:00
desc = > "name test with ! in the name" ,
subsys = > "block" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/block/rd!c0d0" ,
2004-03-13 04:13:59 +03:00
exp_name = > "rd/c0d0" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , NAME = "%k"
2005-03-13 07:46:31 +03:00
KERNEL == "ttyUSB0" , NAME = "visor"
2004-02-17 05:25:01 +03:00
EOF
} ,
{
2004-03-13 04:13:59 +03:00
desc = > "name test with ! in the name, but no matching rule" ,
subsys = > "block" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/block/rd!c0d0" ,
2004-03-13 04:13:59 +03:00
exp_name = > "rd/c0d0" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-03-13 07:46:31 +03:00
KERNEL == "ttyUSB0" , NAME = "visor"
2004-06-05 09:01:53 +04:00
EOF
} ,
{
desc = > "name test with ! in the name for a partition" ,
subsys = > "block" ,
devpath = > "/block/cciss!c0d0/cciss!c0d0p1" ,
exp_name = > "cciss/c0d0p1" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , NAME = "%k"
2005-03-13 07:46:31 +03:00
KERNEL == "ttyUSB0" , NAME = "visor"
2004-02-17 09:00:38 +03:00
EOF
} ,
{
2006-08-20 21:11:32 +04:00
desc = > "KERNELS rule" ,
2004-03-13 04:13:59 +03:00
subsys = > "block" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/block/sda" ,
2004-03-13 04:13:59 +03:00
exp_name = > "scsi-0:0:0:0" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "usb" , KERNELS == "0:0:0:0" , NAME = "not-scsi"
SUBSYSTEMS == "scsi" , KERNELS == "0:0:0:1" , NAME = "no-match"
SUBSYSTEMS == "scsi" , KERNELS == ":0" , NAME = "short-id"
SUBSYSTEMS == "scsi" , KERNELS == "/0:0:0:0" , NAME = "no-match"
SUBSYSTEMS == "scsi" , KERNELS == "0:0:0:0" , NAME = "scsi-0:0:0:0"
2004-02-17 09:00:38 +03:00
EOF
} ,
{
2006-08-20 21:11:32 +04:00
desc = > "KERNELS wildcard all" ,
2004-03-13 04:13:59 +03:00
subsys = > "block" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/block/sda" ,
2004-03-13 04:13:59 +03:00
exp_name = > "scsi-0:0:0:0" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNELS == "*:1" , NAME = "no-match"
SUBSYSTEMS == "scsi" , KERNELS == "*:0:1" , NAME = "no-match"
SUBSYSTEMS == "scsi" , KERNELS == "*:0:0:1" , NAME = "no-match"
SUBSYSTEMS == "scsi" , KERNELS == "*" , NAME = "scsi-0:0:0:0"
SUBSYSTEMS == "scsi" , KERNELS == "0:0:0:0" , NAME = "bad"
2004-02-17 09:00:38 +03:00
EOF
} ,
{
2006-08-20 21:11:32 +04:00
desc = > "KERNELS wildcard partial" ,
2004-03-13 04:13:59 +03:00
subsys = > "block" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/block/sda" ,
2004-03-13 04:13:59 +03:00
exp_name = > "scsi-0:0:0:0" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNELS == "*:0" , NAME = "scsi-0:0:0:0"
SUBSYSTEMS == "scsi" , KERNELS == "0:0:0:0" , NAME = "bad"
2004-02-17 09:00:38 +03:00
EOF
} ,
{
2006-08-20 21:11:32 +04:00
desc = > "KERNELS wildcard partial 2" ,
2004-03-13 04:13:59 +03:00
subsys = > "block" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/block/sda" ,
2004-03-13 04:13:59 +03:00
exp_name = > "scsi-0:0:0:0" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNELS == "*:0:0:0" , NAME = "scsi-0:0:0:0"
SUBSYSTEMS == "scsi" , KERNELS == "0:0:0:0" , NAME = "bad"
2004-03-05 05:59:13 +03:00
EOF
} ,
{
2006-08-20 21:11:32 +04:00
desc = > "ignore ATTRS attribute whitespace" ,
2004-03-13 04:13:59 +03:00
subsys = > "block" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/block/sda" ,
2004-03-13 04:13:59 +03:00
exp_name = > "ignored" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , ATTRS { whitespace_test } == "WHITE SPACE" , NAME = "ignored"
2004-03-05 05:59:13 +03:00
EOF
} ,
{
2006-08-20 21:11:32 +04:00
desc = > "do not ignore ATTRS attribute whitespace" ,
2004-03-13 04:13:59 +03:00
subsys = > "block" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/block/sda" ,
2004-03-13 04:13:59 +03:00
exp_name = > "matched-with-space" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , ATTRS { whitespace_test } == "WHITE SPACE " , NAME = "wrong-to-ignore"
SUBSYSTEMS == "scsi" , ATTRS { whitespace_test } == "WHITE SPACE " , NAME = "matched-with-space"
2004-03-11 12:39:53 +03:00
EOF
} ,
{
2004-12-18 13:34:17 +03:00
desc = > "permissions USER=bad GROUP=name" ,
2004-04-16 10:14:49 +04:00
subsys = > "tty" ,
devpath = > "/class/tty/tty33" ,
exp_name = > "tty33" ,
2004-12-20 05:04:11 +03:00
exp_perms = > "0:0:0660" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-03-13 07:46:31 +03:00
KERNEL == "tty33" , NAME = "tty33" , OWNER = "bad" , GROUP = "name"
2004-04-16 10:14:49 +04:00
EOF
} ,
{
2004-12-18 13:34:17 +03:00
desc = > "permissions OWNER=5000" ,
2004-03-13 04:13:59 +03:00
subsys = > "block" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/block/sda" ,
2004-03-13 04:13:59 +03:00
exp_name = > "node" ,
2004-12-20 05:04:11 +03:00
exp_perms = > "5000::0660" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNEL == "sda" , NAME = "node" , OWNER = "5000"
2004-04-16 10:14:49 +04:00
EOF
} ,
{
2004-12-18 13:34:17 +03:00
desc = > "permissions GROUP=100" ,
2004-04-16 10:14:49 +04:00
subsys = > "block" ,
devpath = > "/block/sda" ,
exp_name = > "node" ,
2004-12-20 05:04:11 +03:00
exp_perms = > ":100:0660" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNEL == "sda" , NAME = "node" , GROUP = "100"
2005-03-19 01:52:41 +03:00
EOF
} ,
{
desc = > "textual user id" ,
subsys = > "block" ,
devpath = > "/block/sda" ,
exp_name = > "node" ,
2005-03-19 05:11:48 +03:00
exp_perms = > "nobody::0660" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNEL == "sda" , NAME = "node" , OWNER = "nobody"
2005-03-19 01:52:41 +03:00
EOF
} ,
{
desc = > "textual group id" ,
subsys = > "block" ,
devpath = > "/block/sda" ,
exp_name = > "node" ,
exp_perms = > ":daemon:0660" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNEL == "sda" , NAME = "node" , GROUP = "daemon"
2005-03-19 03:45:03 +03:00
EOF
} ,
{
desc = > "textual user/group id" ,
subsys = > "block" ,
devpath = > "/block/sda" ,
exp_name = > "node" ,
2005-03-19 05:11:48 +03:00
exp_perms = > "root:mail:0660" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNEL == "sda" , NAME = "node" , OWNER = "root" , GROUP = "mail"
2004-04-16 10:14:49 +04:00
EOF
} ,
{
2004-12-18 13:34:17 +03:00
desc = > "permissions MODE=0777" ,
2004-04-16 10:14:49 +04:00
subsys = > "block" ,
devpath = > "/block/sda" ,
exp_name = > "node" ,
exp_perms = > "::0777" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNEL == "sda" , NAME = "node" , MODE = "0777"
2004-04-16 10:14:49 +04:00
EOF
} ,
{
2004-12-18 13:34:17 +03:00
desc = > "permissions OWNER=5000 GROUP=100 MODE=0777" ,
2004-04-16 10:14:49 +04:00
subsys = > "block" ,
devpath = > "/block/sda" ,
exp_name = > "node" ,
exp_perms = > "5000:100:0777" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNEL == "sda" , NAME = "node" , OWNER = "5000" , GROUP = "100" , MODE = "0777"
2004-04-16 10:14:49 +04:00
EOF
} ,
{
2004-12-18 13:34:17 +03:00
desc = > "permissions OWNER to 5000" ,
2004-04-16 10:14:49 +04:00
subsys = > "tty" ,
devpath = > "/class/tty/ttyUSB0" ,
exp_name = > "ttyUSB0" ,
2004-12-18 13:34:17 +03:00
exp_perms = > "5000::" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-03-13 07:46:31 +03:00
KERNEL == "ttyUSB[0-9]*" , NAME = "ttyUSB%n" , OWNER = "5000"
2004-04-16 10:14:49 +04:00
EOF
} ,
{
2004-12-18 13:34:17 +03:00
desc = > "permissions GROUP to 100" ,
2004-04-16 10:14:49 +04:00
subsys = > "tty" ,
devpath = > "/class/tty/ttyUSB0" ,
exp_name = > "ttyUSB0" ,
2004-12-20 05:04:11 +03:00
exp_perms = > ":100:0660" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-03-13 07:46:31 +03:00
KERNEL == "ttyUSB[0-9]*" , NAME = "ttyUSB%n" , GROUP = "100"
2004-04-16 10:14:49 +04:00
EOF
} ,
{
2004-12-18 13:34:17 +03:00
desc = > "permissions MODE to 0060" ,
2004-04-16 10:14:49 +04:00
subsys = > "tty" ,
devpath = > "/class/tty/ttyUSB0" ,
exp_name = > "ttyUSB0" ,
2004-12-18 13:34:17 +03:00
exp_perms = > "::0060" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-03-13 07:46:31 +03:00
KERNEL == "ttyUSB[0-9]*" , NAME = "ttyUSB%n" , MODE = "0060"
2004-04-16 10:14:49 +04:00
EOF
} ,
{
2004-12-18 13:34:17 +03:00
desc = > "permissions OWNER, GROUP, MODE" ,
2004-04-16 10:14:49 +04:00
subsys = > "tty" ,
devpath = > "/class/tty/ttyUSB0" ,
exp_name = > "ttyUSB0" ,
exp_perms = > "5000:100:0777" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-03-13 07:46:31 +03:00
KERNEL == "ttyUSB[0-9]*" , NAME = "ttyUSB%n" , OWNER = "5000" , GROUP = "100" , MODE = "0777"
2004-12-21 01:44:57 +03:00
EOF
} ,
{
desc = > "permissions only rule" ,
subsys = > "tty" ,
devpath = > "/class/tty/ttyUSB0" ,
exp_name = > "ttyUSB0" ,
exp_perms = > "5000:100:0777" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-03-13 07:46:31 +03:00
KERNEL == "ttyUSB[0-9]*" , OWNER = "5000" , GROUP = "100" , MODE = "0777"
KERNEL == "ttyUSX[0-9]*" , OWNER = "5001" , GROUP = "101" , MODE = "0444"
KERNEL == "ttyUSB[0-9]*" , NAME = "ttyUSB%n"
2004-12-21 02:19:34 +03:00
EOF
} ,
{
desc = > "multiple permissions only rule" ,
subsys = > "tty" ,
devpath = > "/class/tty/ttyUSB0" ,
exp_name = > "ttyUSB0" ,
exp_perms = > "3000:4000:0777" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-03-13 07:46:31 +03:00
SUBSYSTEM == "tty" , OWNER = "3000"
SUBSYSTEM == "tty" , GROUP = "4000"
SUBSYSTEM == "tty" , MODE = "0777"
KERNEL == "ttyUSX[0-9]*" , OWNER = "5001" , GROUP = "101" , MODE = "0444"
KERNEL == "ttyUSB[0-9]*" , NAME = "ttyUSB%n"
2004-12-21 02:19:34 +03:00
EOF
} ,
{
desc = > "permissions only rule with override at NAME rule" ,
subsys = > "tty" ,
devpath = > "/class/tty/ttyUSB0" ,
exp_name = > "ttyUSB0" ,
exp_perms = > "3000:8000:0777" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-03-13 07:46:31 +03:00
SUBSYSTEM == "tty" , OWNER = "3000"
SUBSYSTEM == "tty" , GROUP = "4000"
SUBSYSTEM == "tty" , MODE = "0777"
KERNEL == "ttyUSX[0-9]*" , OWNER = "5001" , GROUP = "101" , MODE = "0444"
KERNEL == "ttyUSB[0-9]*" , NAME = "ttyUSB%n" , GROUP = "8000"
2004-03-13 04:13:59 +03:00
EOF
} ,
{
desc = > "major/minor number test" ,
subsys = > "block" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/block/sda" ,
2004-03-13 04:13:59 +03:00
exp_name = > "node" ,
exp_majorminor = > "8:0" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNEL == "sda" , NAME = "node"
2004-03-13 04:39:59 +03:00
EOF
} ,
{
desc = > "big minor number test" ,
subsys = > "i2c-dev" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/class/i2c-dev/i2c-300" ,
2004-03-13 04:39:59 +03:00
exp_name = > "node" ,
exp_majorminor = > "89:300" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-03-13 07:46:31 +03:00
KERNEL == "i2c-300" , NAME = "node"
2004-03-13 05:00:39 +03:00
EOF
} ,
{
desc = > "big major number test" ,
subsys = > "i2c-dev" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/class/i2c-dev/i2c-fake1" ,
2004-03-13 05:00:39 +03:00
exp_name = > "node" ,
exp_majorminor = > "4095:1" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-03-13 07:46:31 +03:00
KERNEL == "i2c-fake1" , NAME = "node"
2004-03-13 05:00:39 +03:00
EOF
} ,
{
desc = > "big major and big minor number test" ,
subsys = > "i2c-dev" ,
[PATCH] hmm, handle net devices with udev?
Hmm, Arndt Bergmann sent a patch like this one a few weeks ago and
I want to bring the question back, if we want to handle net device
naming with udev.
With this patch it is actually possible to specify something like this
in udev.rules:
KERNEL="dummy*", SYSFS{address}="00:00:00:00:00:00", SYSFS{features}="0x0", NAME="blind%n"
KERNEL="eth*", SYSFS{address}="00:0d:60:77:30:91", NAME="private"
and you will get:
[root@pim udev.kay]# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1500 30 0 0 0 0 0 0 1500 30 0 0 0 0 0 0
private: 278393 1114 0 0 0 0 0 0 153204 1468 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
blind0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The udevinfo program is also working:
[root@pim udev.kay]# ./udevinfo -a -p /sys/class/net/private
looking at class device '/sys/class/net/private':
SYSFS{addr_len}="6"
SYSFS{address}="00:0d:60:77:30:91"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x3a9"
SYSFS{flags}="0x1003"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
BUS="pci"
ID="0000:02:01.0"
SYSFS{class}="0x020000"
SYSFS{detach_state}="0"
SYSFS{device}="0x101e"
SYSFS{irq}="11"
SYSFS{subsystem_device}="0x0549"
SYSFS{subsystem_vendor}="0x1014"
SYSFS{vendor}="0x8086"
The matching device will be renamed to the given name. The device name
will not be put into the udev database, cause the kernel renames the
device and the sysfs name disappears.
I like it, cause it plugs in nicely. We have all the naming features
and sysfs queries and walks inside of udev. The sysfs timing races
are already solved and the management tools are working for net devices
too. nameif can only match the MAC address now. udev can match any sysfs
value of the device tree the net device is connected to.
But right, net devices do not have device nodes :)
2004-03-25 10:19:39 +03:00
devpath = > "/class/i2c-dev/i2c-fake2" ,
2004-03-13 05:00:39 +03:00
exp_name = > "node" ,
exp_majorminor = > "4094:89999" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-03-13 07:46:31 +03:00
KERNEL == "i2c-fake2" , NAME = "node"
2004-10-30 15:29:52 +04:00
EOF
} ,
{
desc = > "multiple symlinks with format char" ,
subsys = > "tty" ,
devpath = > "/class/tty/ttyUSB0" ,
exp_name = > "symlink2-ttyUSB0" ,
exp_target = > "ttyUSB0" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-01-16 08:12:49 +03:00
KERNEL == "ttyUSB[0-9]*" , NAME = "ttyUSB%n" , SYMLINK = "symlink1-%n symlink2-%k symlink3-%b"
2005-07-08 01:43:13 +04:00
EOF
} ,
{
desc = > "multiple symlinks with a lot of s p a c e s" ,
subsys = > "tty" ,
devpath = > "/class/tty/ttyUSB0" ,
exp_name = > "one" ,
not_exp_name = > " " ,
exp_target = > "ttyUSB0" ,
rules = > << EOF
KERNEL == "ttyUSB[0-9]*" , NAME = "ttyUSB%n" , SYMLINK = " one two "
2004-04-16 10:14:49 +04:00
EOF
} ,
{
desc = > "symlink creation (same directory)" ,
subsys = > "tty" ,
devpath = > "/class/tty/ttyUSB0" ,
exp_name = > "visor0" ,
exp_target = > "ttyUSB0" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-03-13 07:46:31 +03:00
KERNEL == "ttyUSB[0-9]*" , NAME = "ttyUSB%n" , SYMLINK = "visor%n"
2004-04-16 10:14:49 +04:00
EOF
} ,
{
desc = > "symlink creation (relative link forward)" ,
subsys = > "block" ,
devpath = > "/block/sda/sda2" ,
exp_name = > "1/2/symlink" ,
exp_target = > "a/b/node" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , ATTRS { vendor } == "IBM-ESXS" , NAME = "1/2/a/b/node" , SYMLINK = "1/2/symlink"
2004-04-16 10:14:49 +04:00
EOF
} ,
{
desc = > "symlink creation (relative link back and forward)" ,
subsys = > "block" ,
devpath = > "/block/sda/sda2" ,
exp_name = > "1/2/c/d/symlink" ,
exp_target = > "../../a/b/node" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , ATTRS { vendor } == "IBM-ESXS" , NAME = "1/2/a/b/node" , SYMLINK = "1/2/c/d/symlink"
2004-04-16 10:14:49 +04:00
EOF
} ,
{
desc = > "multiple symlinks" ,
subsys = > "tty" ,
devpath = > "/class/tty/ttyUSB0" ,
exp_name = > "second-0" ,
exp_target = > "visor" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-03-13 07:46:31 +03:00
KERNEL == "ttyUSB0" , NAME = "visor" , SYMLINK = "first-%n second-%n third-%n"
2004-04-16 10:14:49 +04:00
EOF
} ,
{
desc = > "symlink only rule" ,
subsys = > "block" ,
devpath = > "/block/sda" ,
exp_name = > "symlink-only2" ,
exp_target = > "link" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNEL == "sda" , SYMLINK += "symlink-only1"
SUBSYSTEMS == "scsi" , KERNEL == "sda" , SYMLINK += "symlink-only2"
SUBSYSTEMS == "scsi" , KERNEL == "sda" , NAME = "link" , SYMLINK += "symlink0"
2004-04-16 10:14:49 +04:00
EOF
} ,
{
desc = > "symlink name '.'" ,
subsys = > "block" ,
devpath = > "/block/sda" ,
exp_name = > "." ,
exp_target = > "link" ,
2005-02-18 05:30:03 +03:00
exp_add_error = > "yes" ,
exp_rem_error = > "yes" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNEL == "sda" , NAME = "link" , SYMLINK += "."
2004-04-16 10:14:49 +04:00
EOF
} ,
{
desc = > "symlink node to itself" ,
subsys = > "tty" ,
devpath = > "/class/tty/tty0" ,
exp_name = > "link" ,
exp_target = > "link" ,
2006-06-14 18:32:52 +04:00
exp_add_error = > "yes" ,
2005-02-18 05:30:03 +03:00
exp_rem_error = > "yes" ,
2005-03-28 14:20:05 +04:00
option = > "clean" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-06-05 07:13:33 +04:00
KERNEL == "tty0" , NAME = "link" , SYMLINK += "link"
2004-04-16 10:14:49 +04:00
EOF
} ,
{
desc = > "symlink %n substitution" ,
subsys = > "tty" ,
devpath = > "/class/tty/ttyUSB0" ,
exp_name = > "symlink0" ,
exp_target = > "ttyUSB0" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-06-05 07:13:33 +04:00
KERNEL == "ttyUSB[0-9]*" , NAME = "ttyUSB%n" , SYMLINK += "symlink%n"
2004-04-16 10:14:49 +04:00
EOF
} ,
{
desc = > "symlink %k substitution" ,
subsys = > "tty" ,
devpath = > "/class/tty/ttyUSB0" ,
exp_name = > "symlink-ttyUSB0" ,
exp_target = > "ttyUSB0" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-06-05 07:13:33 +04:00
KERNEL == "ttyUSB[0-9]*" , NAME = "ttyUSB%n" , SYMLINK += "symlink-%k"
2004-04-16 10:14:49 +04:00
EOF
} ,
{
desc = > "symlink %M:%m substitution" ,
subsys = > "tty" ,
devpath = > "/class/tty/ttyUSB0" ,
exp_name = > "major-188:0" ,
exp_target = > "ttyUSB0" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-06-05 07:13:33 +04:00
KERNEL == "ttyUSB[0-9]*" , NAME = "ttyUSB%n" , SYMLINK += "major-%M:%m"
2004-04-16 10:14:49 +04:00
EOF
} ,
{
2006-01-16 08:12:49 +03:00
desc = > "symlink %b substitution" ,
2004-04-16 10:14:49 +04:00
subsys = > "block" ,
devpath = > "/block/sda" ,
2006-01-16 08:12:49 +03:00
exp_name = > "symlink-0:0:0:0" ,
2004-04-16 10:14:49 +04:00
exp_target = > "node" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNEL == "sda" , NAME = "node" , SYMLINK += "symlink-%b"
2004-04-16 10:14:49 +04:00
EOF
} ,
{
desc = > "symlink %c substitution" ,
subsys = > "tty" ,
devpath = > "/class/tty/ttyUSB0" ,
exp_name = > "test" ,
exp_target = > "ttyUSB0" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-06-05 07:13:33 +04:00
KERNEL == "ttyUSB[0-9]*" , PROGRAM == "/bin/echo test" NAME = "ttyUSB%n" , SYMLINK += "%c"
2004-04-16 10:14:49 +04:00
EOF
} ,
{
desc = > "symlink %c{N} substitution" ,
subsys = > "tty" ,
devpath = > "/class/tty/ttyUSB0" ,
exp_name = > "test" ,
exp_target = > "ttyUSB0" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-06-05 07:13:33 +04:00
KERNEL == "ttyUSB[0-9]*" , PROGRAM == "/bin/echo symlink test this" NAME = "ttyUSB%n" , SYMLINK += "%c{2}"
2004-04-16 10:14:49 +04:00
EOF
} ,
{
desc = > "symlink %c{N+} substitution" ,
subsys = > "tty" ,
devpath = > "/class/tty/ttyUSB0" ,
exp_name = > "this" ,
exp_target = > "ttyUSB0" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-06-05 07:13:33 +04:00
KERNEL == "ttyUSB[0-9]*" , PROGRAM == "/bin/echo symlink test this" NAME = "ttyUSB%n" , SYMLINK += "%c{2+}"
2004-04-16 10:14:49 +04:00
EOF
} ,
{
desc = > "symlink only rule with %c{N+}" ,
subsys = > "block" ,
devpath = > "/block/sda" ,
exp_name = > "test" ,
exp_target = > "link" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNEL == "sda" , PROGRAM == "/bin/echo link test this" SYMLINK += "%c{2+}"
SUBSYSTEMS == "scsi" , KERNEL == "sda" , NAME = "link" , SYMLINK += "symlink0"
2004-04-16 10:14:49 +04:00
EOF
} ,
{
desc = > "symlink %s{filename} substitution" ,
subsys = > "tty" ,
devpath = > "/class/tty/ttyUSB0" ,
exp_name = > "188:0" ,
exp_target = > "ttyUSB0" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-06-05 07:13:33 +04:00
KERNEL == "ttyUSB[0-9]*" , NAME = "ttyUSB%n" , SYMLINK += "%s{dev}"
2004-04-16 10:14:49 +04:00
EOF
} ,
{
desc = > "symlink %Ns{filename} substitution" ,
subsys = > "tty" ,
devpath = > "/class/tty/ttyUSB0" ,
exp_name = > "188" ,
exp_target = > "ttyUSB0" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-06-05 07:13:33 +04:00
KERNEL == "ttyUSB[0-9]*" , NAME = "ttyUSB%n" , SYMLINK += "%3s{dev}"
2004-04-16 10:14:49 +04:00
EOF
} ,
{
desc = > "symlink with '%' in name" ,
subsys = > "tty" ,
devpath = > "/class/tty/ttyUSB0" ,
exp_name = > "percent%sign" ,
exp_target = > "ttyUSB0" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-06-05 07:13:33 +04:00
KERNEL == "ttyUSB[0-9]*" , NAME = "ttyUSB%n" , SYMLINK += "percent%%sign"
2004-04-16 10:14:49 +04:00
EOF
} ,
{
desc = > "symlink with '%' in name" ,
subsys = > "tty" ,
devpath = > "/class/tty/ttyUSB0" ,
exp_name = > "%ttyUSB0_name" ,
exp_target = > "ttyUSB0" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-06-05 07:13:33 +04:00
KERNEL == "ttyUSB[0-9]*" , NAME = "ttyUSB%n" , SYMLINK += "%%%k_name"
2004-04-16 10:14:49 +04:00
EOF
} ,
{
desc = > "program result substitution (numbered part of)" ,
subsys = > "block" ,
devpath = > "/block/sda/sda3" ,
exp_name = > "link1" ,
exp_target = > "node" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , PROGRAM == "/bin/echo -n node link1 link2" , RESULT == "node *" , NAME = "%c{1}" , SYMLINK += "%c{2} %c{3}"
2004-04-16 10:14:49 +04:00
EOF
} ,
{
desc = > "program result substitution (numbered part of+)" ,
subsys = > "block" ,
devpath = > "/block/sda/sda3" ,
exp_name = > "link4" ,
exp_target = > "node" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , PROGRAM == "/bin/echo -n node link1 link2 link3 link4" , RESULT == "node *" , NAME = "%c{1}" , SYMLINK += "%c{2+}"
2005-02-14 08:03:06 +03:00
EOF
} ,
{
desc = > "ignore rule test" ,
subsys = > "block" ,
devpath = > "/block/sda" ,
2005-07-08 00:40:09 +04:00
exp_name = > "nothing" ,
not_exp_name = > "node" ,
2005-02-18 05:30:03 +03:00
exp_add_error = > "yes" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNEL == "sda" , NAME = "node" , OPTIONS = "ignore"
2005-02-14 08:03:06 +03:00
EOF
} ,
{
desc = > "all_partitions, option-only rule" ,
subsys = > "block" ,
devpath = > "/block/sda" ,
exp_name = > "node6" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-03-13 07:46:31 +03:00
SUBSYSTEM == "block" , OPTIONS = "all_partitions"
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNEL == "sda" , NAME = "node"
2005-02-14 08:03:06 +03:00
EOF
} ,
{
desc = > "all_partitions, option-only rule (fail on partition)" ,
subsys = > "block" ,
devpath = > "/block/sda/sda1" ,
exp_name = > "node6" ,
2005-02-18 05:30:03 +03:00
exp_add_error = > "yes" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-03-13 07:46:31 +03:00
SUBSYSTEM == "block" , OPTIONS = "all_partitions"
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNEL == "sda" , NAME = "node"
2004-11-12 08:52:55 +03:00
EOF
} ,
{
2004-11-13 16:43:24 +03:00
desc = > "ignore remove event test" ,
subsys = > "block" ,
devpath = > "/block/sda" ,
exp_name = > "node" ,
2005-02-18 05:30:03 +03:00
exp_rem_error = > "yes" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNEL == "sda" , NAME = "node" , OPTIONS = "ignore_remove"
2004-11-13 16:43:24 +03:00
EOF
} ,
{
desc = > "ignore remove event test (with all partitions)" ,
subsys = > "block" ,
devpath = > "/block/sda" ,
exp_name = > "node14" ,
2005-02-18 05:30:03 +03:00
exp_rem_error = > "yes" ,
2005-03-28 14:20:05 +04:00
option = > "clean" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNEL == "sda" , NAME = "node" , OPTIONS = "ignore_remove, all_partitions"
2004-11-13 16:43:24 +03:00
EOF
} ,
{
desc = > "SUBSYSTEM match test" ,
2004-11-12 08:52:55 +03:00
subsys = > "block" ,
devpath = > "/block/sda" ,
exp_name = > "node" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNEL == "sda" , NAME = "should_not_match" , SUBSYSTEM == "vc"
SUBSYSTEMS == "scsi" , KERNEL == "sda" , NAME = "node" , SUBSYSTEM == "block"
SUBSYSTEMS == "scsi" , KERNEL == "sda" , NAME = "should_not_match2" , SUBSYSTEM == "vc"
2004-11-13 07:21:12 +03:00
EOF
} ,
{
2006-08-19 18:06:25 +04:00
desc = > "DRIVERS match test" ,
2004-11-13 07:21:12 +03:00
subsys = > "block" ,
devpath = > "/block/sda" ,
exp_name = > "node" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNEL == "sda" , NAME = "should_not_match" , DRIVERS == "sd-wrong"
SUBSYSTEMS == "scsi" , KERNEL == "sda" , NAME = "node" , DRIVERS == "sd"
2005-02-09 06:37:32 +03:00
EOF
} ,
{
desc = > "temporary node creation test" ,
subsys = > "block" ,
devpath = > "/block/sda" ,
2005-02-11 05:28:17 +03:00
exp_name = > "node" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNEL == "sda" , PROGRAM == "/usr/bin/test -b %N" NAME = "node"
2005-02-09 06:37:32 +03:00
EOF
} ,
{
desc = > "devpath substitution test" ,
subsys = > "block" ,
devpath = > "/block/sda" ,
exp_name = > "sda" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNEL == "sda" , PROGRAM == "/bin/echo %p" , RESULT == "/block/sda" NAME = "%k"
2005-02-10 11:03:55 +03:00
EOF
} ,
{
desc = > "parent node name substitution test sequence 1/2 (keep)" ,
subsys = > "block" ,
devpath = > "/block/sda" ,
exp_name = > "main_device" ,
option = > "keep" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNEL == "sda" , NAME = "main_device"
2005-02-10 11:03:55 +03:00
EOF
} ,
{
desc = > "parent node name substitution test sequence 2/2 (clean)" ,
subsys = > "block" ,
devpath = > "/block/sda/sda1" ,
exp_name = > "main_device-part-1" ,
option = > "clean" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNEL == "sda1" , NAME = "%P-part-1"
2005-02-10 11:03:55 +03:00
EOF
} ,
{
desc = > "udev_root substitution" ,
subsys = > "block" ,
devpath = > "/block/sda/sda1" ,
exp_name = > "start-udev-root-end" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNEL == "sda1" , NAME = "start-%r-end"
2005-03-13 00:55:08 +03:00
EOF
} ,
{
desc = > "last_rule option" ,
subsys = > "block" ,
devpath = > "/block/sda/sda1" ,
exp_name = > "last" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNEL == "sda1" , SYMLINK += "last" , OPTIONS = "last_rule"
SUBSYSTEMS == "scsi" , KERNEL == "sda1" , NAME = "very-last"
2005-03-13 07:46:31 +03:00
EOF
} ,
{
desc = > "negation KERNEL!=" ,
subsys = > "block" ,
devpath = > "/block/sda/sda1" ,
exp_name = > "match" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNEL != "sda1" , NAME = "matches-but-is-negated"
SUBSYSTEMS == "scsi" , KERNEL != "xsda1" , NAME = "match"
SUBSYSTEMS == "scsi" , KERNEL == "sda1" , NAME = "wrong"
2005-03-13 07:46:31 +03:00
EOF
} ,
{
desc = > "negation SUBSYSTEM!=" ,
subsys = > "block" ,
devpath = > "/block/sda/sda1" ,
exp_name = > "not-anything" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , SUBSYSTEM == "block" , KERNEL != "sda1" , NAME = "matches-but-is-negated"
SUBSYSTEMS == "scsi" , SUBSYSTEM != "anything" , NAME = "not-anything"
SUBSYSTEMS == "scsi" , KERNEL == "sda1" , NAME = "wrong"
2005-03-13 07:46:31 +03:00
EOF
} ,
{
desc = > "negation PROGRAM!= exit code" ,
subsys = > "block" ,
devpath = > "/block/sda/sda1" ,
exp_name = > "nonzero-program" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-03-13 07:46:31 +03:00
KERNEL == "sda1" , PROGRAM != "/bin/false" , NAME = "nonzero-program"
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNEL == "sda1" , NAME = "wrong"
2005-03-13 09:14:49 +03:00
EOF
} ,
{
desc = > "test for whitespace between the operator" ,
subsys = > "block" ,
devpath = > "/block/sda/sda1" ,
exp_name = > "true" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2005-03-13 09:14:49 +03:00
KERNEL == "sda1" , NAME = "true"
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNEL == "sda1" , NAME = "wrong"
2005-03-13 13:40:32 +03:00
EOF
} ,
{
desc = > "ENV{} test" ,
subsys = > "block" ,
devpath = > "/block/sda/sda1" ,
exp_name = > "true" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNEL == "sda1" , ENV { ENV_KEY_TEST } == "go" , NAME = "wrong"
SUBSYSTEMS == "scsi" , KERNEL == "sda1" , ENV { ENV_KEY_TEST } == "test" , NAME = "true"
SUBSYSTEMS == "scsi" , KERNEL == "sda1" , ENV { ENV_KEY_TEST } == "bad" , NAME = "bad"
2005-03-13 13:40:32 +03:00
EOF
} ,
{
desc = > "ENV{} test" ,
subsys = > "block" ,
devpath = > "/block/sda/sda1" ,
exp_name = > "true" ,
2005-03-27 03:10:03 +04:00
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNEL == "sda1" , ENV { ENV_KEY_TEST } == "go" , NAME = "wrong"
SUBSYSTEMS == "scsi" , KERNEL == "sda1" , ENV { ENV_KEY_TEST } == "yes" , ENV { ACTION } == "add" , ENV { DEVPATH } == "/block/sda/sdax1" , NAME = "no"
SUBSYSTEMS == "scsi" , KERNEL == "sda1" , ENV { ENV_KEY_TEST } == "test" , ENV { ACTION } == "add" , ENV { DEVPATH } == "/block/sda/sda1" , NAME = "true"
SUBSYSTEMS == "scsi" , KERNEL == "sda1" , ENV { ENV_KEY_TEST } == "bad" , NAME = "bad"
2005-08-16 06:25:20 +04:00
EOF
} ,
{
desc = > "ENV{} test (assign)" ,
subsys = > "block" ,
devpath = > "/block/sda/sda1" ,
exp_name = > "true" ,
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNEL == "sda1" , ENV { ASSIGN } = "true"
SUBSYSTEMS == "scsi" , KERNEL == "sda1" , ENV { ASSIGN } == "yes" , NAME = "no"
SUBSYSTEMS == "scsi" , KERNEL == "sda1" , ENV { ASSIGN } == "true" , NAME = "true"
SUBSYSTEMS == "scsi" , KERNEL == "sda1" , NAME = "bad"
2005-08-16 06:25:20 +04:00
EOF
} ,
{
desc = > "ENV{} test (assign2)" ,
subsys = > "block" ,
devpath = > "/block/sda/sda1" ,
exp_name = > "part" ,
rules = > << EOF
2006-04-24 21:25:55 +04:00
SUBSYSTEM == "block" , KERNEL == "*[0-9]" , ENV { PARTITION } = "true" , ENV { MAINDEVICE } = "false"
SUBSYSTEM == "block" , KERNEL == "*[!0-9]" , ENV { PARTITION } = "false" , ENV { MAINDEVICE } = "true"
2005-08-16 06:25:20 +04:00
ENV { MAINDEVICE } == "true" , NAME = "disk"
ENV { PARTITION } == "true" , NAME = "part"
NAME = "bad"
2005-03-27 03:15:07 +04:00
EOF
} ,
{
desc = > "untrusted string sanitize" ,
subsys = > "block" ,
devpath = > "/block/sda/sda1" ,
exp_name = > "sane" ,
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNEL == "sda1" , PROGRAM == "/bin/echo -e name; (/sbin/badprogram)" , RESULT == "name_ _/sbin/badprogram_" , NAME = "sane"
2005-08-28 17:55:58 +04:00
EOF
} ,
{
desc = > "untrusted string sanitize (don't replace utf8)" ,
subsys = > "block" ,
devpath = > "/block/sda/sda1" ,
exp_name = > "uber" ,
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNEL == "sda1" , PROGRAM == "/bin/echo -e \\xc3\\xbcber" RESULT == "\xc3\xbcber" , NAME = "uber"
2005-08-28 17:55:58 +04:00
EOF
} ,
{
desc = > "untrusted string sanitize (replace invalid utf8)" ,
subsys = > "block" ,
devpath = > "/block/sda/sda1" ,
exp_name = > "replaced" ,
rules = > << EOF
2006-08-20 21:11:32 +04:00
SUBSYSTEMS == "scsi" , KERNEL == "sda1" , PROGRAM == "/bin/echo -e \\xef\\xe8garbage" , RESULT == "__garbage" , NAME = "replaced"
2005-03-28 13:22:17 +04:00
EOF
} ,
{
desc = > "read sysfs value from device down in the chain" ,
subsys = > "block" ,
devpath = > "/class/tty/ttyUSB0" ,
exp_name = > "serial-0000:00:09.0" ,
rules = > << EOF
KERNEL == "ttyUSB*" , NAME = "serial-%s{serial}"
2005-03-28 14:20:05 +04:00
EOF
} ,
{
desc = > "match against empty key string" ,
subsys = > "block" ,
devpath = > "/block/sda" ,
exp_name = > "ok" ,
rules = > << EOF
2006-08-20 21:11:32 +04:00
KERNEL == "sda" , ATTRS { nothing } != "" , NAME = "not-1-ok"
KERNEL == "sda" , ATTRS { nothing } == "" , NAME = "not-2-ok"
KERNEL == "sda" , ATTRS { vendor } != "" , NAME = "ok"
KERNEL == "sda" , ATTRS { vendor } == "" , NAME = "not-3-ok"
2005-04-02 19:45:35 +04:00
EOF
} ,
{
desc = > "check ACTION value" ,
subsys = > "block" ,
devpath = > "/block/sda" ,
exp_name = > "ok" ,
rules = > << EOF
ACTION == "unknown" , KERNEL == "sda" , NAME = "unknown-not-ok"
ACTION == "add" , KERNEL == "sda" , NAME = "ok"
EOF
} ,
{
desc = > "apply NAME only once" ,
subsys = > "block" ,
devpath = > "/block/sda" ,
exp_name = > "link" ,
exp_target = > "ok" ,
rules = > << EOF
KERNEL == "sda" , NAME = "ok"
KERNEL == "sda" , NAME = "not-ok"
KERNEL == "sda" , SYMLINK += "link"
EOF
} ,
{
desc = > "test RUN key" ,
subsys = > "block" ,
devpath = > "/block/sda" ,
exp_name = > "testsymlink" ,
exp_target = > "ok" ,
exp_rem_error = > "yes" ,
option = > "clean" ,
rules = > << EOF
KERNEL == "sda" , NAME = "ok" , RUN += "/bin/ln -s ok %r/testsymlink"
KERNEL == "sda" , NAME = "not-ok"
2005-04-04 17:20:48 +04:00
EOF
} ,
{
desc = > "test RUN key and DEVNAME" ,
subsys = > "block" ,
devpath = > "/block/sda" ,
exp_name = > "testsymlink" ,
exp_target = > "ok" ,
exp_rem_error = > "yes" ,
option = > "clean" ,
rules = > << EOF
2005-06-20 02:29:38 +04:00
KERNEL == "sda" , NAME = "ok" , RUN += "/bin/sh -c 'ln -s `basename \$\$DEVNAME` %r/testsymlink'"
2005-04-04 17:20:48 +04:00
KERNEL == "sda" , NAME = "not-ok"
2005-04-02 19:45:35 +04:00
EOF
} ,
{
desc = > "test RUN key remove" ,
subsys = > "block" ,
devpath = > "/block/sda" ,
exp_name = > "testsymlink2" ,
exp_target = > "ok2" ,
rules = > << EOF
KERNEL == "sda" , NAME = "ok2" , RUN += "/bin/ln -s ok2 %r/testsymlink2"
KERNEL == "sda" , ACTION == "remove" , RUN += "/bin/rm -f %r/testsymlink2"
KERNEL == "sda" , NAME = "not-ok2"
2005-06-05 06:57:03 +04:00
EOF
} ,
{
desc = > "final assignment" ,
subsys = > "block" ,
devpath = > "/block/sda" ,
exp_name = > "ok" ,
exp_perms = > "root:nobody:0640" ,
rules = > << EOF
KERNEL == "sda" , GROUP: = "nobody"
KERNEL == "sda" , GROUP = "not-ok" , MODE = "0640" , NAME = "ok"
EOF
} ,
{
desc = > "final assignment" ,
subsys = > "block" ,
devpath = > "/block/sda" ,
exp_name = > "ok" ,
exp_perms = > "root:nobody:0640" ,
rules = > << EOF
KERNEL == "sda" , GROUP: = "nobody"
SUBSYSTEM == "block" , MODE: = "640"
KERNEL == "sda" , GROUP = "not-ok" , MODE = "0666" , NAME = "ok"
2005-06-25 15:10:16 +04:00
EOF
} ,
{
desc = > "env substitution" ,
subsys = > "block" ,
devpath = > "/block/sda" ,
exp_name = > "node-add-me" ,
rules = > << EOF
KERNEL == "sda" , MODE = "0666" , NAME = "node-\$env{ACTION}-me"
2005-06-05 07:13:33 +04:00
EOF
} ,
{
desc = > "reset list to current value" ,
subsys = > "tty" ,
devpath = > "/class/tty/ttyUSB0" ,
exp_name = > "three" ,
not_exp_name = > "two" ,
exp_target = > "node" ,
rules = > << EOF
KERNEL == "ttyUSB[0-9]*" , SYMLINK += "one"
KERNEL == "ttyUSB[0-9]*" , SYMLINK += "two"
KERNEL == "ttyUSB[0-9]*" , SYMLINK = "three"
KERNEL == "ttyUSB[0-9]*" , NAME = "node"
2005-07-08 00:40:09 +04:00
EOF
} ,
{
desc = > "test empty NAME" ,
subsys = > "tty" ,
devpath = > "/class/tty/ttyUSB0" ,
exp_name = > "node" ,
not_exp_name = > "wrong" ,
exp_add_error = > "yes" ,
rules = > << EOF
KERNEL == "ttyUSB[0-9]*" , NAME = ""
KERNEL == "ttyUSB[0-9]*" , NAME = "wrong"
EOF
} ,
{
desc = > "test empty NAME 2" ,
subsys = > "tty" ,
devpath = > "/class/tty/ttyUSB0" ,
exp_name = > "right" ,
rules = > << EOF
KERNEL == "ttyUSB[0-9]*" , NAME = "right"
KERNEL == "ttyUSB[0-9]*" , NAME = ""
KERNEL == "ttyUSB[0-9]*" , NAME = "wrong"
2005-07-12 14:52:56 +04:00
EOF
} ,
{
desc = > "test multi matches" ,
subsys = > "tty" ,
devpath = > "/class/tty/ttyUSB0" ,
exp_name = > "right" ,
rules = > << EOF
KERNEL == "ttyUSB*|nothing" , NAME = "right"
KERNEL == "ttyUSB*" , NAME = "wrong"
EOF
} ,
{
desc = > "test multi matches 2" ,
subsys = > "tty" ,
devpath = > "/class/tty/ttyUSB0" ,
exp_name = > "right" ,
rules = > << EOF
KERNEL == "dontknow*|*nothing" , NAME = "nomatch"
KERNEL == "dontknow*|ttyUSB*|nothing*" , NAME = "right"
KERNEL == "ttyUSB*" , NAME = "wrong"
2005-07-12 16:46:36 +04:00
EOF
} ,
{
desc = > "IMPORT parent test sequence 1/2 (keep)" ,
subsys = > "block" ,
devpath = > "/block/sda" ,
exp_name = > "parent" ,
option = > "keep" ,
rules = > << EOF
KERNEL == "sda" , IMPORT = "/bin/echo -e \'PARENT_KEY=parent_right\\nWRONG_PARENT_KEY=parent_wrong'"
KERNEL == "sda" , NAME = "parent"
EOF
} ,
{
desc = > "IMPORT parent test sequence 2/2 (keep)" ,
subsys = > "block" ,
devpath = > "/block/sda/sda1" ,
exp_name = > "parentenv-parent_right" ,
option = > "clean" ,
rules = > << EOF
KERNEL == "sda1" , IMPORT { parent } = "PARENT*" , NAME = "parentenv-\$env{PARENT_KEY}\$env{WRONG_PARENT_KEY}"
2005-07-16 09:46:31 +04:00
EOF
} ,
{
desc = > "GOTO test" ,
subsys = > "block" ,
devpath = > "/block/sda/sda1" ,
exp_name = > "right" ,
rules = > << EOF
KERNEL == "sda1" , GOTO = "TEST"
KERNEL == "sda1" , NAME = "wrong"
KERNEL == "sda1" , NAME = "" , LABEL = "NO"
KERNEL == "sda1" , NAME = "right" , LABEL = "TEST"
KERNEL == "sda1" , NAME = "wrong2"
2006-04-24 21:25:55 +04:00
EOF
} ,
{
desc = > "NAME compare test" ,
subsys = > "block" ,
devpath = > "/block/sda/sda1" ,
exp_name = > "link" ,
exp_target = > "node" ,
not_exp_name = > "wronglink" ,
rules = > << EOF
KERNEL == "sda1" , NAME = "node"
KERNEL == "sda2" , NAME = "wrong"
KERNEL == "sda1" , NAME == "wrong*" , SYMLINK += "wronglink"
KERNEL == "sda1" , NAME == "?*" , SYMLINK += "link"
KERNEL == "sda1" , NAME == "node*" , SYMLINK += "link2"
EOF
} ,
{
desc = > "NAME compare test 2" ,
subsys = > "block" ,
devpath = > "/block/sda/sda1" ,
exp_name = > "link2" ,
exp_target = > "sda1" ,
not_exp_name = > "link" ,
rules = > << EOF
KERNEL == "sda1" , NAME == "?*" , SYMLINK += "link"
KERNEL == "sda1" , NAME != "?*" , SYMLINK += "link2"
EOF
} ,
{
desc = > "invalid key operation" ,
subsys = > "block" ,
devpath = > "/block/sda/sda1" ,
exp_name = > "yes" ,
rules = > << EOF
KERNEL = "sda1" , NAME == "no"
KERNEL == "sda1" , NAME = "yes"
2006-08-13 06:23:16 +04:00
EOF
} ,
{
desc = > "overlong comment line" ,
subsys = > "block" ,
devpath = > "/block/sda/sda1" ,
exp_name = > "yes" ,
rules = > << EOF
# 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
# 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
KERNEL = "sda1" , NAME == "no"
KERNEL == "sda1" , NAME = "yes"
2003-11-23 16:47:28 +03:00
EOF
} ,
) ;
# set env
2005-03-27 03:10:03 +04:00
$ ENV { ENV_KEY_TEST } = "test" ;
2003-11-23 16:47:28 +03:00
$ ENV { SYSFS_PATH } = $ sysfs ;
2005-03-27 03:10:03 +04:00
$ ENV { UDEV_CONFIG_FILE } = $ udev_conf ;
2003-11-23 16:47:28 +03:00
sub udev {
2005-03-27 03:10:03 +04:00
my ( $ action , $ subsys , $ devpath , $ rules ) = @ _ ;
2003-11-23 16:47:28 +03:00
$ ENV { DEVPATH } = $ devpath ;
2005-03-27 03:10:03 +04:00
# create temporary rules
open CONF , ">$udev_rules" || die "unable to create rules file: $udev_rules" ;
print CONF $$ rules ;
2003-11-23 16:47:28 +03:00
close CONF ;
$ ENV { ACTION } = $ action ;
system ( "$udev_bin $subsys" ) ;
}
2003-11-24 08:17:34 +03:00
my $ error = 0 ;
2003-12-03 19:13:53 +03:00
2004-04-16 10:14:49 +04:00
sub permissions_test {
2005-03-27 03:10:03 +04:00
my ( $ rules , $ uid , $ gid , $ mode ) = @ _ ;
2004-04-16 10:14:49 +04:00
my $ wrong = 0 ;
2005-03-19 01:52:41 +03:00
my $ userid ;
my $ groupid ;
2005-03-27 03:10:03 +04:00
$ rules - > { exp_perms } =~ m/^(.*):(.*):(.*)$/ ;
2004-04-16 10:14:49 +04:00
if ( $ 1 ne "" ) {
2005-03-19 01:52:41 +03:00
if ( defined ( getpwnam ( $ 1 ) ) ) {
$ userid = int ( getpwnam ( $ 1 ) ) ;
} else {
$ userid = $ 1 ;
}
if ( $ uid != $ userid ) { $ wrong = 1 ; }
2004-04-16 10:14:49 +04:00
}
if ( $ 2 ne "" ) {
2005-03-19 01:52:41 +03:00
if ( defined ( getgrnam ( $ 2 ) ) ) {
$ groupid = int ( getgrnam ( $ 2 ) ) ;
} else {
$ groupid = $ 2 ;
}
if ( $ gid != $ groupid ) { $ wrong = 1 ; }
2004-04-16 10:14:49 +04:00
}
if ( $ 3 ne "" ) {
if ( ( $ mode & 07777 ) != oct ( $ 3 ) ) { $ wrong = 1 ; } ;
}
if ( $ wrong == 0 ) {
2005-03-19 01:52:41 +03:00
print "permissions: ok\n" ;
2004-04-16 10:14:49 +04:00
} else {
2005-03-19 01:52:41 +03:00
printf " expected permissions are: %s:%s:%#o\n" , $ 1 , $ 2 , oct ( $ 3 ) ;
printf " created permissions are : %i:%i:%#o\n" , $ uid , $ gid , $ mode & 07777 ;
print "permissions: error\n" ;
2004-04-16 10:14:49 +04:00
$ error + + ;
}
}
sub major_minor_test {
2005-03-27 03:10:03 +04:00
my ( $ rules , $ rdev ) = @ _ ;
2004-04-16 10:14:49 +04:00
my $ major = ( $ rdev >> 8 ) & 0xfff ;
my $ minor = ( $ rdev & 0xff ) | ( ( $ rdev >> 12 ) & 0xfff00 ) ;
my $ wrong = 0 ;
2005-03-27 03:10:03 +04:00
$ rules - > { exp_majorminor } =~ m/^(.*):(.*)$/ ;
2004-04-16 10:14:49 +04:00
if ( $ 1 ne "" ) {
if ( $ major != $ 1 ) { $ wrong = 1 ; } ;
}
if ( $ 2 ne "" ) {
if ( $ minor != $ 2 ) { $ wrong = 1 ; } ;
}
if ( $ wrong == 0 ) {
2005-03-19 01:52:41 +03:00
print "major:minor: ok\n" ;
2004-04-16 10:14:49 +04:00
} else {
2005-03-19 01:52:41 +03:00
printf " expected major:minor is: %i:%i\n" , $ 1 , $ 2 ;
printf " created major:minor is : %i:%i\n" , $ major , $ minor ;
print "major:minor: error\n" ;
2004-04-16 10:14:49 +04:00
$ error + + ;
}
}
sub symlink_test {
2005-03-27 03:10:03 +04:00
my ( $ rules ) = @ _ ;
2004-04-16 10:14:49 +04:00
2005-03-27 03:10:03 +04:00
my $ output = `ls -l $PWD/$udev_root$rules->{exp_name}` ;
2004-04-16 10:14:49 +04:00
if ( $ output =~ m/(.*)-> (.*)/ ) {
2005-03-27 03:10:03 +04:00
if ( $ 2 eq $ rules - > { exp_target } ) {
2005-03-19 01:52:41 +03:00
print "symlink: ok\n" ;
2004-04-16 10:14:49 +04:00
} else {
2005-03-27 03:10:03 +04:00
print " expected symlink from: \'$rules->{exp_name}\' to \'$rules->{exp_target}\'\n" ;
print " created symlink from: \'$rules->{exp_name}\' to \'$2\'\n" ;
2005-03-19 01:52:41 +03:00
print "symlink: error" ;
2005-03-27 03:10:03 +04:00
if ( $ rules - > { exp_add_error } ) {
2005-03-19 01:52:41 +03:00
print " as expected\n" ;
2004-04-16 10:14:49 +04:00
} else {
2005-03-19 01:52:41 +03:00
print "\n" ;
2004-04-16 10:14:49 +04:00
$ error + + ;
}
}
} else {
2005-03-27 03:10:03 +04:00
print " expected symlink from: \'$rules->{exp_name}\' to \'$rules->{exp_target}\'\n" ;
2005-03-19 01:52:41 +03:00
print "symlink: not created" ;
2005-03-27 03:10:03 +04:00
if ( $ rules - > { exp_add_error } ) {
2005-03-19 01:52:41 +03:00
print " as expected\n" ;
2004-04-16 10:14:49 +04:00
} else {
2005-03-19 01:52:41 +03:00
print "\n" ;
2004-04-16 10:14:49 +04:00
$ error + + ;
}
}
}
2004-02-12 11:49:52 +03:00
sub run_test {
2005-03-27 03:10:03 +04:00
my ( $ rules , $ number ) = @ _ ;
2004-03-13 04:13:59 +03:00
2005-03-27 03:10:03 +04:00
print "TEST $number: $rules->{desc}\n" ;
2004-04-16 10:14:49 +04:00
2005-03-27 03:10:03 +04:00
if ( $ rules - > { exp_target } ) {
print "device \'$rules->{devpath}\' expecting symlink '$rules->{exp_name}' to node \'$rules->{exp_target}\'\n" ;
2004-04-16 10:14:49 +04:00
} else {
2005-03-27 03:10:03 +04:00
print "device \'$rules->{devpath}\' expecting node \'$rules->{exp_name}\'\n" ;
2004-04-16 10:14:49 +04:00
}
2003-11-23 16:47:28 +03:00
2005-03-27 03:10:03 +04:00
udev ( "add" , $ rules - > { subsys } , $ rules - > { devpath } , \ $ rules - > { rules } ) ;
if ( ( - e "$PWD/$udev_root$rules->{exp_name}" ) ||
( - l "$PWD/$udev_root$rules->{exp_name}" ) ) {
2004-03-13 04:13:59 +03:00
my ( $ dev , $ ino , $ mode , $ nlink , $ uid , $ gid , $ rdev , $ size ,
2005-03-27 03:10:03 +04:00
$ atime , $ mtime , $ ctime , $ blksize , $ blocks ) = stat ( "$PWD/$udev_root$rules->{exp_name}" ) ;
2004-03-13 04:13:59 +03:00
2005-06-05 07:13:33 +04:00
if ( defined ( $ rules - > { not_exp_name } ) ) {
if ( ( - e "$PWD/$udev_root$rules->{not_exp_name}" ) ||
( - l "$PWD/$udev_root$rules->{not_exp_name}" ) ) {
print "nonexistent: error \'$rules->{not_exp_name}\' not expected to be there\n" ;
$ error + +
}
}
2005-03-27 03:10:03 +04:00
if ( defined ( $ rules - > { exp_perms } ) ) {
permissions_test ( $ rules , $ uid , $ gid , $ mode ) ;
2004-03-12 11:58:33 +03:00
}
2005-03-27 03:10:03 +04:00
if ( defined ( $ rules - > { exp_majorminor } ) ) {
major_minor_test ( $ rules , $ rdev ) ;
2004-04-16 10:14:49 +04:00
}
2005-03-27 03:10:03 +04:00
if ( defined ( $ rules - > { exp_target } ) ) {
symlink_test ( $ rules ) ;
2004-03-13 04:13:59 +03:00
}
2005-03-19 01:52:41 +03:00
print "add: ok\n" ;
2003-11-23 16:47:28 +03:00
} else {
2005-03-19 01:52:41 +03:00
print "add: error" ;
2005-03-27 03:10:03 +04:00
if ( $ rules - > { exp_add_error } ) {
2005-03-19 01:52:41 +03:00
print " as expected\n" ;
2004-04-16 10:14:49 +04:00
} else {
2005-03-19 01:52:41 +03:00
print "\n" ;
2004-04-16 10:14:49 +04:00
system ( "tree $udev_root" ) ;
print "\n" ;
$ error + + ;
}
2003-11-23 16:47:28 +03:00
}
2005-03-27 03:10:03 +04:00
if ( defined ( $ rules - > { option } ) && $ rules - > { option } eq "keep" ) {
[PATCH] add enum tests
On Fri, Sep 10, 2004 at 01:09:07PM -0700, Greg KH wrote:
> On Tue, Sep 07, 2004 at 01:19:34PM +0200, David Zeuthen wrote:
> >
> > KERNEL="sr*", NAME="%k", SYMLINK="cdrom%e"
> > KERNEL="scd*", NAME="%k", SYMLINK="cdrom%e"
> > KERNEL="pcd*", NAME="%k", SYMLINK="cdrom%e"
> > KERNEL="hd[a-z]", PROGRAM="/bin/cat /proc/ide/%k/media", RESULT="cdrom", NAME="\%k", SYMLINK="cdrom%e"
> > KERNEL="fd[0-9]", NAME="%k", SYMLINK="floppy%e"
> > KERNEL="hd[a-z]", PROGRAM="/bin/cat /proc/ide/%k/media", RESULT="floppy", NAME=\"%k", SYMLINK="floppy%e"
> >
> > New patch is attached.
>
> Nice, I've applied this.
>
> How about sending a patch for the test/udev-test.pl script that adds a
> test for this new paramater, so we make sure to not break it in the
> future.
Here are the tests for the enumeration character %e. I've added a option
string to be able to do a whole sequence of tests without node removal,
so we can skip the "remove" event and get an increasing number to append
to the name. After the sequence test the whole directory is cleaned for
the next tests.
2004-09-15 08:44:55 +04:00
print "\n\n" ;
return ;
}
2005-03-27 03:10:03 +04:00
udev ( "remove" , $ rules - > { subsys } , $ rules - > { devpath } , \ $ rules - > { rules } ) ;
if ( ( - e "$PWD/$udev_root$rules->{exp_name}" ) ||
( - l "$PWD/$udev_root$rules->{exp_name}" ) ) {
2005-03-19 01:52:41 +03:00
print "remove: error" ;
2005-03-27 03:10:03 +04:00
if ( $ rules - > { exp_rem_error } ) {
2005-03-19 01:52:41 +03:00
print " as expected\n" ;
2004-04-16 10:14:49 +04:00
} else {
2005-03-19 01:52:41 +03:00
print "\n" ;
2004-04-16 10:14:49 +04:00
system ( "tree $udev_root" ) ;
print "\n" ;
$ error + + ;
}
2003-11-23 16:47:28 +03:00
} else {
2005-03-19 01:52:41 +03:00
print "remove: ok\n" ;
2003-11-23 16:47:28 +03:00
}
[PATCH] add enum tests
On Fri, Sep 10, 2004 at 01:09:07PM -0700, Greg KH wrote:
> On Tue, Sep 07, 2004 at 01:19:34PM +0200, David Zeuthen wrote:
> >
> > KERNEL="sr*", NAME="%k", SYMLINK="cdrom%e"
> > KERNEL="scd*", NAME="%k", SYMLINK="cdrom%e"
> > KERNEL="pcd*", NAME="%k", SYMLINK="cdrom%e"
> > KERNEL="hd[a-z]", PROGRAM="/bin/cat /proc/ide/%k/media", RESULT="cdrom", NAME="\%k", SYMLINK="cdrom%e"
> > KERNEL="fd[0-9]", NAME="%k", SYMLINK="floppy%e"
> > KERNEL="hd[a-z]", PROGRAM="/bin/cat /proc/ide/%k/media", RESULT="floppy", NAME=\"%k", SYMLINK="floppy%e"
> >
> > New patch is attached.
>
> Nice, I've applied this.
>
> How about sending a patch for the test/udev-test.pl script that adds a
> test for this new paramater, so we make sure to not break it in the
> future.
Here are the tests for the enumeration character %e. I've added a option
string to be able to do a whole sequence of tests without node removal,
so we can skip the "remove" event and get an increasing number to append
to the name. After the sequence test the whole directory is cleaned for
the next tests.
2004-09-15 08:44:55 +04:00
2005-03-19 01:52:41 +03:00
print "\n" ;
2005-03-28 14:20:05 +04:00
if ( defined ( $ rules - > { option } ) && $ rules - > { option } eq "clean" ) {
[PATCH] add enum tests
On Fri, Sep 10, 2004 at 01:09:07PM -0700, Greg KH wrote:
> On Tue, Sep 07, 2004 at 01:19:34PM +0200, David Zeuthen wrote:
> >
> > KERNEL="sr*", NAME="%k", SYMLINK="cdrom%e"
> > KERNEL="scd*", NAME="%k", SYMLINK="cdrom%e"
> > KERNEL="pcd*", NAME="%k", SYMLINK="cdrom%e"
> > KERNEL="hd[a-z]", PROGRAM="/bin/cat /proc/ide/%k/media", RESULT="cdrom", NAME="\%k", SYMLINK="cdrom%e"
> > KERNEL="fd[0-9]", NAME="%k", SYMLINK="floppy%e"
> > KERNEL="hd[a-z]", PROGRAM="/bin/cat /proc/ide/%k/media", RESULT="floppy", NAME=\"%k", SYMLINK="floppy%e"
> >
> > New patch is attached.
>
> Nice, I've applied this.
>
> How about sending a patch for the test/udev-test.pl script that adds a
> test for this new paramater, so we make sure to not break it in the
> future.
Here are the tests for the enumeration character %e. I've added a option
string to be able to do a whole sequence of tests without node removal,
so we can skip the "remove" event and get an increasing number to append
to the name. After the sequence test the whole directory is cleaned for
the next tests.
2004-09-15 08:44:55 +04:00
system ( "rm -rf $udev_root" ) ;
mkdir ( $ udev_root ) || die "unable to create udev_root: $udev_root\n" ;
}
2003-11-23 16:47:28 +03:00
}
2004-11-11 05:11:00 +03:00
# only run if we have root permissions
# due to mknod restrictions
if ( ! ( $< == 0 ) ) {
print "Must have root permissions to run properly.\n" ;
exit ;
}
2004-02-12 11:49:52 +03:00
# prepare
system ( "rm -rf $udev_root" ) ;
mkdir ( $ udev_root ) || die "unable to create udev_root: $udev_root\n" ;
2005-03-27 03:10:03 +04:00
# create config file
open CONF , ">$udev_conf" || die "unable to create config file: $udev_conf" ;
2004-02-12 11:49:52 +03:00
print CONF "udev_root=\"$udev_root\"\n" ;
2005-03-27 03:10:03 +04:00
print CONF "udev_rules=\"$udev_rules\"\n" ;
2005-11-10 03:50:06 +03:00
print CONF "udev_log=\"info\"\n" ;
2004-02-12 11:49:52 +03:00
close CONF ;
my $ test_num = 1 ;
if ( $ ARGV [ 0 ] ) {
# only run one test
$ test_num = $ ARGV [ 0 ] ;
[PATCH] add enum tests
On Fri, Sep 10, 2004 at 01:09:07PM -0700, Greg KH wrote:
> On Tue, Sep 07, 2004 at 01:19:34PM +0200, David Zeuthen wrote:
> >
> > KERNEL="sr*", NAME="%k", SYMLINK="cdrom%e"
> > KERNEL="scd*", NAME="%k", SYMLINK="cdrom%e"
> > KERNEL="pcd*", NAME="%k", SYMLINK="cdrom%e"
> > KERNEL="hd[a-z]", PROGRAM="/bin/cat /proc/ide/%k/media", RESULT="cdrom", NAME="\%k", SYMLINK="cdrom%e"
> > KERNEL="fd[0-9]", NAME="%k", SYMLINK="floppy%e"
> > KERNEL="hd[a-z]", PROGRAM="/bin/cat /proc/ide/%k/media", RESULT="floppy", NAME=\"%k", SYMLINK="floppy%e"
> >
> > New patch is attached.
>
> Nice, I've applied this.
>
> How about sending a patch for the test/udev-test.pl script that adds a
> test for this new paramater, so we make sure to not break it in the
> future.
Here are the tests for the enumeration character %e. I've added a option
string to be able to do a whole sequence of tests without node removal,
so we can skip the "remove" event and get an increasing number to append
to the name. After the sequence test the whole directory is cleaned for
the next tests.
2004-09-15 08:44:55 +04:00
if ( defined ( $ tests [ $ test_num - 1 ] - > { desc } ) ) {
print "udev-test will run test number $test_num only:\n\n" ;
run_test ( $ tests [ $ test_num - 1 ] , $ test_num ) ;
} else {
print "test does not exist.\n" ;
}
2004-02-12 11:49:52 +03:00
} else {
# test all
print "\nudev-test will run " . ( $# tests + 1 ) . " tests:\n\n" ;
2005-03-27 03:10:03 +04:00
foreach my $ rules ( @ tests ) {
run_test ( $ rules , $ test_num ) ;
2004-02-12 11:49:52 +03:00
$ test_num + + ;
}
}
2003-11-23 16:47:28 +03:00
print "$error errors occured\n\n" ;
# cleanup
system ( "rm -rf $udev_root" ) ;
2005-03-27 03:10:03 +04:00
unlink ( $ udev_rules ) ;
unlink ( $ udev_conf ) ;
2003-11-23 16:47:28 +03:00