freebsd-dev/sbin/devd/devd.conf
Warner Losh e530e0446b devd. A daemon that hooks into the kernel's /dev/devctl to produce
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
2002-10-20 22:15:17 +00:00

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";
};