From: Bruno Victal <mirai@makinata.eu>
To: 61587@debbugs.gnu.org
Cc: Bruno Victal <mirai@makinata.eu>
Subject: [bug#61587] [PATCH 6/8] services: network-manager: Await for NetworkManager to finish starting up.
Date: Fri, 17 Feb 2023 21:14:57 +0000 [thread overview]
Message-ID: <502d6efbde6d7e372ab6bc414fbbe2c065c23b4e.1676667941.git.mirai@makinata.eu> (raw)
In-Reply-To: <cover.1676667941.git.mirai@makinata.eu>
This is similar to its NetworkManager-wait-online.service systemd counterpart,
with the main difference being that we handle it all in 'networking symbol, rather than
introduce a new 'networking-online symbol. (see discussion #47253)
As a result of this change, with opensmtpd-service-type as an example,
manual 'herd restart smtpd' after system bootups are no longer required
when opensmtpd is configured with a smtpd.conf containing non-loopback interfaces.
(this issue is described in more detail at #60300)
Addresses #60300.
Supersedes #47253. (Note: Shepherd no longer blocks since shepherd 0.9.3)
* gnu/services/networking.scm (network-manager-shepherd-service): Await for
NetworkManager to finish starting up.
---
gnu/services/networking.scm | 36 +++++++++++++++++++++++++-----------
1 file changed, 25 insertions(+), 11 deletions(-)
diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
index 13816327b0..55bc2cf362 100644
--- a/gnu/services/networking.scm
+++ b/gnu/services/networking.scm
@@ -1235,17 +1235,31 @@ (define (network-manager-shepherd-service config)
;; TODO: iwd? is deprecated and should be passed
;; with shepherd-requirement, remove later.
,@(if iwd? '(iwd) '())))
- (start #~(make-forkexec-constructor
- (list (string-append #$network-manager
- "/sbin/NetworkManager")
- (string-append "--config=" #$conf)
- "--no-daemon")
- #:environment-variables
- (list (string-append "NM_VPN_PLUGIN_DIR=" #$vpn
- "/lib/NetworkManager/VPN")
- ;; Override non-existent default users
- "NM_OPENVPN_USER="
- "NM_OPENVPN_GROUP=")))
+ (start
+ #~(lambda args
+ (let ((constructor
+ (apply
+ (make-forkexec-constructor
+ (list #$(file-append network-manager
+ "/sbin/NetworkManager")
+ (string-append "--config=" #$conf)
+ "--no-daemon")
+ #:environment-variables
+ (list (string-append "NM_VPN_PLUGIN_DIR=" #$vpn
+ "/lib/NetworkManager/VPN")
+ ;; Override non-existent default users
+ "NM_OPENVPN_USER="
+ "NM_OPENVPN_GROUP=")) args)))
+ ;; XXX: Despite the "online" name, this doesn't guarantee
+ ;; WAN connectivity, it merely waits for NetworkManager
+ ;; to finish starting-up. This is required otherwise
+ ;; services will fail since the network interfaces be
+ ;; absent until NetworkManager finishes setting them up.
+ (system* #$(file-append network-manager "/bin/nm-online")
+ "--wait-for-startup" "--quiet")
+ ;; XXX: Finally, return the value from running
+ ;; make-forkexec-constructor to shepherd.
+ constructor)))
(stop #~(make-kill-destructor)))))))
(define network-manager-service-type
--
2.39.1
next prev parent reply other threads:[~2023-02-17 21:17 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-17 21:12 [bug#61587] [PATCH 0/8] networking services refactoring Bruno Victal
2023-02-17 21:14 ` [bug#61587] [PATCH 1/8] services: network-manager: Add 'shepherd-requirement' field Bruno Victal
2023-02-17 21:14 ` [bug#61587] [PATCH 2/8] services: network-manager: Deprecate 'iwd?' field Bruno Victal
2023-02-17 21:14 ` [bug#61587] [PATCH 3/8] services: connman: Use match-record and export accessors Bruno Victal
2023-02-17 21:14 ` [bug#61587] [PATCH 4/8] services: connman: Add 'shepherd-requirement' field Bruno Victal
2023-02-17 21:14 ` [bug#61587] [PATCH 5/8] services: connman: Deprecate 'iwd?' field Bruno Victal
2023-02-17 21:14 ` Bruno Victal [this message]
2023-03-03 17:13 ` [bug#61587] [PATCH 0/8] networking services refactoring Ludovic Courtès
2023-03-03 17:26 ` Bruno Victal
2023-02-17 21:14 ` [bug#61587] [PATCH 7/8] services: network-manager: Set service canonical-name to NetworkManager Bruno Victal
2023-03-03 17:15 ` [bug#61587] [PATCH 0/8] networking services refactoring Ludovic Courtès
2023-03-03 17:20 ` Bruno Victal
2023-03-06 15:20 ` Ludovic Courtès
2023-02-17 21:14 ` [bug#61587] [PATCH 8/8] services: connman: Set service canonical-name to connman Bruno Victal
2023-03-03 22:59 ` [bug#61587] [PATCH v2 1/8] services: network-manager: Add 'shepherd-requirement' field Bruno Victal
2023-03-03 22:59 ` [bug#61587] [PATCH v2 2/8] services: network-manager: Deprecate 'iwd?' field Bruno Victal
2023-03-03 22:59 ` [bug#61587] [PATCH v2 3/8] services: connman: Use match-record and export accessors Bruno Victal
2023-03-03 22:59 ` [bug#61587] [PATCH v2 4/8] services: connman: Add 'shepherd-requirement' field Bruno Victal
2023-03-03 22:59 ` [bug#61587] [PATCH v2 5/8] services: connman: Deprecate 'iwd?' field Bruno Victal
2023-03-03 22:59 ` [bug#61587] [PATCH v2 6/8] services: network-manager: Await for NetworkManager to finish starting up Bruno Victal
2023-03-03 22:59 ` [bug#61587] [PATCH v2 7/8] services: network-manager: Set service canonical-name to NetworkManager Bruno Victal
2023-03-03 22:59 ` [bug#61587] [PATCH v2 8/8] services: connman: Set service canonical-name to connman Bruno Victal
2023-03-07 10:01 ` [bug#61587] [PATCH 0/8] networking services refactoring Ludovic Courtès
2023-03-07 10:04 ` Ludovic Courtès
2023-03-07 12:43 ` [bug#61587] [PATCH v3 1/8] services: network-manager: Add 'shepherd-requirement' field Bruno Victal
2023-03-07 12:43 ` [bug#61587] [PATCH v3 2/8] services: network-manager: Deprecate 'iwd?' field Bruno Victal
2023-03-07 12:44 ` [bug#61587] [PATCH v3 3/8] services: connman: Use match-record and export accessors Bruno Victal
2023-03-07 12:44 ` [bug#61587] [PATCH v3 4/8] services: connman: Add 'shepherd-requirement' field Bruno Victal
2023-03-07 12:44 ` [bug#61587] [PATCH v3 5/8] services: connman: Deprecate 'iwd?' field Bruno Victal
2023-03-07 12:44 ` [bug#61587] [PATCH v3 6/8] services: network-manager: Await for NetworkManager to finish starting up Bruno Victal
2023-03-07 12:44 ` [bug#61587] [PATCH v3 7/8] services: network-manager: Set service canonical-name to NetworkManager Bruno Victal
2023-03-07 12:44 ` [bug#61587] [PATCH v3 8/8] services: connman: Set service canonical-name to connman Bruno Victal
2023-03-10 13:21 ` bug#61587: [PATCH v3 1/8] services: network-manager: Add 'shepherd-requirement' field Ludovic Courtès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=502d6efbde6d7e372ab6bc414fbbe2c065c23b4e.1676667941.git.mirai@makinata.eu \
--to=mirai@makinata.eu \
--cc=61587@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.