a
    kÄ#d<  ã                
   @   sÐ   d Z ddlZddlmZ ddlmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZ ddddd	d
œZG dd„ deƒZG dd„ deƒZddddddddddœ	ZG dd„ deƒZG dd„ deƒZG dd„ deƒZdS )zJ
RTCP (rfc 3550)

Use bind_layers(UDP, RTCP, dport=...) to start using it
é    N)ÚPacket)ÚBitFieldÚBitFieldLenFieldÚByteEnumFieldÚ	ByteFieldÚConditionalFieldÚFieldLenFieldÚIntFieldÚLenFieldÚ	LongFieldÚPacketFieldÚPacketListFieldÚStrLenFieldÚX3BytesFieldzSender reportzReceiver reportzSource descriptionZBYEZAPP)éÈ   éÉ   éÊ   éË   éÌ   c                   @   s4   e Zd ZdZeddƒeddƒeddƒeddƒgZdS )Ú
SenderInfozSender infoZntp_timestampNZrtp_timestampZsender_packet_countZsender_octet_count)Ú__name__Ú
__module__Ú__qualname__Únamer   r	   Úfields_desc© r   r   úI/var/www/html/gsl.tools/lib/python3.9/site-packages/scapy/contrib/rtcp.pyr   -   s   ür   c                	   @   sL   e Zd ZdZeddƒeddƒeddƒeddƒeddƒeddƒed	dƒgZdS )
ÚReceptionReportzReception reportÚ
sourcesyncNZfraction_lostZcumulative_lostZhighest_seqnum_recvZinterarrival_jitterZlast_SR_timestampZdelay_since_last_SR)r   r   r   r   r	   r   r   r   r   r   r   r   r   7   s   ùr   ZENDZCNAMEÚNAMEZEMAILZPHONEZLOCZTOOLÚNOTEZPRIV)	r   é   é   é   é   é   é   é   é   c                   @   sD   e Zd ZdZeddeƒeddddd�edddd	„ d
�gZdd„ Z	dS )ÚSDESItemz	SDES itemZ
chunk_typeNÚlengthz!bÚvalue)ÚfmtZ	length_ofc                 C   s   | j S ©N)r*   ©Úpktr   r   r   Ú<lambda>V   ó    zSDESItem.<lambda>)Zlength_fromc                 C   s   d|fS )NÚ r   )ÚselfÚpr   r   r   Úextract_paddingY   s    zSDESItem.extract_padding)
r   r   r   r   r   Ú_sdes_chunk_typesr   r   r   r5   r   r   r   r   r)   Q   s   
ýr)   c                   @   s(   e Zd ZdZeddƒedded�gZdS )Ú	SDESChunkz
SDES chunkr   NÚitems)Úpkt_cls)r   r   r   r   r	   r   r)   r   r   r   r   r   r7   ]   s   þr7   c                   @   s´   e Zd Zd Zedddƒedddƒeddddd	�ed
deƒedddd�e	e
ddƒdd„ ƒe	edeƒ eƒdd„ ƒe	eddedd„ d�dd„ ƒe	eddedd„ d�dd„ ƒg	Zdd„ ZdS )ÚRTCPÚversionr"   Úpaddingr   r!   Úcountr%   Zreport_blocks)Zcount_ofÚpacket_typer*   Nú!h)r,   r   c                 C   s
   | j dv S ©N)r   r   ©r>   r.   r   r   r   r0   r   r1   zRTCP.<lambda>Zsender_infoc                 C   s
   | j dkS )Nr   rA   r.   r   r   r   r0   v   r1   c                 C   s   | j S r-   ©r=   r.   r   r   r   r0   z   r1   )r9   Z
count_fromc                 C   s
   | j dv S r@   rA   r.   r   r   r   r0   {   r1   Zsdes_chunksc                 C   s   | j S r-   rB   r.   r   r   r   r0   €   r1   c                 C   s
   | j dkS )Nr   rA   r.   r   r   r   r0   �   r1   c                 C   sF   ||7 }| j d u rB|d d… t dt|ƒd d ¡ |dd …  }|S )Nr"   r?   r$   r!   )r*   ÚstructÚpackÚlen)r3   r/   Zpayr   r   r   Ú
post_build…   s    
0zRTCP.post_build)r   r   r   r   r   r   r   Ú_rtcp_packet_typesr
   r   r	   r   r   r   r   r7   r   rF   r   r   r   r   r:   e   s8   


þþÿýÿýêr:   )Ú__doc__rC   Zscapy.packetr   Zscapy.fieldsr   r   r   r   r   r   r	   r
   r   r   r   r   r   rG   r   r   r6   r)   r7   r:   r   r   r   r   Ú<module>
   s0   <û	
÷