summaryrefslogtreecommitdiff
path: root/namedev.c
AgeCommit message (Collapse)Author
2005-04-26[PATCH] fix a few stale comments in namedev.cgreg@kroah.com
2005-04-26[PATCH] add bus test for usb-serial bus.greg@kroah.com
2005-04-26[PATCH] udev - drop all methods :)kay.sievers@vrfy.org
> Hi, > as promised yesterday, here is a patch that drops the explicit methods > given in the udev config and implement only one type of rule. > > A rule now consists only of a number of keys to match. All known keys > are valid in any combination. The former configs should work with a few > changes: > > o the "<METHOD>, " at the beginning of the line should be removed > > o the result of the externel program is matched with RESULT= instead if ID= > the PROGRAM= key is only valid if the program exits with zero > (just exit with nozero in a script if the rule should not match) > > o rules are processed in order they appear in the file, no priority > > o if NAME="" is given, udev is instructed to ignore this device, > no node will be created > > > EXAMPLE: > > # combined BUS, SYSFS and KERNEL > BUS="usb", KERNEL="video*", SYSFS_model="Creative Labs WebCam*", NAME="test/webcam%n" > > # exec script only for the first ide drive (hda), all other will be skipped > BUS="ide", KERNEL="hda*", PROGRAM="/home/kay/src/udev.kay/extras/ide-devfs.sh %k %b %n", RESULT="hd*", NAME="%1c", SYMLINK="%2c %3c" > > > The udev-test.pl and test.block works fine here. > Please adapt your config and give it a try. > Here is a slightly better version of the patch. After a conversation with Patrick, we are now able to execute the PROGRAM and also match in all following rules with the RESULT value from this exec. EXAMPLE: We have 7 rules with RESULT and 2 with PROGRAM. Only the 5th rule matches with the callout result from the exec in the 4th rule. RULES: PROGRAM="/bin/echo abc", RESULT="no_match", NAME="web-no-2" KERNEL="video*", RESULT="123", NAME="web-no-3" KERNEL="video*", RESULT="123", NAME="web-no-4" PROGRAM="/bin/echo 123", RESULT="no_match", NAME="web-no-5" KERNEL="video*", RESULT="123", NAME="web-yes" RESULT: Jan 11 23:36:52 pim udev[26050]: namedev_name_device: process rule Jan 11 23:36:52 pim udev[26050]: namedev_name_device: check PROGRAM Jan 11 23:36:52 pim udev[26050]: execute_program: executing '/bin/echo abc' Jan 11 23:36:52 pim udev[26050]: execute_program: result is 'abc' Jan 11 23:36:52 pim udev[26050]: namedev_name_device: PROGRAM returned successful Jan 11 23:36:52 pim udev[26050]: namedev_name_device: check for RESULT dev->result='no_match', udev->program_result='abc' Jan 11 23:36:52 pim udev[26050]: namedev_name_device: RESULT is not matching Jan 11 23:36:52 pim udev[26050]: namedev_name_device: process rule Jan 11 23:36:52 pim udev[26050]: namedev_name_device: check for KERNEL dev->kernel='video*' class_dev->name='video0' Jan 11 23:36:52 pim udev[26050]: namedev_name_device: KERNEL matches Jan 11 23:36:52 pim udev[26050]: namedev_name_device: check for RESULT dev->result='123', udev->program_result='abc' Jan 11 23:36:52 pim udev[26050]: namedev_name_device: RESULT is not matching Jan 11 23:36:52 pim udev[26050]: namedev_name_device: process rule Jan 11 23:36:52 pim udev[26050]: namedev_name_device: check for KERNEL dev->kernel='video*' class_dev->name='video0' Jan 11 23:36:52 pim udev[26050]: namedev_name_device: KERNEL matches Jan 11 23:36:52 pim udev[26050]: namedev_name_device: check for RESULT dev->result='123', udev->program_result='abc' Jan 11 23:36:52 pim udev[26050]: namedev_name_device: RESULT is not matching Jan 11 23:36:52 pim udev[26050]: namedev_name_device: process rule Jan 11 23:36:52 pim udev[26050]: namedev_name_device: check PROGRAM Jan 11 23:36:52 pim udev[26050]: execute_program: executing '/bin/echo 123' Jan 11 23:36:52 pim udev[26050]: execute_program: result is '123' Jan 11 23:36:52 pim udev[26050]: namedev_name_device: PROGRAM returned successful Jan 11 23:36:52 pim udev[26050]: namedev_name_device: check for RESULT dev->result='no_match', udev->program_result='123' Jan 11 23:36:52 pim udev[26050]: namedev_name_device: RESULT is not matching Jan 11 23:36:52 pim udev[26050]: namedev_name_device: process rule Jan 11 23:36:52 pim udev[26050]: namedev_name_device: check for KERNEL dev->kernel='video*' class_dev->name='video0' Jan 11 23:36:52 pim udev[26050]: namedev_name_device: KERNEL matches Jan 11 23:36:52 pim udev[26050]: namedev_name_device: check for RESULT dev->result='123', udev->program_result='123' Jan 11 23:36:52 pim udev[26050]: namedev_name_device: RESULT matches Jan 11 23:36:52 pim udev[26050]: namedev_name_device: found matching rule, 'video*' becomes '' Jan 11 23:36:52 pim udev[26050]: namedev_name_device: name, 'web-yes' is going to have owner='', group='', mode = 0600
2005-04-26[PATCH] udev - make exec_callout() reusablekay.sievers@vrfy.org
Here is a patch that switches exec_callout() to be reusable. I want it to be callable in a different context.
2005-04-26[PATCH] udev - exec status fix for klibckay.sievers@vrfy.org
Here is a patch to remove the ifdef's and fix klibc instead.
2005-04-26[PATCH] add IGNORE rule typechristophe@saout.de
On Wed, Dec 31, 2003 at 11:24:53AM -0800, Greg KH wrote: > > There should be a possibility to tell udev not to create a device node. > > > > device-mapper: Usually set up by libdevmapper (or EVMS tools) which > > creates the device node on its own under /dev/mapper/<name>. > > > > With udev a second device is created named /dev/dm-<minor> which is not > > really needed. > > Good point. Ok, I'll agree with you. Care to make up a patch for this > kind of feature? Yes, I can try. There was no way to tell not to do anything so I created one. Errors are signalled via negative return values, so I thought that a positive, non-zero one could mean to ignore the device. I don't like it but perhaps you have a better solution.
2005-04-26[PATCH] replace list_for_each with list_for_each_entry, saving a few lines ↵greg@kroah.com
of code.
2005-04-26[PATCH] Fix udev gcc-2.95.4 compatazarah@nosferatu.za.org
Two liner to get gcc-2.95.4 to compile udev.
2005-04-26[PATCH] fix for apply_format()kay.sievers@vrfy.org
fix possible NULL pointer in '%c' callout substitution and cleanup '%D' debug text
2005-04-26[PATCH] 'ide' missing in bus_files[]kay.sievers@vrfy.org
my syslog want's to contact you :) Dec 25 20:37:48 pim udev[2274]: wait_for_device_to_initialize: Did not find bus type 'ide' on list of bus_id_files, contact greg@kroah.com We need to put 'ide' to the bus_files array, don't know which file to use...
2005-04-26[PATCH] If a LABEL rule has a BUS id, then we must check to see if the ↵greg@kroah.com
device is on a bus.
2005-04-26[PATCH] If a CALLOUT rule has a BUS id, then we must check to see if the ↵greg@kroah.com
device is on a bus. Thanks to Martin Schlemmer <azarah@nosferatu.za.org> for pointing this out.
2005-04-26[PATCH] add pci to the bus_files list.greg@kroah.com
2005-04-26[PATCH] fix long delay for all devices in namedevgreg@kroah.com
Now we only sleep if we can't find the device file, and we have a hack to sleep for 1 second if we are on a partition. This will be removed when the libsysfs change gets made...
2005-04-26[PATCH] fix complier warning in namedev.cgreg@kroah.com
2005-04-26[PATCH] add ability to have up to 5 SYSFS_ file/value pairs for the LABEL rule.greg@kroah.com
2005-04-26[PATCH] add any valid devicekay.sievers@vrfy.org
2005-04-26[PATCH] introduce format char 'k' for kernel-namekay.sievers@vrfy.org
Attached is a patch that introduces the format char 'k' to be replaced with the kernel name. I like to have it in a callout script. I've moved the build_kernel_name() back to namedev_name_device() since we don't expect it growing cause of 'sdaj' :)
2005-04-26[PATCH] Just live with a sleep(1) in namedev for now until libsysfs is fixed up.greg@kroah.com
2005-04-26[PATCH] try to wait until the proper device file shows up in sysfs.greg@kroah.com
this still isn't working correctly for partitions, so don't think this is the final version...
2005-04-26[PATCH] remove unneeded TODO and FIXME entrygreg@kroah.com
Thanks to Kay for pointing it out to me.
2005-04-26[PATCH] get part of callout return stringkay.sievers@vrfy.org
Try this patch if you like, to get special parts of the callout output. This beast works now: CALLOUT, BUS="scsi", PROGRAM="/bin/echo -n node link1 link2", ID="node *", NAME="%1c", SYMLINK="%2c %3c" The callout returned string is separated by spaces and is addressed by the "len" value of the 'c' format char. Since we support symlinks, this my be useful for other uses of callout too. introduce 'len number' for format chars the first use is 'c'-the callout return to select a part of the output string like: CALLOUT, BUS="scsi", PROGRAM="/bin/echo -n node link1 link2", ID="node *", NAME="%1c", SYMLINK="%2c %3c" (note: first part is requested by len=1, len=0 will return the whole string) add a test to udev-test.pl
2005-04-26[PATCH] remove '\n' from end of callout returnkay.sievers@vrfy.org
remove possible newline at end of callout output, for easier matching with ID=
2005-04-26[PATCH] pre-libsysfs-0.4.0 patchdsteklof@us.ibm.com
I am sending you a pre-release patch. It's everything that's in our current CVS tree. It adds the functionality you've been looking for. Please play with this before checking it into your tree, I'd like to know if it's ok with you or if you find problems. I have tested this out with test.all and the perl regression test. Let me know what you think. Still need to do more testing for our work and add some more functions related to the changes. I've gone into namedev.c and udev-add.c to make the necessary changes in line with the library. I have not gone and edited any of the "extras". Changes: 1) Libsysfs object structures work more as handles now, their included directories or devices are labeled private. If you need attributes from a sysfs_class_device, call the available function and don't access the directory directly. Same holds true for a sysfs_class_device sysfs_device. Do not access the link directly but call the function sysfs_get_classdev_device() instead. We only populate entries upon request, makes things faster and uses less memory. 2) Added sysfs_get_classdev_parent() as requested. 3) Changed getpagesize to sysconf. 4) Added sysfs_refresh_attributes function for refreshing views of attribute lists. We still need to add refresh for links and subdirs. All udev needs to do is keep calling sysfs_get_classdev_attr() and that will internally call the refresh routine.
2005-04-26[PATCH] change devfs disk name rule from 'disk' to 'disc'greg@kroah.com
2005-04-26[PATCH] experimental (very simple) SYMLINK creationkay.sievers@vrfy.org
> > here is a experimental symlink creation patch - for discussion, > > in which direction we should go. > > It is possible now to define SYMLINK= after the NAME= in udev.rules. > > The link is relative to the node, but the path is not optimized now > > if the node and the link are in the same nested directory. > > Only one link is supported, cause i need to sleep now :) > > > > 06-simple-symlink-creation.diff > > simple symlink creation > > reorganized udev-remove to have access to the symlink field > > subdir creation/removal are functions now > > udev-test.pl tests for link creation/removal Here is a new version with relative link target path optimization an better tests in udev-test.pl: LABEL, BUS="scsi", vendor="IBM-ESXS", NAME="1/2/a/b/node", SYMLINK="1/2/c/d/symlink" Dec 7 06:48:34 pim udev[13789]: create_node: symlink 'udev-root/1/2/c/d/symlink' to node '1/2/a/b/node' requested Dec 7 06:48:34 pim udev[13789]: create_path: created 'udev-root/1/2/c' Dec 7 06:48:34 pim udev[13789]: create_path: created 'udev-root/1/2/c/d' Dec 7 06:48:34 pim udev[13789]: create_node: symlink(../../a/b/node, udev-root/1/2/c/d/symlink)
2005-04-26[PATCH] pattern match for label methodkay.sievers@vrfy.org
switch LABEL search to pattern match add a test for pattern match in LABEL remove useless rule from udev.rules
2005-04-26[PATCH] a bug in linefeed removalkay.sievers@vrfy.org
While I was adding pattern match to the LABEL method i hit a bug. We modify a string returned from libsysfs, so with every iteration is is truncated by one char: Dec 4 02:27:16 pim udev[23307]: do_label: dev->bus='scsi' sysfs_device->bus='scsi' Dec 4 02:27:16 pim udev[23307]: do_label: look for device attribute 'vendor' Dec 4 02:27:16 pim udev[23307]: do_label: xxx 'IBM-ESXS ' Dec 4 02:27:16 pim udev[23307]: do_label: compare attribute 'vendor' value 'IBM-ESX' with '?IBM-ESXS' Dec 4 02:27:16 pim udev[23307]: do_label: dev->bus='scsi' sysfs_device->bus='scsi' Dec 4 02:27:16 pim udev[23307]: do_label: look for device attribute 'vendor' Dec 4 02:27:16 pim udev[23307]: do_label: xxx 'IBM-ESX' Dec 4 02:27:16 pim udev[23307]: do_label: compare attribute 'vendor' value 'IBM-ES' with 'IBM-ESXS?' Dec 4 02:27:16 pim udev[23307]: do_label: dev->bus='scsi' sysfs_device->bus='scsi' Dec 4 02:27:16 pim udev[23307]: do_label: look for device attribute 'vendor' Dec 4 02:27:16 pim udev[23307]: do_label: xxx 'IBM-ES' Dec 4 02:27:16 pim udev[23307]: do_label: compare attribute 'vendor' value 'IBM-E' with 'IBM-ES??' Dec 4 02:27:16 pim udev[23307]: do_label: dev->bus='scsi' sysfs_device->bus='scsi' Dec 4 02:27:16 pim udev[23307]: do_label: look for device attribute 'vendor' Dec 4 02:27:16 pim udev[23307]: do_label: xxx 'IBM-E' Dec 4 02:27:16 pim udev[23307]: do_label: compare attribute 'vendor' value 'IBM-' with 'IBM-ESXSS' I changed the behavior to remove only the line feed. 03-bug-in-linefeed-removal.diff remove only the line feed from string not every last char
2005-04-26[PATCH] fix permission handling logicgreg@kroah.com
Now we can handle wildcards properly within the permission file.
2005-04-26[PATCH] add support for the default_mode variable, as it is documented...greg@kroah.com
2005-04-26[PATCH] pattern matching for namedevkay.sievers@vrfy.org
As promised yesterday, here is a patch to implement a more advanced pattern matching instead of the simple '*'. We can remove the "tty"="tty" line from udev.rules now and replace "tty*" by "tty[0-9]*" to catch only the vc's. implement pattern matching in namedev '*' - to match zero or more chars '?' - to match exactly one char '[]' - character classes with ranges '[0-9]'and negation [!A]
2005-04-26[PATCH] add support for a main udev config file, udev.conf.greg@kroah.com
the older udev.config file is now called udev.rules. This allows us to better control configuration values, and move away from the environment variables.
2005-04-26[PATCH] split out the namedev config parsing logic to namedev_parse.cgreg@kroah.com
2005-04-26[PATCH] rename namedev's get_attr() to be main namedev_name_device() as ↵greg@kroah.com
that's what it really is.
2005-04-26[PATCH] catch replace device by wildcardkay.sievers@vrfy.org
catch device name by wildcard to support a whole class of devices by just one config line like: REPLACE, KERNEL="tty*", NAME="vc/%n"
2005-04-26[PATCH] operate on the rules in the order they are in the config file ↵greg@kroah.com
(within the rule type)
2005-04-26[PATCH] fix problem where we were not looking at the BUS value.greg@kroah.com
2005-04-26[PATCH] Add format modifier for devfs like namingarnd@arndb.de
On Monday 24 November 2003 01:29, Greg KH wrote: > I think with the ability to capture the output of the CALLOUT rule, > combined with the ability to put format modifiers in the CALLOUT program > string, we now have everything in place to emulate the existing devfs > naming scheme. Anyone want to verify this or not? I would prefer to have the ability of creating partition nodes in devfs style built-in to udev. Devfs used to call the whole disk e.g. "/dev/dasd/0123/disk" and the partitions "/dev/dasd/0123/part[1-3]". This can obviously be done with a CALLOUT rule, but its common enough to make it a format modifier. AFAIK, this scheme has been used for ide, scsi and dasd disks, which is about 99% of all disks ever connected to Linux.
2005-04-26[PATCH] more config file parsing robustnessazarah@nosferatu.za.org
udev kept on segfaulting when it was in use, and not having the time (and building it with DEBUG=true showing nothing), I have not tracked it until tonight. Seems like I made a type-o, and forgotten the ':' between one line's group and permission parameters. Attached patch should stop the segfault, and warn at that at least.
2005-04-26[PATCH] namedev.c strcat tweakkay.sievers@vrfy.org
02-namedev.c-strcat-tweak.diff o cat the substitution to the already known end of the string instead of searching it another time
2005-04-26[PATCH] overall whitespace + debug text conditioningkay.sievers@vrfy.org
01-overall-whitespace+debug-text-conditioning.diff o cleanup whitespace o clarify a few comments o enclose all printed debug string values in ''
2005-04-26[PATCH] added ability to put format specifiers in the CALLOUT program string.greg@kroah.com
2005-04-26[PATCH] - format char for CALLOUT outputkay.sievers@vrfy.org
here is a patch for inserting the callout output into NAME=. ID= supports the usual wildcard to compare with the output. I've moved all wildcard matching to a function cause this was the third occurrence. Also attached is the last whitespace cleanup and debug text corrections. The callout patch depends on the whitespace patch. CALLOUT, BUS="usb", PROGRAM="/bin/echo -n return", ID="ret*", NAME="webcam-%c-" results in: Nov 21 17:33:51 pim udev[20399]: get_major_minor: found major = 81, minor = 0 Nov 21 17:33:51 pim udev[20399]: exec_callout: callout to '/bin/echo -n return' Nov 21 17:33:51 pim udev[20399]: exec_callout: callout returned 'return' Nov 21 17:33:51 pim udev[20399]: get_attr: substitute callout output 'return' Nov 21 17:33:51 pim udev[20399]: udev_add_device: name = webcam-return- Nov 21 17:33:51 pim udev[20399]: create_node: mknod(/udev/webcam-return-, 020660, 81, 0)
2005-04-26[PATCH] more namedev whitespace cleanupskay.sievers@vrfy.org
attached is the last whitespace cleanup and debug text corrections.
2005-04-26[PATCH] add getgrnam and getpwnam to klibc_fixups files.greg@kroah.com
Hopefully the klibc_fixups code will not be needed eventually.
2005-04-26[PATCH] fix segfault in parsing bad udev.permissions filemd@Linux.IT
2005-04-26[PATCH] support arguments in callout execkay.sievers@vrfy.org
here is argument support for CALLOUT exec: CALLOUT, PROGRAM="/bin/echo -n xxx", BUS="usb", ID="xxx", NAME="webcam%n" results in: Nov 20 02:35:20 pim udev[30422]: get_major_minor: found major = 81, minor = 0 Nov 20 02:35:20 pim udev[30422]: exec_callout: callout to /bin/echo -n xxx Nov 20 02:35:20 pim udev[30422]: exec_callout: callout returned 'xxx' Nov 20 02:35:20 pim udev[30422]: get_attr: kernel number appended: 0 The feature is really nice, but the maximum argument count is hard coded to 8.
2005-04-26[PATCH] namedev.c - change order of fields in CALLOUTkay.sievers@vrfy.org
I want to bring the CALLOUT field ordering in line with the other methods, cause the current parsing relies on the ordering it's good to have it like the others. The BUS= is now the first expected field. Also made the last two remaining field names to uppercase and the man page callout example is updated.
2005-04-26[PATCH] namedev.c whitespace + debug text cleanupkay.sievers@vrfy.org
here is mainly a whitespace cleanup for namedev.c. I changed the dbg_parse() output a bit for better readability: current: Nov 19 19:00:59 pim udev[25582]: do_number: NUMBER path='/sys/devices/pci0000:00/0000:00:1d.1/usb2/2-1/2-1.1' Nov 19 19:00:59 pim udev[25582]: do_number: NUMBER temp='/2-1.1' id='00:07.1' Nov 19 19:00:59 pim udev[25582]: do_number: NUMBER temp='/2-1' id='00:07.1' Nov 19 19:00:59 pim udev[25582]: do_number: NUMBER path='/sys/devices/pci0000:00/0000:00:1d.1/usb2/2-1/2-1.1' Nov 19 19:00:59 pim udev[25582]: do_number: NUMBER temp='/2-1.1' id='00:0b.0' Nov 19 19:00:59 pim udev[25582]: do_number: NUMBER temp='/2-1' id='00:0b.0' Nov 19 19:00:59 pim udev[25582]: do_number: NUMBER path='/sys/devices/pci0000:00/0000:00:1d.1/usb2/2-1/2-1.1' Nov 19 19:00:59 pim udev[25582]: do_number: NUMBER temp='/2-1.1' id='2-1.1' Nov 19 19:00:59 pim udev[25582]: do_number: device id '2-1.1' becomes 'webcam%n' - owner='', group ='', mode=0 becomes: Nov 19 19:23:40 pim udev[26091]: do_number: search '00:07.1' in '/2-1.1', path='/sys/devices/pci0000:00/0000:00:1d.1/usb2/2-1/2-1.1' Nov 19 19:23:40 pim udev[26091]: do_number: search '00:07.1' in '/2-1', path='/sys/devices/pci0000:00/0000:00:1d.1/usb2/2-1' Nov 19 19:23:40 pim udev[26091]: do_number: search '00:0b.0' in '/2-1.1', path='/sys/devices/pci0000:00/0000:00:1d.1/usb2/2-1/2-1.1' Nov 19 19:23:40 pim udev[26091]: do_number: search '00:0b.0' in '/2-1', path='/sys/devices/pci0000:00/0000:00:1d.1/usb2/2-1' Nov 19 19:23:40 pim udev[26091]: do_number: search '2-1.1' in '/2-1.1', path='/sys/devices/pci0000:00/0000:00:1d.1/usb2/2-1/2-1.1' Nov 19 19:23:40 pim udev[26091]: do_number: found id '2-1.1', 'video0' becomes 'webcam%n' - owner='', group ='', mode=0
2005-04-26[PATCH] fix namedev.c to build with older version of gcc.greg@kroah.com