summaryrefslogtreecommitdiffstats
path: root/src/privsep-inet.c
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2020-10-07 15:28:33 +0100
committerRoy Marples <roy@marples.name>2020-10-07 15:28:33 +0100
commit5699c07d535fbe8cdc513b1c380519cb861009b3 (patch)
tree51497bd058038663df30e92e4e9d22cdb0cda420 /src/privsep-inet.c
parentd047f2dd0d9cee881d1d3e56da8ba67664f7726d (diff)
downloaddhcpcd-5699c07d535fbe8cdc513b1c380519cb861009b3.tar.xz
privsep: Only start network proxy if we need to
Do this before starting it rather than it shutting down.
Diffstat (limited to 'src/privsep-inet.c')
-rw-r--r--src/privsep-inet.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/privsep-inet.c b/src/privsep-inet.c
index 81487f63..2770569f 100644
--- a/src/privsep-inet.c
+++ b/src/privsep-inet.c
@@ -89,6 +89,28 @@ ps_inet_recvdhcp6(void *arg)
}
#endif
+bool
+ps_inet_canstart(const struct dhcpcd_ctx *ctx)
+{
+
+#ifdef INET
+ if ((ctx->options & (DHCPCD_IPV4 | DHCPCD_MASTER)) ==
+ (DHCPCD_IPV4 | DHCPCD_MASTER))
+ return true;
+#endif
+#if defined(INET6) && !defined(__sun)
+ if (ctx->options & DHCPCD_IPV6)
+ return true;
+#endif
+#ifdef DHCP6
+ if ((ctx->options & (DHCPCD_IPV6 | DHCPCD_MASTER)) ==
+ (DHCPCD_IPV6 | DHCPCD_MASTER))
+ return true;
+#endif
+
+ return false;
+}
+
static int
ps_inet_startcb(void *arg)
{