X-Git-Url: http://git.sameswireless.fr/l2tpns.git/blobdiff_plain/9c8100d58032e0add88a0935d3135281cce1a5cd..39f5a61eb8fe16979cfa07e2f5c52a36b24e7ebb:/l2tpns.h diff --git a/l2tpns.h b/l2tpns.h index fdd4e5b..4fd351b 100644 --- a/l2tpns.h +++ b/l2tpns.h @@ -1,5 +1,5 @@ // L2TPNS Global Stuff -// $Id: l2tpns.h,v 1.14 2004-08-02 03:38:01 fred_nerk Exp $ +// $Id: l2tpns.h,v 1.21 2004-10-25 15:07:52 bodea Exp $ #ifndef __L2TPNS_H__ #define __L2TPNS_H__ @@ -15,7 +15,7 @@ #include #include -#define VERSION "2.0.1" +#define VERSION "2.0.2" // Limits #define MAXTUNNEL 500 // could be up to 65535 @@ -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 @@ -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; @@ -444,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 @@ -451,7 +456,7 @@ struct config_descriptt char *key; int offset; int size; - enum { INT, STRING, UNSIGNED_LONG, SHORT, BOOL, IP } type; + enum { INT, STRING, UNSIGNED_LONG, SHORT, BOOL, IP, MAC } type; }; // arp.c @@ -498,7 +503,7 @@ clockt backoff(u8 try); void routeset(sessionidt, ipt ip, ipt mask, ipt gw, u8 add); void inittun(void); void initudp(void); -void initdata(void); +void initdata(int optdebug, const char *optconfig); void initippool(); sessionidt sessionbyip(ipt ip); sessionidt sessionbyuser(char *username); @@ -542,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, ...); @@ -587,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);