+
    i~!  c            	       s   ^ RI t^ RIHt ^ RIHt ^ RIHtHtH	t	 ^ RI
Ht ^ RIHt ^ RIHtHt ^ RItRR	.R
. ROR. RO/t/ t/ t/ t]P-                  4        F  t. ]]&   ]! 4       ]]&   ]],           F  t]],          P5                  R],          4       ]],          P5                  R]: R]: R24       ]],          P5                  R],          4       ]],          P7                  R],          4       K  	  K  	   ! R R4      tR# )i    N)runProg)log)tempFilereadfile	splitArgs)COMMANDS)	ipXtablesFirewallErrorINVALID_IPVZbrouteZBROUTINGZnatfilterz-N %s_directz-I z 1 -j Z_directz-I %s_direct 1 -j RETURNz	%s_directc                   s   a  ] tR t^%t o RtR tRtR tR tR t	R t
R tR tR	 tR
 tR tR tR tR tR tRR ltR tR tR tR tRR ltR tRtV tR# )ebtablesZebFc                s   \         V P                  ,          V n        \         R V P                  ,          ,          V n        V P	                  4       V n        V P                  4       V n        V P                  4        . V n	        R# )z
%s-restoreN)
r   ipv_command_restore_command_detect_restore_noflush_optionrestore_noflush_option_detect_concurrent_optionconcurrent_optionfill_existsavailable_tablesself   &;/usr/lib/python3.14/site-packages/firewall/core/ebtables.py__init__Zebtables.__init__*   s^     * ()@ A&*&I&I&K#!%!?!?!A "    c                s    \         P                  P                  V P                  4      V n        \         P                  P                  V P
                  4      V n        R # N)osZpathZexistsr   command_existsr   restore_command_existsr   r   r   r   Zebtables.fill_exists2   s6     ggnnT]];&(ggnnT5J5J&K#r   c                sZ    R p\        V P                  RR.4      pV^ ,          ^ 8X  d   RpV# ) z--concurrent-L)r    r   )r   r   rets   &  r   r   Z"ebtables._detect_concurrent_option6   s6     dmmnd%;<q6Q; .  r   c                sT    . p V P                  VR 4       R#   \         d     R# i ; i)offFT)	set_rules
ValueError)r   ruless   & r   r   Z'ebtables._detect_restore_noflush_option@   s5     	NN5%(   		s    ''c                s   . pV P                   '       d-   V P                   V9  d   VP                  V P                   4       Y! Uu. uF  pR V,          NK  	  up,          p\        P                  ! RV P                  V P
                  RP                  V4      4       \        V P
                  V4      w  rEV^ 8w  d1   \        RV P
                  : RRP                  V4      : RV: 24      hV# u upi )z%s	%s: %s %s '
' failed: )	r   appendr   debug2	__class__r   joinr    r$   )r   argsZ_argsZitemstatusr!   s   &&    r   Z__runZebtables.__runJ   s    !!!d&<&<D&HLL//0$/$$$++$//

;sxxOu5Q;(,sxx~sK  
 0s   C-c                sR    R F   pW!9   g   K  \        \        RV,          4      h	  R# )
%%REJECT%%z'%s' invalid for ebtablesN)r0   z%%ICMP%%z%%LOGTYPE%%r   )r   rulestrs   && r   _rule_validateZebtables._rule_validateX   s$    <C{#K1Ls1RSS =r   c                sD    V\         9   ;'       d    V\         V,          9   # r   )BUILT_IN_CHAINS)r   r   tablechains   &&&&r   is_chain_builtinZebtables.is_chain_builtin]   s    'KKE_U5K,KKr   c           	     s    . pV'       d0   VP                  R VRV.4       VP                  R VRVRRR.4       V# VP                  R VRV.4       V# )-tz-N-IZ1z-jZRETURN-X)r*   )r   addr5   r6   r%   s   &&&& r   build_chain_rulesZebtables.build_chain_rules`   s]    LL$tU34LL$tUCxHI  LL$tU34r   c                sp    R V.pV'       d   VRV\        V4      .,          pMVRV.,          pWe,          pV# )r8   r9   z-D)r2   )r   r;   r5   r6   indexr.   r1   s   &&&&&& r   
build_ruleZebtables.build_rulek   s=    e}T5#e*--DT5M!Dr   c                s2    \         P                  ! V4       R # r   )r   Zcommon_check_passthroughr   r.      &&r   check_passthroughZebtables.check_passthrought   s    **40r   c                s.    \         P                  ! V4      # r   )r   Zcommon_reverse_passthroughr?   r@   r   reverse_passthroughZebtables.reverse_passthroughw   s    33D99r   c                sH   \        4       pR p/ pV EF  pVR,          pV P                  V4       R FP  p VP                  V4      p	\        V4      V	^,           8  d%   VP	                  V	4       VP	                  V	4      pKP  KR  	  \        V4       F_  w  r\        P                   FF  pW9   g   K  V
P                  R4      '       d   V
P                  R4      '       d   K;  RV
,          Wy&   KH  	  Ka  	  VP                  V. 4      P                  V4       EK  	  V FQ  pVP                  RV,          4       WT,           F*  pVP                  RP                  V4      R,           4       K,  	  KS  	  VP                  4        \         P"                  ! VP$                  4      p\&        P(                  ! RV P*                  V P,                  RVP$                  VP.                  3,          4       . pVP                  R	4       \1        V P,                  WP$                  R
7      w  r\&        P2                  ! 4       ^8  d   \5        VP$                  4      pVef   ^p	V F]  p\&        P6                  ! RV	V3,          ^^ R7       VP                  R4      '       g   \&        P6                  ! R^R7       V	^,          p	K_  	  \         P8                  ! VP$                  4       V^ 8w  d1   \        RV P,                  : RRP                  V4      : RV: 24      hR#   \
         d     EK  i ; i)r
   NNNZ"z"%s"z*%s
r'   Z
r&   z%s: %dz	--noflush)ZstdinNz%8d: %s)nofmtZnlr   )rD   r(   r)   )r8   z--table)r   r3   r=   ZlenZpopr$   Z	enumeratestringZ
whitespaceZ
startswithZendswithZ
setdefaultr*   Zwriter-   Zcloser   statnamer   r+   r,   r   Zst_sizer    ZgetDebugLogLevelr   Zdebug3Zunlink)r   r%   
log_deniedZ	temp_filer5   Ztable_rulesZ_ruler1   ZoptZiZelementZcrF   r.   r/   r!   ZlinesZlines   &&&               r   r#   Zebtables.set_rulesz   s   J	E8D% ),

3A 4yAE) $ * ) (o
**A|**3//G4D4DS4I4I"(7"2	 + . ""5"-44T:5 8 !EOOGeO,#** 56 + !
 	wwy~~&

NN!!	55		
 K  5 5t>>R!A%Y^^,E !DJJyAt94A!D==..

2Q/FA	 " 			)..!Q;(,(=(=sxx~sS  e " s   LL! L!c                sF    V P                  V4       V P                  V4      # r   )r3   _ebtables__run)r   r1   rH   s   &&&r   set_ruleZebtables.set_rule   s    D!zz$r   Nc                s   . pV'       d   V.M\         P                  4       pV Fg  pWP                  9   d   VP                  V4       K&   V P	                  R VR.4       V P                  P                  V4       VP                  V4       Ki  	  V#   \
         d"    \        P                  ! RT,          4        K  i ; i)r8   r    z#ebtables table '%s' does not exist.)r4   keysr   r*   rI   r$   r   Zdebug1)r   r5   r!   Ztabless   &&  r   get_available_tablesZebtables.get_available_tables   s    !%';';'=E---

5!NJJeT23))007JJu%  
 " NJJDuLMNs   A B(B=<B=c                s    / # r    )r   r5   r@   r   get_zone_table_chainsZebtables.get_zone_table_chains   s    	r   c                s    . p\         P                  4        F5  pW P                  4       9  d   K  R F  pVP                  RW#.4       K  	  K7  	  V# )-Fr8   )rO   r:   z-Zr4   rK   rL   r*   )r   r%   r5   Zflags   &   r   build_flush_rulesZebtables.build_flush_rules   sP    $))+E5577 +dE01 + , r   c           	     s    . pVR 8X  d   RMTp\         P                  4        FB  pWPP                  4       9  d   K  \         V,           F  pVP                  RVRWd.4       K  	  KD  	  V# )ZPANICZDROPr8   z-PrP   )r   ZpolicyZpolicy_detailsr%   Z_policyr5   r6   s   &&&    r   build_set_policy_rulesZebtables.build_set_policy_rules   sh    "g-&6$))+E5577(//dE4@A 0 ,
 r   c                s    . # r   rM   r   r   r   build_default_tablesZebtables.build_default_tables   s    	r   c                s   . p\          F  pW0P                  4       9  d   K  \         V,          R ,          pVR8w  d(   V\        9   d   VP                  \        V,          4       RV.pV FS  p\	        V\
        4      '       d   VP                  WV,           4       K2  VP                  V\        V4      ,           4       KU  	  K  	  V# )rC   r"   r8   )DEFAULT_RULESrL   	LOG_RULESZextendZ
isinstanceZlistr*   r   )r   rH   Zdefault_rulesr5   Z_default_rulesZprefixr1   s   &&     r   build_default_rulesZebtables.build_default_rules   s    "E5577*51!4NU"u	'9%%i&67E]F&dD))!((7!(()D/)AB	 ' # r   c                s    WP                   8H  # r   )r   )r   r   r@   r   is_ipv_supportedZebtables.is_ipv_supported   s    hhr   )r   r   r   r   r   r   r   r   )r"   )Z__name__Z
__module__Z__qualname__Z__firstlineno__r   rG   Zpolicies_supportedr   r   r   r   rI   r3   r7   r<   r>   rA   rB   r#   rJ   rL   rN   rQ   rR   rS   rV   rW   Z__static_attributes__Z__classdictcell__)Z__classdict__s   @r   r   r   %   s     
CD#L!T
L	1:CJ  
  r   r   )Z
PREROUTINGZPOSTROUTINGOUTPUT)ZINPUTrX   ZFORWARD)Zos.pathr   Zfirewall.core.progr    Zfirewall.core.loggerr   Zfirewall.functionsr   r   r   Zfirewall.configr   Zfirewall.corer   Zfirewall.errorsr   r	   rE   r4   rT   rU   Z
OUR_CHAINSrK   r5   Zsetr6   r*   r;   r   rM   r   r   <module>rY      s     & $ < < $ # 6  zl	2, 	
!!#EM%Ju ''e##NU$:;e##eU$KLe##$>$FG5kE12	 ( $\ \r   