Message ID | 20230310150055.3728-1-sarg@sarg.org.ru |
---|---|
State | New |
Headers | show |
Series | [bug#61956,v5] services: dns: Extend dnsmasq-configuration. | expand |
On 2023-03-10 16:00, Sergey Trofimov wrote: > * gnu/service/dns.scm: (<dnsmasq-configuration>)[servers-file]: Add. > (<dnsmasq-configuration>)[tftp-secure?]: Fix typo in parameter name. > * doc/guix.texi: Document (<dnsmasq-configuration>)[servers-file]. > --- > doc/guix.texi | 4 ++++ > gnu/services/dns.scm | 11 ++++++++--- > 2 files changed, 12 insertions(+), 3 deletions(-) > > diff --git a/doc/guix.texi b/doc/guix.texi > index 6671ba9305..debff95466 100644 > --- a/doc/guix.texi > +++ b/doc/guix.texi > @@ -31502,6 +31502,10 @@ in @var{servers}. > @item @code{servers} (default: @code{'()}) > Specify IP address of upstream servers directly. > > +@item @code{servers-file} (default: @code{#f}) > +Specify file containing upstream servers. This file is re-read when dnsmasq receives SIGHUP. > +Could be either a string or a file-like object. > + > @item @code{addresses} (default: @code{'()}) > For each entry, specify an IP address to return for any host in the > given domains. Queries in the domains are never forwarded and always > diff --git a/gnu/services/dns.scm b/gnu/services/dns.scm > index 32fb8c0664..aaa2b6e47f 100644 > --- a/gnu/services/dns.scm > +++ b/gnu/services/dns.scm > @@ -754,6 +754,8 @@ (define-record-type* <dnsmasq-configuration> > (default #f)) ;boolean > (servers dnsmasq-configuration-servers > (default '())) ;list of string > + (servers-file dnsmasq-configuration-servers-file > + (default #f)) ;string|file-like > (addresses dnsmasq-configuration-addresses > (default '())) ;list of string > (cache-size dnsmasq-configuration-cache-size > @@ -792,7 +794,7 @@ (define (dnsmasq-shepherd-service config) > port local-service? listen-addresses > resolv-file no-resolv? > forward-private-reverse-lookup? query-servers-in-order? > - servers addresses > + servers addresses servers-file > cache-size negative-cache? > cpe-id > tftp-enable? tftp-no-fail? > @@ -805,7 +807,7 @@ (define (dnsmasq-shepherd-service config) > (requirement '(networking)) > (documentation "Run the dnsmasq DNS server.") > (start #~(make-forkexec-constructor > - '(#$(file-append package "/sbin/dnsmasq") > + (list #$(file-append package "/sbin/dnsmasq") > "--keep-in-foreground" > "--pid-file=/run/dnsmasq.pid" > #$@(if no-hosts? > @@ -827,6 +829,9 @@ (define (dnsmasq-shepherd-service config) > #$@(if query-servers-in-order? > '("--strict-order") > '()) > + #$@(if servers-file > + (list #~(string-append "--servers-file=" #$servers-file)) > + '()) > #$@(map (cut format #f "--server=~a" <>) > servers) > #$@(map (cut format #f "--address=~a" <>) > @@ -848,7 +853,7 @@ (define (dnsmasq-shepherd-service config) > '("--tftp-single-port") > '()) > #$@(if tftp-secure? > - '("--tftp-secure?") > + '("--tftp-secure") > '()) > #$@(if tftp-max > (list (format #f "--tftp-max=~a" tftp-max)) Hi Sergey! Thank you for the patch, applied, realigned make-forkexec-constructor arguments, pushed as d1edb26388ca4dab4b435a686cd059d97c113c3e.
diff --git a/doc/guix.texi b/doc/guix.texi index 6671ba9305..debff95466 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -31502,6 +31502,10 @@ in @var{servers}. @item @code{servers} (default: @code{'()}) Specify IP address of upstream servers directly. +@item @code{servers-file} (default: @code{#f}) +Specify file containing upstream servers. This file is re-read when dnsmasq receives SIGHUP. +Could be either a string or a file-like object. + @item @code{addresses} (default: @code{'()}) For each entry, specify an IP address to return for any host in the given domains. Queries in the domains are never forwarded and always diff --git a/gnu/services/dns.scm b/gnu/services/dns.scm index 32fb8c0664..aaa2b6e47f 100644 --- a/gnu/services/dns.scm +++ b/gnu/services/dns.scm @@ -754,6 +754,8 @@ (define-record-type* <dnsmasq-configuration> (default #f)) ;boolean (servers dnsmasq-configuration-servers (default '())) ;list of string + (servers-file dnsmasq-configuration-servers-file + (default #f)) ;string|file-like (addresses dnsmasq-configuration-addresses (default '())) ;list of string (cache-size dnsmasq-configuration-cache-size @@ -792,7 +794,7 @@ (define (dnsmasq-shepherd-service config) port local-service? listen-addresses resolv-file no-resolv? forward-private-reverse-lookup? query-servers-in-order? - servers addresses + servers addresses servers-file cache-size negative-cache? cpe-id tftp-enable? tftp-no-fail? @@ -805,7 +807,7 @@ (define (dnsmasq-shepherd-service config) (requirement '(networking)) (documentation "Run the dnsmasq DNS server.") (start #~(make-forkexec-constructor - '(#$(file-append package "/sbin/dnsmasq") + (list #$(file-append package "/sbin/dnsmasq") "--keep-in-foreground" "--pid-file=/run/dnsmasq.pid" #$@(if no-hosts? @@ -827,6 +829,9 @@ (define (dnsmasq-shepherd-service config) #$@(if query-servers-in-order? '("--strict-order") '()) + #$@(if servers-file + (list #~(string-append "--servers-file=" #$servers-file)) + '()) #$@(map (cut format #f "--server=~a" <>) servers) #$@(map (cut format #f "--address=~a" <>) @@ -848,7 +853,7 @@ (define (dnsmasq-shepherd-service config) '("--tftp-single-port") '()) #$@(if tftp-secure? - '("--tftp-secure?") + '("--tftp-secure") '()) #$@(if tftp-max (list (format #f "--tftp-max=~a" tftp-max))