
    g5                         S SK Jr  S SKJr  SSKJrJr  SSKJrJ	r	   " S S5      r
 " S S	5      r " S
 S5      r " S S5      r " S S5      r " S S5      r\ " S S5      5       r " S S5      rg)    )	dataclass)Optional   )ffilib)_string_realloc_call_no_errorNetplanExceptionc            	          \ rS rSrS rSS S\4S jrS&S\S\S	\S\4S
 jjr\	S'S j5       r
\	S\4S j5       r\	S\4S j5       r\	S\4S j5       r\	S\\   4S j5       r\	S(S j5       r\	S)S j5       r\	S*S j5       r\	S\4S j5       r\	S\4S j5       r\	S\4S j5       r\	S\4S j5       r\	S\4S j5       r\	S\4S j5       r\	S\4S j5       r\	S\4S j5       r\	S\4S j5       r\	S\4S j5       r\	S\4S j5       r \	S\4S j5       r!\	S\4S j5       r"\	S\4S  j5       r#\	S\4S! j5       r$\	S\4S" j5       r%\	S\4S# j5       r&\	S\4S$ j5       r'S%r(g)+NetDefinition   c                     X l         Xl        g N)_ptr_parent)selfnp_stateptrs      0/usr/lib/python3/dist-packages/netplan/netdef.py__init__NetDefinition.__init__   s    	      otherreturnc                 X    [        US5      (       d  gU R                  UR                  :H  $ )Nr   F)hasattrr   )r   r   s     r   __eq__NetDefinition.__eq__   s%    uf%%yyEJJ&&r   N
iface_nameiface_driver	iface_macc           
      N   [        [        R                  " U R                  U(       a  UR	                  S5      O[
        R                  U(       a  UR	                  S5      O[
        R                  U(       a  UR	                  S5      5      5      $ [
        R                  5      5      $ Nutf-8)boolr   netplan_netdef_match_interfacer   encoder   NULL)r   r   r   r    s       r   _match_interfaceNetDefinition._match_interface#   s~    C66II*4Jg&#(()2IW%,8L(	H I 	I ?Bhh	H I 	Ir   c                 ,    [        U R                  5      $ r   )_NetdefAddressIteratorr   r   s    r   	addressesNetDefinition.addresses*   s    %dii00r   c                 T    [        [        R                  " U R                  5      5      $ r   )r$   r   netplan_netdef_get_dhcp4r   r,   s    r   dhcp4NetDefinition.dhcp4.       C00;<<r   c                 T    [        [        R                  " U R                  5      5      $ r   )r$   r   netplan_netdef_get_dhcp6r   r,   s    r   dhcp6NetDefinition.dhcp62   r3   r   c                    / n[        [        R                  " U R                  5      5      (       a  UR	                  S5        [        [        R
                  " U R                  5      5      (       a  UR	                  S5        U$ )Nipv4ipv6)r$   r   "netplan_netdef_get_link_local_ipv4r   append"netplan_netdef_get_link_local_ipv6)r   	linklocals     r   
link_localNetDefinition.link_local6   s]    	66tyyABBV$66tyyABBV$r   c                 `    [         R                  " U R                  5      nUS:X  a  gUS:X  a  gg )Nr   T   F)r   netplan_netdef_get_accept_rar   )r   values     r   	accept_raNetDefinition.accept_ra?   s/    
 00;A:aZr   c                 ,    [        U R                  5      $ r   )_NetdefNameserverIteratorr   r,   s    r   nameserver_addresses"NetDefinition.nameserver_addressesL   s    (33r   c                 ,    [        U R                  5      $ r   )_NetdefSearchDomainIteratorr   r,   s    r   nameserver_searchNetDefinition.nameserver_searchP   s    *49955r   c                 ,    [        U R                  5      $ r   )_NetdefRouteIteratorr   r,   s    r   routesNetDefinition.routesT   s    #DII..r   c                 "   ^  [        U 4S j5      $ )Nc                 Z   > [         R                  " TR                  U [        U 5      5      $ r   )r   _netplan_netdef_get_gateway4r   lenbr   s    r   <lambda>)NetDefinition._gateway4.<locals>.<lambda>Z   #    s7W7WX\XaXacdfijkfl7mr   r   r,   s   `r   	_gateway4NetDefinition._gateway4X       ,-mnnr   c                 "   ^  [        U 4S j5      $ )Nc                 Z   > [         R                  " TR                  U [        U 5      5      $ r   )r   _netplan_netdef_get_gateway6r   rV   rW   s    r   rY   )NetDefinition._gateway6.<locals>.<lambda>^   r[   r   r\   r,   s   `r   	_gateway6NetDefinition._gateway6\   r_   r   c                 "   ^  [        U 4S j5      $ )Nc                 Z   > [         R                  " TR                  U [        U 5      5      $ r   )r   netplan_netdef_get_macaddressr   rV   rW   s    r   rY   *NetDefinition.macaddress.<locals>.<lambda>b   #    s7X7XY]YbYbdegjklgm7nr   r\   r,   s   `r   
macaddressNetDefinition.macaddress`       ,-noor   c                 T    [        [        R                  " U R                  5      5      $ r   )r$   r   netplan_netdef_has_matchr   r,   s    r   
_has_matchNetDefinition._has_matchd   r3   r   c                 "   ^  [        U 4S j5      $ )Nc                 Z   > [         R                  " TR                  U [        U 5      5      $ r   )r   netplan_netdef_get_set_namer   rV   rW   s    r   rY   (NetDefinition.set_name.<locals>.<lambda>j   #    s7V7VW[W`W`bcehijek7lr   r\   r,   s   `r   set_nameNetDefinition.set_nameh       ,-lmmr   c                 T    [        [        R                  " U R                  5      5      $ r   )r$   r   _netplan_netdef_get_criticalr   r,   s    r   criticalNetDefinition.criticall   s    C44TYY?@@r   c                    [        5       n[        R                  " U R                  5      =n(       a  [	        U R
                  U5      US'   [        R                  " U R                  5      =n(       a  [	        U R
                  U5      US'   [        R                  " U R                  5      =n(       a  [	        U R
                  U5      US'   [        R                  " U R                  5      =n(       a  [	        U R
                  U5      US'   [        R                  " U R                  5      =n(       a  [	        U R
                  U5      US'   [        R                  " U R                  5      =n(       a  [	        U R
                  U5      US'   U$ )Nsriovvlanbridgebondvrfpeer)dictr   netplan_netdef_get_sriov_linkr   r   r   netplan_netdef_get_vlan_linknetplan_netdef_get_bridge_linknetplan_netdef_get_bond_linknetplan_netdef_get_vrf_linknetplan_netdef_get_peer_link)r   d
sriov_link	vlan_linkbridge_link	bond_linkvrf_link	peer_links           r   linksNetDefinition.linksp   s$   F::499EE:E&t||Z@AgJ88CC9C%dllI>AfI<<TYYGG;G'kBAhK88CC9C%dllI>AfI66tyyAA8A$T\\8<AeH 88CC9C%dllI>AfIr   c                 p    [         R                  " U R                  5      nU[         R                  :X  a  g U$ r   )r   _netplan_netdef_get_vlan_idr   UINT_MAX)r   vlan_ids     r   _vlan_idNetDefinition._vlan_id   s*    11$))<cll"r   c                 T    [        [        R                  " U R                  5      5      $ r   )r$   r   %_netplan_netdef_get_sriov_vlan_filterr   r,   s    r   _has_sriov_vlan_filter$NetDefinition._has_sriov_vlan_filter   s    C==diiHIIr   c                     [         R                  " [        R                  " [        R                  " U R
                  5      5      5      R                  S5      $ r"   )r   stringr   netplan_backend_namenetplan_netdef_get_backendr   decoder,   s    r   backendNetDefinition.backend   s:    zz#2233Q3QRVR[R[3\]^eefmnnr   c                     [         R                  " [        R                  " [        R                  " U R
                  5      5      5      R                  S5      $ r"   )r   r   r   netplan_def_type_namenetplan_netdef_get_typer   r   r,   s    r   typeNetDefinition.type   s:    zz#33C4O4OPTPYPY4Z[\ccdkllr   c                 "   ^  [        U 4S j5      $ )Nc                 Z   > [         R                  " TR                  U [        U 5      5      $ r   )r   netplan_netdef_get_idr   rV   rW   s    r   rY   "NetDefinition.id.<locals>.<lambda>   s#    s7P7PQUQZQZ\]_bcd_e7fr   r\   r,   s   `r   idNetDefinition.id   s    ,-fggr   c                 "   ^  [        U 4S j5      $ )Nc                 Z   > [         R                  " TR                  U [        U 5      5      $ r   )r   netplan_netdef_get_filepathr   rV   rW   s    r   rY   (NetDefinition.filepath.<locals>.<lambda>   rv   r   r\   r,   s   `r   filepathNetDefinition.filepath   ry   r   c                 "   ^  [        U 4S j5      $ )Nc                 Z   > [         R                  " TR                  U [        U 5      5      $ r   )r   (_netplan_netdef_get_embedded_switch_moder   rV   rW   s    r   rY   5NetDefinition._embedded_switch_mode.<locals>.<lambda>   s#    s7c7cdhdmdmopruvwrx7yr   r\   r,   s   `r   _embedded_switch_mode#NetDefinition._embedded_switch_mode   s    ,-yzzr   c                 T    [        [        R                  " U R                  5      5      $ r   )r$   r   2_netplan_netdef_get_delay_virtual_functions_rebindr   r,   s    r   _delay_virtual_functions_rebind-NetDefinition._delay_virtual_functions_rebind   s    CJJ499UVVr   c                    ^ [         R                  " S5      n[        R                  " U R                  R
                  U R
                  U5      nUS:  a  US   m[        U4S j5      n[        U5      eU$ )NzNetplanError **r   c                 F   > [         R                  " TU [        U 5      5      $ r   )r   netplan_error_messagerV   )rX   errs    r   rY   )NetDefinition._vf_count.<locals>.<lambda>   s    #:S:STWYZ\_`a\b:cr   )r   newr   #_netplan_state_get_vf_count_for_defr   r   r   r	   )r   refcountmsgr   s       @r   	_vf_countNetDefinition._vf_count   s`    gg'(778I8I499VYZ19a&C/0cdC"3''r   c                 "   ^  [        U 4S j5      $ )Nc                 Z   > [         R                  " TR                  U [        U 5      5      $ r   )r   _netplan_netdef_get_bond_moder   rV   rW   s    r   rY   *NetDefinition._bond_mode.<locals>.<lambda>   rj   r   r\   r,   s   `r   
_bond_modeNetDefinition._bond_mode   rm   r   c                 T    [        [        R                  " U R                  5      5      $ )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_itf&NetDefinition._is_trivial_compound_itf   s     C??		JKKr   )r   r   )NNN)r   r+   )r   rH   )r   rL   )r   rP   ))__name__
__module____qualname____firstlineno__r   r$   r   strr(   propertyr-   r1   r6   listr?   r   rE   rI   rM   rQ   r]   rd   rk   rp   rw   r|   r   r   intr   r   r   r   r   r   r   r   r   r   r   __static_attributes__ r   r   r   r      s    'O ' '
I3 IS I\_ Iko I 1 1 =t = = =t = = D   
8D> 
 
 4 4 6 6 / / o3 o o o3 o o pC p p =D = = n# n n A$ A A t  , #   J J J o o o mc m m hC h h n# n n {s { { W W W 3   pC p p L$ L Lr   r   c                   8    \ rS rSrS	S\4S jjrS rS rS rSr	g)
NetDefinitionIterator   Ndev_typec                     Xl         U(       a  UR                  S5      O[        R                  n[        R
                  " UR                  U5      U l        g r"   )r   r&   r   r'   r   &_netplan_state_new_netdef_pertype_iterr   iterator)r   r   r   np_types       r   r   NetDefinitionIterator.__init__   s6     .6(//'*CHHBB8==RYZr   c                 D    [         R                  " U R                  5        g r   )r   !_netplan_netdef_pertype_iter_freer   r,   s    r   __del__NetDefinitionIterator.__del__   s    --dmm<r   c                     U $ r   r   r,   s    r   __iter__NetDefinitionIterator.__iter__       r   c                     [         R                  " U R                  5      nU(       d  [        e[	        U R
                  U5      $ r   )r   !_netplan_netdef_pertype_iter_nextr   StopIterationr   r   r   
next_values     r   __next__NetDefinitionIterator.__next__   s0    ::4==I
T]]J77r   )r   r   r   )
r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s    [3 [=8r   r   c                   8    \ rS rSrS\S\S\4S jrS\4S jrSrg	)
NetplanAddress   addresslifetimelabelc                 (    Xl         X l        X0l        g r   )r   r   r   )r   r   r   r   s       r   r   NetplanAddress.__init__   s     
r   r   c                     U R                   $ r   )r   r,   s    r   __str__NetplanAddress.__str__   s    ||r   )r   r   r   N)r   r   r   r   r   r   r  r   r   r   r   r   r      s(     s 3 
 r   r   c                   4    \ rS rSrS\4S jrS rS rS rSr	g)	r+      netdefc                 F    Xl         [        R                  " U5      U l        g r   )r  r    _netplan_netdef_new_address_iterr   r   r  s     r   r   _NetdefAddressIterator.__init__   s    <<VDr   c                 D    [         R                  " U R                  5        g r   )r   _netplan_address_iter_freer   r,   s    r   r   _NetdefAddressIterator.__del__   s    &&t}}5r   c                     U $ r   r   r,   s    r   r   _NetdefAddressIterator.__iter__   r   r   c                    [         R                  " U R                  5      nU(       d  [        eUnUR                  (       a/  [
        R                  " UR                  5      R                  S5      OS nUR                  (       a/  [
        R                  " UR                  5      R                  S5      OS nUR                  (       a/  [
        R                  " UR                  5      R                  S5      OS n[        X4U5      $ r"   )r   _netplan_address_iter_nextr   r   r   r   r   r   r   r   r   )r   r   contentr   r   r   s         r   r   _NetdefAddressIterator.__next__   s    33DMMB
 BI#**W__-44W=VZCJCSCS3::g../66w?Y]=D]]

7==)009PTg77r   r   r  N
r   r   r   r   r   r   r   r   r   r   r   r   r   r+   r+      s    E} E6
8r   r+   c                   4    \ rS rSrS\4S jrS rS rS rSr	g)	rH      r  c                 F    Xl         [        R                  " U5      U l        g r   )r  r   #_netplan_netdef_new_nameserver_iterr   r	  s     r   r   "_NetdefNameserverIterator.__init__   s    ??Gr   c                 D    [         R                  " U R                  5        g r   )r   _netplan_nameserver_iter_freer   r,   s    r   r   !_NetdefNameserverIterator.__del__   s    ))$--8r   c                     U $ r   r   r,   s    r   r   "_NetdefNameserverIterator.__iter__   r   r   c                     [         R                  " U R                  5      nU(       d  [        e[        R
                  " U5      R                  S5      $ r"   )r   _netplan_nameserver_iter_nextr   r   r   r   r   r   s     r   r   "_NetdefNameserverIterator.__next__  s9    66t}}E
zz*%,,W55r   r  Nr  r   r   r   rH   rH      s    H} H96r   rH   c                   ,    \ rS rSrS rS rS rS rSrg)rL   i	  c                 F    Xl         [        R                  " U5      U l        g r   )r  r   &_netplan_netdef_new_search_domain_iterr   r	  s     r   r   $_NetdefSearchDomainIterator.__init__
  s    BB6Jr   c                 D    [         R                  " U R                  5        g r   )r    _netplan_search_domain_iter_freer   r,   s    r   r   #_NetdefSearchDomainIterator.__del__  s    ,,T]];r   c                     U $ r   r   r,   s    r   r   $_NetdefSearchDomainIterator.__iter__  r   r   c                     [         R                  " U R                  5      nU(       d  [        e[        R
                  " U5      R                  S5      $ r"   )r    _netplan_search_domain_iter_nextr   r   r   r   r   r   s     r   r   $_NetdefSearchDomainIterator.__next__  s9    99$--H
zz*%,,W55r   r  N	r   r   r   r   r   r   r   r   r   r   r   r   rL   rL   	  s    K<6r   rL   c                      \ rS rSr% \R
                  rSrSrSr	\
\S'   Sr\
\S'   Sr\
\S'   Sr\
\S'   S	r\
\S
'   Sr\
\S'   \r\\S'   Sr\\S'   \r\\S'   Sr\\S'   Sr\\S'   Sr\\S'   Sr\\S'   \r\\S'   S rS rS rS rSrg)NetplanRoutei  r   Ntovia	from_addrunicastr   globalscopeprotocoltablefamilymetricmtubytescongestion_windowadvertised_receive_windowFonlinkadvertised_mssc                 ,   SnU R                   (       a  XR                   -   nU R                  (       a  USU R                   3-   nU R                  (       a  USU R                   3-   nU R                  (       a  USU R                   3-   nU R                  (       a  USU R                   3-   nU R
                  U R                  :  a  USU R
                   3-   nU R                  U R                  :  a  USU R                   3-   nUR                  5       $ )N z via z type z scope z src z metric z table )
r2  r3  r   r7  r4  r<  _METRIC_UNSPEC_r9  _TABLE_UNSPEC_stripr   routes     r   r  NetplanRoute.__str__0  s    77GGOE88eDHH:..E99fTYYK00E::gdjj\22E>>eDNN#344E;;---ht{{m44E::+++gdjj\22E{{}r   c                    0 nU R                   S:  a  U R                   US'   U R                  (       a  U R                  US'   U R                  (       a  U R                  US'   U R                  (       a  U R                  US'   U R                  U R
                  :  a  U R                  US'   U R                  U R                  :  a  U R                  US'   U R                  US'   U$ )	Nr   r;  r2  r3  fromr<  r9  r   )	r;  r2  r3  r4  r<  rD  r9  rE  r   rG  s     r   to_dictNetplanRoute.to_dictB  s    ;;!"kkE(O77''E$K8888E%L>> NNE&M;;---"kkE(O::+++!ZZE'N		fr   c           
          [        U R                  U R                  U R                  U R                  U R
                  U R                  U R                  U R                  45      $ r   )	hashr2  r3  r4  r9  r;  r<  r   r7  r,   s    r   __hash__NetplanRoute.__hash__U  sH    WWdhh^^TZZ[[$++YY

$% 	%r   c                    U R                   UR                   :H  =(       a    U R                  UR                  :H  =(       a    U R                  UR                  :H  =(       a    U R                  UR                  :H  =(       ay    U R                  UR                  :H  =(       aY    U R
                  UR
                  :H  =(       a9    U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r   )r2  r3  r4  r9  r;  r<  r   r7  rG  s     r   r   NetplanRoute.__eq__\  s    GGuxx &HH		!&NNeoo-& JJ%++%& KK5<<'	&
 KK5<<'& II#& JJ%++%		
r   r   ) r   r   r   r   r   r   rD  _ADVMSS_UNSPEC_rE  r2  r   __annotations__r3  r4  r   r7  r8  r9  r   r;  r<  r=  r>  r?  r@  r$   rA  r  rL  rP  r   r   r   r   r   r1  r1    s    llOONBNCOIsD#E3HcE3FC!FC!Hcs%&s&FD)NC)$&%

r   r1  c                   ,    \ rS rSrS rS rS rS rSrg)rP   ii  c                 F    Xl         [        R                  " U5      U l        g r   )r  r   _netplan_netdef_new_route_iterr   r	  s     r   r   _NetdefRouteIterator.__init__j  s    ::6Br   c                 D    [         R                  " U R                  5        g r   )r   _netplan_route_iter_freer   r,   s    r   r   _NetdefRouteIterator.__del__n  s    $$T]]3r   c                     U $ r   r   r,   s    r   r   _NetdefRouteIterator.__iter__q  r   r   c                    [         R                  " U R                  5      nU(       d  [        e[	        US5      nUR
                  (       a/  [        R                  " UR
                  5      R                  S5      OS UR                  (       a/  [        R                  " UR                  5      R                  S5      OS U(       a%  [        R                  " U5      R                  S5      OS UR                  (       a/  [        R                  " UR                  5      R                  S5      OS UR                  (       a/  [        R                  " UR                  5      R                  S5      OS S UR                  UR                  UR                  UR                  UR                   UR"                  UR$                  UR&                  S.n[)        S0 UD6$ )NrK  r#   )r2  r3  r4  r   r7  r8  r9  r;  r<  r=  r>  r?  r@  rA  r   )r   _netplan_route_iter_nextr   r   getattrr2  r   r   r   r3  r   r7  r9  r;  r<  r=  r>  r?  r@  advmssr1  )r   r   r4  rH  s       r   r   _NetdefRouteIterator.__next__t  sC   11$--@
 J/	 @J}}#**Z]]+227;RVAK3::jnn-44W=UYBKI.55g>QUCM??CJJz/66w?X\EOEUEUSZZ
 0 0188A[_%% '' ''"++!+!=!=)3)M)M ''(//
" $e$$r   r  Nr/  r   r   r   rP   rP   i  s    C4%r   rP   N)dataclassesr   typingr   _netplan_cffir   r   _utilsr   r	   r   r   r   r+   rH   rL   r1  rP   r   r   r   <module>rh     s{     "  # CgL gLT8 8( 8 806 6$6 6$ J
 J
 J
Z$% $%r   