HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux ip-10-0-8-47 6.8.0-1021-aws #23~22.04.1-Ubuntu SMP Tue Dec 10 16:31:58 UTC 2024 aarch64
User: ubuntu (1000)
PHP: 8.1.2-1ubuntu2.22
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/cloudinit/net/__pycache__/bsd.cpython-310.pyc
o

�Ad�!�@s�ddlZddlmZddlmZddlmZmZmZddl	m
Z
ddlmZddl
mZddlmZe�e�ZGd	d
�d
ej�ZdS)�N)�Optional)�log)�net�subp�util)�	bsd_utils)�
ResolvConf)�renderer)�NetworkStatec@s�eZdZdZdZdd�Zdd�Zd"dd	�Zd
d�Zdd
�Z	dd�Z
		d#dedee
ddfdd�Zdd�Zd$dd�Zd"dd�Zdd�Zdd�Zd d!�ZdS)%�BSDRendererzetc/resolv.confzetc/rc.confcCs"t�|j|j�}tj||d�dS�N)�fn)r�target_path�target�
rc_conf_fnr�get_rc_config_value)�self�keyr
�r�3/usr/lib/python3/dist-packages/cloudinit/net/bsd.pyrszBSDRenderer.get_rc_config_valuecCs$t�|j|j�}tj|||d�dSr)rrrrr�set_rc_config_value)rr�valuer
rrrrszBSDRenderer.set_rc_config_valueNcCs,|si}d|_i|_i|_|�dd�|_dS)N�postcmdsT)r�interface_configurations�interface_configurations_ipv6�get�	_postcmds)r�configrrr�__init__szBSDRenderer.__init__c
Cs�t��}|��D]�}|�d�}|�d�}|rt�d|�rq||vr(t�d|�n1|rU|rU||}||krTt�d||�z|�||�Wnt	ySt�
d�|}Ynwn||}t�d|�|�dg�D]�}|�d	�d
kr�|�d�s}t�d|�d
��qet�d||�d
�|�d��|�d
�|�d�|�d�p�|�d�d�|j|<qe|�d	�dkr�|�d�s�t�d|�d
��qet�d||�d
�|�d��|�d
�|�d�|�d�p�|�d�d�|j
|<qe|�d	�dks�|�d	�dkr�d|j|<qeqdS)N�name�mac_addressz^lo\d+$z"Cannot find any device with MAC %sz,netif service will rename interface %s to %sz.Interface renaming is not supported on this OSzConfiguring interface %s�subnets�type�static�netmaskz+Skipping IP %s, because there is no netmask�addresszConfiguring dev %s with %s / %s�mtu)r%r$r&�static6�prefixz*Skipping IP %s, because there is no prefix)r%r(r&�dhcp�dhcp4�DHCP)r�get_interfaces_by_mac�iter_interfacesr�re�match�LOG�info�rename_interface�NotImplementedError�error�debugrr)r�settings�
ifname_by_mac�	interface�device_name�
device_mac�cur_name�subnetrrr�_ifconfig_entries$s�

����
���
�����
���zBSDRenderer._ifconfig_entriesc
Cs$t|���}|��D]X}|�dg�}|D]M}|�d�dkr7|�d�}|r6t|�d��dkr6|�dd|d��n"|�d�d	krX|�d�}|rWt|�d
��dkrW|�dd
|d��nq||�dg�7}qq
|D]*}|�d�}|stt�d�qe|�d�r~|�d�n|�d�}	|�d�}|�	||	|�qedS)Nr!r"r#�gateway�.�z0.0.0.0)�networkr$r>r'�:�z::�0)rAr(r>�routesrAzSkipping a bad route entryr$r()
�list�iter_routesr-r�len�split�appendr0r5�	set_route)
rr6rEr8r!r<r>�routerAr$rrr�_route_entriespsN
���
����

��
�zBSDRenderer._route_entriesc	CsV|j}|j}|��D]!}|�dg�D]}d|vr|�|d�d|vr*|�|d�qq
ztt�t�	|j
|j���}|��Wnt
y]t�tdt�	|j
|j��td�}|��Ynwt|�D]}z|�|�Wqbty{t�td|�Yqbwt|�D]}z|�|�Wq�ty�t�td|�Yq�wt�t�	|j
|j�t|�d�dS)	Nr!�dns_nameservers�
dns_searchz&Failed to parse %s, use new empty file�zFailed to add nameserver %szFailed to add search domain %si�)rN�dns_searchdomainsr-r�extendrr�	load_filerrr�resolv_conf_fn�parse�IOError�logexcr0�set�add_nameserver�
ValueError�add_search_domain�
write_file�str)	rr6�nameservers�
searchdomainsr8r<�
resolvconf�server�domainrrr�
_resolve_conf�sV������
���zBSDRenderer._resolve_conf�
network_state�	templates�returncCsH|r||_|j|d�|j|d�|j|d�|��|j|jd�dS)N)r6)�run)rr=rMrc�write_config�start_servicesr)rrdrerrrr�render_network_state�sz BSDRenderer.render_network_statecCs|jj}dd�|�D�S)NcSsg|]
\}}|dkr|�qS)r+r)�.0�k�vrrr�
<listcomp>�sz/BSDRenderer.dhcp_interfaces.<locals>.<listcomp>)r�items)r�icrrr�dhcp_interfaces�szBSDRenderer.dhcp_interfacesFcC�t���N�r3)rrgrrrri��zBSDRenderer.start_servicescCrrrsrt)rrrrrrh�ruzBSDRenderer.write_configcCrrrsrt)rr>rrr�set_gateway�ruzBSDRenderer.set_gatewaycCrrrsrt)rr;r9rrrr2�ruzBSDRenderer.rename_interfacecCrrrsrt)rrAr$r>rrrrK�ruzBSDRenderer.set_routers)NN)F)�__name__�
__module__�__qualname__rTrrrrr=rMrcr
r�dictrjrqrirhrvr2rKrrrrrs0
L*1���
�

r)r.�typingr�	cloudinitr�loggingrrr�cloudinit.distrosr�%cloudinit.distros.parsers.resolv_confr�
cloudinit.netr	�cloudinit.net.network_stater
�	getLoggerrwr0�Rendererrrrrr�<module>s