Index: tools/gformat.py
===================================================================
--- tools/gformat.py	(revision 9956)
+++ tools/gformat.py	(revision 9957)
@@ -3,5 +3,9 @@
 # vim:ts=2:et:sw=2:ai
 # Wireless Leiden configuration generator, based on yaml files'
+#
+# XXX: This should be rewritten to make use of the ipaddr.py library.
+#
 # Rick van der Zwet <info@rickvanderzwet.nl>
+#
 
 # Hack to make the script directory is also threated as a module search path.
@@ -616,4 +620,9 @@
 
 
+  #  WL uses an /29 to configure an interface. IP's are ordered like this: 
+  #     MasterA (.1) -- DeviceA (.2) <<>> DeviceB (.5) --- SlaveB (.6) 
+    
+  sn = lambda x: re.sub(r'(?i)^cnode','',x)
+
   # Automatic naming convention of interlinks namely 2 + remote.lower()
   for (key,value) in pool.iteritems():
@@ -621,9 +630,26 @@
       (iface_name, fqdn, ip) = value[0]
       wleiden_zone["2unused-%s.%s" % (iface_name, fqdn)] = ip
+
+      # Device DNS names
+      if 'cnode' in fqdn.lower():
+        wleiden_zone["d-at-%s.%s" % (iface_name, fqdn)] = showaddr(parseaddr(ip) + 1)
+        wleiden_cname["d-at-%s.%s" % (iface_name,sn(fqdn))] = "d-at-%s.%s" % (iface_name, fqdn)
+
     elif len(value) == 2:
       (a_iface_name, a_fqdn, a_ip) = value[0]
       (b_iface_name, b_fqdn, b_ip) = value[1]
       wleiden_zone["2%s.%s" % (b_fqdn,a_fqdn)] = a_ip
+      # Slave interface
       wleiden_zone["2%s.%s" % (a_fqdn,b_fqdn)] = b_ip
+
+      # Device DNS names
+      if 'cnode' in a_fqdn.lower() and 'cnode' in b_fqdn.lower():
+        wleiden_zone["d-at-%s.%s" % (a_iface_name, a_fqdn)] = showaddr(parseaddr(a_ip) + 1)
+        wleiden_zone["d-at-%s.%s" % (b_iface_name, b_fqdn)] = showaddr(parseaddr(a_ip) - 1)
+        wleiden_cname["d-at-%s.%s" % (a_iface_name,sn(a_fqdn))] = "d-at-%s.%s" % (a_iface_name, a_fqdn)
+        wleiden_cname["d-at-%s.%s" % (b_iface_name,sn(b_fqdn))] = "d-at-%s.%s" % (b_iface_name, b_fqdn)
+        wleiden_cname["d2%s.%s" % (sn(b_fqdn),sn(a_fqdn))] = "d-at-%s.%s" % (a_iface_name, a_fqdn)
+        wleiden_cname["d2%s.%s" % (sn(a_fqdn),sn(b_fqdn))] = "d-at-%s.%s" % (b_iface_name, b_fqdn)
+
     else:
       pool_members = [k[1] for k in value]
