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__/sysconfig.cpython-36.pyc
3

�q�hT��@s>ddlZddlZddlZddlZddlZddlmZmZddlm	Z
ddlmZmZddl
mZmZddlmZmZmZmZmZddlmZe
je�Zdd	d
ddd
ddddddddddgZd/dd�Zdd�Zdd�ZGdd �d �ZGd!d"�d"e�Z Gd#d$�d$e�Z!Gd%d&�d&ej"�Z"d'd(�Z#d0d)d*�Z$d1d+d,�Z%d2d-d.�Z&dS)3�N)�Mapping�Optional)�log)�subp�util)�networkmanager_conf�resolv_conf)�IPV6_DYNAMIC_TYPES�is_ipv6_address�net_prefix_to_ipv4_mask�renderer�subnet_is_ipv6)�NetworkStateZalinuxZ	almalinuxZanolisZcentosZ
cloudlinuxZ	eurolinuxZfedoraZmiraclelinuxZ	openEulerZOpenCloudOSZopenmandriva�rhelZrocky�suseZ	TencentOSZ	virtuozzo�#cCsPddg}x<tdt|��D]*}||r:|d||||<q|||<qWdj|�S)NzBCreated by cloud-init on instance boot automatically, do not edit.�r� �
)�range�len�join)�sep�lines�i�r�/usr/lib/python3.6/sysconfig.py�_make_header+srcCsd}|ddko|d|kS)N�::�0.0.0.0�prefixr�network)rrr)�routeZdefault_netsrrr�_is_default_route8sr#cCs6tjd|�r.|jd�r$|jd�r$|Sd|Sn|SdS)Nz\s�"z"%s")�re�search�
startswith�endswith)�valuerrr�_quote_value=s

r*c@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|<dS)N)r.)r/�keyr)rrr�__setitem__TszConfigMap.__setitem__cCs
|j|S)N)r.)r/r1rrr�__getitem__WszConfigMap.__getitem__cCs|jj|�S)N)r.�get)r/r1rrrr4Zsz
ConfigMap.getcCs
||jkS)N)r.)r/r1rrr�__contains__]szConfigMap.__contains__cCs|jj|d�dS)N)r.�pop)r/r1rrr�drop`szConfigMap.dropcCs
t|j�S)N)rr.)r/rrr�__len__cszConfigMap.__len__cCsdS)z6Skip the pair key, value if it matches a certain rule.Fr)r/r1�valrrr�skip_key_valuefszConfigMap.skip_key_valuecCs�tj�}|jt��|jr$|jd�xjt|jj��D]X}|j|}|j||�rPq4t|t	�rd|j
|}t|t�svt|�}|jd|t|�f�q4W|j
�S)Nrz%s=%s
)�io�StringIO�writerr.�sorted�keysr:�
isinstance�bool�	_bool_map�strr*�getvalue)r/�bufr1r)rrr�	to_stringjs




zConfigMap.to_stringcCs|jj|�dS)N)r.�update)r/ZupdatesrrrrGzszConfigMap.updateN)�__name__�
__module__�__qualname__�__doc__rBr0r2r3r4r5r7r8r:rFrGrrrrr+Hsr+csReZdZdZ�fdd�Zdd�Zedd��Zedd	��Zd
d�Z	dd
d�Z
�ZS)�Routez!Represents a route configuration.cs<tt|�j�d|_d|_d|_||_||_||_||_	dS)N�F)
�superrLr0�last_idx�has_set_default_ipv4�has_set_default_ipv6�_route_name�_base_sysconf_dir�route_fn_tpl_ipv4�route_fn_tpl_ipv6)r/Z
route_name�base_sysconf_dir�ipv4_tpl�ipv6_tpl)�	__class__rrr0�szRoute.__init__cCs>t|j|j|j|j�}|jj�|_|j|_|j|_|j	|_	|S)N)
rLrRrSrTrUr.�copyrOrPrQ)r/�rrrrrZ�sz
Route.copycCs|j|j|jd�S)N)�base�name)rTrSrR)r/rrr�	path_ipv4�szRoute.path_ipv4cCs|j|j|jd�S)N)r\r])rUrSrR)r/rrr�	path_ipv6�szRoute.path_ipv6cCsd|kS)N�:r)r/�addressrrr�
is_ipv6_route�szRoute.is_ipv6_route�ipv4cCs�|dkrtdt|���tj�}|jt��|jr<|jd�d}�x�t|jj��D�]p}d|krbqR|j	dd�}t|j|�}t|jd|�}|dko�|j
|��rZt|jd	|�}|d}|jd
dt|�t|�f�|jd
dt|�t|�f�|jd
d	t|�t|�f�d|}	|	|jk�r�t|j|	�}
|jd
dt|�t|
�f�qR|dkrR|j
|�rRt|jd|���}d||jk�r�d
t|jd|�nd}
|jd||||
|jf�qRW|j
�S)Nrc�ipv6zUnknown protocol '%s'rrM�ADDRESSr�GATEWAY�NETMASKz%s=%s
�METRIC�PREFIXzmetric z%s/%s via %s %s dev %s
)rcrd���)�
ValueErrorrCr;r<r=rr.r>r?�replacerbr*rRrD)r/�protorEZreindexr1�indexZ
address_valueZ
gateway_valueZ
netmask_valueZ
metric_keyZmetric_valueZprefix_valuerrrrF�sV
&zRoute.to_string)rc)rHrIrJrKr0rZ�propertyr^r_rbrF�
__classcell__rr)rYrrL~s

rLcs�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�vlanrscsrtt|�j�g|_||_|jjd�}t|||jd�|jd�d�|_|jjd�|_||_	||_
||jd<||_dS)N�route_templatesrcrd)rWrX�iface_templates�DEVICE)
rNrqr0�children�	templatesr4rL�routes�iface_fn_tpl�kind�_iface_namer.rS)r/�
iface_namerVr|rZ	route_tpl)rYrrr0�s
zNetInterface.__init__cCs|jS)N)r�)r/rrrr]szNetInterface.namecCs||_||jd<dS)Nrz)r�r.)r/r�rrrr]scCs|jS)N)�_kind)r/rrrrszNetInterface.kindcCs,||jkrt|��||_|j||jd<dS)N�TYPE)�iface_typesrkr�r.)r/rrrrrs
cCs|j|j|jd�S)N)r\r])r~rSr])r/rrr�pathszNetInterface.pathFcCsHt|j|j|j|jd�}|jj�|_|r4t|j�|_|rD|j	j�|_	|S)N)r)
rqr]rSr|r�r.rZ�listr{r})r/Z
copy_childrenZcopy_routes�crrrrZ%szNetInterface.copycCs|dkr|dkrdSdS)Nr�rrTFr)r/r1r9rrrr:0szNetInterface.skip_key_value)rs)FF)rHrIrJrKr�r0ror]�setterrr�rZr:rprr)rYrrq�s
rqc@s4eZdZUdZdddd�ddd�d	�Zd
ddd
ddd�dddddd�d	�ZedRdSdTdUdVdWdXdYdZd[d\d]d^d_d`g�ZiZe	dad5d6�Z
ed7d8��Zed9d:��Z
ed;d<��Zed=d>��Zed?d@��ZedAdB��ZedCdD��ZedbdEdF��ZedcdGdH��ZedIdJ��ZedKdL��ZedddMdN��Zdeeee	d4dO�dPdQ�Zd4S)f�Rendererz7Renders network information in a /etc/sysconfig format.TF�none)�ONBOOTZUSERCTL�	BOOTPROTO�static�auto)r��	STARTMODE)rr�IPV6_FORCE_ACCEPT_RAZSTPZAGEINGZPRIOZHWADDR�MTU)z	accept-ra�
bridge_stp�
bridge_ageing�bridge_bridgeprio�mac_address�mtu�
BRIDGE_STPZBRIDGE_AGEINGTIMEZBRIDGE_PRIORITY�LLADDR)r�r�r�r�r��	bond_mode�mode=%s�bond_xmit_hash_policy�xmit_hash_policy=%s�bond_miimon�	miimon=%s�bond_min_links�min_links=%s�bond_arp_interval�arp_interval=%s�bond_arp_ip_target�arp_ip_target=%s�bond_arp_validate�arp_validate=%s�bond_ad_select�ad_select=%s�bond_num_grat_arp�num_grat_arp=%s�bond_downdelay�downdelay=%s�bond_updelay�
updelay=%s�bond_lacp_rate�lacp_rate=%s�bond_fail_over_mac�fail_over_mac=%s�bond_primary�
primary=%s�bond_primary_reselect�primary_reselect=%sNcCsv|si}|jdd�|_|jdd�|_|jdd�|_d}|jd|�|_|jd	�|jd
�|jd�d�|_|jd
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�controlryrx)r�ryrx�flavorr)r4r�r�r�r�r|r�)r/�config�nm_conf_pathrrrr0rs

zRenderer.__init__cCs�tj|jj|i��}|j|�xPd
D]H}|j|�}|dk	r$|dkrP|ddkrPq$|j|j|�}|r$|||<q$Wd|kr�|dr�|ddkr�d|d	<dS)Nr�r��	accept-ra�type�physicalrvZ	wakeonlanzwol gZETHTOOL_OPTS)r�r�r�)r�rv)rZ�deepcopy�iface_defaultsr4rG�cfg_key_maps)�cls�iface�	iface_cfgr�Zflavor_defaults�old_keyZ	old_value�new_keyrrr�_render_iface_shared�s 


zRenderer._render_iface_sharedcCs�|dkr,d|d<d|kr4d|d<|jd�nd|d<�x�t|t|j�d�D�]�\}}d}|jd	�}|d
ksr|dkr�|dkr�|ddkr�d|d<nd
|d<d
|d<nB|dkr�|dkr�d|d<d|d<d|d<d|d<nd|d<d|d<�n|dk�rJ|dk�r&|ddk�rd|d<nd
|d<d|d<n d|d<d|d<d|d<d|d<�n�|dk�r�|dk�r�|ddk�rvd|d<nd
|d<d|d<nd|d<d|d<�nN|dBk�r�|d}	d|d<|dk�r�|dk�r�|	d
k�r�d|d<�n
|dCk�r�t|��r
|dk�r
d}d|d<d|k�r�t||k�o.|d||k�}
|
�rRtjd|j	|||d�t|��rv|dk�rhn|d||<n|d||<t|��r�|dk�r�d|d<d|d<nB|dk�r�|dk�r�tj
d |�n||k|d!<ntd"||j	f��|jd#�dkrJ|dk�rd|d$<qJd|d!<qJWdD}dE}�x�t|t|j�d�D�]|\}}|jd	�}d&|k�r�|dk�r�t|��rv|d&|d'<n|d&|d(<n|dk�r�|d&|d)<|dFk�r�|dk�r6|�r6|ddk�r6d|d*<�q6�q6|tk�r�q6�q6|dGk�r6t|��r�|d%}d+|d,|d-f}
|d.k�r<|dk�r2|
|d/<n|
|d0<nT|d%k�rd|dk�rZ|
|d1<n|
|d2<n,|dk�r||
|d3|<n|d2d4|
7<nB|d%}|d.k�r�d5nt
|�}|d,|d6|<t|d-�|d7|<d8|k�r|dk�rd|d9<t|d8��r|d8|d:<n|d8|d;<d<|k�r>|dk�r>d4j|d<�|d=<d>|k�r6|dk�r6t|d>�d?k�r|tj
d@|j	t|d>��x4t|d>dd?�d%�D]\}}||dAt
|�<�q�W�q6WdS)HNrr�r��BRIDGE�dhcpr�)�startr�r�Zdhcp6zipv6_dhcpv6-stateful�dhcp4ZmanagedZDHCLIENT6_MODErTZDHCPV6CZIPV6INITFZ
IPV6_AUTOCONFzipv6_dhcpv6-stateless�infoz-SZDHCPV6C_OPTIONSZ
ipv6_slaac�static6ZIPV6_MTUr�zZNetwork config: ignoring %s device-level mtu:%s because ipv4 subnet-level mtu:%s provided.r�Zmanualz Unknown subnet type setting "%s"r�z1Unknown subnet type '%s' found for interface '%s'r�r�rM�metric�IPV6_ROUTE_METRIC�IPV4_ROUTE_METRICrh�DHCLIENT_SET_DEFAULT_ROUTEz%s/%srar rZIPADDR6ZIPV6ADDRZ	IPADDR6_1ZIPV6ADDR_SECONDARIESz
IPADDR6_%drrZIPADDRrg�gateway�DEFROUTE�IPV6_DEFAULTGWrfZ
dns_searchZDOMAIN�dns_nameservers�z6%s has %d entries in dns_nameservers. Only 3 are used.ZDNS)r�r�)r�r�rjrj)r�r�)r�r�)r7�	enumeraterr{r4r
rA�LOGZwarningr]�debugrkr	rCrr
r)r�r��subnets�has_default_router�r�subnetZmtu_key�subnet_typeZbootproto_inZmtu_mismatchZ
ipv4_indexZ
ipv6_indexZ	ipv6_cidrZsuff�krrr�_render_subnets�s
 
























 


















 zRenderer._render_subnetsc
Cs�|dkrdS�xvt|t|j�d�D�]^\}}|jd�}�xH|jdg�D�]6}|jd�p`t|d�}	t|�op|tk�r8|jd�r�|js�|jd�r�|jr�t	d|j
��d	|d
<|ddkr�d	|d<d|kr�|	r�|d|d<d	|_n|d|d<d	|_d|k�r~|dk�r*t|��r|d|d<n|d|d<n|d|d<qFx6d#D].\}
}|
|k�r>|�|j��}||
||<�q>W|jd7_qFWq"WdS)$Nr)r�r�r}rdr�rcz?Duplicate declaration of default route found for interface '%s'Tr�r�r�r�r�r�rfr�rr�r�rhr ri�netmaskrgr!rerM)r�r��r�rf�r�rh�r ri�r�rg�r!re)r�r�r�r�r�)
r�rr{r4r
r#r	rPrQrkr]r
rO)
r�r��	route_cfgr�r��_r�r�r"Zis_ipv6r��new_namer�rrr�_render_subnet_routeslsR 







zRenderer._render_subnet_routesc	Cs�g}xh|jD]^\}}||jdd�g}xD|D]<}||kr*||}t|ttf�rVdj|�}|j||�Pq*WqW|r�|dkr�dj|�|d<ndj|�|d<dS)Nr��-rrZBONDING_MODULE_OPTSZBONDING_OPTS)�
bond_tpl_optsrlr@�tupler�r�append)	r�r�r�r�Z	bond_optsZbond_keyZ	value_tplZ	bond_keysZ
bond_valuerrr�_render_bonding_opts�s


zRenderer._render_bonding_optsc
Csbtj}xV|j|�D]H}|d}|jdg�}||}|j}	|j|||j|�|j||	||�qWdS)Nr]r�)rZfilter_by_physical�iter_interfacesr4r}r�r�r�)
r��
network_state�iface_contentsr�Zphysical_filterr�r��
iface_subnetsr�r�rrr�_render_physical_interfaces�sz$Renderer._render_physical_interfacescsttjd�}tjd�}�xX|j|�D�]H}|d�|�}|j|||�|g}|j|j�x"|D]}	d|	d<|dkr^d|	_q^W|jd�r�|dkr�|jd�|d<n|jd�|d	<|jd
g�}
|j	}|j
||
|j|�|j|||
|�t
�fdd�|j|�D��}xnt|�D]b\}
}|dk�r"d
|
}nd|
}|||<||}|dk�rVd|d<d|d<n�|d<d|d<�qWq"WdS)Nrtzbond-masterr]TZBONDING_MASTERrr�r��MACADDRr�cs g|]}|d�kr|d�qS)zbond-masterr]r)�.0Zslave_iface)r�rr�
<listcomp>sz4Renderer._render_bond_interfaces.<locals>.<listcomp>zBONDING_SLAVE_%szBONDING_SLAVE%sr�r�Zhotplugr�ZMASTERZSLAVE)r�filter_by_typeZfilter_by_attrr�r��extendr{rr4r}r�r�r�r>r�)r�r�r�r�Zbond_filterZslave_filterr�r�Zmaster_cfgsZ
master_cfgr�r�Zbond_slavesrnZ
bond_slaveZslavestrZ	slave_cfgr)r�r�_render_bond_interfaces�sP









z Renderer._render_bond_interfacesc
Cs�tjd�}x�|j|�D]�}|d}||}|dkr`|jd�}|rH||d<|d|jd��|d<nJd|d	<d|_|d
}	t|	|d�}
||
kr�tjd||	dj	|
��|	|d
<|jdg�}|j
}|j|||j|�|j
||||�qWdS)Nrwr]r�vlan_idZVLAN_ID�.ZETHERDEVICETZVLANzvlan-raw-devicezIName '%s' for vlan '%s' is not officially supportedby RHEL. Supported: %srZPHYSDEVr�)rr�r�r4�rfindr�_supported_vlan_namesr�r�rr}r�r�r�)
r�r�r�r�Zvlan_filterr�r�r�r��rdevZ	supportedr�r�rrr�_render_vlan_interfaces#s:

z Renderer._render_vlan_interfacescCs�tt|j�t|j�g�sdStjd�}|rFtjj|�rFtjt	j
|��}x|jD]}|j|�qNWx|jD]}|j|�qhWt
d�}t|�}|j|�s�|d|}|S)Nr�;r)�anyrr�Zdns_searchdomainsrZ
ResolvConf�osr��isfilerZ	load_fileZadd_nameserverZadd_search_domainrrCr')r��existing_dns_path�contentZ
nameserverZsearchdomain�headerZcontent_strrrr�_render_dnsJs 

zRenderer._render_dnscCsPtjd�}|jr|jddd�t|�dkr.dSdjt�ddj|j��dg�}|S)Nr�mainZdnsr�rr)rZNetworkManagerConfr�Zset_section_keypairrrrr=)r�r|r�outrrr�_render_networkmanager_confas
z$Renderer._render_networkmanager_confcCs�dd�|j|j�D�}tjd�}�xl|j|�D�]\}|d}||}|dkrTd|_x(|j�D]\}	}
|	|kr^||	||
<q^W|dkr�d|kr�|jd�r�d|d<nd|d<|jd	�r�d
}|dkr�d}|jd	�||<|dkr�|jdg�r�d
dj|jd��|d<xZ|jdg�D]J}||}
|
g}|j|
j	�x(|D] }|}|dk�rFd}||d<�q0W�qW|jdg�}|j
}|j|||j|�|j
||||�q0WdS)NcSs i|]\}}|jd�r||�qS)ru)r')r�Zold_kZnew_krrr�
<dictcomp>rsz6Renderer._render_bridge_interfaces.<locals>.<dictcomp>rur]rr�ZonZoffr�r�Z	LLADDRESSZbridge_portsz%srZBRIDGE_PORTSr,r�r�)r��itemsrr�r�rr4rr�r{r}r�r�r�)r�r�r�r�Zbridge_key_mapZ
bridge_filterr�r�r�r�r�r1Zbridged_iface_nameZbridged_cfgZbridged_cfgsZ
bridge_cfgZbridge_valuer�r�rrr�_render_bridge_interfacespsV





z"Renderer._render_bridge_interfacesc
Csltjd�}x\|j|�D]N}|d}||}d|_|jdg�}|j}	|j|||j|�|j||	||�qWdS)Nrvr]r�)	rr�r�rr4r}r�r�r�)
r�r�r�r�Z	ib_filterr�r�r�r�r�rrr�_render_ib_interfaces�s
zRenderer._render_ib_interfacescCs^|s
|j}i}xd|j�D]X}|ddkr*q|d}t|||�}|dkrZ|jd�|jd�|j|||�|||<qW|j|||�|j|||�|j|||�|j|||�|j	|||�i}	x�|j
�D]�\}}|s�|j�r|j�|	|j
<x |jD]}|r�|j�|	|j
<q�W|jr�xBt|jj|jjgddg�D]$\}
}|
|	k�r.|jj|�|	|
<�q.Wq�W|	S)	z3Given state, return /etc/sysconfig files + contentsr�Zloopbackr]rrzr�rcrd)r|r�rqr7r�r�r�rrrrr{rFr�r}�zipr^r_)r�rVr�r�r|r�r�r�r��contentsZcpathrmrrr�_render_sysconfig�s@


zRenderer._render_sysconfig)r�r|�returncCsX|s
|j}d}tj||j�}x2|j|||j|d�j�D]\}}tj|||�q6W|j	r�tj||j	�}|j
||d�}	|	r�tj||	|�|jr�tj||j�}
|j||�}|r�tj|
||�|j
r�|j|�}tj||j
�}
tj|
||dd�tj||jd��}|jd��rTtjtjj|��t�dg}|j�r<|jd	�|jd
�tj|dj|�d|�dS)Ni�)r|)rT)r�modeZ
preserve_moder�r!zNETWORKING=yeszNETWORKING_IPV6=yeszIPV6_AUTOCONF=nor)r|r�target_pathr�rr�rrZ
write_filer�r
r�r
r�Z_render_persistent_netr4r(Z
ensure_dirrr��dirnamerZuse_ipv6r�r)r/r�r|�targetZ	file_moderVr��datar�Zresolv_contentr�Znm_conf_contentZnetrules_contentr�Zsysconfig_pathZnetcfgrrr�render_network_state�sJ





zRenderer.render_network_state)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)N)N)N)N)NN)rHrIrJrKr�r�r�r�r|�dictr0�classmethodr�r�r�r�r�r�r�staticmethodr
r
rrrrrrrrrrr�6sj
	
NH?'=)
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�vid)�format�int)r��v)rrrrr�!sz)_supported_vlan_names.<locals>.<listcomp>�{rdev}{vid:04}�{rdev}{vid}�{rdev}.{vid:04}�{rdev}.{vid})r#r$r%r&r)rrr)rrrrs
rcCs0tj�dtkrdSt|�r dSt|�r,dSdS)NZvariantFT)rZsystem_info�
KNOWN_DISTROS�available_sysconfig�available_nm_ifcfg_rh)rrrr�	available+sr*cCstjtj|d��S)Nz;usr/lib*/NetworkManager/*/libnm-settings-plugin-ifcfg-rh.so)�globrr)rrrrr)5sr)cCsdddg}ddg}x |D]}tj|||d�sdSqWddg}x$|D]}tjjtj||��r@d	Sq@WdS)
NZifupZifdownz/sbinz	/usr/sbin)r&rFz/etc/sysconfig/network-scripts/network-functionszetc/sysconfig/configT)rZwhichrr�rr)rZexpectedr&�pZexpected_pathsrrrr(@s

r()r)N)N)N)'rZr+r;rr%ZtypingrrZ	cloudinitrZloggingrrZcloudinit.distros.parsersrrZ
cloudinit.netr	r
rrr
Zcloudinit.net.network_staterZ	getLoggerrHr�r'rr#r*r+rLrqr�rr*r)r(rrrr�<module>sV


6nJl