X-Git-Url: http://git.sameswireless.fr/l2tpns.git/blobdiff_plain/af44e3e3bce1280732904d2683c712fd833fb0dd..73834922ffa1b7d4f36393cdfe228e3f1825ed18:/l2tpns.h diff --git a/l2tpns.h b/l2tpns.h index 92e2f25..724a959 100644 --- a/l2tpns.h +++ b/l2tpns.h @@ -1,5 +1,5 @@ // L2TPNS Global Stuff -// $Id: l2tpns.h,v 1.69 2005/05/16 04:51:16 bodea Exp $ +// $Id: l2tpns.h,v 1.75 2005/06/02 11:32:31 bodea Exp $ #ifndef __L2TPNS_H__ #define __L2TPNS_H__ @@ -24,7 +24,7 @@ #define RADIUS_SHIFT 6 #define RADIUS_MASK ((1 << RADIUS_SHIFT) - 1) -#define MAXRADIUS ((1 << (RADIUS_SHIFT + 8)) - 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 @@ -173,10 +173,10 @@ typedef struct uint16_t nr; // next receive uint16_t ns; // next send uint32_t magic; // ppp magic number - uint32_t cin, cout; // byte counts uint32_t pin, pout; // packet counts - uint32_t total_cin; // This counter is never reset while a session is open - uint32_t total_cout; // This counter is never reset while a session is open + uint32_t cin, cout; // byte counts + uint32_t cin_wrap, cout_wrap; // byte counter wrap count (RADIUS accounting giagawords) + uint32_t cin_delta, cout_delta; // byte count changes (for dump_session()) 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) @@ -201,7 +201,7 @@ typedef struct uint8_t walled_garden; // is this session gardened? uint8_t ipv6prefixlen; // IPv6 route prefix length struct in6_addr ipv6route; // Static IPv6 route - char reserved[24]; // Space to expand structure without changing HB_VERSION + char reserved[16]; // Space to expand structure without changing HB_VERSION } sessiont; @@ -217,6 +217,10 @@ sessiont; typedef struct { + // packet counters + uint32_t pin; + uint32_t pout; + // byte counters uint32_t cin; uint32_t cout; @@ -437,7 +441,6 @@ typedef struct char config_file[128]; int reload_config; // flag to re-read config (set by cli) - int cleanup_interval; // interval between regular cleanups (in seconds) int multi_read_count; // amount of packets to read per fd in processing loop char tundevice[10]; // tun device name @@ -458,6 +461,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 +479,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 @@ -493,6 +499,7 @@ typedef struct int cluster_highest_sessionid; 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 int cluster_num_changes; // Number of changes queued. int cluster_hb_interval; // How often to send a heartbeat. @@ -501,6 +508,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; @@ -609,6 +620,7 @@ void route6set(sessionidt s, struct in6_addr ip, int prefixlen, int add); sessionidt sessionbyip(in_addr_t ip); sessionidt sessionbyipv6(struct in6_addr ip); sessionidt sessionbyuser(char *username); +void increment_counter(uint32_t *counter, uint32_t *wrap, uint32_t delta); void random_data(uint8_t *buf, int len); void sessionkill(sessionidt s, char *reason); void sessionshutdown(sessionidt s, char *reason, int result, int error); @@ -674,6 +686,7 @@ if (count++ < max) { \ extern configt *config; extern time_t basetime; // Time when this process started. extern time_t time_now; // Seconds since EPOCH. +extern char main_quit; extern uint32_t last_id; extern struct Tstats *_statistics; extern in_addr_t my_address;