c`c@sdddgZddljZddlZddlZddlZddlmZddlm Z ddl m Z m Z m Z mZddlmZdd lmZdd lmZde fd YZd e fd YZdZddZdS(tIcmpTypeticmptype_readerticmptype_writeriN(tconfig(t u2b_if_py2(tPY2t IO_ObjecttIO_Object_ContentHandlertIO_Object_XMLGenerator(tlog(terrors(t FirewallErrorcBseZdddddgffZdZddgZidd6dd6dd6Zid dgd6d d gd6Zd Zd Z dZ dZ RS(tversionttshortt descriptiont destinations(sssas)t_t-ticmptypetnametipv4tipv6cCs;tt|jd|_d|_d|_g|_dS(NR (tsuperRt__init__R RRR(tself((s=/usr/lib/python2.7/site-packages/firewall/core/io/icmptype.pyR8s    cCs&d|_d|_d|_|j2dS(NR (R RRR(R((s=/usr/lib/python2.7/site-packages/firewall/core/io/icmptype.pytcleanup?s   cCs_t|j|_t|j|_t|j|_g|jD]}t|^q@|_dS(s HACK. I haven't been able to make sax parser return strings encoded (because of python 2) instead of in unicode. Get rid of it once we throw out python 2 support.N(RR RRR(Rtm((s=/usr/lib/python2.7/site-packages/firewall/core/io/icmptype.pytencode_stringsEscCsI|dkrEx6|D]+}|dkrttjd|qqWndS(NRRRs'%s' not from {'ipv4'|'ipv6'}(RR(R R tINVALID_DESTINATION(RRtitemR((s=/usr/lib/python2.7/site-packages/firewall/core/io/icmptype.pyt _check_configNs     (sversionR (sshortR (s descriptionR N( t__name__t __module__tIMPORT_EXPORT_STRUCTUREtDBUS_SIGNATUREtADDITIONAL_ALNUM_CHARStNonetPARSER_REQUIRED_ELEMENT_ATTRStPARSER_OPTIONAL_ELEMENT_ATTRSRRRR(((s=/usr/lib/python2.7/site-packages/firewall/core/io/icmptype.pyR%s"      ticmptype_ContentHandlercBseZdZRS(cCstj||||jj|||dkrxd|krVtjd|dnd|kr|d|j_qn|dkrns|dkrnd|dkrxUdd gD]D}||kr||jd kr|jjj t |qqWndS( NRRs'Ignoring deprecated attribute name='%s'R RRRRRtyesttrue(syesR*( Rt startElementRtparser_check_element_attrsR twarningR tlowerRtappendtstr(RRtattrstx((s=/usr/lib/python2.7/site-packages/firewall/core/io/icmptype.pyR+Ys"        (R R!R+(((s=/usr/lib/python2.7/site-packages/firewall/core/io/icmptype.pyR(Xsc CsYt}|jds1ttjd|n|d |_|j|j||_||_|j t j rxt nt |_|j|_t|}tj}|j|d||f}t|di}tjd}|j|y|j|Wn2tjk r5}ttjd|jnXWdQX~~trU|jn|S(Ns.xmls%s is missing .xml suffixis%s/%strbsnot a valid icmptype file: %s(RtendswithR R t INVALID_NAMERt check_nametfilenametpatht startswithRt ETC_FIREWALLDtFalsetTruetbuiltintdefaultR(tsaxt make_parsertsetContentHandlertopent InputSourceR%t setByteStreamtparsetSAXParseExceptiontINVALID_ICMPTYPEt getExceptionRR( R7R8RthandlertparserRtftsourcetmsg((s=/usr/lib/python2.7/site-packages/firewall/core/io/icmptype.pyRms8     !       c Cs|r |n|j}|jr4d||jf}nd||jf}tjj|rytj|d|Wqtk r}tj d||qXntjj |}|j t j rtjj| rtjjt j stjt j dntj|dntj|dddd }t|}|ji}|jrq|jd krq|j|d s   "3