From 699325bd8ab676c2193b6fb57b585fc63ab6ea85 Mon Sep 17 00:00:00 2001 From: kisfenyo Date: Wed, 22 Jul 2026 11:25:17 +0200 Subject: [PATCH] =?UTF-8?q?scripts/iso=20R-60=20fix:=20judge=20a=20sweep?= =?UTF-8?q?=20candidate=20on=20the=20lease's=20OWN=20routing=20=E2=80=94?= =?UTF-8?q?=20flush=20vmbr0=20before=20the=20bounded=20dhclient?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Live drill finding (nested leg, 2026-07-22): the installer's no-DHCP fallback bakes not just the 192.168.100.2 static address but a DEFAULT ROUTE via 192.168.100.1, and dhclient-script never replaces an existing default route — so the sweep's hub probe rode the dead gateway and failed even though the candidate's lease had landed, and the gate oscillated (lease -> probe fail -> byte-identical restore -> screen). The candidate probe now flushes vmbr0's addresses+routes after the re-point, letting the lease install its own; the restore path and each next candidate re-apply configured state via ifreload. Validated live by hot-patching the drill box: heal in 33s from restart — self-heal log, inet-dhcp persist, .felhom-bak, hub registration + pairing banner. Full virgin-ISO drill follows. Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01UuFPHmHNrCJj1VhY6QdDMU --- scripts/iso/felhom-bootstrap.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/scripts/iso/felhom-bootstrap.sh b/scripts/iso/felhom-bootstrap.sh index ff9752a..7d68192 100644 --- a/scripts/iso/felhom-bootstrap.sh +++ b/scripts/iso/felhom-bootstrap.sh @@ -197,6 +197,13 @@ sweep_nics() { render_candidate_interfaces "$n" > "${INTERFACES_FILE}.felhom-tmp" \ && mv "${INTERFACES_FILE}.felhom-tmp" "$INTERFACES_FILE" ifreload -a 2>/dev/null + # Drill finding (2026-07-22, nested leg): the installer's fallback bakes a DEFAULT ROUTE via + # 192.168.100.1, and dhclient-script does not replace an existing default route — the probe + # then rides the dead gateway and fails even though the lease landed. A candidate must be + # judged on the lease's OWN addressing/routing, so clear vmbr0 first; the restore path (and + # any next candidate) re-applies the configured state via ifreload. + ip addr flush dev vmbr0 2>/dev/null + ip route flush dev vmbr0 2>/dev/null timeout "$SWEEP_DHCP_TIMEOUT" dhclient -1 vmbr0 2>/dev/null local drc=$? if [[ $drc -eq 0 ]] && hub_reachable; then