3 bW @sXdZddlZddlZddlZddlZddlZejjdZ ejjdZ ddZ ddZ dS) aDNS Reverse Map Names. @var ipv4_reverse_domain: The DNS IPv4 reverse-map domain, in-addr.arpa. @type ipv4_reverse_domain: dns.name.Name object @var ipv6_reverse_domain: The DNS IPv6 reverse-map domain, ip6.arpa. @type ipv6_reverse_domain: dns.name.Name object Nz in-addr.arpa.z ip6.arpa.c Csyztjj|}tjj|rXtjd kr/sz from_address.. NcSsg|]}dt|qS)z%d)ord)rrrrrr1scSsg|]}|qSrr)rxrrrr4scSsg|] }d|qS)z%dr)rrrrrr7s.)origin)r)dnsipv6 inet_atonZ is_mappedsys version_infoipv4_reverse_domainstrbinasciiZhexlifydecodeipv6_reverse_domain Exception bytearrayipv4reversename from_textjoin)textZv6partsr rrr from_address#s    r cCs|jtrD|jt}t|j}|jdj|}tjj tjj |S|jt r|jt }t|j}|jg}d}t |}x0||kr|j dj|||d|d7}q|Wdj|}tjj tjj |StjjddS)zConvert a reverse map domain name into textual address form. @param name: an IPv4 or IPv6 address in reverse-map form. @type name: dns.name.Name object @rtype: str .r:z"unknown reverse-map address familyN)Z is_subdomainrZ relativizelistlabelsrrr rZ inet_ntoarrlenappendrZ exception SyntaxError)rr&rrilrrr to_address>s&          r,) __doc__rrZdns.namer Zdns.ipv6Zdns.ipv4rrrrr r,rrrrs