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

3

��]�!�@s^dZddlZddlZyddlmZWnek
r<dZYnXddlm	Z	ddl
mZddlm
ZmZmZmZmZmZmZmZmZdZeZ dZ!dZ"d	ed
Z#Gdd�de$�Z%Gd
d�de%�Z&Gdd�de&�Z'Gdd�de%�Z(Gdd�de%�Z)Gdd�de%�Z*e%Z+ddj,dgd�dddj,dgd�dddj,dgd�dddj,dgd�dddj,dgd�dddj,d gd	�dddj,d gd	�dd!d"j,d#gd$�d%d!d"j,d#gd&�d%f	Z-d'd(�e-D�Z-d)d*�Z.d+d,�Z/dEd-d.�Z0d/d0�Z1d1d2�Z2dFd3d4�Z
dGd5d6�ZdHd7d8�ZdId9d:�ZdJd;d<�ZdKd=d>�ZdLd?d@�ZdAdB�ZdCdD�ZdS)Mz�
IEEE 48-bit EUI (MAC address) logic.

Supports numerous MAC string formats including Cisco's triple hextet as well
as bare MACs containing no delimiters.
�N)�AF_LINK�0)�AddrFormatError)�_is_str)	�valid_words�int_to_words�words_to_int�
valid_bits�bits_to_int�int_to_bits�	valid_bin�
int_to_bin�
bin_to_intZMAC��c@s4eZdZdZdZeeZdedZdZdZ	dZ
dS)	�	mac_eui48z%A standard IEEE EUI-48 dialect class.�rr�-z%.2X�N)�__name__�
__module__�__qualname__�__doc__�	word_size�width�	num_wordsZmax_word�word_sep�word_fmt�	word_base�rr�/usr/lib/python3.6/eui48.pyr1src@s(eZdZdZdZeeZdZdZdZ	dS)�mac_unixz'A UNIX-style MAC address dialect class.r�:z%xrN)
rrrrrrrrrrrrrr r!Fsr!c@seZdZdZdZdS)�mac_unix_expandedz;A UNIX-style MAC address dialect class with leading zeroes.z%.2xN)rrrrrrrrr r#Osr#c@s(eZdZdZdZeeZdZdZdZ	dS)�	mac_ciscoz2A Cisco 'triple hextet' MAC address dialect class.r�.z%.4xN)
rrrrrrrrrrrrrr r$Tsr$c@s(eZdZdZdZeeZdZdZdZ	dS)�mac_barez1A bare (no delimiters) MAC address dialect class.r�z%.12XrN)
rrrrrrrrrrrrrr r&]sr&c@s(eZdZdZdZeeZdZdZdZ	dS)�	mac_pgsqlz@A PostgreSQL style (2 x 24-bit words) MAC address dialect class.�r"z%.6xrN)
rrrrrrrrrrrrrr r(fsr(�^r"z([0-9A-F]{1,2})��$rz([0-9A-F]{1,4})�z\.z([0-9A-F]{5,6})z^(r'z[0-9A-F]�z)$�cCsg|]}tj|tj��qSr)�_re�compile�
IGNORECASE)�.0�_rrr �
<listcomp>�sr5cCsFx@tD]8}y|j|�}t|�dkr&dSWqtk
r<YqXqWdS)z�
    :param addr: An IEEE EUI-48 (MAC) address in string form.

    :return: ``True`` if MAC address string is valid, ``False`` otherwise.
    rTF)�RE_MAC_FORMATS�findall�len�	TypeError)�addr�regexp�match_resultrrr �	valid_str�s


r=cCs.g}t|�rnd}xJtD]B}|j|�}t|�dkrd}t|dt�rL|d}n
|df}PqW|sztd|��ntd|��d}t|�dkr�tdj	d	d
�|D��d�}n�t|�dkr�tdj	d
d
�|D��d�}n\t|�dkr�tdj	dd
�|D��d�}n4t|�dk�rtdt|dd�d�}ntd|��|S)z�
    :param addr: An IEEE EUI-48 (MAC) address in string form.

    :return: An unsigned integer that is equivalent to value represented
        by EUI-48/MAC string address formatted according to the dialect
        settings.
    FrTz!%r is not a supported MAC format!z%r is not str() or unicode()!Nr+r'cSsg|]}dt|d��qS)z%.2xr)�int)r3�wrrr r5�szstr_to_int.<locals>.<listcomp>rr-cSsg|]}dt|d��qS)z%.4xr)r>)r3r?rrr r5�srcSsg|]}dt|d��qS)z%.6xr)r>)r3r?rrr r5�srz%012xz(unexpected word count in MAC address %r!)
rr6r7r8�
isinstance�tuplerr9r>�join)r:�wordsZfound_matchr;r<�int_valrrr �
str_to_int�s2



rEcs8�dkrt�t|��}�fdd�|D�}�jj|�}|S)a
    :param int_val: An unsigned integer.

    :param dialect: (optional) a Python class defining formatting options.

    :return: An IEEE EUI-48 (MAC) address string that is equivalent to
        unsigned integer formatted according to the dialect settings.
    Ncsg|]}�j|�qSr)r)r3�i)�dialectrr r5�szint_to_str.<locals>.<listcomp>)rrrrB)rDrGrC�tokensr:r)rGr �
int_to_str�s	
rIcCstjd|d?|d@�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>HI� l��)�_struct�pack)rDrrr �
int_to_packed�srMcCsJttjd|��}d}x0tt|��D] \}}|}|d|>}||B}q"W|S)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>6Brr)�listrK�unpack�	enumerate�reversed)Z
packed_intrCrDrFZnumZwordrrr �
packed_to_int�srRcCs|dkrt}t||j|j�S)N)�DEFAULT_DIALECT�_valid_wordsrr)rCrGrrr r�srcCs|dkrt}t||j|j�S)N)rS�
_int_to_wordsrr)rDrGrrr r�srcCs|dkrt}t||j|j�S)N)rS�
_words_to_intrr)rCrGrrr rsrcCs|dkrt}t|t|j�S)N)rS�_valid_bitsrr)�bitsrGrrr r	
sr	cCs|dkrt}t|t|j�S)N)rS�_bits_to_intrr)rXrGrrr r
sr
cCs |dkrt}t||j|j|j�S)N)rS�_int_to_bitsrrr)rDrGrrr rsrcCs|dkrt}t|t�S)N)rS�
_valid_binr)�bin_valrGrrr rsrcCs
t|t�S)N)�_int_to_binr)rDrrr r
#sr
cCs
t|t�S)N)�_bin_to_intr)r\rrr r'sr)N)N)N)N)N)N)N)N)3r�structrK�rer0Zsocketr�ImportErrorZnetaddr.corerZnetaddr.compatrZnetaddr.strategyrrTrrUrrVr	rWr
rYrrZrr[r
r]rr^rZfamilyZfamily_name�versionZmax_int�objectrr!r#r$r&r(rSrBr6r=rErIrMrRrrrr �<module>sZ
,				-









Back to Directory File Manager