|dddlmZddlZddlZddlmZdZeeZ Gdde Z Gdde Z Gd d e Z Gd d e ZGd dZdZGddeZdZGddeZdZGddeZGddeZdZGddeZGddeZdZGd d!eZd"ZGd#d$eZd%ZGd&d'eZd(Z Gd)d*eZ!d+Z"Gd,d-eZ#d.Z$Gd/d0eZ%d1Z&Gd2d3eZ'd4Z(Gd5d6eZ)Gd7d8e)Z*d9Z+Gd:d;eZ,d<Z-Gd=d>eZ.d?Z/Gd@dAeZ0dBZ1dCZ2GdDdEZ3dFZ4dGZ5dHZ6dIZ7GdJdKZ8dLZ9dMZ:dNZ;dOZdRZ?dSZ@dTZAdUZBdVZCdWZDdXZEdYZFdZZGd[ZHGd\d]ZId^ZJd_ZKd`ZLdaZMdbZNdcZOddZPdeZQdfZRdgZSdhZTdiZUdjZVddkZWdlZXdmZYdnZZdoZ[dpZ\dqZ]drZ^dsZ_dtZ`duZadvZbdwZcdxZddyZeeYe;e9e:feZe6e4e5fe[eAe?e@fe\de3e2fe]eGeEeFfe^e>eeet||jsdS|j|jkrdS|j|jkrdS|j|jkrdS|j|jkrdS|j|jkrdS|j|jkrdS|jr|j|jkrdSdSNFT) isinstancerAr&r'r(r)r*r,r+rothers r__eq__zAgentXPDU.__eq__vs%00 5 <5= ( (5 >U_ , ,5 >U_ , ,5  !4 4 45 =EN * *5  u0 0 05   |u},,utrc.|| Sr rSrQs r__ne__zAgentXPDU.__ne__;;u%%%%r)FN)rrrrr;rMrSrVrrrr$r$Msg+/&&&&$   (&&&&&rr$c X|d}t|d\}}tjdtj|d}t ||\}}t||d}t|d|d|d|d|||}|S) NflagsBxxxrr' session_idtransaction_id packet_id) rstructunpackntppoly polybytes decode_OIDdecode_octetstrOpenPDU)datarrYtemptimeoutoid descriptionresults rdecode_OpenPDUrms 7OE4##JD$mFCH$6$6t$<$<==a@G4((IC!$//2K U;' )=,-vk/Bc;00F Mrc eZdZdZdZdZdS)rfct|t||||||_t ||_||_dSr )r$rPDU_OPENri classifyOIDrjrk)rr'r-r.r/rirjrks rrzOpenPDU.__init__sD49c65III s##&rct||durdS|j|jkrdS|j|jkrdS|j|jkrdSdSNTF)r$rSrirjrkrQs rrSzOpenPDU.__eq__se   D% ( ( 4 45 <5= ( (5 8uy 5  u0 0 05trc:tjd|j}||j|jz }|t |j|jz }t|j dddd|j|j |j |j t| }||zSNr[F)r_packrirjencoder'encode_octetstrrkencode_pduheaderr&r(r)r*lenrpayloadrs rrwzOpenPDU.encodes+fdl3348??4>222?4>43CDDD!$,"'udn"&.$2D"&-W??rNrrrrrSrwrrrrfrfsA'''        rrfc|d}|d}t|trt|}t|d|d|d|d|}|SNrYrr'r\r]r^)rPstrordClosePDU)rgrrYreasonrls rdecode_ClosePDUrsh 7OE !WF&#V eK(&*>-.{0CF Mrc eZdZdZdZdZdS)rct|t|||||tvrt d|z||_dS)Nz$Close reason %s not in defined types)r$r PDU_CLOSEdefinedReasons ValueErrorr)rr'r-r.r/rs rrzClosePDU.__init__sJ4IsFEJJJ  ' 'CfLMM M rcht||durdS|j|jkrdSdSrs)r$rSrrQs rrSzClosePDU.__eq__s;   D% ( ( 4 45 ;%, & &5trctjd|j}t|jdddd|j|j|j|jt| }||zSru) r_rvrryr&r'r(r)r*rzr{s rrwzClosePDU.encodesY+fdk22!$,"'udn"&.$2D"&-W??rNr}rrrrrsA      rrc |d}t|d}t||\}}t|d\}}tj|dzt j|\}}}t||\} }|dkrOt|d\}}tj|dzt j|d} nd} |dtkr1t|d|d|d |d ||| || | } n/t|d|d|d |d || || | } | S) NrYr'rZBBBxrItyper\r]r^) getendiandecode_contextrr_r`rarbrcrd PDU_REGISTER RegisterPDU UnregisterPDU) rgrrY endianTokenr+rhripriority rangeSubidrj upperBoundrls rdecode_xRegisterPDUrsr 7OEE+.//K"400MGT4##JD$$*M+2F25(2D2DT2J2J%L%L!GXz4((ICQtQ'' d];#4#&8#5#5d#;#;===>@   f~%%U;/ 1E#$45vk7J$h'W>> u[16,3G%&67 9L'j*gOO Mrc$eZdZ ddZdZdZdS)rrNc t|t||||d| ||_||_t ||_||_| |_d|_ dSNT) r$rrrirrqsubtreerr_instReg) rr'r-r.r/rirrrrr+s rrzRegisterPDU.__init__sf 4$c65$ I I I   "7++ $$ rct||durdSt|dr|j|jkrdS|j|jkrdS|j|jkrdS|j|jkrdS|j|jkrdSdS)NTFri)r$rShasattrrirrrrrQs rrSzRegisterPDU.__eq__s   D% ( ( 4 45 4 # # |u},,u =EN * *5 <5= ( (5 ?e. . .5 ?e. . .5trct|j}t|j|j\}}|jt kr-|t j|dz|j|j |j z }n&|t j|dz|j |j z }||j |jz }|j dkr6|j td|t j|dz|j z }t|j|jdd||j|j|j|jt)| }||z}|S)NrxBBxrz+upperBound must be set if rangeSubid is setrF)rr'encode_contextr+r&rr_rvrirrrrwrrryrr(r)r*rz)rrcontextPr|rpackets rrwzRegisterPDU.encodes;// *4>4<HH' << ' ' v{;#7#'=$/CC CGG v{;#7#'=$/CC CG4<&&t~666 ?a  & !NOOO v{;#4doFF FG!$, ue"*DN"&.$2D"&-W??'! rrNNr}rrrrrsK9=     rrceZdZ ddZdS)rrNc xt|||||d||||| t|_|`d|_dSNF)rrPDU_UNREGISTERr&rir) rr'r-r.r/rrrrr+s rrzUnregisterPDU.__init__(sKT9c65!8W'W > > >& L rrrrrrrr's+8<rrc0|d}t||\}}t||}|dtkr-t|d|d|d|d||}n,t |d|d|d|d||}|S)NrYrr'r\r]r^)rdecode_searchrange_list PDU_GET_NEXT GetNextPDUGetPDU)rgrrYr+ oidrangesrls rdecode_xGetPDUr2s 7OE"400MGT'f55I f~%%E+.|0D"#34f[6I%w00k*F<,@/0&2E!7,, Mrc"eZdZddZdZdZdS)rNc `t|t||||d|||_dSr)r$rPDU_GETrrr'r-r.r/rr+s rrzGetPDU.__init__Bs94$c65$ I I I"rcht||durdS|j|jkrdSdSrs)r$rSrrQs rrSz GetPDU.__eq__Gs;   D% ( ( 4 45 >U_ , ,5trct|j|j\}}|t|j|jz }t |jddd||j|j|j|j t| }||zSr) rr'r+encode_searchrange_listrryr&r(r)r*rzrrr|rs rrwz GetPDU.encodeNsw*4>4<HH'*4>4>JJJ!$,ue"*DN"&.$2D"&-W??rr r}rrrrrAsF####      rrceZdZddZdS)rNc ^t|||||||t|_dSr )rrrr&rs rrzGetNextPDU.__init__Ys2ife!7 , , ,# rr rrrrrrXs($$$$$$rrc x|d}t|d}t||\}}t|d\}}tj|dzt j|\}}t||}t|d|d|d|d||||} | S)NrYr'rZHHr\r]r^) rrrr_r`rarbrcr GetBulkPDU) rgrrYrr+rhnonRepsmaxRepsrrls rdecode_GetBulkPDUr_s 7OEE+.//K"400MGT4##JD$}[4%7%(X%7%7%=%=??GW'f55I k*F<,@/0&2E)W>>F Mrc$eZdZ ddZdZdZdS)rNc |t|t||||d|||_||_||_dSr)r$r PDU_GET_BULKrrr) rr'r-r.r/rrrr+s rrzGetBulkPDU.__init__nsG4$c65$ I I I  "rct||durdS|j|jkrdS|j|jkrdS|j|jkrdSdSrs)r$rSrrrrQs rrSzGetBulkPDU.__eq__vsc   D% ( ( 4 45 <5= ( (5 <5= ( (5 >U_ , ,5trcpt|j}t|j|j\}}|t j|dz|j|jz }|t|j|j z }t|j ddd||j|j |j |jt| }||zS)NrF)rr'rr+r_rvrrrrryr&r(r)r*rz)rrrr|rs rrwzGetBulkPDU.encodes// *4>4<HH'6;{T14<NNN*4>4>JJJ!$,ue"*DN"&.$2D"&-W??rr r}rrrrrmsI6:####         rrc|d}t||\}}t||}t|d|d|d|d||}|SNrYr'r\r]r^)rdecode_varbindlist TestSetPDUrgrrYr+varbindsrls rdecode_TestSetPDUrsf 7OE"400MGT!$//H k*F<,@/0&2E '++F Mrc"eZdZddZdZdZdS)rNc `t|t||||d|||_dSr)r$r PDU_TEST_SETrrr'r-r.r/rr+s rrzTestSetPDU.__init__s94$c65$ I I I  rcht||durdS|j|jkrdSdSrsr$rSrrQs rrSzTestSetPDU.__eq__;   D% ( ( 4 45 =EN * *5trct|j|j\}}|t|j|jz }t |jddd||j|j|j|j t| }||zSr rr'r+encode_varbindlistrryr&r(r)r*rzrs rrwzTestSetPDU.encodew*4>4<HH'%dndmDDD!$,ue"*DN"&.$2D"&-W??rr r}rrrrrF!!!!      rrcj|d}t|d|d|d|d}|Sr) CommitSetPDUrgrrYrls rdecode_CommitSetPDUrs? 7OE % ,f\.B !12F;4GIIF MrceZdZdZdZdS)rcNt|t||||dSr )r$rPDU_COMMIT_SETrr'r-r.r/s rrzCommitSetPDU.__init__s14$c65 : : : : :rc ht|jdddd|j|j|j|jd }|SNFrryr&r'r(r)r*rrs rrwzCommitSetPDU.encode:!$,"'udn"&.$2D"&-44 rNrrrrrwrrrrr2:::rrcj|d}t|d|d|d|d}|Sr) UndoSetPDUrs rdecode_UndoSetPDUrs? 7OE k*F<,@/0&2EGGF MrceZdZdZdZdS)rcNt|t||||dSr )r$r PDU_UNDO_SETrs rrzUndoSetPDU.__init__s14$c65 : : : : :rc ht|jdddd|j|j|j|jd }|Srrrs rrwzUndoSetPDU.encoderrNrrrrrrrrrcj|d}t|d|d|d|d}|Sr) CleanupSetPDUrs rdecode_CleanupSetPDUrs? 7OE 5-vl/C!"23VK5HJJF MrceZdZdZdZdS)rcNt|t||||dSr )r$rPDU_CLEANUP_SETrs rrzCleanupSetPDU.__init__s14$c65 : : : : :rc ht|jdddd|j|j|j|jd }|Srrrs rrwzCleanupSetPDU.encoderrNrrrrrrrrrc|d}t||\}}t|d|d|d|d|}|Sr)rPingPDU)rgrrYr+rls rdecode_PingPDUrsU 7OE"400MGT U;' )=,-vk/BF MrceZdZddZdZdS)rNc Rt|t||||d|dSr)r$rPDU_PING)rr'r-r.r/r+s rrzPingPDU.__init__s:4$c65$ I I I I Irct|j|j\}}t|jddd||j|j|j|jt| }||zSr) rr'r+ryr&r(r)r*rzrs rrwzPingPDU.encodes^*4>4<HH'!$,ue"*DN"&.$2D"&-W??rr rrrrrrs;IIII     rrc|d}t||\}}t||}t|d|d|d|d||}|Sr)rr NotifyPDUrs rdecode_NotifyPDUrsf 7OE"400MGT!$//H u[)6,+?./ 1D**F Mrc"eZdZddZdZdZdS)rNc `t|t||||d|||_dSr)r$r PDU_NOTIFYrrs rrzNotifyPDU.__init__ s94$c65$ I I I  rcht||durdS|j|jkrdSdSrsrrQs rrSzNotifyPDU.__eq__rrct|j|j\}}|t|j|jz }t |jddd||j|j|j|j t| }||zSrrrs rrwzNotifyPDU.encoderrr r}rrrrr rrrc  |d}t||\}}t||}|dtk}|rtnt}||d|d|d|d|d|d||}|S) NrYrr'r\r]r^newIndexanyIndex)rrPDU_INDEX_ALLOC IndexAllocPDUIndexDeallocPDU)rgrrYr+risallocpdurls rdecode_xIndexAllocPDUr"s 7OE"400MGT!$//Hf~0G" 7--C S{#VL%9()6++>z"E*$57$$F Mrc$eZdZ ddZdZdZdS)r Nc |t|t||||d|||_||_||_dSr)r$rr rrr rr'r-r.r/rrrr+s rrzIndexAllocPDU.__init__0sG4$c65$ I I I      rct||durdS|j|jkrdS|j|jkrdS|j|jkrdSdSrs)r$rSrrrrQs rrSzIndexAllocPDU.__eq__8sc   D% ( ( 4 45 =EN * *5 =EN * *5 =EN * *5trct|j|j\}}|t|j|jz }t |jd|j|j||j|j |j |j t| }||zSr) rr'r+rrryr&rrr(r)r*rzrs rrwzIndexAllocPDU.encodeCs|*4>4<HH'%dndmDDD!$,"' "*DN"&.$2D"&-W ?? rr r}rrrr r /sI7;!!!!        rr ceZdZ ddZdS)r Nc bt||||||||| t|_dSr )r rPDU_INDEX_DEALLOCr&rs rrzIndexDeallocPDU.__init__Os;tYVU'8W F F F( rr rrrrr r Ns+7;))))))rr c |d}t||\}}t||\}}t||d}t|d|d|d|d|||}|Sr)rrdreAddAgentCapsPDU)rgrrYr+rjdescrrls rdecode_AddAgentCapsPDUrVs 7OE"400MGT4((IC D& ) )! ,E U;/ 1E#$45vk7J %22F Mrc$eZdZ ddZdZdZdS)rNc t|t||||d|t||_||_dSr)r$rPDU_ADD_AGENT_CAPSrqrjrk)rr'r-r.r/rjrkr+s rrzAddAgentCapsPDU.__init__bsL4!3$c65$ I I Is##&rct||durdS|j|jkrdS|j|jkrdSdSrs)r$rSrjrkrQs rrSzAddAgentCapsPDU.__eq__isQ   D% ( ( 4 45 8uy 5  u0 0 05trc@t|j|j\}}||j|jz }|t |j|jz }t|jddd||j|j |j |j t| }||zSr) rr'r+rjrwrxrkryr&r(r)r*rzrs rrwzAddAgentCapsPDU.encoders*4>4<HH'48??4>222?4>43CDDD!$,ue"*DN"&.$2D"&-W??rr r}rrrrrasI+/''''     rrc|d}t||\}}t||\}}t|d|d|d|d||}|Sr)rrdRMAgentCapsPDU)rgrrYr+rjrls rdecode_RMAgentCapsPDUr"}sj 7OE"400MGT4((IC E+.|0D"#34f[6I**F Mrc"eZdZddZdZdZdS)r!Nc zt|t||||d|t||_dSr)r$rPDU_RM_AGENT_CAPSrqrj)rr'r-r.r/rjr+s rrzRMAgentCapsPDU.__init__sB4!2$c65$ I I Is##rcht||durdS|j|jkrdSdSrs)r$rSrjrQs rrSzRMAgentCapsPDU.__eq__s;   D% ( ( 4 45 8uy 5trct|j|j\}}||j|jz }t |jddd||j|j|j|j t| }||zSr) rr'r+rjrwryr&r(r)r*rzrs rrwzRMAgentCapsPDU.encodesx*4>4<HH'48??4>222!$,ue"*DN"&.$2D"&-W??rr r}rrrr!r!sF$$$$      rr!c ^|d}t|d}t|d\}}tj|dztj|\}}}|rt||}nd}t|d|d|d|d||||} | S)NrYr'IHHr\r]r^) rrr_r`rarbrcr ResponsePDU) rgrrYrrh sysUptimeresErrorresIndexrrls rdecode_ResponsePDUr/s 7OEE+.//K4##JD$$*M+2E25(2D2DT2J2J%L%L!Ix %dF33 {+VL-A 016+3F"HhBBF Mrc$eZdZ ddZdZdZdS)r+Nc t|t||||||_||_||_||_dSr )r$r PDU_RESPONSEr,r-r.r) rr'r-r.r/r,r-r.rs rrzResponsePDU.__init__s@4y#vuMMM"      rct||durdS|j|jkrdS|j|jkrdS|j|jkrdS|j|jkrdSdSrs)r$rSr,r-r.rrQs rrSzResponsePDU.__eq__sw   D% ( ( 4 45 >U_ , ,5 =EN * *5 =EN * *5 =EN * *5trcJt|j}tj|dz|j|j|j}|j|t|j|jz }t|j dddd|j|j |j |j t| }||zS)Nr*F)rr'r_rvr,r-r.rrryr&r(r)r*rz)rrr|rs rrwzResponsePDU.encodes// +kE14>"mT]<< = $ )$.$-HH HG!$,"'udn"&.$2D"&-W??rr r}rrrr+r+sI9=!!!!         rr+cPt|tr|St|dS)zFUtility function to allow the user to send a bare tuple for some casesF)rPOID)rjs rrqrqs'#s sE??rcF|d}t|d\}}tjdtj|\}}}|dkr t |fz}nd}t||z}d|cxkrdksntdt|}|dz}t||\}} t|d} | d |zz} |tj| tj|z }t||} | | fS) NrYrZrrrOID has too many subidsr'r) rr_r`rarbrcinternetPrefixrzrboolrr6) rgrrYn_subidprefixincludesubidstotalLen byteCountrestr formatStringrls rrdrds& 7OET1%%LFD%}VSX5G5G5O5OPPGVW {{6)+6{{W$H  S 23337mmG! I4++JD$E+.//K#-0L fmL#(*<*rcXeZdZddZdZdZdZdZdZdZ d Z d Z d Z d Z d ZdS)r6FcJ||_||_|dSr )r?r>sanity)rr?r>s rrz OID.__init__s!   rc|t|tsdS|j|jksdS|j|jkrdSdSrO)rPr6r?r>rQs rrSz OID.__eq__sF%%% 5 u|++5 \U] * *5trc.|| Sr rUrQs rrVz OID.__ne__ rWrc4||dkS)N compareOIDrQs r__lt__z OID.__lt__ su%%++rc0||dvS)N)rJrrKrQs r__le__z OID.__le__su%%00rc4||dkS)NrrKrQs r__gt__z OID.__gt__su%%**rc0||dvS)N)rrrKrQs r__ge__z OID.__ge__su%%//rc|j|jkrdSt|j}t|j}||kr|j}|j}|}d}n|j}|j}|}d}t|D]D}||||kr||||k||||kz } |r| n| } | cS|rdSdS)NrTFrrJ)r?rzrange) rrRlselflotherxylxflippedics rrLzOID.compareOIDs ;%, & &1DK  U\"" 6>> A ABGG A ABGr  Atqt||qTAaD[QqTAaD[1!(QBBq  12rc\dt|jdt|jdS)NzOID(r?r@)rFr?r>rs rrMz OID.__repr__5s/ $T[ 1 1 1 14 3E3E3E3EFFrct|jttfstt |jdkrt dS)Nr8)rPr?tuplerB TypeErrorrzrr_s rrFz OID.sanity8sB$+t}55 O t{  c ! !  " !rc&|js |jsdSdSrs)r?r>r_s risNullz OID.isNull>s{ 4< 4urc|jdd}t|}d|cxkrdksntd|dttkr.|tkr |t}|tdzd}nd}nd}t|}t t |j}t|}tj |dz|||}|D]} |tj |dz| z }|S)Nrr8r9rrr) r?rzr prefixCountr:intr;r>rr_rv) rr'r?numsubsr=r<r>rbodysubids rrwz OID.encodeCsQQQf++W########677 7 ,;, > 1 1$$ , a 0 01Ff++d4<(()) ** {;/&'JJ : :E FK c 1599 9DD rN)F)rrrrrSrVrMrOrQrSrLrMrFrdrwrrrr6r6s &&&,,,111+++000:GGG  rr6cVt|}t|}tj|dz|}|dz}|dkrd|z }d|z}t |t ur(t j|}||z|z}nd|z}tj|g|R}||z|z}|S)NrrZrB) rzrr_rvrrrarbrc)r'octets numoctetsrrpadrgfmts rrxrxYsF II&&K [s*I 6 6F q=C Qww#g C-C F||s##F++$Io{3((((}s" Krc|d}t|d\}}t|d}tj|dztj|d}t||krtd|dz}|dkrd|z }tj |d||||zdfS)NrYrZr'rrz Octet string shorter than length) rrr_r`rarbrcrzrpolystr)rgrrYrrorps rrereks 7OET1%%LFDE+.//K kC/1C1CF1K1KLLQOI 4yy9;<<< a-C Qww#g 8  D), - -tIO4D4D/E EErct|trdSt|ttfr|D]}d|cxkrdks ntdSt )Nr)rPrrBrarrb)rgr]s rsanity_octetstrrvxsj$$u && ! !ALLLLSLLLL  ! Orc|d}t|d\}}t|d}tj|dztj|d}t||\}}|t vrtd|zt|}|d||\}}t|||} | |fS)NrYrZr'Hxxr"Value type %s not in defined types) rrr_r`rarbrcrddefinedValueTypesrCrVarbind) rgrrY bindheaderrvalTyperKhandlersr|rls rdecode_Varbindrs 7OE q))JE+.//KmK%/H..z::<<<=?GD&))JD$',,....=GHHH )HHQKf--MGT WdG , ,F 4<rc4eZdZddZdZdZdZdZdZdS) r|Ncr||_t||_||_|dSr ) valueTyperqrjr|rF)rvtyperjr|s rrzVarbind.__init__s0s##  rcr|j|jkrdS|j|jkrdS|j|jkrdSdSrO)rrjr|rQs rrSzVarbind.__eq__sC >U_ , ,5 8uy 5 <5= ( (5trc.|| Sr rUrQs rrVzVarbind.__ne__rWrcd}|t|jt|jt|jfz}|S)Nz%Varbind(vtype=%s, oid=%s, payload=%s))rFrrjr|)rrqrs rrMzVarbind.__repr__s95 4''dhdl9K9KL Lrc|j|j}|tvrt d|zt|\}}}||jdS||jdS)Nry)rjrFrr{rCrr|)rvtsanifyerencoderdecoders rrFzVarbind.sanitys  ^ &++-- - -ABFGG G%6r%:"'7   L   ! ! ! ! ! HT\ " " " " "rc6t|}tj|dz|j}|j|}t |j}|\}}}|!||z|j|z} n||z|||jz} | S)Nrx)rr_rvrrjrwr{r|) rr'rrrKrrrrrgs rrwzVarbind.encodes ** [50$.AAxy))$T^4%-"'7  D=4<#6#6y#A#AADDD=779dl#C#CCD rr rrrrrSrVrMrFrwrrrr|r|ss &&& # # #     rr|cPt|}tj|dz|S)Nr\rr_rvr'numrs rencode_integer32r&I&&K ;{S(# . ..rc|d}t|d}t|d\}}tj|dz|d}||fS)NrYr'rZr\rrrr_r`rgrrYrrs rdecode_integer32rU 7OEE+.//K$""IC - c)3 / / 2C ;rcpt|turtdt|zdS)Nz%s is not integer)rrgrbrFrgs rsanity_integer32rs5 Dzz+d4jj8999rcPt|}tj|dz|S)Nrrrs rencode_unsigned32rrrc|d}t|d}t|d\}}tj|dz|d}||fS)NrYr'rZrrrrs rdecode_unsigned32rrrc&||dzkrtdS)Nlrrs rsanity_unsigned32rs  z!""#"rcdSNrr)r'rgs rencode_nullvaluers 3rc d|fSr r)rgrs rdecode_nullvaluers $<rcdSr rrs rsanity_nullvaluersDrcPt|}tj|dz|S)NQrrs rencode_integer64rrrc|d}t|d}t|d\}}tj|dztj|d}||fS)NrYr'r)rr)rrr_r`rarbrcrs rdecode_integer64rse 7OEE+.//K$""IC - c)38+=+=c+B+B C CA FC ;rc&||dzkrtdS)Nlrrs rsanity_integer64rs! ))**+*rc@t|t||Sr ) sanity_ipaddrrx)r'rns r encode_ipaddrrs & 9f - --rct||\}}tjdtj|}||fS)NBBBB)rer_r`rarbrc)rgraddrs r decode_ipaddrr s@ v..JD$ =!3!3D!9!9 : :D :rc6t|dvrtdS)N)rZ)rzrrs rrrs! 4yy rcvt||\}}t||\}}t||}||fSr )rd SearchRange)rgrstartOIDendOIDrls rdecode_SearchRangersAf--NHddF++LFD 6 * *F 4<rc4eZdZddZdZdZdZdZdZdS) rNct||_t||_d|j_| ||j_|dSr)rqstartendr>rF)rrrr>s rrzSearchRange.__init__sM '' s##   ")DJ  rcN|j|jkrdS|j|jkrdSdSrO)rrrQs rrSzSearchRange.__eq__&s/ : $ $5 8uy 5trc.|| Sr rUrQs rrVzSearchRange.__ne__-rWrc`dt|jdt|jd}|S)Nz SearchRange(r?r@)rFrr)rrs rrMzSearchRange.__repr__0s/%)$*%5%5%5%5tDH~~~~ Frc|j|j|jjrtdSr )rrFrr>rr_s rrFzSearchRange.sanity4sE   8     rct|j|}|j|}||zSr )rrwr)rr' startOIDstr endOIDstrs rrwzSearchRange.encode:s5j'' 22 HOOI.. Y&&rr rrrrrrss&&& '''''rrcg}|D]*}|||+d|}|Sr)rErwrG)r' searchrangesencodedsrans rrr@sMG//t{{9--....hhwG Nrc|g}|r*t||\}}|||*t|Sr )rrEra)rgrroidss rrrHsPI 'f55 d    rcDd}|D]}|||z }|Sr)rw)r'rr|varbinds rrrPs3G--7>>),,, Nrc|r>g}|r*t||\}}|||*t|}nd}|Sr )rrEra)rgrrvbs rrrWs_  %dF33HB OOB    ?? Orcd}||dz}||ddzz}||ddzz}||ddzz}||d d zz}|S) NrinstRegrrrrzrrr'rZr)rYflagbytes rencode_flagbytercskH i  H j!Q&&H j!Q&&H j!Q&&H k"a''H Orc tt|dzt|dzt|dzt|dzt|dz}|S)NrrzrZr)r) makeflagsr;)rYflagDicts rdecode_flagbyterms`eck**D,=,=eck**D,=,=edl++--H Orc|||||dS)N)rrrrr'r)iRnIaIcPbEs rrrys    rc|rdndS)N>BBBxr'IIIIr)versionrrYr\r]r^length)rr_r`rarbrcrr) rglineonerr&rYrrqlinenr- tactionIDr/dataLenrls rdecode_pduheaderrsdA&&MGT$mG,/H,>,>w,G,GIIGWeu%%H H[) * *V 3CD"%%KE4%+]33683E3Ee3L3L&N&N"CE7 'H9 G55F Mrc<|d}t||}nd}d}||fS)NTFr)rx)r'r+rr|s rrrs3!)W55 g rcV|d}|drt||\}}nd}||fS)NrYr)re)rgrrYr+s rrrs< 7OE Z'f55  T?rc:t|dkrtdt|d\}}t|}|dt|krdd|fSt||d\}}|ddkrt d|dz||||d}|t vrtd |z|||t |} |||}n"#t$rtd |||}|wxYw|d |fS) NzData too short for headerrFrrzUnknown packet version %irrzBody parsing errorT) rzrrrr rrCr"r r )rgrnewData packetSlicepktTyper parsedPkterrs r decode_packetrs] 4yy2~~"#>???b))OFG f % %F h#g,,&&UD  $WfX.>??K iA ; &y 1!2 & W>> >VnGo**,,,, BW L & W>> >g&GGK00 -v{GLL  dG ##s ) C66Dcg}|D]:}t|}|t|dz|t|dz|t|dz|t|dz|t|dz|t|dz|t|dz|t|dz<| |d|}|S) Nr8@ rr)rZrzr)rrEr;) bitString cropLengthbitsoctets r bits2Boolsrs- D ( (E  D&&''' D&&''' D&&''' D&&''' D&&''' D&&''' D&&''' D&&''''KZK  Krc(d}g}d}|D]K}|t|d|z zz }|dz }|dkr&d}|t|d}L|dkr"|t|d|}|S)Nrrr)r )rgrEchrrG)r bitCounterrncurrentbits r bools2BitsrsJ FG ( (CHHZ01a ??J MM#g,, ' ' 'G ?? MM#g,, ' ' ' WWV__F MrrzrZrrABCDFr8rrr r) ri iiiiiiiii i i r ) __future__rr_ntp.polyrantp.utilrr:rzrfr r rr r"r$rmrfrrrrrrrrrrrrrrrrrrrrrrrr r rrr"r!r/r+rqrdr6rxrervrr|rrrrrrrrrrrrrrrrrrrrrrrrrryrrrrrr VALUE_INTEGERVALUE_OCTET_STR VALUE_NULL VALUE_OID VALUE_IP_ADDRVALUE_COUNTER32 VALUE_GAUGE32VALUE_TIME_TICKS VALUE_OPAQUEVALUE_COUNTER64VALUE_NO_SUCH_OBJECTVALUE_NO_SUCH_INSTANCEVALUE_END_OF_MIB_VIEWr{rprrrrrrrrrrrrr rrr%r2r RSN_OTHERRSN_PARSE_ERRORRSN_PROTOCOL_ERROR RSN_TIMEOUT RSN_SHUTDOWNRSN_BY_MANAGERr ERR_NOERROR ERR_GENERR ERR_NO_ACCESSERR_WRONG_TYPE ERR_WRONG_LENERR_WRONG_ENCODINGERR_WRONG_VALUEERR_NO_CREATIONERR_INCONSISTENT_VALUEERR_RESOURCE_UNAVAILABLEERR_COMMIT_FAILEDERR_UNDO_FAILEDERR_NOT_WRITABLEERR_INCONSISTENT_NAME definedErrorsRSPERR_NO_AGENTXRSPERR_OPEN_FAILEDRSPERR_NOT_OPENRSPERR_INDEX_WRONG_TYPERSPERR_INDEX_ALREADY_ALLOCATEDRSPERR_INDEX_NONE_AVAILABLERSPERR_INDEX_NOT_ALLOCATEDRSPERR_UNSUPPORTED_CONTEXTRSPERR_DUPLICATE_REGISTRATIONRSPERR_UNKNOWN_REGISTRATIONRSPERR_UNKNOWN_AGENT_CAPSRSPERR_PARSE_ERRORRSPERR_REQUEST_DENIEDRSPERR_PROCESSING_ERRORresponseErrorsrrrrUsq  &%%%%% c.!! 2++++++++     :                   ,>&>&>&>&>&>&>&>&B        i   <     y   .400000)000fK        Y   .$$$$$$$$           @        .     9                I         i            .        I   >)))))m)))     i   8     Y   .         )    \.\\\\\\\\~$ F F F   --------`/// ::: ///     ///  ...   "'"'"'"'"'"'"'"'J   %%%*$$$$2"&       $$$&o%%'!!!#c:&M!!#''')%%%'(((*?""$&&&(+++----/,,,.G%/P           & n& &%&' &  ^ & . &#&#&'&#&)& & n&*&,& .!&",#&$$%&&*    _.@|^=    j- 2O "8)+;& ( !$!   #!"$6)+I-/I,.K-/H$&;) +r