aboutsummaryrefslogtreecommitdiff
path: root/sbin
diff options
context:
space:
mode:
authorBrad Davis <brd@FreeBSD.org>2018-08-21 16:51:45 +0000
committerBrad Davis <brd@FreeBSD.org>2018-08-21 16:51:45 +0000
commit44e1285c7b19e6d1cdb237b0948e89b4891ca5be (patch)
tree187d78af89eabf5ee1bf6ff3f9c39a346a310e92 /sbin
parent83a90bffd8d7374d27d8d63097c5205af7bfa4f6 (diff)
downloadsrc-44e1285c7b19e6d1cdb237b0948e89b4891ca5be.tar.gz
src-44e1285c7b19e6d1cdb237b0948e89b4891ca5be.zip
Move all devd related configs to sbin/devd/
This helps with pkgbase as it switches these to using CONFS so they are properly tagged as config files. Approved by: will (mentor), imp Differential Revision: https://reviews.freebsd.org/D16781
Notes
Notes: svn path=/head/; revision=338144
Diffstat (limited to 'sbin')
-rw-r--r--sbin/devd/Makefile24
-rw-r--r--sbin/devd/apple.conf80
-rw-r--r--sbin/devd/asus.conf74
-rw-r--r--sbin/devd/devd.conf353
-rw-r--r--sbin/devd/devmatch.conf20
-rw-r--r--sbin/devd/hyperv.conf108
-rw-r--r--sbin/devd/uath.conf146
-rw-r--r--sbin/devd/ulpt.conf18
-rw-r--r--sbin/devd/zfs.conf77
9 files changed, 900 insertions, 0 deletions
diff --git a/sbin/devd/Makefile b/sbin/devd/Makefile
index 85d0d591c6db..0d6c54f24f23 100644
--- a/sbin/devd/Makefile
+++ b/sbin/devd/Makefile
@@ -4,6 +4,30 @@
WARNS?= 3
PACKAGE=runtime
+CONFGROUPS= CONFS DEVD
+CONFS= devd.conf
+DEVD= devmatch.conf
+DEVDDIR= /etc/devd
+.if ${MK_ACPI} != "no"
+DEVD+= asus.conf
+.endif
+
+.if ${MK_HYPERV} != "no"
+DEVD+= hyperv.conf
+.endif
+
+.if ${MK_USB} != "no"
+DEVD+= uath.conf ulpt.conf
+.endif
+
+.if ${MACHINE_ARCH} == "powerpc"
+DEVD+= apple.conf
+.endif
+
+.if ${MK_ZFS} != "no"
+DEVD+= zfs.conf
+.endif
+
PROG_CXX=devd
SRCS= devd.cc token.l parse.y y.tab.h
MAN= devd.8 devd.conf.5
diff --git a/sbin/devd/apple.conf b/sbin/devd/apple.conf
new file mode 100644
index 000000000000..3084cd459fd4
--- /dev/null
+++ b/sbin/devd/apple.conf
@@ -0,0 +1,80 @@
+# $FreeBSD$
+#
+# PowerPC Apple specific devd events
+
+# Keyboard power key
+notify 0 {
+ match "system" "PMU";
+ match "subsystem" "Button";
+ action "shutdown -p now";
+};
+
+
+# PowerBook and iBook lid close.
+notify 0 {
+ match "system" "PMU";
+ match "subsystem" "lid";
+ match "type" "close";
+ action "shutdown -p now";
+};
+
+
+# The next blocks enable brightness hotkeys that can be found on Apple laptops
+notify 0 {
+ match "system" "PMU";
+ match "subsystem" "keys";
+ match "type" "brightness";
+ match "notify" "down";
+ action "sysctl dev.backlight.0.level=\
+ $(expr `sysctl -n dev.backlight.0.level` - 10)";
+};
+
+notify 0 {
+ match "system" "PMU";
+ match "subsystem" "keys";
+ match "type" "brightness";
+ match "notify" "up";
+ action "sysctl dev.backlight.0.level=\
+ $(expr `sysctl -n dev.backlight.0.level` + 10)";
+};
+
+
+# The next blocks enable volume hotkeys that can be found on Apple laptops
+notify 0 {
+ match "system" "PMU";
+ match "subsystem" "keys";
+ match "type" "mute";
+ action "mixer 0";
+};
+
+notify 0 {
+ match "system" "PMU";
+ match "subsystem" "keys";
+ match "type" "volume";
+ match "notify" "down";
+ action "mixer vol -10";
+};
+
+notify 0 {
+ match "system" "PMU";
+ match "subsystem" "keys";
+ match "type" "volume";
+ match "notify" "up";
+ action "mixer vol +10";
+};
+
+# Eject key
+notify 0 {
+ match "system" "PMU";
+ match "subsystem" "keys";
+ match "type" "eject";
+ action "camcontrol eject cd0";
+};
+
+# Equivalent to the ACPI/ACAD notify
+notify 10 {
+ match "system" "PMU";
+ match "subsystem" "POWER";
+ match "type" "ACLINE";
+ action "service power_profile $notify";
+};
diff --git a/sbin/devd/asus.conf b/sbin/devd/asus.conf
new file mode 100644
index 000000000000..a195a58bc51d
--- /dev/null
+++ b/sbin/devd/asus.conf
@@ -0,0 +1,74 @@
+# $FreeBSD$
+#
+# ASUS specific devd events
+
+# The next blocks enable volume hotkeys that can be found on the Asus laptops
+notify 0 {
+ match "system" "ACPI";
+ match "subsystem" "ASUS";
+ match "notify" "0x32";
+ action "mixer 0";
+};
+
+notify 0 {
+ match "system" "ACPI";
+ match "subsystem" "ASUS";
+ match "notify" "0x31";
+ action "mixer vol -10";
+};
+
+notify 0 {
+ match "system" "ACPI";
+ match "subsystem" "ASUS";
+ match "notify" "0x30";
+ action "mixer vol +10";
+};
+
+# The next blocks enable volume hotkeys that can be found on the Asus EeePC
+notify 0 {
+ match "system" "ACPI";
+ match "subsystem" "ASUS-Eee";
+ match "notify" "0x13";
+ action "mixer 0";
+};
+
+notify 0 {
+ match "system" "ACPI";
+ match "subsystem" "ASUS-Eee";
+ match "notify" "0x14";
+ action "mixer vol -10";
+};
+
+notify 0 {
+ match "system" "ACPI";
+ match "subsystem" "ASUS-Eee";
+ match "notify" "0x15";
+ action "mixer vol +10";
+};
+
+# Enable user hotkeys that can be found on the Asus EeePC
+# The four keys above the keyboard notify 0x1a through to 0x1d respectively
+#notify 0 {
+# match "system" "ACPI";
+# match "subsystem" "ASUS-Eee";
+# match "notify" "0x1a";
+# action "";
+#};
+#notify 0 {
+# match "system" "ACPI";
+# match "subsystem" "ASUS-Eee";
+# match "notify" "0x1b";
+# action "";
+#};
+#notify 0 {
+# match "system" "ACPI";
+# match "subsystem" "ASUS-Eee";
+# match "notify" "0x1c";
+# action "";
+#};
+#notify 0 {
+# match "system" "ACPI";
+# match "subsystem" "ASUS-Eee";
+# match "notify" "0x1d";
+# action "";
+#};
diff --git a/sbin/devd/devd.conf b/sbin/devd/devd.conf
new file mode 100644
index 000000000000..956a2970d436
--- /dev/null
+++ b/sbin/devd/devd.conf
@@ -0,0 +1,353 @@
+# $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.
+# NB: device-name is shorthand for 'match device-name'
+
+options {
+ # Each "directory" directive adds a directory to the list of
+ # directories that we scan for files. Files are loaded 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.
+ #XXX Yes, these are gross -- imp
+ set scsi-controller-regex
+ "(aac|adv|adw|aha|ahc|ahd|aic|amr|bt|ciss|dpt|\
+ esp|ida|iir|ips|isp|mlx|mly|mpr|mps|mpt|ncr|ncv|nsp|stg|sym|\
+ trm)\
+ [0-9]+";
+ set wifi-driver-regex
+ "(ath|bwi|bwn|ipw|iwi|iwm|iwn|malo|mwl|ral|rsu|rtwn|rum|run|\
+ uath|upgt|ural|urtw|wi|wpi|wtap|zyd)[0-9]+";
+};
+
+# Note that the attach/detach with the highest value wins, so that one can
+# override these general rules.
+
+#
+# Configure the interface on attach. Due to a historical accident, this
+# script is called pccard_ether.
+#
+# NB: DETACH events are ignored; the kernel should handle all cleanup
+# (routes, arp cache). Beware of races against immediate create
+# of a device with the same name; e.g.
+# ifconfig bridge0 destroy; ifconfig bridge0 create
+#
+notify 0 {
+ match "system" "IFNET";
+ match "subsystem" "!usbus[0-9]+";
+ match "type" "ATTACH";
+ action "/etc/pccard_ether $subsystem start";
+};
+
+#
+# Try to start dhclient on Ethernet-like interfaces when the link comes
+# up. Only devices that are configured to support DHCP will actually
+# run it. No link down rule exists because dhclient automatically exits
+# when the link goes down.
+#
+notify 0 {
+ match "system" "IFNET";
+ match "type" "LINK_UP";
+ media-type "ethernet";
+ action "service dhclient quietstart $subsystem";
+};
+
+#
+# Like Ethernet devices, but separate because 802.11 require spawning
+# wlan(4) interface.
+#
+attach 0 {
+ device-name "$wifi-driver-regex";
+ action "/etc/pccard_ether $device-name startchildren";
+};
+detach 0 {
+ device-name "$wifi-driver-regex";
+ action "/etc/pccard_ether $device-name stopchildren";
+};
+notify 0 {
+ match "system" "IFNET";
+ match "type" "LINK_UP";
+ media-type "802.11";
+ action "service dhclient quietstart $subsystem";
+};
+
+# An entry like this might be in a different file, but is included here
+# as an example of how to override things. Normally 'ed50' would match
+# the above attach/detach stuff, but the value of 100 makes it
+# hard wired to 1.2.3.4.
+attach 100 {
+ device-name "ed50";
+ action "ifconfig $device-name inet 1.2.3.4 netmask 0xffff0000";
+};
+detach 100 {
+ device-name "ed50";
+};
+
+# When a USB Bluetooth dongle appears, activate it
+attach 100 {
+ device-name "ubt[0-9]+";
+ action "service bluetooth quietstart $device-name";
+};
+detach 100 {
+ device-name "ubt[0-9]+";
+ action "service bluetooth quietstop $device-name";
+};
+
+# Firmware downloader for Atheros AR3011 based USB Bluetooth devices
+#attach 100 {
+# match "vendor" "0x0cf3";
+# match "product" "0x3000";
+# action "sleep 2 && /usr/sbin/ath3kfw -d $device-name -f /usr/local/etc/ath3k-1.fw";
+#};
+
+# When a USB keyboard arrives, attach it as the console keyboard.
+attach 100 {
+ device-name "ukbd0";
+ action "service syscons setkeyboard /dev/ukbd0";
+};
+detach 100 {
+ device-name "ukbd0";
+ action "service syscons setkeyboard /dev/kbd0";
+};
+
+notify 100 {
+ match "system" "DEVFS";
+ match "subsystem" "CDEV";
+ match "type" "CREATE";
+ match "cdev" "atp[0-9]+";
+
+ action "service moused quietstart $cdev";
+};
+
+notify 100 {
+ match "system" "DEVFS";
+ match "subsystem" "CDEV";
+ match "type" "CREATE";
+ match "cdev" "ums[0-9]+";
+
+ action "service moused quietstart $cdev";
+};
+
+notify 100 {
+ match "system" "DEVFS";
+ match "subsystem" "CDEV";
+ match "type" "CREATE";
+ match "cdev" "wsp[0-9]+";
+
+ action "service moused quietstart $cdev";
+};
+
+notify 100 {
+ match "system" "DEVFS";
+ match "subsystem" "CDEV";
+ match "type" "DESTROY";
+ match "cdev" "ums[0-9]+";
+
+ action "service moused stop $cdev";
+};
+
+# Firmware download into the ActiveWire board. After the firmware download is
+# done, the device detaches and reappears as something new and shiny
+# automatically.
+attach 100 {
+ match "vendor" "0x0854";
+ match "product" "0x0100";
+ match "release" "0x0000";
+ action "/usr/local/bin/ezdownload -f /usr/local/share/usb/firmware/0854.0100.0_01.hex $device-name";
+};
+
+# Firmware download for Entrega Serial DB25 adapter.
+attach 100 {
+ match "vendor" "0x1645";
+ match "product" "0x8001";
+ match "release" "0x0101";
+ action "if ! kldstat -n usio > /dev/null 2>&1 ; then kldload usio; fi; /usr/sbin/ezdownload -v -f /usr/share/usb/firmware/1645.8001.0101 /dev/$device-name";
+};
+
+# This entry starts the ColdSync tool in daemon mode. Make sure you have an up
+# to date /usr/local/etc/palms. We override the 'listen' settings for port and
+# type in /usr/local/etc/coldsync.conf.
+notify 100 {
+ match "system" "USB";
+ match "subsystem" "DEVICE";
+ match "type" "ATTACH";
+ match "vendor" "0x082d";
+ match "product" "0x0100";
+ match "release" "0x0100";
+ action "/usr/local/bin/coldsync -md -p /dev/$cdev -t usb";
+};
+
+#
+# Rescan SCSI device-names on attach, but not detach. However, it is
+# disabled by default due to reports of problems.
+#
+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 syslog. Commented out for the
+# moment, as the pnpinfo variable isn't set in devd yet. Individual
+# variables within the bus supplied pnpinfo are set.
+nomatch 0 {
+# action "logger Unknown device: $pnpinfo $location $bus";
+};
+
+# Various logging of unknown devices.
+nomatch 10 {
+ match "bus" "uhub[0-9]+";
+ action "logger Unknown USB device: vendor $vendor product $product \
+ bus $bus";
+};
+
+# Some PC-CARDs don't offer numerical manufacturer/product IDs, just
+# show the CIS info there.
+nomatch 20 {
+ match "bus" "pccard[0-9]+";
+ match "manufacturer" "0xffffffff";
+ match "product" "0xffffffff";
+ action "logger Unknown PCCARD device: CISproduct $cisproduct \
+ CIS-vendor $cisvendor bus $bus";
+};
+
+nomatch 10 {
+ match "bus" "pccard[0-9]+";
+ action "logger Unknown PCCARD device: manufacturer $manufacturer \
+ product $product CISproduct $cisproduct CIS-vendor \
+ $cisvendor bus $bus";
+};
+
+nomatch 10 {
+ match "bus" "cardbus[0-9]+";
+ action "logger Unknown Cardbus device: device $device class $class \
+ vendor $vendor bus $bus";
+};
+
+# Switch power profiles when the AC line state changes.
+notify 10 {
+ match "system" "ACPI";
+ match "subsystem" "ACAD";
+ action "service power_profile $notify";
+};
+
+# Notify all users before beginning emergency shutdown when we get
+# a _CRT or _HOT thermal event and we're going to power down the system
+# very soon.
+notify 10 {
+ match "system" "ACPI";
+ match "subsystem" "Thermal";
+ match "notify" "0xcc";
+ action "logger -p kern.emerg 'WARNING: system temperature too high, shutting down soon!'";
+};
+
+# User requested suspend, so perform preparation steps and then execute
+# the actual suspend process.
+notify 10 {
+ match "system" "ACPI";
+ match "subsystem" "Suspend";
+ action "/etc/rc.suspend acpi $notify";
+};
+notify 10 {
+ match "system" "ACPI";
+ match "subsystem" "Resume";
+ action "/etc/rc.resume acpi $notify";
+};
+
+/* EXAMPLES TO END OF FILE
+
+# 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 -n 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";
+};
+
+# Examples of notify hooks. A notify is a generic way for a kernel
+# subsystem to send event notification to userland.
+
+# Here are some examples of ACPI notify handlers. ACPI subsystems that
+# generate notifies include the AC adapter, power/sleep buttons,
+# control method batteries, lid switch, and thermal zones.
+#
+# Information returned is not always the same as the ACPI notify
+# events. See the ACPI specification for more information about
+# notifies. Here is the information returned for each subsystem:
+#
+# ACAD: AC line state (0 is offline, 1 is online)
+# Button: Button pressed (0 for power, 1 for sleep)
+# CMBAT: ACPI battery events
+# Lid: Lid state (0 is closed, 1 is open)
+# Suspend, Resume: Suspend and resume notification
+# Thermal: ACPI thermal zone events
+#
+# This example calls a script when the AC state changes, passing the
+# notify value as the first argument. If the state is 0x00, it might
+# call some sysctls to implement economy mode. If 0x01, it might set
+# the mode to performance.
+notify 10 {
+ match "system" "ACPI";
+ match "subsystem" "ACAD";
+ action "/etc/acpi_ac $notify";
+};
+
+# This example works around a memory leak in PostgreSQL, restarting
+# it when the "user:postgres:swap:devctl=1G" rctl(8) rule gets triggered.
+notify 0 {
+ match "system" "RCTL";
+ match "rule" "user:770:swap:.*";
+ action "service postgresql restart";
+};
+
+# Discard autofs caches, useful for the -media special map.
+notify 100 {
+ match "system" "GEOM";
+ match "subsystem" "DEV";
+ action "/usr/sbin/automount -c";
+};
+
+# Handle userland coredumps.
+# This commented out handler makes it possible to run an
+# automated debugging session after the core dump is generated.
+# Replace action with a proper coredump handler, but be aware that
+# it will run with elevated privileges.
+notify 10 {
+ match "system" "kernel";
+ match "subsystem" "signal";
+ match "type" "coredump";
+ action "logger $comm $core";
+};
+
+# Let the init(8) know there's a new USB serial interface it might
+# want to run getty(8) for. This includes device-side tty created
+# by usb_template(4).
+notify 100 {
+ match "system" "DEVFS";
+ match "subsystem" "CDEV";
+ match "type" "CREATE";
+ match "cdev" "ttyU[0-9]+";
+ action "/sbin/init q";
+};
+
+*/
diff --git a/sbin/devd/devmatch.conf b/sbin/devd/devmatch.conf
new file mode 100644
index 000000000000..902c96f33664
--- /dev/null
+++ b/sbin/devd/devmatch.conf
@@ -0,0 +1,20 @@
+#
+# $FreeBSD$
+#
+
+#
+# Example devd configuration file for automatically
+# loading what modules we can based on nomatch
+# events.
+#
+# Generic NOMATCH event
+nomatch 100 {
+ action "service devmatch quietstart '?'$_";
+};
+
+# Add the following to devd.conf to prevent this from running:
+# nomatch 1000 {
+# action "true";
+# };
+# it replaces the generic event with one of higher priority that
+# does nothing. You can also set 'devmatch_enable=NO' in /etc/rc.conf
diff --git a/sbin/devd/hyperv.conf b/sbin/devd/hyperv.conf
new file mode 100644
index 000000000000..e90aea3e23b4
--- /dev/null
+++ b/sbin/devd/hyperv.conf
@@ -0,0 +1,108 @@
+# $FreeBSD$
+#
+# Hyper-V specific events
+
+notify 10 {
+ match "system" "DEVFS";
+ match "subsystem" "CDEV";
+ match "type" "CREATE";
+ match "cdev" "hv_kvp_dev";
+ action "/usr/sbin/hv_kvp_daemon";
+};
+
+notify 10 {
+ match "system" "DEVFS";
+ match "subsystem" "CDEV";
+ match "type" "DESTROY";
+ match "cdev" "hv_kvp_dev";
+ action "pkill -x hv_kvp_daemon";
+};
+
+notify 11 {
+ match "system" "DEVFS";
+ match "subsystem" "CDEV";
+ match "type" "CREATE";
+ match "cdev" "hv_fsvss_dev";
+ action "/usr/sbin/hv_vss_daemon";
+};
+
+notify 11 {
+ match "system" "DEVFS";
+ match "subsystem" "CDEV";
+ match "type" "DESTROY";
+ match "cdev" "hv_fsvss_dev";
+ action "pkill -x hv_vss_daemon";
+};
+
+#
+# Rules for non-transparent network VF.
+#
+# How network VF works with hn(4) on Hyper-V in non-transparent mode:
+#
+# - Each network VF has a corresponding hn(4).
+# - The network VF and the it's corresponding hn(4) have the same hardware
+# address.
+# - Once the network VF is up, e.g. ifconfig VF up:
+# o All of the transmission should go through the network VF.
+# o Most of the reception goes through the network VF.
+# o Small amount of reception may go through the corresponding hn(4).
+# This reception will happen, even if the corresponding hn(4) is
+# down. The corresponding hn(4) will change the reception interface
+# to the network VF, so that network layer and application layer will
+# be tricked into thinking that these packets were received by the
+# network VF.
+# o The corresponding hn(4) pretends the physical link is down.
+# - Once the network VF is down or detached:
+# o All of the transmission should go through the corresponding hn(4).
+# o All of the reception goes through the corresponding hn(4).
+# o The corresponding hn(4) fallbacks to the original physical link
+# detection logic.
+#
+# All these features are mainly used to help live migration, during which
+# the network VF will be detached, while the network communication to the
+# VM must not be cut off. In order to reach this level of live migration
+# transparency, we use failover mode lagg(4) with the network VF and the
+# corresponding hn(4) attached to it.
+#
+# To ease user configuration for both network VF and non-network VF, the
+# lagg(4) will be created by the following rules, and the configuration
+# of the corresponding hn(4) will be applied to the lagg(4) automatically.
+#
+# NOTE:
+# If live migration is not needed at all, the following rules could be
+# commented out, and the network VF interface could be used exclusively.
+# Most often the corresponding hn(4) could be completely ignored.
+#
+#
+# Default workflow for the network VF bringup:
+# 1) ETHERNET/IFATTACH -> VF interface up (delayed by rc.conf hyperv_vf_delay
+# seconds). This operation will trigger HYPERV_NIC_VF/VF_UP.
+# 2) HYPERV_NIC_VF/VF_UP:
+# a) Create laggX coresponding to hnX.
+# b) Add hnX and VF to laggX.
+# c) Whack all previous network configuration on hnX, including stopping
+# dhclient.
+# d) Apply rc.conf ifconfig_hnX to laggX; i.e. including starting dhclient.
+#
+# NOTE:
+# HYPERV_NIC_VF/VF_UP action script could be customized per-interface by
+# adding /usr/libexec/hyperv/hyperv_vfup.hnX script.
+# /usr/libexec/hyperv/hyperv_vfup could be used as the template for the
+# customized per-interface script.
+#
+# NOTE:
+# For transparent network VF, hyperv_vfattach does nothing and
+# HYPERV_NIC_VF/VF_UP will not be triggered at all.
+#
+
+notify 10 {
+ match "system" "HYPERV_NIC_VF";
+ match "type" "VF_UP";
+ action "/usr/libexec/hyperv/hyperv_vfup $subsystem";
+};
+
+notify 10 {
+ match "system" "ETHERNET";
+ match "type" "IFATTACH";
+ action "/usr/libexec/hyperv/hyperv_vfattach $subsystem 0";
+};
diff --git a/sbin/devd/uath.conf b/sbin/devd/uath.conf
new file mode 100644
index 000000000000..9f0cb939050b
--- /dev/null
+++ b/sbin/devd/uath.conf
@@ -0,0 +1,146 @@
+# $FreeBSD$
+#
+# Atheros USB wireless network device specific devd events
+
+# Accton
+# SMCWUSBT-G2
+notify 100 {
+ match "system" "USB";
+ match "subsystem" "DEVICE";
+ match "type" "ATTACH";
+ match "vendor" "0x083a";
+ match "product" "0x4507";
+ action "/usr/sbin/uathload -d /dev/$cdev";
+};
+
+# Atheros Communications
+# AR5523
+notify 100 {
+ match "system" "USB";
+ match "subsystem" "DEVICE";
+ match "type" "ATTACH";
+ match "vendor" "0x168c";
+ match "product" "0x0002";
+ action "/usr/sbin/uathload -d /dev/$cdev";
+};
+
+# Atheros Communications
+# AR5523
+notify 100 {
+ match "system" "USB";
+ match "subsystem" "DEVICE";
+ match "type" "ATTACH";
+ match "vendor" "0x0cf3";
+ match "product" "(0x0002|0x0004|0x0006)";
+ action "/usr/sbin/uathload -d /dev/$cdev";
+};
+
+# Conceptronic
+# AR5523
+notify 100 {
+ match "system" "USB";
+ match "subsystem" "DEVICE";
+ match "type" "ATTACH";
+ match "vendor" "0x0d8e";
+ match "product" "(0x7802|0x7812)";
+ action "/usr/sbin/uathload -d /dev/$cdev";
+};
+
+# D-Link
+# DWL-AG132, DWL-G132 and DWL-AG122
+notify 100 {
+ match "system" "USB";
+ match "subsystem" "DEVICE";
+ match "type" "ATTACH";
+ match "vendor" "0x2001";
+ match "product" "(0x3a01|0x3a03|0x3a05)";
+ action "/usr/sbin/uathload -d /dev/$cdev";
+};
+
+# D-Link
+# DWA-120
+notify 100 {
+ match "system" "USB";
+ match "subsystem" "DEVICE";
+ match "type" "ATTACH";
+ match "vendor" "0x07d1";
+ match "product" "0x3a0c";
+ action "/usr/sbin/uathload -d /dev/$cdev";
+};
+
+# Gigaset
+# SMCWUSBT-G
+notify 100 {
+ match "system" "USB";
+ match "subsystem" "DEVICE";
+ match "type" "ATTACH";
+ match "vendor" "0x1690";
+ match "product" "(0x0711|0x0713)";
+ action "/usr/sbin/uathload -d /dev/$cdev";
+};
+
+# Global Sun Technology
+# AR5523
+notify 100 {
+ match "system" "USB";
+ match "subsystem" "DEVICE";
+ match "type" "ATTACH";
+ match "vendor" "0x16ab";
+ match "product" "(0x7802|0x7812)";
+ action "/usr/sbin/uathload -d /dev/$cdev";
+};
+
+# BayNETGEAR
+# WG111U
+notify 100 {
+ match "system" "USB";
+ match "subsystem" "DEVICE";
+ match "type" "ATTACH";
+ match "vendor" "0x0846";
+ match "product" "0x4301";
+ action "/usr/sbin/uathload -d /dev/$cdev";
+};
+
+# Netgear
+# WG111T and WPN111
+notify 100 {
+ match "system" "USB";
+ match "subsystem" "DEVICE";
+ match "type" "ATTACH";
+ match "vendor" "0x1385";
+ match "product" "(0x4251|0x5f01)";
+ action "/usr/sbin/uathload -d /dev/$cdev";
+};
+
+# U-MEDIA Communications
+# TEW-444UB and AR5523
+notify 100 {
+ match "system" "USB";
+ match "subsystem" "DEVICE";
+ match "type" "ATTACH";
+ match "vendor" "0x157e";
+ match "product" "(0x3007|0x3206)";
+ action "/usr/sbin/uathload -d /dev/$cdev";
+};
+
+# Wistron NeWeb
+# AR5523
+notify 100 {
+ match "system" "USB";
+ match "subsystem" "DEVICE";
+ match "type" "ATTACH";
+ match "vendor" "0x1435";
+ match "product" "(0x0827|0x0829)";
+ action "/usr/sbin/uathload -d /dev/$cdev";
+};
+
+# Z-Com
+# AR5523
+notify 100 {
+ match "system" "USB";
+ match "subsystem" "DEVICE";
+ match "type" "ATTACH";
+ match "vendor" "0x0cde";
+ match "product" "0x0013";
+ action "/usr/sbin/uathload -d /dev/$cdev";
+};
diff --git a/sbin/devd/ulpt.conf b/sbin/devd/ulpt.conf
new file mode 100644
index 000000000000..2082726cbf47
--- /dev/null
+++ b/sbin/devd/ulpt.conf
@@ -0,0 +1,18 @@
+#
+# $FreeBSD$
+#
+
+#
+# Example devd configuration file for USB printers.
+# Uncomment the notify rule below to enable.
+#
+# Generic USB printer devices
+#notify 100 {
+# match "system" "USB";
+# match "subsystem" "INTERFACE";
+# match "type" "ATTACH";
+# match "intclass" "0x07";
+# match "intsubclass" "0x01";
+# match "intprotocol" "(0x01|0x02|0x03)";
+# action "chown root:wheel /dev/$cdev";
+#};
diff --git a/sbin/devd/zfs.conf b/sbin/devd/zfs.conf
new file mode 100644
index 000000000000..8a719f89e6ec
--- /dev/null
+++ b/sbin/devd/zfs.conf
@@ -0,0 +1,77 @@
+# $FreeBSD$
+#
+# Sample ZFS problem reports handling.
+
+notify 10 {
+ match "system" "ZFS";
+ match "type" "fs.zfs.checksum";
+ action "logger -p local7.warn -t ZFS 'checksum mismatch, zpool=$pool path=$vdev_path offset=$zio_offset size=$zio_size'";
+};
+
+notify 10 {
+ match "system" "ZFS";
+ match "type" "fs.zfs.io";
+ action "logger -p local7.warn -t ZFS 'vdev I/O failure, zpool=$pool path=$vdev_path offset=$zio_offset size=$zio_size error=$zio_err'";
+};
+
+notify 10 {
+ match "system" "ZFS";
+ match "type" "fs.zfs.data";
+ action "logger -p local7.warn -t ZFS 'pool I/O failure, zpool=$pool error=$zio_err'";
+};
+
+notify 10 {
+ match "system" "ZFS";
+ match "type" "fs.zfs.zpool";
+ action "logger -p local7.err -t ZFS 'failed to load zpool $pool'";
+};
+
+notify 10 {
+ match "system" "ZFS";
+ match "type" "fs.zfs.vdev\..*";
+ action "logger -p local7.err -t ZFS 'vdev problem, zpool=$pool path=$vdev_path type=$type'";
+};
+
+notify 10 {
+ match "system" "ZFS";
+ match "type" "fs.zfs.io_failure";
+ action "logger -p local7.alert -t ZFS 'catastrophic pool I/O failure, zpool=$pool'";
+};
+
+notify 10 {
+ match "system" "ZFS";
+ match "type" "fs.zfs.probe_failure";
+ action "logger -p local7.err -t ZFS 'vdev probe failure, zpool=$pool path=$vdev_path'";
+};
+
+notify 10 {
+ match "system" "ZFS";
+ match "type" "fs.zfs.log_replay";
+ action "logger -p local7.err -t ZFS 'pool log replay failure, zpool=$pool'";
+};
+
+notify 10 {
+ match "system" "ZFS";
+ match "type" "fs.zfs.config_cache_write";
+ action "logger -p local7.warn -t ZFS 'failed to write zpool.cache, zpool=$pool'";
+};
+
+
+notify 10 {
+ match "system" "ZFS";
+ match "type" "resource.fs.zfs.removed";
+ action "logger -p local7.notice -t ZFS 'vdev is removed, pool_guid=$pool_guid vdev_guid=$vdev_guid'";
+};
+
+notify 10 {
+ match "system" "ZFS";
+ match "type" "resource.fs.zfs.autoreplace";
+ action "logger -p local7.info -t ZFS 'autoreplace is configured for vdev, pool_guid=$pool_guid vdev_guid=$vdev_guid'";
+};
+
+notify 10 {
+ match "system" "ZFS";
+ match "type" "resource.fs.zfs.statechange";
+ action "logger -p local7.notice -t ZFS 'vdev state changed, pool_guid=$pool_guid vdev_guid=$vdev_guid'";
+};
+