aboutsummaryrefslogtreecommitdiff
path: root/src/usr
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr')
-rw-r--r--src/usr/autoboot.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/usr/autoboot.c b/src/usr/autoboot.c
index 51b07e1..62e90ec 100644
--- a/src/usr/autoboot.c
+++ b/src/usr/autoboot.c
@@ -210,18 +210,19 @@ int uriboot ( struct uri *filename, struct uri **root_paths,
}
/**
- * Close all open net devices
+ * Close all but one network device
*
* Called before a fresh boot attempt in order to free up memory. We
* don't just close the device immediately after the boot fails,
* because there may still be TCP connections in the process of
* closing.
*/
-static void close_all_netdevs ( void ) {
- struct net_device *netdev;
+static void close_other_netdevs ( struct net_device *netdev ) {
+ struct net_device *other;
- for_each_netdev ( netdev ) {
- ifclose ( netdev );
+ for_each_netdev ( other ) {
+ if ( other != netdev )
+ ifclose ( other );
}
}
@@ -388,7 +389,7 @@ int netboot ( struct net_device *netdev ) {
int rc;
/* Close all other network devices */
- close_all_netdevs();
+ close_other_netdevs ( netdev );
/* Open device and display device status */
if ( ( rc = ifopen ( netdev ) ) != 0 )