summaryrefslogtreecommitdiff
path: root/net/bootp.c
diff options
context:
space:
mode:
authorPeng Fan <peng.fan@nxp.com>2016-01-07 15:28:23 +0800
committerJoe Hershberger <joe.hershberger@ni.com>2016-01-28 12:22:23 -0600
commit44c42dd40eb58679419abb8ab5f20fb5bff26eac (patch)
treef750973ce4939025d12cc31b4849c8dcd1b48b89 /net/bootp.c
parentaae0e68909bf2ef1b60d18c54105ab8b9c67c5a2 (diff)
downloadu-boot-imx-44c42dd40eb58679419abb8ab5f20fb5bff26eac.zip
u-boot-imx-44c42dd40eb58679419abb8ab5f20fb5bff26eac.tar.gz
u-boot-imx-44c42dd40eb58679419abb8ab5f20fb5bff26eac.tar.bz2
net: bootp: Ignore packets whose yiaddr is 0
When doing `dhcp`, there is a bad dhcp server in my network which always reply dhcp request with yiaddr 0, which cause uboot can not successfully get ipaddr from the good dhcp server. But the Linux PC can get the ip address even if there is a bad dhcp server. This patch is to fix that even if there is a bad dhcp server, uboot can still get ipaddr and tftp work ok. The way is to ignore the packets from the bad dhcp server by filtering out the yiaddr whose value is 0. Signed-off-by: Peng Fan <peng.fan@nxp.com> Cc: Joe Hershberger <joe.hershberger@ni.com> Reviewed-by: Wolfgang Denk <wd@denx.de> Acked-by: Joe Hershberger <joe.hershberger@ni.com>
Diffstat (limited to 'net/bootp.c')
-rw-r--r--net/bootp.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/net/bootp.c b/net/bootp.c
index 8aeddb0..8da2e9b 100644
--- a/net/bootp.c
+++ b/net/bootp.c
@@ -995,6 +995,9 @@ static void dhcp_handler(uchar *pkt, unsigned dest, struct in_addr sip,
debug("DHCPHandler: got DHCP packet: (src=%d, dst=%d, len=%d) state: "
"%d\n", src, dest, len, dhcp_state);
+ if (net_read_ip(&bp->bp_yiaddr).s_addr == 0)
+ return;
+
switch (dhcp_state) {
case SELECTING:
/*