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/__pycache__/netinfo.cpython-39.pyc
a

��`}H�@s�ddlmZmZddlZddlmZddlmZddlmZddlm	Z	ddl
mZe��Z
ggdd	d
�Zdd�Zd
d�Zdd�Zd dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd!dd�ZdS)"�)�copy�deepcopyN)�log)�net_prefix_to_ipv4_mask)�subp)�util)�SimpleTable�F��ipv4�ipv6�hwaddr�upcCs�i}d}t|���D�]�\}}t�d|�}|rz|�d����d�d}|�d��d�}ggdtd	|vold
|v�d�||<qd|vr�t�d
|�}|s�t�	d||�q||d�
|���qd|v�rHt�d|�}|s�t�	d||�q|��}|�d�}|�
d�\}	}
}|�sd}||d�
|	|d�r0|dndt|�|dd��qd|vrt�d|�}|�srt�	d||�q|�d�dk�r�|�d�||d<nd||d<qqq|S)a1
    Get network device dicts from ip route and ip link info.

    @param ipaddr_out: Output string from 'ip addr show' command.

    @returns: A dict of device info keyed by network device name containing
              device configuration values.
    @raise: TypeError if ipaddr_out isn't a string.
    Nz.^\d+:\s(?P<dev>[^:]+):\s+<(?P<flags>\S+)>\s+.*�dev�@r�flags�,r	ZUPZLOWER_UPr
�inet6z/\s+inet6\s(?P<ip>\S+)\sscope\s(?P<scope6>\S+).*z*Could not parse ip addr show: (line:%d) %sr�inetzH\s+inet\s(?P<cidr4>\S+)(\sbrd\s(?P<bcast>\S+))?\sscope\s(?P<scope>\S+).*�cidr4�/�32r�bcast�scope)�ipr�maskr�linkz-\s+link/(?P<link_type>\S+)\s(?P<hwaddr>\S+).*Z	link_type�etherr
)�	enumerate�
splitlines�re�match�group�lower�split�bool�LOG�warning�append�	groupdict�pop�	partitionr)�
ipaddr_out�devsZdev_nameZnum�line�mrr!r�addr�_�prefix�r3�3/usr/lib/python3/dist-packages/cloudinit/netinfo.py�_netdev_info_iproute sn
���
��
�
��r5c
Cszi}|��D�]f}t|�dkr q|ddvrb|��d}|�d�rN|dd�}||vrbtt�||<|������}t|�dkr�t�	d|d�r�d||d<t
t|��D�]�}||d	kr�||d�d
�\}}||d�|t|�d��q�||d
k�r||d||ddd<q�||dk�r<||d||d<q�||dk�r�||ddk�r|||d�d||di�n||d�d||di�q�||dk�r�||dddd
||d}|||ddd<q�||�
d��r||�d�||ddd<q�||dkr�t�d||d�}	|	�rV|	�d�||ddd<q�||d||ddd<q�q|S)Nr��	� �:����zflags=[x\d]+<up.*>Trrrr)rr�	broadcastrzaddress:r
r�addr:rr��	prefixlen�scope:�scope6�scopeid�	.*<(\S+)>)r�lenr$�endswithr�DEFAULT_NETDEV_INFOr#�stripr �search�ranger(r�
startswith�lstripr!r")
�
ifconfig_datar-r.�curdev�toks�i�networkZnet_bits�addr6�resr3r3r4�_netdev_info_ifconfig_netbsd_sN
�  $  rScCs i}|��D�]}t|�dkr q|ddvrb|��d}|�d�rN|dd�}||vrbtt�||<|������}|ddkr�d||d<n(t|�dkr�t�	d|d�r�d||d<t
t|��D�]V}||d	kr�||d
�d||d�d�i�q�||�
d
��r(||�d
�||d
dd<q�||dk�rT||d||d
dd<q�||�
d��r�||�d�||d
dd<q�||dk�r�||d||d
dd<q�||dk�s�||dk�r�||d||d<q�||dk�rB||ddk�r"||d�d||di�n||d�d||di�q�||dk�r�||dddd||d}|||ddd<q�||�
d��r�||�d�||ddd<q�||dkr�t�d||d�}|�r�|�d�||ddd<q�||d||ddd<q�q|S)Nrr6r9r:rTr;z
flags=\d+<up,rrrr=zbcast:rr<zmask:r�netmaskr
rrrr>r?rr@rArBrC)rrDr$rErrFr#rGr rHrIr(rKrJr!r")rLr-r.rMrNrOrQrRr3r3r4�_netdev_info_ifconfig�s\
�    $  rUcs�i}t��r0tjddgddgd�\}}t|�}n^t�d�rVt�gd��\}}t|�}n8t�d�r�tjddgddgd�\}}t|�}n
t�d�|d	kr�|St	t
tf�d��fdd�	��||d
�|S)NZifconfigz-arr;�Zrcsr)rr0Zshowz>Could not print networks: missing 'ip' and 'ifconfig' commandsr	�r	�cslt|t�r|��}n t|ttf�r,t|�}ntd��|D].\}}||vrR|||<q8t|��r8�||�q8dS)zTRecursively replace 'empty_vals' in data (dict, tuple, list)
           with new_valzUnexpected input to fillN)�
isinstance�dict�items�tuple�listr�	TypeError)�data�new_valZ
empty_valsZmyiter�key�val��fillZ
recurse_typesr3r4rd�s




znetdev_info.<locals>.fill)r`)r	rW)rZ	is_NetBSDrrS�whichr5rUr&r'rZr\r])�emptyr-Z	ifcfg_out�_errr,r3rcr4�netdev_info�s&




�
rhcCs�i}g|d<g|d<|��}ddddddd�}|D�].}t|�}|sFq2|��}dg}|ddkrrd|d	<d|d
<n^d|dvr�|d�d�\}}	n"|d}d}	|�d
�t|	�|d
<||d	<t|	�|d
<d|d<tt|��D]h}
||
dk�r
||
d|d<|�dd�||
dk�r(||
d|d<||
dkr�||
d|d<q�d�|�|d<|d�|�q2zt	j	gd�ddgd�\}}Wnt	j
�y�Y�n
0|��}
|
D]�}i}|�s��q�|��}|ddk�r�d|d	<d|d<n|d|d	<d|d<d|d<tt|��D]�}
||
dk�r4||
d|d<d|d<||
dk�rR||
d|d<||
dk�rp||
d|d<||
dk�r
|dd|d<�q
|d�|��q�|S)aP
    Get network route dicts from ip route info.

    @param iproute_data: Output string from ip route command.

    @returns: A dict containing ipv4 and ipv6 route entries as lists. Each
              item in the list is a route dictionary representing destination,
              gateway, flags, genmask and interface information.
    rrr	)�destinationr�gateway�genmask�iface�metric�Ur�defaultz0.0.0.0rirkrr�HrjZviar;�Grrlrmr)rz	--onelinez-6�router]�table�allrVz::/0ZUGz::Zexpires�e)rrr$r(rrIrD�insert�joinr�ProcessExecutionError)Ziproute_data�routes�entriesZdefault_route_entryr.�entryrNrr0ZcidrrOZ
iproute_data6�_err6�entries6r3r3r4�_netdev_route_info_iproute�s��


�
r~c	
Cs$i}g|d<g|d<|��}|D]�}|s*q |��}t|�dks |ddks |ddks |ddks |ddks |dd	kr|q t|�d
kr�|�d�|�d�|d|d
<d|d<|d|d|d|d|d|d|d|d
d�}|d�|�q ztjgd�ddgd�\}}Wntj�y*Yn�0|��}|D]�}|�sF�q8|��}t|�d
k�s8|ddk�s8|ddk�s8|ddk�s8|ddk�s8|ddk�r��q8|d|d|d|d|d|d|dd�}|ddk�r�q8|d�d��rt�dd|d�|d<|d�|��q8|S)Nrr�rZKernel�DestinationZInternetZ	Internet6ZRouting��-��r;r>��)rirjrkrrm�ref�userl)�netstatz-Ar�--route�	--numericrVZProtoZActive)rirjrrmr�r�rlrl�loriz/128z\/128$r	)	rr$rDr(rrxrEr �sub)	Z
route_dataryrzr.rNr{Zroute_data6r|r}r3r3r4�_netdev_route_info_netstatBs�
�
�
�
�

�
�
�
�
�
��

�r�cCsfi}t�d�r*t�gd��\}}t|�}n8t�d�rXtjgd�ddgd�\}}t|�}n
t�d�|S)	Nr)rz-orrr]r�)r�r�r�z--extendrr;rVz;Could not print routes: missing 'ip' and 'netstat' commands)rrer~r�r&r')ryZiproute_outrgZ	route_outr3r3r4�
route_info�s


�

�r�cCs�g}d}zt|d�}WnFty\}z.|�t�djt|�d�dd��WYd}~�n&d}~00|sfdSgd�}t|�}t|�	��D]�\}}|�
d	�D]2}|�||d
|d|d|�
d
|�|df�q�|�
d�D].}|�||d
|d||�
d|�|df�q�t|�
d��t|�
d	��dkr�|�||d
||||df�q�|�
�}	tt|	��td��}
t�dd|
�}|�||	g�d�|�dS)N�.)rfz Net device info failed ({error})��error�!�P�
)ZDeviceZUpZAddressZMaskZScopez
Hw-Addressrrrrrr
rrAr�razNet device info�+)rh�	Exceptionr(r�center�format�strr�sortedr[�get�add_rowrD�
get_string�maxr�extendrw)�linesrfZnetdevru�fieldsZtblrr_r0Znetdev_s�max_len�headerr3r3r4�netdev_pformat�sJ������ �r�c

Cs�g}z
t�}WnVtyd}z>|�t�djt|�d�dd��t�td|�WYd}~�nTd}~00|�	d��rgd�}t
|�}t|�	d��D]:\}}t|�}|�||d|d	|d
|d|dg�q�|�
�}tt|��td
��}	t�dd|	�}
|�|
|g�|�	d��r�gd�}t
|�}t|�	d��D]H\}}t|�}|ddk�rP�q.|�||d|d	|d|dg��q.|�
�}tt|��td
��}	t�dd|	�}
|�|
|g�d�|�dS)NzRoute info failed ({error})r�r�r�zRoute info failed: %sr)�Router��GatewayZGenmask�	Interface�Flagsrirjrkrlrr�zRoute IPv4 infor�r)r�r�r�r�r�r�zRoute IPv6 infor�)r�r�r(rr�r�r��logexcr&r�rrr�r�rDr�rr�rw)
r�ryruZ	fields_v4Ztbl_v4�n�rZroute_idZroute_sr�r�Z	fields_v6Ztbl_v6r3r3r4�
route_pformat�sN
��(��
r��	ci-info: cCszg}t���}|r0|D]}|�d||f�qn
|�|�t���}|rf|D]}|�d||f�qLn
|�|�d�|�S)Nz%s%sr�)r�rr(r�r�rw)r2r�Znetdev_linesr.Zroute_linesr3r3r4�
debug_info�s



r�)r	)r�)rrr �	cloudinitr�loggingZcloudinit.net.network_staterrrZcloudinit.simpletabler�	getLoggerr&rFr5rSrUrhr~r�r�r�r�r�r3r3r3r4�<module>s,�?/8
*RI")