a
    kÄ#dº  ã                   @   s4  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 d dlmZmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ G d	d
„ d
eƒZG dd„ deƒZeeeddidd� eeedddœdd� eeeddidd� eeedd� eeedd� eeedd� eeedd� eeedd� dS )é    )Úbind_layers)ÚBitFieldÚ	ByteFieldÚByteEnumFieldÚBitEnumFieldÚ
ShortFieldÚX3BytesFieldÚ	XIntFieldÚXStrFixedLenFieldÚConditionalFieldÚPacketListFieldÚBitFieldLenField)ÚEtherÚIP)ÚIPv6)ÚVXLAN)ÚPacket)ÚGRE)ÚMPLSc                
   @   sL   e Zd ZdZd Zeddƒedddƒedddƒeddd	ƒed
dedd�gZ	dS )ÚNSHTLVz/NSH MD-type 2 - Variable Length Context HeadersÚclass_r   Útypeé   Úreservedé   Úlengthé   ÚmetadataN©Z
count_from)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__Únamer   r   r   r	   Úfields_desc© r%   r%   úH/var/www/html/gsl.tools/lib/python3.9/site-packages/scapy/contrib/nsh.pyr      s   


ûr   c                   @   sÒ   e Zd ZdZd Zedddƒedddƒedddƒedd	d
ƒeddd
ddd„ d�edddƒeddddddddœƒedddddd ddd d!œƒe	d"dƒe
d#d$ƒeed%d&d'ƒd(d„ ƒeeddedd)�d*d„ ƒgZd+d,„ ZdS )-ÚNSHzJNetwork Service Header.
       NSH MD-type 1 if there is no ContextHeadersÚverr   é   Zoamr   Zunused1Úttlé?   é   r   NZvlchc                 C   s   | j dkrdS |d S )Nr   r,   r)   ©Úmdtype)ÚpktÚxr%   r%   r&   Ú<lambda>2   s   zNSH.<lambda>)Zcount_ofÚadjustZunused2é   r.   zReserved MDTypezFixed LengthzVariable LengthzExperimental MDType)r   r   r)   é   Ú	nextprotoé   ZIPv4r   ZEthernetr   zExperiment 1zExperiment 2)r   r)   r6   r3   é   éþ   éÿ   ZspiÚsir9   Zcontext_headerÚ é   c                 C   s
   | j dkS )Nr   r-   ©r/   r%   r%   r&   r1   C   ó    r   c                 C   s
   | j dkS )Nr)   r-   r=   r%   r%   r&   r1   F   r>   c                 C   s
   |   d¡S )NzSPI: %spi% - SI: %si%)Zsprintf)Úselfr%   r%   r&   Ú	mysummaryI   s    zNSH.mysummary)r   r    r!   r"   r#   r   r   r   r   r   r   r   r
   r   r   r$   r@   r%   r%   r%   r&   r'   &   sH   



þ

ýúÿ
ÿþçr'   r   iO‰  )r   é   r3   )Úflagsr5   )r5   Úproto)rC   r   r)   r6   r7   N)Z	scapy.allr   Zscapy.fieldsr   r   r   r   r   r   r	   r
   r   r   r   Zscapy.layers.inetr   r   Zscapy.layers.inet6r   Zscapy.layers.vxlanr   Zscapy.packetr   Zscapy.layers.l2r   Zscapy.contrib.mplsr   r   r'   r%   r%   r%   r&   Ú<module>   s"   4'