
    h                     L   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e          Z G d de          Z G d	 d
e          Z eeed            eeed            eee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                   x    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 ZdS )RIPz
RIP headercmd   reqresptraceOntraceOffsuntrigReqtrigResptrigAck	updateReq
updateResp	updateAck)r                        	   
      versionnullr   c                 V    |d d         dk    rt           S t          j        | |          S )Nr    s   )RIPAuthr   guess_payload_class)selfpayloads     T/mounts/lovelace/software/anaconda3/lib/python3.11/site-packages/scapy/layers/rip.pyr.   zRIP.guess_payload_class   s-    2A2;+%%N-dG<<<    N)	__name__
__module____qualname__namer   r   r   fields_descr.    r2   r1   r   r      s        DeQEfz$)iJ9$/\{!T !T 	U 	U 		)Q
61K= = = = =r2   r   c                       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    IPRouteTagr   addrz0.0.0.0masknextHopmetricr      UnreachN)	r3   r4   r5   r6   r   r   r	   r
   r7   r8   r2   r1   r:   r:   "   s        DtQD	**
:q!!	""	""	9%%Xq2y/22KKKr2   r:   c                      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            e edd          d            e edd          d            e edd          d            e e	dd          d            e eddd          d            e e
ddd           d           g	Zd ZdS ) r-   zRIP authenticationr;   i  Authauthtyper    md5authdatasimplemd5)r   r    r!   passwordNrB   c                     | j         dk    S )Nr    rF   pkts    r1   <lambda>zRIPAuth.<lambda>4       S\Q%6 r2   digestoffsetr   c                     | j         dk    S Nr!   rL   rM   s    r1   rO   zRIPAuth.<lambda>6   rP   r2   keyidc                     | j         dk    S rS   rL   rM   s    r1   rO   zRIPAuth.<lambda>8   rP   r2   authdatalenc                     | j         dk    S rS   rL   rM   s    r1   rO   zRIPAuth.<lambda>:   rP   r2   seqnumc                     | j         dk    S rS   rL   rM   s    r1   rO   zRIPAuth.<lambda><   rP   r2   zeropadr&   c                     | j         dk    S rS   rL   rM   s    r1   rO   zRIPAuth.<lambda>>   rP   r2   authdatac                     | j         S )N)
md5datalenrM   s    r1   rO   zRIPAuth.<lambda>@   s    S^ r2   )length_fromc                     | j         dk    S )Nr   rL   rM   s    r1   rO   zRIPAuth.<lambda>A   rP   r2   c                 P    |dd         dk    rt          |          dz
  | _        |S )Nr    r"   s    )lenr^   )r/   ss     r1   pre_dissectzRIPAuth.pre_dissectD   s+    QqS6[  !!ffqjDOr2   )r3   r4   r5   r6   r   r   r   r   r   r   r   r7   rd   r8   r2   r1   r-   r-   .   sv       DtVff%566z1-H&O&OPP))*dB??66	8 	8NA6666	8 	87A..66	8 	8=!4466	8 	8(A..66	8 	8)))T1==66	8 	8Z1K1KM M M66	8 	8K(    r2   r-   i  )dport)sport)rf   re   N)__doc__scapy.packetr   r   r   scapy.fieldsr   r   r   r	   r
   r   r   r   r   r   scapy.layers.inetr   r   r:   r-   r8   r2   r1   <module>rk      s    = < < < < < < < < <" " " " " " " " " " " " " " " " " " " " " " " " " ! ! ! ! != = = = =& = = ="	 	 	 	 	s 	 	 	    f   : sCs # # # # sCs # # # # CCs + + + + C    Hh       GX     r2   