changeset 1655:49be5a6df6a4 draft

Stop checking for IFF_RUNNING in handle_carrier as it is invalid for BSD and should already have been checked for Linux.
author Roy Marples <roy@marples.name>
date Sun, 05 Feb 2012 19:32:17 +0000
parents f9e3ecc95eea
children affe9a661be7
files dhcpcd.c
diffstat 1 files changed, 7 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/dhcpcd.c	Sat Feb 04 15:45:38 2012 +0000
+++ b/dhcpcd.c	Sun Feb 05 19:32:17 2012 +0000
@@ -898,15 +898,16 @@
 	}
 	if (!(iface->state->options->options & DHCPCD_LINK))
 		return;
-	if (action == 0)
-		carrier = carrier_status(iface);
-	else {
+
+	if (action) {
 		carrier = action == 1 ? 1 : 0;
 		iface->flags = flags;
-	}
+	} else
+		carrier = carrier_status(iface);
+
 	if (carrier == -1)
 		syslog(LOG_ERR, "%s: carrier_status: %m", ifname);
-	else if (carrier == 0 || ~iface->flags & (IFF_UP | IFF_RUNNING)) {
+	else if (carrier == 0 || ~iface->flags & IFF_UP) {
 		if (iface->carrier != LINK_DOWN) {
 			iface->carrier = LINK_DOWN;
 			syslog(LOG_INFO, "%s: carrier lost", iface->name);
@@ -919,7 +920,7 @@
 			}
 			drop_dhcp(iface, "NOCARRIER");
 		}
-	} else if (carrier == 1 && !(~iface->flags & (IFF_UP | IFF_RUNNING))) {
+	} else if (carrier == 1 && !(~iface->flags & IFF_UP)) {
 		if (iface->carrier != LINK_UP) {
 			iface->carrier = LINK_UP;
 			syslog(LOG_INFO, "%s: carrier acquired", iface->name);