Index: /branches/cname-collision/DNSDB.pm
===================================================================
--- /branches/cname-collision/DNSDB.pm	(revision 994)
+++ /branches/cname-collision/DNSDB.pm	(revision 995)
@@ -284,4 +284,8 @@
     warn "Bad showrev_arpa setting $self->{showrev_arpa}, using default\n";
     $self->{showrev_arpa} = 'none';
+  }
+  if (!grep /$self->{coerce_cname_timestamp}/, ('none','adjust','full')) {
+    warn "Bad coerce_cname_timestamp setting $self->{coerce_cname_timestamp}, using default\n";
+    $self->{coerce_cname_timestamp} = 'none';
   }
 
@@ -2327,4 +2331,5 @@
       $cfg->{lowercase}		= $1 if /^lowercase\s*=\s*([a-z01]+)/i;
       $cfg->{showrev_arpa}	= $1 if /^showrev_arpa\s*=\s*([a-z]+)/i;
+      $cfg->{coerce_cname_timestamp}	= $1 if /^coerce_cname_timestamp\s*=\s*([a-z]+)/i;
       $cfg->{template_skip_0}	= $1 if /^template_skip_0\s*=\s*([a-z01]+)/i;
       $cfg->{template_skip_255}	= $1 if /^template_skip_255\s*=\s*([a-z01]+)/i;
Index: /branches/cname-collision/dnsdb.conf
===================================================================
--- /branches/cname-collision/dnsdb.conf	(revision 994)
+++ /branches/cname-collision/dnsdb.conf	(revision 995)
@@ -60,4 +60,12 @@
 #lowercase = 0
 
+# Variously coerce timestamp and valid-after/expiry flags onto a new/updated record if the
+# record as requested would cause a CNAME to overlap with another record.
+# adjust:  Adjust the timestamp where an expiry+valid-after would overlap
+#   - existing record expires, new record has valid-after before expiry => adjust timestamp to match existing record
+#   - existing record is valid-after, new record has expiry after valid-after => adjust timestamp to match existing record
+# none: (default) Do not make changes to timestamps to avoid overlap
+#coerce_cname_timestamp = none
+
 # Show formal .arpa zone name instead of the natural IP or CIDR for reverse zone names and records?
 # Valid values are none, zone, record, or all
