[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1105152: unblock: dhcpcd/1:10.1.0-11



Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock
X-Debbugs-Cc: dhcpcd@packages.debian.org, martin-eric.racine@iki.fi
Control: affects -1 + src:dhcpcd

Please unblock package dhcpcd:

I'm filing this ahead of the 2025-05-15 hard freeze, since this upload's 10-day transition would go past that date.

Martin-Éric

[ Reason ]
dhcpcd has long had the problem that, if it fails to obtain an IP via DHCP before timeout _and_ IPv4LL is disabled in /etc/dhcpcd.conf, it would flat out exit, leaving the host unreachable without manually logging in to restart ifupdown.

This was resolved in dhcpcd 1:10.1.0-11 by merging an upstream Git cherry-pick that makes dhcpcd fork to the background at timeout, instead of exit.

[ Impact ]
None foreseen. The change merely applies the same logic (background on timeout) that was already used in manager mode to the interface-specific mode.

[ Tests ]
Verified to improve the outcome of a timeout: fork to background and retry DHCP request at intervals, instead of coldly exiting.

[ Risks ]
Low. Two small upstream patches.

[ Checklist ]
  [x] all changes are documented in the d/changelog
  [x] I reviewed all changes and I approve them
  [x] attach debdiff against the package in testing

unblock dhcpcd/1:10.1.0-11

diff -Nru dhcpcd-10.1.0/debian/changelog dhcpcd-10.1.0/debian/changelog
--- dhcpcd-10.1.0/debian/changelog	2025-04-20 12:05:44.000000000 +0300
+++ dhcpcd-10.1.0/debian/changelog	2025-05-08 21:47:28.000000000 +0300
@@ -1,3 +1,11 @@
+dhcpcd (1:10.1.0-11) unstable; urgency=medium
+
+  * [patches]
+    + Upstream Git cherry-picks: prevent exit on timeout. We keep on trying to
+      acquire an IP no matter what, switching to IPv4LL and back as needed.
+
+ -- Martin-Éric Racine <martin-eric.racine@iki.fi>  Thu, 08 May 2025 21:47:28 +0300
+
 dhcpcd (1:10.1.0-10) unstable; urgency=medium
 
   * [patches]
diff -Nru dhcpcd-10.1.0/debian/patches/5db90127b1c3128480a52559a9cdbd4949a0fed4.patch dhcpcd-10.1.0/debian/patches/5db90127b1c3128480a52559a9cdbd4949a0fed4.patch
--- dhcpcd-10.1.0/debian/patches/5db90127b1c3128480a52559a9cdbd4949a0fed4.patch	1970-01-01 02:00:00.000000000 +0200
+++ dhcpcd-10.1.0/debian/patches/5db90127b1c3128480a52559a9cdbd4949a0fed4.patch	2025-05-08 21:47:28.000000000 +0300
@@ -0,0 +1,58 @@
+From 5db90127b1c3128480a52559a9cdbd4949a0fed4 Mon Sep 17 00:00:00 2001
+From: Roy Marples <roy@marples.name>
+Date: Thu, 8 May 2025 17:26:52 +0100
+Subject: [PATCH] dhcpcd: fork to background on initial timeout
+Forwarded: not-needed
+
+Unless the -1, --oneshot option is given.
+dhcpcd should keep on trying to configure the interface.
+Fixes #423
+---
+ src/dhcpcd.8.in | 15 ++++++++-------
+ src/dhcpcd.c    |  2 +-
+ 2 files changed, 9 insertions(+), 8 deletions(-)
+
+Index: dhcpcd/src/dhcpcd.8.in
+===================================================================
+--- dhcpcd.orig/src/dhcpcd.8.in	2025-05-08 20:07:34.775256276 +0300
++++ dhcpcd/src/dhcpcd.8.in	2025-05-08 20:07:34.771256235 +0300
+@@ -523,18 +523,19 @@
+ Timeout after
+ .Ar seconds ,
+ instead of the default 30.
++On timeout,
++.Nm
++will exit if the
++.Fl 1 ,
++.Fl Fl oneshot
++option has been given,
++otherwise it will fork into the background and keep on
++trying.
+ A setting of 0
+ .Ar seconds
+ causes
+ .Nm
+ to wait forever to get a lease.
+-If
+-.Nm
+-is working on a single interface then
+-.Nm
+-will exit when a timeout occurs, otherwise
+-.Nm
+-will fork into the background.
+ .It Fl u , Fl Fl userclass Ar class
+ Tags the DHCPv4 message with the userclass
+ .Ar class .
+Index: dhcpcd/src/dhcpcd.c
+===================================================================
+--- dhcpcd.orig/src/dhcpcd.c	2025-05-08 20:07:34.775256276 +0300
++++ dhcpcd/src/dhcpcd.c	2025-05-08 20:07:34.771256235 +0300
+@@ -198,7 +198,7 @@
+ 
+ 	ctx = arg;
+ 	logerrx("timed out");
+-	if (!(ctx->options & DHCPCD_MANAGER)) {
++	if (ctx->options & DHCPCD_ONESHOT) {
+ 		struct interface *ifp;
+ 
+ 		TAILQ_FOREACH(ifp, ctx->ifaces, next) {
diff -Nru dhcpcd-10.1.0/debian/patches/6acf895a66b143c42308777e085c1511cdebe5e0.patch dhcpcd-10.1.0/debian/patches/6acf895a66b143c42308777e085c1511cdebe5e0.patch
--- dhcpcd-10.1.0/debian/patches/6acf895a66b143c42308777e085c1511cdebe5e0.patch	1970-01-01 02:00:00.000000000 +0200
+++ dhcpcd-10.1.0/debian/patches/6acf895a66b143c42308777e085c1511cdebe5e0.patch	2025-05-08 21:47:28.000000000 +0300
@@ -0,0 +1,49 @@
+From 6acf895a66b143c42308777e085c1511cdebe5e0 Mon Sep 17 00:00:00 2001
+From: Roy Marples <roy@marples.name>
+Date: Thu, 8 May 2025 16:49:44 +0100
+Subject: [PATCH] dhcpcd: Fix -b --background
+Forwarded: not-needed
+
+It's been broken for a while... just the 11 years ago in 1d5d236
+Initial fix for #423
+---
+ src/dhcpcd.c     | 5 +++--
+ src/if-options.h | 4 ++--
+ 2 files changed, 5 insertions(+), 4 deletions(-)
+
+Index: dhcpcd/src/dhcpcd.c
+===================================================================
+--- dhcpcd.orig/src/dhcpcd.c	2025-05-08 20:07:34.895257487 +0300
++++ dhcpcd/src/dhcpcd.c	2025-05-08 20:07:34.891257446 +0300
+@@ -208,7 +208,8 @@
+ 		eloop_exit(ctx->eloop, EXIT_FAILURE);
+ 		return;
+ 	}
+-	ctx->options |= DHCPCD_NOWAITIP;
++
++	ctx->options |= DHCPCD_BACKGROUND;
+ 	dhcpcd_daemonise(ctx);
+ }
+ 
+@@ -366,7 +367,7 @@
+ 	int exit_code;
+ 
+ 	if (ctx->options & DHCPCD_DAEMONISE &&
+-	    !(ctx->options & (DHCPCD_DAEMONISED | DHCPCD_NOWAITIP)))
++	    !(ctx->options & (DHCPCD_DAEMONISED | DHCPCD_BACKGROUND)))
+ 	{
+ 		if (!dhcpcd_ipwaited(ctx))
+ 			return;
+Index: dhcpcd/src/if-options.h
+===================================================================
+--- dhcpcd.orig/src/if-options.h	2025-05-08 20:07:34.895257487 +0300
++++ dhcpcd/src/if-options.h	2025-05-08 20:07:34.891257446 +0300
+@@ -85,7 +85,7 @@
+ #define DHCPCD_ANONYMOUS		(1ULL << 21)
+ #define DHCPCD_BACKGROUND		(1ULL << 22)
+ #define DHCPCD_VENDORRAW		(1ULL << 23)
+-#define DHCPCD_NOWAITIP			(1ULL << 24) /* To force daemonise */
++// unused				(1ULL << 24)
+ #define DHCPCD_WAITIP			(1ULL << 25)
+ #define DHCPCD_SLAACPRIVATE		(1ULL << 26)
+ #define DHCPCD_CSR_WARNED		(1ULL << 27)
diff -Nru dhcpcd-10.1.0/debian/patches/series dhcpcd-10.1.0/debian/patches/series
--- dhcpcd-10.1.0/debian/patches/series	2025-04-20 12:05:44.000000000 +0300
+++ dhcpcd-10.1.0/debian/patches/series	2025-05-08 21:47:28.000000000 +0300
@@ -4,3 +4,5 @@
 fdeb8c7945211d424c3a30912004eeb56e009865.patch
 e9e40400003db2e4f12dba85acabbaf2212a520f.patch
 79c195b92f892c6f22fa07332c10fd9c2a8b679a.patch
+6acf895a66b143c42308777e085c1511cdebe5e0.patch
+5db90127b1c3128480a52559a9cdbd4949a0fed4.patch

Reply to: