
    /I_                     >   S SK r S SKrS SKr 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s  Jr  S SKJs  Jr  S SKJs  Jr  S SKJs  Jr   " S S\\5      r g! \\4 a8    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  S SKJr  S SKJr  S SKJr   NLf = f)	    N)Addon)*)utils)Link)
moduleBasec                       \ rS rSrSrSSSS/S/S.S	S
/S.S.S.rS rSS jrS rS r	S r
\S 5       rS rSS jrS rS r\\\\S.rS rSS jrSrg)xfrm)   z3
ifupdown2 addon module to create a xfrm interface
z(xfrm module creates a xfrm interface forzxfrm id165535z	xfrm-id 1)help
validrangeexamplezxfrm physical devicezxfrm-physdev lo)r   r   )xfrm-idxfrm-physdev)mhelpattrsc                 d    [         R                  " U 5        [        R                  " U /UQ70 UD6  g N)r   __init__r   )selfargskargss      #/usr/share/ifupdown2/addons/xfrm.pyr   xfrm.__init__<   s&    tD14151    Nc                 :    U R                  U5      nU(       a  U/$ g r   )_get_parent_ifacename)r   ifaceobjifacenames_all
parent_ints       r   get_dependent_ifacenamesxfrm.get_dependent_ifacenames@   s     //9
<r   c                 V    UR                  S5      (       a  UR                  S5      nU$ g )Nr   get_attr_valueget_attr_value_firstr   r   av_attrs      r   r   xfrm._get_parent_ifacenameH   s+    "">2233NCGNr   c                 V    UR                  S5      (       a  UR                  S5      nU$ g Nr   r%   r(   s      r   _get_xfrmidxfrm._get_xfrmidO   s+    ""9--33I>GNr   c                     UR                   $ r   )name)r   r   s     r   _get_xfrm_namexfrm._get_xfrm_nameV   s    }}r   c                 $    U R                  S5      $ r,   )r'   )r   s    r   _is_my_interfacexfrm._is_my_interfaceY   s    ,,Y77r   c                 X   U R                  U5      nU R                  U5      nU R                  U5      nU R                  R	                  U5      (       d  U R
                  R                  X2U5        g[        U R                  R                  U[        R                  S5      5      nU R                  R                  U R                  R                  U[        R                  S5      5      nXE:w  d  X6:w  a8  U R                  R                  U5        U R
                  R                  X2U5        gg)z
Up the XFRM Interface
r   N)r1   r   r-   cachelink_existsiproute2link_add_xfrmstrget_link_info_data_attributer   IFLA_XFRM_IF_ID
get_ifnameIFLA_XFRM_LINKnetlinklink_del)r   r   xfrm_ifacenamephysdevxfrmid
xfrmid_curphysdev_curs          r   _upxfrm._up]   s     ,,X6,,X6!!(+zz%%n55MM''H

77"((J **//

77"''K #w'=%%n5++GVL (>r   c                      U R                  U5      nU R                  R                  U5        g! [         a$  nU R	                  [        U5      5         SnAgSnAff = f)z
Down the XFRM Interface
N)r1   r@   rA   	Exceptionlog_warnr;   )r   r   ifaceobj_getfuncrB   es        r   _down
xfrm._down~   sL    	"!00:NLL!!.1 	"MM#a&!!	"s   ,/ 
AAAc                     U R                   R                  UR                  5      (       d  g [        R                  Ul        g r   )r7   r8   r0   ifaceStatusSUCCESSstatus)r   r   ifaceobjcurrs      r   _query_checkxfrm._query_check   s,    zz%%hmm44)11r   c                 Z    U R                   R                  UR                  5      (       d  g g r   )r7   r8   r0   )r   ifaceobjrunnings     r   _query_runningxfrm._query_running   s%    zz%%o&:&:;; <r   )zpre-upz	post-downquery-checkcurrquery-runningc                 6    U R                   R                  5       $ r   )_run_opskeys)r   s    r   get_opsxfrm.get_ops   s    }}!!##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 )Nr\   r[   )r^   getr4   )r   r   	operationquery_ifaceobj
extra_args
op_handlers         r   runxfrm.run   sR    ]]&&y1
'0E0Eh0O0O))t~6t&r    r   )__name__
__module____qualname____firstlineno____doc___modinfor   r"   r   r-   r1   staticmethodr4   rG   rN   rU   rY   r^   r`   rh   __static_attributes__rj   r   r   r	   r	   )   s     < ""Gn'= /-.

H2 8 8MB"2 ''	H$'r   r	   )!osglobsocketifupdown2.lib.addonr   ifupdown2.ifupdown.ifaceifupdown2.ifupdown.utilsr   ifupdown2.nlmanager.nlpacketr   #ifupdown2.ifupdownaddons.modulebaser   ifupdown2.ifupdown.statemanagerifupdownstatemanager ifupdown2.ifupdown.policymanagerpolicymanager ifupdown2.ifupdown.ifupdownflagsifupdownflags!ifupdown2.ifupdown.ifupdownconfigifupdownconfigImportErrorModuleNotFoundError	lib.addonifupdown.ifaceifupdown.utilsnlmanager.nlpacketifupdownaddons.modulebaseifupdown.statemanagerifupdown.policymanagerifupdown.ifupdownflagsifupdown.ifupdownconfigr	   rj   r   r   <module>r      s~    
  5)*.1>::<<<<>>"@'5* @'! 	() 5 $'402245s   AA =BB