📄 ip_conntrack_pptp.h
字号:
/* PPTP constants and structs */#ifndef _CONNTRACK_PPTP_H#define _CONNTRACK_PPTP_H/* state of the control session */enum pptp_ctrlsess_state { PPTP_SESSION_NONE, /* no session present */ PPTP_SESSION_ERROR, /* some session error */ PPTP_SESSION_STOPREQ, /* stop_sess request seen */ PPTP_SESSION_REQUESTED, /* start_sess request seen */ PPTP_SESSION_CONFIRMED, /* session established */};/* state of the call inside the control session */enum pptp_ctrlcall_state { PPTP_CALL_NONE, PPTP_CALL_ERROR, PPTP_CALL_OUT_REQ, PPTP_CALL_OUT_CONF, PPTP_CALL_IN_REQ, PPTP_CALL_IN_REP, PPTP_CALL_IN_CONF, PPTP_CALL_CLEAR_REQ,};/* conntrack private data */struct ip_ct_pptp_master { enum pptp_ctrlsess_state sstate; /* session state */ /* everything below is going to be per-expectation in newnat, * since there could be more than one call within one session */ enum pptp_ctrlcall_state cstate; /* call state */ u_int16_t pac_call_id; /* call id of PAC, host byte order */ u_int16_t pns_call_id; /* call id of PNS, host byte order */ /* in pre-2.6.11 this used to be per-expect. Now it is per-conntrack * and therefore imposes a fixed limit on the number of maps */ struct ip_ct_gre_keymap *keymap_orig, *keymap_reply;};/* conntrack_expect private member */struct ip_ct_pptp_expect { enum pptp_ctrlcall_state cstate; /* call state */ u_int16_t pac_call_id; /* call id of PAC */ u_int16_t pns_call_id; /* call id of PNS */};#ifdef __KERNEL__#define IP_CONNTR_PPTP PPTP_CONTROL_PORT#define PPTP_CONTROL_PORT 1723#define PPTP_PACKET_CONTROL 1#define PPTP_PACKET_MGMT 2#define PPTP_MAGIC_COOKIE 0x1a2b3c4dstruct pptp_pkt_hdr { __u16 packetLength; __be16 packetType; __be32 magicCookie;};/* PptpControlMessageType values */#define PPTP_START_SESSION_REQUEST 1#define PPTP_START_SESSION_REPLY 2#define PPTP_STOP_SESSION_REQUEST 3#define PPTP_STOP_SESSION_REPLY 4#define PPTP_ECHO_REQUEST 5#define PPTP_ECHO_REPLY 6#define PPTP_OUT_CALL_REQUEST 7#define PPTP_OUT_CALL_REPLY 8#define PPTP_IN_CALL_REQUEST 9#define PPTP_IN_CALL_REPLY 10#define PPTP_IN_CALL_CONNECT 11#define PPTP_CALL_CLEAR_REQUEST 12#define PPTP_CALL_DISCONNECT_NOTIFY 13#define PPTP_WAN_ERROR_NOTIFY 14#define PPTP_SET_LINK_INFO 15#define PPTP_MSG_MAX 15/* PptpGeneralError values */#define PPTP_ERROR_CODE_NONE 0#define PPTP_NOT_CONNECTED 1#define PPTP_BAD_FORMAT 2#define PPTP_BAD_VALUE 3#define PPTP_NO_RESOURCE 4#define PPTP_BAD_CALLID 5#define PPTP_REMOVE_DEVICE_ERROR 6struct PptpControlHeader { __be16 messageType; __u16 reserved;};/* FramingCapability Bitmap Values */#define PPTP_FRAME_CAP_ASYNC 0x1#define PPTP_FRAME_CAP_SYNC 0x2/* BearerCapability Bitmap Values */#define PPTP_BEARER_CAP_ANALOG 0x1#define PPTP_BEARER_CAP_DIGITAL 0x2struct PptpStartSessionRequest { __be16 protocolVersion; __u8 reserved1; __u8 reserved2; __be32 framingCapability; __be32 bearerCapability; __be16 maxChannels; __be16 firmwareRevision; __u8 hostName[64]; __u8 vendorString[64];};/* PptpStartSessionResultCode Values */#define PPTP_START_OK 1#define PPTP_START_GENERAL_ERROR 2#define PPTP_START_ALREADY_CONNECTED 3#define PPTP_START_NOT_AUTHORIZED 4#define PPTP_START_UNKNOWN_PROTOCOL 5struct PptpStartSessionReply { __be16 protocolVersion; __u8 resultCode; __u8 generalErrorCode; __be32 framingCapability; __be32 bearerCapability; __be16 maxChannels; __be16 firmwareRevision; __u8 hostName[64]; __u8 vendorString[64];};/* PptpStopReasons */#define PPTP_STOP_NONE 1#define PPTP_STOP_PROTOCOL 2#define PPTP_STOP_LOCAL_SHUTDOWN 3struct PptpStopSessionRequest { __u8 reason;};/* PptpStopSessionResultCode */#define PPTP_STOP_OK 1#define PPTP_STOP_GENERAL_ERROR 2struct PptpStopSessionReply { __u8 resultCode; __u8 generalErrorCode;};struct PptpEchoRequest { __be32 identNumber;};/* PptpEchoReplyResultCode */#define PPTP_ECHO_OK 1#define PPTP_ECHO_GENERAL_ERROR 2struct PptpEchoReply { __be32 identNumber; __u8 resultCode; __u8 generalErrorCode; __u16 reserved;};/* PptpFramingType */#define PPTP_ASYNC_FRAMING 1#define PPTP_SYNC_FRAMING 2#define PPTP_DONT_CARE_FRAMING 3/* PptpCallBearerType */#define PPTP_ANALOG_TYPE 1#define PPTP_DIGITAL_TYPE 2#define PPTP_DONT_CARE_BEARER_TYPE 3struct PptpOutCallRequest { __be16 callID; __be16 callSerialNumber; __be32 minBPS; __be32 maxBPS; __be32 bearerType; __be32 framingType; __be16 packetWindow; __be16 packetProcDelay; __u16 reserved1; __be16 phoneNumberLength; __u16 reserved2; __u8 phoneNumber[64]; __u8 subAddress[64];};/* PptpCallResultCode */#define PPTP_OUTCALL_CONNECT 1#define PPTP_OUTCALL_GENERAL_ERROR 2#define PPTP_OUTCALL_NO_CARRIER 3#define PPTP_OUTCALL_BUSY 4#define PPTP_OUTCALL_NO_DIAL_TONE 5#define PPTP_OUTCALL_TIMEOUT 6#define PPTP_OUTCALL_DONT_ACCEPT 7struct PptpOutCallReply { __be16 callID; __be16 peersCallID; __u8 resultCode; __u8 generalErrorCode; __be16 causeCode; __be32 connectSpeed; __be16 packetWindow; __be16 packetProcDelay; __be32 physChannelID;};struct PptpInCallRequest { __be16 callID; __be16 callSerialNumber; __be32 callBearerType; __be32 physChannelID; __be16 dialedNumberLength; __be16 dialingNumberLength; __u8 dialedNumber[64]; __u8 dialingNumber[64]; __u8 subAddress[64];};/* PptpInCallResultCode */#define PPTP_INCALL_ACCEPT 1#define PPTP_INCALL_GENERAL_ERROR 2#define PPTP_INCALL_DONT_ACCEPT 3struct PptpInCallReply { __be16 callID; __be16 peersCallID; __u8 resultCode; __u8 generalErrorCode; __be16 packetWindow; __be16 packetProcDelay; __u16 reserved;};struct PptpInCallConnected { __be16 peersCallID; __u16 reserved; __be32 connectSpeed; __be16 packetWindow; __be16 packetProcDelay; __be32 callFramingType;};struct PptpClearCallRequest { __be16 callID; __u16 reserved;};struct PptpCallDisconnectNotify { __be16 callID; __u8 resultCode; __u8 generalErrorCode; __be16 causeCode; __u16 reserved; __u8 callStatistics[128];};struct PptpWanErrorNotify { __be16 peersCallID; __u16 reserved; __be32 crcErrors; __be32 framingErrors; __be32 hardwareOverRuns; __be32 bufferOverRuns; __be32 timeoutErrors; __be32 alignmentErrors;};struct PptpSetLinkInfo { __be16 peersCallID; __u16 reserved; __be32 sendAccm; __be32 recvAccm;};union pptp_ctrl_union { struct PptpStartSessionRequest sreq; struct PptpStartSessionReply srep; struct PptpStopSessionRequest streq; struct PptpStopSessionReply strep; struct PptpOutCallRequest ocreq; struct PptpOutCallReply ocack; struct PptpInCallRequest icreq; struct PptpInCallReply icack; struct PptpInCallConnected iccon; struct PptpClearCallRequest clrreq; struct PptpCallDisconnectNotify disc; struct PptpWanErrorNotify wanerr; struct PptpSetLinkInfo setlink;};extern int(*ip_nat_pptp_hook_outbound)(struct sk_buff **pskb, struct ip_conntrack *ct, enum ip_conntrack_info ctinfo, struct PptpControlHeader *ctlh, union pptp_ctrl_union *pptpReq);extern int(*ip_nat_pptp_hook_inbound)(struct sk_buff **pskb, struct ip_conntrack *ct, enum ip_conntrack_info ctinfo, struct PptpControlHeader *ctlh, union pptp_ctrl_union *pptpReq);extern int(*ip_nat_pptp_hook_exp_gre)(struct ip_conntrack_expect *exp_orig, struct ip_conntrack_expect *exp_reply);extern void(*ip_nat_pptp_hook_expectfn)(struct ip_conntrack *ct, struct ip_conntrack_expect *exp);#endif /* __KERNEL__ */#endif /* _CONNTRACK_PPTP_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -