0001
0002
0003
0004
0005
0006
0007
0008 #ifndef _UAPI_LINUX_L2TP_H_
0009 #define _UAPI_LINUX_L2TP_H_
0010
0011 #include <linux/types.h>
0012 #include <linux/socket.h>
0013 #include <linux/in.h>
0014 #include <linux/in6.h>
0015
0016 #define IPPROTO_L2TP 115
0017
0018
0019
0020
0021
0022
0023
0024 #define __SOCK_SIZE__ 16
0025 struct sockaddr_l2tpip {
0026
0027 __kernel_sa_family_t l2tp_family;
0028 __be16 l2tp_unused;
0029 struct in_addr l2tp_addr;
0030
0031 __u32 l2tp_conn_id;
0032
0033
0034 unsigned char __pad[__SOCK_SIZE__ -
0035 sizeof(__kernel_sa_family_t) -
0036 sizeof(__be16) - sizeof(struct in_addr) -
0037 sizeof(__u32)];
0038 };
0039
0040
0041
0042
0043
0044
0045
0046 struct sockaddr_l2tpip6 {
0047
0048 __kernel_sa_family_t l2tp_family;
0049 __be16 l2tp_unused;
0050 __be32 l2tp_flowinfo;
0051 struct in6_addr l2tp_addr;
0052 __u32 l2tp_scope_id;
0053 __u32 l2tp_conn_id;
0054 };
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075 enum {
0076 L2TP_CMD_NOOP,
0077 L2TP_CMD_TUNNEL_CREATE,
0078 L2TP_CMD_TUNNEL_DELETE,
0079 L2TP_CMD_TUNNEL_MODIFY,
0080 L2TP_CMD_TUNNEL_GET,
0081 L2TP_CMD_SESSION_CREATE,
0082 L2TP_CMD_SESSION_DELETE,
0083 L2TP_CMD_SESSION_MODIFY,
0084 L2TP_CMD_SESSION_GET,
0085 __L2TP_CMD_MAX,
0086 };
0087
0088 #define L2TP_CMD_MAX (__L2TP_CMD_MAX - 1)
0089
0090
0091
0092
0093 enum {
0094 L2TP_ATTR_NONE,
0095 L2TP_ATTR_PW_TYPE,
0096 L2TP_ATTR_ENCAP_TYPE,
0097 L2TP_ATTR_OFFSET,
0098 L2TP_ATTR_DATA_SEQ,
0099 L2TP_ATTR_L2SPEC_TYPE,
0100 L2TP_ATTR_L2SPEC_LEN,
0101 L2TP_ATTR_PROTO_VERSION,
0102 L2TP_ATTR_IFNAME,
0103 L2TP_ATTR_CONN_ID,
0104 L2TP_ATTR_PEER_CONN_ID,
0105 L2TP_ATTR_SESSION_ID,
0106 L2TP_ATTR_PEER_SESSION_ID,
0107 L2TP_ATTR_UDP_CSUM,
0108 L2TP_ATTR_VLAN_ID,
0109 L2TP_ATTR_COOKIE,
0110 L2TP_ATTR_PEER_COOKIE,
0111 L2TP_ATTR_DEBUG,
0112 L2TP_ATTR_RECV_SEQ,
0113 L2TP_ATTR_SEND_SEQ,
0114 L2TP_ATTR_LNS_MODE,
0115 L2TP_ATTR_USING_IPSEC,
0116 L2TP_ATTR_RECV_TIMEOUT,
0117 L2TP_ATTR_FD,
0118 L2TP_ATTR_IP_SADDR,
0119 L2TP_ATTR_IP_DADDR,
0120 L2TP_ATTR_UDP_SPORT,
0121 L2TP_ATTR_UDP_DPORT,
0122 L2TP_ATTR_MTU,
0123 L2TP_ATTR_MRU,
0124 L2TP_ATTR_STATS,
0125 L2TP_ATTR_IP6_SADDR,
0126 L2TP_ATTR_IP6_DADDR,
0127 L2TP_ATTR_UDP_ZERO_CSUM6_TX,
0128 L2TP_ATTR_UDP_ZERO_CSUM6_RX,
0129 L2TP_ATTR_PAD,
0130 __L2TP_ATTR_MAX,
0131 };
0132
0133 #define L2TP_ATTR_MAX (__L2TP_ATTR_MAX - 1)
0134
0135
0136 enum {
0137 L2TP_ATTR_STATS_NONE,
0138 L2TP_ATTR_TX_PACKETS,
0139 L2TP_ATTR_TX_BYTES,
0140 L2TP_ATTR_TX_ERRORS,
0141 L2TP_ATTR_RX_PACKETS,
0142 L2TP_ATTR_RX_BYTES,
0143 L2TP_ATTR_RX_SEQ_DISCARDS,
0144 L2TP_ATTR_RX_OOS_PACKETS,
0145 L2TP_ATTR_RX_ERRORS,
0146 L2TP_ATTR_STATS_PAD,
0147 L2TP_ATTR_RX_COOKIE_DISCARDS,
0148 L2TP_ATTR_RX_INVALID,
0149 __L2TP_ATTR_STATS_MAX,
0150 };
0151
0152 #define L2TP_ATTR_STATS_MAX (__L2TP_ATTR_STATS_MAX - 1)
0153
0154 enum l2tp_pwtype {
0155 L2TP_PWTYPE_NONE = 0x0000,
0156 L2TP_PWTYPE_ETH_VLAN = 0x0004,
0157 L2TP_PWTYPE_ETH = 0x0005,
0158 L2TP_PWTYPE_PPP = 0x0007,
0159 L2TP_PWTYPE_PPP_AC = 0x0008,
0160 L2TP_PWTYPE_IP = 0x000b,
0161 __L2TP_PWTYPE_MAX
0162 };
0163
0164 enum l2tp_l2spec_type {
0165 L2TP_L2SPECTYPE_NONE,
0166 L2TP_L2SPECTYPE_DEFAULT,
0167 };
0168
0169 enum l2tp_encap_type {
0170 L2TP_ENCAPTYPE_UDP,
0171 L2TP_ENCAPTYPE_IP,
0172 };
0173
0174
0175 enum l2tp_seqmode {
0176 L2TP_SEQ_NONE = 0,
0177 L2TP_SEQ_IP = 1,
0178 L2TP_SEQ_ALL = 2,
0179 };
0180
0181
0182
0183
0184
0185
0186
0187
0188
0189
0190
0191 enum l2tp_debug_flags {
0192 L2TP_MSG_DEBUG = (1 << 0),
0193 L2TP_MSG_CONTROL = (1 << 1),
0194 L2TP_MSG_SEQ = (1 << 2),
0195 L2TP_MSG_DATA = (1 << 3),
0196 };
0197
0198
0199
0200
0201 #define L2TP_GENL_NAME "l2tp"
0202 #define L2TP_GENL_VERSION 0x1
0203 #define L2TP_GENL_MCGROUP "l2tp"
0204
0205 #endif