HEX
Server: nginx/1.26.1
System: Linux main-vm 5.15.0-153-generic #163-Ubuntu SMP Thu Aug 7 16:37:18 UTC 2025 x86_64
User: root (0)
PHP: 8.2.19
Disabled: NONE
Upload Files
File: //usr/share/netplan/netplan/__pycache__/libnetplan.cpython-310.pyc
o

��d�C�@s�ddlZddlZddlZddlZddlmZmZmZmZmZm	Z	ddl
mZmZm
Z
Gdd�de�ZGdd�dej�ZGdd	�d	ej�ZGd
d�dej�ZGdd
�d
ej�Ze�ej�d��Ze�e�e��Ze�e�Ze�e�Ze�e�Zejej_dd�Z dd�Z!Gdd�d�Z"Gdd�d�Z#Gdd�d�Z$Gdd�d�Z%eeeegej&_'eej&_eeeegej(_'eej(_dee)de)fdd�Z*dd �Z+dS)!�N)�c_char_p�c_void_p�c_int�c_uint�c_size_t�	c_ssize_t)�List�Union�IOc@�eZdZdS)�LibNetplanExceptionN��__name__�
__module__�__qualname__�rr�(/usr/share/netplan/netplan/libnetplan.pyr�rc@s$eZdZdejfdefdefgZdS)�_GError�domain�code�messageN)rrr�ctypes�c_uint32rr�_fields_rrrrrsrc@r)�_netplan_stateNr
rrrrr#rrc@r)�_netplan_parserNr
rrrrr'rrc@r)�_netplan_net_definitionNr
rrrrr+rr�netplancCsdd}|dkr.t�|�}||�}|dkr|d}q|dkr"td|��|dkr(dS|j�d�Std��)	N�i@����rzUnknown error: %d�utf-8z'Aborting due to string buffer size > 1M)r�create_string_bufferr�value�decode)�function�size�bufferrrrr�_string_realloc_call_no_error9s
r)cGsBt�t��}t|g|�t�|��R��}|st|jj�d���dS�Nr")	r�POINTERr�bool�byrefr�contentsrr%)�fn�args�err�retrrr�_checked_lib_callKs
�r3c@sjeZdZdZedd��Zdd�Zdd�Zdee	e
ffd	d
�Zdd�Zde
fd
d�Z
de
de	fdd�ZdS)�ParserFcCs�|jrdSttj_t�t�gtj_tt	t
gtj_ttj_ttt
gtj
_ttj
_ttt
gtj_ttj_ttt	t
gtj_ttj_d|_dS�NT)�_abi_loaded�_NetplanParserP�lib�netplan_parser_new�restyperr+�netplan_parser_clear�argtypesr�	_GErrorPP�netplan_parser_load_yamlr� netplan_parser_load_yaml_from_fd�#netplan_parser_load_nullable_fields�&netplan_parser_load_nullable_overrides��clsrrr�	_load_abiUs
�
zParser._load_abicC�|��t��|_dS�N)rDr8r9�_ptr��selfrrr�__init__l�zParser.__init__cC�t�t�|j��dSrF)r8r;rr-rGrHrrr�__del__p�zParser.__del__�
input_filecCs<t|t�rttj|j|�d��dSttj|j|���dSr*)	�
isinstance�strr3r8r>rG�encoder?�fileno�rIrOrrr�	load_yamlss
zParser.load_yamlcCsttj|j|�d��dSr*)r3r8�"netplan_parser_load_yaml_hierarchyrGrR)rI�rootdirrrr�load_yaml_hierarchyyszParser.load_yaml_hierarchycCsttj|j|���dSrF)r3r8r@rGrSrTrrr�load_nullable_fields|szParser.load_nullable_fields�
constraintcCs ttj|j|��|�d��dSr*)r3r8rArGrSrR)rIrOrZrrr�load_nullable_overridess�zParser.load_nullable_overridesN)rrrr6�classmethodrDrJrMr	rQr
rUrXrYr[rrrrr4Rs
r4c@s�eZdZdZedd��Zdd�Zdd�Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
edd��Zedd��Zedd��Zedd��Zedd��Zedd��Zed d!��Zed"d#��Zed$d%��Zed&d'��Zed(d)��Zed*d+��Zd,d-�Zd.S)/�StateFcCs�|jrdSttj_t�t�gtj_tt	t
gtj_ttj_tgtj
_ttj
_ttgtj_ttj_tttt
gtj_ttj_tttt
gtj_ttj_ttt
gtj_ttj_tgtj_ttj_tgtj_ttj_tgtj_ttj_d|_dSr5)r6�_NetplanStatePr8�netplan_state_newr:rr+�netplan_state_clearr<r7r=�#netplan_state_import_parser_resultsr�netplan_state_get_netdefs_sizer�netplan_state_get_netdef�_NetplanNetDefinitionP�netplan_state_write_yaml_file�#netplan_state_update_yaml_hierarchy�netplan_state_dump_yaml�'netplan_netdef_get_embedded_switch_mode�1netplan_netdef_get_delay_virtual_functions_rebind�netplan_state_get_backendrBrrrrD�s.




zState._load_abicCrErF)rDr8r_rGrHrrrrJ�rKzState.__init__cCrLrF)r8r`rr-rGrHrrrrM�rNz
State.__del__cCsttj|j|j�dSrF)r3r8rarG)rI�parserrrr�import_parser_results�rNzState.import_parser_resultscCs:|r|�d�nd}|r|�d�nd}ttj|j||�dSr*)rRr3r8rerG)rI�filenamerW�name�rootrrr�write_yaml_file�szState.write_yaml_filecCs2|�d�}|r|�d�nd}ttj|j||�dSr*)rRr3r8rfrG)rI�default_filenamerWrnrorrr�update_yaml_hierarchy�s
zState.update_yaml_hierarchycCs|��}ttj|j|�dSrF)rSr3r8rgrG)rI�output_file�fdrrr�	dump_yaml�szState.dump_yamlcCst�|j�SrF)r8rbrGrHrrr�__len__�sz
State.__len__cCs(t�|j|�d��}|st��t||�Sr*)r8rcrGrR�
IndexError�
NetDefinition)rI�def_id�ptrrrr�__getitem__�s
zState.__getitem__cCstdd�t|d�D��S)Ncs��|]}|j|fVqdSrF��id��.0�ndrrr�	<genexpr>���z!State.all_defs.<locals>.<genexpr>��dict�_NetdefIteratorrHrrr�all_defs��zState.all_defscC�tdd�t|d�D��S)Ncsr|rFr}rrrrr��r�z"State.ethernets.<locals>.<genexpr>�	ethernetsr�rHrrrr��r�zState.ethernetscCr�)Ncsr|rFr}rrrrr��r�zState.modems.<locals>.<genexpr>�modemsr�rHrrrr��r�zState.modemscCr�)Ncsr|rFr}rrrrr��r�zState.wifis.<locals>.<genexpr>�wifisr�rHrrrr��r�zState.wifiscCr�)Ncsr|rFr}rrrrr��r�zState.vlans.<locals>.<genexpr>�vlansr�rHrrrr��r�zState.vlanscCr�)Ncsr|rFr}rrrrr��r�z State.bridges.<locals>.<genexpr>�bridgesr�rHrrrr��r�z
State.bridgescCr�)Ncsr|rFr}rrrrr��r�zState.bonds.<locals>.<genexpr>�bondsr�rHrrrr��r�zState.bondscCr�)Ncsr|rFr}rrrrr��r�z State.tunnels.<locals>.<genexpr>�tunnelsr�rHrrrr��r�z
State.tunnelscCr�)Ncsr|rFr}rrrrr��r�zState.vrfs.<locals>.<genexpr>�vrfsr�rHrrrr��r�z
State.vrfscCr�)Ncsr|rFr}rrrrr��r�z"State.ovs_ports.<locals>.<genexpr>z
_ovs-portsr�rHrrr�	ovs_ports�r�zState.ovs_portscCr�)Ncsr|rFr}rrrrr��r�z#State.nm_devices.<locals>.<genexpr>z
nm-devicesr�rHrrr�
nm_devices�r�zState.nm_devicescC�t�t�|j���d�Sr*)r8�netplan_backend_namerjrGr%rHrrr�backend�r�z
State.backendcCsNt���}|j|d�t�d�|����Wd�dS1s wYdS)N)rszMerged config:
{})�tempfile�
TemporaryFileru�logging�debug�format�read)rI�tmprrr�dump_to_logs�s
"�zState.dump_to_logsN)rrrr6r\rDrJrMrlrprrrurvr{�propertyr�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr]�sJ
$











r]c@s�eZdZdZedd��Zdd�Zdd�Zedd	��Z	ed
d��Z
edd
��Zedd��Zedd��Z
edd��Zedd��Zedd��Zedd��Zedd��Zedd��Zedd��Zed d!��Zd)d#d$�Zed%d&��Zed'd(��Zd"S)*rxFcCsD|jrdStgtj_ttj_tttgtj	_t
tj	_tttgtj_t
tj_tgtj_ttj_tgtj
_ttj
_tttgtj_t
tj_tgtj_ttj_tgtj_ttj_tgtj_ttj_tgtj_ttj_tgtj_ttj_tgtj_ttj_tgtj_ttj_tgtj_ttj_tttgtj_ttj_tgtj_ttj_d|_dSr5)r6rdr8�netplan_netdef_has_matchr<rr:rr�netplan_netdef_get_idr�netplan_netdef_get_filepath�netplan_netdef_get_backend�netplan_netdef_get_type�netplan_netdef_get_set_name�_netplan_netdef_get_critical�_netplan_netdef_get_sriov_link�_netplan_netdef_get_vlan_link�_netplan_netdef_get_vlan_idr�%_netplan_netdef_get_sriov_vlan_filter�netplan_netdef_match_interfacer��netplan_def_type_namer^r=�#_netplan_state_get_vf_count_for_def�'_netplan_netdef_is_trivial_compound_itfrBrrrrDsF












zNetDefinition._load_abicCs*t|d�sdSt�|jj�t�|jj�kS)NrGF)�hasattrr�	addressofrGr.)rI�otherrrr�__eq__>s
zNetDefinition.__eq__cCs|��||_||_dSrF)rDrG�_parent)rI�np_staterzrrrrJCs
zNetDefinition.__init__cC�tt�|j��SrF)r,r8r�rGrHrrr�	has_matchJ�zNetDefinition.has_matchc�t�fdd��S)Nc�t��j|t|��SrF)r8r�rG�len��brHrr�<lambda>P�z(NetDefinition.set_name.<locals>.<lambda>�r)rHrrHr�set_nameNr�zNetDefinition.set_namecCr�rF)r,r8r�rGrHrrr�criticalRr�zNetDefinition.criticalcC� t�|j�}|rt|j|�SdSrF)r8r�rGrxr��rI�link_ptrrrr�
sriov_linkV�zNetDefinition.sriov_linkcCr�rF)r8r�rGrxr�r�rrr�	vlan_link]r�zNetDefinition.vlan_linkcCs"t�|j�}|td�jkrdS|S)N���)r8r�rGrr$)rI�vlan_idrrrr�dszNetDefinition.vlan_idcCr�rF)r,r8r�rGrHrrr�has_sriov_vlan_filterlr�z#NetDefinition.has_sriov_vlan_filtercCr�r*)r8r�r�rGr%rHrrrr�pr�zNetDefinition.backendcCr�r*)r8r�r�rGr%rHrrr�typetr�zNetDefinition.typecr�)Ncr�rF)r8r�rGr�r�rHrrr�zr�z"NetDefinition.id.<locals>.<lambda>r�rHrrHrr~xr�zNetDefinition.idcr�)Ncr�rF)r8r�rGr�r�rHrrr�~r�z(NetDefinition.filepath.<locals>.<lambda>r�rHrrHr�filepath|r�zNetDefinition.filepathcCst�|j�}|o|�d�Sr*)r8rhrGr%)rI�moderrr�embedded_switch_mode�sz"NetDefinition.embedded_switch_modecCr�rF)r,r8rirGrHrrr�delay_virtual_functions_rebind�r�z,NetDefinition.delay_virtual_functions_rebindNc	Cs4tt�|j|o|�d�|o|�d�|o|�d���Sr*)r,r8r�rGrR)rI�itf_name�
itf_driver�itf_macrrr�match_interface�s�zNetDefinition.match_interfacecCsDt�t��}t�|jj|jt�|��}|dkr t|j	j
�d���|S)Nrr")rr+rr8r�r�rGr-rr.rr%)rIr1�countrrr�vf_count�s
zNetDefinition.vf_countcCr�)z�
        Returns True if the interface is a compound interface (bond or bridge),
        and its configuration is trivial, without any variation from the defaults.
        )r,r8r�rGrHrrr�is_trivial_compound_itf�sz%NetDefinition.is_trivial_compound_itf)NNN)rrrr6r\rDr�rJr�r�r�r�r�r�r�r�r�r�r~r�r�r�r�r�r�rrrrrxsJ
6














rxc@s<eZdZdZedd��Zdd�Zdd�Zdd	�Zd
d�Z	dS)
r�FcCsp|jrdSttd�std��ttgtj_ttj_	tgtj
_ttj
_	tgtj_dtj_	tgtj
_ttj
_	d|_dS)N�#_netplan_iter_defs_per_devtype_initz�
                The current version of libnetplan does not allow iterating by devtype.
                Please ensure that both the netplan CLI package and its library are up to date.
            T)r6r�r8rr^r�&_netplan_state_new_netdef_pertype_iterr<rr:�#_netplan_iter_defs_per_devtype_nextrd�#_netplan_iter_defs_per_devtype_free�_netplan_netdef_idrBrrrrD�s




z_NetdefIterator._load_abicCs,|��||_t�|j|o|�d��|_dSr*)rDr�r8r�rGrR�iterator)rIr��devtyperrrrJ�sz_NetdefIterator.__init__cCst�|j�dSrF)r8r�r�rHrrrrM�sz_NetdefIterator.__del__cCs|SrFrrHrrr�__iter__�sz_NetdefIterator.__iter__cCs t�|j�}|s
t�t|j|�SrF)r8r�r��
StopIterationrxr�)rI�
next_valuerrr�__next__�sz_NetdefIterator.__next__N)
rrrr6r\rDrJrMr�r�rrrrr��s
r��patch_object_path�
patch_payloadcCs*ttjd�|��d�|�d�|���dS)N�	r")r3r8�netplan_util_create_yaml_patch�joinrRrS)r�r��patch_outputrrr�create_yaml_patch�s
�r�cCs"ttj|�d�|��|���dSr*)r3r8�netplan_util_dump_yaml_subtreerRrS)�prefixrOrsrrr�dump_yaml_subtree�s
�r�),r�r�r�ctypes.utilrrrrrr�typingrr	r
�	Exceptionr�	Structurerrrr�CDLL�util�find_libraryr8r+r=r7r^rd�netplan_get_id_from_nm_filenamer:r)r3r4r]rxr�r�r<r�rQr�r�rrrr�<module>s> 



2.