unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
To: Richard Sent <richard@freakingpenguin.com>
Cc: 71561@debbugs.gnu.org, "Ludovic Courtès" <ludo@gnu.org>,
	"Florian Pelz" <pelzflorian@pelzflorian.de>,
	"Matthew Trzcinski" <matt@excalamus.com>
Subject: [bug#71561] [PATCH] services: networking: Allow dhcp-client to use a config file
Date: Mon, 17 Jun 2024 17:01:50 -0400	[thread overview]
Message-ID: <87o77zfflt.fsf@gmail.com> (raw)
In-Reply-To: <0888b6afe4003512c452fad2bc88370b007fc0ca.1718387578.git.richard@freakingpenguin.com> (Richard Sent's message of "Fri, 14 Jun 2024 13:52:58 -0400")

Hi Richard,

Richard Sent <richard@freakingpenguin.com> writes:

> * gnu/services/networking (dhcp-client-configuration): Create

Nitpick: The file name should be complete, including the extension.
Pressing 'C' on the diff's hunk while authoring a commit message in
Magit (Emacs) creates a ChangeLog entry automatically, if that helps.

> dhcp-client-configuration-config-file.

I'd perhaps reword this to:

(dhcp-client-configuration) [config-file]: New field.
(dhcp-client-configuration-config-file): New accessor.

> (dhcp-client-shepherd-service): Use the config file when invoking
> dhclient if supplied.
> * doc/guix.texi: Document it.
>
> Change-Id: I286de4ddf59c5e606bf1fe0a7510570869e62b1a
> ---
> Hi all.
>
> This patch adds support for providing dhcp-client a configuration
> file, which is a file of the form
> https://man.archlinux.org/man/dhclient.conf.5. I believe this can be
> used to resolve
> https://lists.gnu.org/archive/html/help-guix/2024-06/msg00071.html
> using the instructions at https://unix.stackexchange.com/a/399694,
> although I haven't confirmed that. Either way, adding more flexibility
> to the service is a good thing in my eyes.

I think it's a good thing to have the 'escape hatch' implemented by many
services!

>  doc/guix.texi               |  3 +++
>  gnu/services/networking.scm | 15 +++++++++++++--
>  2 files changed, 16 insertions(+), 2 deletions(-)
>
> diff --git a/doc/guix.texi b/doc/guix.texi
> index 0102fd0fad..ad67a436ea 100644
> --- a/doc/guix.texi
> +++ b/doc/guix.texi
> @@ -21035,6 +21035,9 @@ Networking Setup
>  non-loopback interfaces that can be activated.  Otherwise the DHCP
>  client listens only on the specified interfaces.
>  
> +@item @code{config-file} (default: @code{#f})
> +The configuration file for the DHCP client.
> +
>  @item @code{shepherd-requirement} (default: @code{'()})
>  @itemx @code{shepherd-provision} (default: @code{'(networking)})
>  This option can be used to provide a list of symbols naming Shepherd services
> diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
> index 378e117a86..12d8934e43 100644
> --- a/gnu/services/networking.scm
> +++ b/gnu/services/networking.scm
> @@ -91,6 +91,7 @@ (define-module (gnu services networking)
>              dhcp-client-configuration?
>              dhcp-client-configuration-package
>              dhcp-client-configuration-interfaces
> +            dhcp-client-configuration-config-file
>              dhcp-client-configuration-shepherd-provision
>              dhcp-client-configuration-shepherd-requirement
>  
> @@ -319,6 +320,8 @@ (define-record-type* <dhcp-client-configuration>
>                          (default '()))
>    (shepherd-provision   dhcp-client-configuration-shepherd-provision
>                          (default '(networking)))
> +  (config-file dhcp-client-configuration-config-file
> +               (default #f))
>    (interfaces   dhcp-client-configuration-interfaces
>                  (default 'all)))                  ;'all | list of strings
>  
> @@ -329,6 +332,7 @@ (define dhcp-client-shepherd-service
>             (requirement (dhcp-client-configuration-shepherd-requirement config))
>             (provision (dhcp-client-configuration-shepherd-provision config))
>             (interfaces (dhcp-client-configuration-interfaces config))
> +           (config-file (dhcp-client-configuration-config-file config))
>             (pid-file "/var/run/dhclient.pid"))
>         (list (shepherd-service
>                (documentation "Set up networking via DHCP.")
> @@ -364,6 +368,11 @@ (define dhcp-client-shepherd-service
>                                         (_
>                                          #~'#$interfaces))))
>  
> +                         (define config-file-args
> +                           (if #$config-file
> +                               (list "-cf" #$config-file)
> +                               '()))
> +
>                           (false-if-exception (delete-file #$pid-file))
>                           (let ((pid (fork+exec-command
>                                       ;; By default dhclient uses a
> @@ -371,8 +380,10 @@ (define dhcp-client-shepherd-service
>                                       ;; DDNS, which is incompatable with
>                                       ;; non-ISC DHCP servers; thus, pass '-I'.
>                                       ;; <https://kb.isc.org/docs/aa-01091>.
> -                                     (cons* dhclient "-nw" "-I"
> -                                            "-pf" #$pid-file ifaces))))
> +                                     `(,dhclient "-nw" "-I"
> +                                                 "-pf" ,#$pid-file
> +                                                 ,@config-file-args
> +                                                 ,@ifaces))))
>                             (and (zero? (cdr (waitpid pid)))
>                                  (read-pid-file #$pid-file)))))
>                (stop #~(make-kill-destructor))))))

Reviewed-by: Maxim Cournoyer <maxim.cournoyer@gmail>

Thanks,
Maxim




  reply	other threads:[~2024-06-17 21:04 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-14 17:52 [bug#71561] [PATCH] services: networking: Allow dhcp-client to use a config file Richard Sent
2024-06-17 21:01 ` Maxim Cournoyer [this message]
2024-06-18  0:53   ` Richard Sent
2024-06-18  0:49 ` [bug#71561] [PATCH 1/2] " Richard Sent
2024-06-18  0:49   ` [bug#71561] [PATCH 2/2] doc: Prepend ISC to DHCP client references Richard Sent
2024-06-18 12:12     ` Maxim Cournoyer
2024-06-18 12:12   ` [bug#71561] [PATCH 1/2] services: networking: Allow dhcp-client to use a config file Maxim Cournoyer
2024-06-24  2:15 ` bug#71561: [PATCH] " Maxim Cournoyer

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

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87o77zfflt.fsf@gmail.com \
    --to=maxim.cournoyer@gmail.com \
    --cc=71561@debbugs.gnu.org \
    --cc=ludo@gnu.org \
    --cc=matt@excalamus.com \
    --cc=pelzflorian@pelzflorian.de \
    --cc=richard@freakingpenguin.com \
    /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 public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).