summaryrefslogtreecommitdiffstats
path: root/src/if-bsd.c
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2020-10-07 14:11:47 +0100
committerRoy Marples <roy@marples.name>2020-10-07 14:11:47 +0100
commit76b513c6ebf26ae0dfd320f742b945db76466ac0 (patch)
tree3911abc0ebd1a0757aa7459a3c82e4b5c460266f /src/if-bsd.c
parentf2b2cdfb7305245d17fd790db3bf366f34f6d596 (diff)
downloaddhcpcd-76b513c6ebf26ae0dfd320f742b945db76466ac0.tar.xz
dhcpcd: Simplify the link handling even more
Move the IS_LINK_UP macro to if_is_link_up function to reduce binary size. Rather than DHCPCD_LINK option controlling the carrier state, use it in if_is_link_up to determine the outcome.
Diffstat (limited to 'src/if-bsd.c')
-rw-r--r--src/if-bsd.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/if-bsd.c b/src/if-bsd.c
index 8f10acdc..94f58b31 100644
--- a/src/if-bsd.c
+++ b/src/if-bsd.c
@@ -385,7 +385,7 @@ static int if_indirect_ioctl(struct dhcpcd_ctx *ctx,
}
int
-if_carrier(__unused struct interface *ifp, const void *ifadata)
+if_carrier(struct interface *ifp, const void *ifadata)
{
const struct if_data *ifi = ifadata;
@@ -398,8 +398,15 @@ if_carrier(__unused struct interface *ifp, const void *ifadata)
if (ifi->ifi_link_state >= LINK_STATE_UP)
return LINK_UP;
- if (ifi->ifi_link_state == LINK_STATE_UNKNOWN)
+ if (ifi->ifi_link_state == LINK_STATE_UNKNOWN) {
+ /*
+ * Work around net80211 issues in some BSDs.
+ * Wireless MUST support link state change.
+ */
+ if (ifp->wireless)
+ return LINK_DOWN;
return LINK_UNKNOWN;
+ }
return LINK_DOWN;
}