Update Easy_Domain to support trivial configuration of default node
[hcoop/domtool2.git] / lib / bind.dtl
index 151c410..f781633 100644 (file)
@@ -5,17 +5,28 @@ extern type dnsRecord;
 extern type srv_domain;
 {{Like <tt>domain</tt>, but may contain underscores}}
 
-extern val dnsA : host -> ip -> dnsRecord;
-extern val dnsAAAA : host -> ipv6 -> dnsRecord;
+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 <tt>vhost</tt> block.}}
+extern val wildcard : bind_pattern;
+{{A rule applies to every host within the current domain.}}
+
+extern type srv_pattern;
+{{Like <tt>bind_pattern</tt>, 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 : host -> domain -> dnsRecord;
+extern val dnsCNAME : bind_pattern -> domain -> dnsRecord;
 extern val dnsMX : int -> domain -> dnsRecord;
 extern val dnsNS : domain -> dnsRecord;
-extern val dnsSRV : srv_domain -> int -> int -> int -> domain -> dnsRecord;
-extern val dnsTXT : host -> no_newlines -> dnsRecord;
-
-extern val dnsDefaultA : ip -> dnsRecord;
-extern val dnsDefaultAAAA : ipv6 -> dnsRecord;
-extern val dnsDefaultTXT : no_newlines -> 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};