[dhcp] Await link-up before starting DHCP
[people/lynusvaz/gpxe.git] / src / usr / dhcpmgmt.c
index a0ac4c3..c1cc36e 100644 (file)
@@ -28,6 +28,8 @@ FILE_LICENCE ( GPL2_OR_LATER );
 #include <usr/ifmgmt.h>
 #include <usr/dhcpmgmt.h>
 
+#define LINK_WAIT_MS   15000
+
 /** @file
  *
  * DHCP management
@@ -41,6 +43,10 @@ int dhcp ( struct net_device *netdev ) {
        if ( ( rc = ifopen ( netdev ) ) != 0 )
                return rc;
 
+       /* Wait for link-up */
+       if ( ( rc = iflinkwait ( netdev, LINK_WAIT_MS ) ) != 0 )
+               return rc;
+
        /* Perform DHCP */
        printf ( "DHCP (%s %s)", netdev->name, netdev_hwaddr ( netdev ) );
        if ( ( rc = start_dhcp ( &monojob, netdev ) ) == 0 )