Dr Andrew Scott G7VAV

My photo
 
June 2025
Mo Tu We Th Fr Sa Su
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 1 2 3 4 5 6


if_pppol2tp.h
01: /***************************************************************************
02:  * Linux PPP over L2TP (PPPoL2TP) Socket Implementation (RFC 2661)
03:  *
04:  * This file supplies definitions required by the PPP over L2TP driver
05:  * (l2tp_ppp.c).  All version information wrt this file is located in l2tp_ppp.c
06:  *
07:  * License:
08:  *              This program is free software; you can redistribute it and/or
09:  *              modify it under the terms of the GNU General Public License
10:  *              as published by the Free Software Foundation; either version
11:  *              2 of the License, or (at your option) any later version.
12:  *
13:  */
14: 
15: #ifndef __LINUX_IF_PPPOL2TP_H
16: #define __LINUX_IF_PPPOL2TP_H
17: 
18: #include <linux/types.h>
19: 
20: 
21: /* Structure used to connect() the socket to a particular tunnel UDP
22:  * socket.
23:  */
24: struct pppol2tp_addr {
25:         __kernel_pid_t  pid;            /* pid that owns the fd.
26:                                          * 0 => current */
27:         int     fd;                     /* FD of UDP socket to use */
28: 
29:         struct sockaddr_in addr;        /* IP address and port to send to */
30: 
31:         __u16 s_tunnel, s_session;      /* For matching incoming packets */
32:         __u16 d_tunnel, d_session;      /* For sending outgoing packets */
33: };
34: 
35: /* The L2TPv3 protocol changes tunnel and session ids from 16 to 32
36:  * bits. So we need a different sockaddr structure.
37:  */
38: struct pppol2tpv3_addr {
39:         __kernel_pid_t  pid;            /* pid that owns the fd.
40:                                          * 0 => current */
41:         int     fd;                     /* FD of UDP or IP socket to use */
42: 
43:         struct sockaddr_in addr;        /* IP address and port to send to */
44: 
45:         __u32 s_tunnel, s_session;      /* For matching incoming packets */
46:         __u32 d_tunnel, d_session;      /* For sending outgoing packets */
47: };
48: 
49: /* Socket options:
50:  * DEBUG        - bitmask of debug message categories
51:  * SENDSEQ      - 0 => don't send packets with sequence numbers
52:  *                1 => send packets with sequence numbers
53:  * RECVSEQ      - 0 => receive packet sequence numbers are optional
54:  *                1 => drop receive packets without sequence numbers
55:  * LNSMODE      - 0 => act as LAC.
56:  *                1 => act as LNS.
57:  * REORDERTO    - reorder timeout (in millisecs). If 0, don't try to reorder.
58:  */
59: enum {
60:         PPPOL2TP_SO_DEBUG       = 1,
61:         PPPOL2TP_SO_RECVSEQ     = 2,
62:         PPPOL2TP_SO_SENDSEQ     = 3,
63:         PPPOL2TP_SO_LNSMODE     = 4,
64:         PPPOL2TP_SO_REORDERTO   = 5,
65: };
66: 
67: /* Debug message categories for the DEBUG socket option */
68: enum {
69:         PPPOL2TP_MSG_DEBUG      = (1 << 0),     /* verbose debug (if
70:                                                  * compiled in) */
71:         PPPOL2TP_MSG_CONTROL    = (1 << 1),     /* userspace - kernel
72:                                                  * interface */
73:         PPPOL2TP_MSG_SEQ        = (1 << 2),     /* sequence numbers */
74:         PPPOL2TP_MSG_DATA       = (1 << 3),     /* data packets */
75: };
76: 
77: 
78: 
79: #endif
80: 


for client (none)
© Andrew Scott 2006 - 2025,
All Rights Reserved
http://www.andrew-scott.uk/
Andrew Scott
http://www.andrew-scott.co.uk/