HOME


Mini Shell 1.0
Redirecting to https://devs.lapieza.net/iniciar-sesion Redirecting to https://devs.lapieza.net/iniciar-sesion.
DIR: /lib/python3/dist-packages/cloudinit/distros/parsers/__pycache__/
Upload File :
Current File : //lib/python3/dist-packages/cloudinit/distros/parsers/__pycache__/ifconfig.cpython-311.pyc
�

܍~c�#���ddlZddlZddlmZddlmZmZmZddlm	Z	m
Z
mZddlm
Zeje��ZdZGd�d��ZGd	�d
��ZdS)�N)�	lru_cache)�IPv4Address�
IPv4Interface�
IPv6Interface)�Dict�Optional�Tuple)�logz"([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}c��eZdZdZd�Zedefd���Zedefd���Zedefd���Z	edefd���Z
edefd���Zedefd	���Zd
S)�Ifstatez�
    This class holds the parsed state of a BSD network interface.
    It is itself side-effect free.
    All methods with side-effects should be implemented on one of the
    ``BSDNetworking`` classes.
    c��||_d|_i|_i|_d|_g|_g|_g|_d|_d|_	g|_
d|_d|_d|_
d|_g|_i|_g|_dS)NrF)�name�index�inet�inet6�up�options�nd6�flags�mtu�metric�groups�description�media�status�mac�macs�vlan�members)�selfrs  �D/usr/lib/python3/dist-packages/cloudinit/distros/parsers/ifconfig.py�__init__zIfstate.__init__s�����	���
���	���
������������
����������*.���$(��
�%)���"&�����	���	�������returnc�&�d|jvpd|jvS)N�loopback�lo)rr�r s r!�is_loopbackzIfstate.is_loopback0s���T�Z�'�>�4�4�;�+>�>r#c�V�d|jvrdS|jgkr|jrd|jvrdSdS)N�egressT�EthernetF)rrr(s r!�is_physicalzIfstate.is_physical4s@���t�{�"�"��4��;�"������
�d�j�0H�0H��4��ur#c��d|jvS)N�bridge�rr(s r!�	is_bridgezIfstate.is_bridge=s���4�;�&�&r#c��d|jvS)N�laggr0r(s r!�is_bondzIfstate.is_bondA������$�$r#c�*�d|jvp
|jikS)Nr)rrr(s r!�is_vlanzIfstate.is_vlanEs���$�+�%�;�4�9��?�;r#c��d|jvS)N�wlanr0r(s r!�is_wlanzIfstate.is_wlanIr5r#N)
�__name__�
__module__�__qualname__�__doc__r"�property�boolr)r-r1r4r7r:�r#r!rrs�����������(�?�T�?�?�?��X�?���T�����X���'�4�'�'�'��X�'��%��%�%�%��X�%��<��<�<�<��X�<��%��%�%�%��X�%�%�%r#rc��eZdZdZd�Ze��dedeeeffd���Z	d�Z
d�Zdede
eeffd	�Zd
�Zdede
eeffd�Zdedefd�Zd
S)�Ifconfiga8
    A parser for BSD style ``ifconfig(8)`` output.
    For documentation here:
    - https://man.freebsd.org/ifconfig(8)
    - https://man.netbsd.org/ifconfig.8
    - https://man.openbsd.org/ifconfig.8
    All output is considered equally, and then massaged into a singular form:
    an ``Ifstate`` object.
    c��i|_dS)N)�_ifsr(s r!r"zIfconfig.__init__Ys
����	�	�	r#�textr$c�X
�d}|���D�]}t|��dkr�|ddvr^|dz
}|���d}|�d��r
|dd�}t	|��}||_||j|<|���������}t|��dkr�|d�	d��ri|�
|��}|ikrNtj|d��|_
|d	|_d
|vr
|d
|_d|vr
|d|_|d�	d��r5t#jd
|d��}|j
�|��|ddkrt'|d��|_|ddkr%||�d��dzd�|_|d�	d��s6|d�	d��s|d�	d��rWt#jd
|d��}	t|	��dkr)|xj|	d�d��z
c_|ddkr=|d|_|j�|d��||j|d<|ddkr0|j�|d��||j|d<|ddkr|xj|dd�z
c_|ddkr%||�d��dzd�|_|ddkrNt#jd
|d��}
t|
��dkr |
d�d��|_|ddkr
|d|_|ddkr=|�|��}tj|d��|j|d<|ddkr=|�|��}tj|d��|j|d<|ddks|ddkr|xj |dz
c_ |dd krVi|_!|d|j!d!<tEdt|����D]!}||d"kr||dz|j!d#<�"��|jS)$a
        Parse the ``ifconfig -a`` output ``text``, into a dict of ``Ifstate``
        objects, referenced by ``name`` *and* by ``mac`` address.

        This dict will always be the same, given the same input, so we can
        ``@lru_cache()`` it. n.b.: ``@lru_cache()`` takes only the
        ``__hash__()`` of the input (``text``), so it should be fairly quick,
        despite our giant inputs.

        @param text: The output of ``ifconfig -a``
        @returns: A dict of ``Ifstate``s, referenced by ``name`` and ``mac``
        r)�	� ��:N���zflags=rrrrz
capabilities=�<|>rzdescription:�zoptions=�ec_capabilities�
ec_enabled�,�ether�hwaddrzgroups:zmedia:z: rrrrzmember:z	laggport:zvlan:�idz
interface:�link)#�
splitlines�len�split�endswithrrrE�lower�strip�
startswith�_parse_flags�copy�deepcopyrrrr�re�append�intrrrrrrrr�_parse_inetr�_parse_inet6rrr�range)
r rF�ifindex�line�curif�dev�toksr�capsr�nd6_opts�ip�is
             r!�parsezIfconfig.parse\s������O�O�%�%�Y	7�Y	7�D��4�y�y�A�~�~���A�w�k�)�)�
�1����
�
���Q����>�>�#�&�&�'�!�#�2�#�J�E��e�n�n��#��	�#&��	�%� ��:�:�<�<�%�%�'�'�-�-�/�/�D��4�y�y�1�}�}��a��!3�!3�H�!=�!=�}��)�)�$�/�/���B�;�;� $�
�e�G�n� =� =�C�I�"�4�[�C�F���~�~�"'��,����5�(�(�%*�8�_��
��A�w�!�!�/�2�2�
'��x���Q��0�0���	� � ��&�&�&��A�w�'�!�!���Q��L�L��	��A�w�.�(�(�"&�t�z�z�#����':�'<�'<�"=����Q��"�"�:�.�.�
9���7�%�%�&7�8�8�
9���7�%�%�l�3�3�
9�
�(�6�4��7�3�3���w�<�<�!�#�#��K�K�7�1�:�#3�#3�C�#8�#8�8�K�K��A�w�'�!�!��q�'��������Q��(�(�(�%(��	�$�q�'�"��A�w�(�"�"������Q��(�(�(�%(��	�$�q�'�"��A�w�)�#�#��
�
�d�1�2�2�h�&�
�
��A�w�(�"�"� ����D�!1�!1�A�!5�!7�!7�8��	��A�w�%����8�F�D��G�4�4���x�=�=�1�$�$�&�q�k�/�/��4�4�C�G��A�w�(�"�"�!�!�W��
��A�w�&� � ��%�%�d�+�+��"&�-��1��"6�"6����A����A�w�'�!�!��&�&�t�,�,��#'�=��A��#7�#7��	�"�Q�%� ��A�w�)�#�#�t�A�w�+�'=�'=����t�A�w�&����A�w�'�!�!����!%�a�������q�#�d�)�)�,�,�7�7�A��A�w�,�.�.�+/��A��;����(����y�r#c�H�d�|j���D��S)Nc�N�i|]"\}}tjt|���||��#SrA�r`�	fullmatch�MAC_RE��.0�k�vs   r!�
<dictcomp>z(Ifconfig.ifs_by_name.<locals>.<dictcomp>�s?��
�
�
��a����V�Q�8O�8O�
�
�q�
�
�
r#�rE�itemsr(s r!�ifs_by_namezIfconfig.ifs_by_name��/��
�
�#�y���0�0�
�
�
�	
r#c�H�d�|j���D��S)Nc�N�i|]"\}}tjt|���||��#SrArrrus   r!ryz'Ifconfig.ifs_by_mac.<locals>.<dictcomp>�s?��
�
�
��a��B�L���4K�4K�
�
�q�
�
�
r#rzr(s r!�
ifs_by_maczIfconfig.ifs_by_mac�r}r#rjc��d}d|dvrLt|d��}t|j��}d|vr||�d��dz}nltt	t|dd������}d|vr||�d��dz}t|d�d|����}|j�d��d}t|j��|||d�fS)N�/rJ�	broadcast�r)�netmaskr��	prefixlen)	r�strr�rrrb�with_prefixlenrXrm)r rjr�rmr�r�s      r!rczIfconfig._parse_inet�s����	��$�q�'�>�>��t�A�w�'�'�B��"�*�o�o�G��d�"�"� ����K�!8�!8�1�!<�=�	���+�c�$�q�'�1�o�o�6�6�7�7�G��d�"�"� ����K�!8�!8�1�!<�=�	��$�q�'�'�'�7�7�;�<�<�B��%�+�+�C�0�0��3�	����J�J�"�&�&�
�
�
�	
r#c�x�tdt|����D]}||dkr
||dzcS�dS)NrNr�rJ)rerW)r rjrns   r!�_get_prefixlenzIfconfig._get_prefixlen�sS���q�#�d�)�)�$�$�	#�	#�A��A�w�+�%�%��A��E�{�"�"�"�&�	#�	#r#c�.�d}d|dvrjd}|d�d��\}}d|vr|�d��d}n|�|��}t|�d|����}npd|dvr7t|d��}|d�d��d}n/|�|��}t|d�d|����}|s
|jrd}n|s	|jrd}t|j��||d�fS)N�%rJz
link-localr�z
site-local)r��scope)rXr�r�
is_link_local�
is_site_localr�rm)r rjr��ip6�restr�rms       r!rdzIfconfig._parse_inet6�s2�����$�q�'�>�>� �E��Q��
�
�c�*�*�I�C���d�{�{� �J�J�s�O�O�A�.�	�	� �/�/��5�5�	��#�#�#�y�y�9�:�:�B�B�
�D��G�^�^��t�A�w�'�'�B��Q��
�
�c�*�*�1�-�I�I��+�+�D�1�1�I��$�q�'�'�'�9�9�=�>�>�B��	!��)�	!� �E�E��	!�2�+�	!� �E��B�E�
�
�)�e�D�D�E�Er#c��tjd|d��}i}t|��dkr�|d�d��|d<d|dvrd|d<nd|d<tdt|����D]Q}||d	krt	||dz��|d	<�*||d
krt	||dz��|d
<�R|S)NrMrJrQrrTFrNrr)r`rXrWrerb)r rjr�ret�ts     r!r]zIfconfig._parse_flagss�������a��)�)�����u�:�:��>�>� ��8�>�>�#�.�.�C��L��s�7�|�#�#� ��D�	�	�!��D�	��1�c�$�i�i�(�(�
2�
2����7�h�&�&�$'��Q��U��$4�$4�C��M�M��!�W��%�%�!$�T�!�a�%�[�!1�!1�C��J���
r#N)r;r<r=r>r"rr�rrror|r��listr	�dictrcr�rdr]rAr#r!rCrCNs������������Y�[�[�i�#�i�$�s�G�|�"4�i�i�i��[�i�V
�
�
�

�
�
�

��
��s�D�y�)9�
�
�
�
�.#�#�#�
F��F�%��T�	�*:�F�F�F�F�2���$������r#rC)r^r`�	functoolsr�	ipaddressrrr�typingrrr	�	cloudinitr
�logging�	getLoggerr;�LOGrtrrCrAr#r!�<module>r�s�������	�	�	�	�������?�?�?�?�?�?�?�?�?�?�(�(�(�(�(�(�(�(�(�(�$�$�$�$�$�$��g���!�!��	2��7%�7%�7%�7%�7%�7%�7%�7%�tG�G�G�G�G�G�G�G�G�Gr#