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