
    h\	                        d dl mZmZmZ d dlmZmZmZmZm	Z	 d dl
mZmZmZmZ d dlmZ d dl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            eeed            eeed            eeed             eeed             eeed            eee            eeed d            dS )    )Packetbind_layersPadding)BitField	ByteFieldByteEnumFieldPacketListField
ShortField)_ICMP_classnumsICMPExtension_ObjectIPUDP)IPv6)EtherGRE)BIERc                   b    e Zd Zd Z eddd           eddd           edd          gZd ZdS )	EoMCWzeror      reserved   seqc                 D    t          |          dk    rt          S t          S )N   )lenr   r   )selfpayloads     V/mounts/lovelace/software/anaconda3/lib/python3.11/site-packages/scapy/contrib/mpls.pyguess_payload_classzEoMCW.guess_payload_class#   s    w<<1L    N)__name__
__module____qualname__namer   r
   fields_descr     r!   r   r   r      s`        D8FAq))8J2..:eQ'')K    r!   r   c                   z    e Zd Zd Z eddd           eddd           eddd           edd          gZd	 Zd
S )MPLSlabel      cosr   sr   ttlc                    t          |          dk    ri| j        st          S |d         dz	  dz  }|dk    rt          S |dk    rt          S |dk    rt
          S |d         dk    r|d         dk    rt          S t          S t          S )Nr   r   r            )	r   r.   r)   r   r   r   r   r   r   )r   r   
ip_versions      r   r    zMPLS.guess_payload_class0   s    w<<16 !!*/S0JQ	qq1:??wqzQ L Lr!   N)r"   r#   r$   r%   r   r   r&   r    r'   r!   r   r)   r)   )   sq        D8GQ++8E1a((8CA&&9UA&&(K
    r!   r)   c            	       x    e Zd ZdZ edd           edde           edd           edg e	d 	          gZ
dS )
ICMPExtension_MPLSz&ICMP Extension Object - MPLS (RFC4950)r   Nclassnumr   	classtypestackc                     | j         dz
  S )Nr   )r   )pkts    r   <lambda>zICMPExtension_MPLS.<lambda>L   s    37Q; r!   )length_from)r"   r#   r$   r%   r
   r   r   r   r	   r)   r&   r'   r!   r   r6   r6   E   se        3D 	
5$j!_55	+q!!T7N7NOOO	KKKr!   r6   iG  )type   )proto)nhi  )dport)r.   )r*      )r   r   N)scapy.packetr   r   r   scapy.fieldsr   r   r   r	   r
   scapy.layers.inetr   r   r   r   scapy.layers.inet6r   scapy.layers.l2r   r   scapy.contrib.bierr   r   r)   r6   r'   r!   r   <module>rJ      sO   6 5 5 5 5 5 5 5 5 5                         $ # # # # # & & & & & & & & # # # # # #	 	 	 	 	F 	 	 	    6   8    -    E4f % % % % BC         D$3     CT " " " " CV $ $ $ $ D$!     D"A     D$a         D%    E5q1 - - - - - -r!   