Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
DHCPCD-RUN-HOOKS(8)	FreeBSD	System Manager's Manual	   DHCPCD-RUN-HOOKS(8)

     dhcpcd-run-hooks -- DHCP client configuration script

     dhcpcd-run-hooks is used by dhcpcd(8) to run any system and user defined
     hook scripts.  System hook	scripts	are found in
     /usr/local/libexec/dhcpcd-hooks and the user defined hooks	are
     /usr/local/etc/dhcpcd.enter-hook.	and /usr/local/etc/dhcpcd.exit-hook.
     The default install supplies hook scripts for configuring
     /etc/resolv.conf and the hostname.	 Your distribution may have included
     other hook	scripts	to say configure ntp or	ypbind.	 A test	hook is	also
     supplied that simply echos	the dhcp variables to the console from DIS-
     COVER message.

     The hooks scripts are loaded into the current shell rather	than executed
     in	their own process.  This allows	each hook script, such as
     /usr/local/etc/dhcpcd.enter-hook to customise environment variables or
     provide alternative functions to hooks further down the chain.  As	such,
     using the shell builtins exit, exec or similar will cause
     dhcpcd-run-hooks to exit at that point.

     Each time dhcpcd-run-hooks	is invoked, $interface is set to the interface
     that dhcpcd is run	on and $reason is to the reason	why q dhcpcd-run-hooks
     was invoked.  DHCP	information to be configured is	held in	variables
     starting with the word new_ and old DHCP information to be	removed	is
     held in variables starting	with the word old_.  dhcpcd can	display	the
     full list of variables it knows how about by using	the -V,	--variables

     Here's a list of reasons why dhcpcd-run-hooks could be invoked:

     PREINIT	       dhcpcd is starting up and any pre-initialisation	should
		       be done.

     CARRIER	       dhcpcd has detected the carrier is up.  This is gener-
		       ally just a notification	and no action need be taken.

     NOCARRIER	       dhcpcd lost the carrier.	 The cable may have been un-
		       plugged or association to the wireless point lost.

     INFORM | INFORM6  dhcpcd informed a DHCP server about its address and ob-
		       tained other configuration details.

     BOUND | BOUND6    dhcpcd obtained a new lease from	a DHCP server.

     RENEW | RENEW6    dhcpcd renewed it's lease.

     REBIND | REBIND6  dhcpcd has rebound to a new DHCP	server.

     REBOOT | REBOOT6  dhcpcd successfully requested a lease from a DHCP

     DELEGATED6	       dhcpcd assigned a delegated prefix to the interface.

     IPV4LL	       dhcpcd obtained an IPV4LL address, or one was removed.

     STATIC	       dhcpcd has been configured with a static	configuration
		       which has not been obtained from	a DHCP server.

     3RDPARTY	       dhcpcd is monitoring the	interface for a	3rd party to
		       give it an IP address.

     TIMEOUT	       dhcpcd failed to	contact	any DHCP servers but was able
		       to use an old lease.

     EXPIRE | EXPIRE6  dhcpcd's	lease or state expired and it failed to	obtain
		       a new one.

     NAK	       dhcpcd received a NAK from the DHCP server.  This
		       should be treated as EXPIRE.

     RECONFIGURE       dhcpcd has been instructed to reconfigure an interface.

     ROUTERADVERT      dhcpcd has received an IPv6 Router Advertisement, or
		       one has expired.

     STOP | STOP6      dhcpcd stopped running on the interface.

     STOPPED	       dhcpcd has stopped entirely.

     DEPARTED	       The interface has been removed.

     FAIL	       dhcpcd failed to	operate	on the interface.  This	nor-
		       mally happens when dhcpcd does not support the raw in-
		       terface,	which means it cannot work as a	DHCP or	Zero-
		       Conf client.  Static configuration and DHCP INFORM is
		       still allowed.

     TEST	       dhcpcd received an OFFER	from a DHCP server but will
		       not configure the interface.  This is primarily used to
		       test the	variables are filled correctly for the script
		       to process them.

     dhcpcd will clear the environment variables aside from $PATH.  The	fol-
     lowing variables will then	be set,	along with any protocol	supplied ones.

     $chroot			  the directory	where dhcpcd is	chrooted.

     $interface			  the name of the interface.

     $protocol			  the protocol that triggered the event.

     $reason			  as described above.

     $pid			  the pid of dhcpcd.

     $ifcarrier			  the link status of $interface: unknown, up
				  or down.

     $ifmetric			  $interface preference, lower is better.

     $ifwireless		  1 if $interface is wireless, otherwise 0.

     $ifflags			  $interface flags.

     $ifmtu			  $interface MTU.

     $ifssid			  the name of the SSID the interface is	con-
				  nected to.

     $interface_order		  A list of interfaces,	in order of prefer-

     $if_up			  true if the interface	is up, otherwise

     $if_down			  true if the interface	is down, otherwise

     $af_waiting		  Address family waiting for, as defined in

     $profile			  the name of the profile selected from

     $new_delegated_dhcp6_prefix  space	separated list of delegated prefixes.

     When dhcpcd-run-hooks runs, it loads /usr/local/etc/dhcpcd.enter-hook and
     any scripts found in /usr/local/libexec/dhcpcd-hooks in a lexical order
     and then finally /usr/local/etc/dhcpcd.exit-hook


     Roy Marples <>

     Please report them	to

     dhcpcd will validate the content of each option against its encoding.
     For string, ascii,	raw or binhex encoding it's up to the user to validate
     it	for the	intended purpose.

     When used in a shell script, each variable	must be	quoted correctly.

FreeBSD	13.0			 May 24, 2020			  FreeBSD 13.0


Want to link to this manual page? Use this URL:

home | help