]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
FreeBSD: Anticipate SIOCGIFDATA not working in Capsicum
authorRoy Marples <roy@marples.name>
Thu, 24 Sep 2020 02:49:30 +0000 (03:49 +0100)
committerRoy Marples <roy@marples.name>
Thu, 24 Sep 2020 02:49:30 +0000 (03:49 +0100)
src/if-bsd.c
src/privsep-bsd.c

index 8e832303160464bec08e782cfa84847700b250e0..e80e1ffa7d6d251c07a135895c372bcc345930b8 100644 (file)
@@ -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)
index 2dc1d7490051af8e403890a34f96fd894f0b2c63..c9e316102bcaf72f66c04ec98a36e46a5eca22c7 100644 (file)
@@ -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)