*Ce1ddlmZddlmZmZddlmZmZGddZGddZ Gd d Z Gd d Z Gd dZ GddZ eGddZGddZy)) dataclass)ffilib)_string_realloc_call_no_errorNetplanExceptionc &eZdZdZdddefdZd!dedededefd Zed"d Z edefd Z edefd Z ede fd Z ed#dZed$dZed%dZedefdZedefdZedefdZedefdZedefdZedefdZedefdZedefdZedefdZedefdZedefdZedefdZedefdZedefdZ edefdZ!edefd Z"y)& NetDefinitionc ||_||_yN)_ptr_parent)selfnp_stateptrs 0/usr/lib/python3/dist-packages/netplan/netdef.py__init__zNetDefinition.__init__s   otherreturncNt|dsy|j|jk(S)Nr F)hasattrr )rrs r__eq__zNetDefinition.__eq__s"uf%yyEJJ&&rN iface_name iface_driver iface_macc .ttj|j|r|j dnt j |r|j dnt j |r|j dSt j SNutf-8)boolrnetplan_netdef_match_interfacer encoderNULL)rrrrs r_match_interfacezNetDefinition._match_interface"s~C66 II*4J  g &#(()2I  W %,8L   ( HI I?Bhh HI Irc,t|jSr )_NetdefAddressIteratorr rs r addresseszNetDefinition.addresses)s%dii00rcRttj|jSr )r rnetplan_netdef_get_dhcp4r r's rdhcp4zNetDefinition.dhcp4-C00;<s(33rc,t|jSr )_NetdefSearchDomainIteratorr r's rnameserver_searchzNetDefinition.nameserver_searchBs*49955rc,t|jSr )_NetdefRouteIteratorr r's rrouteszNetDefinition.routesFs#DII..rc tfdS)NcXtjj|t|Sr )rnetplan_netdef_get_macaddressr lenbrs rz*NetDefinition.macaddress..L%s7X7XY]YbYbdegjklgm7nrrr's`r macaddresszNetDefinition.macaddressJ,-noorcRttj|jSr )r rnetplan_netdef_has_matchr r's r _has_matchzNetDefinition._has_matchNr,rc tfdS)NcXtjj|t|Sr )rnetplan_netdef_get_set_namer rDrEs rrGz(NetDefinition.set_name..T%s7V7VW[W`W`bcehijek7lrrIr's`rset_namezNetDefinition.set_nameR,-lmmrcRttj|jSr )r r_netplan_netdef_get_criticalr r's rcriticalzNetDefinition.criticalVsC44TYY?@@rct}tj|jx}rt |j ||d<tj |jx}rt |j ||d<tj|jx}rt |j ||d<tj|jx}rt |j ||d<tj|jx}rt |j ||d<tj|jx}rt |j ||d<|S)Nsriovvlanbridgebondvrfpeer) dictrnetplan_netdef_get_sriov_linkr r rnetplan_netdef_get_vlan_linknetplan_netdef_get_bridge_linknetplan_netdef_get_bond_linknetplan_netdef_get_vrf_linknetplan_netdef_get_peer_link)rd sriov_link vlan_link bridge_link bond_linkvrf_link peer_links rlinkszNetDefinition.linksZs$ F::499E E: E&t||Z@AgJ88C C9 C%dllI>AfI<AfI66tyyA A8 A$T\\8AfIrcltj|j}|tjk(ry|Sr )r_netplan_netdef_get_vlan_idr UINT_MAX)rvlan_ids r_vlan_idzNetDefinition._vlan_idqs*11$))< cll "rcRttj|jSr )r r%_netplan_netdef_get_sriov_vlan_filterr r's r_has_sriov_vlan_filterz$NetDefinition._has_sriov_vlan_filterxsC==diiHIIrctjtjtj|j j dSr)rstringrnetplan_backend_namenetplan_netdef_get_backendr decoder's rbackendzNetDefinition.backend|s:zz#2233Q3QRVR[R[3\]^eefmnnrctjtjtj|j j dSr)rrwrnetplan_def_type_namenetplan_netdef_get_typer rzr's rtypezNetDefinition.types:zz#33C4O4OPTPYPY4Z[\ccdkllrc tfdS)NcXtjj|t|Sr )rnetplan_netdef_get_idr rDrEs rrGz"NetDefinition.id..s%s7P7PQUQZQZ\]_bcd_e7frrIr's`ridzNetDefinition.ids,-fggrc tfdS)NcXtjj|t|Sr )rnetplan_netdef_get_filepathr rDrEs rrGz(NetDefinition.filepath..rRrrIr's`rfilepathzNetDefinition.filepathrTrc tfdS)NcXtjj|t|Sr )r(_netplan_netdef_get_embedded_switch_moder rDrEs rrGz5NetDefinition._embedded_switch_mode..s%s7c7cdhdmdmopruvwrx7yrrIr's`r_embedded_switch_modez#NetDefinition._embedded_switch_modes,-yzzrcRttj|jSr )r r2_netplan_netdef_get_delay_virtual_functions_rebindr r's r_delay_virtual_functions_rebindz-NetDefinition._delay_virtual_functions_rebindsCJJ499UVVrctjd}tj|jj |j |}|dkr|dt fd}t||S)NzNetplanError **rcDtj|t|Sr )rnetplan_error_messagerD)rFerrs rrGz)NetDefinition._vf_count..s#:S:STWYZ\_`a\b:cr)rnewr#_netplan_state_get_vf_count_for_defrr rr)rrefcountmsgrs @r _vf_countzNetDefinition._vf_counts`gg'(77 8I8I499VYZ 19a&C/0cdC"3' ' rc tfdS)NcXtjj|t|Sr )r_netplan_netdef_get_bond_moder rDrEs rrGz*NetDefinition._bond_mode..rHrrIr's`r _bond_modezNetDefinition._bond_moderKrcRttj|jS)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 r'_netplan_netdef_is_trivial_compound_itfr r's r_is_trivial_compound_itfz&NetDefinition._is_trivial_compound_itfs C?? JKKr)NNN)rr&)rr9)rr<)rr?)#__name__ __module__ __qualname__rr rstrr$propertyr(r+r/listr7r:r=r@rJrNrSrWr_rmintrrrur{rrrrrrrrrrr r s 'O'' I3ISI\_IkoI11=t===t==D4466//pCpp=D==n#nnA$AAt,# JJJooomcmmhChhn#nn{s{{WWW3pCppL$LLrr c,eZdZddefdZdZdZdZy)NetDefinitionIteratorNdev_typec||_|r|jdntj}t j |j ||_yr)rr"rr#r&_netplan_state_new_netdef_pertype_iterr iterator)rrrnp_types rrzNetDefinitionIterator.__init__s8  .6(//'*CHHBB8==RYZ rcBtj|jyr )r!_netplan_netdef_pertype_iter_freerr's r__del__zNetDefinitionIterator.__del__s --dmm>eDNN#344E ;;-- -ht{{m44E ::++ +gdjj\22E{{}rci}|jdk\r|j|d<|jr|j|d<|jr|j|d<|jr|j|d<|j|j kr|j|d<|j |jkDr|j |d<|j|d<|S) Nrrrrfromrrr) rrrrrrrrrrs rto_dictzNetplanRoute.to_dict*s ;;! "kkE(O 77''E$K 8888E%L >> NNE&M ;;-- -"kkE(O ::++ +!ZZE'N f  rc t|j|j|j|j|j |j |j|jfSr ) hashrrrrrrrrr's r__hash__zNetplanRoute.__hash__=sH WWdhh ^^TZZ [[$++ YY  $% %rc|j|jk(xr|j|jk(xr|j|jk(xr|j|jk(xrj|j|jk(xrO|j |j k(xr4|j |j k(xr|j|jk(Sr )rrrrrrrrrs rrzNetplanRoute.__eq__Ds GGuxx  & HH ! & NNeoo - & JJ%++ % & KK5<< '  & KK5<< '  & II #  & JJ%++ % r)rrrrrprrrr__annotations__rrrrrrrrrrrrrr rrrrrrrrrsllONBNCOIsD#E3HcE3FC!FC!Hcs%&s&FD$&%  rrc$eZdZdZdZdZdZy)r?cF||_tj||_yr )rr_netplan_netdef_new_route_iterrrs rrz_NetdefRouteIterator.__init__Rs ::6B rcBtj|jyr )r_netplan_route_iter_freerr's rrz_NetdefRouteIterator.__del__Vs $$T]]3rc|Sr rr's rrz_NetdefRouteIterator.__iter__YrrcFtj|j}|stt |d}|j r.t j|j jdnd|jr.t j|jjdnd|r$t j|jdnd|jr.t j|jjdnd|jr.t j|jjdndd|j|j|j|j|j |j"|j$d }t'di|S)Nrr) rrrrrrrrrrrrrr)r_netplan_route_iter_nextrrgetattrrrrwrzrrrrrrrrrrr)rrrrs rrz_NetdefRouteIterator.__next__\s:11$--@  J/ @J}}#**Z]]+227;RVAK3::jnn-44W=UYBKI.55g>QUCM??CJJz/66w?X\EOEUEUSZZ 0 0188A[_%% '' ''"++!+!=!=)3)M)M ''  $e$$rNrrrrr?r?QsC4%rr?N) dataclassesr _netplan_cffirr_utilsrrr rrr&r9r<rr?rrrr sx "#CRLRLj88(88066$66$ H H  H V#%#%r