summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2020-09-24 03:49:30 +0100
committerRoy Marples <roy@marples.name>2020-09-24 03:49:30 +0100
commitcce22f81eec70c266071d5d3cfdf3931df203e59 (patch)
tree369a22cb6bb7fbaf09dbdda0b0b881232508daee
parentec4013c25f1d3fea81fff0b8410dc75a4c7eaa30 (diff)
downloaddhcpcd-cce22f81eec70c266071d5d3cfdf3931df203e59.tar.xz
FreeBSD: Anticipate SIOCGIFDATA not working in Capsicum
-rw-r--r--src/if-bsd.c4
-rw-r--r--src/privsep-bsd.c10
2 files changed, 9 insertions, 5 deletions
diff --git a/src/if-bsd.c b/src/if-bsd.c
index 8e832303..e80e1ffa 100644
--- a/src/if-bsd.c
+++ b/src/if-bsd.c
@@ -364,7 +364,7 @@ static int if_indirect_ioctl(struct dhcpcd_ctx *ctx,
{
struct ifreq ifr = { .ifr_flags = 0 };
-#if defined(PRIVSEP) && defined(HAVE_PLEDGE)
+#if defined(PRIVSEP) && (defined(HAVE_CAPSICUM) || defined(HAVE_PLEDGE))
if (IN_PRIVSEP(ctx))
return (int)ps_root_indirectioctl(ctx, cmd, ifname, data, len);
#else
@@ -440,7 +440,7 @@ if_carrier(struct interface *ifp)
int
if_carrier_ifadata(struct interface *ifp, void *ifadata)
{
- int carrier = if_carrier(ifp);
+ int carrier = if_carrier0(ifp);
struct if_data *ifdata;
if (carrier != LINK_UNKNOWN || ifadata == NULL)
diff --git a/src/privsep-bsd.c b/src/privsep-bsd.c
index 2dc1d749..c9e31610 100644
--- a/src/privsep-bsd.c
+++ b/src/privsep-bsd.c
@@ -118,7 +118,7 @@ ps_root_doroute(void *data, size_t len)
return err;
}
-#ifdef HAVE_PLEDGE
+#if defined(HAVE_CAPSICUM) || defined(HAVE_PLEDGE)
static ssize_t
ps_root_doindirectioctl(unsigned long req, void *data, size_t len)
{
@@ -139,7 +139,9 @@ ps_root_doindirectioctl(unsigned long req, void *data, size_t len)
return ps_root_doioctldom(PF_INET, req, &ifr, sizeof(ifr));
}
+#endif
+#ifdef HAVE_PLEDGE
static ssize_t
ps_root_doifignoregroup(void *data, size_t len)
{
@@ -177,10 +179,12 @@ ps_root_os(struct ps_msghdr *psm, struct msghdr *msg,
break;
case PS_ROUTE:
return ps_root_doroute(data, len);
-#ifdef HAVE_PLEDGE
+#if defined(HAVE_CAPSICUM) || defined(HAVE_PLEDGE)
case PS_IOCTLINDIRECT:
err = ps_root_doindirectioctl(psm->ps_flags, data, len);
break;
+#endif
+#ifdef HAVE_PLEDGE
case PS_IFIGNOREGRP:
return ps_root_doifignoregroup(data, len);
#endif
@@ -232,7 +236,7 @@ ps_root_route(struct dhcpcd_ctx *ctx, void *data, size_t len)
return ps_root_readerror(ctx, data, len);
}
-#ifdef HAVE_PLEDGE
+#if defined(HAVE_CAPSICUM) || defined(HAVE_PLEDGE)
ssize_t
ps_root_indirectioctl(struct dhcpcd_ctx *ctx, unsigned long request,
const char *ifname, void *data, size_t len)