# HG changeset patch # User Roy Marples # Date 1600915770 -3600 # Node ID f137886e62117c6c01e97225f4c347bcd9cfbf54 # Parent 7f79682355431a9994e575303fd8893cc822de05 FreeBSD: Anticipate SIOCGIFDATA not working in Capsicum diff -r 7f7968235543 -r f137886e6211 src/if-bsd.c --- a/src/if-bsd.c Thu Sep 24 03:31:43 2020 +0100 +++ b/src/if-bsd.c Thu Sep 24 03:49:30 2020 +0100 @@ -364,7 +364,7 @@ { 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 @@ 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 -r 7f7968235543 -r f137886e6211 src/privsep-bsd.c --- a/src/privsep-bsd.c Thu Sep 24 03:31:43 2020 +0100 +++ b/src/privsep-bsd.c Thu Sep 24 03:49:30 2020 +0100 @@ -118,7 +118,7 @@ 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 @@ 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 @@ 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 @@ 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)