
                             d Z ddlZddlZddlZddlZddlmZ ej                  j                  d      Z
ej                  j                  d      Zd Zd Zy)zDNS Reverse Map Names.    N)PY3zin-addr.arpa.z	ip6.arpa.c                    	 t         j                  j                  |       }t         j                  j                  |      rAt        r|dd D cg c]  }d|z  	 }}n|dd D cg c]  }dt        |      z   }}t        }n?t        t        j                  |      j                               D cg c]  }| }}t        }|j                          t         j                   j#                  dj%                  |      |      S c c}w c c}w c c}w # t        $ rG t        t         j                  j                  |             D cg c]  }d|z  	 nc c}w }}t        }Y w xY w)aT  Convert an IPv4 or IPv6 address in textual form into a Name object whose
    value is the reverse-map domain name of the address.

    *text*, a ``text``, is an IPv4 or IPv6 address in textual form
    (e.g. '127.0.0.1', '::1')

    Raises ``dns.exception.SyntaxError`` if the address is badly formed.

    Returns a ``dns.name.Name``.
       Nz%d.)origin)dnsipv6	inet_aton	is_mappedr   ordipv4_reverse_domainstrbinasciihexlifydecodeipv6_reverse_domain	Exception	bytearrayipv4reversename	from_textjoin)textv6bytepartsr   xs         "lib/third_party/dns/reversename.pyfrom_addressr        s:   %XX%88b!13BC9968g>gdD	)g>(F #H$4$4R$8$?$?$A BC B1Q BEC(F
 
MMO88chhuof== :> D %"+CHH,>,>t,D"EG"E$ "EG G$%sH   AD D 
D #D87D /	D
8D  D 3EEEEc                 :   | j                  t              r| j                  t              } t        | j                        }|j                          dj                  |      }t        j                  j                  t        j                  j                  |            S | j                  t              r| j                  t              } t        | j                        }|j                          g }d}t        |      }||k  r1|j                  dj                  |||dz                 |dz  }||k  r1dj                  |      }t        j                  j                  t        j                  j                  |            S t        j                  j!                  d      )a  Convert a reverse map domain name into textual address form.

    *name*, a ``dns.name.Name``, an IPv4 or IPv6 address in reverse-map name
    form.

    Raises ``dns.exception.SyntaxError`` if the name does not have a
    reverse-map form.

    Returns a ``text``.
       .r             :z"unknown reverse-map address family)is_subdomainr   
relativizelistlabelsr   r   r   r   	inet_ntoar
   r   lenappendr	   	exceptionSyntaxError)r   r)   r   r   ils         r   
to_addressr1   ?   s7    ,-23dkk"yy xx!!#(("4"4T":;;			.	/23dkk"K!eLL&1q5/23FA !e yyxx!!#(("4"4T":;;mm''(LMMr#   )__doc__r   dns.namer   dns.ipv6dns.ipv4dns._compatr   r   r   r   r   r    r1    r#   r   <module>r8      sN   $      hh((9 hh((5 >>!Nr#   