HEX
Server: Apache
System: Linux box5154.bluehost.com 5.14.0-162.23.1.9991722448259.nf.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jul 31 18:11:45 UTC 2024 x86_64
User: almiraso (1849)
PHP: 8.2.31
Disabled: NONE
Upload Files
File: //lib64/python3.9/site-packages/ntp/__pycache__/agentx_packet.cpython-39.pyo
a

\��d���$@s�ddlmZddlZddlZddlmZdZee�Z	Gdd�de
�ZGdd�de�ZGd	d
�d
e�Z
Gdd�de�ZGd
d�d�Zdd�ZGdd�de�Zdd�ZGdd�de�Zdd�ZGdd�de�ZGdd�de�Zdd�ZGdd �d e�ZGd!d"�d"e�Zd#d$�ZGd%d&�d&e�Zd'd(�ZGd)d*�d*e�Zd+d,�ZGd-d.�d.e�Zd/d0�Z Gd1d2�d2e�Z!d3d4�Z"Gd5d6�d6e�Z#d7d8�Z$Gd9d:�d:e�Z%d;d<�Z&Gd=d>�d>e�Z'd?d@�Z(GdAdB�dBe�Z)GdCdD�dDe)�Z*dEdF�Z+GdGdH�dHe�Z,dIdJ�Z-GdKdL�dLe�Z.dMdN�Z/GdOdP�dPe�Z0dQdR�Z1dSdT�Z2GdUdV�dV�Z3dWdX�Z4dYdZ�Z5d[d\�Z6d]d^�Z7Gd_d`�d`�Z8dadb�Z9dcdd�Z:dedf�Z;dgdh�Z<didj�Z=dkdl�Z>dmdn�Z?dodp�Z@dqdr�ZAdsdt�ZBdudv�ZCdwdx�ZDdydz�ZEd{d|�ZFd}d~�ZGdd��ZHGd�d��d��ZId�d��ZJd�d��ZKd�d��ZLd�d��ZMd�d��ZNd�d��ZOd�d��ZPd�d��ZQd�d��ZRd�d��ZSd�d��ZTd�d��ZUd�d��ZVd�d�d��ZWd�d��ZXd�ZYd�ZZd�Z[d�Z\d�Z]d�Z^d�Z_d�Z`d�Zad�Zbd�Zcd�Zdd�ZeeYe;e9e:feZe6e4e5fe[eAe?e@fe\de3e2fe]eGeEeFfe^e>e<e=fe_e>e<e=fe`e>e<e=feae6e4e5febeDeBeCfeceAe?e@fedeAe?e@feeeAe?e@fi
Zfd�Zgd�Zhd�Zid�Zjd�Zkd�Zld�Zmd�Znd�Zod�Zpd�Zqd�Zrd�Zsd�Ztd�Zud�Zvd�Zwd�Zxegeeheeieejeekeeleemeeneeoeepe eqe"ere&ese$ete(eue(eve+ewe-exe/iZyd�Zzd�Z{d�Z|d�Z}d�Z~d�Zeze{e|e}e~efZ�dZ�d�Z�d�Z�d�Z�d�Z�d�Z�d�Z�d�Z�d�Z�d�Z�d�Z�d�Z�d�Z�d�Z�e�e�e�e�e�e�e�e�e�e�e�e�fZ�dZ�d�Z�d�Z�d�Z�d�Z�d�Z�d�Z�d�Z�d�Z�d�Z�d�Z�d�Z�d�Z�d�Z�e�e�e�e�e�e�e�e�e�e�e�e�e�e�fZ�dS)��)�print_functionN)�	slicedata)���rc@seZdZddd�ZdS)�
ParseErrorN�cCs&t�|�||_||_||_||_dS�N)�	Exception�__init__�message�header�
packetData�
remainingData)�selfrr
rr�r�7/usr/lib64/python3.9/site-packages/ntp/agentx_packet.pyr's

zParseError.__init__)Nrr��__name__�
__module__�__qualname__rrrrrr&src@seZdZdS)�ParseDataLengthErrorN�rrrrrrrr/src@seZdZdS)�ParseVersionErrorNrrrrrr3src@seZdZdS)�ParsePDUTypeErrorNrrrrrr7src@s6eZdZd
dd�Zdd�Zdd�Zd	d
�Zdd�ZdS)�	AgentXPDUFNcCs.||_||_||_||_||_||_||_dSr	)�pduType�	bigEndian�	sessionID�
transactionID�packetID�context�_hascontext)rrr�sID�tactID�pktIDZ
hascontextr!rrrrNszAgentXPDU.__init__cCs^i}t|�}|�d�|D].}|ddkr,qt||�}t|�r@q|||<q|jrZ|j|d<|S)zAAssembles a list of class variables that it is desirable to printr!r�_)�dir�remove�getattr�callabler"r!)rZpktvars�namesZvname�varrrr�
packetVarsXs



zAgentXPDU.packetVarscCsj|jjd}g}|��}t|���}|��|D]"}||}|�d|t|�f�q0|d�|�d7}|S)N�(z%s=%sz, �))	�	__class__rr-�list�keys�sort�append�repr�join)r�s�vZmyvarsr2�name�valuerrr�__repr__jszAgentXPDU.__repr__cCs�t||j�sdS|j|jkr dS|j|jkr0dS|j|jkr@dS|j|jkrPdS|j|jkr`dS|j|jkrpdS|jr�|j|jkr�dSdS�NFT)	�
isinstancer0rrrrr r"r!�r�otherrrr�__eq__vs$zAgentXPDU.__eq__cCs|�|�Sr	�r@r>rrr�__ne__�szAgentXPDU.__ne__)FN)rrrrr-r;r@rBrrrrrMs�

rcCsr|d}t|d�\}}t�dtj�|��d}t||�\}}t||�d}t|d|d|d|d|||�}|S)	N�flags��Bxxxrr�
session_id�transaction_id�	packet_id)	r�struct�unpack�ntp�poly�	polybytes�
decode_OID�decode_octetstr�OpenPDU)�datar
rC�temp�timeout�oid�description�resultrrr�decode_OpenPDU�s�rWc@s$eZdZdd�Zdd�Zdd�ZdS)rPcCs.t�|t||||�||_t|�|_||_dSr	)rr�PDU_OPENrS�classifyOIDrTrU)rrr#r$r%rSrTrUrrrr�s
zOpenPDU.__init__cCsHt�||�durdS|j|jkr$dS|j|jkr4dS|j|jkrDdSdS�NTF)rr@rSrTrUr>rrrr@�szOpenPDU.__eq__cCsbt�d|j�}||j�|j�7}|t|j|j�7}t|j	dddd|j|j
|j|jt
|��
}||S�NrEF)rI�packrSrT�encoder�encode_octetstrrU�encode_pduheaderrrrr �len�r�payloadr
rrrr]�s
�zOpenPDU.encodeN�rrrrr@r]rrrrrP�srPcCsF|d}|d}t|t�r"t|�}t|d|d|d|d|�}|S�NrCrrrFrGrH)r=�str�ord�ClosePDU)rQr
rC�reasonrVrrr�decode_ClosePDU�s
�ric@s$eZdZdd�Zdd�Zdd�ZdS)rgcCs2t�|t||||�|tvr(td|��||_dS)Nz$Close reason %s not in defined types)rr�	PDU_CLOSE�definedReasons�
ValueErrorrh)rrr#r$r%rhrrrr�szClosePDU.__init__cCs(t�||�durdS|j|jkr$dSdSrZ)rr@rhr>rrrr@�s
zClosePDU.__eq__cCs>t�d|j�}t|jdddd|j|j|j|jt	|��
}||Sr[)
rIr\rhr_rrrrr r`rarrrr]�s
�zClosePDU.encodeNrcrrrrrg�srgcCs�|d}t|d�}t||�\}}t|d�\}}t�|dtj�|��\}}}t||�\}	}|dkr�t|d�\}}t�|dtj�|��d}
nd}
|dt	kr�t
|d|d|d	|d
|||	||
|�
}n(t|d|d|d	|d
||	||
|�	}|S)NrCrrD�BBBxr�I�typerFrGrH)�	getendian�decode_contextrrIrJrKrLrMrN�PDU_REGISTER�RegisterPDU�
UnregisterPDU)rQr
rC�endianTokenr!rRrS�priority�
rangeSubidrT�
upperBoundrVrrr�decode_xRegisterPDU�s6

�


���
�ryc@s&eZdZd	dd�Zdd�Zdd�ZdS)
rsrNc
CsDt�|t||||d|
�||_||_t|�|_||_|	|_d|_	dS�NT)
rrrrrSrvrY�subtreerwrx�_instReg)rrr#r$r%rSrvr{rwrxr!rrrr�s�
zRegisterPDU.__init__cCsrt�||�durdSt|d�r.|j|jkr.dS|j|jkr>dS|j|jkrNdS|j|jkr^dS|j|jkrndSdS)NTFrS)rr@�hasattrrSrvr{rwrxr>rrrr@s
zRegisterPDU.__eq__cCs�t|j�}t|j|j�\}}|jtkrF|t�|d|j|j	|j
�7}n|t�|d|j	|j
�7}||j�|j�7}|j
dkr�|j
dur�td��|t�|d|j
�7}t|j|jdd||j|j|j|jt|��
}||}|S)NrmZxBBxrz+upperBound must be set if rangeSubid is setrnF)rpr�encode_contextr!rrrrIr\rSrvrwr{r]rxrlr_r|rrr r`)rru�contextPrbr
Zpacketrrrr]s*

��


�zRegisterPDU.encode)rNNrcrrrrrs�s�
rsc@seZdZddd�ZdS)rtrNc


Cs2t�|||||d|||||	�t|_|`d|_dS�NF)rsr�PDU_UNREGISTERrrSr|)
rrr#r$r%rvr{rwrxr!rrrr(s�zUnregisterPDU.__init__)rNNrrrrrrt's�rtcCsv|d}t||�\}}t||�}|dtkrPt|d|d|d|d||�}n"t|d|d|d|d||�}|S)NrCrorrFrGrH)rq�decode_searchrange_list�PDU_GET_NEXT�
GetNextPDU�GetPDU)rQr
rCr!�	oidrangesrVrrr�decode_xGetPDU2s
��r�c@s&eZdZddd�Zdd�Zdd�ZdS)	r�Nc
Cs"t�|t||||d|�||_dSrz)rr�PDU_GETr��rrr#r$r%r�r!rrrrBs�zGetPDU.__init__cCs(t�||�durdS|j|jkr$dSdSrZ)rr@r�r>rrrr@Gs
z
GetPDU.__eq__cCsTt|j|j�\}}|t|j|j�7}t|jddd||j|j|j|j	t
|��
}||Sr�)r~rr!�encode_searchrange_listr�r_rrrr r`�rrrbr
rrrr]Ns
�z
GetPDU.encode)Nrcrrrrr�As
r�c@seZdZddd�ZdS)r�Nc	Cs t�|||||||�t|_dSr	)r�rr�rr�rrrrYs�zGetNextPDU.__init__)Nrrrrrr�Xsr�c
	Cs�|d}t|d�}t||�\}}t|d�\}}t�|dtj�|��\}}t||�}t	|d|d|d|d||||�}	|	S)NrCrrD�HHrFrGrH)
rprqrrIrJrKrLrMr��
GetBulkPDU)
rQr
rCrur!rR�nonReps�maxRepsr�rVrrr�decode_GetBulkPDU_s

�
�r�c@s&eZdZddd�Zdd�Zdd�ZdS)	r�Nc		
Cs.t�|t||||d|�||_||_||_dSrz)rr�PDU_GET_BULKr�r�r�)	rrr#r$r%r�r�r�r!rrrrns�zGetBulkPDU.__init__cCsHt�||�durdS|j|jkr$dS|j|jkr4dS|j|jkrDdSdSrZ)rr@r�r�r�r>rrrr@vszGetBulkPDU.__eq__cCsxt|j�}t|j|j�\}}|t�|d|j|j�7}|t|j|j	�7}t
|jddd||j|j|j
|jt|��
}||S)Nr�F)rprr~r!rIr\r�r�r�r�r_rrrr r`)rrurrbr
rrrr]�s

�zGetBulkPDU.encode)Nrcrrrrr�ms�
r�cCsF|d}t||�\}}t||�}t|d|d|d|d||�}|S�NrCrrFrGrH)rq�decode_varbindlist�
TestSetPDU�rQr
rCr!�varbindsrVrrr�decode_TestSetPDU�s
�r�c@s&eZdZddd�Zdd�Zdd�ZdS)	r�Nc
Cs"t�|t||||d|�||_dSrz)rr�PDU_TEST_SETr��rrr#r$r%r�r!rrrr�s�zTestSetPDU.__init__cCs(t�||�durdS|j|jkr$dSdSrZ�rr@r�r>rrrr@�s
zTestSetPDU.__eq__cCsTt|j|j�\}}|t|j|j�7}t|jddd||j|j|j|j	t
|��
}||Sr��r~rr!�encode_varbindlistr�r_rrrr r`r�rrrr]�s
�zTestSetPDU.encode)Nrcrrrrr��s
r�cCs*|d}t|d|d|d|d�}|Sr�)�CommitSetPDU�rQr
rCrVrrr�decode_CommitSetPDU�s
�r�c@seZdZdd�Zdd�ZdS)r�cCst�|t||||�dSr	)rr�PDU_COMMIT_SET�rrr#r$r%rrrr�s�zCommitSetPDU.__init__cCs(t|jdddd|j|j|j|jd�
}|S�NFr�r_rrrrr �rr
rrrr]�s�zCommitSetPDU.encodeN�rrrrr]rrrrr��sr�cCs*|d}t|d|d|d|d�}|Sr�)�
UndoSetPDUr�rrr�decode_UndoSetPDU�s
�r�c@seZdZdd�Zdd�ZdS)r�cCst�|t||||�dSr	)rr�PDU_UNDO_SETr�rrrr�s�zUndoSetPDU.__init__cCs(t|jdddd|j|j|j|jd�
}|Sr�r�r�rrrr]�s�zUndoSetPDU.encodeNr�rrrrr��sr�cCs*|d}t|d|d|d|d�}|Sr�)�
CleanupSetPDUr�rrr�decode_CleanupSetPDU�s
�r�c@seZdZdd�Zdd�ZdS)r�cCst�|t||||�dSr	)rr�PDU_CLEANUP_SETr�rrrr�s�zCleanupSetPDU.__init__cCs(t|jdddd|j|j|j|jd�
}|Sr�r�r�rrrr]�s�zCleanupSetPDU.encodeNr�rrrrr��sr�cCs:|d}t||�\}}t|d|d|d|d|�}|Sr�)rq�PingPDU)rQr
rCr!rVrrr�decode_PingPDU�s�r�c@seZdZddd�Zdd�ZdS)r�Nc
Cst�|t||||d|�dSrz)rr�PDU_PING)rrr#r$r%r!rrrr�s�zPingPDU.__init__cCsBt|j|j�\}}t|jddd||j|j|j|jt|��
}||Sr�)	r~rr!r_rrrr r`r�rrrr]�s
�zPingPDU.encode)Nr�rrrrr��s
r�cCsF|d}t||�\}}t||�}t|d|d|d|d||�}|Sr�)rqr��	NotifyPDUr�rrr�decode_NotifyPDUs
�r�c@s&eZdZddd�Zdd�Zdd�ZdS)	r�Nc
Cs"t�|t||||d|�||_dSrz)rr�
PDU_NOTIFYr�r�rrrrs�zNotifyPDU.__init__cCs(t�||�durdS|j|jkr$dSdSrZr�r>rrrr@s
zNotifyPDU.__eq__cCsTt|j|j�\}}|t|j|j�7}t|jddd||j|j|j|j	t
|��
}||Sr�r�r�rrrr]s
�zNotifyPDU.encode)Nrcrrrrr�s
r�c	Csj|d}t||�\}}t||�}|dtk}|r4tnt}||d|d|d|d|d|d||�}|S)	NrCrorrFrGrH�newIndex�anyIndex)rqr��PDU_INDEX_ALLOC�
IndexAllocPDU�IndexDeallocPDU)rQr
rCr!r�ZisallocZpdurVrrr�decode_xIndexAllocPDU"s
�r�c@s&eZdZddd�Zdd�Zdd�ZdS)	r�Nc		
Cs.t�|t||||d|�||_||_||_dSrz)rrr�r�r�r��	rrr#r$r%r�r�r�r!rrrr0s�zIndexAllocPDU.__init__cCsHt�||�durdS|j|jkr$dS|j|jkr4dS|j|jkrDdSdSrZ)rr@r�r�r�r>rrrr@8szIndexAllocPDU.__eq__cCsXt|j|j�\}}|t|j|j�7}t|jd|j|j||j|j	|j
|jt|��
}||Sr�)
r~rr!r�r�r_rr�r�rrr r`r�rrrr]Cs

�zIndexAllocPDU.encode)Nrcrrrrr�/s�
r�c@seZdZddd�ZdS)r�Nc		Cs$t�|||||||||�	t|_dSr	)r�r�PDU_INDEX_DEALLOCrr�rrrrOs�zIndexDeallocPDU.__init__)Nrrrrrr�Ns�r�cCsZ|d}t||�\}}t||�\}}t||�d}t|d|d|d|d|||�}|Srd)rqrNrO�AddAgentCapsPDU)rQr
rCr!rTZdescrrVrrr�decode_AddAgentCapsPDUVs�r�c@s&eZdZddd�Zdd�Zdd�ZdS)	r�Nc
Cs,t�|t||||d|�t|�|_||_dSrz)rr�PDU_ADD_AGENT_CAPSrYrTrU)rrr#r$r%rTrUr!rrrrbs
�
zAddAgentCapsPDU.__init__cCs8t�||�durdS|j|jkr$dS|j|jkr4dSdSrZ)rr@rTrUr>rrrr@iszAddAgentCapsPDU.__eq__cCsft|j|j�\}}||j�|j�7}|t|j|j�7}t|jddd||j|j	|j
|jt|��
}||Sr�)
r~rr!rTr]r^rUr_rrrr r`r�rrrr]rs
�zAddAgentCapsPDU.encode)Nrcrrrrr�as�
	r�cCsJ|d}t||�\}}t||�\}}t|d|d|d|d||�}|Sr�)rqrN�RMAgentCapsPDU)rQr
rCr!rTrVrrr�decode_RMAgentCapsPDU}s�r�c@s&eZdZddd�Zdd�Zdd�ZdS)	r�Nc
Cs&t�|t||||d|�t|�|_dSrz)rr�PDU_RM_AGENT_CAPSrYrT)rrr#r$r%rTr!rrrr�s�zRMAgentCapsPDU.__init__cCs(t�||�durdS|j|jkr$dSdSrZ)rr@rTr>rrrr@�s
zRMAgentCapsPDU.__eq__cCsTt|j|j�\}}||j�|j�7}t|jddd||j|j|j|j	t
|��
}||Sr�)r~rr!rTr]r_rrrr r`r�rrrr]�s
�zRMAgentCapsPDU.encode)Nrcrrrrr��s
r�c
	Cs~|d}t|d�}t|d�\}}t�|dtj�|��\}}}|rPt||�}nd}t|d|d|d|d||||�}	|	S)NrCr��IHHrFrGrH)	rprrIrJrKrLrMr��ResponsePDU)
rQr
rCrurR�	sysUptime�resError�resIndexr�rVrrr�decode_ResponsePDU�s

�
�r�c@s&eZdZddd�Zdd�Zdd�ZdS)	r�Nc		Cs0t�|t||||�||_||_||_||_dSr	)rr�PDU_RESPONSEr�r�r�r�)	rrr#r$r%r�r�r�r�rrrr�s
zResponsePDU.__init__cCsXt�||�durdS|j|jkr$dS|j|jkr4dS|j|jkrDdS|j|jkrTdSdSrZ)rr@r�r�r�r�r>rrrr@�szResponsePDU.__eq__cCspt|j�}t�|d|j|j|j�}|jdur@|t|j|j�7}t	|j
dddd|j|j|j|j
t|��
}||S)Nr�F)rprrIr\r�r�r�r�r�r_rrrr r`)rrurbr
rrrr]�s
�

�zResponsePDU.encode)Nrcrrrrr��s�

r�cCst|t�r|St|d�S)zFUtility function to allow the user to send a bare tuple for some casesF)r=�OID)rTrrrrY�s
rYc
Cs�|d}t|d�\}}t�dtj�|��\}}}|dkrDt|f}nd}t|�|}d|krhdksrntd��t	|�}|d}t||�\}}	t
|d�}
|
d	|}|t�|tj�|��7}t||�}||	fS)
NrCrDrmrr��OID has too many subidsrrn)rrIrJrKrLrM�internetPrefixr`rl�boolrpr�)
rQr
rC�n_subid�prefix�include�subidsZtotalLenZ	byteCount�restruZformatStringrVrrrrN�s"
rNc@sneZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)r�FcCs||_||_|��dSr	)r�r��sanity)rr�r�rrrr�szOID.__init__cCs2t|t�sdS|j|jksdS|j|jkr.dSdSr<)r=r�r�r�r>rrrr@s
z
OID.__eq__cCs|�|�Sr	rAr>rrrrB	sz
OID.__ne__cCs|�|�dkS)N�����
compareOIDr>rrr�__lt__sz
OID.__lt__cCs|�|�dvS)N)r�rr�r>rrr�__le__sz
OID.__le__cCs|�|�dkS)Nrr�r>rrr�__gt__sz
OID.__gt__cCs|�|�dvS)N)rrr�r>rrr�__ge__sz
OID.__ge__c
Cs�|j|jkrdSt|j�}t|j�}||krB|j}|j}|}d}n|j}|j}|}d}t|�D]N}||||krvq^q^||||k||||k}	|r�|	n|	}	|	Sq^|r�dSdSdS)NrTFrr�)r�r`�range)
rr?ZlselfZlother�x�yZlxZflipped�i�crrrr�s,

 
zOID.compareOIDcCsdt|j�t|j�fS)NzOID(%s, %s))r5r�r��rrrrr;5szOID.__repr__cCs*t|jttf�st�t|j�dkr&t�dS)Nr�)r=r��tupler1�	TypeErrorr`rlr�rrrr�8sz
OID.sanitycCs|js|jsdSdSrZ)r�r�r�rrr�isNull>sz
OID.isNullc
Cs�|jdd�}t|�}d|kr*dks4ntd��|dt�tkrl|tkrf|t}|tdd�}qpd}nd}t|�}tt|j��}t|�}t	�
|d|||�}|D]}	|t	�
|d|	�7}q�|S)Nrr�r�rrmrn)r�r`rl�prefixCountr��intr�r�rprIr\)
rrr�Znumsubsr�r�r�ru�bodyZsubidrrrr]Cs"z
OID.encodeN)F)rrrrr@rBr�r�r�r�r�r;r�r�r]rrrrr��s
	r�cCs�t|�}t|�}t�|d|�}|d}|dkr8d|}d|}t|�turftj�|�}|||}n&d|}tj|g|�R�}|||}|S)NrnrDr��B)	r`rprIr\rorerKrLrM)r�octets�	numoctetsrur
�padrQ�fmtrrrr^Ysr^cCs�|d}t|d�\}}t|d�}t�|dtj�|��d}t|�|krRtd��|d}|dkrjd|}tj�	|d|��|||d�fS)NrCrDrrnrz Octet string shorter than length)
rrprIrJrKrLrMr`rlZpolystr)rQr
rCrur�r�rrrrOksrOcCsLt|t�rdSt|ttf�rD|D]}d|kr8dks nt�q dSt�dS)Nr�)r=rer1r�rlr�)rQr�rrr�sanity_octetstrxs
r�c
Cs�|d}t|d�\}}t|d�}t�|dtj�|��d}t||�\}}|t�	�vrdt
d|��t|}|d||�\}}t|||�}	|	|fS)NrCrDr�Hxxr�"Value type %s not in defined types�)rrprIrJrKrLrMrN�definedValueTypesr2rl�Varbind)
rQr
rCZ
bindheaderruZvalTyper9�handlersrbrVrrr�decode_Varbind�s

��r�c@s>eZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�ZdS)r�NcCs"||_t|�|_||_|��dSr	)�	valueTyperYrTrbr�)rZvtyperTrbrrrr�s
zVarbind.__init__cCs4|j|jkrdS|j|jkr dS|j|jkr0dSdSr<)r�rTrbr>rrrr@�szVarbind.__eq__cCs|�|�Sr	rAr>rrrrB�szVarbind.__ne__cCs(d}|t|j�t|j�t|j�f}|S)Nz%Varbind(vtype=%s, oid=%s, payload=%s))r5r�rTrb)rr��rrrrr;�s zVarbind.__repr__cCsX|j��|j}|t��vr(td|��t|\}}}|durJ|j��n
||j�dS)Nr�)rTr�r�r�r2rlrb)rZvt�sanifyer�encoder�decoderrrrr��s
zVarbind.sanityc
Cspt|�}t�|d|j�}|j�|�}t|j}|\}}}|durX|||j�|�}	n|||||j�}	|	S)Nr�)rprIr\r�rTr]r�rb)
rrrur
r9r�r�r�r�rQrrrr]�s

zVarbind.encode)N�	rrrrr@rBr;r�r]rrrrr��s
	r�cCst|�}t�|d|�S)Nr��rprIr\�r�numrurrr�encode_integer32�sr�cCs>|d}t|d�}t|d�\}}t�|d|�d}||fS)NrCrrDr�r�rprrIrJ�rQr
rCrur�rrr�decode_integer32�s
rcCs t|�turtdt|���dS)Nz%s is not integer)ror�r�r5�rQrrr�sanity_integer32�srcCst|�}t�|d|�S)Nrnr�r�rrr�encode_unsigned32�srcCs>|d}t|d�}t|d�\}}t�|d|�d}||fS)NrCrrDrnrr�rrrr�decode_unsigned32�s
rcCs||d@krt�dS)Nl���rlrrrr�sanity_unsigned32�srcCsdS�N�r)rrQrrr�encode_nullvalue�sr
cCsd|fSr	r)rQr
rrr�decode_nullvalue�srcCsdSr	rrrrr�sanity_nullvalue�srcCst|�}t�|d|�S)N�Qr�r�rrr�encode_integer64�srcCsF|d}t|d�}t|d�\}}t�|dtj�|��d}||fS)NrCrr�r
r)rprrIrJrKrLrMrrrr�decode_integer64�s
rcCs||d@krt�dS)Nl����rrrrr�sanity_integer64�srcCst|�t||�Sr	)�
sanity_ipaddrr^)rr�rrr�
encode_ipaddrsrcCs*t||�\}}t�dtj�|��}||fS)NZBBBB)rOrIrJrKrLrM)rQr
Zaddrrrr�
decode_ipaddr	srcCst|�dvrt�dS)N)rD�)r`rlrrrrrsrcCs.t||�\}}t||�\}}t||�}||fSr	)rN�SearchRange)rQr
ZstartOIDZendOIDrVrrr�decode_SearchRanges
rc@s>eZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�ZdS)rNcCs8t|�|_t|�|_d|j_|dur,||j_|��dSr�)rY�start�endr�r�)rrrr�rrrrs

zSearchRange.__init__cCs$|j|jkrdS|j|jkr dSdSr<)rrr>rrrr@&s
zSearchRange.__eq__cCs|�|�Sr	rAr>rrrrB-szSearchRange.__ne__cCsdt|j�t|j�f}|S)NzSearchRange(%s, %s))r5rr)rr�rrrr;0szSearchRange.__repr__cCs$|j��|j��|jjr t�dSr	)rr�rr�rlr�rrrr�4s

zSearchRange.sanitycCs |j�|�}|j�|�}||Sr	)rr]r)rrZstartOIDstrZ	endOIDstrrrrr]:szSearchRange.encode)Nr�rrrrrs

rcCs,g}|D]}|�|�|��qd�|�}|Sr)r4r]r6)rZsearchrangesZencodedZsranrrrr�@s

r�cCs*g}|r"t||�\}}|�|�qt|�Sr	)rr4r�)rQr
r�Zoidsrrrr�Hs
r�cCs d}|D]}||�|�7}q|Sr)r])rr�rbZvarbindrrrr�Psr�cCs8|r0g}|r&t||�\}}|�|�qt|�}nd}|Sr	)r�r4r�)rQr
r�Zvbrrrr�Ws
r�cCsTd}||dO}||dd>O}||dd>O}||dd>O}||d	d
>O}|S)Nr�instRegr�rr�r�rrrrDr)rCZflagbyterrr�encode_flagbytecsrcCs<tt|d@�t|d@�t|d@�t|d@�t|d@��}|S)Nrr�rDr�r)�	makeflagsr�)rC�flagDictrrr�decode_flagbytems

�rcCs|||||d�S)N)rr�r�rrr)ZiRZnIZaIZcPZbErrrrys�rcCs|rdSdS)N�>�<r)rrrrrp�srpc


CsP|tvrtd|��tt|||||��}
t|�}t�|dd||
||||	�}|S)N� PDU type %s not in defined typesZBBBxIIIIr)�definedPDUTypesrlrrrprIr\)
rZinstanceRegistrationr�r�ZnonDefaultContextrrrr Z
payloadLengthrCrurQrrrr_�s��r_c
Cs�t|d�\}}t�dtj�|��\}}}t|�}t|d�d}t|d�\}}t�|tj�|��\}}	}
}|||||	|
|d�}|S)NrDz>BBBxrZIIIIr)�versionrorCrFrGrH�length)rrIrJrKrLrMrrp)
rQZlineoner"rrCrr�Zlinenr#Z	tactionIDr%ZdataLenrVrrr�decode_pduheader�s
�

��r$cCs(|durd}t||�}nd}d}||fS)NTFr	)r^)rr!rrbrrrr~�sr~cCs,|d}|dr t||�\}}nd}||fS)NrCr)rO)rQr
rCr!rrrrq�s
rqcCs�t|�dkrtd��t|d�\}}t|�}|dt|�krDdd|fSt||d�\}}|ddkrxtd|d|||��|d}|t��vr�td	||||��t|}z|||�}Wn$ty�t	d
|||�}|�Yn0|d|fS)N�zData too short for headerr#Fr"rzUnknown packet version %iror zBody parsing errorT)
r`rrr$rr!r2rr
r)rQr
ZnewDataZpacketSliceZpktTyper�Z	parsedPkt�errrrr�
decode_packet�s2
���
r'cCs�g}|D]�}t|�}|�t|d@��|�t|d@��|�t|d@��|�t|d@��|�t|d@��|�t|d@��|�t|d@��|�t|d@��q|dur�|d|�}|S)	Nr��@� rr�rDr�r)rfr4r�)Z	bitStringZ
cropLength�bitsZoctetrrr�
bits2Bools�sr+cCstd}g}d}|D]>}|t|�d|>7}|d7}|dkrd}|�t|��d}q|dkrf|�t|��d�|�}|S)Nr�rr�r)r�r4�chrr6)r*Z
bitCounterr�Zcurrent�bitrrr�
bools2Bits�s
r/r�rD�rr(�A�B�C�D�Fr���rrr,r��	�
���
��r��i	iiiiiiiii
ii)N)�Z
__future__rrIZntp.polyrKZntp.utilrr�r`r�r
rrrrrrWrPrirgryrsrtr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rYrNr�r^rOr�r�r�r�rrrrrr
rrrrrrrrrrr�r�r�r�rrrrpr_r$r~rqr'r+r/Z
VALUE_INTEGERZVALUE_OCTET_STRZ
VALUE_NULLZ	VALUE_OIDZ
VALUE_IP_ADDRZVALUE_COUNTER32Z
VALUE_GAUGE32ZVALUE_TIME_TICKSZVALUE_OPAQUEZVALUE_COUNTER64ZVALUE_NO_SUCH_OBJECTZVALUE_NO_SUCH_INSTANCEZVALUE_END_OF_MIB_VIEWr�rXrjrrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r!Z	RSN_OTHERZRSN_PARSE_ERRORZRSN_PROTOCOL_ERRORZRSN_TIMEOUTZRSN_SHUTDOWNZRSN_BY_MANAGERrkZERR_NOERRORZ
ERR_GENERRZ
ERR_NO_ACCESSZERR_WRONG_TYPEZ
ERR_WRONG_LENZERR_WRONG_ENCODINGZERR_WRONG_VALUEZERR_NO_CREATIONZERR_INCONSISTENT_VALUEZERR_RESOURCE_UNAVAILABLEZERR_COMMIT_FAILEDZERR_UNDO_FAILEDZERR_NOT_WRITABLEZERR_INCONSISTENT_NAMEZ
definedErrorsZRSPERR_NO_AGENTXZRSPERR_OPEN_FAILEDZRSPERR_NOT_OPENZRSPERR_INDEX_WRONG_TYPEZRSPERR_INDEX_ALREADY_ALLOCATEDZRSPERR_INDEX_NONE_AVAILABLEZRSPERR_INDEX_NOT_ALLOCATEDZRSPERR_UNSUPPORTED_CONTEXTZRSPERR_DUPLICATE_REGISTRATIONZRSPERR_UNKNOWN_REGISTRATIONZRSPERR_UNKNOWN_AGENT_CAPSZRSPERR_PARSE_ERRORZRSPERR_REQUEST_DENIEDZRSPERR_PROCESSING_ERRORZresponseErrorsrrrr�<module>s�	A3 



	


._
0%

	
���
����������(����