1f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy/* PPTP constants and structs */
2f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#ifndef _NF_CONNTRACK_PPTP_H
3f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define _NF_CONNTRACK_PPTP_H
4f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
59ee0779e994c6916863045297b831212e285da3bYasuyuki Kozakai#include <linux/netfilter/nf_conntrack_common.h>
69ee0779e994c6916863045297b831212e285da3bYasuyuki Kozakai
79ddd0ed050445176a97e11b2b24d6fbc01843da6Jan Engelhardtextern const char *const pptp_msg_name[];
80d53778e81ac7af266dac8a20cc328328c327112Patrick McHardy
9f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy/* state of the control session */
10f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardyenum pptp_ctrlsess_state {
11f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	PPTP_SESSION_NONE,			/* no session present */
12f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	PPTP_SESSION_ERROR,			/* some session error */
13f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	PPTP_SESSION_STOPREQ,			/* stop_sess request seen */
14f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	PPTP_SESSION_REQUESTED,			/* start_sess request seen */
15f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	PPTP_SESSION_CONFIRMED,			/* session established */
16f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy};
17f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
18f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy/* state of the call inside the control session */
19f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardyenum pptp_ctrlcall_state {
20f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	PPTP_CALL_NONE,
21f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	PPTP_CALL_ERROR,
22f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	PPTP_CALL_OUT_REQ,
23f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	PPTP_CALL_OUT_CONF,
24f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	PPTP_CALL_IN_REQ,
25f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	PPTP_CALL_IN_REP,
26f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	PPTP_CALL_IN_CONF,
27f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	PPTP_CALL_CLEAR_REQ,
28f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy};
29f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
30f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy/* conntrack private data */
31f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardystruct nf_ct_pptp_master {
32f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	enum pptp_ctrlsess_state sstate;	/* session state */
33f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	enum pptp_ctrlcall_state cstate;	/* call state */
34f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16 pac_call_id;			/* call id of PAC */
35f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16 pns_call_id;			/* call id of PNS */
36f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
37f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	/* in pre-2.6.11 this used to be per-expect. Now it is per-conntrack
38f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	 * and therefore imposes a fixed limit on the number of maps */
39f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	struct nf_ct_gre_keymap *keymap[IP_CT_DIR_MAX];
40f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy};
41f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
42f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardystruct nf_nat_pptp {
43f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16 pns_call_id;			/* NAT'ed PNS call id */
44f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16 pac_call_id;			/* NAT'ed PAC call id */
45f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy};
46f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
47f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#ifdef __KERNEL__
48f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
49f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_CONTROL_PORT	1723
50f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
51f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_PACKET_CONTROL	1
52f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_PACKET_MGMT	2
53f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
54f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_MAGIC_COOKIE	0x1a2b3c4d
55f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
56f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardystruct pptp_pkt_hdr {
57f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u16	packetLength;
58f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16	packetType;
59f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be32	magicCookie;
60f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy};
61f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
62f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy/* PptpControlMessageType values */
63f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_START_SESSION_REQUEST	1
64f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_START_SESSION_REPLY	2
65f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_STOP_SESSION_REQUEST	3
66f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_STOP_SESSION_REPLY		4
67f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_ECHO_REQUEST		5
68f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_ECHO_REPLY			6
69f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_OUT_CALL_REQUEST		7
70f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_OUT_CALL_REPLY		8
71f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_IN_CALL_REQUEST		9
72f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_IN_CALL_REPLY		10
73f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_IN_CALL_CONNECT		11
74f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_CALL_CLEAR_REQUEST		12
75f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_CALL_DISCONNECT_NOTIFY	13
76f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_WAN_ERROR_NOTIFY		14
77f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_SET_LINK_INFO		15
78f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
79f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_MSG_MAX			15
80f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
81f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy/* PptpGeneralError values */
82f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_ERROR_CODE_NONE		0
83f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_NOT_CONNECTED		1
84f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_BAD_FORMAT			2
85f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_BAD_VALUE			3
86f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_NO_RESOURCE		4
87f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_BAD_CALLID			5
88f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_REMOVE_DEVICE_ERROR	6
89f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
90f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardystruct PptpControlHeader {
91f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16	messageType;
92f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u16	reserved;
93f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy};
94f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
95f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy/* FramingCapability Bitmap Values */
96f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_FRAME_CAP_ASYNC		0x1
97f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_FRAME_CAP_SYNC		0x2
98f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
99f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy/* BearerCapability Bitmap Values */
100f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_BEARER_CAP_ANALOG		0x1
101f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_BEARER_CAP_DIGITAL		0x2
102f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
103f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardystruct PptpStartSessionRequest {
104f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16	protocolVersion;
105f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u16	reserved1;
106f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be32	framingCapability;
107f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be32	bearerCapability;
108f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16	maxChannels;
109f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16	firmwareRevision;
110f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u8	hostName[64];
111f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u8	vendorString[64];
112f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy};
113f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
114f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy/* PptpStartSessionResultCode Values */
115f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_START_OK			1
116f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_START_GENERAL_ERROR	2
117f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_START_ALREADY_CONNECTED	3
118f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_START_NOT_AUTHORIZED	4
119f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_START_UNKNOWN_PROTOCOL	5
120f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
121f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardystruct PptpStartSessionReply {
122f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16	protocolVersion;
123f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u8	resultCode;
124f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u8	generalErrorCode;
125f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be32	framingCapability;
126f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be32	bearerCapability;
127f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16	maxChannels;
128f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16	firmwareRevision;
129f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u8	hostName[64];
130f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u8	vendorString[64];
131f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy};
132f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
133f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy/* PptpStopReasons */
134f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_STOP_NONE			1
135f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_STOP_PROTOCOL		2
136f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_STOP_LOCAL_SHUTDOWN	3
137f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
138f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardystruct PptpStopSessionRequest {
139f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u8	reason;
140f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u8	reserved1;
141f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u16	reserved2;
142f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy};
143f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
144f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy/* PptpStopSessionResultCode */
145f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_STOP_OK			1
146f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_STOP_GENERAL_ERROR		2
147f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
148f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardystruct PptpStopSessionReply {
149f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u8	resultCode;
150f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u8	generalErrorCode;
151f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u16	reserved1;
152f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy};
153f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
154f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardystruct PptpEchoRequest {
155f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be32 identNumber;
156f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy};
157f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
158f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy/* PptpEchoReplyResultCode */
159f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_ECHO_OK			1
160f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_ECHO_GENERAL_ERROR		2
161f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
162f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardystruct PptpEchoReply {
163f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be32	identNumber;
164f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u8	resultCode;
165f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u8	generalErrorCode;
166f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u16	reserved;
167f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy};
168f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
169f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy/* PptpFramingType */
170f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_ASYNC_FRAMING		1
171f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_SYNC_FRAMING		2
172f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_DONT_CARE_FRAMING		3
173f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
174f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy/* PptpCallBearerType */
175f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_ANALOG_TYPE		1
176f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_DIGITAL_TYPE		2
177f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_DONT_CARE_BEARER_TYPE	3
178f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
179f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardystruct PptpOutCallRequest {
180f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16	callID;
181f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16	callSerialNumber;
182f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be32	minBPS;
183f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be32	maxBPS;
184f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be32	bearerType;
185f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be32	framingType;
186f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16	packetWindow;
187f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16	packetProcDelay;
188f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16	phoneNumberLength;
189f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u16	reserved1;
190f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u8	phoneNumber[64];
191f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u8	subAddress[64];
192f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy};
193f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
194f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy/* PptpCallResultCode */
195f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_OUTCALL_CONNECT		1
196f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_OUTCALL_GENERAL_ERROR	2
197f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_OUTCALL_NO_CARRIER		3
198f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_OUTCALL_BUSY		4
199f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_OUTCALL_NO_DIAL_TONE	5
200f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_OUTCALL_TIMEOUT		6
201f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_OUTCALL_DONT_ACCEPT	7
202f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
203f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardystruct PptpOutCallReply {
204f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16	callID;
205f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16	peersCallID;
206f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u8	resultCode;
207f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u8	generalErrorCode;
208f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16	causeCode;
209f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be32	connectSpeed;
210f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16	packetWindow;
211f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16	packetProcDelay;
212f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be32	physChannelID;
213f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy};
214f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
215f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardystruct PptpInCallRequest {
216f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16	callID;
217f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16	callSerialNumber;
218f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be32	callBearerType;
219f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be32	physChannelID;
220f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16	dialedNumberLength;
221f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16	dialingNumberLength;
222f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u8	dialedNumber[64];
223f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u8	dialingNumber[64];
224f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u8	subAddress[64];
225f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy};
226f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
227f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy/* PptpInCallResultCode */
228f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_INCALL_ACCEPT		1
229f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_INCALL_GENERAL_ERROR	2
230f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#define PPTP_INCALL_DONT_ACCEPT		3
231f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
232f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardystruct PptpInCallReply {
233f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16	callID;
234f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16	peersCallID;
235f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u8	resultCode;
236f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u8	generalErrorCode;
237f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16	packetWindow;
238f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16	packetProcDelay;
239f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u16	reserved;
240f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy};
241f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
242f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardystruct PptpInCallConnected {
243f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16	peersCallID;
244f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u16	reserved;
245f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be32	connectSpeed;
246f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16	packetWindow;
247f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16	packetProcDelay;
248f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be32	callFramingType;
249f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy};
250f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
251f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardystruct PptpClearCallRequest {
252f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16	callID;
253f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u16	reserved;
254f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy};
255f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
256f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardystruct PptpCallDisconnectNotify {
257f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16	callID;
258f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u8	resultCode;
259f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u8	generalErrorCode;
260f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16	causeCode;
261f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u16	reserved;
262f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u8	callStatistics[128];
263f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy};
264f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
265f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardystruct PptpWanErrorNotify {
266f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16	peersCallID;
267f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u16	reserved;
268f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be32	crcErrors;
269f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be32	framingErrors;
270f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be32	hardwareOverRuns;
271f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be32	bufferOverRuns;
272f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be32	timeoutErrors;
273f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be32	alignmentErrors;
274f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy};
275f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
276f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardystruct PptpSetLinkInfo {
277f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be16	peersCallID;
278f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__u16	reserved;
279f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be32	sendAccm;
280f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	__be32	recvAccm;
281f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy};
282f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
283f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardyunion pptp_ctrl_union {
284f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	struct PptpStartSessionRequest	sreq;
285f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	struct PptpStartSessionReply	srep;
286f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	struct PptpStopSessionRequest	streq;
287f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	struct PptpStopSessionReply	strep;
288f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	struct PptpOutCallRequest	ocreq;
289f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	struct PptpOutCallReply		ocack;
290f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	struct PptpInCallRequest	icreq;
291f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	struct PptpInCallReply		icack;
292f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	struct PptpInCallConnected	iccon;
293f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	struct PptpClearCallRequest	clrreq;
294f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	struct PptpCallDisconnectNotify disc;
295f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	struct PptpWanErrorNotify	wanerr;
296f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy	struct PptpSetLinkInfo		setlink;
297f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy};
298f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
299f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy/* crap needed for nf_conntrack_compat.h */
300f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardystruct nf_conn;
301f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardystruct nf_conntrack_expect;
302f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
303f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardyextern int
3043db05fea51cdb162cfa8f69e9cfb9e228919d2a9Herbert Xu(*nf_nat_pptp_hook_outbound)(struct sk_buff *skb,
305f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy			     struct nf_conn *ct, enum ip_conntrack_info ctinfo,
306051966c0c644a1c96092d4206e00704ade813c9aPatrick McHardy			     unsigned int protoff,
307f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy			     struct PptpControlHeader *ctlh,
308f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy			     union pptp_ctrl_union *pptpReq);
309f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
310f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardyextern int
3113db05fea51cdb162cfa8f69e9cfb9e228919d2a9Herbert Xu(*nf_nat_pptp_hook_inbound)(struct sk_buff *skb,
312f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy			    struct nf_conn *ct, enum ip_conntrack_info ctinfo,
313051966c0c644a1c96092d4206e00704ade813c9aPatrick McHardy			    unsigned int protoff,
314f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy			    struct PptpControlHeader *ctlh,
315f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy			    union pptp_ctrl_union *pptpReq);
316f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
317f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardyextern void
318f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy(*nf_nat_pptp_hook_exp_gre)(struct nf_conntrack_expect *exp_orig,
319f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy			    struct nf_conntrack_expect *exp_reply);
320f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
321f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardyextern void
322f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy(*nf_nat_pptp_hook_expectfn)(struct nf_conn *ct,
323f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy			     struct nf_conntrack_expect *exp);
324f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy
325f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#endif /* __KERNEL__ */
326f09943fefe6b702e40893d35b4f10fd1064037fePatrick McHardy#endif /* _NF_CONNTRACK_PPTP_H */
327