+
        I                        ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIH	t	H
t
HtHtHtHt ^ RIHtHtHt ^ RIHtHtHt ^ RIHtHtHtHt ^ RIHt ^ RIHt ^ R	IH t  ^ R
I!H"t"  ! R R]4      t# ! R R]4      t$RR lt%RR lt&R# )    N)config)checkIPnMaskcheckIP6nMaskcheckInterfaceuniqifymax_zone_name_len	check_mac)DEFAULT_ZONE_TARGETZONE_TARGETSDEFAULT_ZONE_PRIORITY)	IO_ObjectIO_Object_ContentHandlerIO_Object_XMLGenerator)common_startElementcommon_endElementcommon_check_configcommon_writer)rich)log)errors)FirewallErrorc                     a a ] tR t^)t oRtRFtRt]t/ RRbRRbRRbRRbR	RbR
R.bRRG.bRR.bRRbRRH.bRR.bRR.bRR.bRR.bRRG.bRRbRRbR^ R^ /Ct	. RIOt
/ RRbRRbRRbRR.bRRR.bRR.bR R.bRRbR!RR.bR"R.bR#RbR$RbR%RbRR&.bR'RR.bR(RbR)RbR*RR+RR,RR-RR.R/.R0R&.R1R/CtR. RJORR2.R!R3R4.R#R5R6.R$. RKOR%. RLOR(R7R8.R). RMOR,R9.R0R:.R;R&./t]R< 4       tV 3R= ltR> tV 3R? ltV 3R@ ltV 3RA ltRB tV 3RC ltRD tREtVtV ;t# )NZonez
Zone classi  version shortdescriptionUNUSEDFtargetservicesportsicmp_blocks
masqueradeforward_ports
interfacessources	rules_str	protocolssource_portsicmp_block_inversionforwardTingress_priorityegress_priorityNzoneservicenameportprotocolz
icmp-blockz	icmp-typezforward-port	interfacerulesourcedestinationvaluezsource-portr   nflogauditacceptrejectdropmarksetlimiticmp-block-inversionenabledzto-portzto-addrfamilypriorityprefixleveltypeburstztcp-mss-clampc                    \        \        P                  4       F  w  rW 8X  g   K  Vu # 	  \        \        P
                  R 4      h)z
index_of())	enumerater   IMPORT_EXPORT_STRUCTUREr   r   UNKNOWN_ERROR)elementiels   &  :/usr/lib/python3.14/site-packages/firewall/core/io/zone.pyindex_ofZone.index_ofu   s8    t;;<EA} = F00,??    c                  < \         \        V `  4        R V n        R V n        R V n        RV n        \        V n        . V n	        . V n
        . V n        . V n        RV n        RV n        . V n        . V n        . V n        . V n        \'        4       V n        RV n        RV n        RV n        V P0                  V n        V P0                  V n        R# )r   FTN)superr   __init__r   r   r   r   r
   r   r    r!   r(   r"   r+   r#   r$   r)   r%   r&   r>   rulesr*   combinedappliedpriority_defaultr,   r-   )self	__class__s   &rO   rU   Zone.__init__|   s    dD"$
)
U
$)! $ 5 5#44rR   c                   R V n         R V n        R V n        RV n        \        V n        V P                  R V P                  R V P                  R V P                  R RV n
        RV n        V P                  R V P                  R V P                  R V P                  R V P                   P#                  4        RV n        RV n        RV n        V P*                  V n        V P*                  V n        R# )r   F:NNNTN)r   r   r   r   r
   r   r    r!   r(   r"   r+   r#   r$   r)   r%   r&   rV   clearr*   rW   rX   rY   r,   r-   )rZ   s   &rO   cleanupZone.cleanup   s    
)MM!JJqMNN1Qq!a OOALLO

$)! $ 5 5#44rR   c                   < VR 8X  d/   \        V P                  4       Uu. uF  p\        V4      NK  	  up# \        \	        \
        V 4      V4      # u upi )r'   )sortedrV   strgetattrrT   r   )rZ   r0   rr[   s   && rO   __getattr__Zone.__getattr__   sH    ;$*4::$67$6qCF$6775t,d33 8s   Ac           	        < VR 8X  d8   \        V Uu. uF  p\        P                  ! VR7      NK  	  up4      V n        R# \        \
        V `  W4       R# u upi )r'   )rule_strN)r>   r   	Rich_RulerV   rT   r   __setattr__)rZ   r0   r7   sr[   s   &&& rO   rk   Zone.__setattr__   sD    ;%H%Qdnna8%HIDJ$)$6 Is    Ac                2   < \         \        V `  4       pVR  V# )r   )rT   r   export_config_dict)rZ   confr[   s   & rO   ro   Zone.export_config_dict   s    T435NrR   c                   \        WW#V4       V P                  VR ,          9   d4   \        \        P                  RP                  V P                  4      4      hVR8X  dB   V\        9  d5   \        \        P                  RP                  V P                  V4      4      hR# VR8X  d   V F  p\        V4      '       g5   \        \        P                  RP                  V P                  V4      4      hVR,           Fg  pW`P                  8X  d   K  WTR,          V,          P                  9   g   K5  \        \        P                  RP                  V P                  WV4      4      h	  K  	  R# VR8X  d   V F  p\        V4      '       gn   \        V4      '       g]   \        V4      '       gL   VP                  R	4      '       g5   \        \        P                  R
P                  V P                  V4      4      hVR,           Fg  pW`P                  8X  d   K  WtR,          V,          P                   9   g   K5  \        \        P                  RP                  V P                  Wv4      4      h	  K  	  R# VR9   dh   WP"                  8  g   WP$                  8  dF   \        \        P&                  RV P                   RV RV P$                   RV P"                   R2	4      hR# R# )policiesz0Zone '{}': Can't have the same name as a policy.r   zZone '{}': invalid target '{}'r%   z!Zone '{}': invalid interface '{}'zonesz4Zone '{}': interface '{}' already bound to zone '{}'r&   ipset:zZone '{}': invalid source '{}'z1Zone '{}': source '{}' already bound to zone '{}'zZone 'z': z1 is an invalid priority value. Must be in range [z, z].N)r,   r-   )r   r0   r   r   NAME_CONFLICTformatr   INVALID_TARGETr   INVALID_INTERFACEr%   r   r   r	   
startswithINVALID_ADDRr&   priority_maxpriority_minINVALID_PRIORITY)rZ   r   item
all_configall_io_objectsr3   r.   r5   s   &&&&&   rO   _check_configZone._check_config   s   D$NK99z22$$BII$))T 
 8\)#))4;;DIIvN  *
 \!#	%i00'00;BB IIy  +733Dyy(  7$;D$A$L$LL+"44RYY $		9 	 4 $$ Y $V,,)&11%f--"--h77'++8??		6R  +733Dyy( !8!>!F!FF+"//OVV $		6 	 4 !* <<)))V6G6G-G#++TYYKs6( 3))-):):(;2d>O>O=PPRT  .H =rR   c           	       < \         \        V `  V4       VP                  R 4      '       d*   \	        \
        P                  RP                  V4      4      hVP                  R 4      '       d*   \	        \
        P                  RP                  V4      4      hVP                  R 4      ^8  d*   \	        \
        P                  RP                  V4      4      hR V9   d   VRVP                  R 4       pMTp\        V4      \        4       8  d=   \	        \
        P                  RP                  V\        V4      \        4       4      4      hR# )/z$Zone '{}': name can't start with '/'z"Zone '{}': name can't end with '/'z%Zone '{}': name has more than one '/'Nz'Zone '{}': name has {} chars, max is {})rT   r   
check_namerz   r   r   INVALID_NAMErw   endswithcountfindlenr   )rZ   r0   checked_namer[   s   && rO   r   Zone.check_name   s   dD$T*??3##%K%R%RSW%X  ]]3##%I%P%PQU%V  ZZ_q ##7>>tD 
 d{#$4diin5#< #4#66#''=DDc,/1B1D  7rR   c                B   R V n         RV n        RV n        RV n        RV n        VP
                   F0  pW P
                  9  g   K  V P
                  P                  V4       K2  	  VP                   F0  pW0P                  9  g   K  V P                  P                  V4       K2  	  VP                   F0  pW@P                  9  g   K  V P                  P                  V4       K2  	  VP                   F0  pWPP                  9  g   K  V P                  P                  V4       K2  	  VP                   F0  pW`P                  9  g   K  V P                  P                  V4       K2  	  VP                   F0  pWpP                  9  g   K  V P                  P                  V4       K2  	  VP                  '       d   R V n        VP                  '       d   R V n        VP                   F0  pWP                  9  g   K  V P                  P                  V4       K2  	  VP                   F0  pWPP                  9  g   K  V P                  P                  V4       K2  	  VP                    F  p	V P                   P#                  V	4       K   	  VP$                  '       d
   R V n        R# R# )TNr   )rW   filenamer   r   r   r%   appendr&   r    r!   r(   r"   r+   r#   r$   r)   rV   addr*   )
rZ   r.   r3   r5   r/   r1   protoicmpr+   r4   s
   &&        rO   combineZone.combine  s   
I/&&y1 ) llF\\)##F+ # }}Gmm+$$W- % JJD::%

!!$'  ^^ENN*%%e, $ $$D+++  ''- % <<<DL???"DO))G000""))'2 * %%D,,,!!((. & JJDJJNN4  $$$(,D% %rR   )r   rX   rW   r   r-   r   r+   r$   r*   r"   r,   r%   r#   r!   r(   rV   r    r   r)   r&   r   r   i )r   r   )r   r   r   r   )_-r   )r0   	immutabler   r   ingress-priorityegress-priority)addressmacinvertrB   ipset)r   r   r   )grouprD   z
queue-size)__name__
__module____qualname____firstlineno____doc__r}   r|   r   rY   rJ   ADDITIONAL_ALNUM_CHARSPARSER_REQUIRED_ELEMENT_ATTRSPARSER_OPTIONAL_ELEMENT_ATTRSstaticmethodrP   rU   r_   rf   rk   ro   r   r   r   __static_attributes____classdictcell____classcell__)r[   __classdict__s   @@rO   r   r   )   s    LL,2 	r 	%	
 	" 	RD 	( 	t 	e 	*+ 	rd 	B4 	bT 	bT 	
  	!" 	4#$ 	A1'* -%%t% 	% 	F8	%
 	$% 	vh% 	fX% 	4% 	,% 	fX% 	% 	$% 	t% 	WI% 	
+%  	t!%" 	#%$ 	$$'1%!6 	 
 	ykI.:&A5'"26(''%%!* @ @505.47
>@8&- &-rR   r   c                   2   a  ] tR tRt o R tR tR tRtV tR# )zone_ContentHandleriD  c                N    \         P                  ! W4       R V n        R V n        R # N)r   rU   _rule	_limit_ok)rZ   r   s   &&rO   rU   zone_ContentHandler.__init__E  s     ))$5
rR   c           
     
   \         P                  ! WV4       V P                  P                  W4       \	        WV4      '       d   R # VR8X  Ed   RV9   d   \
        P                  ! RVR,          4       RV9   d   VR,          V P                  n        RV9   d   \
        P                  ! RVR,          4       RV9   dQ   VR,          pV\        9  d   \        \        P                  V4      hVR8w  d   V\        8w  d   W0P                  n        R	V9   d"   \        VR	,          4      V P                  n        R
V9   d$   \        VR
,          4      V P                  n        R # R # VR8X  d   RV P                  n        R # VR8X  d   V P$                  '       d2   \        \        P&                  R\)        V P$                  4       R24      hVR,          V P                  P*                  9  d/   V P                  P*                  P-                  VR,          4       R # R # VR8X  Ed   V P$                  '       d   V P$                  P.                  '       d2   \        \        P&                  R\)        V P$                  4       R24      hRpRV9   d   VR,          P1                  4       R!9   d   RpR ;p;rgRV9   d
   VR,          pRV9   d
   VR,          pRV9   d
   VR,          p\2        P4                  ! V P$                  \6        P8                  ! WVWtR7      R7      V n        R # RV9  d"   RV9  d   \        \        P:                  R4      hRV9   d"   RV9   d   \        \        P:                  R4      hRV9   d   \
        P                  ! RVR,          4       RV9   d   \        \        P:                  R4      hRV9   dj   \=        VR,          4      '       gR   \?        VR,          4      '       g:   \A        VR,          4      '       g"   \        \        PB                  VR,          4      hRV9   dP   RVR,          ,          pWP                  PD                  9  d&   V P                  PD                  P-                  V4       RV9   dM   VR,          pWP                  PD                  9  d(   V P                  PD                  P-                  V4       R # R # R # VR8X  d   RV P                  n#        R # \        \        PH                  R V R24      h)"Nr.   r0   z'Ignoring deprecated attribute name='%s'r   r   z,Ignoring deprecated attribute immutable='%s'r   r   r   r   r+   Tr3   z Interface is not valid in rule 'z'.r5   zMore than one source in rule 'Fr   r   r   r   )r   )r5   zNo address or ipset specified.z*Both address and ipset (can only use one).rB   z)Ignoring deprecated attribute family='%s'zInvert not allowed.zipset:%sr@   zUnknown XML element ')yestrue)%r   startElementr   parser_check_element_attrsr   r   warningr   r   r   r   rx   r
   r   intr,   r-   r+   r   INVALID_RULErc   r%   r   r5   lowerdataclassesreplacer   Rich_SourceINVALID_SOURCEr   r   r	   r{   r&   r*   INVALID_ZONE)	rZ   r0   attrsr   r   addrr   r   entrys	   &&&      rO   r    zone_ContentHandler.startElementJ  s    --d%@		,,T9t511V^EuV}UE!$))$4		!e#BE+DV 5 x-'(=(=vFFR<F.A$A'-II$!U*-07I1J-K		* E),/6G0H,I		) * Y $DII[ zzz#''6s4::6GrJ  V}DII$8$88		$$++E&M: 9 Xzzz::$$$'++8TZZ8IL  u$x)>)>)@O)S!F%)))s% +DE>,Ce#!'NE(00JJt'7'75'X
 %'*>#))+K  E!g&6#))+W  5 ?x 5 #F$9$9;PQQE!$U9%566)%	*:;;%eI&677'(;(;U9=MNN%"U7^3		 1 11II%%,,U3E!i(		 1 11II%%,,U3 2 "
 ++-1DII*   3 37LTFRT5UVVrR   c                H    \         P                  ! W4       \        W4       R # r   )r   
endElementr   )rZ   r0   s   &&rO   r   zone_ContentHandler.endElement  s     ++D7$%rR   )r   r   N)	r   r   r   r   rU   r   r   r   r   )r   s   @rO   r   r   D  s     
bH& &rR   r   c           	      r   \        4       pV P                  R 4      '       g"   \        \        P                  RV ,          4      hV RR Vn        V'       g   VP                  VP
                  4       Wn        Wn        VP                  \        P                  4      '       d   RMRVn        VP                  Vn        RVn        \        V4      p\         P"                  ! 4       pVP%                  V4       V: RV : 2p\'        VR4      ;_uu_ 4       p\         P(                  ! R4      pVP+                  V4        VP-                  V4        RRR4       ??T#   \         P.                   d5   p	\        \        P0                  RT	P3                  4       ,          4      hRp	?	ii ; i  + '       g   i     ??T# ; i)	.xmlz'%s' is missing .xml suffixNFTr   rbznot a valid zone file: %s)r   r   r   r   r   r0   r   r   pathrz   r   ETC_FIREWALLDbuiltindefaultr+   r   saxmake_parsersetContentHandleropenInputSourcesetByteStreamparseSAXParseExceptionr   getException)
r   r   no_check_namer.   handlerparserr0   fr5   msgs
   &&&       rO   zone_readerr     sf   6DV$$!>!I
 	
 "DI		"MI OOF,@,@AA5tDL<<DL DL!$'G__F
W%H%D	dD		Q&Q	LL 	 
 	K $$ 	##%@3CSCSCU%U 	 
	 	Ks*   (F#9EF ,/FF  F##F6	c                    V'       d   TMV P                   pV P                  '       d   V: R V P                  : 2pMV: R V P                  : R2p\        P                   P	                  V4      '       d     \
        P                  ! VRV,          4       \        P                   P                  V4      pVP                  \        P                  4      '       d   \        P                   P	                  V4      '       gp   \        P                   P	                  \        P                  4      '       g&   \        P                  ! \        P                  R4       \        P                  ! VR4       \        P                   ! VRRR7      p\#        V4      pVP%                  4        / pV P&                  '       d!   V P&                  R	8w  d   V P&                  VR
&   V P(                  \*        8w  d   V P(                  VR&   V P,                  V P.                  8w  d   \1        V P,                  4      VR&   V P2                  V P.                  8w  d   \1        V P2                  4      VR&   VP5                  RV4       VP7                  R4       \9        W4       \;        V P<                  4       F9  p	VP7                  R4       VP?                  RRV	/4       VP7                  R4       K;  	  \;        V P@                  4       F\  p
VP7                  R4       RV
9   d   VP?                  RRV
R,          /4       MVP?                  RRV
/4       VP7                  R4       K^  	  V PB                  '       d5   VP7                  R4       VP?                  R/ 4       VP7                  R4       V PD                  '       d5   VP7                  R4       VP?                  R/ 4       VP7                  R4       VPG                  R4       VP7                  R4       VPI                  4        VPK                  4        ?R#   \         d#   p\        P                  ! RY44        Rp?ELRp?ii ; i)r   r   z%s.oldzBackup of file '%s' failed: %sNi  wtzUTF-8)modeencodingr   r   r   r   r   r.   
z  r3   r0   ru   r5   r   :   NNr   r@   r+   )&r   r   r0   osexistsshutilcopy2	Exceptionr   errordirnamerz   r   r   mkdirior   r   startDocumentr   r   r
   r,   rY   rc   r-   r   ignorableWhitespacer   r   r%   simpleElementr&   r*   r+   r   endDocumentclose)r.   r   _pathr0   r   dirpathr   r   r   r3   r5   s   &&         rO   zone_writerr     s8   DdiiE}}}/#TYY/	ww~~d	CLLx$/ ggood#G&..//w8O8Oww~~f2233HHV))51
% 
4'2A$Q'G E|||*<<i{{))++h 5 55$'(=(=$> !t444#&t';';#< '%$  T__-	##D)kFI+>?##D) . $,,'##D)v!!(WfRj,AB!!(Y,?@##D) (    ##D)4b9##D) |||##D)i,##D) v%GGIy  	CII6BB	Cs   7P% %Q0QQ)Fr   )'xml.saxr   r   r   r   r   firewallr   firewall.functionsr   r   r   r   r   r	   firewall.core.baser
   r   r   firewall.core.io.io_objectr   r   r   firewall.core.io.policyr   r   r   r   firewall.corer   firewall.core.loggerr   r   firewall.errorsr   r   r   r   r    rR   rO   <module>r     sy     	 	     X W 
   $  )U-9 U-vm&2 m&` FGrR   