X-Git-Url: http://git.sameswireless.fr/l2tpns.git/blobdiff_plain/8e607fbac38978491ad0eeb333b5af2c03ad996e..ebfbe027e3fe32af51621bc1988078de1ad47f02:/l2tpns.h diff --git a/l2tpns.h b/l2tpns.h index 5a5b704..423f105 100644 --- a/l2tpns.h +++ b/l2tpns.h @@ -1,5 +1,5 @@ // L2TPNS Global Stuff -// $Id: l2tpns.h,v 1.67 2005-05-07 13:12:25 bodea Exp $ +// $Id: l2tpns.h,v 1.74 2005-06-02 04:04:07 bodea Exp $ #ifndef __L2TPNS_H__ #define __L2TPNS_H__ @@ -22,9 +22,9 @@ #define MAXSESSION 60000 // could be up to 65535 #define MAXTBFS 6000 // Maximum token bucket filters. Might need up to 2 * session. -#define RADIUS_SHIFT 5 -#define RADIUS_MASK ((unsigned short)(((unsigned short)~0) >> (16 - RADIUS_SHIFT))) -#define MAXRADIUS ((unsigned long)(1L << RADIUS_SHIFT) * 255) +#define RADIUS_SHIFT 6 +#define RADIUS_MASK ((1 << RADIUS_SHIFT) - 1) +#define MAXRADIUS (1 << (8 + RADIUS_SHIFT)) #define T_UNDEF (0xffff) // A tunnel ID that won't ever be used. Mark session as undefined. #define T_FREE (0) // A tunnel ID that won't ever be used. Mark session as free. @@ -43,7 +43,7 @@ #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 DEFAULT_MRU 1458 // maximum packet size to avoid fragmentation when LNS ethernet MTU is 1500 +#define DEFAULT_MRU 1452 // maximum packet size to avoid fragmentation when LNS ethernet MTU is 1500 // Constants #ifndef ETCDIR @@ -165,6 +165,8 @@ typedef struct sessionidt next; // next session in linked list sessionidt far; // far end session ID tunnelidt tunnel; // near end tunnel ID + uint8_t l2tp_flags; // various bit flags from the ICCN on the l2tp tunnel. + uint8_t flags; // Various session flags. in_addr_t ip; // IP of session set by RADIUS response (host byte order). int ip_pool_index; // index to IP pool uint32_t unique_id; // unique session id @@ -177,19 +179,18 @@ typedef struct uint32_t total_cout; // This counter is never reset while a session is open uint16_t throttle_in; // upstream throttle rate (kbps) uint16_t throttle_out; // downstream throttle rate + uint8_t filter_in; // input filter index (to ip_filters[N-1]; 0 if none) + uint8_t filter_out; // output filter index + uint16_t mru; // maximum receive unit clockt opened; // when started clockt die; // being closed, when to finally free time_t last_packet; // Last packet from the user (used for idle timeouts) in_addr_t dns1, dns2; // DNS servers routet route[MAXROUTE]; // static routes - uint16_t mru; // maximum receive unit uint16_t tbf_in; // filter bucket for throttling in from the user. uint16_t tbf_out; // filter bucket for throttling out to the user. - uint8_t l2tp_flags; // various bit flags from the ICCN on the l2tp tunnel. - uint32_t flags; // Various session flags. - uint8_t walled_garden; // is this session gardened? - char random_vector[MAXTEL]; int random_vector_length; + char random_vector[MAXTEL]; char user[MAXUSER]; // user (needed in seesion for radius stop messages) char called[MAXTEL]; // called number char calling[MAXTEL]; // calling number @@ -197,11 +198,10 @@ typedef struct uint32_t rx_connect_speed; in_addr_t snoop_ip; // Interception destination IP uint16_t snoop_port; // Interception destination port - uint8_t filter_in; // input filter index (to ip_filters[N-1]; 0 if none) - uint8_t filter_out; // output filter index - struct in6_addr ipv6route; // Static IPv6 route + uint8_t walled_garden; // is this session gardened? uint8_t ipv6prefixlen; // IPv6 route prefix length - char reserved[1]; // Space to expand structure without changing HB_VERSION + struct in6_addr ipv6route; // Static IPv6 route + char reserved[24]; // Space to expand structure without changing HB_VERSION } sessiont; @@ -458,6 +458,8 @@ typedef struct int radius_authtypes; int radius_authprefer; + int allow_duplicate_users; // allow multiple logins with the same username + in_addr_t default_dns1, default_dns2; unsigned long rl_rate; // default throttle rate @@ -474,7 +476,8 @@ typedef struct char old_plugins[64][MAXPLUGINS]; int next_tbf; // Next HTB id available to use - int scheduler_fifo; // If the system has multiple CPUs, use FIFO scheduling policy for this process. + int scheduler_fifo; // If the system has multiple CPUs, use FIFO scheduling + // policy for this process. 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 @@ -501,6 +504,10 @@ typedef struct 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;