all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Bruno Victal <mirai@makinata.eu>
To: 61587@debbugs.gnu.org
Cc: Bruno Victal <mirai@makinata.eu>
Subject: [bug#61587] [PATCH v2 6/8] services: network-manager: Await for NetworkManager to finish starting up.
Date: Fri,  3 Mar 2023 22:59:11 +0000	[thread overview]
Message-ID: <b1be3ce41e076f7c87efee6ce62bb71a8fdc9182.1677884353.git.mirai@makinata.eu> (raw)
In-Reply-To: <c53676fec26ad69d8d57641b2d00c9521c0a8323.1677884352.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)

Fixes <https://issues.guix.gnu.org/60300>.

* gnu/services/networking.scm (network-manager-shepherd-service): Await for
NetworkManager to finish starting up.
---
 gnu/services/networking.scm | 35 ++++++++++++++++++++++++-----------
 1 file changed, 24 insertions(+), 11 deletions(-)

diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
index 13816327b0..76674f346a 100644
--- a/gnu/services/networking.scm
+++ b/gnu/services/networking.scm
@@ -1235,17 +1235,30 @@ (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 _
+                  (let ((pid
+                         (fork+exec-command
+                          (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="))))
+                    ;; 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 pid from running
+                    ;; fork+exec-command to shepherd.
+                    pid)))
              (stop #~(make-kill-destructor)))))))
 
 (define network-manager-service-type
-- 
2.39.1





  parent reply	other threads:[~2023-03-03 23:00 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 ` [bug#61587] [PATCH 6/8] services: network-manager: Await for NetworkManager to finish starting up Bruno Victal
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   ` Bruno Victal [this message]
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=b1be3ce41e076f7c87efee6ce62bb71a8fdc9182.1677884353.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.