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

mainmenu_option next_comment
comment 'Networking Utilities'

bool 'Enable IPv6 support'						CONFIG_FEATURE_IPV6
bool 'hostname'	    CONFIG_HOSTNAME
bool 'ifconfig'	    CONFIG_IFCONFIG
if [ "$CONFIG_IFCONFIG" = "y" ]; then
    bool '  Enable status reporting output (+7k)'					CONFIG_FEATURE_IFCONFIG_STATUS  
    bool '  Enable slip-specific options "keepalive" and "outfill"'	CONFIG_FEATURE_IFCONFIG_SLIP
    bool '  Enable options "mem_start", "io_addr", and "irq"'		CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ
    bool '  Enable option "hw" (ether only)'						CONFIG_FEATURE_IFCONFIG_HW 
    bool '  Set the broadcast automatically'					CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS
fi
bool 'nc'	    CONFIG_NC
bool 'netstat'	    CONFIG_NETSTAT
bool 'nslookup'	    CONFIG_NSLOOKUP
bool 'ping'	    CONFIG_PING
if [ "$CONFIG_PING" = "y" ]; then
    bool '  Enable fancy ping output'		CONFIG_FEATURE_FANCY_PING
fi
if [ "$CONFIG_FEATURE_IPV6" = "y" ]; then
    bool 'ping6'	    CONFIG_PING6
    if [ "$CONFIG_PING6" = "y" ]; then
        bool '  Enable fancy ping6 output'		CONFIG_FEATURE_FANCY_PING6
    fi
fi
bool 'route'	    CONFIG_ROUTE
bool 'telnet'	    CONFIG_TELNET
if [ "$CONFIG_TELNET" = "y" ]; then
    bool '  Pass TERM type to remote host'		CONFIG_FEATURE_TELNET_TTYPE
fi
bool 'tftp'	    CONFIG_TFTP
if [ "$CONFIG_TFTP" = "y" ]; then
    bool '  Enable "get" command'			CONFIG_FEATURE_TFTP_GET
    bool '  Enable "put" command'			CONFIG_FEATURE_TFTP_PUT
    bool '  Enable "blocksize" option'		CONFIG_FEATURE_TFTP_BLOCKSIZE
    bool '  Enable debug'					CONFIG_FEATURE_TFTP_DEBUG
fi
bool 'traceroute'   CONFIG_TRACEROUTE
if [ "$CONFIG_TRACEROUTE" = "y" ]; then
    bool '  Enable verbose output'			CONFIG_FEATURE_TRACEROUTE_VERBOSE
    bool '  Enable SO_DEBUG option'	CONFIG_FEATURE_TRACEROUTE_SO_DEBUG
fi
bool 'udhcpc'       CONFIG_UDHCPC
bool 'wget'	    CONFIG_WGET
if [ "$CONFIG_WGET" = "y" ]; then
    bool '  Enable a nifty process meter (+2k)'	CONFIG_FEATURE_WGET_STATUSBAR
	bool '  Enable HTTP authentication'			CONFIG_FEATURE_WGET_AUTHENTICATION
fi

endmenu

