HEX
Server: Apache/2.4.65 (Debian)
System: Linux kubikelcreative 5.10.0-35-amd64 #1 SMP Debian 5.10.237-1 (2025-05-19) x86_64
User: www-data (33)
PHP: 8.4.13
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/cloudinit/net/__pycache__/sysconfig.cpython-39.pyc
a

��`��@s0ddlZddlZddlZddlZddlmZddlmZddlm	Z	ddlm
Z
ddlmZddlm
Z
dd	lmZdd
lmZmZmZmZe�e�ZdZgd�Zd&dd�Zdd�Zdd�Zdd�ZGdd�de�ZGdd�de�Z Gdd�de�Z!Gdd�dej"�Z"dd�Z#d'd d!�Z$d(d"d#�Z%d)d$d%�Z&dS)*�N)�	ConfigObj)�log)�util)�subp)�networkmanager_conf)�resolv_conf�)�renderer)�is_ipv6_addr�net_prefix_to_ipv4_mask�subnet_is_ipv6�IPV6_DYNAMIC_TYPESz'/etc/NetworkManager/NetworkManager.conf)�centos�fedora�rhel�suse�#cCsLddg}tdt|��D]*}||r8|d||||<q|||<qd�|�S)NzBCreated by cloud-init on instance boot automatically, do not edit.�r� �
)�range�len�join)�sep�lines�i�r�9/usr/lib/python3/dist-packages/cloudinit/net/sysconfig.py�_make_headers�
rcCsd}|ddko|d|vS)N)z::z0.0.0.0�prefixr�networkr)�route�default_netsrrr�_is_default_route&sr#cCs6t�d|�r.|�d�r$|�d�r$|Sd|Sn|SdS)Nz\s�"z"%s")�re�search�
startswith�endswith)�valuerrr�_quote_value+s

r*cCs�t|�}d|vr�d|dvr2d|ddvr>dSng|dd<t|ddt�rd|dd�d�n|dddg|dd<|��t�d�dS)zEAdd ifcfg-rh to NetworkManager.cfg plugins if main section is present�mainZpluginszifcfg-rhNz'Enabled ifcfg-rh NetworkManager plugins)r�
isinstance�list�append�write�LOG�debug)�path�configrrr�enable_ifcfg_rh6sr4c@sjeZdZdZddd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�	ConfigMapz!Sysconfig like dictionary object.�yes�no)TFcCs
i|_dS�N��_conf��selfrrr�__init__QszConfigMap.__init__cCs||j|<dSr8r9)r<�keyr)rrr�__setitem__TszConfigMap.__setitem__cCs
|j|Sr8r9�r<r>rrr�__getitem__WszConfigMap.__getitem__cCs|j�|�Sr8)r:�getr@rrrrBZsz
ConfigMap.getcCs
||jvSr8r9r@rrr�__contains__]szConfigMap.__contains__cCs|j�|d�dSr8)r:�popr@rrr�drop`szConfigMap.dropcCs
t|j�Sr8)rr:r;rrr�__len__cszConfigMap.__len__cCsdS)z6Skip the pair key, value if it matches a certain rule.Fr�r<r>�valrrr�skip_key_valuefszConfigMap.skip_key_valuecCs�t��}|�t��|jr$|�d�t|j���D]X}|j|}|�||�rNq2t|t	�rb|j
|}t|t�stt|�}|�d|t|�f�q2|�
�S)Nr�%s=%s
)�io�StringIOr/rr:�sorted�keysrIr,�bool�	_bool_map�strr*�getvalue)r<�bufr>r)rrr�	to_stringjs




zConfigMap.to_stringcCs|j�|�dSr8)r:�update)r<ZupdatesrrrrUzszConfigMap.updateN)�__name__�
__module__�__qualname__�__doc__rPr=r?rArBrCrErFrIrTrUrrrrr5Hs�r5csReZdZdZ�fdd�Zdd�Zedd��Zedd	��Zd
d�Z	dd
d�Z
�ZS)�Routez!Represents a route configuration.cs<tt|���d|_d|_d|_||_||_||_||_	dS)NrF)
�superrZr=�last_idx�has_set_default_ipv4�has_set_default_ipv6�_route_name�_base_sysconf_dir�route_fn_tpl_ipv4�route_fn_tpl_ipv6)r<�
route_name�base_sysconf_dir�ipv4_tpl�ipv6_tpl��	__class__rrr=�szRoute.__init__cCs>t|j|j|j|j�}|j��|_|j|_|j|_|j	|_	|Sr8)
rZr_r`rarbr:�copyr\r]r^)r<�rrrrri�s
�z
Route.copycCs|j|j|jd�S�N)�base�name)rar`r_r;rrr�	path_ipv4�s�zRoute.path_ipv4cCs|j|j|jd�Srk)rbr`r_r;rrr�	path_ipv6�s�zRoute.path_ipv6cCsd|vS)N�:r)r<�addressrrr�
is_ipv6_route�szRoute.is_ipv6_route�ipv4c	Cs�|dvrtdt|���t��}|�t��|jr<|�d�d}t|j���D�]�}d|vrN|�	dd�}t|j|�}|dk�rX|�
|��sXt|jd|�}t|jd	|�}|d
}|�ddt|�t|�f�|�dd	t|�t|�f�|�ddt|�t|�f�d|}	|	|jv�r�t|jd|�}
|�ddt|�t|
�f�qN|d
krN|�
|�rNt|jd|�}t|jd	|�}d||jv�r�dt|jd|�nd}
|�d||||
|jf�qN|�
�S)N)rs�ipv6zUnknown protocol '%s'r���ZADDRESSrrs�NETMASK�GATEWAYrrJ�METRICrtzmetric z%s/%s via %s %s dev %s
)�
ValueErrorrQrKrLr/rr:rMrN�replacerrr*r_rR)r<�protorSZreindexr>�indexZ
address_valueZ
netmask_valueZ
gateway_value�
metric_keyZmetric_valuerrrrT�s\
����
����zRoute.to_string)rs)rVrWrXrYr=ri�propertyrnrorrrT�
__classcell__rrrgrrZ~s	

rZcs�eZdZdZdddddd�Zd�fd	d
�	Zedd��Zejd
d��Zedd��Z	e	jdd��Z	edd��Z
ddd�Zdd�Z�Z
S)�NetInterfacezERepresents a sysconfig/networking-script (and its config + children).ZEthernetZBondZBridgeZ
InfiniBand�Vlan)�ethernet�bond�bridge�
infiniband�vlanr�csrtt|���g|_||_|j�d�}t|||�d�|�d�d�|_|j�d�|_||_	||_
||jd<||_dS)N�route_templatesrsrt)rerf�iface_templates�DEVICE)
r[r�r=�children�	templatesrBrZ�routes�iface_fn_tpl�kind�_iface_namer:r`)r<�
iface_namerdr�r�Z	route_tplrgrrr=�s�
zNetInterface.__init__cCs|jSr8)r�r;rrrrm�szNetInterface.namecCs||_||jd<dS)Nr�)r�r:)r<r�rrrrm�scCs|jSr8)�_kindr;rrrr��szNetInterface.kindcCs,||jvrt|��||_|j||jd<dS)N�TYPE)�iface_typesryr�r:)r<r�rrrr��s
cCs|j|j|jd�Srk)r�r`rmr;rrrr2s�zNetInterface.pathFcCsHt|j|j|j|jd�}|j��|_|r4t|j�|_|rD|j	��|_	|S)N)r�)
r�rmr`r�r�r:rir-r�r�)r<Z
copy_childrenZcopy_routes�crrrris
�zNetInterface.copycCs|dkr|dkrdSdS)Nr�r�TFrrGrrrrIszNetInterface.skip_key_value)r�)FF)rVrWrXrYr�r=r~rm�setterr�r2rirIrrrrgrr��s*�	�






r�c@seZdZdZddddd�ddd�d	�Zd
ddd
ddd�dddddd�d	�Zegd��ZiZd4dd�Z	e
dd��Ze
dd��Ze
dd��Z
e
d d!��Ze
d"d#��Ze
d$d%��Ze
d&d'��Zed5d(d)��Zed6d*d+��Ze
d,d-��Ze
d.d/��Ze
d7d0d1��Zd8d2d3�ZdS)9�Rendererz7Renders network information in a /etc/sysconfig format.TF�none)�ONBOOTZUSERCTLZ
NM_CONTROLLED�	BOOTPROTO�static�auto)r��	STARTMODE)rr�IPV6_FORCE_ACCEPT_RAZSTPZAGEINGZPRIOZHWADDR�MTU)�	accept-ra�
bridge_stp�
bridge_ageing�bridge_bridgeprio�mac_address�mtu�
BRIDGE_STPZBRIDGE_AGEINGTIMEZBRIDGE_PRIORITY�LLADDR)r�r�r�r�r�))Z	bond_modezmode=%s)Zbond_xmit_hash_policyzxmit_hash_policy=%s)Zbond_miimonz	miimon=%s)Zbond_min_linkszmin_links=%s)Zbond_arp_intervalzarp_interval=%s)Zbond_arp_ip_targetzarp_ip_target=%s)Zbond_arp_validatezarp_validate=%s)Zbond_ad_selectzad_select=%s)Zbond_num_grat_arpznum_grat_arp=%s)Zbond_downdelayzdowndelay=%s)Zbond_updelayz
updelay=%s)Zbond_lacp_ratezlacp_rate=%s)Zbond_fail_over_maczfail_over_mac=%s)Zbond_primaryz
primary=%s)Zbond_primary_reselectzprimary_reselect=%sNcCsv|si}|�dd�|_|�dd�|_|�dd�|_d}|�d|�|_|�d	�|�d
�|�d�d�|_|�d
d�|_dS)N�sysconf_dirz
etc/sysconfig�
netrules_pathz(etc/udev/rules.d/70-persistent-net.rules�dns_pathzetc/resolv.confz,etc/NetworkManager/conf.d/99-cloud-init.conf�networkmanager_conf_path�controlr�r�)r�r�r��flavorr)rBr�r�r�r�r�r�)r<r3�nm_conf_pathrrrr=Qs ���zRenderer.__init__cCs�t�|j�|i��}|�|�dD]H}|�|�}|dur"|dkrN|ddvrNq"|j|�|�}|r"|||<q"d|vr�|dr�|ddkr�d|d<dS)	N)r�r�r�r��type)�physicalr��	wakeonlanr�zwol gZETHTOOL_OPTS)ri�deepcopy�iface_defaultsrBrU�cfg_key_maps)�cls�iface�	iface_cfgr�Zflavor_defaults�old_key�	old_value�new_keyrrr�_render_iface_sharedbs 


�

�zRenderer._render_iface_sharedcCsF|dkr,d|d<d|vr4d|d<|�d�nd|d<t|t|j�d�D�]�\}}d}|�d	�}|d
ksn|dkr�|dkr�|ddkr�d|d<nd
|d<d
|d<nd|d<d|d<�n�|dk�r|dkr�|ddkr�d|d<nd
|d<d|d<n d|d<d|d<d|d<d|d<�n�|dk�rb|dk�rN|ddk�r<d|d<nd
|d<d|d<nd|d<d|d<�nN|dv�r�|d}	d|d<|dk�r�|dk�r�|	d
k�r�d|d<�n
|dv�rnt|��r�|dk�r�d}d|d<d|v�rHt||v�o�|d||k�}
|
�rt�d|j	|||d�t|��r<|dk�r.n|d||<n|d||<t|��r�|dk�r�d|d<d|d<nB|d k�r�|dk�r�t�
d!|�n||v|d"<ntd#||j	f��|�d$�d krF|dk�r�d |d%<qFd|d"<qFd&}d&}t|t|j�d�D�]H\}}|�d	�}d'|v�r*|dk�r*|d'|d(<|d)v�rb|dk�r�|�r�|ddk�r�d|d*<�q��q�|tv�rt�q��q�|dv�r�t|��r"|d+}d,|d-|d.f}
|d/k�r�|dk�r�|
|d0<n|
|d1<nT|d+k�r�|dk�r�|
|d2<n|
|d3<n,|dk�r|
|d4|<n|d3d5|
7<nB|d+}|d/k�r8d6nt
|�}|d-|d7|<t|d.�|d8|<d9|v�r�|dk�r�d|d:<t|d9��r�|d9|d;<n|d9|d<<d=|v�r�|dk�r�d5�|d=�|d><d?|v�r�|dk�r�t|d?�d@k�rt�
dA|j	t|d?��t|d?dd@�d+�D]\}}||dBt
|�<�q"�q�dS)CNrr�r��BRIDGE�dhcpr���startr�r��dhcp6zipv6_dhcpv6-stateful�dhcp4ZmanagedZDHCLIENT6_MODETZIPV6INITZDHCPV6Czipv6_dhcpv6-stateless�infoZ
IPV6_AUTOCONFz-SZDHCPV6C_OPTIONS�
ipv6_slaac)r�r�)r��static6ZIPV6_MTUr�zZNetwork config: ignoring %s device-level mtu:%s because ipv4 subnet-level mtu:%s provided.rFr��manualz Unknown subnet type setting "%s"r�z1Unknown subnet type '%s' found for interface '%s'r�r�ru�metricrx�r�r��DHCLIENT_SET_DEFAULT_ROUTErz%s/%srqrrZIPADDR6ZIPV6ADDRZ	IPADDR6_1ZIPV6ADDR_SECONDARIESz
IPADDR6_%drrZIPADDRrv�gateway�DEFROUTE�IPV6_DEFAULTGWrw�
dns_searchZDOMAIN�dns_nameservers�z6%s has %d entries in dns_nameservers. Only 3 are used.�DNS)rE�	enumeraterr�rBrrOr0�warningrmr1ryr
rQrr
r)r�r��subnets�has_default_router�r�subnetZmtu_key�subnet_typeZbootproto_inZmtu_mismatchZ
ipv4_indexZ
ipv6_indexZ	ipv6_cidr�suff�krrr�_render_subnetsws�













��




��



















�
�

�zRenderer._render_subnetscCs�|dkrdSt|t|j�d�D�]d\}}|�d�}|�dg�D�]B}|�d�pXt|d�}	t|��r|tv�r|�d�r~|js�|�d�r�|jr�t	d|j
��d	}
d
}d}d|d
<|ddvr�d|d<d|vr�|	r�|d|d<d|_n|d|d<d|_d|v�r�|d|d<q>d|j}
d|j}d|j}d|j}
|jd7_d|
fd|
fd|fd|ffD] \}}||v�r`||||<�q`q>qdS)Nrr�r�r�rtr�rsz?Duplicate declaration of default route found for interface '%s'ZGATEWAY0ZNETMASK0ZADDRESS0Tr�r�r�r�r�rwr�rxz	GATEWAY%sz	NETMASK%sz	ADDRESS%szMETRIC%sr�netmaskr )r�rr�rBr
r#r
r]r^ryrmr\)r�r��	route_cfgr�r��_r�r�r!�is_ipv6Zgw_keyZnm_key�addr_keyr}r�r�rrr�_render_subnet_routes,s\
������




�
zRenderer._render_subnet_routescCs~g}|jD]\\}}||�dd�g}|D]>}||vr&||}t|ttf�rRd�|�}|�||�q
q&q
|rzd�|�|d<dS)Nr��-rZBONDING_OPTS)�
bond_tpl_optsrzr,�tupler-rr.)r�r�r�Z	bond_optsZbond_keyZ	value_tplZ	bond_keysZ
bond_valuerrr�_render_bonding_optsis
zRenderer._render_bonding_optsc
Cs^tj}|�|�D]H}|d}|�dg�}||}|j}	|�|||j|�|�||	||�qdS)Nrmr�)r	�filter_by_physical�iter_interfacesrBr�r�r�r�)
r��
network_state�iface_contentsr�Zphysical_filterr�r��
iface_subnetsr�r�rrr�_render_physical_interfacesys��z$Renderer._render_physical_interfacescsbt�d�}t�d�}|�|�D�]<}|d�|�}|�||�|g}|�|j�|D]}	d|	d<|dkrVd|	_qV|�d�r�|dkr�|�d�|d<n|�d�|d	<|�d
g�}
|j	}|�
||
|j|�|�|||
|�t
�fdd�|�|�D��}t|�D]`\}
}|dk�rd
|
}nd|
}|||<||}|dk�rJd|d<d|d<q��|d<d|d<q�qdS)Nr��bond-masterrmTZBONDING_MASTERrr�r��MACADDRr�cs g|]}|d�kr|d�qS)r�rmr)�.0Zslave_iface�r�rr�
<listcomp>�s�z4Renderer._render_bond_interfaces.<locals>.<listcomp>zBONDING_SLAVE_%szBONDING_SLAVE%sr�r��hotplugr�ZMASTERZSLAVE)r	�filter_by_type�filter_by_attrr�r��extendr�r�rBr�r�r�r�rMr�)r�r�r�r�Zbond_filterZslave_filterr�r�Zmaster_cfgsZ
master_cfgr�r�Zbond_slavesr|Z
bond_slaveZslavestrZ	slave_cfgrr�r�_render_bond_interfaces�sR


��
��



z Renderer._render_bond_interfacesc
	Cs�t�d�}|�|�D]�}|d}||}|dkr^|�d�}|rF||d<|d|�d��|d<nJd|d	<d|_|d
}	t|	|d�}
||
vr�t�d||	d�	|
��|	|d
<|�dg�}|j
}|�|||j|�|�
||||�qdS)Nr�rmr�vlan_idZVLAN_ID�.ZETHERDEVICETZVLANzvlan-raw-devicezIName '%s' for vlan '%s' is not officially supportedby RHEL. Supported: %srZPHYSDEVr�)r	r�r�rB�rfindr��_supported_vlan_namesr0r�rr�r�r�r�)
r�r�r�r�Zvlan_filterr�r�r�r��rdevZ	supportedr�r�rrr�_render_vlan_interfaces�s8

���z Renderer._render_vlan_interfacescCs�tt|j�t|j�g�sdSt�d�}|rFtj�|�rFt�t	�
|��}|jD]}|�|�qL|jD]}|�|�qbt
d�}t|�}|�|�s�|d|}|S)Nr�;r)�anyrr��dns_searchdomainsr�
ResolvConf�osr2�isfiler�	load_file�add_nameserver�add_search_domainrrQr')r��existing_dns_path�content�
nameserverZsearchdomain�headerZcontent_strrrr�_render_dns�s 
�



zRenderer._render_dnscCsPt�d�}|jr|�ddd�t|�dkr.dSd�t�dd�|���dg�}|S)Nrr+�dnsr�rr)rZNetworkManagerConfr�Zset_section_keypairrrrr/)r�r�r�outrrr�_render_networkmanager_conf�s
z$Renderer._render_networkmanager_confcCs�dd�|j|��D�}t�d�}|�|�D�]P}|d}||}|dkrPd|_|��D]\}	}
|	|vrX||	||
<qX|dkr�d|vr�|�d�r�d|d<nd|d<|�d	�r�d
}|dkr�d}|�d	�||<|dkr�|�dg�r�d
d�|�d��|d<|�dg�D]F}||}
|
g}|�|
j	�|D] }|}|dk�r:d}||d<�q$�q|�dg�}|j
}|�|||j|�|�
||||�q,dS)NcSs i|]\}}|�d�r||�qS)r�)r')r�Zold_kZnew_krrr�
<dictcomp>
s
�z6Renderer._render_bridge_interfaces.<locals>.<dictcomp>r�rmrr��on�offr�r�Z	LLADDRESS�bridge_portsz%srZBRIDGE_PORTSr6r�r�)r��itemsr	r�r�r�rBrr�r�r�r�r�r�)r�r�r�r�Zbridge_key_mapZ
bridge_filterr�r�r�r�r�r>Zbridged_iface_nameZbridged_cfgZbridged_cfgsZ
bridge_cfgZbridge_valuer�r�rrr�_render_bridge_interfacessZ�



�

��z"Renderer._render_bridge_interfacesc
Csht�d�}|�|�D]N}|d}||}d|_|�dg�}|j}	|�|||j|�|�||	||�qdS)Nr�rmr�)	r	r�r�r�rBr�r�r�r�)
r�r�r�r�Z	ib_filterr�r�r�r�r�rrr�_render_ib_interfacesAs
��zRenderer._render_ib_interfacescCsN|s
|j}i}|��D]X}|ddkr(q|d}t|||�}|dkrX|�d�|�d�|�|||�|||<q|�|||�|�|||�|�|||�|�|||�|�	|||�i}	|�
�D]�\}}|s�|j�r|��|	|j
<|jD]}|r�|��|	|j
<q�|jr�t|jj|jjgddg�D]$\}
}|
|	v�r"|j�|�|	|
<�q"q�|	S)	z3Given state, return /etc/sysconfig files + contentsr��loopbackrmrr�r�rsrt)r�r�r�rEr�r�r�r�rrr
r�rTr2r��ziprnro)r�rdr�r�r�r�r�r�r��contentsZcpathr{rrr�_render_sysconfigRsD



��
zRenderer._render_sysconfigcCsl|s
|j}d}t�||j�}|j|||j|d���D]\}}t�|||�q4|j	r�t�||j	�}|j
||d�}	|	r�t�||	|�|jr�t�||j�}
|�||�}|r�t�|
||�|j
r�|�|�}t�||j
�}
t�|
||�t|d�r�ttj|td��t�||�d��}|�d��rht�tj�|��t�dg}|j�rP|�d	�|�d
�t�|d�|�d|�dS)Ni�)r�)r��target�r2r�r zNETWORKING=yeszNETWORKING_IPV6=yeszIPV6_AUTOCONF=nor)r�r�target_pathr�rr�r
r�
write_filer�rr�rr��_render_persistent_net�available_nmr4�NM_CFG_FILErBr(�
ensure_dirr�r2�dirnamer�use_ipv6r.r)r<r�r�rZ	file_moderdr2�datar�Zresolv_contentr�Znm_conf_contentZnetrules_contentr�Zsysconfig_path�netcfgrrr�render_network_statexsR����




�zRenderer.render_network_state)N)N)N)N)NN)rVrWrXrYr�r�r�r�r�r=�classmethodr�r�r�r�r�r�r��staticmethodrrrrrr!rrrrr�sd���	��


5
<


7
!
8
�%r�cs��fdd�dD�S)ziReturn list of supported names for vlan devices per RHEL doc
    11.5. Naming Scheme for VLAN Interfaces.csg|]}|j�t��d��qS)�r�Zvid)�format�int)r��vr$rrr��s�z)_supported_vlan_names.<locals>.<listcomp>)z{rdev}{vid:04}z{rdev}{vid}z{rdev}.{vid:04}z{rdev}.{vid}rr$rr$rr��s�r�cCs0t|d�}t|d�}t��dtvo.t||g�S)Nr�variant)�available_sysconfigrr�system_info�
KNOWN_DISTROSr�)r�	sysconfig�nmrrr�	available�s



�r.cCs`ddg}ddg}|D]}tj|||d�sdSqddg}|D]}tj�t�||��r<d	Sq<dS)
N�ifup�ifdownz/sbinz	/usr/sbin)r&rFz/etc/sysconfig/network-scripts/network-functionszetc/sysconfig/configT)r�whichr�r2r�r)r�expectedr&�pZexpected_pathsrrrr)�s�r)cCstj�tj|td��sdSdS)NrFT)r�r2r�rrrrrrrr�sr)r)N)N)N)'rirKr�r%Z	configobjr�	cloudinitr�loggingrr�cloudinit.distros.parsersrrrr	r�r
rrr
�	getLoggerrVr0rr+rr#r*r4�objectr5rZr�r�r�r.r)rrrrr�<module>s>


6YD