}
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);
}
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);