diff options
Diffstat (limited to 'gnu/services/dns.scm')
-rw-r--r-- | gnu/services/dns.scm | 87 |
1 files changed, 62 insertions, 25 deletions
diff --git a/gnu/services/dns.scm b/gnu/services/dns.scm index 1ef754b360..5f37cb0782 100644 --- a/gnu/services/dns.scm +++ b/gnu/services/dns.scm @@ -163,30 +163,40 @@ (define-record-type* <knot-zone-configuration> knot-zone-configuration make-knot-zone-configuration knot-zone-configuration? - (domain knot-zone-configuration-domain - (default "")) - (file knot-zone-configuration-file - (default "")) ; the file where this zone is saved. - (zone knot-zone-configuration-zone - (default (zone-file))) ; initial content of the zone file - (master knot-zone-configuration-master - (default '())) - (ddns-master knot-zone-configuration-ddns-master - (default #f)) - (notify knot-zone-configuration-notify - (default '())) - (acl knot-zone-configuration-acl - (default '())) - (semantic-checks? knot-zone-configuration-semantic-checks? - (default #f)) - (disable-any? knot-zone-configuration-disable-any? - (default #f)) - (zonefile-sync knot-zone-configuration-zonefile-sync - (default 0)) - (dnssec-policy knot-zone-configuration-dnssec-policy - (default #f)) - (serial-policy knot-zone-configuration-serial-policy - (default 'increment))) + (domain knot-zone-configuration-domain + (default "")) + (file knot-zone-configuration-file + (default "")) ; the file where this zone is saved. + (zone knot-zone-configuration-zone + (default (zone-file))) ; initial content of the zone file + (master knot-zone-configuration-master + (default '())) + (ddns-master knot-zone-configuration-ddns-master + (default #f)) + (notify knot-zone-configuration-notify + (default '())) + (acl knot-zone-configuration-acl + (default '())) + (semantic-checks? knot-zone-configuration-semantic-checks? + (default #f)) + (disable-any? knot-zone-configuration-disable-any? + (default #f)) + (zonefile-sync knot-zone-configuration-zonefile-sync + (default 0)) + (zonefile-load knot-zone-configuration-zonefile-load + (default #f)) + (journal-content knot-zone-configuration-journal-content + (default #f)) + (max-journal-usage knot-zone-configuration-max-journal-usage + (default #f)) + (max-journal-depth knot-zone-configuration-max-journal-depth + (default #f)) + (max-zone-size knot-zone-configuration-max-zone-size + (default #f)) + (dnssec-policy knot-zone-configuration-dnssec-policy + (default #f)) + (serial-policy knot-zone-configuration-serial-policy + (default 'increment))) (define-record-type* <knot-remote-configuration> knot-remote-configuration make-knot-remote-configuration @@ -207,6 +217,8 @@ (default knot)) (run-directory knot-configuration-run-directory (default "/var/run/knot")) + (includes knot-configuration-includes + (default '())) (listen-v4 knot-configuration-listen-v4 (default "0.0.0.0")) (listen-v6 knot-configuration-listen-v6 @@ -296,6 +308,8 @@ (error-out "knot configuration field must be a package.")) (unless (string? (knot-configuration-run-directory config)) (error-out "run-directory must be a string.")) + (unless (list? (knot-configuration-includes config)) + (error-out "includes must be a list of strings or file-like objects.")) (unless (list? (knot-configuration-keys config)) (error-out "keys must be a list of knot-key-configuration.")) (for-each (lambda (key) (verify-knot-key-configuration key)) @@ -332,7 +346,7 @@ (fold (lambda (x1 x2) (string-append (if (symbol? x1) (symbol->string x1) x1) ", " (if (symbol? x2) (symbol->string x2) x2))) - (car l) (cdr l)) + (if (symbol? (car l)) (symbol->string (car l)) (car l)) (cdr l)) "]")))) (define (knot-acl-config acls) @@ -490,6 +504,12 @@ (acl (list #$@(knot-zone-configuration-acl zone))) (semantic-checks? #$(knot-zone-configuration-semantic-checks? zone)) (disable-any? #$(knot-zone-configuration-disable-any? zone)) + (zonefile-sync #$(knot-zone-configuration-zonefile-sync zone)) + (zonefile-load '#$(knot-zone-configuration-zonefile-load zone)) + (journal-content #$(knot-zone-configuration-journal-content zone)) + (max-journal-usage #$(knot-zone-configuration-max-journal-usage zone)) + (max-journal-depth #$(knot-zone-configuration-max-journal-depth zone)) + (max-zone-size #$(knot-zone-configuration-max-zone-size zone)) (dnssec-policy #$(knot-zone-configuration-dnssec-policy zone)) (serial-policy '#$(knot-zone-configuration-serial-policy zone))) (format #t " - domain: ~a\n" domain) @@ -516,6 +536,20 @@ (knot-zone-configuration-acl zone)))) (format #t " semantic-checks: ~a\n" (if semantic-checks? "on" "off")) (format #t " disable-any: ~a\n" (if disable-any? "on" "off")) + (if zonefile-sync + (format #t " zonefile-sync: ~a\n" zonefile-sync)) + (if zonefile-load + (format #t " zonefile-load: ~a\n" + (symbol->string zonefile-load))) + (if journal-content + (format #t " journal-content: ~a\n" + (symbol->string journal-content))) + (if max-journal-usage + (format #t " max-journal-usage: ~a\n" max-journal-usage)) + (if max-journal-depth + (format #t " max-journal-depth: ~a\n" max-journal-depth)) + (if max-zone-size + (format #t " max-zone-size: ~a\n" max-zone-size)) (if dnssec-policy (begin (format #t " dnssec-signing: on\n") @@ -529,6 +563,9 @@ #~(begin (call-with-output-file #$output (lambda (port) + (for-each (lambda (inc) + (format port "include: ~a\n" inc)) + '#$(knot-configuration-includes config)) (format port "server:\n") (format port " rundir: ~a\n" #$(knot-configuration-run-directory config)) (format port " user: knot\n") |