
    h                        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
e          Z G d de          Z eeeddid            eeedddd            eeeddid            eeed            eeed            eeed            eeed            eeed           dS )    )bind_layers)BitField	ByteFieldByteEnumFieldBitEnumField
ShortFieldX3BytesField	XIntFieldXStrFixedLenFieldConditionalFieldPacketListFieldBitFieldLenField)EtherIP)IPv6)VXLAN)Packet)GRE)MPLSc            
           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          gZ	dS )NSHTLVz/NSH MD-type 2 - Variable Length Context Headersclass_r   type   reserved   length   metadataN
count_from)
__name__
__module____qualname____doc__namer   r   r   r
   fields_desc     U/mounts/lovelace/software/anaconda3/lib/python3.11/site-packages/scapy/contrib/nsh.pyr   r      sx        55D
8QAQ""1a  
D)IIIKKKr)   r   c                      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            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'            e edded(          d)           gZd* ZdS )+NSHzJNetwork Service Header.
       NSH MD-type 1 if there is no ContextHeadersverr      oamr   unused1ttl?      r   Nvlchc                 &    | j         dk    rdn|dz   S )Nr   r3   r.   mdtype)pktxs     r*   <lambda>zNSH.<lambda>2   s    CJ!OOqq!e r)   )count_ofadjustunused2   r7   zReserved MDTypezFixed LengthzVariable LengthzExperimental MDType)r   r   r.      	nextproto   IPv4r   Ethernetr   zExperiment 1zExperiment 2)r   r.   rA   r>            spisirF   context_header    c                     | j         dk    S )Nr   r6   r8   s    r*   r:   zNSH.<lambda>C       SZ1_ r)   r    c                     | j         dk    S )Nr.   r6   rM   s    r*   r:   zNSH.<lambda>F   rN   r)   c                 ,    |                      d          S )NzSPI: %spi% - SI: %si%)sprintf)selfs    r*   	mysummaryzNSH.mysummaryI   s    ||3444r)   )r"   r#   r$   r%   r&   r   r   r   r   r	   r   r   r   r   r   r'   rS   r(   r)   r*   r,   r,   &   s       6 6D 	11Aq!!A4"(!$ !$	% 	% 	% 	Aq!!Xq!):)7):+@&B &B 	C 	C 	k1&*0*4*/*0-;-;'= '= 	> 	> 	UA	$**+;RDD44	6 	6v4<> > >44	6 	63K<5 5 5 5 5r)   r,   r   iO  )r      r>   )flagsNextProtocol)rV   proto)rW   r   )r@   r.   rA   rD   N)	scapy.allr   scapy.fieldsr   r   r   r   r   r	   r
   r   r   r   r   scapy.layers.inetr   r   scapy.layers.inet6r   scapy.layers.vxlanr   scapy.packetr   scapy.layers.l2r   scapy.contrib.mplsr   r   r,   r(   r)   r*   <module>r`      s<   " ! ! ! ! !8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 ( ' ' ' ' ' ' ' # # # # # # $ $ $ $ $ $             # # # # # #	 	 	 	 	V 	 	 	$5 $5 $5 $5 $5& $5 $5 $5N E3(v 6 6 6 6 E3#q99 J J J J Cw'v 6 6 6 6 Cq ! ! ! ! C # # # # C! $ $ $ $ C " " " " C # # # # # #r)   