a
    kÄ#dë  ã                   @   sž   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„ deƒZeeed	d
� eeed	d� eeed	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                   @   sœ   e Zd Zd Zedddg d¢ƒedddddiƒeed	d
ƒdd„ ƒeddƒeddƒeeddƒdd„ ƒeeddƒdd„ ƒeeeddƒddƒdd„ ƒgZ	dd„ Z
d
S )ÚL2TPÚhdrr   é   )Zres00Zres01Zres02Zres03ÚpriorityÚoffsetZres06ÚsequenceZres08Zres09ÚlengthÚcontrolÚversioné   é   ZL2TPv2ÚlenNc                 C   s
   | j d@ S )Núcontrol+length©r   ©Úpkt© r   úH/var/www/html/gsl.tools/lib/python3.9/site-packages/scapy/layers/l2tp.pyÚ<lambda>   ó    zL2TP.<lambda>Z	tunnel_idZ
session_idÚnsc                 C   s
   | j d@ S ©Nzsequence+controlr   r   r   r   r   r   !   r   Únrc                 C   s
   | j d@ S r!   r   r   r   r   r   r   #   r   r   ó    c                 C   s   | j d@  o| j d@ S )Nr   r   r   r   r   r   r   r   &   r   c                 C   sP   | j d u rH| jd@ rHt |ƒt |ƒ }|d d… t d|¡ |dd …  }|| S )Nr   r   z!Hr   )r   r   ÚstructÚpack)Úselfr   ZpayZtmp_lenr   r   r   Ú
post_build*   s    $zL2TP.post_build)Ú__name__Ú
__module__Ú__qualname__Únamer   r   r   r	   r   Zfields_descr'   r   r   r   r   r      s(   
ÿ
ÿ
ÿþór   i¥  )Údport)Úsport)r,   r-   )Ú__doc__r$   Zscapy.packetr   r   r   Zscapy.fieldsr   r   r   r   r	   Zscapy.layers.inetr
   Zscapy.layers.pppr   r   r   r   r   r   Ú<module>   s   