]> git.ipfire.org Git - thirdparty/dhcpcd.git/blame - dhcpcd.conf.5.in
fclose the pointer if chmod fails, fixes [b434b7f79e]
[thirdparty/dhcpcd.git] / dhcpcd.conf.5.in
CommitLineData
67f84564 1.\" Copyright (c) 2006-2016 Roy Marples
ba9dfb7a
RM
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.\"
67f84564 25.Dd February 5, 2016
0b4a1931 26.Dt DHCPCD.CONF 5
918338f2 27.Os
ba9dfb7a
RM
28.Sh NAME
29.Nm dhcpcd.conf
443c8695 30.Nd dhcpcd configuration file
ba9dfb7a
RM
31.Sh DESCRIPTION
32Although
33.Nm dhcpcd
34can do everything from the command line, there are cases where it's just easier
cf42802e
RM
35to do it once in a configuration file.
36Most of the options found in
ba9dfb7a 37.Xr dhcpcd 8
cf42802e
RM
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.
67f84564
RM
42Comments can be prefixed with the # character.
43String values should be quoted with the " character.
ba9dfb7a
RM
44.Pp
45Here's a list of available options:
46.Bl -tag -width indent
ba97e494
RM
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 .
6f767217
RM
60.It Ic arping Ar address Op address
61.Nm dhcpcd
ff021b0b 62will arping each address in order before attempting DHCP.
6f767217
RM
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
c73ed171
RM
72.It Ic authprotocol Ar protocol Ar algorithm Ar rdm
73Authenticate DHCP messages.
0dc49454 74See the Supported Authentication Protocols section.
c73ed171
RM
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.
0dc49454
RM
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.
bac03ede
RM
99.It Ic background
100Background immediately.
101This is useful for startup scripts which don't disable link messages for
102carrier status.
6f767217 103.It Ic blacklist Ar address Ns Op /cidr
ce6b39df 104Ignores all packets from
6f767217 105.Ar address Ns Op /cidr .
bf80d526
RM
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.
8f924434
RM
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.
900b3da4
RM
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.
a93e79c6
RM
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 .
a3099289
RM
130.It Ic debug
131Echo debug messages to the stderr and syslog.
413652c1
RM
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.
6bfd88f1
RM
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 .
bbd250b4
RM
147Or set which driver
148.Xr wpa_supplicant 8
149should use with
150.Ic env
151.Va wpa_supplicant_driver=nl80211
77961e7b
RM
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.
d2616b08 166.It Ic clientid Ar string
c989b023
RM
167Send the
168.Ar clientid .
d2616b08 169If the string is of the format 01:02:03 then it is encoded as hex.
3faba9e6
RM
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.
d2616b08
RM
177.It Ic duid
178Generate an
179.Rs
180.%T "RFC 4361"
181.Re
ebc9d360 182compliant DHCP Unique Identifier.
7e068c85
RM
183If persistent storage is available then a DUID-LLT (link local address + time)
184is generated, otherwise DUID-LL is generated (link local address).
ebc9d360
RM
185This, plus the IAID will be used as the
186.Ic clientid .
7e068c85 187The DUID-LLT generated will be held in
d2616b08
RM
188.Pa @SYSCONFDIR@/dhcpcd.duid
189and should not be copied to other hosts.
ebc9d360
RM
190.It Ic iaid Ar iaid
191Set the Interface Association Identifier to
192.Ar iaid .
9ff636a5
RM
193This option must be used in an
194.Ic interface
195block.
6f66c6c9
RM
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.
94bec972
RM
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.
15fc1181
RM
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
a544b76a
RM
215NFS or SSH clients connect to this host and they need to be notified of
216the host shutting down.
15fc1181 217You can use this option to stop this from happening.
ff021b0b
RM
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.
ba9dfb7a 221.It Ic hostname Ar name
35d02ae6 222Sends
ff021b0b 223.Ar hostname
35d02ae6
RM
224to the DHCP server so it can be registered in DNS.
225If
35ff0dbb 226.Ar hostname
35d02ae6
RM
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.
d6a18654
RM
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.
77961e7b
RM
235.Pp
236Also, see the
237.Ic env
238option above to control how the hostname is set on the host.
8fe4bf14 239.It Ic ia_na Op Ar iaid Op / address
00ababe4
RM
240Request a DHCPv6 Normal Address for
241.Ar iaid .
00ababe4 242.Ar iaid
ebc9d360
RM
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.
22ea2b0d 249.It Ic ia_ta Op Ar iaid
00ababe4
RM
250Request a DHCPv6 Temporary Address for
251.Ar iaid .
ebc9d360
RM
252You can request more than one ia_ta by specifying a unique
253.Ar iaid
254for each one.
fda2c663 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 Op / Ar suffix
00ababe4
RM
256Request a DHCPv6 Delegated Prefix for
257.Ar iaid .
9ff636a5
RM
258This option must be used in an
259.Ic interface
260block.
94a79cea
RM
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.
b9beb41b
RM
265This reject route is in essence SLA 0, thus you need space within the prefix
266to assign a SLA per interface.
22ea2b0d
RM
267If no
268.Ar interface
94a79cea 269is given then we will assign a prefix to every other interface with a
22ea2b0d 270.Ar sla_id
94a79cea 271equivalent to the interface index assigned by the OS.
22ea2b0d 272Otherwise addresses are only assigned for each
00ababe4
RM
273.Ar interface
274and
9ff636a5 275.Ar sla_id .
fda2c663
RM
276Each assigned address will have a
277.Ar suffix ,
278defaulting to 1.
f9f15d95
RM
279If the
280.Ar suffix
281is 0 then a slaac address is assigned.
12c77e75
RM
282You cannot assign a prefix to the requesting interface unless the
283DHCPv6 server supports
284.Li RFC6603
285Prefix Exclude Option.
2fae05d0
RM
286.Nm dhcpcd
287has to be running for all the interfaces it is delegating to.
00ababe4 288A default
367f7b11 289.Ar prefix_len
94a79cea
RM
290of 64 is assumed, unless the maximum
291.Ar sla_id
292does not fit.
293In this case
294.Ar prefix_len
b2feeb9e 295is increased to the highest multiple of 8 that can accommodate the
94a79cea 296.Ar sla_id .
367f7b11
RM
297.Ar sla_id
298is an integer and is added to the prefix which must fit inside
299.Ar prefix_len
300less the length of the delegated prefix.
94a79cea 301.Ar sla_id can be 0 only if the Delegated Prefix is assigned to one interface.
22ea2b0d
RM
302You can specify multiple
303.Ar interface /
304.Ar sla_id /
305.Ar prefix_len
306per
307.Ic ia_pd ,
308space separated.
9be26bc3 309IPv6RS should be disabled globally when requesting a Prefix Delegation.
00ababe4 310.Pp
9be26bc3
RM
311In the following example eth0 is the externally facing interface to be
312configured for both IPv4 and IPv6.
313The DHCPv4 server will provide us with an IPv4 address and a default route.
314The DHCPv6 server is going to provide us with an IPv6 address, a default
315route and a /64 subnet to be delegated to the internal interface.
316The eth1 interface will be automatically configured
317for IPv6 using the first address (::1) from the delegated prefix.
b9beb41b 318A second prefix is requested and assigned to two other interfaces.
9be26bc3 319.Xr rtadvd 8
b9beb41b
RM
320can be used with an empty configuration file on eth1, eth2 and eth3,
321to provide automatic
9be26bc3 322IPv6 address configuration for the internal network.
7e609902 323.Bd -literal
b9beb41b
RM
324noipv6rs # disable routing solicitation
325denyinterfaces eth2 # Don't touch eth2 at all
9be26bc3 326interface eth0
b9beb41b
RM
327 ipv6rs # enable routing solicitation get the
328 # default IPv6 route
329 ia_na 1 # request an IPv6 address
330 ia_pd 2 eth1/0 # request a PD and assign it to eth1
331 ia_pd 3 eth2/1 eth3/2 # req a PD and assign it to eth2 and eth3
332 # we cannot use SLA 0 above because we are
333 # assinging the PD to more than one interface
9be26bc3 334.Ed
d7555c12
RM
335.It Ic ipv4only
336Only configure IPv4.
337.It Ic ipv6only
338Only confgiure IPv6.
cc3c3560
RM
339.It Ic fqdn Op disable | ptr | both
340ptr just asks the DHCP server to update the PTR
35ff0dbb 341record of the host in DNS whereas both also updates the A record.
cc3c3560
RM
342disable will disable the FQDN option.
343The default is both.
1b3bc477
RM
344.Nm dhcpcd
345itself never does any DNS updates.
e837a670
RM
346.Nm dhcpcd
347encodes the FQDN hostname as specified in
348.Li RFC1035 .
3adc5520 349.It Ic interface Ar interface
012fd5d3
RM
350Subsequent options are only parsed for this
351.Ar interface .
62f12387
RM
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.
61dd6cf9
RM
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
e2c4a256 364RDNSS option and a valid prefix or no DHCPv6 instruction.
61dd6cf9
RM
365Set this option so to make
366.Nm dhcpcd
367always fork on an RA.
d7555c12 368.It Ic ipv6ra_own
eebe9a18
RM
369Disables kernel IPv6 Router Advertisment processing so dhcpcd can manage
370addresses and routes.
d7555c12 371.It Ic ipv6ra_own_default
eebe9a18
RM
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.
4f0240bf 376.It Ic ipv6ra_accept_nopublic
a8e5259b 377Some IPv6 routers advertise themselves as a default router without any
4f0240bf 378public prefixes or managed addresses.
3823dbf5 379Generally, this is incorrect behaviour and
a8e5259b 380.Nm dhcpcd
3823dbf5 381will ignore the advertisement unless this option is turned on.
d7555c12 382.It Ic ipv6rs
eebe9a18
RM
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.
ba9dfb7a
RM
386.It Ic leasetime Ar seconds
387Request a leasetime of
388.Ar seconds .
069e2f28
RM
389.It Ic logfile Ar logfile
390Writes to the specified
391.Ar logfile
392rather than
393.Xr syslog 3 .
394The
395.Ar logfile
cf2dcc16 396is truncated when opened and is reopened when
069e2f28
RM
397.Nm dhcpcd
398receives the
399.Dv SIGUSR2
400signal.
065125d4
RM
401.It Ic metric Ar metric
402Metrics are used to prefer an interface over another one, lowest wins.
403.Nm dhcpcd
87b266d2 404will supply a default metric of 200 +
065125d4
RM
405.Xr if_nametoindex 3 .
406An extra 100 will be added for wireless interfaces.
7dab081f 407.It Ic noalias
dffe72f6
RM
408Any pre-existing IPv4 addresses existing address will be removed from the
409interface when adding a new IPv4 address.
ba9dfb7a 410.It Ic noarp
cf42802e
RM
411Don't send any ARP requests.
412This also disables IPv4LL.
c73ed171
RM
413.It Ic noauthrequired
414Don't require authentication even though we requested it.
d672ebda 415Also allows FORCERENEW and RECONFIGURE messages without authentication.
f572315d
RM
416.It Ic nodelay
417Don't delay for an initial randomised time when starting protocols.
413652c1
RM
418.It Ic nodev
419Don't load
420.Pa /dev
421management modules.
d4154ba7
RM
422.It Ic nodhcp
423Don't start DHCP or listen to DHCP messages.
424This is only useful when allowing IPv4LL.
425.It Ic nodhcp6
426Don't start DHCPv6 or listen to DHCPv6 messages.
427Normally DHCPv6 is started by a RA instruction or configuration.
ba9dfb7a
RM
428.It Ic nogateway
429Don't install any default routes.
ee56a47d
RM
430.It Ic gateway
431Install a default route if available (default).
37156a6b
RM
432.It Ic nohook Ar script
433Don't run this hook script.
8276da82
RM
434Matches full name, or prefixed with 2 numbers optionally ending with
435.Pa .sh .
fc7ee231
RM
436.Pp
437So to stop
438.Nm dhcpcd
ca6cdf58
RM
439from touching your DNS settings or starting wpa_supplicant you would do:-
440.D1 nohook resolv.conf, wpa_supplicant
bb8051bf
RM
441.It Ic noipv4
442Don't attempt to configure an IPv4 address.
ba9dfb7a
RM
443.It Ic noipv4ll
444Don't attempt to obtain an IPv4LL address if we failed to get one via DHCP.
445See
446.Rs
447.%T "RFC 3927"
448.Re
bb8051bf
RM
449.It Ic noipv6
450Don't attmept to configure an IPv6 address.
91cd7324 451.It Ic noipv6rs
4c6a8bec 452Disable solicitation and receipt of IPv6 Router Advertisements.
a26af491
RM
453.It Ic nolink
454Don't receive link messages about carrier status.
455You should only set this for buggy interface drivers.
2862d340
RM
456.It Ic noup
457Don't bring the interface up when in master mode.
458If
459.Nm
460cannot determine the carrier state,
461.Nm
462will enter a tight polling loop until the interface is marked up and running
463or a valid carrier state is reported.
cc45fbd7 464.It Ic option Ar option
d2616b08 465Requests the
cc45fbd7 466.Ar option
cf42802e
RM
467from the server.
468It can be a variable to be used in
ee4e620a 469.Xr dhcpcd-run-hooks 8
cf42802e 470or the numerical value.
b8ffa3cd
RM
471You can specify more
472.Ar option Ns s
473separated by commas, spaces or more
474.Ic option
475lines.
2be15e88 476.Ar option
b8ffa3cd
RM
477Prepend dhcp6_ to
478.Ar option
479to request a DHCPv6 option.
daa70372
RM
480If no DHCPv6 options are configured,
481then DHCPv4 options are mapped to equivalent DHCPv6 options.
2be15e88
RM
482.Pp
483Prepend nd_ to
484.Ar option
485to handle ND options, but this only works for the
486.Ic nooption ,
487.Ic reject
488and
489.Ic require
490options.
2063c6f9 491.It Ic nooption Ar option
2be15e88
RM
492Remove the option from the message before it's processed.
493.It Ic require Ar option
494Requires the
495.Ar option
496to be present in all messages, otherwise the message is ignored.
497To enforce that
498.Nm dhcpcd
499only responds to DHCP servers and not BOOTP servers, you can
500.Ic require
501.Ar dhcp_message_type .
502This isn't an exact science though because a BOOTP server can send DHCP like
503options.
504.It Ic reject Ar option
505Reject a message that contains the
506.Ar option .
507This is useful when you cannot use
508.Ic require
509to select / de-select BOOTP messages.
1abffd5b
RM
510.It Ic destination Ar option
511If
512.Nm
513detects an address added to a point to point interface (PPP, TUN, etc) then
514it will set the listed DHCP options to the destination address of the
515interface.
6f767217
RM
516.It Ic profile Ar name
517Subsequent options are only parsed for this profile
518.Ar name .
1abffd5b 519.It Ic quiet
87b266d2 520Suppress any dhcpcd output to the console, except for errors.
1abffd5b 521.It Ic reboot Ar seconds
a2a9a498
RM
522Allow
523.Ar reboot
1d5d236a
RM
524seconds before moving to the DISCOVER phase if we have an old lease to use
525and moving from DISCOVER to IPv4LL if no reply.
a628f34d 526The default is 5 seconds.
901b42de 527A setting of 0 seconds causes
a2a9a498 528.Nm dhcpcd
901b42de
RM
529to skip the REBOOT phase and go straight into DISCOVER.
530This is desirable for mobile users because if you change from network A to
531network B and they use the same subnet and the address from network A isn't
532in use on network B, then the DHCP server will remain silent even if authorative
533which means
534.Nm dhcpcd
535will timeout before moving back to the DISCOVER phase.
2662d519
RM
536.It Ic release
537.Nm dhcpcd
538will release the lease prior to stopping the interface.
0aeb350c
RM
539.It Ic script Ar script
540Use
541.Ar script
542instead of the default
543.Pa @SCRIPT@ .
c53cf4ef
RM
544.It Ic ssid Ar ssid
545Subsequent options are only parsed for this wireless
546.Ar ssid .
1aeaf0e7
RM
547.It Ic slaac Op Ar hwaddr | Ar private
548Selects the interface identifier used for SLAAC generated IPv6 addresses.
eec0cf35
RM
549If
550.Ar private
551is used, a RFC7217 address is generated.
91a44b91
RM
552.It Ic static Ar value
553Configures a static
554.Ar value .
555If you set
556.Ic ip_address
557then
558.Nm dhcpcd
559will not attempt to obtain a lease and just use the value for the address with
560an infinite lease time.
561.Pp
562Here is an example which configures a static address, routes and dns.
563.D1 interface eth0
564.D1 static ip_address=192.168.0.10/24
565.D1 static routers=192.168.0.1
566.D1 static domain_name_servers=192.168.0.1
1abffd5b
RM
567.Pp
568Here is an example for PPP which gives the destination a default route.
569It uses the special destination keyword to insert the destination address
570into the value.
571.D1 interface ppp0
572.D1 static ip_address=
573.D1 destination routers
d2616b08 574.It Ic timeout Ar seconds
b58bf81f
RM
575Timeout after
576.Ar seconds ,
577instead of the default 30.
d93d7adc
RM
578A setting of 0
579.Ar seconds
580causes
581.Nm dhcpcd
582to wait forever to get a lease.
b58bf81f
RM
583If
584.Nm dhcpcd
585is working on a single interface then
586.Nm dhcpcd
587will exit when a timeout occurs, otherwise
588.Nm dhcpcd
589will fork into the background.
590If using IPv4LL then
591.Nm dhcpcd
592start the IPv4LL process after the timeout and then wait a little longer
593before really timing out.
d2616b08 594.It Ic userclass Ar string
1300150e 595Tag the DHCPv4 messages with the userclass.
cf42802e 596You can specify more than one.
bac03ede 597.It Ic vendor Ar code , Ns Ar value
87b266d2 598Add an encapsulated vendor option.
757520c5
RM
599.Ar code
600should be between 1 and 254 inclusive.
95d6dcfa
RM
601To add a raw vendor string, omit
602.Ar code
603but keep the comma.
757520c5
RM
604Examples.
605.Pp
606Set the vendor option 01 with an IP address.
607.D1 vendor 01,192.168.0.2
608Set the vendor option 02 with a hex code.
609.D1 vendor 02,01:02:03:04:05
610Set the vendor option 03 with an IP address as a string.
611.D1 vendor 03,\e"192.168.0.2\e"
87b266d2 612Set un-encapsulated vendor option to hello world.
9cb58952 613.D1 vendor ,"hello world"
bac03ede 614.It Ic vendorclassid Ar string
1300150e
RM
615Set the DHCP Vendor Class.
616DHCPv6 has it's own option as shown below.
eebe9a18
RM
617The default is
618dhcpcd-<version>:<os>:<machine>:<platform>.
619For example
620.D1 dhcpcd-5.5.6:NetBSD-6.99.5:i386:i386
bac03ede 621If not set then none is sent.
eebe9a18
RM
622Some badly configured DHCP servers reject unknown vendorclassids.
623To work around it, try and impersonate Windows by using the MSFT vendorclassid.
7a911e57 624.It Ic vendclass Ar en Ar data
1300150e 625Add the DHCPv6 Vendor Indetifying Vendor Class with the IANA assigned Enterprise
7a911e57
RM
626Number
627.Ar en
628with the
629.Ar data .
630This option can be set more than once to add more data, but the behaviour,
631as per
632.Xr RFC 3925
633is undefined if the Enterprise Number differs.
7013b073 634.It Ic waitip Op 4 | 6
2a07a2af 635Wait for an address to be assigned before forking to the background.
7013b073
RM
6364 means wait for an IPv4 address to be assigned.
6376 means wait for an IPv6 address to be assigned.
8b7499fd
RM
638If no argument is given,
639.Nm
640will wait for any address protocol to be assigned.
641It is possible to wait for more than one address protocol and
642.Nm
643will only fork to the background when all waiting conditions are satisfied.
4242c9b3
RM
644.It Ic xidhwaddr
645Use the last four bytes of the hardware address as the DHCP xid instead
646of a randomly generated number.
eaa90296 647.El
8e7d8c37 648.Ss Defining new options
2be15e88 649DHCP, ND and DHCPv6 allow for the use of custom options.
8e7d8c37 650Each option needs to be started with the
2be15e88
RM
651.Ic define ,
652.If definend
8e7d8c37
RM
653or
654.Ic define6
655directive.
656This can optionally be followed by both
657.Ic embed
658or
659.Ic encap
660options.
661Both can be specified more than once and
662.Ic embed
663must come before
664.Ic encap .
665.Bl -tag -width indent
666.It Ic define Ar code Ar type Ar variable
667Defines the DHCP option
668.Ar code
669of
670.Ar type
671with a name of
672.Ar variable
673exported to
674.Xr dhcpcd-run-hooks 8 .
2be15e88
RM
675.It Ic definend Ar code Ar type Ar variable
676Defines the ND option
677.Ar code
678of
679.Ar type
680with a name of
681.Ar variable
682exported to
683.Xr dhcpcd-run-hooks 8 ,
684with a prefix of
685.Va _nd .
8e7d8c37
RM
686.It Ic define6 Ar code Ar type Ar variable
687Defines the DHCPv6 option
688.Ar code
689of
690.Ar type
691with a name of
692.Ar variable
693exported to
694.Xr dhcpcd-run-hooks 8 ,
695with a prefix of
696.Va _dhcp6 .
7a911e57
RM
697.It Ic vendopt Ar code Ar type Ar variable
698Defines the Vendor-Identifying Vendor Options.
699The
700.Ar code
701is the IANA Enterprise Number which will unqiuely describe the encapsulated
702options.
703.Ar type
704is normally
705.Ar encap .
706.Ar variable
707names the Vendor option to be exported.
8e7d8c37
RM
708.It Ic embed Ar type Ar variable
709Defines an embedded variable within the defined option.
710The length is determined by the
711.Ar type .
63bdd2c2
RM
712If the
713.Ar variable
714is not the same as defined in the parent option,
715it is prefixed with the parent
716.Ar variable
717first with an underscore.
cc71162d
RM
718If the
719.Ar variable
720has the name of
721.Ar reserved
722then it is not processed.
8e7d8c37
RM
723.It Ic encap Ar code Ar type Ar variable
724Defines an encapsulated variable within the defined option.
725The length is determined by the
726.Ar type .
63bdd2c2
RM
727If the
728.Ar variable
729is not the same as defined in the parent option,
730it is prefixed with the parent
731.Ar variable
732first with an underscore.
733.El
734.Ss Type prefix
735These keywords come before the type itself, to describe it more fully.
736You can use more than one, but they must appear in the order listed below.
737.Bl -tag -width -indent
738.It Ic request
739Requests the option by default without having to be specified in user
740configuration
741.It Ic norequest
742This option cannot be requested, regardless of user configuration
ecdbb919
RM
743.It Ic optional
744This option is optional.
745Only makes sense for embedded options where like the client FQDN option where
746the FQDN string itself is optional.
03476881
RM
747.It Ic index
748The option can appear more than once and will be indexed.
63bdd2c2 749.It Ic array
b2feeb9e 750The option data is split into a space separated array, each element being
63bdd2c2 751the same type.
8e7d8c37
RM
752.El
753.Ss Types to define
b21cd906
RM
754The type directly affects the length of data consumed inside the option.
755Any remaining data is normally discarded.
756Lengths can be specified for string and binhex types, but this is generally
757with other data embedded afterwards in the same option.
8e7d8c37
RM
758.Bl -tag -width indent
759.It Ic ipaddress
cc71162d 760An IPv4 address, 4 bytes.
8e7d8c37 761.It Ic ip6address
cc71162d 762An IPv6 address, 16 bytes.
b21cd906 763.It Ic string Op : Ic length
8f008ca7 764A NVT ASCII string of printable characters.
8e7d8c37 765.It Ic byte
cc71162d
RM
766A byte.
767.It Ic bitflags : Ic flags
768A byte represented as a string of flags, most significant bit first.
769For example, using ABCDEFGH then A would equal 10000000, B 01000000,
770C 00100000, etc.
771If the bit is not set, the flag is not printed.
772A flag of 0 is not printed even if the bit postition is set.
773This is to allow reservation of the first bits while assinging the last bits.
8e7d8c37 774.It Ic int16
cc71162d 775A signed 16bit integer, 2 bytes.
8e7d8c37 776.It Ic uint16
cc71162d 777An unsigned 16bit integer, 2 bytes.
8e7d8c37 778.It Ic int32
cc71162d 779A signed 32bit integer, 4 bytes.
8e7d8c37 780.It Ic uint32
cc71162d
RM
781An unsigned 32bit integer, 4 bytes.
782.It Ic flag
783A fixed value (1) to indicate that the option is present, 0 bytes.
8e7d8c37 784.It Ic domain
cc71162d 785A RFC 3397 encoded string.
8f008ca7 786.It Ic dname
cc71162d 787A RFC 1035 validated string.
b21cd906 788.It Ic binhex Op : Ic length
cc71162d 789Binary data expressed as hexadecimal.
8e7d8c37 790.It Ic embed
cc71162d 791Contains embedded options (implies encap as well).
8e7d8c37 792.It Ic encap
cc71162d 793Contains encapsulated options (implies embed as well).
03476881 794.It Ic option
cc71162d 795References an option from the global definition.
8e7d8c37
RM
796.El
797.Ss Example definition
798.D1 # DHCP option 81, Fully Qualified Domain Name, RFC4702
63bdd2c2
RM
799.D1 define 81 embed fqdn
800.D1 embed byte flags
801.D1 embed byte rcode1
802.D1 embed byte rcode2
8e7d8c37
RM
803.D1 embed domain fqdn
804.Pp
805.D1 # DHCP option 125, Vendor Specific Information Option, RFC3925
63bdd2c2
RM
806.D1 define 125 encap vsio
807.D1 embed uint32 enterprise_number
8e7d8c37 808.D1 # Options defined for the enterprise number
63bdd2c2 809.D1 encap 1 ipaddress ipaddress
0dc49454 810.Ss Supported Authentication Protocols
c73ed171
RM
811.Bl -tag -width -indent
812.It Ic token
0dc49454 813Sends and expects the token with the secretid 0 and realm of "" in each message.
c73ed171
RM
814.It Ic delayedrealm
815Delayed Authentication.
816.Nm dhcpcd
817will send an authentication option with no key or MAC.
818The server will see this option, and select a key for
819.Nm , writing the
820.Ar realm
821and
822.Ar secretid
823in it.
824.Nm dhcpcd
825will then look for a non-expired token with a matching realm and secretid.
826This token is used to authenicate all other messages.
827.It Ic delayed
828Same as above, but without a realm.
829.El
0dc49454 830.Ss Supported Authentication Algorithms
c73ed171
RM
831If none specified,
832.Ic hmac-md5
833is the default.
834.Bl -tag -width -indent
835.It Ic hmac-md5
836.El
837.Ss Supported Replay Detection Mechanisms
838If none specified,
839.Ic monotonic
840is the default.
cf0840ef
RM
841If this is changed from what was previously used,
842or the means of calculating or storing it is broken then the DHCP server
843will probably have to have its notion of the clients Replay Detection Value
844reset.
c73ed171 845.Bl -tag -width -indent
cf0840ef
RM
846.It Ic monocounter
847Read the number in the file
848.Pa @DBDIR@/dhcpcd-rdm.monotonic
849and add one to it.
850.It Ic monotime
851Create a NTP timestamp from the system time.
c73ed171 852.It Ic monotonic
cf0840ef
RM
853Same as
854.Ic monotime .
c73ed171 855.El
ba9dfb7a 856.Sh SEE ALSO
0b4a1931 857.Xr fnmatch 3 ,
065125d4 858.Xr if_nametoindex 3 ,
0b4a1931
RM
859.Xr dhcpcd 8 ,
860.Xr dhcpcd-run-hooks 8
ba9dfb7a 861.Sh AUTHORS
2cfe8d07 862.An Roy Marples Aq Mt roy@marples.name
ba9dfb7a 863.Sh BUGS
fd73ceb1
RM
864Please report them to
865.Lk http://roy.marples.name/projects/dhcpcd