1.\" 2.\" Copyright (c) 2002 M. Warner Losh 3.\" All rights reserved. 4.\" 5.\" Redistribution and use in source and binary forms, with or without 6.\" modification, are permitted provided that the following conditions 7.\" are met: 8.\" 1. Redistributions of source code must retain the above copyright 9.\" notice, this list of conditions and the following disclaimer. 10.\" 2. The name of the author may not be used to endorse or promote products 11.\" derived from this software without specific prior written permission. 12.\" 13.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 14.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 17.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23.\" SUCH DAMAGE. 24.\" 25.\" $FreeBSD: src/sbin/devd/devd.conf.5,v 1.11 2006/10/24 20:20:41 ru Exp $ 26.\" $DragonFly: src/sbin/devd/devd.conf.5,v 1.3 2008/10/04 22:36:25 swildner Exp $ 27.\" 28.\" The section on comments was taken from named.conf.5, which has the 29.\" following copyright: 30.\" Copyright (c) 1999-2000 by Internet Software Consortium 31.\" 32.\" Permission to use, copy, modify, and distribute this software for any 33.\" purpose with or without fee is hereby granted, provided that the above 34.\" copyright notice and this permission notice appear in all copies. 35.\" 36.\" THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS 37.\" ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES 38.\" OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE 39.\" CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 40.\" DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 41.\" PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS 42.\" ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS 43.\" SOFTWARE. 44.\" 45.Dd October 2, 2008 46.Dt DEVD.CONF 5 47.Os 48.Sh NAME 49.Nm devd.conf 50.Nd configuration file for 51.Xr devd 8 52.Sh DESCRIPTION 53.Ss General Syntax 54A 55.Xr devd 8 56configuration consists of two general features, statements 57and comments. 58All statements end with a semicolon. 59Many statements can contain substatements, which are also 60terminated with a semicolon. 61.Pp 62The following statements are supported: 63.Bl -tag -width ".Ic options" 64.It Ic attach 65Specifies various matching criteria and actions to perform when 66a newly attached device matches said criteria. 67.It Ic detach 68Specifies various matching criteria and actions to perform when 69a newly detached device matches said criteria. 70.It Ic nomatch 71Specifies various matching criteria and actions to perform when 72no device driver currently loaded in the kernel claims a (new) 73device. 74.It Ic notify 75Specifies various matching criteria and actions to perform when the kernel 76sends an event notification to userland. 77.It Ic options 78Specifies various options and parameters for the operation of 79.Xr devd 8 . 80.El 81.Pp 82Statements may occur in any order in the configuration file, and may be 83repeated as often as required. 84Further details on the syntax and meaning of each statement and their 85substatements are explained below. 86.Pp 87Each statement, except 88.Ic options 89has a priority (an arbitrary number) associated with it, where 90.Ql 0 91is defined as the lowest priority. 92If two statements match the same event, only the action of the statement with 93highest priority will be executed. 94In this way generic statements can be overridden for devices or 95notifications that require special attention. 96.Pp 97The general syntax of a statement is: 98.Bd -literal -offset indent 99statement priority { 100 substatement "value"; 101 ... 102 substatement "value"; 103}; 104.Ed 105.Ss Sub-statements 106The following sub-statements are supported within the 107.Ic options 108statement. 109.Bl -tag -width ".Ic directory" 110.It Ic directory Qq Ar /some/path ; 111Adds the given directory to the list of directories from which 112.Xr devd 8 113will read 114configuration files. 115Any number of 116.Ic directory 117statements can be used. 118.\" .It Ic pid-file Qq Pa /var/run/devd.pid ; 119.\" Specifies PID file. 120.It Ic set Ar regexp-name Qq Ar (some|regexp) ; 121Creates a regular expression and assigns it to the variable 122.Ar regexp-name . 123The variable is avaiable throughout the rest of 124the configuration file. 125All regular expressions have an implicit 126.Ql ^$ 127around them. 128.El 129.Pp 130The following sub-statements are supported within the 131.Ic attach 132and 133.Ic detach 134statements. 135.Bl -tag -width ".Ic directory" 136.It Ic action Qq Ar command ; 137Command to execute upon a successful match. 138Example 139.Dq Li "/etc/pccard_ether $device-name start" . 140.It Ic class Qq Ar string ; 141This is shorthand for 142.Dq Ic match Qo Li class Qc Qq Ar string . 143.It Ic device-name Qq string ; 144This is shorthand for 145.Dq Ic match Qo Li device-name Qc Qq Ar string . 146This matches a device named 147.Ar string , 148which is allowed to be a regular expression or a variable previously created 149containing a regular expression. 150The 151.Dq Li device-name 152variable 153is available for later use with the 154.Ic action 155statement. 156.It Ic match Qo Ar variable Qc Qq Ar value ; 157Matches the content of 158.Ar value 159against 160.Ar variable ; 161the content of 162.Ar value 163may be a regular expression. 164Not required during 165.Ic attach 166nor 167.Ic detach 168events since the 169.Ic device-name 170statement takes care of all device matching. 171For a partial list of variables, see below. 172.It Ic media-type Qq Ar string ; 173For network devices, 174.Ic media-type 175will match devices that have the given media type. 176Valid media types are: 177.Dq Li Ethernet , 178.Dq Li 802.11 , 179.Dq Li ATM , 180and 181.Dq Li CARP . 182.It Ic subdevice Qq Ar string ; 183This is shorthand for 184.Dq Ic match Qo Li subdevice Qc Qq Ar string . 185.El 186.Pp 187The following sub-statements are supported within the 188.Ic nomatch 189statement. 190.Bl -tag -width ".Ic directory" 191.It Ic action Qq Ar command ; 192Same as above. 193.It Ic match Qo Ar variable Qc Qq Ar value ; 194Matches the content of 195.Ar value 196against 197.Ar variable ; 198the content of 199.Ar value 200may be a regular expression. 201For a partial list of variables, see below. 202.El 203.Pp 204The following sub-statements are supported within the 205.Ic notify 206statement. 207The 208.Dq Li notify 209variable is avaiable inside this statement and contains, a value, depending 210on which system and subsystem that delivered the event. 211.Bl -tag -width ".Ic directory" 212.It Ic action Qq Ar command ; 213Command to execute upon a successful match. 214Example 215.Dq Li "/etc/rc.d/power_profile $notify" . 216.It Ic match Qo Ar system | subsystem | type | notify Qc Qq Ar value ; 217Any number of 218.Ic match 219statements can exist within a 220.Ic notify 221statement; 222.Ar value 223can be either a fixed string or a regular expression. 224Below is a list of avaiable systems, subsystems, and types. 225.It Ic media-type Qq Ar string ; 226See above. 227.El 228.Ss Variables that can be used with the match statement 229A partial list of variables and their possible values that can be used together 230with the 231.Ic match 232statement. 233.Pp 234.Bl -tag -width ".Li manufacturer" -compact 235.It Ic Variable 236.Ic Description 237.It Li bus 238Device name of parent bus. 239.It Li cisproduct 240CIS-product. 241.It Li cisvendor 242CIS-vendor. 243.It Li class 244Device class. 245.It Li device 246Device ID. 247.It Li device-name 248Name of attached/detached device. 249.It Li function 250Card functions. 251.It Li manufacturer 252Manufacturer ID (pccard). 253.It Li notify 254Match the value of the 255.Dq Li notify 256variable. 257.It Li product 258Product ID (pccard). 259.It Li serial 260Serial Number (USB). 261.It Li slot 262Card slot. 263.It Li subvendor 264Sub-vendor ID. 265.It Li subdevice 266Sub-device ID. 267.It Li subsystem 268Matches a subsystem of a system, see below. 269.It Li system 270Matches a system type, see below. 271.It Li type 272Type of notification, see below. 273.It Li vendor 274Vendor ID. 275.El 276.Ss Notify matching 277A partial list of systems, subsystems, and types used within the 278.Ic notify 279mechanism. 280.Pp 281.Bl -tag -width ".Li IFNET" -compact 282.It Sy System 283.It Li ACPI 284Events related to the ACPI subsystem. 285.Bl -tag -width ".Sy Subsystem" -compact 286.It Sy Subsystem 287.It Li ACAD 288AC line state ($notify=0x00 is offline, 0x01 is online). 289.It Li Button 290Button state ($notify=0x00 is power, 0x01 is sleep). 291.It Li CMBAT 292Battery events. 293.It Li Lid 294Lid state ($notify=0x00 is closed, 0x01 is open). 295.It Li Thermal 296Thermal zone events. 297.El 298.Pp 299.It Li IFNET 300Events related to the network subsystem. 301.Bl -tag -width ".Sy Subsystem" -compact 302.It Sy Subsystem 303.It Ar interface 304The 305.Dq subsystem 306is the actual name of the network interface on which the event 307took place. 308.Bl -tag -width ".Li LINK_DOWN" -compact 309.It Sy Type 310.It Li LINK_UP 311Carrier status changed to UP. 312.It Li LINK_DOWN 313Carrier status changed to DOWN. 314.El 315.El 316.El 317.Pp 318A link state change to UP on the interface 319.Dq Li fxp0 320would result in the following notify event: 321.Bd -literal -offset indent 322system=IFNET, subsystem=fxp0, type=LINK_UP 323.Ed 324.Pp 325An AC line state change to 326.Dq offline 327would result in the following event: 328.Bd -literal -offset indent 329system=ACPI, subsystem=ACAD, notify=0x00 330.Ed 331.Ss Comments 332Comments may appear anywhere that whitespace may appear in a 333configuration file. 334To appeal to programmers of all kinds, they can 335be written in C, C++, or shell/Perl constructs. 336.Pp 337C-style comments start with the two characters 338.Ql /* 339(slash, star) and end with 340.Ql */ 341(star, slash). 342Because they are completely delimited with these characters, 343they can be used to comment only a portion of a line or to span 344multiple lines. 345.Pp 346C-style comments cannot be nested. 347For example, the following is 348not valid because the entire comment ends with the first 349.Ql */ : 350.Bd -literal -offset indent 351/* This is the start of a comment. 352 This is still part of the comment. 353/* This is an incorrect attempt at nesting a comment. */ 354 This is no longer in any comment. */ 355.Ed 356.Pp 357C++-style comments start with the two characters 358.Ql // 359(slash, slash) and continue to the end of the physical line. 360They cannot be continued across multiple physical lines; to have 361one logical comment span multiple lines, each line must use the 362.Ql // 363pair. 364For example: 365.Bd -literal -offset indent 366// This is the start of a comment. The next line 367// is a new comment, even though it is logically 368// part of the previous comment. 369.Ed 370.Sh FILES 371.Bl -tag -width ".Pa /etc/devd.conf" -compact 372.It Pa /etc/devd.conf 373The 374.Xr devd 8 375configuration file. 376.El 377.Sh EXAMPLES 378.Bd -literal 379# 380# This will catch link down events on the interfaces fxp0 and ath0 381# 382notify 0 { 383 match "system" "IFNET"; 384 match "subsystem" "(fxp0|ath0)"; 385 match "type" "LINK_DOWN"; 386 action "logger $subsystem is DOWN"; 387}; 388 389# 390# Match lid open/close events 391# These can be combined to a single event, by passing the 392# value of $notify to the external script. 393# 394notify 0 { 395 match "system" "ACPI"; 396 match "subsystem" "Lid"; 397 match "notify" "0x00"; 398 action "logger Lid closed, we can sleep now!"; 399}; 400 401notify 0 { 402 match "system" "ACPI"; 403 match "subsystem" "Lid"; 404 match "notify" "0x01"; 405 action "logger Lid opened, the sleeper must awaken!"; 406}; 407 408# 409# Try to configure ath and wi devices with pccard_ether 410# as they are attached. 411# 412attach 0 { 413 device-name "(ath|wi)[0-9]+"; 414 action "/etc/pccard_ether $device-name start"; 415}; 416 417# 418# Stop ath and wi devices as they are detached from 419# the system. 420# 421detach 0 { 422 device-name "(ath|wi)[0-9]+"; 423 action "/etc/pccard_ether $device-name stop"; 424}; 425.Ed 426.Pp 427The installed 428.Pa /etc/devd.conf 429has many additional examples. 430.Sh SEE ALSO 431.Xr devd 8 432