Viewing File: /usr/lib/python3.6/site-packages/netaddr/strategy/__pycache__/ipv4.cpython-36.opt-1.pyc

3

��]��@s�dZddlZddlZddlmZejd8kr<ddl	m
ZmZnddlm
ZmZddl
mZmZmZddlmZmZmZmZmZmZmZdd	l m!Z!d
Z"dZ#dZ$d
Z%eZ&dZ'dZ(dZ)de"dZ*e"e#Z+de#dZ,e-dd�e.de"d�D��Z/e-dd�e.de"d�D��Z0e-dd�e.de"d�D��Z1e-dd�e.de"d�D��Z2d9dd�Z3d:dd�Z4d;dd�Z5dd�Z6d d!�Z7d"d#�Z8d$d%�Zd&d'�Z9d(d)�Z:d*d+�Zd,d-�Zd<d.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Z;dS)=zIPv4 address logic.�N)�	inet_aton�win32�cygwin)�	inet_pton�AF_INET)�AddrFormatError�ZEROFILL�	INET_PTON)�valid_words�
valid_bits�bits_to_int�int_to_bits�	valid_bin�
int_to_bin�
bin_to_int)�	_str_type� �z%d�.ZIPv4��
��cCs$g|]}|tdt|dAf�qS)rr)�max_int�width)�.0�i�r�/usr/lib/python3.6/ipv4.py�
<listcomp>BsrcCs$g|]}tdt|dA|f�qS)rr)rr)rrrrrrFscCs g|]}|dt|df�qS)rr)r)rrrrrrJscCs g|]}dt|d|f�qS)rr)r)rrrrrrNscCst|dkrtd��d}|t@r6djdd�|jd�D��}y |t@rLtt|�nt|�Wntk
rnd}YnX|S)aP
    :param addr: An IPv4 address in presentation (string) format.

    :param flags: decides which rules are applied to the interpretation of the
        addr value. Supported constants are INET_PTON and ZEROFILL. See the
        netaddr.core docs for details.

    :return: ``True`` if IPv4 address is valid, ``False`` otherwise.
    �z Empty strings are not supported!TrcSsg|]}dt|��qS)z%d)�int)rrrrrraszvalid_str.<locals>.<listcomp>F)	rr�join�splitr	�
_inet_ptonr�
_inet_aton�	Exception)�addr�flagsZvalidityrrr�	valid_strQs

r)cCs~|t@r"djdd�|jd�D��}y6|t@rBtjdtt|��dStjdt|��dSWn t	k
rxt
d|��YnXdS)aP
    :param addr: An IPv4 dotted decimal address in string form.

    :param flags: decides which rules are applied to the interpretation of the
        addr value. Supported constants are INET_PTON and ZEROFILL. See the
        netaddr.core docs for details.

    :return: The equivalent unsigned integer for a given IPv4 address.
    rcSsg|]}dt|��qS)z%d)r!)rrrrrryszstr_to_int.<locals>.<listcomp>z>Irz&%r is not a valid IPv4 address string!N)rr"r#r	�_struct�unpackr$rr%r&r)r'r(rrr�
str_to_intns
r,cCsPd|kotknr@d|d?|d?d@|d?d@|d@fStd|��dS)	z�
    :param int_val: An unsigned integer.

    :param dialect: (unused) Any value passed in is ignored.

    :return: The IPv4 presentation (string) format address equivalent to the
        unsigned integer provided.
    rz%d.%d.%d.%d���rz*%r is not a valid 32-bit unsigned integer!N)r�
ValueError)�int_valZdialectrrr�
int_to_str�s	

r2cCs4dd�t|�D�}|j�|jdddg�dj|�S)z�
    :param int_val: An unsigned integer.

    :return: The reverse DNS lookup for an IPv4 address in network byte
        order integer form.
    cSsg|]}d|�qS)z%dr)rrrrrr�szint_to_arpa.<locals>.<listcomp>zin-addrZarpar r)�int_to_words�reverse�extendr")r1�wordsrrr�int_to_arpa�sr7cCstjd|�S)z�
    :param int_val: the integer to be packed.

    :return: a packed string that is equivalent to value represented by an
    unsigned integer.
    z>I)r*�pack)r1rrr�
int_to_packed�sr9cCstjd|�dS)a
    :param packed_int: a packed string containing an unsigned integer.
        It is assumed that string is packed in network byte order.

    :return: An unsigned integer equivalent to value of network address
        represented by packed binary string.
    z>Ir)r*r+)Z
packed_intrrr�
packed_to_int�sr:cCst|tt�S)N)�_valid_words�	word_size�	num_words)r6rrrr
�sr
cCsHd|kotkns$td|��|d?|d?d@|d?d@|d@fS)z�
    :param int_val: An unsigned integer.

    :return: An integer word (octet) sequence that is equivalent to value
        represented by an unsigned integer.
    rz>%r is not a valid integer value supported bythis address type!r-r.r/r)rr0)r1rrrr3�s

r3cCs.t|�std|��tjdtjd|���dS)z�
    :param words: A list or tuple containing integer octets.

    :return: An unsigned integer that is equivalent to value represented
        by word (octet) sequence.
    z1%r is not a valid octet list for an IPv4 address!z>I�4Br)r>)r
r0r*r+r8)r6rrr�words_to_int�sr?cCst|tt�S)N)�_valid_bitsr�word_sep)�bitsrrrr�srcCst|tt�S)N)�_bits_to_intrrA)rBrrrr�srcCs |dkrt�d}t|tt|�S)NrA)�globals�_int_to_bitsr<r=)r1rArrrr
�s
r
cCs
t|t�S)N)�
_valid_binr)�bin_valrrrr�srcCs
t|t�S)N)�_int_to_binr)r1rrrr�srcCs
t|t�S)N)�_bin_to_intr)rGrrrr�srcCs�g}td|�}t|t�r�d|kr&|�y0d|krFdd�|jd�D�}ndt|�g}Wntk
rn|�YnXdt|�ko�dknr�x(tdt|��D]}|jd	�q�Wn|�|s�|�d
t	|�S)z�
    Expands a partial IPv4 address into a full 4-octet version.

    :param addr: an partial or abbreviated IPv4 address

    :return: an expanded IP address in presentation format (x.x.x.x)

    z!invalid partial IPv4 address: %r!�:rcSsg|]}dt|��qS)z%d)r!)r�orrrrsz*expand_partial_address.<locals>.<listcomp>z%drr�0z%s.%s.%s.%s)
r�
isinstancerr#r!r0�len�range�append�tuple)r'�tokens�errorrrrr�expand_partial_address�s$	

rT)rr)r)r)N)N)<�__doc__�sys�_sys�structr*Zsocketrr%�platformZnetaddr.fbsocketrr$rZnetaddr.corerrr	Znetaddr.strategyr
r;rr@rrCr
rErrFrrHrrIZnetaddr.compatrrr<Zword_fmtrAZfamilyZfamily_name�versionZ	word_baserr=Zmax_word�dictrOZprefix_to_netmaskZnetmask_to_prefixZprefix_to_hostmaskZhostmask_to_prefixr)r,r2r7r9r:r3r?rTrrrr�<module>sX
$






Back to Directory File Manager