From: Joe Hershberger Date: Wed, 23 May 2012 07:59:19 +0000 (+0000) Subject: net: Add option CONFIG_BOOTP_MAY_FAIL X-Git-Tag: v2012.07-rc1~55 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=2c00e099fe77b014dd094a49113e2c6ce8a24a16;p=oweals%2Fu-boot.git net: Add option CONFIG_BOOTP_MAY_FAIL This is useful if you want to look for a DHCP server, but try some other settings if not available. Signed-off-by: Joe Hershberger Acked-by: Simon Glass --- diff --git a/README b/README index 6919392dca..6e313ad935 100644 --- a/README +++ b/README @@ -1592,10 +1592,17 @@ The following options need to be configured: CONFIG_BOOTP_NTPSERVER CONFIG_BOOTP_TIMEOFFSET CONFIG_BOOTP_VENDOREX + CONFIG_BOOTP_MAY_FAIL CONFIG_BOOTP_SERVERIP - TFTP server will be the serverip environment variable, not the BOOTP server. + CONFIG_BOOTP_MAY_FAIL - If the DHCP server is not found + after the configured retry count, the call will fail + instead of starting over. This can be used to fail over + to Link-local IP address configuration if the DHCP server + is not available. + CONFIG_BOOTP_DNS2 - If a DHCP client requests the DNS serverip from a DHCP server, it is possible that more than one DNS serverip is offered to the client. diff --git a/net/bootp.c b/net/bootp.c index 7e24b661de..0f0867b1c4 100644 --- a/net/bootp.c +++ b/net/bootp.c @@ -326,8 +326,13 @@ static void BootpTimeout(void) { if (BootpTry >= TIMEOUT_COUNT) { +#ifdef CONFIG_BOOTP_MAY_FAIL + puts("\nRetry count exceeded\n"); + NetSetState(NETLOOP_FAIL); +#else puts("\nRetry count exceeded; starting again\n"); NetStartAgain(); +#endif } else { NetSetTimeout(TIMEOUT, BootpTimeout); BootpRequest();