summaryrefslogtreecommitdiffstats
path: root/src/if-bsd.c
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2020-09-23 09:26:16 +0100
committerRoy Marples <roy@marples.name>2020-09-23 09:26:16 +0100
commit2e3a64fdfe385894aa12d95cc09c174393350630 (patch)
tree69ad3109b09f03c17698aa7b2bb94a977f5b6859 /src/if-bsd.c
parent12b2bece4e61c821c5921253796654179dccb640 (diff)
downloaddhcpcd-2e3a64fdfe385894aa12d95cc09c174393350630.tar.xz
FreeBSD lacks SIOCGIFDATA it seems.
Diffstat (limited to 'src/if-bsd.c')
-rw-r--r--src/if-bsd.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/if-bsd.c b/src/if-bsd.c
index c7be22fe..7f8cc6f6 100644
--- a/src/if-bsd.c
+++ b/src/if-bsd.c
@@ -382,12 +382,16 @@ int
if_carrier(struct interface *ifp)
{
int carrier = if_carrier0(ifp);
+#ifdef SIOCGIFDATA
struct ifdatareq ifdr = { .ifdr_data.ifi_link_state = 0 };
struct if_data *ifdata;
if (carrier != LINK_UNKNOWN)
return carrier;
+ struct ifdatareq ifdr = { .ifdr_data.ifi_link_state = 0 };
+ struct if_data *ifdata;
+
strlcpy(ifdr.ifdr_name, ifp->name, sizeof(ifdr.ifdr_name));
if (ioctl(ifp->ctx->pf_inet_fd, SIOCGIFDATA, &ifdr) == -1)
return LINK_UNKNOWN;
@@ -400,6 +404,9 @@ if_carrier(struct interface *ifp)
return LINK_UP;
}
return LINK_UNKNOWN;
+#else
+ return carrier;
+#endif
}
int