
    h                         d Z ddlZ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 ddlmZ  G d de          Z eeed	
            eeed	            eeed	d	            eee           dS )z9
L2TP (Layer 2 Tunneling Protocol) for VPNs.

[RFC 2661]
    N)Packetbind_layersbind_bottom_up)BitEnumFieldConditionalField
FlagsFieldPadField
ShortField)UDP)PPPc                   J   e Zd Zd Z edddg d           edddddi           e ed	d
          d            edd           edd           e edd          d            e edd          d            e e edd          dd          d           gZ	d Z
d
S )L2TPhdrr      )res00res01res02res03priorityoffsetres06sequenceres08res09lengthcontrolversion      L2TPv2lenNc                     | j         dz  S )Ncontrol+lengthr   pkts    U/mounts/lovelace/software/anaconda3/lib/python3.11/site-packages/scapy/layers/l2tp.py<lambda>zL2TP.<lambda>   s    SW/?%?     	tunnel_id
session_idnsc                     | j         dz  S Nzsequence+controlr$   r%   s    r'   r(   zL2TP.<lambda>!       SW/A%A r)   nrc                     | j         dz  S r.   r$   r%   s    r'   r(   zL2TP.<lambda>#   r/   r)   r       c                 ,    | j         dz   o	| j         dz  S )Nr   r   r$   r%   s    r'   r(   zL2TP.<lambda>&   s    SWy01Hcg6H r)   c                     | j         T| j        dz  rJt          |          t          |          z   }|d d         t          j        d|          z   |dd          z   }||z   S )Nr#   r   z!Hr   )r!   r   structpack)selfr&   paytmp_lens       r'   
post_buildzL2TP.post_build*   sb    8+; ;#hhS)Gbqb'FKg666QRR@CSyr)   )__name__
__module____qualname__namer   r   r   r
   r	   fields_descr:    r)   r'   r   r      s2       D
5!R "^ "^ "^ 	_ 	_Y1q(m44E400??	A 	A
;""
<##D!,,AA	C 	CD!,,AA	C 	CHZZ!,,a99HH	
 	
K&    r)   r   i  )dport)sport)rA   rB   )__doc__r5   scapy.packetr   r   r   scapy.fieldsr   r   r   r	   r
   scapy.layers.inetr   scapy.layers.pppr   r   r@   r)   r'   <module>rH      s-     < < < < < < < < < <              ! ! ! ! ! !                6   8 sD % % % % sD % % % % CT . . . . D#     r)   