Thanks to Koichi Okamoto.
/* De-activate the interface */
ifp->active = IF_INACTIVE;
ifp->options->options &= ~DHCPCD_STOPPING;
+ /* Set the link state to unknown as we're no longer tracking it. */
+ ifp->carrier = LINK_UNKNOWN;
stop:
if (!(ctx->options & (DHCPCD_MASTER | DHCPCD_TEST)))
for (i = 0; i < ctx->ifc; i++)
if (strcmp(ctx->ifv[i], ifname) == 0)
break;
- if (i >= ctx->ifc)
+ if (i >= ctx->ifc) {
ifp->active = IF_INACTIVE;
+ ifp->carrier = LINK_UNKNOWN;
+ }
}
i = 0;
ifp->ctx = ctx;
strlcpy(ifp->name, spec.devname, sizeof(ifp->name));
ifp->flags = ifa->ifa_flags;
- ifp->carrier = if_carrier(ifp);
if (ifa->ifa_addr != NULL) {
#ifdef AF_LINK
#endif
ifp->active = active;
+ if (ifp->active)
+ ifp->carrier = if_carrier(ifp);
+ else
+ ifp->carrier = LINK_UNKNOWN;
TAILQ_INSERT_TAIL(ifs, ifp, next);
}