
    h	                        d Z ddlmZ ddlmZmZmZmZmZm	Z	m
Z
 ddlmZmZmZ ddlmZmZ  G d de          Z G d d	e          Z eeed
            eeed
            eeed            eeed            eeed
d
            eeedd            ej        edd
           ej        rddlmZ  ej        edd           dS dS )z
HSRP (Hot Standby Router Protocol)
A proprietary redundancy protocol for Cisco routers.

- HSRP Version 1: RFC 2281
- HSRP Version 2:
    http://www.smartnetworks.jp/2006/02/hsrp_8_hsrp_version_2.html
    )conf)ByteEnumField	ByteFieldIPFieldSourceIPFieldStrFixedLenField	XIntFieldXShortField)Packetbind_layersbind_bottom_up)DestIPFieldUDPc                      e Zd Zd Z edd           eddddddd           ed	d
ddddddd           edd           edd           edd           edd           edd           eddd           edd          g
Zd  Z	d!S )"HSRPversionr   opcodeHelloCoupResign	Advertise)r            state   InitialLearnListenSpeakStandbyActive)r   r   r         r   	hellotimer   holdtime
   priorityx   groupr   reservedauths   cisco   r$   	virtualIPz192.168.1.1c                 Z    | j         j        dk    rt          S t          j        | |          S )N   )
underlayerlenHSRPmd5r   guess_payload_class)selfpayloads     U/mounts/lovelace/software/anaconda3/lib/python3.11/site-packages/scapy/layers/hsrp.pyr3   zHSRP.guess_payload_class$   s*    ?##N-dG<<<    N)
__name__
__module____qualname__namer   r   r   r   fields_descr3    r7   r6   r   r      s        D	)Qhw6h;#W#WXXgryWgZciq#r#rss	+q!!	*b!!	*c""	'1	*a  !6::]++
-K= = = = =r7   r   c                       e Zd ZdZ eddddi           edd           eddd	d
i           edd           edd           ed           edd           e	ddd          gZ
d ZdS )r2   zHSRP MD5 Authenticationtyper#   zMD5 authenticationr1   Nalgor   r   MD5paddingflagssourceipkeyid
authdigests                   r   c                     | j         >|r<t          |          }|d d         t          |          dd          z   |dd          z   }|S )Nr      )r1   hex)r4   ppaytmp_lens       r6   
post_buildzHSRPmd5.post_build7   sM    8#hhG"1"GRSS))AbccF2Ar7   )r8   r9   r:   r;   r   r   r
   r   r	   r   r<   rM   r=   r7   r6   r2   r2   +   s        $Dfa!%9!:;;	%fa!U,,	)T""GT""j!!	'4  {B779K    r7   r2   i  )dport)sporti  )rN   rO   z	224.0.0.2)DestIP6Fieldzff02::66N)__doc__scapy.configr   scapy.fieldsr   r   r   r   r   r	   r
   scapy.packetr   r   r   scapy.layers.inetr   r   r   r2   	bind_addripv6_enabledscapy.layers.inet6rP   r=   r7   r6   <module>rY      s         - - - - - - - - - - - - - - - - - - < < < < < < < < < < . . . . . . . .= = = = =6 = = =*    f   & sD % % % % sD % % % % sD % % % % sD % % % % CT . . . . CT . . . .  c;d 3 3 3 3 8//////L3
$7777778 8r7   