Module Name:    src
Committed By:   roy
Date:           Tue Feb 25 12:50:53 UTC 2025

Modified Files:
        src/external/bsd/dhcpcd/dist/src: bpf.c dhcp.c dhcp6.c dhcpcd.c
            if-bsd.c if-options.c ipv6.c ipv6.h ipv6nd.c logerr.c privsep.c
            script.c

Log Message:
Sync with dhcpcd-10.2.2


To generate a diff of this commit:
cvs rdiff -u -r1.23 -r1.24 src/external/bsd/dhcpcd/dist/src/bpf.c
cvs rdiff -u -r1.53 -r1.54 src/external/bsd/dhcpcd/dist/src/dhcp.c
cvs rdiff -u -r1.36 -r1.37 src/external/bsd/dhcpcd/dist/src/dhcp6.c
cvs rdiff -u -r1.57 -r1.58 src/external/bsd/dhcpcd/dist/src/dhcpcd.c
cvs rdiff -u -r1.32 -r1.33 src/external/bsd/dhcpcd/dist/src/if-bsd.c \
    src/external/bsd/dhcpcd/dist/src/ipv6nd.c
cvs rdiff -u -r1.40 -r1.41 src/external/bsd/dhcpcd/dist/src/if-options.c
cvs rdiff -u -r1.21 -r1.22 src/external/bsd/dhcpcd/dist/src/ipv6.c
cvs rdiff -u -r1.15 -r1.16 src/external/bsd/dhcpcd/dist/src/ipv6.h \
    src/external/bsd/dhcpcd/dist/src/logerr.c
cvs rdiff -u -r1.20 -r1.21 src/external/bsd/dhcpcd/dist/src/privsep.c
cvs rdiff -u -r1.18 -r1.19 src/external/bsd/dhcpcd/dist/src/script.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/external/bsd/dhcpcd/dist/src/bpf.c
diff -u src/external/bsd/dhcpcd/dist/src/bpf.c:1.23 src/external/bsd/dhcpcd/dist/src/bpf.c:1.24
--- src/external/bsd/dhcpcd/dist/src/bpf.c:1.23	Wed Feb 12 19:23:13 2025
+++ src/external/bsd/dhcpcd/dist/src/bpf.c	Tue Feb 25 12:50:53 2025
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: BSD-2-Clause */
 /*
  * dhcpcd: BPF arp and bootp filtering
- * Copyright (c) 2006-2024 Roy Marples <r...@marples.name>
+ * Copyright (c) 2006-2025 Roy Marples <r...@marples.name>
  * All rights reserved
 
  * Redistribution and use in source and binary forms, with or without

Index: src/external/bsd/dhcpcd/dist/src/dhcp.c
diff -u src/external/bsd/dhcpcd/dist/src/dhcp.c:1.53 src/external/bsd/dhcpcd/dist/src/dhcp.c:1.54
--- src/external/bsd/dhcpcd/dist/src/dhcp.c:1.53	Thu Feb 13 02:55:20 2025
+++ src/external/bsd/dhcpcd/dist/src/dhcp.c	Tue Feb 25 12:50:53 2025
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: BSD-2-Clause */
 /*
  * dhcpcd - DHCP client daemon
- * Copyright (c) 2006-2024 Roy Marples <r...@marples.name>
+ * Copyright (c) 2006-2025 Roy Marples <r...@marples.name>
  * All rights reserved
 
  * Redistribution and use in source and binary forms, with or without
@@ -2170,7 +2170,8 @@ dhcp_finish_dad(struct interface *ifp, s
 
 #ifdef IPV4LL
 	/* Stop IPv4LL now we have a working DHCP address */
-	if (!IN_LINKLOCAL(ntohl(ia->s_addr)))
+	if ((!IN_LINKLOCAL(ntohl(ia->s_addr)))
+		&& (ifp->options->options & DHCPCD_IPV4LL))
 		ipv4ll_drop(ifp);
 #endif
 
@@ -3075,13 +3076,13 @@ dhcp_handledhcp(struct interface *ifp, s
 	bool bootp_copied;
 	uint32_t v6only_time = 0;
 	bool use_v6only = false, has_auto_conf = false;
-#ifdef IPV4LL
-	uint8_t tmp;
-#endif
 #ifdef AUTH
 	const uint8_t *auth;
 	size_t auth_len;
 #endif
+#ifdef IPV4LL
+	uint8_t tmp;
+#endif
 #ifdef IN_IFF_DUPLICATED
 	struct ipv4_addr *ia;
 #endif
@@ -3329,7 +3330,8 @@ dhcp_handledhcp(struct interface *ifp, s
 			switch (tmp) {
 			case 0:
 				LOGDHCP(LOG_WARNING, "IPv4LL disabled from");
-				ipv4ll_drop(ifp);
+				if (ifp->options->options & DHCPCD_IPV4LL)
+					ipv4ll_drop(ifp);
 #ifdef ARP
 				arp_drop(ifp);
 #endif

Index: src/external/bsd/dhcpcd/dist/src/dhcp6.c
diff -u src/external/bsd/dhcpcd/dist/src/dhcp6.c:1.36 src/external/bsd/dhcpcd/dist/src/dhcp6.c:1.37
--- src/external/bsd/dhcpcd/dist/src/dhcp6.c:1.36	Mon Feb 24 16:52:39 2025
+++ src/external/bsd/dhcpcd/dist/src/dhcp6.c	Tue Feb 25 12:50:53 2025
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: BSD-2-Clause */
 /*
  * dhcpcd - DHCP client daemon
- * Copyright (c) 2006-2024 Roy Marples <r...@marples.name>
+ * Copyright (c) 2006-2025 Roy Marples <r...@marples.name>
  * All rights reserved
 
  * Redistribution and use in source and binary forms, with or without
@@ -3350,12 +3350,16 @@ dhcp6_bind(struct interface *ifp, const 
 			state->state = DH6S_BOUND;
 		state->failed = false;
 
-		if (state->renew && state->renew != ND6_INFINITE_LIFETIME)
+		/* If we CONFIRM we might need to enter RENEW
+		 * or REBIND right away if the timers have expired */
+		if ((state->renew || (state->rebind && confirmed)) &&
+		    state->renew != ND6_INFINITE_LIFETIME)
 			eloop_timeout_add_sec(ifp->ctx->eloop,
 			    state->renew,
 			    state->state == DH6S_INFORMED ?
 			    dhcp6_startinform : dhcp6_startrenew, ifp);
-		if (state->rebind && state->rebind != ND6_INFINITE_LIFETIME)
+		if ((state->rebind || (state->expire && confirmed)) &&
+		    state->rebind != ND6_INFINITE_LIFETIME)
 			eloop_timeout_add_sec(ifp->ctx->eloop,
 			    state->rebind, dhcp6_startrebind, ifp);
 		if (state->expire != ND6_INFINITE_LIFETIME)

Index: src/external/bsd/dhcpcd/dist/src/dhcpcd.c
diff -u src/external/bsd/dhcpcd/dist/src/dhcpcd.c:1.57 src/external/bsd/dhcpcd/dist/src/dhcpcd.c:1.58
--- src/external/bsd/dhcpcd/dist/src/dhcpcd.c:1.57	Wed Feb 12 19:23:13 2025
+++ src/external/bsd/dhcpcd/dist/src/dhcpcd.c	Tue Feb 25 12:50:53 2025
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: BSD-2-Clause */
 /*
  * dhcpcd - DHCP client daemon
- * Copyright (c) 2006-2024 Roy Marples <r...@marples.name>
+ * Copyright (c) 2006-2025 Roy Marples <r...@marples.name>
  * All rights reserved
 
  * Redistribution and use in source and binary forms, with or without
@@ -26,7 +26,7 @@
  * SUCH DAMAGE.
  */
 
-static const char dhcpcd_copyright[] = "Copyright (c) 2006-2024 Roy Marples";
+static const char dhcpcd_copyright[] = "Copyright (c) 2006-2025 Roy Marples";
 
 #include <sys/file.h>
 #include <sys/socket.h>
@@ -1156,10 +1156,8 @@ dhcpcd_checkcarrier(void *arg)
 	struct interface *ifp0 = arg, *ifp;
 
 	ifp = if_find(ifp0->ctx->ifaces, ifp0->name);
-	if (ifp == NULL || ifp->carrier == ifp0->carrier)
-		return;
-
-	dhcpcd_handlecarrier(ifp, ifp0->carrier, ifp0->flags);
+	if (ifp != NULL)
+		dhcpcd_handlecarrier(ifp, ifp0->carrier, ifp0->flags);
 	if_free(ifp0);
 }
 
@@ -2175,9 +2173,6 @@ main(int argc, char **argv, char **envp)
 	ctx.options &= ~DHCPCD_DAEMONISE;
 #endif
 
-	if (ctx.options & DHCPCD_DEBUG)
-		logsetopts(logopts | LOGERR_DEBUG);
-
 	if (!(ctx.options & (DHCPCD_TEST | DHCPCD_DUMPLEASE))) {
 printpidfile:
 		/* If we have any other args, we should run as a single dhcpcd

Index: src/external/bsd/dhcpcd/dist/src/if-bsd.c
diff -u src/external/bsd/dhcpcd/dist/src/if-bsd.c:1.32 src/external/bsd/dhcpcd/dist/src/if-bsd.c:1.33
--- src/external/bsd/dhcpcd/dist/src/if-bsd.c:1.32	Wed Feb 12 19:23:13 2025
+++ src/external/bsd/dhcpcd/dist/src/if-bsd.c	Tue Feb 25 12:50:53 2025
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: BSD-2-Clause */
 /*
  * BSD interface driver for dhcpcd
- * Copyright (c) 2006-2024 Roy Marples <r...@marples.name>
+ * Copyright (c) 2006-2025 Roy Marples <r...@marples.name>
  * All rights reserved
 
  * Redistribution and use in source and binary forms, with or without
@@ -887,10 +887,22 @@ if_copyrt(struct dhcpcd_ctx *ctx, struct
 
 	rt->rt_flags = (unsigned int)rtm->rtm_flags;
 	if_copysa(&rt->rt_dest, rti_info[RTAX_DST]);
+
 	if (rtm->rtm_addrs & RTA_NETMASK) {
 		if_copysa(&rt->rt_netmask, rti_info[RTAX_NETMASK]);
-		if (rt->rt_netmask.sa_family == 255) /* Why? */
-			rt->rt_netmask.sa_family = rt->rt_dest.sa_family;
+		/*
+		 * Netmask family and length are ignored by traditional
+		 * userland tools such as route and netstat and are assumed
+		 * to match the destination sockaddr.
+		 * This is fortunate because BSD kernels use a radix tree
+		 * to store routes which adjusts the netmask at the point
+		 * of insertion where this information is lost.
+		 * We can just sub in the values from the destination address.
+		 *
+		 * This is currently true for all BSD kernels.
+		 */
+		rt->rt_netmask.sa_family = rt->rt_dest.sa_family;
+		rt->rt_netmask.sa_len = rt->rt_dest.sa_len;
 	}
 
 	/* dhcpcd likes an unspecified gateway to indicate via the link.
@@ -953,19 +965,24 @@ if_initrt(struct dhcpcd_ctx *ctx, rb_tre
 	struct rt_msghdr *rtm;
 	int mib[6] = { CTL_NET, PF_ROUTE, 0, af, NET_RT_DUMP, 0 };
 	size_t bufl;
-	char *buf, *p, *end;
+	char *buf = NULL, *p, *end;
 	struct rt rt, *rtn;
 
+again:
 	if (if_sysctl(ctx, mib, __arraycount(mib), NULL, &bufl, NULL, 0) == -1)
-		return -1;
-	if (bufl == 0)
+		goto err;
+	if (bufl == 0) {
+		free(buf);
 		return 0;
-	if ((buf = malloc(bufl)) == NULL)
-		return -1;
+	}
+	if ((p = realloc(buf, bufl)) == NULL)
+		goto err;
+	buf = p;
 	if (if_sysctl(ctx, mib, __arraycount(mib), buf, &bufl, NULL, 0) == -1)
 	{
-		free(buf);
-		return -1;
+		if (errno == ENOMEM)
+			goto again;
+		goto err;
 	}
 
 	end = buf + bufl;
@@ -989,6 +1006,10 @@ if_initrt(struct dhcpcd_ctx *ctx, rb_tre
 	}
 	free(buf);
 	return p == end ? 0 : -1;
+
+err:
+	free(buf);
+	return -1;
 }
 
 #ifdef INET
@@ -1252,6 +1273,7 @@ if_ifinfo(struct dhcpcd_ctx *ctx, const 
 	if ((ifp = if_findindex(ctx->ifaces, ifm->ifm_index)) == NULL)
 		return 0;
 
+	ifp->mtu = if_mtu(ifp);
 	link_state = if_carrier(ifp, &ifm->ifm_data);
 	dhcpcd_handlecarrier(ifp, link_state, (unsigned int)ifm->ifm_flags);
 	return 0;
Index: src/external/bsd/dhcpcd/dist/src/ipv6nd.c
diff -u src/external/bsd/dhcpcd/dist/src/ipv6nd.c:1.32 src/external/bsd/dhcpcd/dist/src/ipv6nd.c:1.33
--- src/external/bsd/dhcpcd/dist/src/ipv6nd.c:1.32	Wed Feb 12 19:23:13 2025
+++ src/external/bsd/dhcpcd/dist/src/ipv6nd.c	Tue Feb 25 12:50:53 2025
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: BSD-2-Clause */
 /*
  * dhcpcd - IPv6 ND handling
- * Copyright (c) 2006-2024 Roy Marples <r...@marples.name>
+ * Copyright (c) 2006-2025 Roy Marples <r...@marples.name>
  * All rights reserved
 
  * Redistribution and use in source and binary forms, with or without

Index: src/external/bsd/dhcpcd/dist/src/if-options.c
diff -u src/external/bsd/dhcpcd/dist/src/if-options.c:1.40 src/external/bsd/dhcpcd/dist/src/if-options.c:1.41
--- src/external/bsd/dhcpcd/dist/src/if-options.c:1.40	Thu Feb 13 02:53:06 2025
+++ src/external/bsd/dhcpcd/dist/src/if-options.c	Tue Feb 25 12:50:53 2025
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: BSD-2-Clause */
 /*
  * dhcpcd - DHCP client daemon
- * Copyright (c) 2006-2024 Roy Marples <r...@marples.name>
+ * Copyright (c) 2006-2025 Roy Marples <r...@marples.name>
  * All rights reserved
 
  * Redistribution and use in source and binary forms, with or without
@@ -33,6 +33,7 @@
 
 #include <ctype.h>
 #include <errno.h>
+#include <fnmatch.h>
 #include <getopt.h>
 #include <grp.h>
 #include <inttypes.h>
@@ -174,6 +175,7 @@ const struct option cf_options[] = {
 	{"request_time",    required_argument, NULL, O_REQUEST_TIME},
 	{"fallback_time",   required_argument, NULL, O_FALLBACK_TIME},
 	{"ipv4ll_time",     required_argument, NULL, O_IPV4LL_TIME},
+	{"nosyslog",        no_argument,       NULL, O_NOSYSLOG},
 	{NULL,              0,                 NULL, '\0'}
 };
 
@@ -650,34 +652,38 @@ parse_option(struct dhcpcd_ctx *ctx, con
 	ssize_t s;
 	struct in_addr addr, addr2;
 	in_addr_t *naddr;
-	struct rt *rt;
 	const struct dhcp_opt *d, *od;
 	uint8_t *request, *require, *no, *reject;
 	struct dhcp_opt **dop, *ndop;
 	size_t *dop_len, dl, odl;
 	struct group *grp;
-#ifndef SMALL
-	struct vivco *vivco;
-	const struct vivco *vivco_endp = ifo->vivco + ifo->vivco_len;
-#endif
 #ifdef AUTH
 	struct token *token;
 #endif
 #ifdef _REENTRANT
 	struct group grpbuf;
 #endif
+#ifdef INET
+	struct rt *rt;
+#endif
 #ifdef DHCP6
-	size_t sl;
 	struct if_ia *ia;
 	uint8_t iaid[4];
+#endif
+#if defined(DHCP6) || ((defined(INET) || defined(INET6)) && !defined(SMALL))
+	size_t sl;
+#endif
 #ifndef SMALL
-	struct in6_addr in6addr;
+#ifdef DHCP6
 	struct if_sla *sla, *slap;
+#endif
+	struct vivco *vivco;
+	const struct vivco *vivco_endp = ifo->vivco + ifo->vivco_len;
+	struct in6_addr in6addr;
 	struct vsio **vsiop = NULL, *vsio;
 	size_t *vsio_lenp = NULL, opt_max, opt_header;
 	struct vsio_so *vsio_so;
 #endif
-#endif
 
 	dop = NULL;
 	dop_len = NULL;
@@ -736,7 +742,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
 		}
 		break;
 	case 'd':
-		ifo->options |= DHCPCD_DEBUG;
+		logsetopts(loggetopts() | LOGERR_DEBUG);
 		break;
 	case 'e':
 		ARG_REQUIRED;
@@ -1310,6 +1316,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
 		    strncmp(arg, "ms_classless_static_routes=",
 		        strlen("ms_classless_static_routes=")) == 0)
 		{
+#ifdef INET
 			struct in_addr addr3;
 
 			if (p == NULL) {
@@ -1339,7 +1346,12 @@ parse_option(struct dhcpcd_ctx *ctx, con
 			sa_in_init(&rt->rt_gateway, &addr3);
 			if (rt_proto_add_ctx(&ifo->routes, rt, ctx))
 				add_environ(&ifo->config, arg, 0);
+#else
+			logerrx("no inet support for option: %s", arg);
+			return -1;
+#endif
 		} else if (strncmp(arg, "routers=", strlen("routers=")) == 0) {
+#ifdef INET
 			if (p == NULL) {
 				rt_headclear(&ifo->routes, AF_INET);
 				add_environ(&ifo->config, arg, 1);
@@ -1355,6 +1367,10 @@ parse_option(struct dhcpcd_ctx *ctx, con
 			sa_in_init(&rt->rt_gateway, &addr);
 			if (rt_proto_add_ctx(&ifo->routes, rt, ctx))
 				add_environ(&ifo->config, arg, 0);
+#else
+			logerrx("no inet support for option: %s", arg);
+			return -1;
+#endif
 		} else if (strncmp(arg, "interface_mtu=",
 		    strlen("interface_mtu=")) == 0 ||
 		    strncmp(arg, "mtu=", strlen("mtu=")) == 0)
@@ -1368,6 +1384,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
 				return -1;
 			}
 		} else if (strncmp(arg, "ip6_address=", strlen("ip6_address=")) == 0) {
+#ifdef INET6
 			if (p == NULL) {
 				memset(&ifo->req_addr6, 0,
 				    sizeof(ifo->req_addr6));
@@ -1398,6 +1415,10 @@ parse_option(struct dhcpcd_ctx *ctx, con
 				    sizeof(ifo->req_addr6));
 				return -1;
 			}
+#else
+			logerrx("no inet6 support for option: %s", arg);
+			return -1;
+#endif
 		} else
 			add_environ(&ifo->config, arg, p == NULL ? 1 : 0);
 		break;
@@ -2529,6 +2550,14 @@ invalid_token:
 		}
 		break;
 #endif
+	case O_NOSYSLOG:
+		{
+			unsigned int logopts = loggetopts();
+
+			logopts &= ~LOGERR_LOG;
+			logsetopts(logopts);
+		}
+		break;
 	default:
 		return 0;
 	}
@@ -2847,7 +2876,7 @@ read_config(struct dhcpcd_ctx *ctx,
 				skip = 1;
 				continue;
 			}
-			if (ifname && strcmp(line, ifname) == 0)
+			if (ifname && fnmatch(line, ifname, 0) == 0)
 				skip = 0;
 			else
 				skip = 1;

Index: src/external/bsd/dhcpcd/dist/src/ipv6.c
diff -u src/external/bsd/dhcpcd/dist/src/ipv6.c:1.21 src/external/bsd/dhcpcd/dist/src/ipv6.c:1.22
--- src/external/bsd/dhcpcd/dist/src/ipv6.c:1.21	Thu Feb 13 02:56:03 2025
+++ src/external/bsd/dhcpcd/dist/src/ipv6.c	Tue Feb 25 12:50:53 2025
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: BSD-2-Clause */
 /*
  * dhcpcd - DHCP client daemon
- * Copyright (c) 2006-2024 Roy Marples <r...@marples.name>
+ * Copyright (c) 2006-2025 Roy Marples <r...@marples.name>
  * All rights reserved
 
  * Redistribution and use in source and binary forms, with or without
@@ -709,9 +709,7 @@ ipv6_addaddr1(struct ipv6_addr *ia, stru
 		 * The saved times will be re-applied to the ia
 		 * before exiting this function. */
 		ia->prefix_vltime = ia->prefix_pltime = ND6_INFINITE_LIFETIME;
-	}
-
-	if (timespecisset(&ia->acquired)) {
+	} else if (timespecisset(&ia->acquired)) {
 		ia->prefix_pltime = lifetime_left(ia->prefix_pltime,
 		    &ia->acquired, now);
 		ia->prefix_vltime = lifetime_left(ia->prefix_vltime,
@@ -2274,13 +2272,10 @@ inet6_raroutes(rb_tree_t *routes, struct
 	const struct routeinfo *rinfo;
 	const struct ipv6_addr *addr;
 	struct in6_addr netmask;
-	struct timespec now;
 
 	if (ctx->ra_routers == NULL)
 		return 0;
 
-	timespecclear(&now);
-
 	TAILQ_FOREACH(rap, ctx->ra_routers, next) {
 		if (rap->expired)
 			continue;
@@ -2302,8 +2297,8 @@ inet6_raroutes(rb_tree_t *routes, struct
 			rt->rt_pref = ipv6nd_rtpref(rinfo->flags);
 #endif
 #ifdef HAVE_ROUTE_LIFETIME
-			rt->rt_lifetime = lifetime_left(rinfo->lifetime,
-			    &rinfo->acquired, &now);
+			rt->rt_aquired = rinfo->acquired;
+			rt->rt_lifetime = rinfo->lifetime,
 #endif
 			rt_proto_add(routes, rt);
 		}
@@ -2319,9 +2314,8 @@ inet6_raroutes(rb_tree_t *routes, struct
 				rt->rt_pref = ipv6nd_rtpref(rap->flags);
 #endif
 #ifdef HAVE_ROUTE_LIFETIME
-				rt->rt_lifetime =
-				    lifetime_left(addr->prefix_vltime,
-				    &addr->acquired, &now);
+				rt->rt_aquired = addr->acquired;
+				rt->rt_lifetime = addr->prefix_vltime;
 #endif
 
 				rt_proto_add(routes, rt);
@@ -2356,8 +2350,8 @@ inet6_raroutes(rb_tree_t *routes, struct
 		rt->rt_pref = ipv6nd_rtpref(rap->flags);
 #endif
 #ifdef HAVE_ROUTE_LIFETIME
-		rt->rt_lifetime = lifetime_left(rap->lifetime,
-		    &rap->acquired, &now);
+		rt->rt_aquired = rap->acquired;
+		rt->rt_lifetime = rap->lifetime;
 #endif
 
 		rt_proto_add(routes, rt);
@@ -2395,6 +2389,10 @@ inet6_dhcproutes(rb_tree_t *routes, stru
 			if (rt == NULL)
 				continue;
 			rt->rt_dflags |= RTDF_DHCP;
+#ifdef HAVE_ROUTE_LIFETIME
+			rt->rt_aquired = ia->acquired;
+			rt->rt_lifetime = ia->prefix_vltime;
+#endif
 			rt_proto_add(routes, rt);
 		}
 	}

Index: src/external/bsd/dhcpcd/dist/src/ipv6.h
diff -u src/external/bsd/dhcpcd/dist/src/ipv6.h:1.15 src/external/bsd/dhcpcd/dist/src/ipv6.h:1.16
--- src/external/bsd/dhcpcd/dist/src/ipv6.h:1.15	Wed Feb 12 19:23:13 2025
+++ src/external/bsd/dhcpcd/dist/src/ipv6.h	Tue Feb 25 12:50:53 2025
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: BSD-2-Clause */
 /*
  * dhcpcd - DHCP client daemon
- * Copyright (c) 2006-2024 Roy Marples <r...@marples.name>
+ * Copyright (c) 2006-2025 Roy Marples <r...@marples.name>
  * All rights reserved
 
  * Redistribution and use in source and binary forms, with or without
Index: src/external/bsd/dhcpcd/dist/src/logerr.c
diff -u src/external/bsd/dhcpcd/dist/src/logerr.c:1.15 src/external/bsd/dhcpcd/dist/src/logerr.c:1.16
--- src/external/bsd/dhcpcd/dist/src/logerr.c:1.15	Wed Feb 12 19:23:13 2025
+++ src/external/bsd/dhcpcd/dist/src/logerr.c	Tue Feb 25 12:50:53 2025
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: BSD-2-Clause */
 /*
  * logerr: errx with logging
- * Copyright (c) 2006-2024 Roy Marples <r...@marples.name>
+ * Copyright (c) 2006-2025 Roy Marples <r...@marples.name>
  * All rights reserved
 
  * Redistribution and use in source and binary forms, with or without
@@ -427,6 +427,8 @@ logsetopts(unsigned int opts)
 
 	ctx->log_opts = opts;
 	setlogmask(LOG_UPTO(opts & LOGERR_DEBUG ? LOG_DEBUG : LOG_INFO));
+	if (!(ctx->log_opts & LOGERR_LOG))
+		closelog();
 }
 
 #ifdef LOGERR_TAG
@@ -463,7 +465,8 @@ logopen(const char *path)
 
 	if (ctx->log_opts & LOGERR_LOG_PID)
 		opts |= LOG_PID;
-	openlog(getprogname(), opts, LOGERR_SYSLOG_FACILITY);
+	if (ctx->log_opts & LOGERR_LOG)
+		openlog(getprogname(), opts, LOGERR_SYSLOG_FACILITY);
 	if (path == NULL)
 		return 1;
 

Index: src/external/bsd/dhcpcd/dist/src/privsep.c
diff -u src/external/bsd/dhcpcd/dist/src/privsep.c:1.20 src/external/bsd/dhcpcd/dist/src/privsep.c:1.21
--- src/external/bsd/dhcpcd/dist/src/privsep.c:1.20	Wed Feb 12 19:23:13 2025
+++ src/external/bsd/dhcpcd/dist/src/privsep.c	Tue Feb 25 12:50:53 2025
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: BSD-2-Clause */
 /*
  * Privilege Separation for dhcpcd
- * Copyright (c) 2006-2024 Roy Marples <r...@marples.name>
+ * Copyright (c) 2006-2025 Roy Marples <r...@marples.name>
  * All rights reserved
 
  * Redistribution and use in source and binary forms, with or without

Index: src/external/bsd/dhcpcd/dist/src/script.c
diff -u src/external/bsd/dhcpcd/dist/src/script.c:1.18 src/external/bsd/dhcpcd/dist/src/script.c:1.19
--- src/external/bsd/dhcpcd/dist/src/script.c:1.18	Wed Feb 12 19:23:13 2025
+++ src/external/bsd/dhcpcd/dist/src/script.c	Tue Feb 25 12:50:53 2025
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: BSD-2-Clause */
 /*
  * dhcpcd - DHCP client daemon
- * Copyright (c) 2006-2024 Roy Marples <r...@marples.name>
+ * Copyright (c) 2006-2025 Roy Marples <r...@marples.name>
  * All rights reserved
 
  * Redistribution and use in source and binary forms, with or without
@@ -471,7 +471,7 @@ make_env(struct dhcpcd_ctx *ctx, const s
 		if (efprintf(fp, "af_waiting=%d", af) == -1)
 			goto eexit;
 	}
-	if (ifo->options & DHCPCD_DEBUG) {
+	if (loggetopts() & LOGERR_DEBUG) {
 		if (efprintf(fp, "syslog_debug=true") == -1)
 			goto eexit;
 	}

Reply via email to