X-Git-Url: https://git.hcoop.net/hcoop/domtool2.git/blobdiff_plain/6ae327f88a6be8efd02cfe4b713444f9f3ac2672..66d70ba27db23d3de71198ca25f99b5f7a8fe2d0:/lib/bind.dtl
diff --git a/lib/bind.dtl b/lib/bind.dtl
index 69612d0..f781633 100644
--- a/lib/bind.dtl
+++ b/lib/bind.dtl
@@ -2,9 +2,31 @@
extern type dnsRecord;
-extern val dnsA : host -> ip -> 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 dnsSRV : srv_pattern -> int -> int -> int -> domain -> dnsRecord;
+extern val dnsTXT : srv_pattern -> no_newlines -> dnsRecord;
extern val dns : dnsRecord -> [Domain] {TTL : int};