X-Git-Url: http://git.sameswireless.fr/l2tpns.git/blobdiff_plain/a17df3e475822332b4bdaee70992b44042316d32..947365e6fc78f6bd10120884c807336fb070efc4:/l2tpns.h diff --git a/l2tpns.h b/l2tpns.h index 2cf1797..39e862f 100644 --- a/l2tpns.h +++ b/l2tpns.h @@ -1,5 +1,5 @@ // L2TPNS Global Stuff -// $Id: l2tpns.h,v 1.13 2004-07-26 00:20:41 fred_nerk Exp $ +// $Id: l2tpns.h,v 1.18 2004-09-19 23:26:46 fred_nerk Exp $ #ifndef __L2TPNS_H__ #define __L2TPNS_H__ @@ -24,7 +24,7 @@ #define RADIUS_SHIFT 5 #define RADIUS_MASK ((unsigned short)(((unsigned short)~0) >> (16 - RADIUS_SHIFT))) -#define MAXRADIUS ((2 << (RADIUS_SHIFT - 1)) * 255) +#define MAXRADIUS ((unsigned long)(1L << RADIUS_SHIFT) * 255) #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. @@ -40,6 +40,7 @@ #define MAX_LOG_LENGTH 512 // Maximum size of log message #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_TIMEOUT 3000 // 5 minutes in 1/10th seconds to wait for radius to cleanup on shutdown // Constants #include "config.h" @@ -90,7 +91,8 @@ enum ProtocolRej, EchoReq, EchoReply, - DiscardRequest + DiscardRequest, + IdentRequest }; // Types @@ -119,7 +121,7 @@ struct cli_session_actions { #define CLI_SESS_NOTHROTTLE 0x10 struct cli_tunnel_actions { - char action; + char action; }; #define CLI_TUN_KILL 0x01 @@ -147,10 +149,10 @@ typedef struct sessions { sessionidt next; // next session in linked list sessionidt far; // far end session ID - tunnelidt tunnel; // tunnel ID + tunnelidt tunnel; // near end tunnel ID ipt ip; // IP of session set by RADIUS response (host byte order). int ip_pool_index; // index to IP pool - unsigned long sid; // session id for hsddb + unsigned long unique_id; // unique session id u16 nr; // next receive u16 ns; // next send u32 magic; // ppp magic number @@ -170,6 +172,7 @@ typedef struct sessions u16 tbf_in; // filter bucket for throttling in from the user. u16 tbf_out; // filter bucket for throttling out to the user. u8 l2tp_flags; // various bit flags from the ICCN on the l2tp tunnel. + u8 reserved_old_snoop; // No longer used - remove at some time u8 walled_garden; // is this session gardened? u8 flags1; // additional flags (currently unused); char random_vector[MAXTEL]; @@ -182,7 +185,8 @@ typedef struct sessions u32 flags; // Various session flags. ipt snoop_ip; // Interception destination IP u16 snoop_port; // Interception destination port - char reserved[28]; // Space to expand structure without changing HB_VERSION + u16 sid; // near end session id. + char reserved[20]; // Space to expand structure without changing HB_VERSION } sessiont; @@ -195,6 +199,7 @@ typedef struct { #define SESSIONPFC 1 // PFC negotiated flags #define SESSIONACFC 2 // ACFC negotiated flags +#define SESSIONLCPACK 4 // LCP negotiated // 168 bytes per tunnel typedef struct tunnels @@ -379,6 +384,8 @@ struct configt int debug; // debugging level time_t start_time; // time when l2tpns was started char bandwidth[256]; // current bandwidth + char pid_file[256]; // file to write PID to on startup + int wrote_pid; clockt current_time; // 1/10ths of a second since the process started. // means that we can only run a given process // for 13 years without re-starting! @@ -441,6 +448,7 @@ struct configt char bgp_peer[2][64]; u16 bgp_peer_as[2]; #endif + char hostname[256]; // our hostname - set to gethostname() by default }; struct config_descriptt @@ -539,7 +547,7 @@ int sessionsetup(tunnelidt t, sessionidt s); int cluster_send_session(int s); int cluster_send_tunnel(int t); int cluster_send_goodbye(); -void init_cli(char *hostname); +void init_cli(); void cli_do_file(FILE *fh); void cli_do(int sockfd); int cli_arg_help(struct cli_def *cli, int cr_ok, char *entry, ...); @@ -584,7 +592,7 @@ if (count++ < max) { \ extern struct configt *config; extern time_t basetime; // Time when this process started. extern time_t time_now; // Seconds since EPOCH. -extern u32 last_sid; +extern u32 last_id; extern struct Tstats *_statistics; extern ipt my_address; extern int tun_write(u8 *data, int size);