a22f7e777b
Some DHCPv4 servers do not respect BROADCAST flag set on DHCP Discover, replying with unicast packet, making it impossible to obtain DHCP address by Zephyr in such cases. RFC1542 chapter 3.1.1 makes the following statement about the BROADCAST flag: This addition to the protocol is a workaround for old host implementations. Such implementations SHOULD be modified so that they may receive unicast BOOTREPLY messages, thus making use of this workaround unnecessary. In general, the use of this mechanism is discouraged. Making it clear that being able to process unicast replies from the DHCP server is not only an optional behavior, but a recommended solution. Therefore, introduce a support for unicast DHCPv4 in Zephyr. To achieve this, add additional filtering rule at the IPv4 level - in case DHCPv4 is enabled, there is an active query and the packet is destined for the DHCPv4 module, let it through for the DHCPv4 module to process, regardless of the destination IP address. Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
174 lines
5 KiB
Plaintext
174 lines
5 KiB
Plaintext
# 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 2 if NET_LOOPBACK
|
|
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 2 if NET_LOOPBACK
|
|
default 1
|
|
|
|
config NET_IF_MCAST_IPV4_ADDR_COUNT
|
|
int "Max number of multicast IPv4 addresses per network interface"
|
|
default 2 if NET_IPV4_IGMP
|
|
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_IPV4_IGMP
|
|
bool "Internet Group Management Protocol (IGMP) support"
|
|
select NET_IPV4_HDR_OPTIONS
|
|
help
|
|
The value depends on your network needs. IGMP should normally be
|
|
enabled if IPv4 multicast support is needed. Currently we support
|
|
IGMPv2 and earlier versions. This requires IPv4 header support
|
|
because IP Router Alert option must be sent.
|
|
See RFC 2236 for details.
|
|
|
|
config NET_DHCPV4
|
|
bool "DHCPv4 client"
|
|
select NET_MGMT
|
|
select NET_MGMT_EVENT
|
|
depends on NET_UDP
|
|
|
|
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_DHCPV4_OPTION_CALLBACKS
|
|
bool "Option callbacks"
|
|
depends on NET_DHCPV4
|
|
help
|
|
If set, custom callbacks for arbitrary DHCP options
|
|
can be added. These can be used to support otherwise
|
|
DHCP options not used by the rest of the system.
|
|
|
|
config NET_DHCPV4_ACCEPT_UNICAST
|
|
bool "Accept unicast DHCPv4 traffic"
|
|
depends on NET_DHCPV4
|
|
default y
|
|
help
|
|
If set, the network stack will accept unicast DHCPv4 responses from
|
|
servers, before the assigned address is configured on the interface.
|
|
|
|
config NET_IPV4_AUTO
|
|
bool "IPv4 autoconfiguration [EXPERIMENTAL]"
|
|
depends on NET_ARP
|
|
select EXPERIMENTAL
|
|
help
|
|
Enables IPv4 auto IP address configuration (see RFC 3927)
|
|
|
|
config NET_IPV4_HDR_OPTIONS
|
|
bool "IPv4 Header options support"
|
|
help
|
|
Enables IPv4 header options support. Current support for only
|
|
ICMPv4 Echo request. Only RecordRoute and Timestamp are handled.
|
|
|
|
config NET_IPV4_FRAGMENT
|
|
bool "Support IPv4 fragmentation"
|
|
help
|
|
IPv4 fragmentation is disabled by default. This limits incoming and
|
|
outgoing packets to the MTU (1500 bytes for Ethernet). If you enable
|
|
fragmentation support, please increase amount of RX data buffers so
|
|
that larger packets can be received.
|
|
|
|
config NET_IPV4_FRAGMENT_MAX_COUNT
|
|
int "How many packets to reassemble at a time"
|
|
range 1 16
|
|
default 1
|
|
depends on NET_IPV4_FRAGMENT
|
|
help
|
|
How many fragmented IPv4 packets can be waiting reassembly
|
|
simultaneously. You may need to increase the network buffer
|
|
count.
|
|
|
|
config NET_IPV4_FRAGMENT_MAX_PKT
|
|
int "How many fragments can be handled to reassemble a packet"
|
|
default 2
|
|
depends on NET_IPV4_FRAGMENT
|
|
help
|
|
Incoming fragments are stored in per-packet queue before being
|
|
reassembled. This value defines the number of fragments that
|
|
can be handled at the same time to reassemble a single packet.
|
|
|
|
You can increase this value if you expect packets with more
|
|
than two fragments.
|
|
|
|
config NET_IPV4_FRAGMENT_TIMEOUT
|
|
int "How long to wait for fragments to be received"
|
|
range 1 60
|
|
default 5
|
|
depends on NET_IPV4_FRAGMENT
|
|
help
|
|
How long to wait for IPv4 fragment to arrive before the reassembly
|
|
will timeout. This value is in seconds.
|
|
|
|
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
|