X-Git-Url: http://git.sameswireless.fr/l2tpns.git/blobdiff_plain/241d15a178ffcf22ca05482f1717981515753bab..16599e2d03a197d93abe61d30bd20abca31a7b3a:/l2tpns.h diff --git a/l2tpns.h b/l2tpns.h index 3ad2cf5..c178a3b 100644 --- a/l2tpns.h +++ b/l2tpns.h @@ -1,5 +1,5 @@ // L2TPNS Global Stuff -// $Id: l2tpns.h,v 1.116 2006/04/27 14:37:28 bodea Exp $ +// $Id: l2tpns.h,v 1.113.2.1 2006/05/26 07:33:52 bodea Exp $ #ifndef __L2TPNS_H__ #define __L2TPNS_H__ @@ -14,15 +14,10 @@ #include #include -#define VERSION "2.2.0" +#define VERSION "2.1.19" // Limits #define MAXTUNNEL 500 // could be up to 65535 -#define MAXBUNDLE 300 // could be up to 65535 -#define MAXBUNDLESES 10 // Maximum number of member links in bundle -#define MAXADDRESS 20 // Maximum length for the Endpoint Discrminiator address -#define MAXFRAGNUM 1500 // Maximum number of Multilink fragment in a bundle -#define MAXFRAGLEN 1000 // Maximum length for Multilink fragment #define MAXSESSION 60000 // could be up to 65535 #define MAXTBFS 6000 // Maximum token bucket filters. Might need up to 2 * session. @@ -48,16 +43,10 @@ #define MAXIPPOOL 131072 // max number of ip addresses in pool #define RINGBUFFER_SIZE 10000 // Number of ringbuffer entries to allocate #define MAX_LOG_LENGTH 512 // Maximum size of log message -#define ECHO_TIMEOUT 10 // Time between last packet sent and LCP ECHO generation +#define ECHO_TIMEOUT 60 // Time between last packet sent and LCP ECHO generation #define IDLE_TIMEOUT 240 // Time between last packet sent and LCP ECHO generation #define BUSY_WAIT_TIME 3000 // 5 minutes in 1/10th seconds to wait for radius to cleanup on shutdown -#define MP_BEGIN 0x80 // This value is used when (b)egin bit is set in MP header -#define MP_END 0x40 // This value is used when (e)nd bit is set in MP header -#define MP_BOTH_BITS 0xC0 // This value is used when both bits (begin and end) are set in MP header - -#define DEFAULT_EPDIS_ADDRESS "L2TPNetServer" // Company name may goes here! - // Constants #ifndef ETCDIR #define ETCDIR "/etc/l2tpns" @@ -197,7 +186,6 @@ enum { // Types typedef uint16_t sessionidt; -typedef uint16_t bundleidt; typedef uint16_t tunnelidt; typedef uint32_t clockt; typedef uint8_t hasht[16]; @@ -243,17 +231,6 @@ typedef struct controls // control message } controlt; -typedef struct { - uint8_t length; // Endpoint Discriminator length - uint8_t addr_class; // Endpoint Discriminator class - uint8_t address[MAXADDRESS]; // Endpoint Discriminator address -} epdist; - -typedef struct { - uint16_t length; // Fragment length - uint8_t data[MAXFRAGLEN]; // Fragment data -} fragmentt; - typedef struct { sessionidt next; // next session in linked list @@ -296,11 +273,6 @@ typedef struct char calling[MAXTEL]; // calling number uint32_t tx_connect_speed; uint32_t rx_connect_speed; - clockt timeout; // Session timeout - uint32_t mrru; // Multilink Max-Receive-Reconstructed-Unit - uint8_t mssf; // Multilink Short Sequence Number Header Format - epdist epdis; // Multilink Endpoint Discriminator - bundleidt bundle; // Multilink Bundle Identifier in_addr_t snoop_ip; // Interception destination IP uint16_t snoop_port; // Interception destination port uint8_t walled_garden; // is this session gardened? @@ -310,33 +282,6 @@ typedef struct } sessiont; -typedef struct -{ - int state; // current state (bundlestate enum) - uint32_t seq_num_t; // Sequence Number (transmission) - uint32_t seq_num_m; // Last received frame sequence number (bearing B bit) - uint32_t offset; // Offset between sequence number and array index - uint8_t pending_frag; // Indicate that there is pending fragments to reassemble - uint8_t num_of_links; // Number of links joint to this bundle - uint32_t online_time; // The time this bundle is online - clockt last_check; // Last time the timeout is checked - uint32_t mrru; // Multilink Max-Receive-Reconstructed-Unit - uint8_t mssf; // Multilink Short Sequence Number Header Format - epdist epdis; // Multilink Endpoint Discriminator - char user[MAXUSER]; // Needed for matching member links - sessionidt current_ses; // Current session to use for sending (used in RR load-balancing) - sessionidt members[MAXBUNDLESES]; // Array for member links sessions -} -bundlet; - -typedef struct -{ - fragmentt fragment[MAXFRAGNUM]; - uint8_t reassembled_frame[MAXETHER]; // The reassembled frame - uint16_t re_frame_len; // The reassembled frame length -} -fragmentationt; - #define AUTHPAP 1 // allow PAP #define AUTHCHAP 2 // allow CHAP @@ -366,15 +311,6 @@ typedef struct // our MRU uint16_t ppp_mru; - // our MRRU - uint16_t mp_mrru; - - // our mssf - uint16_t mp_mssf; - - // our Endpoint Discriminator - in_addr_t mp_epdis; - // DoS prevention clockt last_packet_out; uint32_t packets_out; @@ -471,23 +407,6 @@ enum TUNNELUNDEF, // Undefined }; -enum -{ - BUNDLEFREE, // Not in use - BUNDLEOPEN, // Active bundle - BUNDLEUNDEF, // Undefined -}; - -enum -{ - NULLCLASS = 0, //End Point Discriminator classes - LOCALADDR, - IPADDR, - IEEEMACADDR, - PPPMAGIC, - PSNDN, -}; - enum { RADIUSNULL, // Not in use @@ -642,7 +561,6 @@ typedef struct int radius_authprefer; int allow_duplicate_users; // allow multiple logins with the same username - char guest_user[MAXUSER]; // allow multiple logins to guest account username in_addr_t default_dns1, default_dns2; @@ -654,6 +572,7 @@ typedef struct in_addr_t peer_address; int send_garp; // Set to true to garp for vip address on startup + int target_uid; int dump_speed; char plugins[64][MAXPLUGINS]; char old_plugins[64][MAXPLUGINS]; @@ -664,7 +583,6 @@ typedef struct int lock_pages; // Lock pages into memory. int icmp_rate; // Max number of ICMP unreachable per second to send int max_packets; // DoS prevention: per session limit of packets/0.1s - char epdis_addr[20]; // MP Endpoint Discriminator address in_addr_t cluster_address; // Multicast address of cluster. // Send to this address to have everyone hear. @@ -676,10 +594,8 @@ typedef struct int cluster_seq_number; // Sequence number of the next heartbeat we'll send out // (or the seq number we're next expecting if we're a slave). int cluster_undefined_sessions; // How many sessions we're yet to receive from the master. - int cluster_undefined_bundles; // How many bundles we're yet to receive from the master. int cluster_undefined_tunnels; // How many tunnels we're yet to receive from the master. int cluster_highest_sessionid; - int cluster_highest_bundleid; int cluster_highest_tunnelid; clockt cluster_last_hb; // Last time we saw a heartbeat from the master. int cluster_last_hb_ver; // Heartbeat version last seen from master @@ -689,11 +605,13 @@ typedef struct int cluster_hb_interval; // How often to send a heartbeat. int cluster_hb_timeout; // How many missed heartbeats trigger an election. uint64_t cluster_table_version; // # state changes processed by cluster - int cluster_master_min_adv; // Master advertises routes while the number of up to date - // slaves is less than this value. struct in6_addr ipv6_prefix; // Our IPv6 network pool. + + int cluster_master_min_adv; // Master advertises routes while the number of up to date + // slaves is less than this value. + #ifdef BGP #define BGP_NUM_PEERS 2 uint16_t as_number; @@ -809,17 +727,14 @@ void processlcp(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l); void processipcp(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l); void processipv6cp(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l); void processipin(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l); -void processmpin(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l); -void processmpframe(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l, uint8_t extra); void processipv6in(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l); void processccp(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l); void sendchap(sessionidt s, tunnelidt t); -uint8_t *makeppp(uint8_t *b, int size, uint8_t *p, int l, sessionidt s, tunnelidt t, uint16_t mtype, uint8_t prio, bundleidt bid, uint8_t mp_bits); +uint8_t *makeppp(uint8_t *b, int size, uint8_t *p, int l, sessionidt s, tunnelidt t, uint16_t mtype); void sendlcp(sessionidt s, tunnelidt t); void send_ipin(sessionidt s, uint8_t *buf, int len); void sendccp(sessionidt s, tunnelidt t); void protoreject(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l, uint16_t proto); -int join_bundle(sessionidt s); // radius.c @@ -887,7 +802,6 @@ void host_unreachable(in_addr_t destination, uint16_t id, in_addr_t source, uint extern tunnelt *tunnel; -extern bundlet *bundle; extern sessiont *session; extern sessionlocalt *sess_local; extern ippoolt *ip_address_pool;