Mercurial > hg > dhcpcd
changeset 5319:3180f8b46cc4 draft
BSD: In privsep with no GIFALIAS support? getifaddrs over privsep
This makes the heavy weight call even more heavy weight :(
| author | Roy Marples <roy@marples.name> |
|---|---|
| date | Fri, 05 Jun 2020 14:39:06 +0100 |
| parents | 8611693d307f |
| children | 6b1dead2555e |
| files | src/if-bsd.c |
| diffstat | 1 files changed, 17 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/if-bsd.c Fri Jun 05 14:28:27 2020 +0100 +++ b/src/if-bsd.c Fri Jun 05 14:39:06 2020 +0100 @@ -1364,7 +1364,18 @@ struct ifaddrs *ifaddrs = NULL, *ifa; sa = rti_info[RTAX_IFA]; - getifaddrs(&ifaddrs); +#ifdef PRIVSEP_GETIFADDRS + if (IN_PRIVSEP(ctx)) { + if (ps_root_getifaddrs(ctx, &ifaddrs) == -1) { + logerr("ps_root_getifaddrs"); + break; + } + } else +#endif + if (getifaddrs(&ifaddrs) == -1) { + logerr("getifaddrs"); + break; + } for (ifa = ifaddrs; ifa; ifa = ifa->ifa_next) { if (ifa->ifa_addr == NULL) continue; @@ -1372,6 +1383,11 @@ strcmp(ifa->ifa_name, ifp->name) == 0) break; } +#ifdef PRIVSEP_GETIFADDRS + if (IN_PRIVSEP(ctx)) + free(ifaddrs); + else +#endif freeifaddrs(ifaddrs); if (ifam->ifam_type == RTM_DELADDR) { if (ifa != NULL)
