BYPASS SHELL BY ./RAZORGANZ
Server: nginx/1.20.1
System: Linux iZdzfnv9mwfppeZ 5.10.134-19.2.al8.x86_64 #1 SMP Wed Oct 29 22:47:09 CST 2025 x86_64
User: apache (48)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: //lib/python3.6/site-packages/cloudinit/net/__pycache__/network_manager.cpython-36.opt-1.pyc
3

�q�h�4�@s�ddlZddlZddlZddlZddlZddlmZddlmZ	ddlm
Z
mZddlm
Z
mZmZddlmZdZdZd	Ze	je�ZGd
d�d�ZGdd
�d
ej�Zddd�Zddd�ZdS)�N)�Optional)�log)�subp�util)�is_ipv6_address�renderer�subnet_is_ipv6)�NetworkStatez/etc/NetworkManagerz/usr/lib/NetworkManagerz'/etc/NetworkManager/NetworkManager.confc@s|eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
edd��Zdd�Zdd�ZdS)�NMConnectionz/Represents a NetworkManager connection profile.cCsRtjd�}tj�|_t|j_d|��ttj||��dd�|jd<ddi|jd<d	S)
z�
        Initializes the connection with some very basic properties,
        notably the UUID so that the connection can be referred to.
        z$a3924cb8-09e0-43e9-890b-77972a800108zcloud-init Z120)�id�uuidzautoconnect-priority�
connectionz%org.freedesktop.NetworkManager.originz
cloud-init�userN)rZUUID�configparserZConfigParser�config�strZoptionxformZuuid5)�self�con_idZ
CI_NM_UUID�r�%/usr/lib/python3.6/network_manager.py�__init__s

zNMConnection.__init__cCs6|jj|�si|j|<|jj||�s2||j||<dS)z_
        Sets a property unless it's already set, ensuring the section
        exists.
        N)rZhas_section�
has_option)r�sectionZoption�valuerrr�_set_default6s
zNMConnection._set_defaultcCs�ddddddddd�}|j|dd�y||}Wn&tk
rVd}d|j|d<YnX|j|ddkrnd	S|j|ddkr�|dkr�d	S||j|d<|j|dd
�d	S)z}
        Ensures there's appropriate [ipv4]/[ipv6] for given family
        appropriate for given configuration type
        Zmanual�auto�dhcp)ZstaticZstatic6Zdhcp6Z
ipv6_slaaczipv6_dhcpv6-statelesszipv6_dhcpv6-statefulZdhcp4r�method�disabled�truezmay-failN�false)r�KeyErrorr)r�familyZsubnet_typeZ
method_maprrrr�_set_ip_methodAs(zNMConnection._set_ip_methodcCsBx<tjd�D].}|�|��}|jj||�s||j||<PqWdS)z�
        Adds a numbered property, such as address<n> or route<n>, ensuring
        the appropriate value gets used for <n>.
        �N)�	itertools�countrr)rrZ
key_prefixr�index�keyrrr�
_add_numberedfs
zNMConnection._add_numberedcCs*|ddt|d�}|j|d|�dS)z5
        Adds an ipv[46]address<n> property.
        �address�/�prefixN)rr))rr"�subnetrrrr�_add_addressrszNMConnection._add_addresscCsB|ddt|d�}d|kr0|d|d}|j|d|�dS)z3
        Adds a ipv[46].route<n> property.
        Znetworkr+r,�gateway�,�routeN)rr))rr"r1rrrr�
_add_routezszNMConnection._add_routecCsPt|�rdnd}|j|dd�|j|dd�|j|d|d|j|d<dS)	zF
        Extends the ipv[46].dns property with a name server.
        �ipv6�ipv4rr�dns��;N)rrr)rr5r"rrr�_add_nameserver�s	zNMConnection._add_nameservercCs8|j|dd�|j|ddj|�d|j|d<dS)zM
        Extends the ipv[46].dns-search property with a name server.
        z
dns-searchr6r7N)rr�join)rr"�
dns_searchrrr�_add_dns_search�szNMConnection._add_dns_searchcCs|jddS)z-
        Returns the connection UUID
        r
r)r)rrrr�con_uuid�szNMConnection.con_uuidcCs|jjdd�S)zN
        Can this be serialized into a meaningful connection profile?
        r
�type)rr)rrrr�valid�szNMConnection.validcCs|jdd�j�S)z)
        Sanitize a MAC address.
        �-�:)�replace�upper)Zaddrrrr�mac_addr�szNMConnection.mac_addrc
Cs�ddddddd�}||d}|dkr*dSd	|kr8d}nd}||jd
d<|dk	r|||jd
d<|j||d�|jd
d
<i|j|<dddddddddd�	ddd�ddiiid�}|d}d}x�|dD]�}	t|	�r�d nd!}
|j|
|	d�d"|	k�r|j|
|	�d#|	k�r |	d#|j|
d#<x|	d$D]}|j|
|��q*Wd%|	k�rhx|	d%D]}|j|��qTWd&|	k�r�|j|
|	d&�|
d!kr�d|	kr�|	d}q�W|dk�r�|}||k�s�tj	d'|d(||�x~||j
�D]n\}
}||k�r�q�||dk�r�q�t||t��r.||�rd)nd*|j||
<nt
||�|j||
<�q�W|dk�r�|d+d,k�rtt
d-�|jdd.<|dk	�r�t
|�|jdd<|d/dk	�r�|j|d/�|jdd0<|dk�r�d1|k�r�|j|d1�|jdd2<|dk�rPx<|d3D]0}|j|�}|jd
dd�|jd
d
|j���q�W|d/dk	�rP|j|d/�|jdd0<|dk�r�|dk	�r�d4|jdd5<t
|�|jdd<|d/dk	�r�|j|d/�|jdd0<|dk�s�|jj|d0��r�|d(|jd
d6<dS)7z�
        Integrate information from network state interface information
        into the connection. Most of the work is done here.
        �ethernet�vlan�bond�bridge�
infinibandN)ZphysicalrErFrGrHZloopbackr=zbond-masterr
z
slave-typez-masterZmasterz	bond-modeZbond_miimonzbond-xmit-hash-policyzbond-num-grat-arpzbond-downdelayzbond-updelayzbond-fail-over-maczbond-primary-reselectzbond-primary)	�modeZmiimonZxmit_hash_policyZnum_grat_arpZ	downdelayZupdelayZ
fail_over_macZprimary_reselectZprimaryZ
bridge_stpZbridge_bridgeprio)ZstpZpriorityrZvlan_id)rFrGrErDrHZmtuZsubnetsr3r4r*r/ZroutesZdns_nameserversr:zZNetwork config: ignoring %s device-level mtu:%s because ipv4 subnet-level mtu:%s provided.�namerr Z	wakeonlanT�@zwake-on-lanZmac_addresszmac-addresszvlan-raw-device�parentZbridge_portsZdatagramztransport-modezinterface-name)r�con_refrr#r.r2r8r;�LOGZwarning�items�
isinstance�boolrrC�get_connrr<r)r�ifacerZ	_type_mapZif_typeZ
slave_typeZ	_prop_mapZ
device_mtuZipv4_mtur-r"r1Z
nameserverZnm_propr(Zportrrr�render_interface�s�











zNMConnection.render_interfacecCs(tj�}|jj|dd�d}||j�S)z
        Stringify.
        F)Zspace_around_delimitersz2# Generated by cloud-init. Changes will be lost.

)�io�StringIOr�write�getvalue)rZbuf�headerrrr�dump@szNMConnection.dumpN)�__name__�
__module__�__qualname__�__doc__rrr#r)r.r2r8r;r<r>�staticmethodrCrTrZrrrrr
s%

r
c@sBeZdZdZddd�Zdd�Zdd�Zd
eee	dd	�d
d�Z
dS)�Rendererz?Renders network information in a NetworkManager keyfile format.NcCs
i|_dS)N)�connections)rrrrrrNszRenderer.__init__cCs
|j|S)N)ra)rrrrrrRQszRenderer.get_conncCs ||jkr|j|j�S|SdS)N)rar<)rrrrrrMTs
zRenderer.con_ref)�
network_state�	templates�returncCs�x&|j�D]}t|d�|j|d<q
Wx*|j�D]}|j|d}|j||�q2Wx<|jj�D].\}}|j�srq`t||�}tj||j	�d�q`WdS)NrJi�)
Ziter_interfacesr
rarTrOr>�
conn_filenamerZ
write_filerZ)rrbrc�targetrSZconnrrJrrr�render_network_state[s	
zRenderer.render_network_state)N)NN)r[r\r]r^rrRrMr	r�dictrgrrrrr`Ks


r`cCs&tj|t�}d|�d�}|�d|��S)Nzcloud-init-z
.nmconnectionz/system-connections/)r�target_path�
NM_RUN_DIR)rrfZtarget_con_dirZcon_filerrrretsrecCszddlm}tjjtj|td��}tjd|d�}d}|�rjytjddd	g�Wntj	k
rhd
}YnX|oxt
|�ox|S)Nr)�uses_systemd)�pathZnmcli)rfTZ	systemctlz
is-enabledzNetworkManager.serviceF)Zcloudinit.distrosrk�osrl�isfilerri�NM_CFG_FILEZwhichZProcessExecutionErrorrQ)rfrkZconfig_presentZ
nmcli_presentZservice_activerrr�	availablezs
rp)N)N)rrUr%rmrZtypingrZ	cloudinitrZloggingrrZ
cloudinit.netrrrZcloudinit.net.network_stater	rjZ
NM_LIB_DIRroZ	getLoggerr[rNr
r`rerprrrr�<module>	s&
2)