Package: release.debian.org
Severity: normal
User: [email protected]
Usertags: unblock
X-Debbugs-Cc: [email protected], [email protected]
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 <[email protected]>  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 <[email protected]>
+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 <[email protected]>
+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 via email to