HOME


Mini Shell 1.0
DIR: /lib/python3/dist-packages/landscape/lib/__pycache__/
Upload File :
Current File : //lib/python3/dist-packages/landscape/lib/__pycache__/network.cpython-312.pyc
�

�~�e�&����dZddlZddlZddlZddlZddlZddlZddlZddlm	Z	ddlm
Z
ddgZdZdZ
d	Zd
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zdd�Z					dd�Zdd�Zd�Zd�Zy)zG
Network introspection utilities using ioctl and the /proc filesystem.
�N)�_PY3)�long�get_active_device_info�get_network_traffici�iF��c�2�tjd�dk(S)z>Returns C{True} if the platform is 64-bit, otherwise C{False}.�l�)�struct�calcsize���7/usr/lib/python3/dist-packages/landscape/lib/network.py�is_64rs���?�?�3��1�$�$rc��|dzS)z�Returns C{True} if the interface is up, otherwise C{False}.

    @param flags: the integer value of an interface's flags.
    @see /usr/include/linux/if.h for the meaning of the flags.
    rr
)�flagss r�is_uprs���1�9�rc���|jtjig�djd�}|jtjig�djd�}t	|xs|�S)zChecks if interface address data has an IP address

    @param ifaddresses: a dict as returned by L{netifaces.ifaddresses}
    r�addr)�get�	netifaces�AF_INET�AF_INET6�bool)�ifaddresses�	inet_addr�
inet6_addrs   r�	is_activer&sd��
���	� 1� 1�B�4�8��;�?�?��G�I�����!3�!3�b�T�:�1�=�A�A�&�I�J��	�'�Z�(�(rc�6�i}tj|vr$|tj|tj<tj|vrI|tjD�cgc]}|djd�s|��}}|r||tj<|Scc}w)z�Return all IP addresses of an interfaces.

    Returns the same structure as L{ifaddresses}, but filtered to keep
    IP addresses only.

    @param ifaddresses: a dict as returned by L{netifaces.ifaddresses}
    rzfe80:)rrr�
startswith)r�resultsr�global_addrss    r�get_ip_addressesr#0s����G����K�'�%0��1B�1B�%C��	�!�!�"����[�(�$�I�$6�$6�7�
����<�*�*�7�3�
�
��
�
�*6�G�I�&�&�'��N��
s� Bc�N�|tjdjdd�S)z�Return the broadcast address associated to an interface.

    @param ifaddresses: a dict as returned by L{netifaces.ifaddresses}
    r�	broadcastz0.0.0.0�rrr�rs r�get_broadcast_addressr(Hs'��
�y�(�(�)�!�,�0�0��i�H�Hrc�N�|tjdjdd�S)z�Return the network mask associated to an interface.

    @param ifaddresses: a dict as returned by L{netifaces.ifaddresses}
    r�netmask�r&r's r�get_netmaskr,Ps'��
�y�(�(�)�!�,�0�0��B�?�?rc�4�|tjddS)z�Return the first IPv4 address associated to the interface.

    @param ifaddresses: a dict as returned by L{netifaces.ifaddresses}
    rr)rrr's r�get_ip_addressr.Xs��
�y�(�(�)�!�,�V�4�4rc�t�tj|vr&|tjdjdd�Sy)a
    Return the hardware MAC address for an interface in human friendly form,
    ie. six colon separated groups of two hexadecimal digits, if available;
    otherwise an empty string.

    @param ifaddresses: a dict as returned by L{netifaces.ifaddresses}
    rrr+)r�AF_LINKrr's r�get_mac_addressr1`s8�����K�'��9�,�,�-�a�0�4�4�V�R�@�@�
rc
��tj|j�tt	j
d|dd��}t	jd|dd�dS)z�Return the integer value of the interface flags for the given interface.

    @param sock: a socket instance.
    @param interface: The name of the interface.
    @see /usr/include/linux/if.h for the meaning of the flags.
    �256sN��H��r)�fcntl�ioctl�fileno�SIOCGIFFLAGSr�pack�unpack)�sock�	interface�datas   r�	get_flagsrAmsP���;�;����
�����F�I�c�r�N�+��D�
�=�=��d�2�b�k�*�1�-�-rc�~�tj�d}|j�D�cgc]}|d��	}}|Scc}w)z:
    Returns a list of interfaces with default routes
    �defaultr)r�gateways�values)�
default_table�gateway�
interfacess   r�get_default_interfacesrI|sC���&�&�(��3�M�,9�,@�,@�,B�C��'�!�*�C�J�C����Ds�:c��	�g}	tjtjtjtj�}t	j
�D�]�	t
�	fd�|D��r�t	j�	�}t|�s�:�	j�}t||�}t|�s�bt|�}|stj|vr��d�	i}||d<t||�\|d<|d<|r||d<tj|vr8t|�|d<t|�|d<t!|�|d	<t#|�|d
<|j%|���	|j'�|S#j'�wxYw)z�
    Returns a dictionary containing info on each active network
    interface that passes all `filters`.

    A filter is a callable that returns True if the interface should be
    skipped.
    c3�.�K�|]}|�����y�w�Nr
)�.0�fr?s  �r�	<genexpr>z'get_filtered_if_info.<locals>.<genexpr>�s�����1�A�1�Y�<�1�s�r?r�speed�duplex�ip_addresses�
ip_address�mac_address�broadcast_addressr*)�socketr�
SOCK_DGRAM�
IPPROTO_IPrrH�anyrr�encoderArr#�get_network_interface_speedr.r1r(r,�append�close)
�filters�extendedr!r>r�	ifencodedrrR�ifinfor?s
         @r�get_filtered_if_inforb�sz����G�/��}�}��N�N�������
��#�-�-�/�&	#�I��1��1�1��#�/�/�	�:�K��[�)��!�(�(�*�I��d�I�.�E���<��+�K�8�L��	� 1� 1�� E��!�9�-�F�#�F�7�O�0K���1�-�F�7�O�V�H�-�
�)5��~�&�� � �L�0�'5�k�'B��|�$�(7��(D��}�%�.C��/��*�+�%0��$<��y�!��N�N�6�"�M&	#�P	
�
�
���N��	
�
�
��s�EE2�2Fc�h���
��fd�}d�}d�}t��
�
�fd�}d�}	t|	||||f|��S)Nc���|�vSrLr
)r?�skipped_interfacess �r�filter_localz,get_active_device_info.<locals>.filter_local�s����.�.�.rc�
�d|vS)N�.r
�r?s r�filter_vlanz+get_active_device_info.<locals>.filter_vlan��
���i��rc�
�d|vS)N�:r
ris r�filter_aliasz,get_active_device_info.<locals>.filter_alias�rkrc����xr|�vSrLr
)r?�default_ifs�default_onlys ��r�filter_defaultz.get_active_device_info.<locals>.filter_default�s����<�	�� <�<rc�$�|jd�S)N�tap)r ris r�
filter_tapz*get_active_device_info.<locals>.filter_tap�s���#�#�E�*�*r)r^r_)rIrb)re�	skip_vlan�
skip_aliasr_rqrfrjrnrrrurps`   `     @rrr�sN���/� � �
)�*�K�=�
+� ������
��	�	rc��t|d�5}|j�}ddd�djd�\}}}|j�D�cgc]}d|����	}}|j|j�D�cgc]}d|����	c}�i}|ddD]_}	d|	vr�|	jd�\}
}|
j	�}
tt
|tt|j����||
<�a|S#1swY��xYwcc}wcc}w)	ze
    Retrieves an array of information regarding the network activity per
    network interface.
    �rNr�|�recv_�send_�rm)	�open�	readlines�split�extend�strip�dict�zip�mapr)�source_file�netdev�lines�_�receive_columns�transmit_columns�column�columns�devices�line�devicer@s            rrr�s��

�k�3�	�#�6�� � �"��#�,1��8�>�>�#�+>�(�A��(�.=�.C�.C�.E�F�F��v�h��F�G�F��N�N�3C�3I�3I�3K�L��e�F�8�$�L�M��G��a�b�	�F���d�?���z�z�#�����������s�7�C��d�j�j�l�,C�D�E����F��N�!#�#��
G��Ls�C9�D�;D
�9Dc�:�tj�}d|vr�tjtj�dtjtj
tjtj�dd}d|vrtj�}|S)a
    Return the current fqdn of the machine, trying hard to return a meaningful
    name.

    In particular, it means working against a NetworkManager bug which seems to
    make C{getfqdn} return localhost6.localdomain6 for machine without a domain
    since Maverick.
    �	localhostNr�)rV�getfqdn�getaddrinfo�gethostnamerrWrX�AI_CANONNAME)�fqdns r�get_fqdnr�s����>�>��D��d���!�!���� ���N�N����������

��
�����$���%�%�'�D��Krc���tjdtd�}tjd|�}tjd||j	�d�}d}	tj|t|�tr|j�}n|j�}tjd|�\}}|dk(rd}|dk(rd	}t)|�}||fS#ttf$r}}|jtjk(rt!j"d�n<|jtj$k7r|jtj&k7r|�d}d	}Yd
}~��d
}~wwxYw)
a�
    Return the ethernet device's advertised link speed.

    The return value can be one of:
        * 10, 100, 1000, 2500, 10000: The interface speed in Mbps
        * -1: The interface does not support querying for max speed, such as
          virtio devices for instance.
        * 0: The cable is not connected to the interface. We cannot measure
          interface speed, but could if it was plugged in.
    �I39ss'�B�16sPr����12xHB28xzECould not determine network interface speed, operation not permitted.FNi���)rr<�ETHTOOL_GSET�array�buffer_infor8r9�SIOCETHTOOLr�tobytes�tostringr=�IOError�OSError�errno�EPERM�logging�warning�
EOPNOTSUPP�EINVALr)	r>�interface_name�
cmd_struct�
status_cmd�packedrP�resrQ�es	         rr[r[s,�����V�\�<�@�J����S�*�-�J�
�[�[����1G�1G�1I�!�1L�
M�F��E��
���D�+�v�.���$�$�&�C��%�%�'�C��
�
�j�#�6�
��v�
��~�����}���
�&�\�F��&�=���-
�W��	��7�7�e�k�k�!��O�O�+�
��W�W��(�(�
(�Q�W�W����-D��G������	�s�AC�E!�$A3E�E!)r
F))�loTTFF)z
/proc/net/dev)�__doc__r�r�r8r�rVrr�landscape.lib.compatrr�__all__r;r�r�rrrr#r(r,r.r1rArIrbrrr�r[r
rr�<module>r�s����
����
�
��%�%�#�%:�
;��������%�
�)��0I�@�5�
�.��;�~���
��%�P�0�4-r