me
/
guix
Archived
1
0
Fork 0

services: dnsmasq: Add more options.

* gnu/services/dns.scm (<dnsmasq-configuration>): Add
forward-private-reverse-lookup?, strict-order? and cpe-id options.
(dnsmasq-shepherd-service): Pass added options to dnsmasq and use
match-record instead of match-lambda.
* doc/guix.texi (Guix Services): Document options added to dnsmasq.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
master
Remco van 't Veer 2022-03-23 08:07:33 +01:00 committed by Ludovic Courtès
parent 9877408d2f
commit e91c9edb20
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
2 changed files with 115 additions and 81 deletions

View File

@ -100,6 +100,7 @@ Copyright @copyright{} 2021 Josselin Poiret@*
Copyright @copyright{} 2021 Andrew Tropin@*
Copyright @copyright{} 2021 Sarah Morgensen@*
Copyright @copyright{} 2021 Josselin Poiret@*
Copyright @copyright{} 2022 Remco van 't Veer@*
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@ -28945,6 +28946,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{forward-private-reverse-lookup?} (default: @code{#t})
When false, all reverse lookups for private IP ranges are answered with
"no such domain" rather than being forwarded upstream.
@item @code{query-servers-in-order?} (default: @code{#f})
When true, dnsmasq queries the servers in the same order as they appear
in @var{servers}.
@item @code{servers} (default: @code{'()})
Specify IP address of upstream servers directly.
@ -28974,6 +28983,10 @@ disables caching.
@item @code{negative-cache?} (default: @code{#t})
When false, disable negative caching.
@item @code{cpe-id} (default: @code{#f})
If set, add a CPE (Customer-Premises Equipment) identifier to DNS
queries which are forwarded upstream.
@item @code{tftp-enable?} (default: @code{#f})
Whether to enable the built-in TFTP server.

View File

@ -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,12 @@ cache.size = 100 * MB
(default "/etc/resolv.conf")) ;string
(no-resolv? dnsmasq-configuration-no-resolv?
(default #f)) ;boolean
(forward-private-reverse-lookup?
dnsmasq-configuration-forward-private-reverse-lookup?
(default #t)) ;boolean
(query-servers-in-order?
dnsmasq-configuration-query-servers-in-order?
(default #f)) ;boolean
(servers dnsmasq-configuration-servers
(default '())) ;list of string
(addresses dnsmasq-configuration-addresses
@ -753,6 +760,8 @@ cache.size = 100 * MB
(default 150)) ;integer
(negative-cache? dnsmasq-configuration-negative-cache?
(default #t)) ;boolean
(cpe-id dnsmasq-configuration-cpe-id
(default #t)) ;string
(tftp-enable? dnsmasq-configuration-tftp-enable?
(default #f)) ;boolean
(tftp-no-fail? dnsmasq-configuration-tftp-no-fail?
@ -776,13 +785,16 @@ cache.size = 100 * MB
(tftp-unique-root dnsmasq-tftp-unique-root
(default #f))) ;"" or "ip" or "mac"
(define dnsmasq-shepherd-service
(match-lambda
(($ <dnsmasq-configuration> package
(define (dnsmasq-shepherd-service config)
(match-record config <dnsmasq-configuration>
(package
no-hosts?
port local-service? listen-addresses
resolv-file no-resolv? servers
addresses cache-size negative-cache?
resolv-file no-resolv?
forward-private-reverse-lookup? query-servers-in-order?
servers addresses
cache-size negative-cache?
cpe-id
tftp-enable? tftp-no-fail?
tftp-single-port? tftp-secure?
tftp-max tftp-mtu tftp-no-blocksize?
@ -809,6 +821,12 @@ cache.size = 100 * MB
#$@(if no-resolv?
'("--no-resolv")
'())
#$@(if forward-private-reverse-lookup?
'()
'("--bogus-priv"))
#$@(if query-servers-in-order?
'("--strict-order")
'())
#$@(map (cut format #f "--server=~a" <>)
servers)
#$@(map (cut format #f "--address=~a" <>)
@ -817,6 +835,9 @@ cache.size = 100 * MB
#$@(if negative-cache?
'()
'("--no-negcache"))
#$@(if cpe-id
(list (format #f "--add-cpe-id=~a" cpe-id))
'())
#$@(if tftp-enable?
'("--enable-tftp")
'())
@ -855,7 +876,7 @@ cache.size = 100 * MB
(format #f "--tftp-unique-root")))
'()))
#:pid-file "/run/dnsmasq.pid"))
(stop #~(make-kill-destructor))))))
(stop #~(make-kill-destructor)))))
(define (dnsmasq-activation config)
#~(begin