diff options
| author | Roy Marples <roy@marples.name> | 2020-10-07 14:11:47 +0100 |
|---|---|---|
| committer | Roy Marples <roy@marples.name> | 2020-10-07 14:11:47 +0100 |
| commit | 76b513c6ebf26ae0dfd320f742b945db76466ac0 (patch) | |
| tree | 3911abc0ebd1a0757aa7459a3c82e4b5c460266f /src/if-bsd.c | |
| parent | f2b2cdfb7305245d17fd790db3bf366f34f6d596 (diff) | |
| download | dhcpcd-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.c | 11 |
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; } |
