ifp = if_find(ctx->ifaces, ifname);
if (ifp == NULL ||
- ifp->options == NULL || !(ifp->options->options & DHCPCD_LINK) ||
- !ifp->active)
+ ifp->options == NULL || !(ifp->options->options & DHCPCD_LINK))
return;
if (carrier == LINK_UNKNOWN) {
if (carrier == LINK_DOWN || (ifp->flags & IFF_UP) == 0) {
if (ifp->carrier != LINK_DOWN) {
- if (ifp->carrier == LINK_UP)
- loginfox("%s: carrier lost", ifp->name);
#ifdef NOCARRIER_PRESERVE_IP
if (ifp->flags & IFF_UP &&
!(ifp->options->options & DHCPCD_ANONYMOUS))
else
#endif
ifp->carrier = LINK_DOWN;
+ if (!ifp->active)
+ return;
+ if (ifp->carrier == LINK_UP)
+ loginfox("%s: carrier lost", ifp->name);
script_runreason(ifp, "NOCARRIER");
#ifdef NOCARRIER_PRESERVE_IP
if (ifp->flags & IFF_UP &&
}
} else if (carrier == LINK_UP && ifp->flags & IFF_UP) {
if (ifp->carrier != LINK_UP) {
- loginfox("%s: carrier acquired", ifp->name);
ifp->carrier = LINK_UP;
+ if (ifp->active)
+ loginfox("%s: carrier acquired", ifp->name);
#if !defined(__linux__) && !defined(__NetBSD__)
/* BSD does not emit RTM_NEWADDR or RTM_CHGADDR when the
* hardware address changes so we have to go
if_getssid(ifp);
/* If we changed SSID network, drop leases */
- if (ifp->ssid_len != olen ||
- memcmp(ifp->ssid, ossid, ifp->ssid_len))
+ if ((ifp->ssid_len != olen ||
+ memcmp(ifp->ssid, ossid, ifp->ssid_len)) &&
+ ifp->active)
{
dhcpcd_reportssid(ifp);
#ifdef NOCARRIER_PRESERVE_IP
#endif
}
}
+ if (!ifp->active)
+ return;
dhcpcd_initstate(ifp, 0);
script_runreason(ifp, "CARRIER");
#ifdef INET6