U v`E@sdZddlmZddlmZddlZddlmZddlmZdZ d Z d Z d Z d Z d ZdZGdddejZGdddejZdZdZddZddZddZddZdS)z Diameter.)print_function)absolute_importN)dpkt) compat_ordiiiiiiic@seZdZdZdZeddZejddZeddZejddZed d Z e jd d Z ed d Z e jdd Z ddZ ddZ ddZ ddZdS)DiameterzDiameter. TODO: Longer class information.... Attributes: __hdr__: Header fields of Diameter. TODO. ))vBrlen3srflagsr r)cmdr r)Zapp_idIr)Zhop_idrr)Zend_idrrcCs|jd?d@SNrrselfre/private/var/folders/0j/yyfkg7712236ncpm167bvylc27vst9/T/pip-unpacked-wheel-y9gppv54/dpkt/diameter.py request_flag-szDiameter.request_flagcCs|jd@|d@d>B|_dSNirrr)rrrrrr1scCs|jd?d@SNrrrrrrproxiable_flag5szDiameter.proxiable_flagcCs|jd@|d@d>B|_dSNirrrrprrrr9scCs|jd?d@SNrrrrrr error_flag=szDiameter.error_flagcCs|jd@|d@d>B|_dSNirr"r)rerrrr#AscCs|jd?d@S)Nrrrrrrretransmit_flagEszDiameter.retransmit_flagcCs|jd@|d@d>B|_dS)Nirr&r)rtrrrr'IscCstj||t|jdd>t|jdd>Bt|jdB|_t|jdd>t|jdd>Bt|jdB|_|jd|j|j|_g}|jrt|j}| ||jt|d|_q||_|_ dS)Nrr) rPacketunpackrrr data __hdr_len__AVPappendavps)rbufZl_avprrrr-Ms$    zDiameter.unpackcCsdtd|jd?d@|jd?d@|jd@|_td|jd?d@|jd?d@|jd@|_tj|S)NBBBr)r*)structpackr rrr,pack_hdrrrrrr9^s,,zDiameter.pack_hdrcCs|jttt|jSN)r/summapr r.rrrr__len__cszDiameter.__len__cCs|dtt|jS)N)r9joinr<bytesr.rrrr __bytes__fszDiameter.__bytes__N)__name__ __module__ __qualname____doc____hdr__propertyrsetterrr#r'r-r9r=rArrrrrs,          rc@sveZdZdZeddZejddZeddZejddZedd Zejd d Zd d Z d dZ ddZ dS)r0))coderrr r cCs|jd?d@Srrrrrr vendor_flagqszAVP.vendor_flagcCs|jd@|d@d>B|_dSrr)rrrrrrJuscCs|jd?d@Srrrrrrmandatory_flagyszAVP.mandatory_flagcCs|jd@|d@d>B|_dSrr)rmrrrrK}scCs|jd?d@Sr!rrrrrprotected_flagszAVP.protected_flagcCs|jd@|d@d>B|_dSr$rrrrrrMscCstj||t|jdd>t|jdd>Bt|jdB|_|jr~td|jddd|_|jd|j|j |_n|jd|j|j |_dS)Nrr)rr*r+>Ir&) rr,r-rr rJr7r.vendorr/)rr3rrrr-s z AVP.unpackcCsTtd|jd?d@|jd?d@|jd@|_tj|}|jrP|td|j7}|S)Nr5r)r6r*rN)r7r8r rr,r9rJrO)rr.rrrr9s , z AVP.pack_hdrcCs"|jt|j}|jr|d7}|S)Nr&)r/r r.rJ)rlengthrrrr=sz AVP.__len__N) rBrCrDrFrGrJrHrKrMr-r9r=rrrrr0js        r0s((A @ h002(@s,,A ޭh002(@cCs\tt}tt|kstt|ttks,ttt}tt|ksDtt|ttksXtdSr:)r__sr@AssertionErrorr __t)drrr test_packs rUcCstt}|jdkst|jdks$t|jdks2tt|jdksDt|jd}|jdks\t|jdksjt|jdksxtt|dkst|j dksttt }|jdkst|jd}|jdkst|jdkstt|dkst|j d kst|j dkstdS) N(rrr+ sh002,r)l>[=) rrQr rRrr#r2rKrJr.rSrO)rTr4rrr test_unpacks&  rYcCsRt}dD]B}t||stt||dks.tt||dt||dks tq dS)N)rrr#r'rr)rhasattrrRgetattrsetattr)Zdiameterproprrrtest_diameter_propertiess  r^cCsRt}dD]B}t||stt||dks.tt||dt||dks tq dS)N)rJrKrMrr)r0rZrRr[r\)r4r]rrrtest_avp_propertiess  r_)rE __future__rrr7rcompatrZ ABORT_SESSIONZ ACCOUTINGZCAPABILITIES_EXCHANGEZDEVICE_WATCHDOGZDISCONNECT_PEERZRE_AUTHZSESSION_TERMINATIONr,rr0rQrSrUrYr^r_rrrrs(    Q9