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


l2tp.h
001: /*
002:  * L2TP-over-IP socket for L2TPv3.
003:  *
004:  * Author: James Chapman <jchapman@katalix.com>
005:  */
006: 
007: #ifndef _LINUX_L2TP_H_
008: #define _LINUX_L2TP_H_
009: 
010: #include <linux/types.h>
011: #include <linux/socket.h>
012: #include <netinet/in.h>
013: 
014: #define IPPROTO_L2TP            115
015: 
016: /**
017:  * struct sockaddr_l2tpip - the sockaddr structure for L2TP-over-IP sockets
018:  * @l2tp_family:  address family number AF_L2TPIP.
019:  * @l2tp_addr:    protocol specific address information
020:  * @l2tp_conn_id: connection id of tunnel
021:  */
022: #define __SOCK_SIZE__   16              /* sizeof(struct sockaddr)      */
023: struct sockaddr_l2tpip {
024:         /* The first fields must match struct sockaddr_in */
025:         __kernel_sa_family_t l2tp_family; /* AF_INET */
026:         __be16          l2tp_unused;    /* INET port number (unused) */
027:         struct in_addr  l2tp_addr;      /* Internet address */
028: 
029:         __u32           l2tp_conn_id;   /* Connection ID of tunnel */
030: 
031:         /* Pad to size of `struct sockaddr'. */
032:         unsigned char   __pad[sizeof(struct sockaddr) -
033:                               sizeof(__kernel_sa_family_t) -
034:                               sizeof(__be16) - sizeof(struct in_addr) -
035:                               sizeof(__u32)];
036: };
037: 
038: /*****************************************************************************
039:  *  NETLINK_GENERIC netlink family.
040:  *****************************************************************************/
041: 
042: /*
043:  * Commands.
044:  * Valid TLVs of each command are:-
045:  * TUNNEL_CREATE        - CONN_ID, pw_type, netns, ifname, ipinfo, udpinfo, udpcsum, vlanid
046:  * TUNNEL_DELETE        - CONN_ID
047:  * TUNNEL_MODIFY        - CONN_ID, udpcsum
048:  * TUNNEL_GETSTATS      - CONN_ID, (stats)
049:  * TUNNEL_GET           - CONN_ID, (...)
050:  * SESSION_CREATE       - SESSION_ID, PW_TYPE, offset, data_seq, cookie, peer_cookie, offset, l2spec
051:  * SESSION_DELETE       - SESSION_ID
052:  * SESSION_MODIFY       - SESSION_ID, data_seq
053:  * SESSION_GET          - SESSION_ID, (...)
054:  * SESSION_GETSTATS     - SESSION_ID, (stats)
055:  *
056:  */
057: enum {
058:         L2TP_CMD_NOOP,
059:         L2TP_CMD_TUNNEL_CREATE,
060:         L2TP_CMD_TUNNEL_DELETE,
061:         L2TP_CMD_TUNNEL_MODIFY,
062:         L2TP_CMD_TUNNEL_GET,
063:         L2TP_CMD_SESSION_CREATE,
064:         L2TP_CMD_SESSION_DELETE,
065:         L2TP_CMD_SESSION_MODIFY,
066:         L2TP_CMD_SESSION_GET,
067:         __L2TP_CMD_MAX,
068: };
069: 
070: #define L2TP_CMD_MAX                    (__L2TP_CMD_MAX - 1)
071: 
072: /*
073:  * ATTR types defined for L2TP
074:  */
075: enum {
076:         L2TP_ATTR_NONE,                 /* no data */
077:         L2TP_ATTR_PW_TYPE,              /* u16, enum l2tp_pwtype */
078:         L2TP_ATTR_ENCAP_TYPE,           /* u16, enum l2tp_encap_type */
079:         L2TP_ATTR_OFFSET,               /* u16 */
080:         L2TP_ATTR_DATA_SEQ,             /* u16 */
081:         L2TP_ATTR_L2SPEC_TYPE,          /* u8, enum l2tp_l2spec_type */
082:         L2TP_ATTR_L2SPEC_LEN,           /* u8, enum l2tp_l2spec_type */
083:         L2TP_ATTR_PROTO_VERSION,        /* u8 */
084:         L2TP_ATTR_IFNAME,               /* string */
085:         L2TP_ATTR_CONN_ID,              /* u32 */
086:         L2TP_ATTR_PEER_CONN_ID,         /* u32 */
087:         L2TP_ATTR_SESSION_ID,           /* u32 */
088:         L2TP_ATTR_PEER_SESSION_ID,      /* u32 */
089:         L2TP_ATTR_UDP_CSUM,             /* u8 */
090:         L2TP_ATTR_VLAN_ID,              /* u16 */
091:         L2TP_ATTR_COOKIE,               /* 0, 4 or 8 bytes */
092:         L2TP_ATTR_PEER_COOKIE,          /* 0, 4 or 8 bytes */
093:         L2TP_ATTR_DEBUG,                /* u32 */
094:         L2TP_ATTR_RECV_SEQ,             /* u8 */
095:         L2TP_ATTR_SEND_SEQ,             /* u8 */
096:         L2TP_ATTR_LNS_MODE,             /* u8 */
097:         L2TP_ATTR_USING_IPSEC,          /* u8 */
098:         L2TP_ATTR_RECV_TIMEOUT,         /* msec */
099:         L2TP_ATTR_FD,                   /* int */
100:         L2TP_ATTR_IP_SADDR,             /* u32 */
101:         L2TP_ATTR_IP_DADDR,             /* u32 */
102:         L2TP_ATTR_UDP_SPORT,            /* u16 */
103:         L2TP_ATTR_UDP_DPORT,            /* u16 */
104:         L2TP_ATTR_MTU,                  /* u16 */
105:         L2TP_ATTR_MRU,                  /* u16 */
106:         L2TP_ATTR_STATS,                /* nested */
107:         __L2TP_ATTR_MAX,
108: };
109: 
110: #define L2TP_ATTR_MAX                   (__L2TP_ATTR_MAX - 1)
111: 
112: /* Nested in L2TP_ATTR_STATS */
113: enum {
114:         L2TP_ATTR_STATS_NONE,           /* no data */
115:         L2TP_ATTR_TX_PACKETS,           /* u64 */
116:         L2TP_ATTR_TX_BYTES,             /* u64 */
117:         L2TP_ATTR_TX_ERRORS,            /* u64 */
118:         L2TP_ATTR_RX_PACKETS,           /* u64 */
119:         L2TP_ATTR_RX_BYTES,             /* u64 */
120:         L2TP_ATTR_RX_SEQ_DISCARDS,      /* u64 */
121:         L2TP_ATTR_RX_OOS_PACKETS,       /* u64 */
122:         L2TP_ATTR_RX_ERRORS,            /* u64 */
123:         __L2TP_ATTR_STATS_MAX,
124: };
125: 
126: #define L2TP_ATTR_STATS_MAX             (__L2TP_ATTR_STATS_MAX - 1)
127: 
128: enum l2tp_pwtype {
129:         L2TP_PWTYPE_NONE = 0x0000,
130:         L2TP_PWTYPE_ETH_VLAN = 0x0004,
131:         L2TP_PWTYPE_ETH = 0x0005,
132:         L2TP_PWTYPE_PPP = 0x0007,
133:         L2TP_PWTYPE_PPP_AC = 0x0008,
134:         L2TP_PWTYPE_IP = 0x000b,
135:         __L2TP_PWTYPE_MAX
136: };
137: 
138: enum l2tp_l2spec_type {
139:         L2TP_L2SPECTYPE_NONE,
140:         L2TP_L2SPECTYPE_DEFAULT,
141: };
142: 
143: enum l2tp_encap_type {
144:         L2TP_ENCAPTYPE_UDP,
145:         L2TP_ENCAPTYPE_IP,
146: };
147: 
148: enum l2tp_seqmode {
149:         L2TP_SEQ_NONE = 0,
150:         L2TP_SEQ_IP = 1,
151:         L2TP_SEQ_ALL = 2,
152: };
153: 
154: /*
155:  * NETLINK_GENERIC related info
156:  */
157: #define L2TP_GENL_NAME          "l2tp"
158: #define L2TP_GENL_VERSION       0x1
159: 
160: #endif
161: 


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