{
    "mode": "man",
    "parameter": "DHCPCD.CONF",
    "section": "5",
    "url": "https://www.chedong.com/phpMan.php/man/DHCPCD.CONF/5/json",
    "generated": "2026-10-04T06:53:30Z",
    "sections": {
        "NAME": {
            "content": "dhcpcd.conf — dhcpcd configuration file\n",
            "subsections": []
        },
        "DESCRIPTION": {
            "content": "Although dhcpcd can do everything from the command line, there are cases where it's just eas‐\nier  to  do  it  once in a configuration file.  Most of the options found in dhcpcd(8) can be\nused here.  The first word on the line is the option and the rest of the line is  the  value.\nLeading and trailing whitespace for the option and value are trimmed.  You can escape charac‐\nters  in  the  value  using  the \\ character.  Comments can be prefixed with the # character.\nString values should be quoted with the \" character.\n\nHere's a list of available options:\n\nallowinterfaces pattern\nWhen discovering interfaces, the interface name must match pattern which is  a  space\nor  comma  separated list of patterns passed to fnmatch(3).  If the same interface is\nmatched in denyinterfaces then it is still denied.\n\ndenyinterfaces pattern\nWhen discovering interfaces, the interface name must not match  pattern  which  is  a\nspace or comma separated list of patterns passed to fnmatch(3).\n",
            "subsections": [
                {
                    "name": "anonymous",
                    "content": "Enables  Anonymity  Profiles for DHCP, RFC 7844.  Any DUID is ignored and ClientID is\nset to LL only.  All non essential options are then masked at this  point,  but  they\ncould  be  unmasked by explicitly requesting the option after the anonymous option is\nprocessed.  As such, the anonymous option should be the last option in the configura‐\ntion unless you really want to send something which could identify you.  dhcpcd  will\nnot try and reboot an old lease, it will go straight into DISCOVER/SOLICIT.\n"
                },
                {
                    "name": "randomise_hwaddr",
                    "content": "Forces  a hardware address randomisation when the interface is brought up or when the\ncarrier is lost.  This is generally used in tandem with the anonymous option.\n\narping address [address]\ndhcpcd will arping each address in order before attempting DHCP.  If  an  address  is\nfound,  we will select the replying hardware address as the profile, otherwise the IP\naddress.  Example:\n\ninterface bge0\narping 192.168.0.1\n\n# My specific 192.168.0.1 network\nprofile dd:ee:aa:dd:bb:ee\nstatic ipaddress=192.168.0.10/24\n\n# A generic 192.168.0.1 network\nprofile 192.168.0.1\nstatic ipaddress=192.168.0.98/24\n\nauthprotocol protocol [algorithm [rdm]]\nAuthenticate DHCP messages.  See the Supported Authentication Protocols section.   If\nprotocol is token then algorithm is sndsecretid/rcvsecretid so you can send and re‐\nceive different tokens.\n\nauthtoken secretid realm expire key\nDefine  a  shared key for use in authentication.  realm can be \"\" to for use with the\ndelayed protocol.  expire is the date the token expires and should be formatted \"yyy-\nmm-dd HH:MM\".  You can use the keyword forever or 0 which means the token  never  ex‐\npires.   For the token protocol, secretid needs to be 0 and realm needs to be \"\".  If\ndhcpcd has the error\ndhcpauthencode: Invalid argument\nthen it means that dhcpcd could not find the correct  authentication  token  in  your\nconfiguration.\n"
                },
                {
                    "name": "background",
                    "content": "Fork  to  the background immediately.  This is useful for startup scripts which don't\ndisable link messages for carrier status.\n\nblacklist address[/cidr]\nIgnores all packets from address[/cidr].\n\nwhitelist address[/cidr]\nOnly accept packets from address[/cidr].  blacklist is ignored if whitelist is set.\n\nbootp   Be a BOOTP client.  Basically, this just doesn't send a DHCP Message Type option  and\nwill only interact with a BOOTP server.  All other DHCP options still work.\n"
                },
                {
                    "name": "broadcast",
                    "content": "Instructs  the DHCP server to broadcast replies back to the client.  Normally this is\nonly set for non-Ethernet interfaces, such  as  FireWire  and  InfiniBand.   In  most\ncases, dhcpcd will set this automatically.\n\ncontrolgroup group\nSets  the  group ownership of /run/dhcpcd/sock so that users other than root can con‐\nnect to dhcpcd.\n\ndebug   Echo debug messages to the stderr and syslog.\n\ndev value\nLoad the value /dev management module.  dhcpcd will load the first one found to work,\nif any.\n\nenv value\nPush value to the environment for use in dhcpcd-run-hooks(8).  For example,  you  can\nforce  the  hostname hook to always set the hostname with env forcehostname=YES.  Or\nset which driver wpasupplicant(8) should use with env wpasupplicantdriver=nl80211\n\nIf the hostname is set, it will be will set to the FQDN if possible as per RFC  4702,\nsection  3.1.   If  the  FQDN option is missing, dhcpcd will still try and set a FQDN\nfrom the hostname and domain options for consistency.   To  override  this,  set  env\nhostnamefqdn=[YES|NO|SERVER].   A  value  of SERVER means just what the server says,\ndon't manipulate it.  This could lead to an inconsistent hostname  on  a  DHCPv4  and\nDHCPv6 network where the DHCPv4 hostname is short and the DHCPv6 has an FQDN.  DHCPv6\nhas no hostname option.\n\nclientid string\nSend  the  clientid.   If  the string is of the format 01:02:03 then it is encoded as\nhex.  For interfaces whose hardware address  is  longer  than  8  bytes,  or  if  the\nclientid is an empty string then dhcpcd sends a default clientid of the hardware fam‐\nily and the hardware address.\n\nduid [ll | lt | uuid | value]\nUse  a  DHCP  Unique Identifier.  If a system UUID is available, that will be used to\ncreate a DUID-UUID, otherwise if persistent storage  is  available  then  a  DUID-LLT\n(link  local address + time) is generated, otherwise DUID-LL is generated (link local\naddress).  The DUID type  can  be  hinted  as  an  optional  parameter  if  the  file\n/var/lib/dhcpcd/duid  does  not exist.  If not ll, lt or uuid then value will be con‐\nverted from 00:11:22:33 format.  This, plus the IAID will be used  as  the  clientid.\nThe  DUID  generated will be held in /var/lib/dhcpcd/duid and should not be copied to\nother hosts.  This file also takes precedence over the above rules except for setting\na value.\n\niaid iaid\nSet the Interface Association Identifier to iaid.  This option must  be  used  in  an\ninterface  block.  This defaults to the VLANID (prefixed with 0xff) for the interface\nif set, otherwise the last 4 bytes of the hardware address assigned to the interface.\nEach instance of this should be unique within the scope  of  the  client  and  dhcpcd\nwarns if a conflict is detected.  If there is a conflict, it is only a problem if the\nconflicted IAIDs are used on the same network.\n\ndhcp    Enable DHCP on the interface, on by default.\n\ndhcp6   Enable DHCPv6 on the interface, on by default.\n\nipv4    Enable IPv4 on the interface, on by default.\n\nipv6    Enable IPv6 on the interface, on by default.\n\nrequest [address]\nRequest  the address in the DHCP DISCOVER message.  There is no guarantee this is the\naddress the DHCP server will actually give.  If no address is given  then  the  first\naddress currently assigned to the interface is used.\n\ninform [address[/cidr[/broadcastaddress]]]\nBehaves  like  request as above, but sends a DHCP INFORM instead of DISCOVER/REQUEST.\nThis does not get a lease as such, just notifies the DHCP server of  the  address  in\nuse.  You should also include the optional cidr network number in case the address is\nnot  already configured on the interface.  dhcpcd remains running and pretends it has\nan infinite lease.  dhcpcd will not de-configure the interface  when  it  exits.   If\ndhcpcd  fails  to  contact a DHCP server then it returns a failure instead of falling\nback on IPv4LL.\n"
                },
                {
                    "name": "inform6",
                    "content": "Performs a DHCPv6 Information Request.  No address is requested or specified, but all\nother DHCPv6 options are allowed.  This is normally performed automatically  when  an\nIPv6  Router  Advertisement  indicates that the client should perform this operation.\nThis option is only needed when dhcpcd is not processing IPv6  RA  messages  and  the\nneed for a DHCPv6 Information Request exists.\n"
                },
                {
                    "name": "persistent",
                    "content": "dhcpcd  normally  de-configures the interface and configuration when it exits.  Some‐\ntimes, this isn't desirable if, for example, you have root mounted over  NFS  or  SSH\nclients  connect to this host and they need to be notified of the host shutting down.\nYou can use this option to stop this from happening.\n\nfallback profile\nFall back to using this profile if DHCP fails.  This allows you to configure a static\nprofile instead of using ZeroConf.\n\nhostname name\nSends the hostname name to the DHCP server so it can be registered in DNS.   If  name\nis  an  empty  string  then  the  current system hostname is sent.  If name is a FQDN\n(i.e., contains a .) then it will be encoded as such.\n"
                },
                {
                    "name": "hostname_short",
                    "content": "Sends the short hostname to the DHCP server instead of the FQDN.  This is useful  be‐\ncause  DHCP  servers  will not register the FQDN in their DNS if the domain part does\nnot match theirs.\n\nAlso, see the env option above to control how the hostname is set on the host.\n\niana [iaid [/ address]]\nRequest a DHCPv6 Normal Address for iaid.  iaid defaults to the iaid  option  as  de‐\nscribed  above.   You can request more than one iana by specifying a unique iaid for\neach one.\n\niata [iaid]\nRequest a DHCPv6 Temporary Address for iaid.  You can request more than one iata  by\nspecifying a unique iaid for each one.\n\niapd [iaid [/ prefix / prefixlen] [interface [/ slaid [/ prefixlen [/ suffix]]]]]\nRequest a DHCPv6 Delegated Prefix for iaid.  This option must be used in an interface\nblock.  Unless a slaid of 0 is assigned with the same resultant prefix length as the\ndelegation,  a reject route is installed for the Delegated Prefix to stop unallocated\naddresses being resolved upstream.  If no interface is given then we  will  assign  a\nprefix  to  every other interface with a slaid equivalent to the interface index as‐\nsigned by the OS.  Otherwise addresses are  only  assigned  for  each  interface  and\nslaid.   To  avoid delegating to any interface, use - as the invalid interface name.\nEach assigned address will have a suffix, defaulting to 1.  If the suffix is 0 then a\nSLAAC address is assigned.  You cannot assign a prefix to  the  requesting  interface\nunless  the DHCPv6 server supports the RFC 6603 Prefix Exclude Option.  dhcpcd has to\nbe running for all the interfaces it is delegating to.  A default prefixlen of 64 is\nassumed, unless the maximum slaid does not fit.  In  this  case  prefixlen  is  in‐\ncreased  to  the highest multiple of 8 that can accommodate the slaid.  slaid is an\ninteger which must be unique inside the iaid and is added to the  prefix  which  must\nfit  inside prefixlen less the length of the delegated prefix.  You can specify mul‐\ntiple interface / slaid / prefixlen per iapd, space separated.  IPv6RS  should  be\ndisabled globally when requesting a Prefix Delegation.\n\nIn the following example eth0 is the externally facing interface to be configured for\nboth IPv4 and IPv6.  The DHCPv4 server will provide us with an IPv4 address and a de‐\nfault  route.   The  DHCPv6 server is going to provide us with an IPv6 address, a de‐\nfault route and a /64 subnet to be delegated to the internal interface.  The eth1 in‐\nterface will be automatically configured for IPv6 using the first address (::1)  from\nthe  delegated prefix.  A second prefix is requested and assigned to two other inter‐\nfaces.  rtadvd(8) can be used with an empty configuration  file  on  eth1,  eth2  and\neth3, to provide automatic IPv6 address configuration for the internal network.\n\nnoipv6rs                 # disable routing solicitation\ndenyinterfaces eth2      # Don't touch eth2 at all\ninterface eth0\nipv6rs                 # enable routing solicitation for eth0\niana 1                # request an IPv6 address\niapd 2 eth1/0         # request a PD and assign it to eth1\niapd 3 eth2/1 eth3/2  # req a PD and assign it to eth2 and eth3\niapd 4 -              # request a PD but don't assign it\n"
                },
                {
                    "name": "ipv4only",
                    "content": "Only configure IPv4.\n"
                },
                {
                    "name": "ipv6only",
                    "content": "Only configure IPv6.\n\nfqdn [disable | none | ptr | both]\nnone  will  not  ask the DHCP server to update DNS.  ptr just asks the DHCP server to\nupdate the PTR record of the host in DNS, whereas both also  updates  the  A  record.\ndisable will disable the FQDN option.  The default is both.  dhcpcd itself never does\nany DNS updates.  dhcpcd encodes the FQDN hostname as specified in RFC 1035.\n\ninterface interface\nSubsequent options are only parsed for this interface.\n"
                },
                {
                    "name": "ipv6ra_autoconf",
                    "content": "Generate  SLAAC  addresses for each Prefix advertised by an IPv6 Router Advertisement\nmessage with the Auto flag set.  On by default.\n"
                },
                {
                    "name": "ipv6ra_noautoconf",
                    "content": "Disables the above option.\n"
                },
                {
                    "name": "ipv6ra_fork",
                    "content": "By default, when dhcpcd receives an IPv6 Router Advertisement, dhcpcd will only  fork\nto  the background if the RA contains at least one unexpired RDNSS option and a valid\nprefix or no DHCPv6 instruction.  Set this option so to make dhcpcd always fork on  a\nRA.\n\nipv6rs  Enables  IPv6 Router Advertisement solicitation.  This is on by default, but is docu‐\nmented here in the case where it is disabled globally but needs to be enabled for one\ninterface.\n\nleasetime seconds\nRequest DHCP a lease time of seconds.  -1 represents an infinite lease time.  By  de‐\nfault  dhcpcd  does not request any lease time and leaves it in the hands of the DHCP\nserver.  It is not possible to request a DHCPv6 lease time as this is not RFC compli‐\nant.  See RFC 8415 21.4, 21.6, 21.21 and 21.22.\n\nlinkrcvbuf size\nOverride the size of the link receive buffer from the kernel default.   While  dhcpcd\nwill  recover from link buffer overflows, this may not be desirable on heavily loaded\nsystems.\n\nlogfile logfile\nWrites to the specified logfile.  dhcpcd still writes to syslog(3).  The  logfile  is\nreopened when dhcpcd receives the SIGUSR2 signal.\n\nmetric metric\nMetrics  are  used to prefer an interface over another one, lowest wins.  dhcpcd will\nsupply a default metric of 1000 + ifnametoindex(3).  This will be offset by 2000 for\nwireless interfaces, with additional offsets of 1000000 for IPv4LL  and  2000000  for\nroaming interfaces.\n\nmudurl url\nSpecifies  the  URL  for  a Manufacturer Usage Description (MUD).  The description is\nused by upstream network devices to instantiate any desired access lists.  See draft-\nietf-opsawg-mud for more information.\n"
                },
                {
                    "name": "noalias",
                    "content": "Any pre-existing IPv4 addresses will be removed from the interface when adding a  new\nIPv4 address.\n\nnoarp   Don't send any ARP requests.  This also disables IPv4LL.\n"
                },
                {
                    "name": "noauthrequired",
                    "content": "Don't require authentication even though we requested it.  Also allows FORCERENEW and\nRECONFIGURE messages without authentication.\n"
                },
                {
                    "name": "nodelay",
                    "content": "Don't delay for an initial randomised time when starting protocols.\n\nnodev   Don't load /dev management modules.\n\nnodhcp  Don't  start  DHCP  or  listen  to  DHCP messages.  This is only useful when allowing\nIPv4LL.\n"
                },
                {
                    "name": "nodhcp6",
                    "content": "Don't start DHCPv6 or listen to DHCPv6 messages.  Normally DHCPv6 is  started  by  an\nIPv6 Router Advertisement instruction or configuration.\n"
                },
                {
                    "name": "nogateway",
                    "content": "Don't install any default routes.\n"
                },
                {
                    "name": "gateway",
                    "content": "Install a default route if available (default).\n\nnohook script\nDon't run this hook script.  Matches full name, or prefixed with 2 numbers optionally\nending with .sh.\n\nSo  to  stop  dhcpcd  from  touching your DNS settings or starting wpasupplicant you\nwould do:-\nnohook resolv.conf, wpasupplicant\n\nnoipv4  Don't attempt to configure an IPv4 address.\n"
                },
                {
                    "name": "noipv4ll",
                    "content": "Don't attempt to obtain an IPv4LL address if we failed to get one via DHCP.  See  RFC\n3927.\n\nnoipv6  Don't solicit or accept IPv6 Router Advertisements and DHCPv6.\n"
                },
                {
                    "name": "noipv6rs",
                    "content": "Don't solicit or accept IPv6 Router Advertisements.\n\nnolink  Don't receive link messages about carrier status.  You should only set this for buggy\ninterface drivers.\n\nnoup    Don't bring the interface up when in manager mode.\n\noption option\nRequests  the  option  from  the  server.   It  can  be  a  variable  to  be  used in\ndhcpcd-run-hooks(8) or the numerical value.  You can specify more  options  separated\nby commas, spaces or more option lines.  Prepend dhcp6 to option to request a DHCPv6\noption.   If  no  DHCPv6  options  are  configured, then DHCPv4 options are mapped to\nequivalent DHCPv6 options.\n\nPrepend nd to option to handle ND options, but this only  works  for  the  nooption,\nreject and require options.\n\nTo see a list of options you can use, call dhcpcd with the -V, --variables argument.\n\nnooption option\nRemove the option from the message before it's processed.\n\nrequire option\nRequires  the option to be present in all messages, otherwise the message is ignored.\nTo enforce that dhcpcd only responds to DHCP servers and not BOOTP servers,  you  can\nrequire dhcpmessagetype.  This isn't an exact science though because a BOOTP server\ncan send DHCP-like options.\n\nreject option\nReject  a  message  that  contains  the  option.   This is useful when you cannot use\nrequire to select / de-select BOOTP messages.\n\ndestination option\nIf dhcpcd.conf detects an address added to a point to point interface (PPP, TUN, etc)\nthen it will set the listed DHCP options to the destination address of the interface.\n\nprofile name\nSubsequent options are only parsed for this profile name.\n\nquiet   Suppress any dhcpcd output to the console, except for errors.\n\nreboot seconds\nAllow reboot seconds before moving to the DISCOVER phase if we have an old  lease  to\nuse.   Allow  reboot seconds before starting fallback states from the DISCOVER phase.\nIPv4LL is started when the first reboot timeout is reached.  The default  is  5  sec‐\nonds.   A  setting  of  0  seconds causes dhcpcd.conf to skip the reboot phase and go\nstraight into DISCOVER.  This is desirable for mobile users  because  if  you  change\nfrom network A to network B and they use the same subnet and the address from network\nA isn't in use on network B, then the DHCP server will remain silent even if authori‐\ntative  which  means  dhcpcd  will  timeout before moving back to the DISCOVER phase.\nThis has no effect on DHCPv6 other than skipping the reboot phase.\n"
                },
                {
                    "name": "release",
                    "content": "dhcpcd will release the lease prior to stopping the interface.\n\nscript script\nUse script instead of the default /usr/lib/dhcpcd/dhcpcd-run-hooks.\n\nssid ssid\nSubsequent options are only parsed for this wireless ssid.\n\nslaac hwaddr | private | token token [temp | temporary]\nSelects the interface identifier used for SLAAC generated IPv6 addresses.  If private\nis used, a RFC 7217 address is generated.  If token token is used then the  token  is\ncombined  with  the  prefix  to make the final address.  The temporary directive will\ncreate a temporary address for the prefix as well.\n\nstatic value\nConfigures a static value.  If you set ipaddress then dhcpcd will not attempt to ob‐\ntain a lease and will just use the value for the address with an infinite lease time.\nIf you set an empty value this removes all  prior  static  allocations  to  the  same\nvalue.   This is useful when using profiles and in the case of ipaddress it will re‐\nmove the static allocation.  Note that setting 0.0.0.0 keeps  the  static  allocation\nbut  waits  for  a 3rdparty to configure the address.  If you set ip6address, dhcpcd\nwill continue auto-configuration as normal.\n\nHere is an example which configures two static address, overriding the  default  IPv4\nbroadcast  address,  an  IPv4  router, DNS and disables IPv6 auto-configuration.  You\ncould also use the inform6 command here if you wished to obtain more information  via\nDHCPv6.   For  IPv4,  you should use the inform ipaddress option instead of setting a\nstatic address.\ninterface eth0\nnoipv6rs\nstatic ipaddress=192.168.0.10/24\nstatic broadcastaddress=192.168.0.63\nstatic ip6address=fd51:42f8:caae:d92e::ff/64\nstatic routers=192.168.0.1\nstatic domainnameservers=192.168.0.1 fd51:42f8:caae:d92e::1\n\nHere is an example for PPP which gives the destination a default route.  It uses  the\nspecial destination keyword to insert the destination address into the value.\ninterface ppp0\nstatic ipaddress=0.0.0.0\ndestination routers\n\ntimeout seconds\nTime  out  after  seconds,  instead of the default 30.  A setting of 0 seconds causes\ndhcpcd to wait forever to get a lease.  If dhcpcd is working on  a  single  interface\nthen  dhcpcd  will  exit  when  a timeout occurs, otherwise dhcpcd will fork into the\nbackground.  If using IPv4LL then dhcpcd start the IPv4LL process after  the  timeout\nand then wait a little longer before really timing out.\n\nuserclass string\nTag the DHCPv4 message with the userclass.  You can specify more than one.\n\nmsuserclass string\nTag  the  DHCPv4  mesasge with the Microsoft userclass.  Unlike the userclass option,\nthis one can only be added once.  It should only be used for Microsoft  DHCP  servers\nand  the  vendorclassid should be set to \"MSFT 98\" or \"MSFT 5.0\".  This option is not\nRFC compliant.\n\nvendor code,value\nAdd an encapsulated vendor option.  code should be between 1 and 254  inclusive.   To\nadd a raw vendor string, omit code but keep the comma.  Examples.\n\nSet the vendor option 01 with an IP address.\nvendor 01,192.168.0.2\nSet the vendor option 02 with a hex code.\nvendor 02,01:02:03:04:05\nSet the vendor option 03 with an IP address as a string.\nvendor 03,\\\"192.168.0.2\\\"\nSet un-encapsulated vendor option to hello world.\nvendor ,\"hello world\"\n\nvendorclassid string\nSet the DHCP Vendor Class.  DHCPv6 has its own option as shown below.  The default is\ndhcpcd-<version>:<os>:<machine>:<platform>.  For example\ndhcpcd-5.5.6:NetBSD-6.99.5:i386:i386\nIf not set then none is sent.  Some badly configured DHCP servers reject unknown ven‐\ndorclassids.   To  work around it, try and impersonate Windows by using the MSFT ven‐\ndorclassid.\n\nvendclass en data\nAdd the DHCPv6 Vendor Indetifying Vendor Class with the IANA assigned Enterprise Num‐\nber en with the data.  This option can be set more than once to add  more  data,  but\nthe behaviour, as per RFC 3925 is undefined if the Enterprise Number differs.\n\nwaitip [4 | 6]\nWait  for  an  address to be assigned before forking to the background.  4 means wait\nfor an IPv4 address to be assigned.  6 means wait for an IPv6 address to be assigned.\nIf no argument is given, dhcpcd.conf will wait for any address  protocol  to  be  as‐\nsigned.   It  is  possible to wait for more than one address protocol and dhcpcd.conf\nwill only fork to the background when all waiting conditions are satisfied.\n"
                },
                {
                    "name": "xidhwaddr",
                    "content": "Use the last four bytes of the hardware address as the DHCP xid instead of a randomly\ngenerated number.\n"
                },
                {
                    "name": "Defining new options",
                    "content": "DHCP, ND and DHCPv6 allow for the use of custom options, and RFC 3925 vendor options for DHCP\ncan also be supplied.  Each option needs to be started with the define, definend, define6  or\nvendopt directive.  This can optionally be followed by both embed or encap options.  Both can\nbe specified more than once and embed must come before encap.\n\ndefine code type variable\nDefines  the  DHCP  option  code  of  type  with  a  name  of  variable  exported  to\ndhcpcd-run-hooks(8).\n\ndefinend code type variable\nDefines  the  ND  option  code  of  type  with  a  name  of  variable   exported   to\ndhcpcd-run-hooks(8), with a prefix of nd.\n\ndefine6 code type variable\nDefines  the  DHCPv6  option  code  of  type  with  a  name  of  variable exported to\ndhcpcd-run-hooks(8), with a prefix of dhcp6.\n\nvendopt code type variable\nDefines the Vendor-Identifying Vendor Options.  The code is the IANA Enterprise  Num‐\nber  which  will uniquely describe the encapsulated options.  type is normally encap.\nvariable names the Vendor option to be exported.\n\nembed type variable\nDefines an embedded variable within the defined option.  The length is determined  by\nthe  type.   If  the  variable is not the same as defined in the parent option, it is\nprefixed with the parent variable first with an underscore.  If the variable has  the\nname of reserved then it is not processed.\n\nencap code type variable\nDefines an encapsulated variable within the defined option.  The length is determined\nby  the type.  If the variable is not the same as defined in the parent option, it is\nprefixed with the parent variable first with an underscore.\n"
                },
                {
                    "name": "Type prefix",
                    "content": "These keywords come before the type itself, to describe it more fully.  You can use more than\none, but they must appear in the order listed below.\n\nrequest  Requests the option by default without having to be specified in user configuration.\n"
                },
                {
                    "name": "norequest",
                    "content": "This option cannot be requested, regardless of user configuration.\n"
                },
                {
                    "name": "optional",
                    "content": "This option is optional.  Only makes sense for embedded options like the client FQDN\noption, where the FQDN string itself is optional.\n\nindex    The option can appear more than once and will be indexed.\n\narray    The option data is split into a space separated array, each element being  the  same\ntype.\n"
                },
                {
                    "name": "Types to define",
                    "content": "The  type directly affects the length of data consumed inside the option.  Any remaining data\nis normally discarded.  Lengths can be specified for string and binhex  types,  but  this  is\ngenerally with other data embedded afterwards in the same option.\n"
                },
                {
                    "name": "ipaddress",
                    "content": "An IPv4 address, 4 bytes.\n"
                },
                {
                    "name": "ip6address",
                    "content": "An IPv6 address, 16 bytes.\n\nstring [: length]\nA NVT ASCII string of printable characters.\n\nbyte    A byte.\n\nbitflags: flags\nA  byte  represented  as a string of flags, most significant bit first.  For example,\nusing ABCDEFGH then A would equal 10000000, B 01000000, C 00100000, etc.  If the  bit\nis  not set, the flag is not printed.  A flag of 0 is not printed even if the bit po‐\nsition is set.  This is to allow reservation of the first bits  while  assigning  the\nlast bits.\n\nint16   A signed 16bit integer, 2 bytes.\n\nuint16  An unsigned 16bit integer, 2 bytes.\n\nint32   A signed 32bit integer, 4 bytes.\n\nuint32  An unsigned 32bit integer, 4 bytes.\n\nflag    A fixed value (1) to indicate that the option is present, 0 bytes.\n\ndomain  An RFC 3397 encoded string.\n\ndname   An RFC 1035 validated string.\n\nuri     If an array then the first two bytes are the URI length inside the option data.  Oth‐\nerwise,  the  whole option data is the URI.  As a space is not allowed in the URI en‐\ncoding, the URIs are space separated.\n\nbinhex [: length]\nBinary data expressed as hexadecimal.\n\nembed   Contains embedded options (implies encap as well).\n\nencap   Contains encapsulated options (implies embed as well).\n\noption  References an option from the global definition.\n"
                },
                {
                    "name": "Example definition",
                    "content": "# DHCP option 81, Fully Qualified Domain Name, RFC 4702\ndefine 81 embed fqdn\nembed byte flags\nembed byte rcode1\nembed byte rcode2\nembed domain fqdn\n\n# DHCP option 125, Vendor Specific Information Option, RFC 3925\ndefine 125 encap vsio\nembed uint32 enterprisenumber\n# Options defined for the enterprise number\nencap 1 ipaddress ipaddress\n"
                },
                {
                    "name": "Supported Authentication Protocols",
                    "content": "token    Sends a plain text token the server expects and matches a token sent by the  server.\nThe tokens do not have to be the same.  If unspecified, the token with a secretid of\n0 will be used in sending messages and validating received messages.\n"
                },
                {
                    "name": "delayedrealm",
                    "content": "Delayed  Authentication.   dhcpcd  will send an authentication option with no key or\nMAC.  The server will see this option, and select a key for dhcpcd.conf, writing the\nrealm and secretid in it.  dhcpcd will then look  for  an  unexpired  token  with  a\nmatching realm and secretid.  This token is used to authenticate all other messages.\n\ndelayed  Same as above, but without a realm.\n"
                },
                {
                    "name": "Supported Authentication Algorithms",
                    "content": "If none specified, hmac-md5 is the default.\n"
                },
                {
                    "name": "hmac-md5",
                    "content": ""
                },
                {
                    "name": "Supported Replay Detection Mechanisms",
                    "content": "If  none  specified,  monotonic  is the default.  If this is changed from what was previously\nused, or the means of calculating or storing it is broken, then the DHCP server will probably\nhave to have its notion of the client's Replay Detection Value reset.\n"
                },
                {
                    "name": "monocounter",
                    "content": "Read the number in the file /var/lib/dhcpcd/dhcpcd-rdm.monotonic and add one to it.\n"
                },
                {
                    "name": "monotime",
                    "content": "Create an NTP timestamp from the system time.\n"
                },
                {
                    "name": "monotonic",
                    "content": "Same as monotime.\n"
                }
            ]
        },
        "SEE ALSO": {
            "content": "fnmatch(3), ifnametoindex(3), dhcpcd(8), dhcpcd-run-hooks(8)\n",
            "subsections": []
        },
        "AUTHORS": {
            "content": "Roy Marples <roy@marples.name>\n",
            "subsections": []
        },
        "BUGS": {
            "content": "Please report them to https://roy.marples.name/projects/dhcpcd\n\nDebian                                    December 18, 2023                           DHCPCD.CONF(5)",
            "subsections": []
        }
    },
    "summary": "dhcpcd.conf — dhcpcd configuration file",
    "flags": [],
    "examples": [],
    "see_also": [
        {
            "name": "fnmatch",
            "section": "3",
            "url": "https://www.chedong.com/phpMan.php/man/fnmatch/3/json"
        },
        {
            "name": "ifnametoindex",
            "section": "3",
            "url": "https://www.chedong.com/phpMan.php/man/ifnametoindex/3/json"
        },
        {
            "name": "dhcpcd",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/dhcpcd/8/json"
        },
        {
            "name": "dhcpcd-run-hooks",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/dhcpcd-run-hooks/8/json"
        }
    ]
}