a
    kÄ#d  ã                   @   sÒ   d Z ddlmZmZ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 ddlmZ G dd„ deƒZG dd„ deƒZG d	d
„ d
eƒZeeedd� eeedd� eeeddd� eeeƒ eeeƒ eeeƒ dS )z%
RIP (Routing Information Protocol).
é    )ÚPacketÚbind_layersÚbind_bottom_up)
ÚByteEnumFieldÚ	ByteFieldÚConditionalFieldÚIPFieldÚIntEnumFieldÚIntFieldÚShortEnumFieldÚ
ShortFieldÚStrFixedLenFieldÚStrLenField)ÚUDPc                   @   sN   e Zd ZdZedddddddd	d
dddddœƒeddƒeddƒgZdd„ ZdS )ÚRIPz
RIP headerÚcmdé   ÚreqÚrespZtraceOnZtraceOffÚsunZtrigReqZtrigRespZtrigAckZ	updateReqZ
updateRespZ	updateAck)r   é   é   é   é   é   é   é   é	   é
   é   ÚversionÚnullr   c                 C   s$   |d d… dkrt S t | |¡S d S )Nr   s   ÿÿ)ÚRIPAuthr   Úguess_payload_class)ÚselfÚpayload© r&   úG/var/www/html/gsl.tools/lib/python3.9/site-packages/scapy/layers/rip.pyr#      s    zRIP.guess_payload_classN)	Ú__name__Ú
__module__Ú__qualname__Únamer   r   r   Úfields_descr#   r&   r&   r&   r'   r      s   þûr   c                
   @   sP   e Zd ZdZeddddiƒeddƒeddƒed	dƒed
dƒeddddiƒgZdS )ÚRIPEntryz	RIP entryÚAFr   ZIPZRouteTagr   Úaddrz0.0.0.0ÚmaskZnextHopZmetricr   é   ZUnreachN)	r(   r)   r*   r+   r   r   r   r	   r,   r&   r&   r&   r'   r-   "   s   úr-   c                   @   sÆ   e Zd ZdZeddddiƒeddddd	d
œƒeedddƒdd„ ƒeeddƒdd„ ƒeeddƒdd„ ƒeeddƒdd„ ƒee	ddƒdd„ ƒeedddƒdd„ ƒee
dddd„ d�dd„ ƒg	Zd d!„ ZdS )"r"   zRIP authenticationr.   iÿÿ  ZAuthÚauthtyper   Zmd5authdataÚsimpleÚmd5)r   r   r   ÚpasswordNr1   c                 C   s
   | j dkS )Nr   ©r2   ©Zpktr&   r&   r'   Ú<lambda>4   ó    zRIPAuth.<lambda>Zdigestoffsetr   c                 C   s
   | j dkS ©Nr   r6   r7   r&   r&   r'   r8   6   r9   Zkeyidc                 C   s
   | j dkS r:   r6   r7   r&   r&   r'   r8   8   r9   Zauthdatalenc                 C   s
   | j dkS r:   r6   r7   r&   r&   r'   r8   :   r9   Zseqnumc                 C   s
   | j dkS r:   r6   r7   r&   r&   r'   r8   <   r9   Zzeropadr   c                 C   s
   | j dkS r:   r6   r7   r&   r&   r'   r8   >   r9   Zauthdatac                 C   s   | j S )N)Ú
md5datalenr7   r&   r&   r'   r8   @   r9   )Zlength_fromc                 C   s
   | j dkS )Nr   r6   r7   r&   r&   r'   r8   A   r9   c                 C   s"   |dd… dkrt |ƒd | _|S )Nr   r   s    )Úlenr;   )r$   Úsr&   r&   r'   Úpre_dissectD   s    zRIPAuth.pre_dissect)r(   r)   r*   r+   r   r   r   r   r   r
   r   r,   r>   r&   r&   r&   r'   r"   .   s8   ÿ
ÿ
ÿ
ÿ
ÿÿÿþñr"   i  )Údport)Úsport)r@   r?   N)Ú__doc__Zscapy.packetr   r   r   Zscapy.fieldsr   r   r   r   r	   r
   r   r   r   r   Zscapy.layers.inetr   r   r-   r"   r&   r&   r&   r'   Ú<module>   s   0

