- Major release - Completely replace active/standby clustering with a new peer-to-peer clustering method which allows much greater throughput and is a lot more fault tolerant - Add internal tbf implementation for throttling without relying on tc and kernel HTB - Add support for iBGP and eBGP to advertise routes - Add cli commands "show cluster", "show bgp", "show ipcache", "show throttle", "show tbf", "suspend bgp", "restart bgp", "show user" - Interception destination must be set per-user - If SMP machine, allow use of SCHED_FIFO, which should improve performance - Added config option to send GARP at startup - Added plugin_become_master and plugin_new_session_master plugin hooks - Remove useless sessionsendarp(). This isn't needed now that we are using TUN instead of TAP. - ICMP rate limiting so not every unreachable packet is replied with an ICMP unreachable message - mangle table is not required on anything but the cluster master, so slaves will drop the mangle table and attempt to unload the ip_conntrack module - Statically assigned IP addresses (by Radius) work now - Add -d command-line flag to detach and become a daemon - Configuration file is now "/etc/l2tpns/startup-config" - Reduced MIN_IP_SIZE to 0x19 to stop a pile of Short IP warnings - Resend initial IPCP request until it's acknowleged by the client - Better radius session cleanup logic - Many miscellaenous bugfixes and performance enhancements - Thanks to Michael O'Reilly and Brendan O'Dea for most of these new features
136 lines
3.5 KiB
C
136 lines
3.5 KiB
C
#include "constants.h"
|
|
#include <memory.h>
|
|
|
|
const char *lcp_types[MAX_LCP_TYPE+1] = {
|
|
"Reserved",
|
|
"Maximum-Receive-Unit",
|
|
"Async-Control-Map",
|
|
"Authentication-Protocol",
|
|
"Quality-Protocol",
|
|
"Magic-Number",
|
|
"Reserved 6",
|
|
"Protocol-Field-Compression",
|
|
"Address-and-Control-Field-Compression",
|
|
};
|
|
|
|
const char *avpnames[MAX_AVPNAME+1] = {
|
|
"Message Type", // 0
|
|
"Result Code", // 1
|
|
"Protocol Version", // 2
|
|
"Framing Capabilities", // 3
|
|
"Bearer Capabilities", // 4
|
|
"Tie Breaker", // 5
|
|
"Firmware Revision", // 6
|
|
"Host Name", // 7
|
|
"Vendor Name", // 8
|
|
"Assigned Tunnel ID", // 9
|
|
"Receive Window Size", // 10
|
|
"Challenge", // 11
|
|
"Q.931 Cause Code", // 12
|
|
"Challenge Response", // 13
|
|
"Assigned Session ID", // 14
|
|
"Call Serial Number", // 15
|
|
"Minimum BPS", // 16
|
|
"Maximum BPS", // 17
|
|
"Bearer Type", // 18 (2 = Analog, 1 = Digital)
|
|
"Framing Type", // 19 (2 = Async, 1 = Sync)
|
|
"Reserved 20", // 20
|
|
"Called Number", // 21
|
|
"Calling Number", // 22
|
|
"Sub Address", // 23
|
|
"Tx Connect Speed", // 24
|
|
"Physical Channel ID", // 25
|
|
"Initial Received LCP CONFREQ", // 26
|
|
"Last Sent LCP CONFREQ", // 27
|
|
"Last Received LCP CONFREQ", // 28
|
|
"Proxy Authen Type", // 29
|
|
"Proxy Authen Name", // 30
|
|
"Proxy Authen Challenge", // 31
|
|
"Proxy Authen ID", // 32
|
|
"Proxy Authen Response", // 33
|
|
"Call Errors", // 34
|
|
"ACCM", // 35
|
|
"Random Vector", // 36
|
|
"Private Group ID", // 37
|
|
"Rx Connect Speed", // 38
|
|
"Sequencing Required", // 39
|
|
};
|
|
|
|
const char *stopccn_result_codes[MAX_STOPCCN_RESULT_CODE+1] = {
|
|
"Reserved",
|
|
"General request to clear control connection",
|
|
"General error--Error Code indicates the problem",
|
|
"Control channel already exists",
|
|
"Requester is not authorized to establish a control channel",
|
|
"The protocol version of the requester is not supported",
|
|
"Requester is being shut down",
|
|
"Finite State Machine error",
|
|
};
|
|
|
|
const char *cdn_result_codes[MAX_CDN_RESULT_CODE+1] = {
|
|
"Reserved",
|
|
"Call disconnected due to loss of carrier",
|
|
"Call disconnected for the reason indicated in error code",
|
|
"Call disconnected for administrative reasons",
|
|
"Call failed due to lack of appropriate facilities being available (temporary condition)",
|
|
"Call failed due to lack of appropriate facilities being available (permanent condition)",
|
|
"Invalid destination",
|
|
"Call failed due to no carrier detected",
|
|
"Call failed due to detection of a busy signal",
|
|
"Call failed due to lack of a dial tone",
|
|
"Call was not established within time allotted by LAC",
|
|
"Call was connected but no appropriate framing was detected",
|
|
};
|
|
|
|
const char *error_codes[MAX_ERROR_CODE+1] = {
|
|
"No general error",
|
|
"No control connection exists yet for this LAC-LNS pair",
|
|
"Length is wrong",
|
|
"One of the field values was out of range or reserved field was non-zero",
|
|
"Insufficient resources to handle this operation now",
|
|
"The Session ID is invalid in this context",
|
|
"A generic vendor-specific error occurred in the LAC",
|
|
"Try another LNS",
|
|
"Session or tunnel was shutdown due to receipt of an unknown AVP with the M-bit set",
|
|
};
|
|
|
|
const char *authtypes[MAX_AUTHTYPE+1] = {
|
|
"Reserved",
|
|
"Textual username/password exchange",
|
|
"PPP CHAP",
|
|
"PPP PAP",
|
|
"No Authentication",
|
|
"Microsoft CHAP Version 1 (MSCHAPv1)",
|
|
};
|
|
|
|
const char *radius_states[MAX_RADIUS_STATE+1] = {
|
|
"RADIUSNULL",
|
|
"RADIUSCHAP",
|
|
"RADIUSAUTH",
|
|
"RADIUSIPCP",
|
|
"RADIUSSTART",
|
|
"RADIUSSTOP",
|
|
"RADIUSWAIT",
|
|
NULL
|
|
};
|
|
|
|
const char *l2tp_message_types[MAX_L2TP_MESSAGE_TYPE+1] = {
|
|
"reserved",
|
|
"SCCRQ",
|
|
"SCCRP",
|
|
"SCCCN",
|
|
"StopCCN", // 4
|
|
"reserved",
|
|
"HELLO",
|
|
"OCRQ",
|
|
"OCRP",
|
|
"OCCN",
|
|
"ICRQ", // 10
|
|
"ICRP",
|
|
"ICCN",
|
|
"reserved",
|
|
"CDN",
|
|
"WEN", // 15
|
|
"SLI",
|
|
};
|
|
|