--- a/pvl/dns/zone.py Tue Dec 17 00:42:31 2013 +0200
+++ b/pvl/dns/zone.py Tue Dec 17 00:56:42 2013 +0200
@@ -588,7 +588,7 @@
Return an FQND from parts, ending in .
"""
- fqdn = join(parts)
+ fqdn = join(*parts)
# we may be given an fqdn in parts
if not fqdn.endswith('.') :
@@ -608,10 +608,26 @@
hostbits = prefix.max_prefixlen - prefix.prefixlen
if prefix.version == 4 :
- labelbytes = int(math.ceil(hostbits / 8.0))
- labelraw = address.packed[-labelbytes:]
+ # pack into octets
+ octets = [ord(x) for x in address.packed]
- return '.'.join(reversed([str(ord(x)) for x in labelraw]))
+ # take the suffix
+ octets = octets[-int(math.ceil(hostbits / 8.0)):]
+
+ # reverse in decimal
+ return '.'.join(reversed(["{0:d}".format() for x in octets]))
+
+ elif prefix.version == 6 :
+ # pack into nibbles
+ nibbles = [((ord(x) >> 4) & 0xf, ord(x) & 0xf) for x in address.packed]
+ nibbles = [nibble for nibblepair in nibbles for nibble in nibblepair]
+
+ # take the suffix
+ nibbles = nibbles[:-(hostbits / 4)]
+
+ # reverse in hex
+ return '.'.join(reversed(["{0:x}".format(x) for x in nibbles]))
+
else :
raise ValueError("unsupported address version: %s" % (prefix, ))