???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................3
bW                 @   sX   d Z ddlZddlZddlZddlZddlZejjdZ	ejjdZ
dd Zdd ZdS )	a  DNS 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             C   s   yzt jj| }t jj|rXtjdkr<dd |dd D }ndd |dd D }t}n dd ttj	|j
 D }t}W n2 tk
r   dd tt jj| D }t}Y nX |j  t jjd	j||d
S )a  Convert an IPv4 or IPv6 address in textual form into a Name object whose
    value is the reverse-map domain name of the address.
    @param text: an IPv4 or IPv6 address in textual form (e.g. '127.0.0.1',
    '::1')
    @type text: str
    @rtype: dns.name.Name object
       c             S   s   g | ]}d | qS )z%d ).0byter   r   !/usr/lib/python3.6/reversename.py
<listcomp>/   s    z from_address.<locals>.<listcomp>   Nc             S   s   g | ]}d t | qS )z%d)ord)r   r   r   r   r   r   1   s    c             S   s   g | ]}|qS r   r   )r   xr   r   r   r   4   s    c             S   s   g | ]}d | qS )z%dr   )r   r   r   r   r   r   7   s   .)origin)r   )dnsipv6	inet_atonZ	is_mappedsysversion_infoipv4_reverse_domainstrbinasciiZhexlifydecodeipv6_reverse_domain	Exception	bytearrayipv4reversename	from_textjoin)textZv6partsr   r   r   r   from_address#   s    

r    c             C   s   | j trD| 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|}x0||k r|jdj|||d   |d7 }q|W dj|}tjj	tjj
|S tjjddS )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_subdomainr   Z
relativizelistlabelsr   r   r   r   Z	inet_ntoar   r   lenappendr   Z	exceptionSyntaxError)r   r&   r   r   ilr   r   r   
to_address>   s&    








r,   )__doc__r   r   Zdns.namer   Zdns.ipv6Zdns.ipv4r   r   r   r   r    r,   r   r   r   r   <module>   s   