X-Git-Url: https://git.hcoop.net/hcoop/domtool2.git/blobdiff_plain/f2cf641d13e1588e316468dc7f679d65f4633f26..f8e7de3e6b0f0f92edb07fc87dacb4c499849e87:/lib/bind.dtl diff --git a/lib/bind.dtl b/lib/bind.dtl index 09d71e1..f781633 100644 --- a/lib/bind.dtl +++ b/lib/bind.dtl @@ -2,14 +2,31 @@ extern type dnsRecord; -extern val dnsA : host -> ip -> dnsRecord; -extern val dnsAAAA : host -> ipv6 -> dnsRecord; -extern val dnsCNAME : host -> domain -> dnsRecord; +extern type srv_domain; +{{Like domain, but may contain underscores}} + +extern type bind_pattern; +{{Ways of describing in which cases a DNS mapping applies}} +extern val literal : host -> bind_pattern; +{{A rule applies only to this particular host.}} +extern val default : bind_pattern; +{{A rule applies directly to the domain for the current vhost block.}} +extern val wildcard : bind_pattern; +{{A rule applies to every host within the current domain.}} + +extern type srv_pattern; +{{Like bind_pattern, but for SRV and TXT records, where underscores are allowed in hostnames}} +extern val srv_literal : srv_domain -> srv_pattern; +extern val srv_default : srv_pattern; +extern val srv_wildcard : srv_pattern; + +extern val dnsA : bind_pattern -> ip -> dnsRecord; +extern val dnsAAAA : bind_pattern -> ipv6 -> dnsRecord; +extern val dnsAFSDB : domain -> dnsRecord; +extern val dnsCNAME : bind_pattern -> domain -> dnsRecord; extern val dnsMX : int -> domain -> dnsRecord; extern val dnsNS : domain -> dnsRecord; -extern val dnsTXT : host -> no_newlines -> dnsRecord; - -extern val dnsDefaultA : ip -> dnsRecord; -extern val dnsDefaultAAAA : ipv6 -> dnsRecord; +extern val dnsSRV : srv_pattern -> int -> int -> int -> domain -> dnsRecord; +extern val dnsTXT : srv_pattern -> no_newlines -> dnsRecord; extern val dns : dnsRecord -> [Domain] {TTL : int};