[bug#54352] services: dnsmasq: Add more options.
Commit Message
* gnu/services/dns.scm (<dnsmasq-configuration>): Add bogus-priv?,
strict-order? and add-cpe-id options.
(dnsmasq-shepherd-service): Pass bogus-priv, strict-order and add-cpe-id
to the service.
* doc/guix.texi (Guix Services): Document options added to dnsmasq.
---
doc/guix.texi | 12 ++++++++++++
gnu/services/dns.scm | 20 +++++++++++++++++---
2 files changed, 29 insertions(+), 3 deletions(-)
Comments
Hi,
Remco van 't Veer <remco@remworks.net> skribis:
> * gnu/services/dns.scm (<dnsmasq-configuration>): Add bogus-priv?,
> strict-order? and add-cpe-id options.
> (dnsmasq-shepherd-service): Pass bogus-priv, strict-order and add-cpe-id
> to the service.
> * doc/guix.texi (Guix Services): Document options added to dnsmasq.
I don’t use dnsmasq, but overall that LGTM, and a welcome addition.
Nitpick:
> + (bogus-priv? dnsmasq-configuration-bogus-priv?
> + (default #f)) ;boolean
I’d rather avoid the abbreviation and use something more descriptive,
even if that doesn’t match the name used in the config file. Maybe
something like ‘forward-private-reverse-lookup?’ (I’m making it up based
on the doc you wrote.) WDYT?
> + (add-cpe-id dnsmasq-configuration-add-cpe-id
> + (default #t)) ;string
Maybe ‘additional-cpe-id’ or ‘extra-cpe-id’ or ‘cpe-id’?
> (($ <dnsmasq-configuration> package
> no-hosts?
> port local-service? listen-addresses
> - resolv-file no-resolv? servers
> - addresses cache-size negative-cache?
> + resolv-file no-resolv? bogus-priv?
> + strict-order? servers addresses cache-size
> + negative-cache? add-cpe-id
Not a blocker for this patch, but we should change that to
‘match-record’, which is less error-prone.
Let me know what you think; you can send an updated patch if the
suggestions make sense to you.
Thanks!
Ludo’.
Thank you Ludovic for your feedback! I've applied all of your
suggestions and am especially happy about match-record because I had
some trouble with match-lambda (did not realise at first order matters).
I'll post a v2 immediately.
Cheers,
R.
@@ -28945,6 +28945,14 @@ The file to read the IP address of the upstream nameservers from.
@item @code{no-resolv?} (default: @code{#f})
When true, don't read @var{resolv-file}.
+@item @code{bogus-priv?} (default: @code{#f})
+When true, all reverse lookups for private IP ranges are answered with
+"no such domain" rather than being forwarded upstream.
+
+@item @code{strict-order?} (default: @code{#f})
+When true, forces dnsmasq to try each query with each server strictly in
+the order they appear in @var{servers}.
+
@item @code{servers} (default: @code{'()})
Specify IP address of upstream servers directly.
@@ -28974,6 +28982,10 @@ disables caching.
@item @code{negative-cache?} (default: @code{#t})
When false, disable negative caching.
+@item @code{add-cpe-id} (default: @code{#f})
+If set, add an arbitrary identifying string to DNS queries which are
+forwarded upstream.
+
@item @code{tftp-enable?} (default: @code{#f})
Whether to enable the built-in TFTP server.
@@ -3,6 +3,7 @@
;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2020 Pierre Langlois <pierre.langlois@gmx.com>
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
+;;; Copyright © 2022 Remco van 't Veer <remco@remworks.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -745,6 +746,10 @@ (define-record-type* <dnsmasq-configuration>
(default "/etc/resolv.conf")) ;string
(no-resolv? dnsmasq-configuration-no-resolv?
(default #f)) ;boolean
+ (bogus-priv? dnsmasq-configuration-bogus-priv?
+ (default #f)) ;boolean
+ (strict-order? dnsmasq-configuration-strict-order?
+ (default #f)) ;boolean
(servers dnsmasq-configuration-servers
(default '())) ;list of string
(addresses dnsmasq-configuration-addresses
@@ -752,7 +757,9 @@ (define-record-type* <dnsmasq-configuration>
(cache-size dnsmasq-configuration-cache-size
(default 150)) ;integer
(negative-cache? dnsmasq-configuration-negative-cache?
- (default #t)) ;boolean
+ (default #t)) ;boolean
+ (add-cpe-id dnsmasq-configuration-add-cpe-id
+ (default #t)) ;string
(tftp-enable? dnsmasq-configuration-tftp-enable?
(default #f)) ;boolean
(tftp-no-fail? dnsmasq-configuration-tftp-no-fail?
@@ -781,8 +788,9 @@ (define dnsmasq-shepherd-service
(($ <dnsmasq-configuration> package
no-hosts?
port local-service? listen-addresses
- resolv-file no-resolv? servers
- addresses cache-size negative-cache?
+ resolv-file no-resolv? bogus-priv?
+ strict-order? servers addresses cache-size
+ negative-cache? add-cpe-id
tftp-enable? tftp-no-fail?
tftp-single-port? tftp-secure?
tftp-max tftp-mtu tftp-no-blocksize?
@@ -809,6 +817,9 @@ (define dnsmasq-shepherd-service
#$@(if no-resolv?
'("--no-resolv")
'())
+ #$@(if bogus-priv?
+ '("--bogus-priv")
+ '())
#$@(map (cut format #f "--server=~a" <>)
servers)
#$@(map (cut format #f "--address=~a" <>)
@@ -817,6 +828,9 @@ (define dnsmasq-shepherd-service
#$@(if negative-cache?
'()
'("--no-negcache"))
+ #$@(if add-cpe-id
+ (list (format #f "--add-cpe-id=~a" add-cpe-id))
+ '())
#$@(if tftp-enable?
'("--enable-tftp")
'())