# Sample udhcpd configuration file (/etc/udhcpd.conf)
# Values shown are defaults

# The start and end of the IP lease block
start		192.168.0.20
end		192.168.0.254

# The interface that udhcpd will use
interface	eth0

# The maximum number of leases (includes addresses reserved
# by OFFER's, DECLINE's, and ARP conflicts). Will be corrected
# if it's bigger than IP lease block, but it ok to make it
# smaller than lease block.
#max_leases	254

# The time period at which udhcpd will write out a dhcpd.leases
# file. If this is 0, udhcpd will never automatically write a
# lease file. Specified in seconds.
#auto_time	7200

# The amount of time that an IP will be reserved (leased to nobody)
# if a DHCP decline message is received (seconds).
#decline_time	3600

# The amount of time that an IP will be reserved
# if an ARP conflict occurs (seconds).
#conflict_time	3600

# How long an offered address is reserved (seconds).
#offer_time	60

# If client asks for lease below this value, it will be rounded up
# to this value (seconds).
#min_lease	60

# The location of the leases file
#lease_file	/var/lib/misc/udhcpd.leases

# The location of the pid file
#pidfile	/var/run/udhcpd.pid

# Every time udhcpd writes a leases file, the below script will be called.
#notify_file			# default: no script
#notify_file	dumpleases	# useful for debugging

# The following are bootp specific options, settable by udhcpd.
#siaddr		192.168.0.22		#default: 0.0.0.0
#sname		zorak			#default: none
#boot_file	/var/nfs_root		#default: none

# The remainder of options are DHCP options and can be specified with the
# keyword 'opt' or 'option'. If an option can take multiple items, such
# as the dns option, they can be listed on the same line, or multiple
# lines. The only option with a default is 'lease'.
# Examples:
opt	dns	192.168.10.2 192.168.10.10
option	subnet	255.255.255.0
opt	router	192.168.10.2
opt	wins	192.168.10.10
option	dns	129.219.13.81	# appended to above DNS servers for a total of 3
option	domain	local
option	lease	864000		# 10 days of seconds

# Currently supported options (for more info, see options.c):
#opt subnet
#opt timezone
#opt router
#opt timesrv
#opt namesrv - obsolete, disabled
#opt dns
#opt logsrv
#opt cookiesrv - rarely (never?) used, disabled
#opt lprsrv
#opt bootsize
#opt domain
#opt swapsrv
#opt rootpath
#opt ipttl
#opt mtu
#opt broadcast
#opt wins
#opt lease
#opt ntpsrv
#opt tftp
#opt bootfile

# Static leases map
#static_lease 00:60:08:11:CE:4E 192.168.0.54
#static_lease 00:60:08:11:CE:3E 192.168.0.44
