2003-11-23 20:47:28 +07: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 06:10:03 +07:00
|
|
|
# udev parses the rules, looks at the provided sysfs and
|
2003-11-23 20:47:28 +07: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-21 00:11:32 +07:00
|
|
|
# Copyright (C) 2004-2006 Kay Sievers <kay.sievers@vrfy.org>
|
|
|
|
# Copyright (C) 2004 Leann Ogasawara <ogasawara@osdl.org>
|
2003-11-23 20:47:28 +07:00
|
|
|
|
|
|
|
use warnings;
|
|
|
|
use strict;
|
|
|
|
|
2005-03-27 06:10:03 +07:00
|
|
|
my $PWD = $ENV{PWD};
|
|
|
|
my $sysfs = "sys/";
|
2006-12-08 16:29:17 +07:00
|
|
|
my $udev_bin = "../test-udev";
|
2005-03-27 06:10:03 +07:00
|
|
|
my $udev_root = "udev-root/"; # !!! directory will be removed !!!
|
|
|
|
my $udev_conf = "udev-test.conf";
|
|
|
|
my $udev_rules = "udev-test.rules";
|
2003-11-23 20:47:28 +07:00
|
|
|
|
2005-04-27 13:15:56 +07: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 20:47:28 +07:00
|
|
|
|
|
|
|
my @tests = (
|
2006-08-21 00:11:32 +07: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 20:47:28 +07:00
|
|
|
{
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/block/sda",
|
2004-03-13 09:18:58 +07:00
|
|
|
exp_name => "boot_disk" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", ATTRS{vendor}=="IBM-ESXS", NAME="boot_disk%n"
|
2005-03-13 11:46:31 +07:00
|
|
|
KERNEL=="ttyUSB0", NAME="visor"
|
2003-11-23 20:47:28 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/block/sda/sda1",
|
2004-03-13 09:18:58 +07:00
|
|
|
exp_name => "boot_disk1" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", ATTRS{vendor}=="IBM-ESXS", NAME="boot_disk%n"
|
2003-12-05 10:21:31 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/block/sda/sda1",
|
2004-03-13 09:18:58 +07:00
|
|
|
exp_name => "boot_disk1" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07: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 13:32:06 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/block/sda/sda1",
|
2004-03-13 08:13:59 +07:00
|
|
|
exp_name => "boot_disk1" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07: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 13:32:06 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/block/sda/sda1",
|
2004-03-13 08:13:59 +07:00
|
|
|
exp_name => "boot_disk1" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07: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 08:52:26 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/class/tty/ttyUSB0",
|
2004-03-13 08:13:59 +07:00
|
|
|
exp_name => "visor/0" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-03-13 11:46:31 +07:00
|
|
|
KERNEL=="ttyUSB*", NAME="visor/%n"
|
2004-02-12 15:49:52 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/class/tty/ttyUSB0",
|
2004-03-13 08:13:59 +07:00
|
|
|
exp_name => "visor/0" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-03-13 11:46:31 +07:00
|
|
|
KERNEL=="*USB1", NAME="bad"
|
|
|
|
KERNEL=="*USB0", NAME="visor/%n"
|
2003-12-03 21:22:53 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/class/tty/ttyUSB0",
|
2004-03-13 08:13:59 +07:00
|
|
|
exp_name => "visor/0" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-03-13 11:46:31 +07:00
|
|
|
KERNEL=="ttyUSB??*", NAME="visor/%n-1"
|
|
|
|
KERNEL=="ttyUSB??", NAME="visor/%n-2"
|
|
|
|
KERNEL=="ttyUSB?", NAME="visor/%n"
|
2003-12-03 21:22:53 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/class/tty/ttyUSB0",
|
2004-03-13 08:13:59 +07:00
|
|
|
exp_name => "visor/0" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-03-13 11:46:31 +07: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 20:47:28 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/class/tty/ttyUSB0",
|
2004-03-13 08:13:59 +07:00
|
|
|
exp_name => "visor" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-03-13 11:46:31 +07:00
|
|
|
KERNEL=="ttyUSB0", NAME="visor"
|
2003-12-18 09:28:05 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/class/tty/ttyUSB0",
|
2004-03-13 08:13:59 +07:00
|
|
|
exp_name => "visor" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2003-12-18 09:28:05 +07:00
|
|
|
# this is a comment
|
2005-03-13 11:46:31 +07:00
|
|
|
KERNEL=="ttyUSB0", NAME="visor"
|
2003-12-18 09:28:05 +07:00
|
|
|
|
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/class/tty/ttyUSB0",
|
2004-03-13 08:13:59 +07:00
|
|
|
exp_name => "visor" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2003-12-18 09:28:05 +07:00
|
|
|
# this is a comment with whitespace before the comment
|
2005-03-13 11:46:31 +07:00
|
|
|
KERNEL=="ttyUSB0", NAME="visor"
|
2003-12-18 09:28:05 +07:00
|
|
|
|
2004-09-15 07:45:48 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "Handle whitespace only lines (and replace kernel name)",
|
|
|
|
subsys => "tty",
|
|
|
|
devpath => "/class/tty/ttyUSB0",
|
|
|
|
exp_name => "whitespace" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2004-09-15 07:45:48 +07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# this is a comment with whitespace before the comment
|
2005-03-13 11:46:31 +07:00
|
|
|
KERNEL=="ttyUSB0", NAME="whitespace"
|
2004-09-15 07:45:48 +07:00
|
|
|
|
|
|
|
|
|
|
|
|
2003-12-18 09:28:05 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/class/tty/ttyUSB0",
|
2004-03-13 08:13:59 +07:00
|
|
|
exp_name => "visor" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2003-12-18 09:28:05 +07:00
|
|
|
|
2005-03-13 11:46:31 +07:00
|
|
|
KERNEL=="ttyUSB0", NAME="visor"
|
2003-12-18 09:28:05 +07:00
|
|
|
|
2004-12-20 13:38:33 +07: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 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-03-13 11:46:31 +07:00
|
|
|
KERNEL=="ttyUSB0", \\
|
2004-12-20 13:38:33 +07:00
|
|
|
NAME="visor"
|
|
|
|
|
2005-02-26 08:52:04 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "preserve backslashes, if they are not for a newline",
|
|
|
|
subsys => "tty",
|
|
|
|
devpath => "/class/tty/ttyUSB0",
|
|
|
|
exp_name => "aaa",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-03-13 11:46:31 +07:00
|
|
|
KERNEL=="ttyUSB0", PROGRAM=="/bin/echo -e \\101", RESULT=="A", NAME="aaa"
|
2004-12-20 13:38:33 +07: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 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2004-12-20 13:38:33 +07:00
|
|
|
|
|
|
|
#
|
|
|
|
\\
|
|
|
|
|
|
|
|
\\\\
|
|
|
|
|
|
|
|
#\\
|
|
|
|
|
2005-03-13 11:46:31 +07:00
|
|
|
KERNEL=="ttyUSB0", \\
|
2004-12-21 04:24:19 +07:00
|
|
|
NAME="visor"
|
2004-12-20 13:38:33 +07:00
|
|
|
|
2003-11-25 13:27:23 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/class/tty/ttyUSB0",
|
2004-03-13 08:13:59 +07:00
|
|
|
exp_name => "sub/direct/ory/visor" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-03-13 11:46:31 +07:00
|
|
|
KERNEL=="ttyUSB0", NAME="sub/direct/ory/visor"
|
2003-11-23 20:47:28 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2006-01-16 12:12:49 +07:00
|
|
|
desc => "parent device name match of scsi partition",
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/block/sda/sda3",
|
2004-03-13 08:13:59 +07:00
|
|
|
exp_name => "first_disk3" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNELS=="0:0:0:0", NAME="first_disk%n"
|
2003-11-23 20:47:28 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2006-08-21 00:11:32 +07:00
|
|
|
desc => "test substitution chars (old key names)",
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/block/sda/sda3",
|
2006-01-16 12:12:49 +07:00
|
|
|
exp_name => "Major:8:minor:3:kernelnumber:3:id:0:0:0:0" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-01-16 12:12:49 +07:00
|
|
|
BUS=="scsi", ID=="0:0:0:0", NAME="Major:%M:minor:%m:kernelnumber:%n:id:%b"
|
2006-08-21 00:11:32 +07: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 21:53:25 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2005-06-20 05:29:38 +07:00
|
|
|
desc => "test substitution chars (with length limit)",
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/block/sda/sda3",
|
2006-01-16 12:12:49 +07:00
|
|
|
exp_name => "M8-m3-n3-b0:0-sIBM" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNELS=="0:0:0:0", NAME="M%M-m%m-n%n-b%3b-s%3s{vendor}"
|
2005-06-25 18:10:16 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2005-06-25 23:58:49 +07:00
|
|
|
desc => "import of shell-value file",
|
2005-06-25 18:10:16 +07:00
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda",
|
2005-11-10 07:50:06 +07:00
|
|
|
exp_name => "subdir/info/node" ,
|
2005-06-25 18:10:16 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", IMPORT{file}="udev-test.conf", NAME="subdir/%E{udev_log}/node"
|
2005-06-25 18:10:16 +07:00
|
|
|
KERNEL=="ttyUSB0", NAME="visor"
|
2005-06-25 23:58:49 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "import of shell-value returned from program",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda",
|
|
|
|
exp_name => "node12345678",
|
|
|
|
rules => <<EOF
|
2007-05-21 12:59:40 +07:00
|
|
|
SUBSYSTEMS=="scsi", IMPORT="/bin/echo -e \' TEST_KEY=12345678\\n TEST_key2=98765\'", NAME="node\$env{TEST_KEY}"
|
2005-06-25 23:58:49 +07: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 12:36:34 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/block/sda",
|
2004-03-13 08:13:59 +07:00
|
|
|
exp_name => "disk-IBM-ESXS-sda" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", ATTRS{vendor}=="IBM-ESXS", NAME="disk-%s{vendor}-%k"
|
2005-03-13 11:46:31 +07:00
|
|
|
KERNEL=="ttyUSB0", NAME="visor"
|
2003-11-23 20:47:28 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/block/sda/sda3",
|
2004-03-13 08:13:59 +07:00
|
|
|
exp_name => "special-device-3" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07: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 14:12:57 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "program result substitution (newline removal)",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda/sda3",
|
|
|
|
exp_name => "newline_removed" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", PROGRAM=="/bin/echo test", RESULT=="test", NAME="newline_removed"
|
2003-11-24 13:25:13 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/block/sda/sda3",
|
2006-01-16 12:12:49 +07:00
|
|
|
exp_name => "test-0:0:0:0" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", PROGRAM=="/bin/echo -n test-%b", RESULT=="test-0:0*", NAME="%c"
|
2004-01-14 09:34:33 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/block/sda/sda3",
|
2004-03-13 08:13:59 +07:00
|
|
|
exp_name => "escape-3" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", PROGRAM=="/bin/echo -n escape-%%n", KERNEL=="sda3", NAME="%c"
|
2004-02-27 12:29:49 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/block/sda/sda3",
|
2004-03-13 08:13:59 +07:00
|
|
|
exp_name => "foo9" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", PROGRAM=="/bin/echo -n foo3 foo4 foo5 foo6 foo7 foo8 foo9", KERNEL=="sda3", NAME="%c{7}"
|
2004-03-11 16:36:12 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/block/sda/sda3",
|
2004-03-13 08:13:59 +07:00
|
|
|
exp_name => "bar9" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07: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 16:36:12 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/block/sda/sda3",
|
2004-03-13 08:13:59 +07:00
|
|
|
exp_name => "foo7" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", PROGRAM=="/bin/echo -n 'foo3 foo4' 'foo5 foo6 foo7 foo8'", KERNEL=="sda3", NAME="%c{5}"
|
2004-03-04 15:55:22 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/block/sda/sda3",
|
2004-03-13 08:13:59 +07:00
|
|
|
exp_name => "my-foo9" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", PROGRAM=="/bin/echo -n foo3 foo4 foo5 foo6 foo7 foo8 foo9", KERNEL=="sda3", NAME="my-%c{7}"
|
2004-03-04 15:55:22 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/block/sda/sda3",
|
2004-03-13 08:13:59 +07:00
|
|
|
exp_name => "my-foo8" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", PROGRAM=="/bin/echo -n foo3 foo4 foo5 foo6 foo7 foo8 foo9", KERNEL=="sda3", NAME="my-%c{6}"
|
2005-06-20 05:29:38 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "test substitution by variable name",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda/sda3",
|
2006-01-16 12:12:49 +07:00
|
|
|
exp_name => "Major:8-minor:3-kernelnumber:3-id:0:0:0:0",
|
2005-06-20 05:29:38 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNELS=="0:0:0:0", NAME="Major:\$major-minor:\$minor-kernelnumber:\$number-id:\$id"
|
2005-06-20 05:29:38 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "test substitution by variable name 2",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda/sda3",
|
2006-01-16 12:12:49 +07:00
|
|
|
exp_name => "Major:8-minor:3-kernelnumber:3-id:0:0:0:0",
|
2005-06-20 05:29:38 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNELS=="0:0:0:0", DEVPATH=="*/sda/*", NAME="Major:\$major-minor:%m-kernelnumber:\$number-id:\$id"
|
2005-06-20 05:29:38 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "test substitution by variable name 3",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda/sda3",
|
2006-01-16 12:12:49 +07:00
|
|
|
exp_name => "830:0:0:03" ,
|
2005-06-20 05:29:38 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNELS=="0:0:0:0", DEVPATH=="*/sda/*", NAME="%M%m%b%n"
|
2005-06-20 05:29:38 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "test substitution by variable name 4",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda/sda3",
|
|
|
|
exp_name => "833" ,
|
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNELS=="0:0:0:0", DEVPATH=="*/sda/*", NAME="\$major\$minor\$number"
|
2005-06-20 05:29:38 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "test substitution by variable name 5",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda/sda3",
|
2006-01-16 12:12:49 +07:00
|
|
|
exp_name => "8330:0:0:0" ,
|
2005-06-20 05:29:38 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNELS=="0:0:0:0", DEVPATH=="*/sda/*", NAME="\$major%m%n\$id"
|
2003-12-25 14:56:54 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2006-08-21 00:11:32 +07:00
|
|
|
desc => "non matching SUBSYSTEMS for device with no parent",
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/class/tty/console",
|
2006-01-16 12:12:49 +07:00
|
|
|
exp_name => "TTY",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", PROGRAM=="/bin/echo -n foo", RESULT=="foo", NAME="foo"
|
2005-03-13 11:46:31 +07:00
|
|
|
KERNEL=="console", NAME="TTY"
|
2003-12-25 15:05:28 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2006-08-21 00:11:32 +07:00
|
|
|
desc => "non matching SUBSYSTEMS",
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/class/tty/console",
|
2004-03-13 08:13:59 +07:00
|
|
|
exp_name => "TTY" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="foo", ATTRS{dev}=="5:1", NAME="foo"
|
2005-03-13 11:46:31 +07:00
|
|
|
KERNEL=="console", NAME="TTY"
|
2003-12-25 15:33:56 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2006-08-21 00:11:32 +07:00
|
|
|
desc => "ATTRS match",
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/class/tty/console",
|
2004-03-13 08:13:59 +07:00
|
|
|
exp_name => "foo" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
ATTRS{dev}=="5:1", NAME="foo"
|
2005-03-13 11:46:31 +07:00
|
|
|
KERNEL=="console", NAME="TTY"
|
2003-11-27 08:45:26 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/block/sda",
|
2006-01-16 12:12:49 +07:00
|
|
|
exp_name => "scsi-0:0:0:0" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07: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 15:21:13 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/block/sda",
|
2004-03-13 08:13:59 +07: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 06:05:03 +07:00
|
|
|
exp_majorminor => "8:15",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", ATTRS{vendor}=="IBM-ESXS", NAME{all_partitions}="boot_disk"
|
2004-02-17 12:44:28 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/class/tty/ttyUSB0",
|
2004-03-13 08:13:59 +07:00
|
|
|
exp_name => "visor" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
ATTRS{idProduct}=="2008", NAME="visor"
|
2004-02-12 14:34:21 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/block/rd!c0d0",
|
2004-03-13 08:13:59 +07:00
|
|
|
exp_name => "rd/c0d0" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", NAME="%k"
|
2005-03-13 11:46:31 +07:00
|
|
|
KERNEL=="ttyUSB0", NAME="visor"
|
2004-02-17 09:25:01 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/block/rd!c0d0",
|
2004-03-13 08:13:59 +07:00
|
|
|
exp_name => "rd/c0d0" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-03-13 11:46:31 +07:00
|
|
|
KERNEL=="ttyUSB0", NAME="visor"
|
2004-06-05 12:01:53 +07: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 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", NAME="%k"
|
2005-03-13 11:46:31 +07:00
|
|
|
KERNEL=="ttyUSB0", NAME="visor"
|
2004-02-17 13:00:38 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2006-08-21 00:11:32 +07:00
|
|
|
desc => "KERNELS rule",
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/block/sda",
|
2004-03-13 08:13:59 +07:00
|
|
|
exp_name => "scsi-0:0:0:0",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07: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 13:00:38 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2006-08-21 00:11:32 +07:00
|
|
|
desc => "KERNELS wildcard all",
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/block/sda",
|
2004-03-13 08:13:59 +07:00
|
|
|
exp_name => "scsi-0:0:0:0",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07: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 13:00:38 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2006-08-21 00:11:32 +07:00
|
|
|
desc => "KERNELS wildcard partial",
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/block/sda",
|
2004-03-13 08:13:59 +07:00
|
|
|
exp_name => "scsi-0:0:0:0",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNELS=="*:0", NAME="scsi-0:0:0:0"
|
|
|
|
SUBSYSTEMS=="scsi", KERNELS=="0:0:0:0", NAME="bad"
|
2004-02-17 13:00:38 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2006-08-21 00:11:32 +07:00
|
|
|
desc => "KERNELS wildcard partial 2",
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/block/sda",
|
2004-03-13 08:13:59 +07:00
|
|
|
exp_name => "scsi-0:0:0:0",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNELS=="*:0:0:0", NAME="scsi-0:0:0:0"
|
|
|
|
SUBSYSTEMS=="scsi", KERNELS=="0:0:0:0", NAME="bad"
|
2006-09-05 07:18:06 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "substitute attr with link target value (first match)",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda",
|
|
|
|
exp_name => "driver-is-sd",
|
|
|
|
rules => <<EOF
|
|
|
|
SUBSYSTEMS=="scsi", NAME="driver-is-\$attr{driver}"
|
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "substitute attr with link target value (currently selected device)",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda",
|
|
|
|
exp_name => "driver-is-aic7xxx",
|
|
|
|
rules => <<EOF
|
|
|
|
SUBSYSTEMS=="pci", NAME="driver-is-\$attr{driver}"
|
2004-03-05 09:59:13 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2006-08-21 00:11:32 +07:00
|
|
|
desc => "ignore ATTRS attribute whitespace",
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/block/sda",
|
2004-03-13 08:13:59 +07:00
|
|
|
exp_name => "ignored",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", ATTRS{whitespace_test}=="WHITE SPACE", NAME="ignored"
|
2004-03-05 09:59:13 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2006-08-21 00:11:32 +07:00
|
|
|
desc => "do not ignore ATTRS attribute whitespace",
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/block/sda",
|
2004-03-13 08:13:59 +07:00
|
|
|
exp_name => "matched-with-space",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07: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 16:39:53 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-12-18 17:34:17 +07:00
|
|
|
desc => "permissions USER=bad GROUP=name",
|
2004-04-16 13:14:49 +07:00
|
|
|
subsys => "tty",
|
|
|
|
devpath => "/class/tty/tty33",
|
|
|
|
exp_name => "tty33",
|
2004-12-20 09:04:11 +07:00
|
|
|
exp_perms => "0:0:0660",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-03-13 11:46:31 +07:00
|
|
|
KERNEL=="tty33", NAME="tty33", OWNER="bad", GROUP="name"
|
2004-04-16 13:14:49 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-12-18 17:34:17 +07:00
|
|
|
desc => "permissions OWNER=5000",
|
2004-03-13 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/block/sda",
|
2004-03-13 08:13:59 +07:00
|
|
|
exp_name => "node",
|
2004-12-20 09:04:11 +07:00
|
|
|
exp_perms => "5000::0660",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNEL=="sda", NAME="node", OWNER="5000"
|
2004-04-16 13:14:49 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-12-18 17:34:17 +07:00
|
|
|
desc => "permissions GROUP=100",
|
2004-04-16 13:14:49 +07:00
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda",
|
|
|
|
exp_name => "node",
|
2004-12-20 09:04:11 +07:00
|
|
|
exp_perms => ":100:0660",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNEL=="sda", NAME="node", GROUP="100"
|
2005-03-19 05:52:41 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "textual user id",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda",
|
|
|
|
exp_name => "node",
|
2005-03-19 09:11:48 +07:00
|
|
|
exp_perms => "nobody::0660",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNEL=="sda", NAME="node", OWNER="nobody"
|
2005-03-19 05:52:41 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "textual group id",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda",
|
|
|
|
exp_name => "node",
|
|
|
|
exp_perms => ":daemon:0660",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNEL=="sda", NAME="node", GROUP="daemon"
|
2005-03-19 07:45:03 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "textual user/group id",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda",
|
|
|
|
exp_name => "node",
|
2005-03-19 09:11:48 +07:00
|
|
|
exp_perms => "root:mail:0660",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNEL=="sda", NAME="node", OWNER="root", GROUP="mail"
|
2004-04-16 13:14:49 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-12-18 17:34:17 +07:00
|
|
|
desc => "permissions MODE=0777",
|
2004-04-16 13:14:49 +07:00
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda",
|
|
|
|
exp_name => "node",
|
|
|
|
exp_perms => "::0777",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNEL=="sda", NAME="node", MODE="0777"
|
2004-04-16 13:14:49 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-12-18 17:34:17 +07:00
|
|
|
desc => "permissions OWNER=5000 GROUP=100 MODE=0777",
|
2004-04-16 13:14:49 +07:00
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda",
|
|
|
|
exp_name => "node",
|
|
|
|
exp_perms => "5000:100:0777",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNEL=="sda", NAME="node", OWNER="5000", GROUP="100", MODE="0777"
|
2004-04-16 13:14:49 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-12-18 17:34:17 +07:00
|
|
|
desc => "permissions OWNER to 5000",
|
2004-04-16 13:14:49 +07:00
|
|
|
subsys => "tty",
|
|
|
|
devpath => "/class/tty/ttyUSB0",
|
|
|
|
exp_name => "ttyUSB0",
|
2004-12-18 17:34:17 +07:00
|
|
|
exp_perms => "5000::",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-03-13 11:46:31 +07:00
|
|
|
KERNEL=="ttyUSB[0-9]*", NAME="ttyUSB%n", OWNER="5000"
|
2004-04-16 13:14:49 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-12-18 17:34:17 +07:00
|
|
|
desc => "permissions GROUP to 100",
|
2004-04-16 13:14:49 +07:00
|
|
|
subsys => "tty",
|
|
|
|
devpath => "/class/tty/ttyUSB0",
|
|
|
|
exp_name => "ttyUSB0",
|
2004-12-20 09:04:11 +07:00
|
|
|
exp_perms => ":100:0660",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-03-13 11:46:31 +07:00
|
|
|
KERNEL=="ttyUSB[0-9]*", NAME="ttyUSB%n", GROUP="100"
|
2004-04-16 13:14:49 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-12-18 17:34:17 +07:00
|
|
|
desc => "permissions MODE to 0060",
|
2004-04-16 13:14:49 +07:00
|
|
|
subsys => "tty",
|
|
|
|
devpath => "/class/tty/ttyUSB0",
|
|
|
|
exp_name => "ttyUSB0",
|
2004-12-18 17:34:17 +07:00
|
|
|
exp_perms => "::0060",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-03-13 11:46:31 +07:00
|
|
|
KERNEL=="ttyUSB[0-9]*", NAME="ttyUSB%n", MODE="0060"
|
2004-04-16 13:14:49 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-12-18 17:34:17 +07:00
|
|
|
desc => "permissions OWNER, GROUP, MODE",
|
2004-04-16 13:14:49 +07:00
|
|
|
subsys => "tty",
|
|
|
|
devpath => "/class/tty/ttyUSB0",
|
|
|
|
exp_name => "ttyUSB0",
|
|
|
|
exp_perms => "5000:100:0777",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-03-13 11:46:31 +07:00
|
|
|
KERNEL=="ttyUSB[0-9]*", NAME="ttyUSB%n", OWNER="5000", GROUP="100", MODE="0777"
|
2004-12-21 05:44:57 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "permissions only rule",
|
|
|
|
subsys => "tty",
|
|
|
|
devpath => "/class/tty/ttyUSB0",
|
|
|
|
exp_name => "ttyUSB0",
|
|
|
|
exp_perms => "5000:100:0777",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-03-13 11:46:31 +07: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 06:19:34 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "multiple permissions only rule",
|
|
|
|
subsys => "tty",
|
|
|
|
devpath => "/class/tty/ttyUSB0",
|
|
|
|
exp_name => "ttyUSB0",
|
|
|
|
exp_perms => "3000:4000:0777",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-03-13 11:46:31 +07: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 06:19:34 +07: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 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-03-13 11:46:31 +07: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 08:13:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/block/sda",
|
2004-03-13 08:13:59 +07:00
|
|
|
exp_name => "node",
|
|
|
|
exp_majorminor => "8:0",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNEL=="sda", NAME="node"
|
2004-03-13 08:39:59 +07: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 14:19:39 +07:00
|
|
|
devpath => "/class/i2c-dev/i2c-300",
|
2004-03-13 08:39:59 +07:00
|
|
|
exp_name => "node",
|
|
|
|
exp_majorminor => "89:300",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-03-13 11:46:31 +07:00
|
|
|
KERNEL=="i2c-300", NAME="node"
|
2004-03-13 09:00:39 +07: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 14:19:39 +07:00
|
|
|
devpath => "/class/i2c-dev/i2c-fake1",
|
2004-03-13 09:00:39 +07:00
|
|
|
exp_name => "node",
|
|
|
|
exp_majorminor => "4095:1",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-03-13 11:46:31 +07:00
|
|
|
KERNEL=="i2c-fake1", NAME="node"
|
2004-03-13 09:00:39 +07: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 14:19:39 +07:00
|
|
|
devpath => "/class/i2c-dev/i2c-fake2",
|
2004-03-13 09:00:39 +07:00
|
|
|
exp_name => "node",
|
|
|
|
exp_majorminor => "4094:89999",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-03-13 11:46:31 +07:00
|
|
|
KERNEL=="i2c-fake2", NAME="node"
|
2004-10-30 18:29:52 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "multiple symlinks with format char",
|
|
|
|
subsys => "tty",
|
|
|
|
devpath => "/class/tty/ttyUSB0",
|
|
|
|
exp_name => "symlink2-ttyUSB0",
|
|
|
|
exp_target => "ttyUSB0",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-01-16 12:12:49 +07:00
|
|
|
KERNEL=="ttyUSB[0-9]*", NAME="ttyUSB%n", SYMLINK="symlink1-%n symlink2-%k symlink3-%b"
|
2005-07-08 04:43:13 +07: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 13:14:49 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "symlink creation (same directory)",
|
|
|
|
subsys => "tty",
|
|
|
|
devpath => "/class/tty/ttyUSB0",
|
|
|
|
exp_name => "visor0",
|
|
|
|
exp_target => "ttyUSB0",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-03-13 11:46:31 +07:00
|
|
|
KERNEL=="ttyUSB[0-9]*", NAME="ttyUSB%n", SYMLINK="visor%n"
|
2004-04-16 13:14:49 +07: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 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", ATTRS{vendor}=="IBM-ESXS", NAME="1/2/a/b/node", SYMLINK="1/2/symlink"
|
2004-04-16 13:14:49 +07: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 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", ATTRS{vendor}=="IBM-ESXS", NAME="1/2/a/b/node", SYMLINK="1/2/c/d/symlink"
|
2004-04-16 13:14:49 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "multiple symlinks",
|
|
|
|
subsys => "tty",
|
|
|
|
devpath => "/class/tty/ttyUSB0",
|
|
|
|
exp_name => "second-0" ,
|
|
|
|
exp_target => "visor" ,
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-03-13 11:46:31 +07:00
|
|
|
KERNEL=="ttyUSB0", NAME="visor", SYMLINK="first-%n second-%n third-%n"
|
2004-04-16 13:14:49 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "symlink only rule",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda",
|
|
|
|
exp_name => "symlink-only2",
|
|
|
|
exp_target => "link",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07: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 13:14:49 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "symlink name '.'",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda",
|
|
|
|
exp_name => ".",
|
|
|
|
exp_target => "link",
|
2005-02-18 09:30:03 +07:00
|
|
|
exp_add_error => "yes",
|
|
|
|
exp_rem_error => "yes",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNEL=="sda", NAME="link", SYMLINK+="."
|
2004-04-16 13:14:49 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "symlink node to itself",
|
|
|
|
subsys => "tty",
|
|
|
|
devpath => "/class/tty/tty0",
|
|
|
|
exp_name => "link",
|
|
|
|
exp_target => "link",
|
2006-06-14 21:32:52 +07:00
|
|
|
exp_add_error => "yes",
|
2005-02-18 09:30:03 +07:00
|
|
|
exp_rem_error => "yes",
|
2005-03-28 17:20:05 +07:00
|
|
|
option => "clean",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-06-05 10:13:33 +07:00
|
|
|
KERNEL=="tty0", NAME="link", SYMLINK+="link"
|
2004-04-16 13:14:49 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "symlink %n substitution",
|
|
|
|
subsys => "tty",
|
|
|
|
devpath => "/class/tty/ttyUSB0",
|
|
|
|
exp_name => "symlink0",
|
|
|
|
exp_target => "ttyUSB0",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-06-05 10:13:33 +07:00
|
|
|
KERNEL=="ttyUSB[0-9]*", NAME="ttyUSB%n", SYMLINK+="symlink%n"
|
2004-04-16 13:14:49 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "symlink %k substitution",
|
|
|
|
subsys => "tty",
|
|
|
|
devpath => "/class/tty/ttyUSB0",
|
|
|
|
exp_name => "symlink-ttyUSB0",
|
|
|
|
exp_target => "ttyUSB0",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-06-05 10:13:33 +07:00
|
|
|
KERNEL=="ttyUSB[0-9]*", NAME="ttyUSB%n", SYMLINK+="symlink-%k"
|
2004-04-16 13:14:49 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "symlink %M:%m substitution",
|
|
|
|
subsys => "tty",
|
|
|
|
devpath => "/class/tty/ttyUSB0",
|
|
|
|
exp_name => "major-188:0",
|
|
|
|
exp_target => "ttyUSB0",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-06-05 10:13:33 +07:00
|
|
|
KERNEL=="ttyUSB[0-9]*", NAME="ttyUSB%n", SYMLINK+="major-%M:%m"
|
2004-04-16 13:14:49 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2006-01-16 12:12:49 +07:00
|
|
|
desc => "symlink %b substitution",
|
2004-04-16 13:14:49 +07:00
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda",
|
2006-01-16 12:12:49 +07:00
|
|
|
exp_name => "symlink-0:0:0:0",
|
2004-04-16 13:14:49 +07:00
|
|
|
exp_target => "node",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNEL=="sda", NAME="node", SYMLINK+="symlink-%b"
|
2004-04-16 13:14:49 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "symlink %c substitution",
|
|
|
|
subsys => "tty",
|
|
|
|
devpath => "/class/tty/ttyUSB0",
|
|
|
|
exp_name => "test",
|
|
|
|
exp_target => "ttyUSB0",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-06-05 10:13:33 +07:00
|
|
|
KERNEL=="ttyUSB[0-9]*", PROGRAM=="/bin/echo test" NAME="ttyUSB%n", SYMLINK+="%c"
|
2004-04-16 13:14:49 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "symlink %c{N} substitution",
|
|
|
|
subsys => "tty",
|
|
|
|
devpath => "/class/tty/ttyUSB0",
|
|
|
|
exp_name => "test",
|
|
|
|
exp_target => "ttyUSB0",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-06-05 10:13:33 +07:00
|
|
|
KERNEL=="ttyUSB[0-9]*", PROGRAM=="/bin/echo symlink test this" NAME="ttyUSB%n", SYMLINK+="%c{2}"
|
2004-04-16 13:14:49 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "symlink %c{N+} substitution",
|
|
|
|
subsys => "tty",
|
|
|
|
devpath => "/class/tty/ttyUSB0",
|
|
|
|
exp_name => "this",
|
|
|
|
exp_target => "ttyUSB0",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-06-05 10:13:33 +07:00
|
|
|
KERNEL=="ttyUSB[0-9]*", PROGRAM=="/bin/echo symlink test this" NAME="ttyUSB%n", SYMLINK+="%c{2+}"
|
2004-04-16 13:14:49 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "symlink only rule with %c{N+}",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda",
|
|
|
|
exp_name => "test",
|
|
|
|
exp_target => "link",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07: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 13:14:49 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "symlink %s{filename} substitution",
|
|
|
|
subsys => "tty",
|
|
|
|
devpath => "/class/tty/ttyUSB0",
|
|
|
|
exp_name => "188:0",
|
|
|
|
exp_target => "ttyUSB0",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-06-05 10:13:33 +07:00
|
|
|
KERNEL=="ttyUSB[0-9]*", NAME="ttyUSB%n", SYMLINK+="%s{dev}"
|
2004-04-16 13:14:49 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "symlink %Ns{filename} substitution",
|
|
|
|
subsys => "tty",
|
|
|
|
devpath => "/class/tty/ttyUSB0",
|
|
|
|
exp_name => "188",
|
|
|
|
exp_target => "ttyUSB0",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-06-05 10:13:33 +07:00
|
|
|
KERNEL=="ttyUSB[0-9]*", NAME="ttyUSB%n", SYMLINK+="%3s{dev}"
|
2004-04-16 13:14:49 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "program result substitution (numbered part of)",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda/sda3",
|
|
|
|
exp_name => "link1",
|
|
|
|
exp_target => "node",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", PROGRAM=="/bin/echo -n node link1 link2", RESULT=="node *", NAME="%c{1}", SYMLINK+="%c{2} %c{3}"
|
2004-04-16 13:14:49 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "program result substitution (numbered part of+)",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda/sda3",
|
|
|
|
exp_name => "link4",
|
|
|
|
exp_target => "node",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", PROGRAM=="/bin/echo -n node link1 link2 link3 link4", RESULT=="node *", NAME="%c{1}", SYMLINK+="%c{2+}"
|
2005-02-14 12:03:06 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "ignore rule test",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda",
|
2005-07-08 03:40:09 +07:00
|
|
|
exp_name => "nothing",
|
|
|
|
not_exp_name => "node",
|
2005-02-18 09:30:03 +07:00
|
|
|
exp_add_error => "yes",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNEL=="sda", NAME="node", OPTIONS="ignore"
|
2005-02-14 12:03:06 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "all_partitions, option-only rule",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda",
|
|
|
|
exp_name => "node6",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-03-13 11:46:31 +07:00
|
|
|
SUBSYSTEM=="block", OPTIONS="all_partitions"
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNEL=="sda", NAME="node"
|
2005-02-14 12:03:06 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "all_partitions, option-only rule (fail on partition)",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda/sda1",
|
|
|
|
exp_name => "node6",
|
2005-02-18 09:30:03 +07:00
|
|
|
exp_add_error => "yes",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-03-13 11:46:31 +07:00
|
|
|
SUBSYSTEM=="block", OPTIONS="all_partitions"
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNEL=="sda", NAME="node"
|
2004-11-12 12:52:55 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2004-11-13 20:43:24 +07:00
|
|
|
desc => "ignore remove event test",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda",
|
|
|
|
exp_name => "node",
|
2005-02-18 09:30:03 +07:00
|
|
|
exp_rem_error => "yes",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNEL=="sda", NAME="node", OPTIONS="ignore_remove"
|
2004-11-13 20:43:24 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "ignore remove event test (with all partitions)",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda",
|
|
|
|
exp_name => "node14",
|
2005-02-18 09:30:03 +07:00
|
|
|
exp_rem_error => "yes",
|
2005-03-28 17:20:05 +07:00
|
|
|
option => "clean",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNEL=="sda", NAME="node", OPTIONS="ignore_remove, all_partitions"
|
2004-11-13 20:43:24 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "SUBSYSTEM match test",
|
2004-11-12 12:52:55 +07:00
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda",
|
|
|
|
exp_name => "node",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07: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 11:21:12 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
2006-08-19 21:06:25 +07:00
|
|
|
desc => "DRIVERS match test",
|
2004-11-13 11:21:12 +07:00
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda",
|
|
|
|
exp_name => "node",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNEL=="sda", NAME="should_not_match", DRIVERS=="sd-wrong"
|
|
|
|
SUBSYSTEMS=="scsi", KERNEL=="sda", NAME="node", DRIVERS=="sd"
|
2005-02-09 10:37:32 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "temporary node creation test",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda",
|
2005-02-11 09:28:17 +07:00
|
|
|
exp_name => "node",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNEL=="sda", PROGRAM=="/usr/bin/test -b %N" NAME="node"
|
2005-02-09 10:37:32 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "devpath substitution test",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda",
|
|
|
|
exp_name => "sda",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNEL=="sda", PROGRAM=="/bin/echo %p", RESULT=="/block/sda" NAME="%k"
|
2005-02-10 15:03:55 +07: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 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNEL=="sda", NAME="main_device"
|
2005-02-10 15:03:55 +07: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 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNEL=="sda1", NAME="%P-part-1"
|
2005-02-10 15:03:55 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "udev_root substitution",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda/sda1",
|
|
|
|
exp_name => "start-udev-root-end",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNEL=="sda1", NAME="start-%r-end"
|
2005-03-13 04:55:08 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "last_rule option",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda/sda1",
|
|
|
|
exp_name => "last",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNEL=="sda1", SYMLINK+="last", OPTIONS="last_rule"
|
|
|
|
SUBSYSTEMS=="scsi", KERNEL=="sda1", NAME="very-last"
|
2005-03-13 11:46:31 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "negation KERNEL!=",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda/sda1",
|
|
|
|
exp_name => "match",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07: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 11:46:31 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "negation SUBSYSTEM!=",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda/sda1",
|
|
|
|
exp_name => "not-anything",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07: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 11:46:31 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "negation PROGRAM!= exit code",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda/sda1",
|
|
|
|
exp_name => "nonzero-program",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-03-13 11:46:31 +07:00
|
|
|
KERNEL=="sda1", PROGRAM!="/bin/false", NAME="nonzero-program"
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNEL=="sda1", NAME="wrong"
|
2005-03-13 13:14:49 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "test for whitespace between the operator",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda/sda1",
|
|
|
|
exp_name => "true",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2005-03-13 13:14:49 +07:00
|
|
|
KERNEL == "sda1" , NAME = "true"
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNEL=="sda1", NAME="wrong"
|
2005-03-13 17:40:32 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "ENV{} test",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda/sda1",
|
|
|
|
exp_name => "true",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07: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 17:40:32 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "ENV{} test",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda/sda1",
|
|
|
|
exp_name => "true",
|
2005-03-27 06:10:03 +07:00
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07: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 09:25:20 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "ENV{} test (assign)",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda/sda1",
|
|
|
|
exp_name => "true",
|
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07: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"
|
2006-09-05 05:50:25 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "ENV{} test (assign 2 times)",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda/sda1",
|
|
|
|
exp_name => "true",
|
|
|
|
rules => <<EOF
|
|
|
|
SUBSYSTEMS=="scsi", KERNEL=="sda1", ENV{ASSIGN}="true"
|
|
|
|
SUBSYSTEMS=="scsi", KERNEL=="sda1", ENV{ASSIGN}="absolutely-\$env{ASSIGN}"
|
|
|
|
SUBSYSTEMS=="scsi", KERNEL=="sda1", ENV{ASSIGN}=="yes", NAME="no"
|
|
|
|
SUBSYSTEMS=="scsi", KERNEL=="sda1", ENV{ASSIGN}=="absolutely-true", NAME="true"
|
|
|
|
SUBSYSTEMS=="scsi", KERNEL=="sda1", NAME="bad"
|
2005-08-16 09:25:20 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "ENV{} test (assign2)",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda/sda1",
|
|
|
|
exp_name => "part",
|
|
|
|
rules => <<EOF
|
2006-04-25 00:25:55 +07: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 09:25:20 +07:00
|
|
|
ENV{MAINDEVICE}=="true", NAME="disk"
|
|
|
|
ENV{PARTITION}=="true", NAME="part"
|
|
|
|
NAME="bad"
|
2005-03-27 06:15:07 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "untrusted string sanitize",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda/sda1",
|
|
|
|
exp_name => "sane",
|
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNEL=="sda1", PROGRAM=="/bin/echo -e name; (/sbin/badprogram)", RESULT=="name_ _/sbin/badprogram_", NAME="sane"
|
2005-08-28 20:55:58 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "untrusted string sanitize (don't replace utf8)",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda/sda1",
|
|
|
|
exp_name => "uber",
|
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNEL=="sda1", PROGRAM=="/bin/echo -e \\xc3\\xbcber" RESULT=="\xc3\xbcber", NAME="uber"
|
2005-08-28 20:55:58 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "untrusted string sanitize (replace invalid utf8)",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda/sda1",
|
|
|
|
exp_name => "replaced",
|
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07:00
|
|
|
SUBSYSTEMS=="scsi", KERNEL=="sda1", PROGRAM=="/bin/echo -e \\xef\\xe8garbage", RESULT=="__garbage", NAME="replaced"
|
2005-03-28 16:22:17 +07: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 17:20:05 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "match against empty key string",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda",
|
|
|
|
exp_name => "ok",
|
|
|
|
rules => <<EOF
|
2006-08-21 00:11:32 +07: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 22:45:35 +07: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 20:20:48 +07: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 05:29:38 +07:00
|
|
|
KERNEL=="sda", NAME="ok", RUN+="/bin/sh -c 'ln -s `basename \$\$DEVNAME` %r/testsymlink'"
|
2005-04-04 20:20:48 +07:00
|
|
|
KERNEL=="sda", NAME="not-ok"
|
2005-04-02 22:45:35 +07: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 09:57:03 +07: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 18:10:16 +07: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 10:13:33 +07: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 03:40:09 +07: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 17:52:56 +07: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 19:46:36 +07: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 12:46:31 +07: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-25 00:25:55 +07: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"
|
2007-07-25 20:29:14 +07:00
|
|
|
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"
|
2006-04-25 00:25:55 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "invalid key operation",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda/sda1",
|
|
|
|
exp_name => "yes",
|
|
|
|
rules => <<EOF
|
2007-02-25 07:06:20 +07:00
|
|
|
KERNEL="sda1", NAME="no"
|
2006-04-25 00:25:55 +07:00
|
|
|
KERNEL=="sda1", NAME="yes"
|
2007-02-25 07:06:20 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "operator chars in attribute",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda",
|
|
|
|
exp_name => "yes",
|
|
|
|
rules => <<EOF
|
|
|
|
KERNEL=="sda", ATTR{test:colon+plus}=="?*", NAME="yes"
|
2006-08-13 09:23:16 +07: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"
|
2007-06-03 17:29:46 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "magic subsys/kernel lookup",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda",
|
|
|
|
exp_name => "00:e0:00:fb:04:e1",
|
|
|
|
rules => <<EOF
|
|
|
|
KERNEL=="sda", NAME="\$attr{[net/eth0]address}"
|
2007-08-16 17:45:31 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "TEST absolute path",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda",
|
|
|
|
exp_name => "there",
|
|
|
|
rules => <<EOF
|
|
|
|
TEST=="/etc/hosts", NAME="there"
|
|
|
|
NAME="notthere"
|
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "TEST subsys/kernel lookup",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda",
|
|
|
|
exp_name => "yes",
|
|
|
|
rules => <<EOF
|
|
|
|
KERNEL=="sda", TEST=="[net/eth0]", NAME="yes"
|
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "TEST relative path",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda",
|
|
|
|
exp_name => "relative",
|
|
|
|
rules => <<EOF
|
|
|
|
KERNEL=="sda", TEST=="size", NAME="relative"
|
2008-03-15 05:40:06 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "TEST wildcard substitution (find queue/nr_requests)",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda",
|
|
|
|
exp_name => "found-subdir",
|
|
|
|
rules => <<EOF
|
|
|
|
KERNEL=="sda", TEST=="*/nr_requests", NAME="found-subdir"
|
2008-04-19 02:07:29 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc => "TEST MODE=0000",
|
|
|
|
subsys => "block",
|
|
|
|
devpath => "/block/sda",
|
|
|
|
exp_name => "sda",
|
|
|
|
exp_perms => "0:0:0000",
|
|
|
|
rules => <<EOF
|
|
|
|
KERNEL=="sda", MODE="0000"
|
2003-11-23 20:47:28 +07:00
|
|
|
EOF
|
|
|
|
},
|
|
|
|
);
|
|
|
|
|
|
|
|
# set env
|
2005-03-27 06:10:03 +07:00
|
|
|
$ENV{ENV_KEY_TEST} = "test";
|
2003-11-23 20:47:28 +07:00
|
|
|
$ENV{SYSFS_PATH} = $sysfs;
|
2005-03-27 06:10:03 +07:00
|
|
|
$ENV{UDEV_CONFIG_FILE} = $udev_conf;
|
2003-11-23 20:47:28 +07:00
|
|
|
|
|
|
|
sub udev {
|
2005-03-27 06:10:03 +07:00
|
|
|
my ($action, $subsys, $devpath, $rules) = @_;
|
2003-11-23 20:47:28 +07:00
|
|
|
|
|
|
|
$ENV{DEVPATH} = $devpath;
|
|
|
|
|
2005-03-27 06:10:03 +07:00
|
|
|
# create temporary rules
|
|
|
|
open CONF, ">$udev_rules" || die "unable to create rules file: $udev_rules";
|
|
|
|
print CONF $$rules;
|
2003-11-23 20:47:28 +07:00
|
|
|
close CONF;
|
|
|
|
|
|
|
|
$ENV{ACTION} = $action;
|
|
|
|
system("$udev_bin $subsys");
|
|
|
|
}
|
|
|
|
|
2003-11-24 12:17:34 +07:00
|
|
|
my $error = 0;
|
2003-12-03 23:13:53 +07:00
|
|
|
|
2004-04-16 13:14:49 +07:00
|
|
|
sub permissions_test {
|
2005-03-27 06:10:03 +07:00
|
|
|
my($rules, $uid, $gid, $mode) = @_;
|
2004-04-16 13:14:49 +07:00
|
|
|
|
|
|
|
my $wrong = 0;
|
2005-03-19 05:52:41 +07:00
|
|
|
my $userid;
|
|
|
|
my $groupid;
|
|
|
|
|
2005-03-27 06:10:03 +07:00
|
|
|
$rules->{exp_perms} =~ m/^(.*):(.*):(.*)$/;
|
2004-04-16 13:14:49 +07:00
|
|
|
if ($1 ne "") {
|
2005-03-19 05:52:41 +07:00
|
|
|
if (defined(getpwnam($1))) {
|
|
|
|
$userid = int(getpwnam($1));
|
|
|
|
} else {
|
|
|
|
$userid = $1;
|
|
|
|
}
|
|
|
|
if ($uid != $userid) { $wrong = 1; }
|
2004-04-16 13:14:49 +07:00
|
|
|
}
|
|
|
|
if ($2 ne "") {
|
2005-03-19 05:52:41 +07:00
|
|
|
if (defined(getgrnam($2))) {
|
|
|
|
$groupid = int(getgrnam($2));
|
|
|
|
} else {
|
|
|
|
$groupid = $2;
|
|
|
|
}
|
|
|
|
if ($gid != $groupid) { $wrong = 1; }
|
2004-04-16 13:14:49 +07:00
|
|
|
}
|
|
|
|
if ($3 ne "") {
|
|
|
|
if (($mode & 07777) != oct($3)) { $wrong = 1; };
|
|
|
|
}
|
|
|
|
if ($wrong == 0) {
|
2005-03-19 05:52:41 +07:00
|
|
|
print "permissions: ok\n";
|
2004-04-16 13:14:49 +07:00
|
|
|
} else {
|
2005-03-19 05:52:41 +07: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 13:14:49 +07:00
|
|
|
$error++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
sub major_minor_test {
|
2005-03-27 06:10:03 +07:00
|
|
|
my($rules, $rdev) = @_;
|
2004-04-16 13:14:49 +07:00
|
|
|
|
|
|
|
my $major = ($rdev >> 8) & 0xfff;
|
|
|
|
my $minor = ($rdev & 0xff) | (($rdev >> 12) & 0xfff00);
|
|
|
|
my $wrong = 0;
|
|
|
|
|
2005-03-27 06:10:03 +07:00
|
|
|
$rules->{exp_majorminor} =~ m/^(.*):(.*)$/;
|
2004-04-16 13:14:49 +07:00
|
|
|
if ($1 ne "") {
|
|
|
|
if ($major != $1) { $wrong = 1; };
|
|
|
|
}
|
|
|
|
if ($2 ne "") {
|
|
|
|
if ($minor != $2) { $wrong = 1; };
|
|
|
|
}
|
|
|
|
if ($wrong == 0) {
|
2005-03-19 05:52:41 +07:00
|
|
|
print "major:minor: ok\n";
|
2004-04-16 13:14:49 +07:00
|
|
|
} else {
|
2005-03-19 05:52:41 +07: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 13:14:49 +07:00
|
|
|
$error++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
sub symlink_test {
|
2005-03-27 06:10:03 +07:00
|
|
|
my ($rules) = @_;
|
2004-04-16 13:14:49 +07:00
|
|
|
|
2005-03-27 06:10:03 +07:00
|
|
|
my $output = `ls -l $PWD/$udev_root$rules->{exp_name}`;
|
2004-04-16 13:14:49 +07:00
|
|
|
|
|
|
|
if ($output =~ m/(.*)-> (.*)/) {
|
2005-03-27 06:10:03 +07:00
|
|
|
if ($2 eq $rules->{exp_target}) {
|
2005-03-19 05:52:41 +07:00
|
|
|
print "symlink: ok\n";
|
2004-04-16 13:14:49 +07:00
|
|
|
} else {
|
2005-03-27 06:10:03 +07: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 05:52:41 +07:00
|
|
|
print "symlink: error";
|
2005-03-27 06:10:03 +07:00
|
|
|
if ($rules->{exp_add_error}) {
|
2005-03-19 05:52:41 +07:00
|
|
|
print " as expected\n";
|
2004-04-16 13:14:49 +07:00
|
|
|
} else {
|
2005-03-19 05:52:41 +07:00
|
|
|
print "\n";
|
2004-04-16 13:14:49 +07:00
|
|
|
$error++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
2005-03-27 06:10:03 +07:00
|
|
|
print " expected symlink from: \'$rules->{exp_name}\' to \'$rules->{exp_target}\'\n";
|
2005-03-19 05:52:41 +07:00
|
|
|
print "symlink: not created";
|
2005-03-27 06:10:03 +07:00
|
|
|
if ($rules->{exp_add_error}) {
|
2005-03-19 05:52:41 +07:00
|
|
|
print " as expected\n";
|
2004-04-16 13:14:49 +07:00
|
|
|
} else {
|
2005-03-19 05:52:41 +07:00
|
|
|
print "\n";
|
2004-04-16 13:14:49 +07:00
|
|
|
$error++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2004-02-12 15:49:52 +07:00
|
|
|
sub run_test {
|
2005-03-27 06:10:03 +07:00
|
|
|
my ($rules, $number) = @_;
|
2004-03-13 08:13:59 +07:00
|
|
|
|
2005-03-27 06:10:03 +07:00
|
|
|
print "TEST $number: $rules->{desc}\n";
|
2004-04-16 13:14:49 +07:00
|
|
|
|
2005-03-27 06:10:03 +07:00
|
|
|
if ($rules->{exp_target}) {
|
|
|
|
print "device \'$rules->{devpath}\' expecting symlink '$rules->{exp_name}' to node \'$rules->{exp_target}\'\n";
|
2004-04-16 13:14:49 +07:00
|
|
|
} else {
|
2005-03-27 06:10:03 +07:00
|
|
|
print "device \'$rules->{devpath}\' expecting node \'$rules->{exp_name}\'\n";
|
2004-04-16 13:14:49 +07:00
|
|
|
}
|
|
|
|
|
2003-11-23 20:47:28 +07:00
|
|
|
|
2005-03-27 06:10:03 +07: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 08:13:59 +07:00
|
|
|
|
|
|
|
my ($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size,
|
2005-03-27 06:10:03 +07:00
|
|
|
$atime, $mtime, $ctime, $blksize, $blocks) = stat("$PWD/$udev_root$rules->{exp_name}");
|
2004-03-13 08:13:59 +07:00
|
|
|
|
2005-06-05 10:13:33 +07: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 06:10:03 +07:00
|
|
|
if (defined($rules->{exp_perms})) {
|
|
|
|
permissions_test($rules, $uid, $gid, $mode);
|
2004-03-12 15:58:33 +07:00
|
|
|
}
|
2005-03-27 06:10:03 +07:00
|
|
|
if (defined($rules->{exp_majorminor})) {
|
|
|
|
major_minor_test($rules, $rdev);
|
2004-04-16 13:14:49 +07:00
|
|
|
}
|
2005-03-27 06:10:03 +07:00
|
|
|
if (defined($rules->{exp_target})) {
|
|
|
|
symlink_test($rules);
|
2004-03-13 08:13:59 +07:00
|
|
|
}
|
2005-03-19 05:52:41 +07:00
|
|
|
print "add: ok\n";
|
2003-11-23 20:47:28 +07:00
|
|
|
} else {
|
2005-03-19 05:52:41 +07:00
|
|
|
print "add: error";
|
2005-03-27 06:10:03 +07:00
|
|
|
if ($rules->{exp_add_error}) {
|
2005-03-19 05:52:41 +07:00
|
|
|
print " as expected\n";
|
2004-04-16 13:14:49 +07:00
|
|
|
} else {
|
2005-03-19 05:52:41 +07:00
|
|
|
print "\n";
|
2004-04-16 13:14:49 +07:00
|
|
|
system("tree $udev_root");
|
|
|
|
print "\n";
|
|
|
|
$error++;
|
|
|
|
}
|
2003-11-23 20:47:28 +07:00
|
|
|
}
|
|
|
|
|
2005-03-27 06:10:03 +07: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 11:44:55 +07:00
|
|
|
print "\n\n";
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2005-03-27 06:10:03 +07: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 05:52:41 +07:00
|
|
|
print "remove: error";
|
2005-03-27 06:10:03 +07:00
|
|
|
if ($rules->{exp_rem_error}) {
|
2005-03-19 05:52:41 +07:00
|
|
|
print " as expected\n";
|
2004-04-16 13:14:49 +07:00
|
|
|
} else {
|
2005-03-19 05:52:41 +07:00
|
|
|
print "\n";
|
2004-04-16 13:14:49 +07:00
|
|
|
system("tree $udev_root");
|
|
|
|
print "\n";
|
|
|
|
$error++;
|
|
|
|
}
|
2003-11-23 20:47:28 +07:00
|
|
|
} else {
|
2005-03-19 05:52:41 +07:00
|
|
|
print "remove: ok\n";
|
2003-11-23 20:47:28 +07: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 11:44:55 +07:00
|
|
|
|
2005-03-19 05:52:41 +07:00
|
|
|
print "\n";
|
|
|
|
|
2005-03-28 17:20:05 +07: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 11:44:55 +07:00
|
|
|
system("rm -rf $udev_root");
|
|
|
|
mkdir($udev_root) || die "unable to create udev_root: $udev_root\n";
|
|
|
|
}
|
|
|
|
|
2003-11-23 20:47:28 +07:00
|
|
|
}
|
|
|
|
|
2004-11-11 09:11:00 +07: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 15:49:52 +07:00
|
|
|
# prepare
|
|
|
|
system("rm -rf $udev_root");
|
|
|
|
mkdir($udev_root) || die "unable to create udev_root: $udev_root\n";
|
|
|
|
|
2005-03-27 06:10:03 +07:00
|
|
|
# create config file
|
|
|
|
open CONF, ">$udev_conf" || die "unable to create config file: $udev_conf";
|
2004-02-12 15:49:52 +07:00
|
|
|
print CONF "udev_root=\"$udev_root\"\n";
|
2005-03-27 06:10:03 +07:00
|
|
|
print CONF "udev_rules=\"$udev_rules\"\n";
|
2005-11-10 07:50:06 +07:00
|
|
|
print CONF "udev_log=\"info\"\n";
|
2004-02-12 15:49:52 +07: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 11:44:55 +07: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 15:49:52 +07:00
|
|
|
} else {
|
|
|
|
# test all
|
|
|
|
print "\nudev-test will run ".($#tests + 1)." tests:\n\n";
|
|
|
|
|
2005-03-27 06:10:03 +07:00
|
|
|
foreach my $rules (@tests) {
|
|
|
|
run_test($rules, $test_num);
|
2004-02-12 15:49:52 +07:00
|
|
|
$test_num++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2003-11-23 20:47:28 +07:00
|
|
|
print "$error errors occured\n\n";
|
|
|
|
|
|
|
|
# cleanup
|
|
|
|
system("rm -rf $udev_root");
|
2005-03-27 06:10:03 +07:00
|
|
|
unlink($udev_rules);
|
|
|
|
unlink($udev_conf);
|
2003-11-23 20:47:28 +07:00
|
|
|
|