#
# For a description of the syntax of this configuration file,
# see scripts/kbuild/config-language.txt.
#

menu "udhcp Server/Client"

config CONFIG_UDHCPD
	bool "udhcp Server (udhcpd)"
	default n
	help
	  uDHCPd is a DHCP server geared primarily toward embedded systems,
	  while striving to be fully functional and RFC compliant.

	  See http://udhcp.busybox.net for further details.

config CONFIG_UDHCPC
	bool "udhcp Client (udhcpc)"
	default n
	help
	  uDHCPc is a DHCP client geared primarily toward embedded systems,
	  while striving to be fully functional and RFC compliant.

	  The udhcp client negotiates a lease with the DHCP server and
	  notifies a set of scripts when a lease is obtained or lost.

	  See http://udhcp.busybox.net for further details.

config CONFIG_DUMPLEASES
	bool "Lease display utility (dumpleases)"
	default n
	depends on CONFIG_UDHCPD
	help
	  dumpleases displays the leases written out by the udhcpd server.
	  Lease times are stored in the file by time remaining in lease, or
	  by the absolute time that it expires in seconds from epoch.

	  See http://udhcp.busybox.net for further details.

config CONFIG_FEATURE_UDHCP_SYSLOG
	bool "  Log udhcp messages to syslog (instead of stdout)"
	default n
	depends on CONFIG_UDHCPD || CONFIG_UDHCPC
	help
	  If selected, udhcpd will log all its messages to syslog, otherwise,
	  it will attempt to log them to stdout.

	  See http://udhcp.busybox.net for further details.

config CONFIG_FEATURE_UDHCP_DEBUG
	bool "  Compile udhcp with noisy debugging messages"
	default n
	depends on CONFIG_UDHCPD || CONFIG_UDHCPC
	help
	  If selected, udhcpd will output extra debugging output.  If using
	  this option, compile uDHCP with "-g", and do not fork the daemon to
	  the background.

	  See http://udhcp.busybox.net for further details.

endmenu

