e530e0446b
arbitrary commands when devices come and go in the device tree (which is different than the /dev directory). This is an initial version. Much of the planned power isn't here. Instead of doing the full matching, we always run /etc/devd-generic. /etc/devd.generic will go away at some point, I think. I'm committing it in this early state so I can start getting feedback from early adapters. Approved by: re
93 lines
2.8 KiB
Plaintext
93 lines
2.8 KiB
Plaintext
// $FreeBSD$
|
|
//
|
|
// Refer to devd.conf(5) and devd(8) man pages for the details on how to
|
|
// run and configure devd.
|
|
//
|
|
|
|
// NB: All regular expressions have an implicit ^$ around them.
|
|
|
|
options {
|
|
// Each directory directive adds a directory the list of directories
|
|
// that we scan for files. Files are read-in in the order that they
|
|
// are returned from readdir(3). The rule-sets are combined to
|
|
// create a DFA that's used to match events to actions.
|
|
directory "/etc/devd";
|
|
directory "/usr/local/etc/devd";
|
|
pid-file "/var/run/devd.pid";
|
|
|
|
// Setup some shorthand for regex that we use later in the file.
|
|
set ethernet-nic-regex
|
|
"(an|ar|aue|awi|bge|cm|cnw|cs|cue|dc|de|ed|el|em|ep|ex|\
|
|
fe|fxp|gem|gx|hme|ie|kue|lge|lnc|my|nge|pcn|ray|rl|\
|
|
sf|sis|sk|sn|snc|ste|ti|tl|tx|txp|vr|vx|wb|wi|xe|xl)[0-9]+";
|
|
set scsi-controller-regex
|
|
"(adv|advw|aic|aha|ahb|ahc|ahd|bt|ct|iir|isp|mly|mpt|ncv|nsp|\
|
|
stg|sym|wds)[0-9]+";
|
|
};
|
|
|
|
// Note that the attach/detach with the highest value wins, so that one can
|
|
// override these general rules.
|
|
|
|
// NB: device-name is shorthand for 'match device-name'
|
|
|
|
//
|
|
// For ethernet like devices, the default is to run dhclient. Due to
|
|
// a historical accident, the name of this script it called pccard_ether
|
|
//
|
|
attach 0 {
|
|
device-name "$ethernet-nic-regex";
|
|
action "/etc/pccard_ether $device-name start";
|
|
};
|
|
|
|
detach 0 {
|
|
device-name "$ethernet-nic-regex";
|
|
action "/etc/pccard_ether $device-name stop";
|
|
};
|
|
|
|
// An entry like this might be in a different file, but is included here
|
|
// as an example of how to override things. Normally 'ed20' would match
|
|
// the above attach/detach stuff, but the value of 100 makes it
|
|
// ed20 is hard wired to 1.2.3.4
|
|
attach 100 {
|
|
device-name "ed20";
|
|
action "ifconfig $device-name inet 1.2.3.4 netmask 0xffff0000";
|
|
};
|
|
detach 100 {
|
|
device-name "ed20";
|
|
};
|
|
|
|
//
|
|
// Rescan scsi device-names on attach, but not detach.
|
|
//
|
|
attach 0 {
|
|
device-name "$scsi-controller-regex";
|
|
action "camcontrol rescan all";
|
|
};
|
|
|
|
// Don't even try to second guess what to do about drivers that don't
|
|
// match here. Instead, pass it off to a smart script to deal.
|
|
nomatch 0 {
|
|
action "/usr/local/bin/smart-loader $pnpinfo $location $bus";
|
|
};
|
|
|
|
// The following might be an example of something that a vendor might
|
|
// install if you were to add their device. This might reside in
|
|
// /usr/local/etc/devd/deqna.conf. A deqna is, in this hypothetical
|
|
// example, a pccard ethernet-like device. Students of history may
|
|
// know other devices by this name, and will get the in-jokes in this
|
|
// entry.
|
|
nomatch 10 {
|
|
match "bus" "pccard[0-9]+";
|
|
match "manufacturer" "0x1234";
|
|
match "product" "0x2323";
|
|
action "kldload if_deqna";
|
|
};
|
|
attach 10 {
|
|
device-name "^deqna[0-9]+";
|
|
action "/etc/pccard_ether $device-name start";
|
|
};
|
|
detach 10 {
|
|
device-name "^deqna[0-9]+";
|
|
action "/etc/pccard_ether $device-name stop";
|
|
};
|