%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /lib/python3.9/site-packages/ansible/module_utils/facts/network/__pycache__/
Upload File :
Create Path :
Current File : //lib/python3.9/site-packages/ansible/module_utils/facts/network/__pycache__/linux.cpython-39.pyc

a

�)g�B�@s�ddlmZmZmZeZddlZddlZddlZddl	Z	ddl
Z
ddlmZm
Z
ddlmZGdd�de�ZGdd�de
�ZdS)	�)�absolute_import�division�print_functionN)�Network�NetworkCollector)�get_file_contentc@sHeZdZdZdZdddddd�Zdd
d�Zddd
�Zdd�Zdd�Z	d	S)�LinuxNetworkad
    This is a Linux-specific subclass of Network.  It defines
    - interfaces (a list of interface names)
    - interface_<name> dictionary of ipv4, ipv6, and mac address information.
    - all_ipv4_addresses and all_ipv6_addresses: lists of all configured addresses.
    - ipv4_address and ipv6_address: the first non-local address for each family.
    �LinuxZetherZ
infinibandZpppZloopbackZtunnel)�1�32Z512Z772Z65534Nc	Cs�i}|j�d�}|dur|S|j||d�\}}|�|||�\}}|��|d<|D]}||||<qP||d<||d<|d|d<|d|d<|S)N�ip)�collected_facts�
interfaces�default_ipv4�default_ipv6�all_ipv4_addresses�all_ipv6_addresses)�module�get_bin_path�get_default_interfaces�get_interfaces_info�keys)	�selfr
Z
network_facts�ip_pathrrr�ips�iface�r�L/usr/lib/python3.9/site-packages/ansible/module_utils/facts/network/linux.py�populate/s �
zLinuxNetwork.populatecCsp|pi}t|ddddg|ddddgd�}tiid�}dD�]$}|dkrh|�d	�d
krh|�dd��d
�rhq8|dkrxtjsxq8|jj||dd�\}}}|s�q8|��d��}	t	|	�dkr8|	d||dkr8t
t	|	�d�D]�}
|	|
dk�r|	|
d||d<q�|	|
dk�r$|	|
d||d<q�|	|
dkr�|	|
d||dkr�|	|
d||d<q�q8|d|dfS)Nz-4Zroute�getz8.8.8.8z-6z2404:6800:400a:800::1012)�v4�v6r!Zansible_os_familyZRedHatZansible_distribution_version�z4.�surrogate_then_replace��errorsr�����dev�	interface�src�addressZviaZgatewayr )�dictr�
startswith�socketZhas_ipv6r�run_command�
splitlines�split�len�range)rrr
Zcommandr)�v�rc�out�err�words�irrrr@s4�
� $z#LinuxNetwork.get_default_interfacescs~i�tggd��t�d�D�]}tj�|�s.qtj�|��d�i��<tj�tj�|d��r�ttj�|d�dd���r��dkr����d<tj�tj�|d	��r�t	ttj�|d	�����d	<tj�tj�|d
��r�ttj�|d
��dk��d<tj�tj�|dd
d���r8tj�tj�
tj�|dd
d�����d<tj�tj�|d���rxttj�|d��}|j�|d���d<tj�tj�|d���r8d��d<dd�t�tj�|dd��D���d<tj�tj�|dd���r�ttj�|dd�dd���d<tj�tj�|dd���r8ttj�|dd��dk��d<tj�tj�|d���rPd��d<ttj�|dd�dd��
���d<ttj�|dd�dd��
�d��d<ttj�|dd �dd��
�d��d <ttj�|dd!�dd��
�d��d!<ttj�|dd"��}|�rP|��d"<tj�|dd#�}tj�|��rPt|�dk��d#<tj�tj�|d$���r�ttj�|d$d%�dd���d&<tj�tj�|d���r�tj�t�tj�|d�����d'<tj�tj�|d(���rttj�|d(��}|du�rt	|���d(<tj�tj�|d)���rTd*}t	ttj�|d)��d+�}	|	d,@dk}|��d-<d;������fd.d/�	}
|j�d0�}|d1d2d"d3�g}|jj|d4d5�\}}
}|dk�r�|
|
�n6|d1d2d3�g}|jj|d4d5�\}}	}|dk�r�|
|	�|d1d2d6d3�g}|jj|d4d5�\}}}|dk�r$|
|d7d8����|����qi}�D]2}d9|v�rf�|||�d9d:�<n�|||<�qB|�fS)<N)rrz/sys/class/net/*�devicer+r")�defaultz00:00:00:00:00:00�
macaddress�mtuZ	operstateZdownZactiveZdriverr�type�unknownZbridgecSsg|]}tj�|��qSr)�os�path�basename)�.0�brrr�
<listcomp>��z4LinuxNetwork.get_interfaces_info.<locals>.<listcomp>Zbrif�*rZ	bridge_id�idZ	stp_stater
ZstpZbondingZslaves�moderZmiimonZ	lacp_rate�primaryZall_slaves_activeZ
bonding_slaveZperm_hwaddrZperm_macaddressZpciid�speed�flagsF��Zpromiscc	s|��D�]}|sq|��}d}|ddk�rd|dvrn|d�d�\}}t|�dkrz|ddkrz|d}n|d}d	}t�d
t�|��d}ddt|�?}t�t�	d
|��}	t�t�	d
||@��}
|d}|�kr�i�|<|�sd
�|v�r|||	|
|d��|d
<n8d�|v�r(g�|d<�|d�
|||	|
|d��|�r�d��v�rfg��d<�|k�r���d�
|||	|
|d��d�v�r��d|k�r�|�d<|	�d<|
�d<|�d<��d<��d�d<���dd��d<|d�d<|�d��s�d�
|�q|ddkrd|dk�rX|d}|d�d�\}}
|d}n|d�d�\}}
|d}d��v�r�g��d<��d�
||
|d ��d�v�r��d|k�r�|
�d<|�d!<��d<��d�d<���dd��d<|d"ks�d#�
|�qdS)$Nr"rZinet�/r'��Zbrdrz!Llr&Zipv4)r+�	broadcast�netmask�network�prefixZipv4_secondariesr+rRrSrTrUr<r=r>r?�aliasz127.rZinet6Zpeer�Zipv6)r+rU�scoperXz::1r)
r0r1r2�struct�unpackr.Z	inet_aton�intZ	inet_ntoa�pack�appendrr-)�output�	secondary�liner8rRr+Znetmask_lengthZaddress_binZnetmask_binrSrTr�_rUrX�rrr:rrr<rr�parse_ip_output�s�
��	
�

�z9LinuxNetwork.get_interfaces_info.<locals>.parse_ip_outputr�addrZshowr(r#r$r_T)r_�:ra)F)r,�globr@rA�isdirrB�exists�joinrr[�realpath�INTERFACE_TYPErr1�readlinkrrr/�update�get_ethtool_data�replace)rrrrrAZ_typerJrKZpromisc_mode�datarc�argsr5Zprimary_data�stderrZsecondary_dataZnew_interfacesr9rrbrrcs��*(  $((( $
_




z LinuxNetwork.get_interfaces_infoc
Cs i}|j�d�}|�r|d|g}|jj|dd�\}}}|dkr�i}|����D]@}	|	rN|	�d�rbqN|	�d�\}
}|svqN|��||
���dd	�<qN||d
<|d|g}|jj|dd�\}}}|dk�rdd
�t�	d|�D�|d<dd
�t�	d|�D�|d<t�
d|�}|�rt|��d�|d<|S)NZethtoolz-kr#r$rrez: �-ra�featuresz-TcSsg|]}|���qSr��lower�rC�mrrrrE;rFz1LinuxNetwork.get_ethtool_data.<locals>.<listcomp>zSOF_TIMESTAMPING_(\w+)ZtimestampingcSsg|]}|���qSrrurwrrrrE<rFzHWTSTAMP_FILTER_(\w+)Zhw_timestamp_filterszPTP Hardware Clock: (\d+)Z	phc_index)
rrr/�stripr0�endswithr1ro�re�findall�searchr[�groups)
rr:rpZethtool_pathrqr5�stdoutrrrtr`�key�valuerxrrrrn$s0


zLinuxNetwork.get_ethtool_data)N)N)
�__name__�
__module__�__qualname__�__doc__�platformrkrrrrnrrrrrs�

#Brc@s eZdZdZeZeddg�ZdS)�LinuxNetworkCollectorr	Zdistributionr�N)r�r�r�Z	_platformrZ_fact_class�setZrequired_factsrrrrr�Dsr�)Z
__future__rrrr>Z
__metaclass__rfr@r{r.rYZ'ansible.module_utils.facts.network.baserrZ ansible.module_utils.facts.utilsrrr�rrrr�<module>s(

Zerion Mini Shell 1.0