projects
/
l2tpns.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Don't continue creating session if no IP addresses are free
[l2tpns.git]
/
l2tpns.h
diff --git
a/l2tpns.h
b/l2tpns.h
index
43187bf
..
7ad7402
100644
(file)
--- a/
l2tpns.h
+++ b/
l2tpns.h
@@
-1,5
+1,5
@@
// L2TPNS Global Stuff
// L2TPNS Global Stuff
-// $Id: l2tpns.h,v 1.
13 2004/07/26 00:20:41
fred_nerk Exp $
+// $Id: l2tpns.h,v 1.
20 2004/10/04 23:34:54
fred_nerk Exp $
#ifndef __L2TPNS_H__
#define __L2TPNS_H__
#ifndef __L2TPNS_H__
#define __L2TPNS_H__
@@
-15,7
+15,7
@@
#include <sys/types.h>
#include <libcli.h>
#include <sys/types.h>
#include <libcli.h>
-#define VERSION "2.0.
1
"
+#define VERSION "2.0.
2
"
// Limits
#define MAXTUNNEL 500 // could be up to 65535
// 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 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.
#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 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"
// Constants
#include "config.h"
@@
-90,7
+91,8
@@
enum
ProtocolRej,
EchoReq,
EchoReply,
ProtocolRej,
EchoReq,
EchoReply,
- DiscardRequest
+ DiscardRequest,
+ IdentRequest
};
// Types
};
// Types
@@
-119,7
+121,7
@@
struct cli_session_actions {
#define CLI_SESS_NOTHROTTLE 0x10
struct cli_tunnel_actions {
#define CLI_SESS_NOTHROTTLE 0x10
struct cli_tunnel_actions {
- char action;
+ char action;
};
#define CLI_TUN_KILL 0x01
};
#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
{
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
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
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.
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];
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
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;
}
sessiont;
@@
-195,6
+199,7
@@
typedef struct {
#define SESSIONPFC 1 // PFC negotiated flags
#define SESSIONACFC 2 // ACFC negotiated flags
#define SESSIONPFC 1 // PFC negotiated flags
#define SESSIONACFC 2 // ACFC negotiated flags
+#define SESSIONLCPACK 4 // LCP negotiated
// 168 bytes per tunnel
typedef struct tunnels
// 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
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!
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 bgp_peer[2][64];
u16 bgp_peer_as[2];
#endif
+ char hostname[256]; // our hostname - set to gethostname() by default
};
struct config_descriptt
};
struct config_descriptt
@@
-448,7
+456,7
@@
struct config_descriptt
char *key;
int offset;
int size;
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
};
// arp.c
@@
-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();
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, ...);
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 struct configt *config;
extern time_t basetime; // Time when this process started.
extern time_t time_now; // Seconds since EPOCH.
-extern u32 last_
s
id;
+extern u32 last_id;
extern struct Tstats *_statistics;
extern ipt my_address;
extern int tun_write(u8 *data, int size);
extern struct Tstats *_statistics;
extern ipt my_address;
extern int tun_write(u8 *data, int size);