diff --git a/src/usr/ifmgmt.c b/src/usr/ifmgmt.c index 72d86137..0ebf5615 100644 --- a/src/usr/ifmgmt.c +++ b/src/usr/ifmgmt.c @@ -20,9 +20,11 @@ #include #include #include +#include #include #include #include +#include #include /** @file @@ -101,12 +103,19 @@ void ifstat ( struct net_device *netdev ) { * @v max_wait_ms Maximum time to wait, in ms */ int iflinkwait ( struct net_device *netdev, unsigned int max_wait_ms ) { + int key; + while ( 1 ) { if ( netdev_link_ok ( netdev ) ) return 0; if ( max_wait_ms-- == 0 ) return -ETIMEDOUT; step(); + if ( iskey() ) { + key = getchar(); + if ( key == CTRL_C ) + return -ECANCELED; + } mdelay ( 1 ); } }