summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeng Fan <peng.fan@nxp.com>2015-12-29 18:53:08 +0800
committerfang hui <hui.fang@freescale.com>2016-03-16 13:48:10 +0800
commit576eae1d6747160a2b51828e1e03ae6ceec6a10a (patch)
tree9f682eb8cc8aa2d80e1834336152c247359d0246
parent18d4ad7c3efb3170081e36e829af9320bd5626b2 (diff)
downloadu-boot-imx-576eae1d6747160a2b51828e1e03ae6ceec6a10a.zip
u-boot-imx-576eae1d6747160a2b51828e1e03ae6ceec6a10a.tar.gz
u-boot-imx-576eae1d6747160a2b51828e1e03ae6ceec6a10a.tar.bz2
MLK-12101: net: bootp: fix dhcp when there is a bad dhcp server
There is a bad dhcp server which always gives board ipaddr 0.0.0.0, and board can not get ipaddr from correct dhcp server, since the bad dhcp server always reply the board's dhcp packet with bad address. We can ignore the bad dhcp server by checking the assigned ipaddr, checking whether it is 0 or not. Signed-off-by: Peng Fan <peng.fan@nxp.com>
-rw-r--r--net/bootp.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/net/bootp.c b/net/bootp.c
index 8106601..5331727 100644
--- a/net/bootp.c
+++ b/net/bootp.c
@@ -6,6 +6,7 @@
* Copyright 2000 Roland Borde
* Copyright 2000 Paolo Scaffardi
* Copyright 2000-2004 Wolfgang Denk, wd@denx.de
+ * Copyright (C) 2015 Freescale Semiconductor, Inc.
*/
#include <common.h>
@@ -949,6 +950,10 @@ DhcpHandler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src,
if (BootpCheckPkt(pkt, dest, src, len))
return;
+ /* Ignore pkts with ip address which is 0 */
+ if (NetReadIP(&bp->bp_yiaddr) == 0)
+ return;
+
debug("DHCPHandler: got DHCP packet: (src=%d, dst=%d, len=%d) state:"
" %d\n", src, dest, len, dhcp_state);