
    h                        d Z ddlmZmZ ddlmZmZmZmZ ddl	m
Z
mZ  G d de          Z G d de          Z G d	 d
e          Z G d de          Z G d de          Z eee
            eee
            eee
d            eeed            eee
            eeedd            eeedd            eeed           dS )zd
ERSPAN - Encapsulated Remote SPAN

https://datatracker.ietf.org/doc/html/draft-foschiano-erspan-03
    )Packetbind_layers)BitFieldBitEnumField	XIntFieldXShortField)EtherGREc                   2    e Zd ZdZd Zg Zedd            ZdS )ERSPANz!
    A generic ERSPAN packet
    Nc                     |r,|d         dz	  }|dk    rt           S |dk    rt          S t          S | t          k    rt           S | S )Nr            )	ERSPAN_II
ERSPAN_IIIERSPAN_Ir   )cls_pktargskargsvers        X/mounts/lovelace/software/anaconda3/lib/python3.11/site-packages/scapy/contrib/erspan.pydispatch_hookzERSPAN.dispatch_hook   sN     	 q'Q,Caxx  !!&==
    )N)__name__
__module____qualname____doc__namefields_descclassmethodr    r   r   r   r      sH          DK   [  r   r   c                       e Zd ZdZdZg ZdS )r   zERSPAN ITN)r   r   r   r    match_subclassr!   r#   r   r   r   r   ,   s        DN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           eddd           eddd           eddd          gZdS )r   z	ERSPAN IITr   r   r   vlanr      cos   enr   t
session_id
   reservedindex   N)r   r   r   r    r%   r   r!   r#   r   r   r   r   2   s        DN8E1a((8FAr**8E1a((8D!Q''8CA&&8L!R008J2..8GQ++KKKr   r   c                   x   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           eddd           edd           edd           eddd           edddddd           eddd           eddd           eddddddd           ed dd          gZ	d!S )"r   z
ERSPAN IIITr   r   r   r'   r   r(   r)   r*   bsor,   r   r-   r.   	timestamp	sgt_otherpft   EthernetIP)r   r   hw   dgra100us100nsz	IEEE 1588)r   r   r   oN)
r   r   r   r    r%   r   r   r   r   r!   r#   r   r   r   r   @   s+       DN8E1a((8FAr**8E1a((8E1a((8CA&&8L!R009[*55;{J778CA&&<a$.4 8 8: :8D!Q''8CA&&<q!$+K H HJ J8CA&&KKKr   r   c                   \    e Zd ZdZ eddd           eddd           edd          gZdS )	ERSPAN_PlatformSpecificPlatformSpecificplatf_idr   r<   info1   info2N)r   r   r   r    r   r   r!   r#   r   r   rC   rC   V   sK        D8J1--8GQ++9Wj113KKKr   rC   )rA   r   i  )protoseqnum_presenti"  )rI   N)r   scapy.packetr   r   scapy.fieldsr   r   r   r   scapy.layers.l2r	   r
   r   r   r   r   rC   r#   r   r   <module>rN      s  
  - , , , , , , ,            & & & & & & & &    V   ,    v                 ,3 3 3 3 3f 3 3 3 He    Iu    J # # # # J/1 5 5 5 5 #U + + + Cva 8 8 8 8 C& ; ; ; ; C6 * * * * * *r   