u-boot/net
David Rivshin 51723c5581 net: Do not respond to ICMP_ECHO_REQUEST if we do not have an IP address
While doing DHCP the interface IP is set to 0.0.0.0. This causes the
check in net.c on dst_ip to be effectively skipped, and all IP datagrams
are accepted up the IP stack. In the case of an ICMP_ECHO_REQUEST for the
matching MAC address (regardless of destination IP), the result is that
an ICMP_ECHO_REPLY is sent. The source address of the ICMP_ECHO_REPLY is
0.0.0.0, which is an illegal source address.

This can happen in common practice with the following sequence:
DHCP (U-Boot or OS) acquires IP address 10.0.0.1
System reboots
U-Boot starts DHCP and send DHCP DISCOVER
DHCP server decides to OFFER 10.0.0.1 again
  (perhaps because of existing lease or manual configuration)
DHCP server tries to PING 10.0.0.1 to see if anyone is squatting on it
DHCP server still has our MAC address in its ARP table for 10.0.0.1
U-Boot receives PING, and responds with an illegal source address
This may further result in a the DHCP server seeing the response as
  confirmation that someone is squatting on 10.0.0.1, and picking a
  new IP address from the pool to try again

Signed-off-by: David Rivshin <drivshin@allworx.com>
2021-01-19 09:15:02 -05:00
..
arp.c common: Drop linux/delay.h from common header 2020-05-18 21:19:23 -04:00
arp.h net: Don't overwrite waiting packets with asynchronous replies 2018-10-10 12:29:01 -05:00
bootp.c Adds basic support for ProxyDHCP 2020-12-01 10:33:37 -05:00
bootp.h net: Use packed structures for networking 2017-08-07 15:18:31 -05:00
cdp.c SPDX: Convert a few files that were missed before 2018-05-10 20:38:35 -04:00
cdp.h SPDX: Convert a few files that were missed before 2018-05-10 20:38:35 -04:00
dns.c net: move random_port() to dns 2020-06-12 13:17:23 -04:00
dns.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
eth_common.c common: Drop bootstage.h from common header 2020-05-18 17:33:33 -04:00
eth_internal.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
eth_legacy.c net: use log_err() for 'No ethernet found' message 2020-09-30 16:48:18 -04:00
eth-uclass.c net: eth-uclass: avoid running start() twice without stop() 2021-01-19 09:06:15 -05:00
fastboot.c fastboot: Add support for 'reboot fastboot' command 2020-09-01 14:47:43 +02:00
Kconfig Adds basic support for ProxyDHCP 2020-12-01 10:33:37 -05:00
link_local.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
link_local.h net: Add link-local addressing support 2012-05-23 17:53:08 -05:00
Makefile net: add a generic udp protocol 2020-09-30 16:55:03 -04:00
mdio-mux-uclass.c dm: core: Access device ofnode through functions 2021-01-05 12:24:41 -07:00
mdio-uclass.c dm: core: Access device ofnode through functions 2021-01-05 12:24:41 -07:00
net_rand.h net: Get mac address from driver as seed 2017-08-07 15:18:28 -05:00
net.c net: Expose some errors generated in net_init 2020-10-10 16:50:12 -04:00
nfs.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
nfs.h net: nfs: remove superfluous packed attribute 2019-09-04 11:37:19 -05:00
pcap.c net: introduce packet capture support 2019-09-04 11:37:19 -05:00
ping.c net: Do not respond to ICMP_ECHO_REQUEST if we do not have an IP address 2021-01-19 09:15:02 -05:00
ping.h SPDX: Convert a few files that were missed before 2018-05-10 20:38:35 -04:00
rarp.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
rarp.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
sntp.c net: sntp: remove CONFIG_TIMESTAMP constraint 2020-12-01 14:12:28 -05:00
tftp.c efi_loader: setting boot device 2021-01-13 02:38:00 +01:00
udp.c net: add a generic udp protocol 2020-09-30 16:55:03 -04:00
wol.c env: Drop environment.h header file where not needed 2019-08-11 16:43:41 -04:00
wol.h net: Add new wol command - Wake on LAN 2018-07-02 14:14:20 -05:00