
    /I_                          S SK Jr  S SK7  S SKJr  S SKJr  S SKJs  J	r	  S SK
Js  Jr   " S S\\5      rg! \\4 a&    S SKJr  S SK7  S SKJr  S SKJr  S SKJ	r	  S SKJr   N:f = f)    )Addon)*)utils)
moduleBaseNc                       \ rS rSrSSSS/S/S.SS	/S
SS
/S.SSS/S.S.S.rS rS r\S 5       rSS jr	S r
S rS r\
\\S.rS rSS jrSrg)link    z/create/configure link types. similar to ip-linkz%type of link as in 'ip link' command.dummyvethzlink-type <dummy|veth>)help	validvalsexamplezkeep link downzlink-down yes/nonoyes)r   r   defaultr   z Name of the veth peer interface.z<interface>zveth-peer-name veth_ext2int)	link-type	link-downveth-peer-name)mhelpattrsc                     [         R                  " U 5        [        R                  " U /UQ70 UD6  [        R                  " [
        R                  R                  U R                  R                  S5      5      U l
        g )Nwarn_on_physdev_not_present)r   __init__r   r   get_boolean_from_stringpolicymanagerpolicymanager_apiget_module_globals	__class____name__check_physical_port_existance)selfargskargss      #/usr/share/ifupdown2/addons/link.pyr   link.__init__7   s]    tD14151-2-J-J++>>''-.
*    c                     U R                   (       ad  UR                  (       dS  U R                  R                  UR                  5      (       d)  U R
                  R                  SUR                  -  5        gg)Nz%s: interface does not existFT)r    	link_kindcachelink_existsnameloggerwarning)r!   ifaceobjifaceobj_getfuncs      r$   syntax_checklink.syntax_checkB   sN    --%%djj.D.DX]].S.S##$BX]]$RSr&   c                 T    U R                  S5      =(       d    U R                  S5      $ )Nr   r   )get_attr_value_first)r.   s    r$   _is_my_interfacelink._is_my_interfaceI   s$    ,,[9gX=Z=Z[f=ggr&   Nc                 H   UR                  S5      S:X  a#  U=R                  [        R                  -  sl        UR                  S5      (       a  [        R
                  Ul        UR                  S5      nUS:X  a(  UR                  S5      (       a  UR                  S5      /$ g )Nr   r   r   r   r   )r3   link_privflagsifaceLinkPrivFlagsKEEP_LINK_DOWNifaceLinkKindOTHERr(   )r!   r.   ifacenames_all	link_types       r$   get_dependent_ifacenameslink.get_dependent_ifacenamesM   s    ((5>##'9'H'HH#((55!.!4!4H11+>	 8#@#@AQ#R#R112BCDDr&   c                 d   UR                  S5      nUS:X  ak  UR                  S5      nU(       aR  U R                  R                  UR                  5      (       d'  U R                  R                  UR                  U5        g g g U(       a'  U R                  R                  UR                  U5        g g )Nr   r   r   )r3   r)   r*   r+   iproute2link_add_vethlink_add)r!   r.   r=   	peer_names       r$   _uplink._up[   s    11+>	  556FGI!7!7!F!F++HMM9E "Gy MM""8==)< r&   c                 t   UR                  S5      (       d  g [        R                  R                  (       d+  U R                  R                  UR                  5      (       d  g  U R                  R                  UR                  5        g ! [         a$  nU R                  [        U5      5         S nAg S nAff = f)Nr   )r3   ifupdownflagsflagsPERFMODEr)   r*   r+   netlinklink_del	Exceptionlog_warnstr)r!   r.   es      r$   _down
link._downi   s~    ,,[99""++DJJ4J4J8==4Y4Y	"LL!!(--0 	"MM#a&!!	"s   #%B	 	
B7B22B7c                    UR                  S5      (       a  U R                  R                  UR                  5      (       d  UR	                  SSS5        OaUR                  S5      nU R                  R                  UR                  5      U:X  a  UR	                  SUS5        OUR	                  SUS5        UR                  S5      nU(       a  U R                  R                  UR                  5      n[        R                  " U5      nU(       a  U(       a  SnSnO$U(       a
  U(       d  SnOU(       d
  U(       a  SnOSnUR	                  SXG5        g g )Nr   None   r   r   r   )
get_attr_valuer)   r*   r+   update_config_with_statusr3   get_link_kind
link_is_upr   r   )r!   r.   ifaceobjcurrr=   	link_downlink_uplink_should_be_downstatuss           r$   _query_checklink._query_checks   s   "";//::))(--8866{FAN$99+F	::++HMM:iG ::;	STU ::;	STU11+>	jj++HMM:G"'"?"?	"J"w 	$W(W22;	R r&   )zpre-upz	post-downquery-checkcurrc                 H    [        U R                  R                  5       5      $ N)list_run_opskeys)r!   s    r$   get_opslink.get_ops   s    DMM&&())r&   c                     U R                   R                  U5      nU(       d  g US:w  a  U R                  U5      (       d  g US:X  a
  U" XU5        g U" X5        g )Nzquery-runningra   )re   getr4   )r!   r.   	operationquery_ifaceobj
extra_args
op_handlers         r$   runlink.run   sS    ]]&&y1
())(33))t~6t&r&   )r    rc   )r   
__module____qualname____firstlineno___modinfor   r0   staticmethodr4   r>   rE   rQ   r_   re   rg   ro   __static_attributes__ r&   r$   r   r       s    B @%v.45 )./#T]	 ;*9:
H,	
 h h="S: 'H*
'r&   r   )ifupdown2.lib.addonr   ifupdown2.ifupdown.ifaceifupdown2.ifupdown.utilsr   #ifupdown2.ifupdownaddons.modulebaser    ifupdown2.ifupdown.ifupdownflagsifupdownrH    ifupdown2.ifupdown.policymanagerr   ImportErrorModuleNotFoundError	lib.addonifupdown.ifaceifupdown.utilsifupdownaddons.modulebaseifupdown.ifupdownflagsifupdown.policymanagerr   rw   r&   r$   <module>r      s[   3)*.><<<<B'5* B' 	() 3 $4223s   )8 +A&%A&