mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
105 lines
3.2 KiB
105 lines
3.2 KiB
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ |
|
/*************************************************************************** |
|
* Linux PPP over L2TP (PPPoL2TP) Socket Implementation (RFC 2661) |
|
* |
|
* This file supplies definitions required by the PPP over L2TP driver |
|
* (l2tp_ppp.c). All version information wrt this file is located in l2tp_ppp.c |
|
* |
|
* License: |
|
* This program is free software; you can redistribute it and/or |
|
* modify it under the terms of the GNU General Public License |
|
* as published by the Free Software Foundation; either version |
|
* 2 of the License, or (at your option) any later version. |
|
* |
|
*/ |
|
|
|
#ifndef _UAPI__LINUX_IF_PPPOL2TP_H |
|
#define _UAPI__LINUX_IF_PPPOL2TP_H |
|
|
|
#include <linux/types.h> |
|
#include <linux/in.h> |
|
#include <linux/in6.h> |
|
#include <linux/l2tp.h> |
|
|
|
/* Structure used to connect() the socket to a particular tunnel UDP |
|
* socket over IPv4. |
|
*/ |
|
struct pppol2tp_addr { |
|
__kernel_pid_t pid; /* pid that owns the fd. |
|
* 0 => current */ |
|
int fd; /* FD of UDP socket to use */ |
|
|
|
struct sockaddr_in addr; /* IP address and port to send to */ |
|
|
|
__u16 s_tunnel, s_session; /* For matching incoming packets */ |
|
__u16 d_tunnel, d_session; /* For sending outgoing packets */ |
|
}; |
|
|
|
/* Structure used to connect() the socket to a particular tunnel UDP |
|
* socket over IPv6. |
|
*/ |
|
struct pppol2tpin6_addr { |
|
__kernel_pid_t pid; /* pid that owns the fd. |
|
* 0 => current */ |
|
int fd; /* FD of UDP socket to use */ |
|
|
|
__u16 s_tunnel, s_session; /* For matching incoming packets */ |
|
__u16 d_tunnel, d_session; /* For sending outgoing packets */ |
|
|
|
struct sockaddr_in6 addr; /* IP address and port to send to */ |
|
}; |
|
|
|
/* The L2TPv3 protocol changes tunnel and session ids from 16 to 32 |
|
* bits. So we need a different sockaddr structure. |
|
*/ |
|
struct pppol2tpv3_addr { |
|
__kernel_pid_t pid; /* pid that owns the fd. |
|
* 0 => current */ |
|
int fd; /* FD of UDP or IP socket to use */ |
|
|
|
struct sockaddr_in addr; /* IP address and port to send to */ |
|
|
|
__u32 s_tunnel, s_session; /* For matching incoming packets */ |
|
__u32 d_tunnel, d_session; /* For sending outgoing packets */ |
|
}; |
|
|
|
struct pppol2tpv3in6_addr { |
|
__kernel_pid_t pid; /* pid that owns the fd. |
|
* 0 => current */ |
|
int fd; /* FD of UDP or IP socket to use */ |
|
|
|
__u32 s_tunnel, s_session; /* For matching incoming packets */ |
|
__u32 d_tunnel, d_session; /* For sending outgoing packets */ |
|
|
|
struct sockaddr_in6 addr; /* IP address and port to send to */ |
|
}; |
|
|
|
/* Socket options: |
|
* DEBUG - bitmask of debug message categories (not used) |
|
* SENDSEQ - 0 => don't send packets with sequence numbers |
|
* 1 => send packets with sequence numbers |
|
* RECVSEQ - 0 => receive packet sequence numbers are optional |
|
* 1 => drop receive packets without sequence numbers |
|
* LNSMODE - 0 => act as LAC. |
|
* 1 => act as LNS. |
|
* REORDERTO - reorder timeout (in millisecs). If 0, don't try to reorder. |
|
*/ |
|
enum { |
|
PPPOL2TP_SO_DEBUG = 1, |
|
PPPOL2TP_SO_RECVSEQ = 2, |
|
PPPOL2TP_SO_SENDSEQ = 3, |
|
PPPOL2TP_SO_LNSMODE = 4, |
|
PPPOL2TP_SO_REORDERTO = 5, |
|
}; |
|
|
|
/* Debug message categories for the DEBUG socket option (deprecated) */ |
|
enum { |
|
PPPOL2TP_MSG_DEBUG = L2TP_MSG_DEBUG, |
|
PPPOL2TP_MSG_CONTROL = L2TP_MSG_CONTROL, |
|
PPPOL2TP_MSG_SEQ = L2TP_MSG_SEQ, |
|
PPPOL2TP_MSG_DATA = L2TP_MSG_DATA, |
|
}; |
|
|
|
|
|
|
|
#endif /* _UAPI__LINUX_IF_PPPOL2TP_H */
|
|
|