Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package agama-installer for openSUSE:Factory
checked in at 2026-08-19 17:55:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/agama-installer (Old)
and /work/SRC/openSUSE:Factory/.agama-installer.new.1258 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "agama-installer"
Wed Aug 19 17:55:31 2026 rev:40 rq:1371748 version:23.0.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/agama-installer/agama-installer.changes
2026-08-11 17:09:36.922928888 +0200
+++
/work/SRC/openSUSE:Factory/.agama-installer.new.1258/agama-installer.changes
2026-08-19 17:56:07.408268575 +0200
@@ -1,0 +2,62 @@
+Mon Aug 17 09:30:00 UTC 2026 - Knut Anderssen <[email protected]>
+
+- HCN: do not collect data from functions that log. dracut's
+ info() writes to stdout when DRACUT_SYSTEMD is set, so the
+ messages of carry_over_cmdline() and get_dev_hcn() would end up
+ in the generated command line and in the device mappings. Both
+ hand their result over in a variable now.
+- HCN: reset the master lookup in every iteration of
+ fixup_nm_connections, a connection that is in no mapping and
+ whose controller is no HCN bond inherited the values of the
+ previous iteration and was treated as HCN-related.
+- HCN: follow the dracut conventions in hcn-init-initrd.service
+ (DRACUT_SYSTEMD=1, StandardInput=null, Conflicts with
+ shutdown.target and emergency.target) and raise
+ TimeoutStartSec to 300s, the 3 minutes parse-hcn waits for the
+ devices exceed the default start timeout.
+- HCN: wait for all the devices to show up in sysfs with a single
+ 3 minutes budget instead of restarting it for every device,
+ which exceeded the service start timeout with more than one
+ device, and do not take the name resolved by ofpathname for a
+ device that has no sysfs entry yet as a valid result
+ (gh#agama-project/agama#3790).
+
+-------------------------------------------------------------------
+Mon Aug 3 12:45:00 UTC 2026 - Knut Anderssen <[email protected]>
+
+- HCN: write the nm-initrd-generator configuration files to
+ /run/hcn/conf.d. The generator always emits
+ 15-carrier-timeout.conf, so with the default directory the HCN
+ run overwrote the one NetworkManager had generated from the real
+ command line, resetting a user supplied rd.net.timeout.carrier.
+- HCN: fix the bond lookup in fixup_nm_connections, which matched
+ a space delimited name against the newline separated bond list
+ and therefore never matched at all as soon as there was more
+ than one bond.
+- Related to bsc#1272445 (gh#agama-project/agama#3790).
+
+-------------------------------------------------------------------
+Mon Aug 3 12:30:00 UTC 2026 - Knut Anderssen <[email protected]>
+
+- HCN: carry the device independent network options of the kernel
+ command line over to the nm-initrd-generator call, which so far
+ only received the bond=, ip= and rd.route= arguments built from
+ rd.hcn.*. nameserver=, rd.peerdns=, rd.net.timeout.dhcp=,
+ rd.net.dhcp.retry=, rd.net.dhcp.vendor-class= and
+ rd.net.dhcp.dscp= had no effect on an HCN boot so far, since the
+ ip=hcn marker keeps NetworkManager's own generator run from
+ producing any connection (bsc#1273219, related to bsc#1272445,
+ gh#agama-project/agama#3790).
+
+-------------------------------------------------------------------
+Mon Aug 3 10:50:00 UTC 2026 - Knut Anderssen <[email protected]>
+
+Fixes related to bsc#1272445 ISO building and testing
+(gh#agama-project/agama#3782).
+- Fix ppc64le and s390x ISO build issues in fix_bootconfig by
+ ensuring the xorriso wrapper acts as a transparent pass-through
+ for read-only reporting and probing commands.
+- Clean up redundant ppc64le bootloader options, relying on KIWI-NG's
+ native support for making OFW ISOs bootable.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ config-cdroot.tar.xz ++++++
++++++ fix_bootconfig ++++++
--- /var/tmp/diff_new_pack.gGHdPu/_old 2026-08-19 17:56:08.621311669 +0200
+++ /var/tmp/diff_new_pack.gGHdPu/_new 2026-08-19 17:56:08.623311740 +0200
@@ -115,20 +115,21 @@
[ -x $bootfix ] && $bootfix $dst
rm -f $dst/fix_bootconfig.* $dst/.profile
-case $arch in
- s390x)
- /usr/bin/xorriso "\$@" -volid "\$volid" -boot_image any
bin_path=boot/s390x/loader/cd.ikr -boot_image any boot_info_table=off
-boot_image any load_size=512
- err=\$?
- [ -x /usr/bin/isozipl ] && isozipl "\$iso"
- ;;
- ppc64le)
- /usr/bin/xorriso "\$@" -volid "\$volid" -boot_image any chrp_boot_part=on
- err=\$?
- ;;
- *)
- /usr/bin/xorriso "\$@" -volid "\$volid"
- err=\$?
-esac
+if [ -z "\$iso" ] ; then
+ /usr/bin/xorriso "\$@"
+ err=\$?
+else
+ case $arch in
+ s390x)
+ /usr/bin/xorriso "\$@" -volid "\$volid" -boot_image any
bin_path=boot/s390x/loader/cd.ikr -boot_image any boot_info_table=off
-boot_image any load_size=512
+ err=\$?
+ [ -x /usr/bin/isozipl ] && isozipl "\$iso"
+ ;;
+ *)
+ /usr/bin/xorriso "\$@" -volid "\$volid"
+ err=\$?
+ esac
+fi
exit \$err
XXX
++++++ live-root.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/usr/lib/dracut/modules.d/99hcn/ARCHITECTURE.md
new/usr/lib/dracut/modules.d/99hcn/ARCHITECTURE.md
--- old/usr/lib/dracut/modules.d/99hcn/ARCHITECTURE.md 2026-08-01
09:52:37.000000000 +0200
+++ new/usr/lib/dracut/modules.d/99hcn/ARCHITECTURE.md 2026-08-18
11:57:52.000000000 +0200
@@ -164,9 +164,10 @@
- **If none of these parameters are present:** Service does not start
(systemd conditions prevent execution).
- **If any HCN parameter is present:**
- `/usr/bin/parse-hcn` performs discovery in `/proc/device-tree` to
pair adapters sharing an `ibm,hcn-id`.
- - For each device, it waits up to 3 minutes for the interface to appear
after potential migration events.
+ - For each device, it waits up to 3 minutes for the interface to appear
after potential migration events. The unit sets `TimeoutStartSec=300` for that,
the default start timeout is shorter than the wait.
- It reads the HCN-specific kernel command line options `rd.hcn.ip` and
`rd.hcn.route` and translates them to target the planned bond interface (e.g.
`bond333e80f5`).
- - It calls the standard `nm-initrd-generator` **directly** with
transformed parameters as command-line arguments and custom output directory
`-c /run/hcn/system-connections`.
+ - It carries over the remaining device independent network options of
the real command line (`nameserver=`, `rd.peerdns=`, `rd.net.dhcp.*`), which
the generator run of step 2.5 produced nothing for.
+ - It calls the standard `nm-initrd-generator` **directly** with
transformed parameters as command-line arguments and custom output directories
`-c /run/hcn/system-connections` and `-r /run/hcn/conf.d`.
- It adapts the generated NetworkManager profiles for compatibility
with `hcnmgr` daemon (bond naming, controller references, UUIDs).
- The adapted profiles are copied to
`/etc/NetworkManager/system-connections/` for persistence across reboots.
@@ -270,10 +271,58 @@
- `miimon=100`: Monitor link status every 100ms
- `primary=enP32775p1s0`: Prefer the SR-IOV interface as primary
+### Carrying over the rest of the network command line
+
+The command line above is built from scratch, so it is also the only network
command line
+`nm-initrd-generator` gets to see for HCN. The generator run NetworkManager
performs on its
+own with the real command line is not a substitute: the `ip=hcn` marker keeps
that run from
+producing any connection, so every per-connection setting it parses there is
dropped.
+
+`carry_over_cmdline()` therefore appends the network options that name no
device, copied
+verbatim:
+
+| Group | Options | Handling |
+|-------|---------|----------|
+| Device independent | `nameserver`, `rd.peerdns`, `rd.net.timeout.dhcp`,
`rd.net.dhcp.retry`, `rd.net.dhcp.vendor-class`, `rd.net.dhcp.dscp` | Copied
verbatim |
+
+Two constraints of the dracut library shape how the function is written:
+
+- It appends to `NEW_ARGS` instead of printing the options. Under systemd
(`DRACUT_SYSTEMD=1`,
+ which `hcn-init-initrd.service` sets like every other dracut service)
`info()` writes to
+ stdout, so the output of a function that logs cannot be captured with a
command
+ substitution. The same applies to `get_dev_hcn()`, which hands its result
over in
+ `HCN_MAPPING`.
+- Only options taking a value can be carried over this way, because
`getargs()` prints
+ nothing for an option given as a bare flag. All the options above do take
one,
+ `rd.peerdns` is used as `rd.peerdns=0`. A boolean option would need
`getargbool()`.
+
+Known gaps, all of them deliberate:
+
+- `rd.net.dhcp.client-id`, `bootdev`, `rd.ethtool`, and the `vlan=` /
`bridge=` / `team=`
+ stacked devices name a device. The user names a bond port, so the reference
would have to
+ be rewritten to its bond first. On top of that, `nm-initrd-generator`
creates a full
+ connection for every device it sees named in any of these, and the copy step
below would
+ then persist that stray connection to
`/etc/NetworkManager/system-connections`. The
+ stacked devices additionally need a way to be addressed from `rd.hcn.ip`,
which the
+ current syntax does not offer.
+- `rd.net.dns`, `rd.net.dns-backend`, `rd.net.dns-resolve-mode` and
`rd.net.timeout.carrier`
+ produce a global configuration file rather than a connection. They do not
depend on the
+ bonds having been resolved and NetworkManager's own run already wrote them to
+ `/run/NetworkManager/conf.d`. That is also why `--run-config-dir` points at
+ `/run/hcn/conf.d`: the generator unconditionally writes
`15-carrier-timeout.conf`, so
+ with the default directory the HCN run would overwrite NetworkManager's copy
of it and
+ reset a `rd.net.timeout.carrier` supplied by the user.
+
+The host name field of `rd.hcn.ip` needs no carry-over: the generator writes
it to its
+`--initrd-data-dir` (`/run/NetworkManager/initrd`, which it creates itself)
while parsing
+the `ip=` argument built from `rd.hcn.ip`. `nm-run.sh`, the
`initqueue/settled` hook of
+`35network-manager`, then applies it to `/proc/sys/kernel/hostname`. The
ordering holds
+because `hcn-init-initrd.service` runs `Before=dracut-initqueue.service`.
+
**These transformed parameters are:**
1. Passed **directly** to `nm-initrd-generator` as command-line arguments (NOT
written to `/etc/cmdline.d/`)
-2. Output directed to isolated directory: `-c /run/hcn/system-connections`
+2. Output directed to isolated directories: `-c /run/hcn/system-connections`
and `-r /run/hcn/conf.d`
3. Used by `nm-initrd-generator` to create initial NetworkManager connection
profiles
4. Adapted by `fixup_nm_connections()` to ensure `hcnmgr` daemon compatibility
5. Copied to `/etc/NetworkManager/system-connections/` for persistence across
reboots
@@ -420,14 +469,18 @@
- Requires validation against `hcnmgr` expectations
3. **DNS Configuration:**
- - Current `ip=` format supports nameserver (8th field)
+ - The `ip=` format supports nameservers (8th and 9th field)
- Example:
`rd.hcn.ip=192.168.1.10::192.168.1.1:255.255.255.0:::none:8.8.8.8`
+ - A plain `nameserver=` is carried over as well, see [Carrying over the
rest of the network command
line](#carrying-over-the-rest-of-the-network-command-line)
- Needs testing and documentation
4. **VLAN Support:**
- HCN bonds may carry VLAN-tagged traffic
- Requires additional parameter: `rd.hcn.vlan=<vlan-id>`
- Profile generation for VLAN interfaces on top of bond
+ - Rewriting a plain `vlan=<name>:<port>` to the bond is the easy half. The
hard half is
+ addressing the VLAN interface from `rd.hcn.ip`, which currently only
understands
+ ports, MACs and bond names, so `vlan=`, `bridge=` and `team=` are not
carried over
5. **Configurable Timeout:**
- Current 180-second timeout may be insufficient on slow hardware or during
complex LPM
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/usr/lib/dracut/modules.d/99hcn/hcn-init-initrd.service
new/usr/lib/dracut/modules.d/99hcn/hcn-init-initrd.service
--- old/usr/lib/dracut/modules.d/99hcn/hcn-init-initrd.service 2026-08-01
09:52:37.000000000 +0200
+++ new/usr/lib/dracut/modules.d/99hcn/hcn-init-initrd.service 2026-08-18
11:57:52.000000000 +0200
@@ -10,13 +10,19 @@
ConditionKernelCommandLine=|rd.hcn=1
ConditionKernelCommandLine=|rd.hcn.ip
ConditionKernelCommandLine=|rd.hcn.route
+Conflicts=shutdown.target emergency.target
[Service]
+Environment=DRACUT_SYSTEMD=1
Type=oneshot
ExecStart=/usr/bin/parse-hcn
SyslogIdentifier=hcn-init-initrd
+StandardInput=null
StandardOutput=journal+console
StandardError=journal+console
+# parse-hcn waits up to 3 minutes in total for the HCN devices to show up in
+# sysfs, which is longer than the default start timeout
+TimeoutStartSec=300
RemainAfterExit=yes
[Install]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/usr/lib/dracut/modules.d/99hcn/parse-hcn.sh
new/usr/lib/dracut/modules.d/99hcn/parse-hcn.sh
--- old/usr/lib/dracut/modules.d/99hcn/parse-hcn.sh 2026-08-01
09:52:37.000000000 +0200
+++ new/usr/lib/dracut/modules.d/99hcn/parse-hcn.sh 2026-08-18
11:57:52.000000000 +0200
@@ -10,9 +10,11 @@
# - Scans vdevices (VNIC and Virtual Ethernet)
# 3. Build MAPPINGS: bond names -> slave devices with MACs and modes
# 4. Process rd.hcn.ip= and rd.hcn.route= parameters and replace slave
references with bonds
-# 5. Generate NetworkManager connections to a temporary directory via
nm-initrd-generator
-# 6. Fix up generated connections to use correct bond masters and naming
-# 7. Copy connections to /etc/NetworkManager/system-connections for persistence
+# 5. Carry over the remaining network options of the real kernel command line
+# (nameserver=, rd.peerdns=, rd.net.dhcp.*)
+# 6. Generate NetworkManager connections to a temporary directory via
nm-initrd-generator
+# 7. Fix up generated connections to use correct bond masters and naming
+# 8. Copy connections to /etc/NetworkManager/system-connections for persistence
#
# This script runs from hcn-init-initrd.service, once udev has discovered the
# devices. Much earlier, hcn-cmdline.sh has already told NetworkManager and the
@@ -39,12 +41,26 @@
fi
}
+# Number of 3 second waits left for the devices to show up in sysfs after a
+# migration, 3 minutes in total.
+#
+# The budget is global and not per device on purpose: the devices appear in
+# parallel, so waiting for them one by one would multiply the time spent here
+# by the number of devices and hcn-init-initrd.service, which allows 5 minutes
+# for the whole run, would kill the script in the middle of it.
+HCN_WAIT_RETRIES=60
+
# Function to discover HCN mapping for a device-tree node
+#
+# On success it sets HCN_MAPPING to "bondname devname mac mode" and returns 0.
+# The result is handed over in a variable instead of being printed because the
+# function logs its progress with info(), and under systemd info() writes to
+# stdout, which would end up mixed into the mapping (see carry_over_cmdline).
get_dev_hcn() {
local dev=$1
local hcnid devname mode mac ofpath
- # Wait up to 3 minutes for device to appear after migration (12 * 15s)
- local wait=12
+
+ HCN_MAPPING=""
hcnid=$(xdump4 "$dev/ibm,hcn-id")
[ -z "$hcnid" ] && return 1
@@ -53,15 +69,27 @@
ofpath=${dev#/proc/device-tree}
# Wait for device to appear in sysfs. This might take time after migration.
- while [ $wait -gt 0 ]; do
- if devname=$(ofpathname -l "$ofpath" 2>/dev/null) && [ -e
"/sys/class/net/$devname" ]; then
+ # Every device is looked up at least once, even with the shared wait budget
+ # already spent by the previous ones. devname is reset on each try because
+ # ofpathname can resolve a name for a device that is not in sysfs yet, and
+ # such a name must not be taken as a valid result once the waiting is over.
+ while :; do
+ devname=$(ofpathname -l "$ofpath" 2>/dev/null)
+ if [ -n "$devname" ] && [ -e "/sys/class/net/$devname" ]; then
info "parse-hcn: device $devname ready for $ofpath"
mac=$(get_mac "$dev")
break
fi
- info "parse-hcn: waiting for device for $ofpath (retry $wait)"
- sleep 15
- wait=$((wait - 1))
+ devname=""
+ [ "${HCN_WAIT_RETRIES:-0}" -gt 0 ] || break
+ # The tries are short so that a device that is already there is not waited
+ # for longer than needed, but only one out of five is logged, the messages
+ # also go to the console
+ if [ $((HCN_WAIT_RETRIES % 5)) -eq 0 ]; then
+ info "parse-hcn: waiting for device for $ofpath ($HCN_WAIT_RETRIES tries
left)"
+ fi
+ sleep 3
+ HCN_WAIT_RETRIES=$((HCN_WAIT_RETRIES - 1))
done
if [ -z "$devname" ]; then
@@ -69,8 +97,8 @@
return 1
fi
- # Output the bond mapping: bondname devname mac mode
- echo "bond$hcnid $devname ${mac:-none} ${mode:-none}"
+ # The bond mapping: bondname devname mac mode
+ HCN_MAPPING="bond$hcnid $devname ${mac:-none} ${mode:-none}"
return 0
}
@@ -206,6 +234,11 @@
for con in "$conn_dir"/*.nmconnection; do
[ -e "$con" ] || continue
+ # Start from scratch, otherwise a connection that is in no mapping and
+ # whose controller is no HCN bond would inherit the values of the previous
+ # iteration and be treated as HCN-related
+ found_master="" found_ifname=""
+
# Extract connection details
IFS='|' read -r id uuid ifname master controller mac <<EOF
$(parse_nm_connection "$con")
@@ -252,7 +285,7 @@
if [ -n "$mapping_info" ]; then
found_master=${mapping_info% *}
found_ifname=${mapping_info#* }
- elif strstr " $BOND_NAMES " " ${master:-$controller} "; then
+ elif strstr " $BOND_LIST " " ${master:-$controller} "; then
found_master=${master:-$controller}
found_ifname=$ifname
fi
@@ -287,6 +320,47 @@
done
}
+# Carry over the rest of the network command line
+#
+# nm-initrd-generator is called with a command line built from scratch, so any
+# network option the user really passed is invisible to it unless it is copied
+# over here. The generator run NetworkManager does on its own is no substitute:
+# the "ip=hcn" marker keeps that run from producing any connection, so
+# everything it would have parsed into one is lost.
+#
+# Options that end up in a global configuration file rather than in a
+# connection (rd.net.dns, rd.net.dns-backend, rd.net.dns-resolve-mode,
+# rd.net.timeout.carrier) are left out on purpose, the NetworkManager run
+# already wrote them to /run/NetworkManager/conf.d.
+#
+# Only the options that name no device are copied. The ones that do
+# (rd.net.dhcp.client-id=, bootdev=, rd.ethtool=, and the vlan=, bridge= and
+# team= stacked devices) would need the port reference rewritten to its bond,
+# and the generator creates a full connection for any device named in them,
+# which this module would then persist to /etc.
+#
+# Appends the options to NEW_ARGS. The result is not printed on purpose: the
+# function logs what it copies with info(), and info() writes to stdout when
+# DRACUT_SYSTEMD is set, so the output of a function using it cannot be
+# captured with a command substitution without getting the log messages mixed
+# into the value.
+#
+# Only options taking a value can be carried over this way, because getargs()
+# prints nothing for an option given as a bare flag. All the ones below do take
+# one, rd.peerdns is used as rd.peerdns=0. Keep that in mind before adding a
+# boolean option here, it would need getargbool() instead.
+carry_over_cmdline() {
+ local opt val
+
+ for opt in nameserver rd.peerdns rd.net.timeout.dhcp rd.net.dhcp.retry \
+ rd.net.dhcp.vendor-class rd.net.dhcp.dscp; do
+ for val in $(getargs "$opt"); do
+ info "parse-hcn: keeping $opt=$val"
+ NEW_ARGS="$NEW_ARGS $opt=$val"
+ done
+ done
+}
+
# --- Main Execution ---
info "parse-hcn: starting"
@@ -297,8 +371,8 @@
for dev in /proc/device-tree/pci*/ethernet*; do
[ -e "$dev/ibm,hcn-id" ] || continue
info "parse-hcn: checking PCI device $dev"
- if res=$(get_dev_hcn "$dev"); then
- MAPPINGS="$MAPPINGS $res"
+ if get_dev_hcn "$dev"; then
+ MAPPINGS="$MAPPINGS $HCN_MAPPING"
fi
done
@@ -306,8 +380,8 @@
for dev in /proc/device-tree/vdevice/vnic* /proc/device-tree/vdevice/l-lan*;
do
[ -e "$dev/ibm,hcn-id" ] || continue
info "parse-hcn: checking vdevice $dev"
- if res=$(get_dev_hcn "$dev"); then
- MAPPINGS="$MAPPINGS $res"
+ if get_dev_hcn "$dev"; then
+ MAPPINGS="$MAPPINGS $HCN_MAPPING"
fi
done
fi
@@ -326,19 +400,23 @@
NM_RUNTIME_CONN_DIR="$NM_RUNTIME_DIR/system-connections"
HCN_RUNTIME_DIR="/run/hcn"
HCN_RUNTIME_CONN_DIR="$HCN_RUNTIME_DIR/system-connections"
+HCN_RUNTIME_CONF_DIR="$HCN_RUNTIME_DIR/conf.d"
NEW_ARGS=""
# Extract unique bond names from discovered mappings
BOND_NAMES=$(echo "$MAPPINGS" | awk '{for(i=1;i<=NF;i+=4) if (!seen[$i]++)
print $i}')
+# Space separated copy of BOND_NAMES. BOND_NAMES is newline separated, which
+# does not work for the " $list " substring checks done with strstr. The echo
+# is what collapses the newlines, so it is not the useless one it looks like.
+# shellcheck disable=SC2086,SC2116
+BOND_LIST=$(echo $BOND_NAMES)
+
# First discovered bond. Only unqualified *static* configs (a fixed address
# with no interface field) fall back to this bond, because a fixed address can
# belong to a single bond. Method-only configs (dhcp, auto6, ...) carry no
# per-host address and instead fan out to every discovered bond (see below).
-# NOTE: BOND_NAMES is newline-separated, so it must be left unquoted here for
-# awk to see a single record and return just the first token.
-# shellcheck disable=SC2086
-FIRST_BOND=$(echo $BOND_NAMES | awk '{print $1}')
+FIRST_BOND=${BOND_LIST%% *}
for BONDNAME in $BOND_NAMES; do
SLAVES="" SLAVE_NAMES="" SLAVE_MACS="" PRIMARY=""
@@ -540,10 +618,13 @@
done
done
+carry_over_cmdline
+
# Write new configuration and update NetworkManager
if [ -n "$NEW_ARGS" ]; then
- # Create runtime directory to store HCN connections
- mkdir -p "$HCN_RUNTIME_CONN_DIR"
+ # Create runtime directories to store HCN connections and the generator
+ # configuration files
+ mkdir -p "$HCN_RUNTIME_CONN_DIR" "$HCN_RUNTIME_CONF_DIR"
# Write new cmdline options
info "parse-hcn: new cmdline arguments: $NEW_ARGS"
@@ -556,8 +637,12 @@
generator_found=1
info "parse-hcn: calling $gen"
rm -f "$HCN_RUNTIME_CONN_DIR"/*
+ # --run-config-dir points to a scratch directory on purpose. The generator
+ # always writes 15-carrier-timeout.conf, and with the default directory
+ # this run would overwrite the one NetworkManager generated from the real
+ # command line, resetting a user supplied rd.net.timeout.carrier.
# shellcheck disable=SC2086
- if "$gen" -c "$HCN_RUNTIME_CONN_DIR" -- $NEW_ARGS; then
+ if "$gen" -c "$HCN_RUNTIME_CONN_DIR" -r "$HCN_RUNTIME_CONF_DIR" --
$NEW_ARGS; then
if [ "$(ls -A "$HCN_RUNTIME_CONN_DIR")" ]; then
fixup_nm_connections
# Persist these new HCN connections to /etc