[dhcp] Await link-up before starting DHCP
authorJoshua Oreman <oremanj@xenon.get-linux.org>
Sat, 20 Jun 2009 08:52:41 +0000 (01:52 -0700)
committerJoshua Oreman <oremanj@xenon.get-linux.org>
Sat, 20 Jun 2009 08:52:41 +0000 (01:52 -0700)
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 )