Skip to content

Commit 07c8f9f

Browse files
committed
Introduce a service to wait for network uplink
Fixes: QubesOS/qubes-issues#10173 For: QubesOS/qubes-issues#1512
1 parent 6034fe1 commit 07c8f9f

File tree

4 files changed

+34
-0
lines changed

4 files changed

+34
-0
lines changed

debian/qubes-core-agent.install

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ etc/qubes-rpc/qubes.VMExecGUI
3939
etc/qubes-rpc/qubes.VMRootExec
4040
etc/qubes-rpc/qubes.WaitForSession
4141
etc/qubes-rpc/qubes.WaitForRunningSystem
42+
etc/qubes-rpc/qubes.WaitForNetworkUplink
4243
etc/qubes-rpc/qubes.GetDate
4344
etc/qubes-suspend-module-blacklist
4445
etc/qubes/autostart/*

qubes-rpc/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ install:
7979
qubes.SuspendPostAll \
8080
qubes.WaitForSession \
8181
qubes.WaitForRunningSystem \
82+
qubes.WaitForNetworkUplink \
8283
qubes.DetachPciDevice \
8384
qubes.Backup qubes.Restore \
8485
qubes.RegisterBackupLocation \
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#!/bin/bash
2+
# Wait with a timeout for the uplink service to be started. Used on deferred netvm.
3+
set -eu
4+
5+
# shellcheck disable=SC1091
6+
. /usr/lib/qubes/init/functions
7+
iface="$(get_qubes_managed_iface)"
8+
if test -z "$iface"; then
9+
exit
10+
fi
11+
12+
i=0
13+
while test $i -le 10; do
14+
if systemctl is-active --quiet "qubes-network-uplink@$iface.service"; then
15+
have_qubesdb || exit 0
16+
gateway="$(qubesdb-read /qubes-gateway)" || true
17+
gateway6="$(qubesdb-read /qubes-gateway6)" || true
18+
# Even if there is packet loss, skip failure as the command returning
19+
# means it connected to the uplink.
20+
if test -n "$gateway"; then
21+
ping -c1 -n "$gateway" || true
22+
fi
23+
if test -n "$gateway6"; then
24+
ping -c1 -n -6 "$gateway6" || true
25+
fi
26+
exit 0
27+
fi
28+
sleep 0.3
29+
i=$((i+1))
30+
done
31+
exit 3

rpm_spec/core-agent.spec.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -903,6 +903,7 @@ rm -f %{name}-%{version}
903903
%config(noreplace) /etc/qubes-rpc/qubes.SuspendPostAll
904904
%config(noreplace) /etc/qubes-rpc/qubes.WaitForSession
905905
%config(noreplace) /etc/qubes-rpc/qubes.WaitForRunningSystem
906+
%config(noreplace) /etc/qubes-rpc/qubes.WaitForNetworkUplink
906907
%config(noreplace) /etc/qubes-rpc/qubes.DetachPciDevice
907908
%config(noreplace) /etc/qubes-rpc/qubes.Backup
908909
%config(noreplace) /etc/qubes-rpc/qubes.Restore

0 commit comments

Comments
 (0)