3 ¢báWï ã@sXdZddlZddlZddlZddlZddlZejjdƒZ ejjdƒZ dd„Z dd„Z 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 CsÌyztjj|ƒ}tjj|ƒrXtjd kr/sz from_address..é NcSsg|]}dt|ƒ‘qS)z%d)Úord)rrrrrr1scSsg|]}|‘qSrr)rÚxrrrr4scSsg|] }d|‘qS)z%dr)rrrrrr7sÚ.)Úorigin)r)ÚdnsÚipv6Ú inet_atonZ is_mappedÚsysÚ version_infoÚipv4_reverse_domainÚstrÚbinasciiZhexlifyÚdecodeÚipv6_reverse_domainÚ ExceptionÚ bytearrayÚipv4ÚreverseÚnameÚ from_textÚjoin)ÚtextZv6Úpartsr rrrÚ from_address#s    r cCsÚ|jtƒrD|jtƒ}t|jƒ}|jƒdj|ƒ}tjj tjj |ƒƒS|jt ƒrÊ|jt ƒ}t|jƒ}|jƒg}d}t |ƒ}x0||krª|j dj|||d…ƒƒ|d7}q|Wdj|ƒ}tjj tjj |ƒƒStjjdƒ‚dS)z´Convert 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 relativizeÚlistÚlabelsrrr rZ inet_ntoarrÚlenÚappendrZ exceptionÚ SyntaxError)rr&rrÚiÚlrrrÚ to_address>s&          r,) Ú__doc__rrZdns.namer Zdns.ipv6Zdns.ipv4rrrrr r,rrrrÚs