1.\" Copyright (c) 2006-2015 Roy Marples 2.\" All rights reserved 3.\" 4.\" Redistribution and use in source and binary forms, with or without 5.\" modification, are permitted provided that the following conditions 6.\" are met: 7.\" 1. Redistributions of source code must retain the above copyright 8.\" notice, this list of conditions and the following disclaimer. 9.\" 2. Redistributions in binary form must reproduce the above copyright 10.\" notice, this list of conditions and the following disclaimer in the 11.\" documentation and/or other materials provided with the distribution. 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.Dd April 6, 2015 26.Dt DHCPCD.CONF 5 27.Os 28.Sh NAME 29.Nm dhcpcd.conf 30.Nd dhcpcd configuration file 31.Sh DESCRIPTION 32Although 33.Nm dhcpcd 34can do everything from the command line, there are cases where it's just easier 35to do it once in a configuration file. 36Most of the options found in 37.Xr dhcpcd 8 38can be used here. 39The first word on the line is the option and the rest of the line is the value. 40Leading and trailing whitespace for the option and value are trimmed. 41You can escape characters in the value using the \\ character. 42.Pp 43Blank lines and lines starting with # are ignored. 44.Pp 45Here's a list of available options: 46.Bl -tag -width indent 47.It Ic allowinterfaces Ar pattern 48When discovering interfaces, the interface name must match 49.Ar pattern 50which is a space or comma separated list of patterns passed to 51.Xr fnmatch 3 . 52If the same interface is matched in 53.Ic denyinterfaces 54then it is still denied. 55.It Ic denyinterfaces Ar pattern 56When discovering interfaces, the interface name must not match 57.Ar pattern 58which is a space or comma separated list of patterns passed to 59.Xr fnmatch 3 . 60.It Ic arping Ar address Op address 61.Nm dhcpcd 62will arping each address in order before attempting DHCP. 63If an address is found, we will select the replying hardware address as the 64profile, otherwise the ip address. 65Example: 66.Pp 67.D1 interface bge0 68.D1 arping 192.168.0.1 69.Pp 70.D1 profile 192.168.0.1 71.D1 static ip_address=192.168.0.10/24 72.It Ic authprotocol Ar protocol Ar algorithm Ar rdm 73Authenticate DHCP messages. 74See the Supported Authentication Protocols section. 75.It Ic authtoken Ar secretid Ar realm Ar expire Ar key 76Define a shared key for use in authentication. 77.Ar realm can be "" to for use with the 78.Ar delayed 79prptocol. 80.Ar expire 81is the date the token expires and should be formatted "yyy-mm-dd HH:MM". 82You can use the keyword 83.Ar forever 84or 85.Ar 0 86which means the token never expires. 87For the token protocol, 88.Ar secretid 89needs to be 0 and 90.Ar realm 91needs to be "". 92If 93.Nm dhcpcd 94has the error 95.D1 dhcp_auth_encode: Invalid argument 96then it means that 97.Nm dhcpcd 98could not find the correct authentication token in your configuration. 99.It Ic background 100Background immediately. 101This is useful for startup scripts which don't disable link messages for 102carrier status. 103.It Ic blacklist Ar address Ns Op /cidr 104Ignores all packets from 105.Ar address Ns Op /cidr . 106.It Ic whitelist Ar address Ns Op /cidr 107Only accept packets from 108.Ar address Ns Op /cidr . 109.Ic blacklist 110is ignored if 111.Ic whitelist 112is set. 113.It Ic bootp 114Be a BOOTP client. 115Basically, this just doesn't send a DHCP Message Type option and will only 116interact with a BOOTP server. 117All other DHCP options still work. 118.It Ic broadcast 119Instructs the DHCP server to broadcast replies back to the client. 120Normally this is only set for non Ethernet interfaces, 121such as FireWire and InfiniBand. 122In most cases, 123.Nm dhcpcd 124will set this automatically. 125.It Ic controlgroup Ar group 126Sets the group ownership of 127.Pa @RUNDIR@/dhcpcd.sock 128so that users other than root can connect to 129.Nm dhcpcd . 130.It Ic debug 131Echo debug messages to the stderr and syslog. 132.It Ic dev Ar value 133Load the 134.Ar value 135.Pa /dev 136management module. 137.Nm dhcpcd 138will load the first one found to work, if any. 139.It Ic env Ar value 140Push 141.Ar value 142to the environment for use in 143.Xr dhcpcd-run-hooks 8 . 144For example, you can force the hostname hook to always set the hostname with 145.Ic env 146.Va force_hostname=YES . 147Or set which driver 148.Xr wpa_supplicant 8 149should use with 150.Ic env 151.Va wpa_supplicant_driver=nl80211 152.Pp 153If the hostname is set, will be will set to the FQDN if possible as per 154RFC 4702 section 3.1. 155If the FQDN option is missing, 156.Nm dhcpcd 157will still try and set a FQDN from the hostname and domain options for 158consistency. 159To override this, set 160.Ic env 161.Va hostname_fqdn=[YES|NO|SERVER] . 162A value of server means just what the server says, don't manipulate it. 163This could lead to an inconsistent hostname on a DHCPv4 and DHCPv6 network 164where the DHCPv4 hostname is short and the DHCPv6 has an FQDN. 165DHCPv6 has no hostname option. 166.It Ic clientid Ar string 167Send the 168.Ar clientid . 169If the string is of the format 01:02:03 then it is encoded as hex. 170For interfaces whose hardware address is longer than 8 bytes, or if the 171.Ar clientid 172is an empty string then 173.Nm dhcpcd 174sends a default 175.Ar clientid 176of the hardware family and the hardware address. 177.It Ic duid 178Generate an 179.Rs 180.%T "RFC 4361" 181.Re 182compliant DHCP Unique Identifier. 183If persistent storage is available then a DUID-LLT (link local address + time) 184is generated, otherwise DUID-LL is generated (link local address). 185This, plus the IAID will be used as the 186.Ic clientid . 187The DUID-LLT generated will be held in 188.Pa @SYSCONFDIR@/dhcpcd.duid 189and should not be copied to other hosts. 190.It Ic iaid Ar iaid 191Set the Interface Association Identifier to 192.Ar iaid . 193This option must be used in an 194.Ic interface 195block. 196This defaults to the last 4 bytes of the hardware address assigned to the 197interface. 198Each instance of this should be unique within the scope of the client and 199.Nm dhcpcd 200warns if a conflict is detected. 201If there is a conflict, it is only a problem if the conflicted IAIDs are 202used on the same network. 203.It Ic dhcp 204Enable DHCP on the interface, on by default. 205.It Ic dhcp6 206Enable DHCPv6 on the interface, on by default. 207.It Ic ipv4 208Enable IPv4 on the interface, on by default. 209.It Ic ipv6 210Enable IPv6 on the interface, on by default. 211.It Ic persistent 212.Nm dhcpcd 213normally de-configures the interface and configuration when it exits. 214Sometimes, this isn't desirable if, for example, you have root mounted over 215NFS or SSH clients connect to this host and they need to be notified of 216the host shutting down. 217You can use this option to stop this from happening. 218.It Ic fallback Ar profile 219Fallback to using this profile if DHCP fails. 220This allows you to configure a static profile instead of using ZeroConf. 221.It Ic hostname Ar name 222Sends 223.Ar hostname 224to the DHCP server so it can be registered in DNS. 225If 226.Ar hostname 227is an empty string then the current system hostname is sent. 228If 229.Ar hostname 230is a FQDN (ie, contains a .) then it will be encoded as such. 231.It Ic hostname_short 232Sends the short hostname to the DHCP server instead of the FQDN. 233This is useful because DHCP servers will not register the FQDN in their 234DNS if the domain part does not match theirs. 235.Pp 236Also, see the 237.Ic env 238option above to control how the hostname is set on the host. 239.It Ic ia_na Op Ar iaid Op / address 240Request a DHCPv6 Normal Address for 241.Ar iaid . 242.Ar iaid 243defaults to the 244.Ic iaid 245option as described above. 246You can request more than one ia_na by specifying a unique 247.Ar iaid 248for each one. 249.It Ic ia_ta Op Ar iaid 250Request a DHCPv6 Temporary Address for 251.Ar iaid . 252You can request more than one ia_ta by specifying a unique 253.Ar iaid 254for each one. 255.It Ic ia_pd Op Ar iaid Oo / Ar prefix / Ar prefix_len Oc Op Ar interface Op / Ar sla_id Op / Ar prefix_len 256Request a DHCPv6 Delegated Prefix for 257.Ar iaid . 258This option must be used in an 259.Ic interface 260block. 261Unless a 262.Ar sla_id 263of 0 is assigned, a reject route is installed for the Delegated Prefix to 264stop unallocated addresses being resolved upstream. 265If no 266.Ar interface 267is given then we will assign a prefix to every other interface with a 268.Ar sla_id 269equivalent to the interface index assigned by the OS. 270Otherwise addresses are only assigned for each 271.Ar interface 272and 273.Ar sla_id . 274Each assigned address will have a suffix of 1. 275You cannot assign a prefix to the requesting interface unless the 276DHCPv6 server supports 277.Li RFC6603 278Prefix Exclude Option. 279.Nm dhcpcd 280has to be running for all the interfaces it is delegating to. 281A default 282.Ar prefix_len 283of 64 is assumed, unless the maximum 284.Ar sla_id 285does not fit. 286In this case 287.Ar prefix_len 288is increased to the highest multiple of 8 that can accommodate the 289.Ar sla_id . 290.Ar sla_id 291is an integer and is added to the prefix which must fit inside 292.Ar prefix_len 293less the length of the delegated prefix. 294.Ar sla_id can be 0 only if the Delegated Prefix is assigned to one interface. 295You can specify multiple 296.Ar interface / 297.Ar sla_id / 298.Ar prefix_len 299per 300.Ic ia_pd , 301space separated. 302IPv6RS should be disabled globally when requesting a Prefix Delegation. 303.Pp 304In the following example eth0 is the externally facing interface to be 305configured for both IPv4 and IPv6. 306The DHCPv4 server will provide us with an IPv4 address and a default route. 307The DHCPv6 server is going to provide us with an IPv6 address, a default 308route and a /64 subnet to be delegated to the internal interface. 309The eth1 interface will be automatically configured 310for IPv6 using the first address (::1) from the delegated prefix. 311.Xr rtadvd 8 312can be used with an empty configuration file on eth1 to provide automatic 313IPv6 address configuration for the internal network. 314.Bd -literal -indent 315noipv6rs # disable routing solicitation 316denyinterfaces eth2 # Don't touch eth2 at all 317interface eth0 318 ipv6rs # enable routing solicitation get the 319 # default IPv6 route 320 ia_na 1 # request an IPv6 address 321 ia_pd 2 eth1/0 # get a /64 and assign it to eth1 322.Ed 323.It Ic ia_pd_mix 324To be RFC compliant, 325.Nm dhcpcd 326cannot mix Prefix Delegation with other DHCPv6 address types in the same 327session. 328This has a number of issues: additional DHCP traffic and potential collisions 329between options. 330.Ic ia_pd_mix 331enables 332.Li draft-ietf-dhc-dhcpv6-stateful-issues-06 333support so that Prefix Delegation can be mixed with other address types in 334the same session. 335.It Ic ipv4only 336Only configure IPv4. 337.It Ic ipv6only 338Only confgiure IPv6. 339.It Ic fqdn Op disable | ptr | both 340ptr just asks the DHCP server to update the PTR 341record of the host in DNS whereas both also updates the A record. 342disable will disable the FQDN option. 343The default is both. 344.Nm dhcpcd 345itself never does any DNS updates. 346.Nm dhcpcd 347encodes the FQDN hostname as specified in 348.Li RFC1035 . 349.It Ic interface Ar interface 350Subsequent options are only parsed for this 351.Ar interface . 352.It Ic ipv6ra_autoconf 353Generate SLAAC addresses for each Prefix advertised by a 354Router Advertisement message with the Auto flag set. 355On by default. 356.It Ic ipv6ra_noautoconf 357Disables the above option. 358.It Ic ipv6ra_fork 359By default, when 360.Nm dhcpcd 361receives an IPv6 RA, 362.Nm dhcpcd 363will only fork to the background if the RA contains at least one unexpired 364RDNSS option and a valid prefix or no DHCPv6 instruction. 365Set this option so to make 366.Nm dhcpcd 367always fork on an RA. 368.It Ic ipv6ra_own 369Disables kernel IPv6 Router Advertisment processing so dhcpcd can manage 370addresses and routes. 371.It Ic ipv6ra_own_default 372Each time dhcpcd receives an IPv6 Router Adveristment, dhcpcd will manage 373the default route only. 374This allows dhcpcd to prefer an interface for outbound traffic based on metric 375and/or user selection rather than the kernel. 376.It Ic ipv6ra_accept_nopublic 377Some IPv6 routers advertise themselves as a default router without any 378public prefixes or managed addresses. 379Generally, this is incorrect behaviour and 380.Nm dhcpcd 381will ignore the advertisement unless this option is turned on. 382.It Ic ipv6rs 383Enables IPv6 Router Advertisment solicitation. 384This is on by default, but is documented here in the case where it is disabled 385globally but needs to be enabled for one interface. 386.It Ic leasetime Ar seconds 387Request a leasetime of 388.Ar seconds . 389.It Ic logfile Ar logfile 390Writes to the specified 391.Ar logfile 392rather than 393.Xr syslog 3 . 394The 395.Ar logfile 396is truncated when opened and is reopened when 397.Nm dhcpcd 398receives the 399.Dv SIGUSR2 400signal. 401.It Ic metric Ar metric 402Metrics are used to prefer an interface over another one, lowest wins. 403.Nm dhcpcd 404will supply a default metric of 200 + 405.Xr if_nametoindex 3 . 406An extra 100 will be added for wireless interfaces. 407.It Ic noalias 408Any pre-existing IPv4 addresses existing address will be removed from the 409interface when adding a new IPv4 address. 410.It Ic noarp 411Don't send any ARP requests. 412This also disables IPv4LL. 413.It Ic noauthrequired 414Don't require authentication even though we requested it. 415.It Ic nodev 416Don't load 417.Pa /dev 418management modules. 419.It Ic nodhcp 420Don't start DHCP or listen to DHCP messages. 421This is only useful when allowing IPv4LL. 422.It Ic nodhcp6 423Don't start DHCPv6 or listen to DHCPv6 messages. 424Normally DHCPv6 is started by a RA instruction or configuration. 425.It Ic nogateway 426Don't install any default routes. 427.It Ic gateway 428Install a default route if available (default). 429.It Ic nohook Ar script 430Don't run this hook script. 431Matches full name, or prefixed with 2 numbers optionally ending with 432.Pa .sh . 433.Pp 434So to stop 435.Nm dhcpcd 436from touching your DNS or MTU settings you would do:- 437.D1 nohook resolv.conf, mtu 438.It Ic noipv4 439Don't attempt to configure an IPv4 address. 440.It Ic noipv4ll 441Don't attempt to obtain an IPv4LL address if we failed to get one via DHCP. 442See 443.Rs 444.%T "RFC 3927" 445.Re 446.It Ic noipv6 447Don't attmept to configure an IPv6 address. 448.It Ic noipv6rs 449Disable solicitation and receipt of IPv6 Router Advertisements. 450.It Ic nolink 451Don't receive link messages about carrier status. 452You should only set this for buggy interface drivers. 453.It Ic option Ar option 454Requests the 455.Ar option 456from the server. 457It can be a variable to be used in 458.Xr dhcpcd-run-hooks 8 459or the numerical value. 460You can specify more 461.Ar option Ns s 462separated by commas, spaces or more 463.Ic option 464lines. 465Prepend dhcp6_ to 466.Ar option 467to request a DHCPv6 option. 468DHCPv4 options are mapped to DHCPv6 where applicable. 469.It Ic nooption Ar option 470Remove the option from the DHCP message. 471This should only be used when a DHCP server sends a non requested option 472that should not be processed. 473.It Ic destination Ar option 474If 475.Nm 476detects an address added to a point to point interface (PPP, TUN, etc) then 477it will set the listed DHCP options to the destination address of the 478interface. 479.It Ic profile Ar name 480Subsequent options are only parsed for this profile 481.Ar name . 482.It Ic quiet 483Suppress any dhcpcd output to the console, except for errors. 484.It Ic reboot Ar seconds 485Allow 486.Ar reboot 487seconds before moving to the DISCOVER phase if we have an old lease to use 488and moving from DISCOVER to IPv4LL if no reply. 489The default is 5 seconds. 490A setting of 0 seconds causes 491.Nm dhcpcd 492to skip the REBOOT phase and go straight into DISCOVER. 493This is desirable for mobile users because if you change from network A to 494network B and they use the same subnet and the address from network A isn't 495in use on network B, then the DHCP server will remain silent even if authorative 496which means 497.Nm dhcpcd 498will timeout before moving back to the DISCOVER phase. 499.It Ic release 500.Nm dhcpcd 501will release the lease prior to stopping the interface. 502.It Ic require Ar option 503Requires the 504.Ar option 505to be present in all DHCP messages, otherwise the message is ignored. 506It can be a variable to be used in 507.Xr dhcpcd-run-hooks 8 508or the numerical value. 509You can specify more options separated by commas, spaces or more require lines. 510To enforce that 511.Nm dhcpcd 512only responds to DHCP servers and not BOOTP servers, you can 513.Ic require 514.Ar dhcp_message_type . 515This isn't an exact science though because a BOOTP server can send DHCP like 516options. 517.It Ic reject Ar option 518Reject a DHCP message that contains the 519.Ar option . 520This is useful when you cannot use 521.Ic require 522to select / de-select BOOTP messages. 523.It Ic script Ar script 524Use 525.Ar script 526instead of the default 527.Pa @SCRIPT@ . 528.It Ic ssid Ar ssid 529Subsequent options are only parsed for this wireless 530.Ar ssid . 531.It Ic slaac Op Ar hwaddr | Ar private 532Selects the interface identifier used for SLAAC generated IPv6 addresses. 533If 534.Ar private 535is used, a RFC7217 address is generated. 536.It Ic static Ar value 537Configures a static 538.Ar value . 539If you set 540.Ic ip_address 541then 542.Nm dhcpcd 543will not attempt to obtain a lease and just use the value for the address with 544an infinite lease time. 545.Pp 546Here is an example which configures a static address, routes and dns. 547.D1 interface eth0 548.D1 static ip_address=192.168.0.10/24 549.D1 static routers=192.168.0.1 550.D1 static domain_name_servers=192.168.0.1 551.Pp 552Here is an example for PPP which gives the destination a default route. 553It uses the special destination keyword to insert the destination address 554into the value. 555.D1 interface ppp0 556.D1 static ip_address= 557.D1 destination routers 558.It Ic timeout Ar seconds 559Timeout after 560.Ar seconds , 561instead of the default 30. 562A setting of 0 563.Ar seconds 564causes 565.Nm dhcpcd 566to wait forever to get a lease. 567If 568.Nm dhcpcd 569is working on a single interface then 570.Nm dhcpcd 571will exit when a timeout occurs, otherwise 572.Nm dhcpcd 573will fork into the background. 574If using IPv4LL then 575.Nm dhcpcd 576start the IPv4LL process after the timeout and then wait a little longer 577before really timing out. 578.It Ic userclass Ar string 579Tag the DHCPv4 messages with the userclass. 580You can specify more than one. 581.It Ic vendor Ar code , Ns Ar value 582Add an encapsulated vendor option. 583.Ar code 584should be between 1 and 254 inclusive. 585To add a raw vendor string, omit 586.Ar code 587but keep the comma. 588Examples. 589.Pp 590Set the vendor option 01 with an IP address. 591.D1 vendor 01,192.168.0.2 592Set the vendor option 02 with a hex code. 593.D1 vendor 02,01:02:03:04:05 594Set the vendor option 03 with an IP address as a string. 595.D1 vendor 03,\e"192.168.0.2\e" 596Set un-encapsulated vendor option to hello world. 597.D1 vendor ,"hello world" 598.It Ic vendorclassid Ar string 599Set the DHCP Vendor Class. 600DHCPv6 has it's own option as shown below. 601The default is 602dhcpcd-<version>:<os>:<machine>:<platform>. 603For example 604.D1 dhcpcd-5.5.6:NetBSD-6.99.5:i386:i386 605If not set then none is sent. 606Some badly configured DHCP servers reject unknown vendorclassids. 607To work around it, try and impersonate Windows by using the MSFT vendorclassid. 608.It Ic vendclass Ar en Ar data 609Add the DHCPv6 Vendor Indetifying Vendor Class with the IANA assigned Enterprise 610Number 611.Ar en 612with the 613.Ar data . 614This option can be set more than once to add more data, but the behaviour, 615as per 616.Xr RFC 3925 617is undefined if the Enterprise Number differs. 618.It Ic waitip Op 4 | 6 619Wait for an address to be assigned before forking to the background. 6204 means wait for an IPv4 address to be assigned. 6216 means wait for an IPv6 address to be assigned. 622If no argument is given, 623.Nm 624will wait for any address protocol to be assigned. 625It is possible to wait for more than one address protocol and 626.Nm 627will only fork to the background when all waiting conditions are satisfied. 628.It Ic xidhwaddr 629Use the last four bytes of the hardware address as the DHCP xid instead 630of a randomly generated number. 631.El 632.Ss Defining new options 633DHCP allows for the use of custom options. 634Each option needs to be started with the 635.Ic define 636or 637.Ic define6 638directive. 639This can optionally be followed by both 640.Ic embed 641or 642.Ic encap 643options. 644Both can be specified more than once and 645.Ic embed 646must come before 647.Ic encap . 648.Bl -tag -width indent 649.It Ic define Ar code Ar type Ar variable 650Defines the DHCP option 651.Ar code 652of 653.Ar type 654with a name of 655.Ar variable 656exported to 657.Xr dhcpcd-run-hooks 8 . 658.It Ic define6 Ar code Ar type Ar variable 659Defines the DHCPv6 option 660.Ar code 661of 662.Ar type 663with a name of 664.Ar variable 665exported to 666.Xr dhcpcd-run-hooks 8 , 667with a prefix of 668.Va _dhcp6 . 669.It Ic vendopt Ar code Ar type Ar variable 670Defines the Vendor-Identifying Vendor Options. 671The 672.Ar code 673is the IANA Enterprise Number which will unqiuely describe the encapsulated 674options. 675.Ar type 676is normally 677.Ar encap . 678.Ar variable 679names the Vendor option to be exported. 680.It Ic embed Ar type Ar variable 681Defines an embedded variable within the defined option. 682The length is determined by the 683.Ar type . 684If the 685.Ar variable 686is not the same as defined in the parent option, 687it is prefixed with the parent 688.Ar variable 689first with an underscore. 690.It Ic encap Ar code Ar type Ar variable 691Defines an encapsulated variable within the defined option. 692The length is determined by the 693.Ar type . 694If the 695.Ar variable 696is not the same as defined in the parent option, 697it is prefixed with the parent 698.Ar variable 699first with an underscore. 700.El 701.Ss Type prefix 702These keywords come before the type itself, to describe it more fully. 703You can use more than one, but they must appear in the order listed below. 704.Bl -tag -width -indent 705.It Ic request 706Requests the option by default without having to be specified in user 707configuration 708.It Ic norequest 709This option cannot be requested, regardless of user configuration 710.It Ic index 711The option can appear more than once and will be indexed. 712.It Ic array 713The option data is split into a space separated array, each element being 714the same type. 715.El 716.Ss Types to define 717The type directly affects the length of data consumed inside the option. 718Any remaining data is normally discarded. 719Lengths can be specified for string and binhex types, but this is generally 720with other data embedded afterwards in the same option. 721.Bl -tag -width indent 722.It Ic ipaddress 723An IPv4 address, 4 bytes 724.It Ic ip6address 725An IPv6 address, 16 bytes 726.It Ic string Op : Ic length 727A NVT ASCII string of printable characters. 728.It Ic byte 729A byte 730.It Ic int16 731A signed 16bit integer, 2 bytes 732.It Ic uint16 733An unsigned 16bit integer, 2 bytes 734.It Ic int32 735A signed 32bit integer, 4 bytes 736.It Ic uint32 737An unsigned 32bit integer, 4 bytes 738.It Ic flag 739A fixed value (1) to indicate that the option is present, 0 bytes 740.It Ic domain 741A RFC 3397 encoded string 742.It Ic dname 743A RFC 1035 validated string 744.It Ic binhex Op : Ic length 745Binary data expressed as hexadecimal 746.It Ic embed 747Contains embedded options (implies encap as well) 748.It Ic encap 749Contains encapsulated options (implies embed as well) 750.It Ic option 751References an option from the global definition 752.El 753.Ss Example definition 754.D1 # DHCP option 81, Fully Qualified Domain Name, RFC4702 755.D1 define 81 embed fqdn 756.D1 embed byte flags 757.D1 embed byte rcode1 758.D1 embed byte rcode2 759.D1 embed domain fqdn 760.Pp 761.D1 # DHCP option 125, Vendor Specific Information Option, RFC3925 762.D1 define 125 encap vsio 763.D1 embed uint32 enterprise_number 764.D1 # Options defined for the enterprise number 765.D1 encap 1 ipaddress ipaddress 766.Ss Supported Authentication Protocols 767.Bl -tag -width -indent 768.It Ic token 769Sends and expects the token with the secretid 0 and realm of "" in each message. 770.It Ic delayedrealm 771Delayed Authentication. 772.Nm dhcpcd 773will send an authentication option with no key or MAC. 774The server will see this option, and select a key for 775.Nm , writing the 776.Ar realm 777and 778.Ar secretid 779in it. 780.Nm dhcpcd 781will then look for a non-expired token with a matching realm and secretid. 782This token is used to authenicate all other messages. 783.It Ic delayed 784Same as above, but without a realm. 785.El 786.Ss Supported Authentication Algorithms 787If none specified, 788.Ic hmac-md5 789is the default. 790.Bl -tag -width -indent 791.It Ic hmac-md5 792.El 793.Ss Supported Replay Detection Mechanisms 794If none specified, 795.Ic monotonic 796is the default. 797If this is changed from what was previously used, 798or the means of calculating or storing it is broken then the DHCP server 799will probably have to have its notion of the clients Replay Detection Value 800reset. 801.Bl -tag -width -indent 802.It Ic monocounter 803Read the number in the file 804.Pa @DBDIR@/dhcpcd-rdm.monotonic 805and add one to it. 806.It Ic monotime 807Create a NTP timestamp from the system time. 808.It Ic monotonic 809Same as 810.Ic monotime . 811.El 812.Sh SEE ALSO 813.Xr fnmatch 3 , 814.Xr if_nametoindex 3 , 815.Xr dhcpcd 8 , 816.Xr dhcpcd-run-hooks 8 817.Sh AUTHORS 818.An Roy Marples Aq Mt roy@marples.name 819.Sh BUGS 820Please report them to 821.Lk http://roy.marples.name/projects/dhcpcd 822