# IPv4 Options

# Copyright (c) 2016 Intel Corporation.
# SPDX-License-Identifier: Apache-2.0

menuconfig NET_IPV4
	bool "IPv4"
	help
	  Enable IPv4 support. If this is enabled then the device is
	  able to send and receive IPv4 network packets.

if NET_IPV4

config NET_INITIAL_TTL
	int "Initial time to live for a connection"
	default 64
	help
	  The value should be > 0

config NET_IF_MAX_IPV4_COUNT
	int "Max number of IPv4 network interfaces in the system"
	default NET_VLAN_COUNT if NET_VLAN
	default 1
	help
	  This tells how many network interfaces there will be in the system
	  that will have IPv4 enabled.

config NET_IF_UNICAST_IPV4_ADDR_COUNT
	int "Max number of unicast IPv4 addresses per network interface"
	default 2 if NET_IPV4_AUTO
	default 1

config NET_IF_MCAST_IPV4_ADDR_COUNT
	int "Max number of multicast IPv4 addresses per network interface"
	default 1

config NET_ICMPV4_ACCEPT_BROADCAST
	bool "Accept broadcast ICMPv4 echo-request"
	help
	  If set, then respond to ICMPv4 echo-request that is sent to
	  broadcast address.

config NET_IPV4_ACCEPT_ZERO_BROADCAST
	bool "Accept 0.0.0.0 broadcast destination address"
	help
	  If set, then accept UDP packets destined to non-standard
	  0.0.0.0 broadcast address as described in RFC 1122 ch. 3.3.6

config NET_DHCPV4
	bool "Enable DHCPv4 client"

config NET_DHCPV4_INITIAL_DELAY_MAX
	int "Maximum time out for initial discover request"
	depends on NET_DHCPV4
	default 10
	range 2 10
	help
	  As per RFC2131 4.1.1, we wait a random period between
	  1 and 10 seconds before sending the initial discover.

config NET_IPV4_AUTO
	bool "Enable IPv4 autoconfiguration [EXPERIMENTAL]"
	depends on NET_ARP
	help
	  Enables IPv4 auto IP address configuration (see RFC 3927)

module = NET_IPV4
module-dep = NET_LOG
module-str = Log level for core IPv4
module-help = Enables core IPv4 code to output debug messages.
source "subsys/net/Kconfig.template.log_config.net"

module = NET_ICMPV4
module-dep = NET_LOG
module-str = Log level for ICMPv4
module-help = Enables ICMPv4 code to output debug messages.
source "subsys/net/Kconfig.template.log_config.net"

if NET_DHCPV4
module = NET_DHCPV4
module-dep = NET_LOG
module-str = Log level for DHCPv4 client
module-help = Enable debug diagnostic from DHCPV4 client.
source "subsys/net/Kconfig.template.log_config.net"
endif # NET_DHCPV4

if NET_IPV4_AUTO
module = NET_IPV4_AUTO
module-dep = NET_LOG
module-str = Log level for IPv4 autoconf client
module-help = Enable debug diagnostic from IPv4 autoconf client.
source "subsys/net/Kconfig.template.log_config.net"
endif # NET_IPV4_AUTO

endif # NET_IPV4
