+;;; Hostname abbreviations.
+
+(defvar *abbrev-subdomain*
+ (make-domain-name :labels '("abbrev") :absolutep nil))
+(defparameter *abbrev-used* (make-hash-table :test #'equal))
+
+(defzoneparse :abbrev (name data rec :zname zname)
+ (let* ((domain (zone-parse-host data
+ (domain-name-concat *abbrev-subdomain*
+ zname)))
+ (key (princ-to-string domain))
+ (existing (gethash key *abbrev-used*)))
+ (when existing
+ (error "Abbrev collision for ~A between ~A and ~A."
+ domain existing name))
+ (setf (gethash key *abbrev-used*) name)
+ (rec :name domain
+ :type :cname
+ :data name)))
+
+;;;--------------------------------------------------------------------------