403Webshell
Server IP : 159.69.118.108  /  Your IP : 216.73.216.231
Web Server : Apache/2.4.58 (Ubuntu)
System : Linux ubuntu-4gb-fsn1-1 6.8.0-90-generic #91-Ubuntu SMP PREEMPT_DYNAMIC Tue Nov 18 13:53:54 UTC 2025 aarch64
User : root ( 0)
PHP Version : 8.2.32
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /lib/python3/dist-packages/cloudinit/net/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/cloudinit/net/__pycache__/network_state.cpython-312.pyc
�

��i���
��UddlZddlZddlZddlmZmZmZmZddlm	Z	m
Z
mZddlm
Z
mZmZmZmZmZmZmZmZmZerddlmZej2e�ZdZdgd�iZgd�Zid	d
�dd�d
d�dd�dd�dd�dd�dd�dd�dd�dd�dd �d!d"�d#d$�d%d&�d'd(�d)d*�d+d,d-��d.d/d0dd1d2dd3d4d5dd6�d7�Zee ee effe!d8<d9e"d:dfd;�Z#d<�Z$Gd=�d>e%�Z&d?�Z'Gd@�dA�Z(GdB�dC�Z)dD�Z*dKdE�Z+dF�Z,dG�Z-		dLdHe"dIe.d:e(fdJ�Z/y)M�N)�
TYPE_CHECKING�Any�Dict�Optional)�	lifecycle�safeyaml�util)
�find_interface_name_from_mac�get_interfaces_by_mac�ipv4_mask_to_net_prefix�ipv6_mask_to_net_prefix�
is_ip_network�is_ipv4_address�is_ipv4_network�is_ipv6_address�is_ipv6_network�net_prefix_to_ipv4_mask��Renderer���version�config�
network_state)�	addresses�dhcp4�dhcp4-overrides�dhcp6�dhcp6-overrides�gateway4�gateway6�
interfaces�match�mtu�nameservers�renderer�set-name�	wakeonlan�	accept-ra�optionalzbond-ad-selectz	ad-selectzbond-all-slaves-activezall-slaves-activezbond-arp-all-targetszarp-all-targetszbond-arp-intervalzarp-intervalzbond-arp-ip-targetz
arp-ip-targetzbond-arp-validatezarp-validatezbond-downdelayz
down-delayzbond-fail-over-maczfail-over-mac-policyzbond-lacp-ratez	lacp-ratezbond-learn-packet-intervalzlearn-packet-intervalzbond-miimonzmii-monitor-intervalzbond-min-linksz	min-linksz	bond-mode�modezbond-num-grat-arp�gratuitous-arpzbond-packets-per-slavezpackets-per-slavezbond-primary�primaryzbond-primary-reselectzprimary-reselect-policyzup-delayztransmit-hash-policy)zbond-updelayzbond-xmit-hash-policyzageing-time�priorityz
forward-delayz
hello-timezmax-agez	path-costz
port-priority�stp)�
bridge_ageing�bridge_bridgeprio�	bridge_fd�bridge_gcint�bridge_hello�
bridge_maxage�bridge_maxwait�bridge_pathcost�bridge_portprio�
bridge_stp�bridge_waitport)�bond�bridge�NET_CONFIG_TO_V2�dikt�returnc�F�d|vsd|vrtjddd��yy)z8Warn about deprecations of v2 properties for all devicesr r!z$The use of `gateway4` and `gateway6`z22.4zbFor more info check out: https://docs.cloud-init.io/en/latest/topics/network-config-format-v2.html)�
deprecated�deprecated_version�
extra_messageN)r�	deprecate)r>s �=/usr/lib/python3/dist-packages/cloudinit/net/network_state.py�warn_deprecated_all_devicesrF\s0���T��Z�4�/����=�%�X�	
�0�c�L�t|�}|D]}|j|��|S�N)�set�discard)�expected�actual�missing�keys    rE�	diff_keysrPgs+���(�m�G�����������NrGc��eZdZy)�InvalidCommandN)�__name__�
__module__�__qualname__�rGrErRrRns��rGrRc����fd�}|S)Nc�F���tj����fd��}|S)Nc�`���rt�|�}|rtd|�d������||g|��i|��S)NzCommand missing z of required keys )rPrR)�self�command�args�kwargs�missing_keys�func�
required_keyss     ��rE�	decoratorz7ensure_command_keys.<locals>.wrapper.<locals>.decoratortsE����(���@���(�'��8�����g�7��7��7�7rG)�	functools�wraps)r_rar`s` �rE�wrapperz$ensure_command_keys.<locals>.wrapperss&���	����	�	8�
�	8��rGrV)r`rds` rE�ensure_command_keysrers�����NrGc��eZdZefdedefd�Zedefd��Zed��Z	ed��Z
ed��Zed	��Zdd�Z
dd�Zd
�Zd�Zededdfd��Zy
)�NetworkStaterrc��tj|�|_||_|j	dd�|_d|_y)N�use_ipv6F)�copy�deepcopy�_network_state�_version�getri�_has_default_route)rZrrs   rE�__init__zNetworkState.__init__�s8��#�m�m�M�:�����
�%�)�)�*�e�<��
�"&��rGr?c� �|jdS)Nr)rl�rZs rErzNetworkState.config�s���"�"�8�,�,rGc��|jSrI)rmrrs rErzNetworkState.version�s���}�}�rGc�J�	|jddS#t$rgcYSwxYw)N�dnsr%�rl�KeyErrorrrs rE�dns_nameserverszNetworkState.dns_nameservers�s1��	��&�&�u�-�m�<�<���	��I�	����"�"c�J�	|jddS#t$rgcYSwxYw)Nru�searchrvrrs rE�dns_searchdomainszNetworkState.dns_searchdomains�s1��	��&�&�u�-�h�7�7���	��I�	�ryc�\�|j�|j�|_|jSrI)ro�_maybe_has_default_routerrs rE�has_default_routezNetworkState.has_default_route�s+���"�"�*�&*�&C�&C�&E�D�#��&�&�&rGNc#�K�|jjdi�}|j�D]}|�|���
||�s�|���y�w)Nr")rlrn�values)rZ�filter_func�ifaces�ifaces    rE�iter_interfaceszNetworkState.iter_interfaces�sK�����$�$�(�(��r�:���]�]�_�	 �E��"����u�%��K�	 �s�?A	�A	c#�vK�|jjdg�D]}|�||�s�|���|���y�w�N�routes�rlrn)rZr��routes   rE�iter_routeszNetworkState.iter_routes�s@�����(�(�,�,�X�r�:�	�E��&��u�%��K���	�s�*9�9c��|j�D]}|j|�s�y|j�D]E}|jdg�D].}|jdg�D]}|j|�s�y�0�Gy)NT�subnetsr�F)r��_is_default_router�rn)rZr�r��subnets    rEr~z%NetworkState._maybe_has_default_route�s����%�%�'�	�E��%�%�e�,��	��)�)�+�	$�E��)�)�I�r�2�
$��#�Z�Z��"�5�$�E��-�-�e�4�#�$�
$�	$�
rGc�X�d}|jd�dk(xr|jd�|vS)N)z::z0.0.0.0�prefixr�network)rn)rZr��default_netss   rEr�zNetworkState._is_default_route�s0��(���I�I�h��1�$�M����9�)=��)M�	
rGc�4�i}d|vr|d|d<|d|ifi|��S)z�Instantiates a `NetworkState` without interpreting its data.

        That means only `config` and `version` are copied.

        :param network_state: Network state data.
        :return: Instance of `NetworkState`.
        rrrV)�clsrr]s   rE�to_passthroughzNetworkState.to_passthrough�s5�����
�%� -�i� 8�F�9���H�m�,�7��7�7rGrI)rSrTrU�NETWORK_STATE_VERSION�dict�intrp�propertyrrrxr|rr�r�r~r��classmethodr�rVrGrErgrg�s���2G�'�!�'�,/�'��-��-��-��������������'��'�
 ��	�
��8�4�8�N�8��8rGrgc��eZdZigggd�ddd�Zeddf	d)d�Zedefd��Zed��Z	e	jd	��Z	d
�Zd�Zd�Z
d
�Zd*d�Zd*d�Zd*d�Zedg�d��Zedg�d��Zegd��d��Zegd��d��Zeddg�d��Zedg�d��Zd�Zedg�d��Zedg�d��Zedg�d ��Zd!�Zd"�Zd#�Zd$�Z d%�Z!d+d&�Z"d,d'�Z#d(�Z$y)-�NetworkStateInterpreter�r%r{FN)r"r�rurirc���||_||_tj|j�|_||j
d<d|_i|_||_|j|j|j|j|j|j|j|j |j"|j$|j&|j(|j*d�
|_y)NrF)
r;�bondsr<�bridges�	ethernets�
infiniband�loopback�
nameserver�physicalr��vlan�vlans�wifis)rm�_configrjrk�initial_network_staterl�_parsed�_interface_dns_map�	_renderer�handle_bond�handle_bonds�
handle_bridge�handle_bridges�handle_ethernets�handle_infiniband�handle_loopback�handle_nameserver�handle_physical�handle_route�handle_vlan�handle_vlans�handle_wifis�command_handlers)rZrrr&s    rErpz NetworkStateInterpreter.__init__�s��� ��
����"�m�m�D�,F�,F�G���(.����H�%����(*���!����$�$��&�&��(�(��*�*��.�.��0�0��,�,��0�0��,�,��&�&��$�$��&�&��&�&�!
��rGr?c��ddlm}|jdk(rJt|j|�r4t
j
d�tj|j�St|j|j��S)Nrr�zPassthrough netplan v2 config�r)�cloudinit.net.netplanrrm�
isinstancer��LOG�debugrgr�r�rl)rZ�NetplanRenderers  rErz%NetworkStateInterpreter.network_statesW��E��=�=�A��*�T�^�^�_�"M��I�I�5�6��.�.�t�|�|�<�<��D�/�/����G�GrGc�8�|jjd�S�Nrir�rrs rEriz NetworkStateInterpreter.use_ipv6s���"�"�&�&�z�2�2rGc�>�|jjd|i�yr�)rl�update)rZ�vals  rEriz NetworkStateInterpreter.use_ipv6s�����"�"�J��#4�5rGc�t�|j|j|jd�}tj|�S)Nr)rmr�rlr�dumps)rZ�states  rE�dumpzNetworkStateInterpreter.dumps1���}�}��l�l�!�0�0�
��
�~�~�e�$�$rGc�(�d|vr tjd�td��t|d}t	||�}|r%d|z}tj|�t|��|D�cgc]	}|dvs�|��c}D]}t||||��ycc}w)Nrz$Invalid state, missing version fieldzInvalid state, missing keys: %sr�)r��error�
ValueError�NETWORK_STATE_REQUIRED_KEYSrP�setattr)rZr�r`r^�msg�krOs       rE�loadzNetworkStateInterpreter.loads����E�!��I�I�<�=��C�D�D�3�E�)�4D�E�
� ���6���3�|�D�C��I�I�c�N��S�/�!� -�E�!���0D�A�E�	+�C��D�#�u�S�z�*�	+��Es�(	B�2Bc�@�tj|j�SrI)rr�rlrrs rE�dump_network_statez*NetworkStateInterpreter.dump_network_state,s���~�~�d�1�1�2�2rGc�4�|j|jd�S)N)rr)rmr�rrs rE�as_dictzNetworkStateInterpreter.as_dict/s���=�=�D�L�L�A�ArGc��|jdk(r|j|��d|_y|jdk(r|j|��d|_yy)Nr��skip_brokenTr�)rm�parse_config_v1r��parse_config_v2)rZr�s  rE�parse_configz$NetworkStateInterpreter.parse_config2sO���=�=�A��� � �[� �9��D�L�
�]�]�a�
�� � �[� �9��D�L� rGc�"�|jD] }|d}	|j|}	||��"|jj�D]*\}}d}	|jd|}|s�|\}	}
|	|
d�|d	<�,y#t$r}td|z�|�d}~wwxYw#t$rA|s�t
j
d|d��t
j|j��Y��wxYw#t$r }tdj|��|�d}~wwxYw)
N�typez"No handler found for  command '%s'�Skipping invalid command: %sT��exc_infor"zINameserver specified for interface {0}, but interface {0} does not exist!r�ru)r�r�rw�RuntimeErrorrRr��warningr�r�r��itemsrlr��format)rZr�r[�command_type�handler�e�	interfacerur�r%r{s           rEr�z'NetworkStateInterpreter.parse_config_v1:sD���|�|�	9�G�"�6�?�L�
��/�/��=��
	
9��� �	9�$#�5�5�;�;�=�	�N�I�s��E�
��+�+�L�9�)�D���&)�#��V�#.�$� ��e��	���
�"�8�<�G�����
��"�
9�"���K�K�6��$� ���I�I�d�5�5�7�8�
9���
� �8�8>��y�8I�����
�sA�A8�B�C%�8	B�B�B�AC"�!C"�%	D�.D	�	Dc��ddlm}t|j|�ry|jj�D]4\}}|dvr�	|j|}	||�|j|��6y#t$r}td|z�|�d}~wwxYw#t$rA|s�tjd|d��tj|j��Y��wxYw)Nrr)rr&z!No handler found for command '%s'r�Tr�)r�rr�r�r�r�r�rwr��
_v2_commonrRr�r�r�r�)rZr�r�r�r[r�r�s       rEr�z'NetworkStateInterpreter.parse_config_v2]s���E��d�n�n�o�6��%)�\�\�%7�%7�%9�	9�!�L�'��6�6��
��/�/��=��


9��� �����(�	9��
�
�"�7�,�F�����
��"�
9�"���K�K�6��$� ���I�I�d�5�5�7�8�
9�s+�A0�B�0	B
�9B�B
�AC�C�namec�$�|j|�SrI�r��rZr[s  rEr�z'NetworkStateInterpreter.handle_loopbackys���#�#�G�,�,rGc�~�|jjdi�}|j|di�}|jdi�j�D]\}}|j||i��t	|jd��}|j
sJ|D]E}|jd�j
d�st|jd��s�>d|_n|jd	d
�}|�tj|�}|jdd
�}	|	�tj|	�}	|jdd
�}
|
�tj|
�}
|j|jd
�|jd�|jd�|jd�dd|jd�d
d
|||	|
|jd�d��|dr|dj�|d<|jd
|jd��}|jdj||i�|j�y
)z�
        command = {
            'type': 'physical',
            'mac_address': 'c0:d6:9f:2c:e8:80',
            'name': 'eth0',
            'subnets': [
                {'type': 'dhcp4'}
             ],
            'accept-ra': 'true'
        }
        r"r��paramsr�r��6�addressTr)Nr(r*�	config_id�mac_address�inet�manualr$�keep_configuration)r�r�r�r�r�r+r$r��gatewayr�r)r(r*r�)rlrnr�r��_normalize_subnetsri�endswithrr	�is_true�lowerr�)rZr[r"r��paramr�r�r��	accept_rar(r*�	iface_keys            rEr�z'NetworkStateInterpreter.handle_physical}s���(�(�,�,�\�2�>�
����w�v���3��!�+�+�h��3�9�9�;�	'�J�E�3��L�L�%���&�	'�%�W�[�[��%;�<���}�}�!�
���:�:�f�%�.�.�s�3���J�J�y�)�8�%)�D�M��
��K�K��T�2�	�� ����Y�/�I��K�K��T�2�	�� ����Y�/�I��;�;�z�4�0�����|�|�H�-�H�
���$�[�[��5����F�+����F�+�&�{�{�=�9�� ��{�{�5�)���"�&�&�$�&-�k�k�2F�&G�
�	
�&���#(��#7�#=�#=�#?�E�-� ��K�K��W�[�[��-@�A�	����L�)�0�0�)�U�1C�D����!rG)r��vlan_id�	vlan_linkc��|jjdi�}|j|�|j|jd�i�}|jd�|d<|jd�|d<|j|d|i�y)z�
        auto eth0.222
        iface eth0.222 inet static
                address 10.10.10.1
                netmask 255.255.255.0
                hwaddress ether BC:76:4E:06:96:B3
                vlan-raw-device eth0
        r"r�rzvlan-raw-devicerN)rlrnr�r�)rZr[r"r�s    rEr�z#NetworkStateInterpreter.handle_vlan�s����(�(�,�,�\�2�>�
����W�%����w�{�{�6�2�B�7��#*�;�;�{�#;��� �"�;�;�y�1��i�����5��=�%�0�1rG)r��bond_interfacesr�c��|j|�|jjd�}|j|jd�i�}|jd�j�D]\}}|j	||i��|j	ddi�|jdj	|d|i�|jd�D]�}||vr|dd�}|j|�|jjdi�}|j|�}|jd�|d	<|jd�j�D]\}}|j	||i��|jdj	||i���y
)aU
        #/etc/network/interfaces
        auto eth0
        iface eth0 inet manual
            bond-master bond0
            bond-mode 802.3ad

        auto eth1
        iface eth1 inet manual
            bond-master bond0
            bond-mode 802.3ad

        auto bond0
        iface bond0 inet static
             address 192.168.0.10
             gateway 192.168.0.1
             netmask 255.255.255.0
             bond-slaves none
             bond-mode 802.3ad
             bond-miimon 100
             bond-downdelay 200
             bond-updelay 200
             bond-lacp-rate 4
        r"r�r�zbond-slaves�nonerr;)r�r�zbond-masterN)r�rlrnr�r�)	rZr[r"r�rr��ifname�cmd�bond_ifs	         rEr�z#NetworkStateInterpreter.handle_bond�sw��6	
���W�%��(�(�,�,�\�:�
����w�{�{�6�2�B�7��!�+�+�h�/�5�5�7�	'�J�E�3��L�L�%���&�	'�
���m�V�,�-����L�)�0�0�%��-��1G�H��k�k�"3�4�	H�F��Z�'�"�"���
�$�$�S�)��,�,�0�0��r�B�J� �n�n�V�,�G�%,�[�[��%8�G�M�"�%�k�k�(�3�9�9�;�
-�
��s�����s�|�,�
-�����-�4�4�f�g�5F�G�	HrG�bridge_interfacesc��|jjdi�}|jd�D]}||vr�d|i}|j|��|jjdi�}|j|�|j|jd�i�}|d|d<|jdi�j�D]\}}|j	||i��|jd�}|�Lt|t�s<|dvrd	}n"|d
vrd}ntdj|�
���|j	d|i�|j	|d|i�y)a�
            auto br0
            iface br0 inet static
                    address 10.10.10.1
                    netmask 255.255.255.0
                    bridge_ports eth0 eth1
                    bridge_stp off
                    bridge_fd 0
                    bridge_maxwait 0

        bridge_params = [
            "bridge_ports",
            "bridge_ageing",
            "bridge_bridgeprio",
            "bridge_fd",
            "bridge_gcint",
            "bridge_hello",
            "bridge_hw",
            "bridge_maxage",
            "bridge_maxwait",
            "bridge_pathcost",
            "bridge_portprio",
            "bridge_stp",
            "bridge_waitport",
        ]
        r"r
r��bridge_portsr�r9N)�on�1rT)�off�0rFz2Cannot convert bridge_stp value ({stp}) to boolean)r/)	rlrnr�r�r�r��boolr�r�)	rZr[r"r
rr�rr�r9s	         rEr�z%NetworkStateInterpreter.handle_bridgesg��>�(�(�,�,�\�2�>�
��k�k�"5�6�	&�F���#�����C�
� � ��%�	&��(�(�,�,�\�2�>�
����W�%����w�{�{�6�2�B�7�� '�(;� <��n��!�+�+�h��3�9�9�;�	'�J�E�3��L�L�%���&�	'��Y�Y�|�,�
��!�*�Z��*F��^�+�!�
���.�"�
� ��%�v�*�v�5���
�L�L�,�
�3�4����5��=�%�0�1rGc�&�|j|�yrIr�r�s  rEr�z)NetworkStateInterpreter.handle_infinibandFs�����W�%rGc���g}g}d|vr0|d}t|t�s|g}|D]}|j|��d|vr0|d}t|t�s|g}|D]}|j|��||fS)Nr�r{)r��list�append)rZr[r%r{�addrs�addr�paths�paths        rE�
_parse_dnsz"NetworkStateInterpreter._parse_dnsJs�����������I�&�E��e�T�*�����
)���"�"�4�(�
)��w���H�%�E��e�T�*�����
$���
�
�d�#�
$��F�"�"rGr�c���|jjd�}|j|�\}}d|vr||f|j|d<y|dj	|�|dj	|�y)Nrur�r%r{)rlrnrr��extend)rZr[rur%r{s     rEr�z)NetworkStateInterpreter.handle_nameserver[sw���!�!�%�%�e�,��"�o�o�g�6���V��'�!���=�D�#�#�G�K�$8�9�

�
��%�%�k�2���M� � ��(rGc�x�|jjd�}|j|�\}}||d�||d<y)Nr"r�ru)rlrnr)rZr[r��_ifacer%r{s      rE�_handle_individual_nameserverz5NetworkStateInterpreter._handle_individual_nameserverhs>���$�$�(�(��6��"�o�o�g�6���V�/:�f�M��u�
�e�rG�destinationc�R�|jdjt|��yr�)rlr�_normalize_router�s  rEr�z$NetworkStateInterpreter.handle_routens!�����H�%�,�,�-=�g�-F�GrGc�*�|j|d��y)a�
        v2_command = {
          bond0: {
            'interfaces': ['interface0', 'interface1'],
            'parameters': {
               'mii-monitor-interval': 100,
               'mode': '802.3ad',
               'xmit_hash_policy': 'layer3+4'}},
          bond1: {
            'bond-slaves': ['interface2', 'interface7'],
            'parameters': {
                'mode': 1,
            }
          }
        }

        v1_command = {
            'type': 'bond'
            'name': 'bond0',
            'bond_interfaces': [interface0, interface1],
            'params': {
                'bond-mode': '802.3ad',
                'bond_miimon: 100,
                'bond_xmit_hash_policy': 'layer3+4',
            }
        }

        r;��cmd_typeN��_handle_bond_bridger�s  rEr�z$NetworkStateInterpreter.handle_bondsss��:	
� � ��6� �:rGc�*�|j|d��y)a�
        v2_command = {
          br0: {
            'interfaces': ['interface0', 'interface1'],
            'forward-delay': 0,
            'stp': False,
            'maxwait': 0,
          }
        }

        v1_command = {
            'type': 'bridge'
            'name': 'br0',
            'bridge_interfaces': [interface0, interface1],
            'params': {
                'bridge_stp': 'off',
                'bridge_fd: 0,
                'bridge_maxwait': 0
            }
        }

        r<r'Nr)r�s  rEr�z&NetworkStateInterpreter.handle_bridges�s��.	
� � ��8� �<rGc��t�}|j�D�])\}}|dd�}|jdi�}|jdd�}|s tj	d|t|��||d<|}|jd�}	|	r|	}n#|r!|r|j
�}
t|
�}|r|}||d	<|jd
d�}|rd
|i|d<dD]}
|
|vs�||
||
<�t|�|j|�}t|�d
kDr|jd|i�tj	d|�|j|���,y)a�
        ethernets:
          eno1:
            match:
              macaddress: 00:11:22:33:44:55
              driver: hv_netvsc
            wakeonlan: true
            dhcp4: true
            dhcp6: false
            addresses:
              - 192.168.14.2/24
              - 2001:1::1/64
            gateway4: 192.168.14.1
            gateway6: 2001:1::2
            nameservers:
              search: [foo.local, bar.local]
              addresses: [8.8.8.8, 8.8.4.4]
          lom:
            match:
              driver: ixgbe
            set-name: lom1
            dhcp6: true
            accept-ra: true
          switchports:
            match:
              name: enp2*
            mtu: 1280

        command = {
            'type': 'physical',
            'mac_address': 'c0:d6:9f:2c:e8:80',
            'name': 'eth0',
            'subnets': [
                {'type': 'dhcp4'}
             ]
        }
        r�)r�r�r#�
macaddressNzHNetworkState Version2: missing "macaddress" info in config entry: %s: %sr�r'r��driverr�)r$r#r(r)r*rr�z!v2(ethernets) -> v1(physical):
%s)
rr�rnr�r��strrr
rF�_v2_to_v1_ipcfg�lenr�r�)rZr[�
ifaces_by_mac�eth�cfg�phy_cmdr#r�r��set_name�lcase_mac_address�macr.rOr�s               rEr�z(NetworkStateInterpreter.handle_ethernets�sf��Z.�/�
��
�
��.	*�H�C�� �"��G��G�G�G�R�(�E��)�)�L�$�7�K���	�	�.����H�	�&1�G�M�"��D��w�w�z�*�H������$/�$5�$5�$7�!�2�3D�E����D�"�G�F�O��Y�Y�x��.�F��%-�v�$6���!�M�
,���#�:�#&�s�8�G�C�L�
,�
(��,��*�*�3�/�G��7�|�a�����	�7�3�4��I�I�:�G�D�� � ��)�].	*rGc�~�|j�D]�\}}d||jd�|jd�|jd�d�}d|vr|d|d<t|�|j|�}t	|�dkDr|jd|i�tjd	|�|j|���y
)aq
        v2_vlans = {
            'eth0.123': {
                'id': 123,
                'link': 'eth0',
                'dhcp4': True,
            }
        }

        v1_command = {
            'type': 'vlan',
            'name': 'eth0.123',
            'vlan_link': 'eth0',
            'vlan_id': 123,
            'subnets': [{'type': 'dhcp4'}],
        }
        r��id�linkr-)r�r�rrr�r$rr�zv2(vlans) -> v1(vlan):
%sN)	r�rnrFr0r1r�r�r�r�)rZr[r�r4�vlan_cmdr�s      rEr�z$NetworkStateInterpreter.handle_vlans
s���$!����	'�I�D�#����7�7�4�=� �W�W�V�_�"�w�w�|�4��H���|�"%�e�*����'��,��*�*�3�/�G��7�|�a������G� 4�5��I�I�2�H�=����X�&�	'rGc�.�tjd�y)NzOWifi configuration is only available to distros with netplan rendering support.)r�r�r�s  rEr�z$NetworkStateInterpreter.handle_wifis-s�����
*�	
rGc�2�tjd|�|j�D]n\}}d|vs�|jd�jd�}|jd�jd�}ddi}|r||d<|r||d<|j	||��py)Nzv2_common: handling config:
%sr%r{rr�r�r�)r�r�r�rnr")rZr4r��dev_cfgr{ru�name_cmds       rEr�z"NetworkStateInterpreter._v2_common3s����	�	�3�S�9�!�i�i�k�
	D�N�E�7���'� ���]�3�7�7��A���k�k�-�0�4�4�[�A��"�L�1���)/�H�X�&��*-�H�Y�'��2�2�8�U�C�
	DrGc
��
�td�tj|�j�D���
|j�D�]C\}}td�|j�D��}|jdi�}|j	dd�}|r||d<d|d||d	z|jd
�dt�
fd�|j�D��i}d
|vr|d
|d
<d|vr|d|d<t|�|j
|�}	t|	�dkDr|jd|	i�tjd|||�|dk(r|j|���|dk(r|j|���+tdj|����y)z(Common handler for bond and bridge typesc3�*K�|]\}}||f���
y�wrIrV��.0r��vs   rE�	<genexpr>z>NetworkStateInterpreter._handle_bond_bridge.<locals>.<genexpr>Es����
��q�!�Q��F�
�s�c3�:K�|]\}}|tvr||f���y�wrI)�NETWORK_V2_KEY_FILTER)rDrO�values   rErFz>NetworkStateInterpreter._handle_bond_bridge.<locals>.<genexpr>Js)����� �S�%��3�3��e���s��
parameterszgratuitious-arpNr,r�r��_interfacesr"r�c3�2�K�|]\}}�||f���y�wrIrV)rDr�rE�v2key_to_v1s   �rErFz>NetworkStateInterpreter._handle_bond_bridge.<locals>.<genexpr>Zs�����N�t�q�!��A���2�N�s�r$r-r�rr�zv2(%s) -> v1(%s):
%sr<r;z Unknown command type: {cmd_type}r')r�r=rnr��poprFr0r1r�r�r�r�r�r�r�)rZr[r(�	item_name�item_cfg�item_paramsr��
grat_value�v1_cmdr�rMs          @rEr*z+NetworkStateInterpreter._handle_bond_bridgeAs�����
�/�3�3�H�=�C�C�E�
�
��$+�=�=�?�(	��I�x���$,�N�N�$4���K�!�_�_�\�2�6�F����$5�t�<�J��+5��'�(����	��=�(�(�,�,�|�*D��$�N�v�|�|�~�N�N�	�F��� � (����u�
��x�'�(0��(>��}�%�'��1��*�*�8�4�G��7�|�a���
�
�y�'�2�3��I�I�-�x��6�J��8�#��"�"�6�*��V�#�� � ��(� �6�=�=�!)�>����I(	rGc�@�d�}g}|jd�r.ddi}||jdi�|�|j|�|jd�r5ddi}d|_||jdi�|�|j|�d}d}i}|jd	g�D]�}d
|d�}d|vr+d
|vrQ|�O|jd
�}|jd|i�n*d|vr&|�$|jd�}|jd|i�d|vra|s_|jd�jd	�}	|	r|	|d<|jd�jd�}
|
r|
|d<|j|�|j|���g}|jdg�D]m}|jt	|jd�|jd�|jd�|jd�|jd�d����ot|�rt|�r||dd<|S)z7Common ipconfig extraction from v2 to v1 subnets array.c��d|vr	|d|d<yy)Nzroute-metric�metricrV)�	overridesr�s  rE�_add_dhcp_overrideszDNetworkStateInterpreter._v2_to_v1_ipcfg.<locals>._add_dhcp_overridesvs����*�#,�^�#<��x� �+rGrr�rrTrNr�static)r�r��:r!r�r r%rxr{�
dns_searchr��to�viarVr$�table)r#r�rVr$r^r)rnrrir�r%r1)
rZr4rXr�r�r r!r%r�rr{r�r�s
             rEr0z'NetworkStateInterpreter._v2_to_v1_ipcfgss"��	=����7�7�7���g�&�F�����(9�2� >��G��N�N�6�"��7�7�7���g�&�F� �D�M�����(9�2� >��G��N�N�6�"��������w�w�{�B�/�	#�G� �"��F�
�g�~���$��)9�"�w�w�z�2�H��M�M�9�h�"7�8���$��)9�"�w�w�z�2�H��M�M�9�h�"7�8���#�K��G�G�M�2�6�6�{�C�	��5>�K� 1�2�����/�3�3�H�=���06�K��-��
�
�k�*��N�N�6�"�1	#�4���W�W�X�r�*�	�E��M�M� �',�y�y���#(�9�9�U�#3�"'�)�)�H�"5�$�y�y��/�!&���7�!3���

�	��w�<�C��K�#)�G�A�J�x� ��rG)r&zOptional[Renderer])T)r?NrI)%rSrTrUr�r�rpr�rgrri�setterr�r�r�r�r�r�r�rer�r�r�r�r�r�rr�r"r�r�r�r�r�r�r�r*r0rVrGrEr�r��s�������
���	��&��)-�	
�'�	
�:�H�|�H��H��3��3��_�_�6��6�%�+� 3�B� �!�F9�8�&��"�-�#�-��&��"�?"�#�?"�B�9�:�2�;�2� �>�?�2H�@�2H�h�&�"5�6�7�>2�8�>2�@�&��"�&�#�&�#�"�)��%�
)�&�
)��)��%�N�&�N�
�-��)�H�*�H�;�>=�2]*�~!'�F
�D�0�dBrGr�c�V�tj|�}td�|j�D��}|j	d�dvr|jt
|d���|j	dg�D�cgc]
}t|���c}|d<d�}dD]}|||��
|Scc}w)	Nc3�0K�|]\}}|s�	||f���y�wrIrVrCs   rErFz$_normalize_subnet.<locals>.<genexpr>�s����@�D�A�q�a�!�Q��@�s�
�	r�)rY�static6)r��
ip_address��address_keysr�c�b�||vr+t||t�s||j�||<yyyrI)r�r�split)�snetr�s  rE�listifyz"_normalize_subnet.<locals>.listify�s3���4�<�
�4��:�t� <��d��)�)�+�D��J�!=�<rG)r[rx)rjrkr�r�rnr��_normalize_net_keysr%)r��
normal_subnet�rrir�s     rE�_normalize_subnetrm�s���
�]�]�6�
"�F��@�F�L�L�N�@�@�M�
�z�z�&��2�2�������
�	
�&,�Z�Z��"�%=�� !�����M�(��,�/�"���
�q�!�"����s�9B&c���|j�D��cic]\}}|s|dk(s�||��}}}d}|D]}|j|�s�|}n|s7ddj|��d|��}tj	|�t|��t
|j|��}|dk(r�t
|jd��}	|	s"d}tj	|�t|��t|	�rd	}n4t|	�rd
}n&d|	�d�}tj	|�t|��t|�s%tj	d
|�td|�d���t|�}
t|�}|jd�}d|vr[|jd�\}
}}|
||<|
rt|�}nl|rt|�}n^tj	d
|�td|�d���d|vrt|d�}n&|r|rt|�}n|r|
rt|�}n|
rdnd}d|vr1t
|d�t
|�k7rtj!d||�||d<|
r	d|vr|d=|S|rt#|d�|d<|Scc}}w)a�Normalize dictionary network keys returning prefix and address keys.

    @param network: A dict of network-related definition containing prefix,
        netmask and address_keys.
    @param address_keys: A tuple of keys to search for representing the address
        or cidr. The first address_key discovered will be used for
        normalization.

    @returns: A dict containing normalized prefix and matching addr_key.
    rNz No config network address keys [�,z] found in �defaultr�zGateway IP is emptyz	0.0.0.0/0z::/0zInvalid Gateway IP: '�'z$Address %s is not a valid ip networkzAddress z is not a valid ip address�netmask�/r��@�z;Overwriting existing 'prefix' with '%s' in network info: %s)r�rn�joinr�r�r�r/rrrrr�	partitionr
rr�r�r)r�rer�rE�net�addr_keyrO�messager�gw_ip�ipv6�ipv4rr�	addr_part�_�maybe_prefixr�s                 rErjrj�s{��$�M�M�O�
;�D�A�q�q�A��F�1�a�4�
;�C�
;��H�����7�7�3�<��H�����H�H�\�"��
��	�	�	�'����!�!��s�w�w�x� �!�D��y���C�G�G�I�&�'���+�G��I�I�g���W�%�%��5�!��D�
�U�
#��D�-�e�W�A�6�G��I�I�g���W�%�%�����	�	�8�$�?��8�D�6�)C�D�E�E��4� �D��4� �D��g�g�i� �G�
�d�{�%)�^�^�C�%8�"�	�1�l�!��H�
��,�\�:�F�
�,�\�:�F�
�I�I�<�d�C��x��v�-G�H�I�I�	�S���S��]�#��	�T�(��1��	�T�(��1�������3��3�s�8�}�-��V��<����I���	
�
�C��M������I���J�
�0��X��?��I���J��]<s
�I+�I+c�<�td�|j�D��}d|vr|d|d<|d=|jt|d���|j	d�}|r	t|�|d<|S|S#t$r }tdj|��|�d}~wwxYw)	a�normalize a route.
    return a dictionary with only:
       'type': 'route' (only present if it was present in input)
       'network': the network portion of the route as a string.
       'prefix': the network prefix for address as an integer.
       'metric': integer metric (only if present in input).
       'netmask': netmask (string) equivalent to prefix iff network is ipv4.
    c3�4K�|]\}}|dvs�||f���y�w))�NNrVrCs   rErFz#_normalize_route.<locals>.<genexpr>;s$������1�a�A�Z�,?��A���s��	r#r�)r�r#rdrVz(Route config metric {} is not an integerN)	r�r�r�rjrnr�r��	TypeErrorr�)r��normal_routerVr�s    rEr%r%1s����� �;�;�=���L���$�".�}�"=��Y����'������'A�	
���
�
�h�
'�F�
�	�%(��[�L��"�
��<���	�	��:�A�A�&�I���
��	�s� A2�2	B�;B�Bc�F�|sg}|D�cgc]
}t|���c}Scc}wrI)rm)r��ss  rEr�r�Ss$�����*1�2�Q��a� �2�2��2s��
net_configr�c���d}|jd�}|jd�}|dk(r|}|r.|�,t|||��}|j|��|j}|st	d|����|S)zfParses the config, returns NetworkState object

    :param net_config: curtin network config dict
    Nrrr�)rrr&r�zpNo valid network_state object created from network config. Did you specify the correct version? Network config:
)rnr�r�rr�)r�r�r&r�rr�nsis       rE�parse_net_config_datar�Ys���
�E��n�n�Y�'�G�
�^�^�H�
%�F��!�|����6�%�%��F�X�
��	���[��1��!�!����
E��l�
�
�	
��LrG)rV)TN)0rjrb�logging�typingrrrr�	cloudinitrrr	�
cloudinit.netr
rrr
rrrrrr�cloudinit.net.rendererr�	getLoggerrSr�r�r�rHr=r/�__annotations__r�rFrP�	ExceptionrRrergr�rmrjr%r�rr�rVrGrE�<module>r�s�����5�5�/�/�����/��g����!�����-�����(
��+�
� �"5�
�	� 1�
�	�^�	
�
	�o�
�	�^�

�	�,�
�	�4�
�	�+�
�	%�&=�
�	�-�
�	�+�
�	�V�
�	�-�
�	!�"5�
� 	�	�!
�"	 �!:�#
�$#�!7�'
�,'�'�$��$�"��&�*����-#/��$�s�D��c��N�*�+�#�L
�d�
�t�
��	�Y�	��$S8�S8�l[�[�|�:Y�x�D3��
�������	rG

Youez - 2016 - github.com/yon3zu
LinuXploit