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 |
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: