L2TP - Layer Two Tunnelling Protocol

pcapkit.protocols.link.l2tp contains L2TP only, which implements extractor for Layer Two Tunnelling Protocol (L2TP) *, whose structure is described as below:

Octets

Bits

Name

Description

0

0

l2tp.flags

Flags and Version Info

0

0

l2tp.flags.type

Type (control / data)

0

1

l2tp.flags.len

Length

0

2

Reserved (must be zero x00)

0

4

l2tp.flags.seq

Sequence

0

5

Reserved (must be zero x00)

0

6

l2tp.flags.offset

Offset

0

7

l2tp.flags.prio

Priority

1

8

Reserved (must be zero x00)

1

12

l2tp.ver

Version (2)

2

16

l2tp.length

Length (optional by len)

4

32

l2tp.tunnelid

Tunnel ID

6

48

l2tp.sessionid

Session ID

8

64

l2tp.ns

Sequence Number (optional by seq)

10

80

l2tp.nr

Next Sequence Number (optional by seq)

12

96

l2tp.offset

Offset Size (optional by offset)


class pcapkit.protocols.link.l2tp.L2TP(file=None, length=None, **kwargs)[source]

Bases: pcapkit.protocols.link.link.Link

This class implements Layer Two Tunnelling Protocol.

classmethod __index__()[source]

Numeral registry index of the protocol.

Raises

UnsupportedCall – This protocol has no registry entry.

__length_hint__()[source]

Return an estimated length for the object.

Return type

Literal[16]

make(**kwargs)[source]

Make (construct) packet data.

Keyword Arguments

**kwargs – Arbitrary keyword arguments.

Returns

Constructed packet data.

Return type

bytes

read(length=None, **kwargs)[source]

Read Layer Two Tunnelling Protocol.

Structure of L2TP header [RFC 2661]:

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|T|L|x|x|S|x|O|P|x|x|x|x|  Ver  |          Length (opt)         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Tunnel ID           |           Session ID          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Ns (opt)          |             Nr (opt)          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      Offset Size (opt)        |    Offset pad... (opt)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Parameters

length (Optional[int]) – Length of packet data.

Keyword Arguments

**kwargs – Arbitrary keyword arguments.

Returns

Parsed packet data.

Return type

DataType_L2TP

property length

Header length of current protocol.

Return type

int

property name

Name of current protocol.

Return type

Literal[‘Layer 2 Tunnelling Protocol’]

property type

L2TP type.

Return type

Literal[‘Control’, ‘Data’]

Data Structure

Important

Following classes are only for documentation purpose. They do NOT exist in the pcapkit module.

class pcapkit.protocols.link.l2tp.DataType_L2TP
Bases

TypedDict

L2TP header.

flags: DataTYpe_Flags

flags & versoion info

version: Literal[2]

version (2)

length: Optional[int]

length (optional by len)

tunnelid: int

tunnel ID

sessionid: int

session ID

ns: Optional[int]

sequence number (optional by seq)

nr: Optional[int]

next sequence number (optional by seq)

offset: Optional[int]

offset (optional by offset)

class pcapkit.protocols.link.l2tp.DataType_Flags
Bases

TypedDict

Flags and version info.

type: Literal[Control, Data]

type (control / data)

len: bool

length

seq: bool

sequence

offset: bool

offset

prio: bool

priority


*

https://en.wikipedia.org/wiki/Layer_2_Tunneling_Protocol