# 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 maximim number of leases (includes addresses reserved
# by OFFER's, DECLINE's, and ARP conficts). 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 conflct 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

# Everytime 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 remainer of options are DHCP options and can be specifed 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	# appened 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
#opt dns
#opt logsrv
#opt cookiesrv
#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
