X-Git-Url: http://git.sameswireless.fr/l2tpns.git/blobdiff_plain/bedc556e1e26e4eb6d2c2bf1b63c5e713b6a98cf..c07a2e8553cada19c523ef9aa07581ae8dd6a71f:/l2tpns.h?ds=inline

diff --git a/l2tpns.h b/l2tpns.h
index 9b2eb53..3d0be8f 100644
--- a/l2tpns.h
+++ b/l2tpns.h
@@ -1,5 +1,5 @@
 // L2TPNS Global Stuff
-// $Id: l2tpns.h,v 1.61 2005-03-10 06:18:47 bodea Exp $
+// $Id: l2tpns.h,v 1.65 2005-05-05 10:02:08 bodea Exp $
 
 #ifndef __L2TPNS_H__
 #define __L2TPNS_H__
@@ -53,10 +53,6 @@
 #define LIBDIR		"/usr/lib/l2tpns"
 #endif
 
-#ifndef STATEDIR
-#define STATEDIR	"/var/lib/l2tpns"
-#endif
-
 #ifndef PLUGINDIR
 #define PLUGINDIR	LIBDIR		// Plugins
 #endif
@@ -69,13 +65,8 @@
 #define FLASHDIR	ETCDIR
 #endif
 
-#ifndef DATADIR
-#define DATADIR		STATEDIR
-#endif
-
 #define TUNDEVICE	"/dev/net/tun"
 #define RANDOMDEVICE	"/dev/urandom"			// default, not as secure as /dev/random but non-blocking
-#define STATEFILE	DATADIR "/state.dump"		// State dump file
 #define CONFIGFILE	FLASHDIR "/startup-config"	// Configuration file
 #define CLIUSERS	FLASHDIR "/users"		// CLI Users file
 #define IPPOOLFILE	FLASHDIR "/ip_pool"		// Address pool configuration
@@ -175,7 +166,7 @@ typedef struct
 	tunnelidt tunnel;		// near end tunnel ID
 	in_addr_t ip;			// IP of session set by RADIUS response (host byte order).
 	int ip_pool_index;		// index to IP pool
-	unsigned long unique_id;	// unique session id
+	uint32_t unique_id;		// unique session id
 	uint16_t nr;			// next receive
 	uint16_t ns;			// next send
 	uint32_t magic;			// ppp magic number
@@ -183,7 +174,6 @@ typedef struct
 	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 id;			// session id
 	uint16_t throttle_in;		// upstream throttle rate (kbps)
 	uint16_t throttle_out;		// downstream throttle rate
 	clockt opened;			// when started
@@ -191,14 +181,12 @@ typedef struct
 	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 radius;		// which radius session is being used (0 for not waiting on authentication)
 	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.
-	uint8_t reserved_old_snoop;	// No longer used - remove at some time
+	uint32_t flags;			// Various session flags.
 	uint8_t walled_garden;		// is this session gardened?
-	uint8_t flags1;			// additional flags (currently unused);
 	char random_vector[MAXTEL];
 	int random_vector_length;
 	char user[MAXUSER];		// user (needed in seesion for radius stop messages)
@@ -206,10 +194,8 @@ typedef struct
 	char calling[MAXTEL];		// calling number
 	uint32_t tx_connect_speed;
 	uint32_t rx_connect_speed;
-	uint32_t flags;			// Various session flags.
 	in_addr_t snoop_ip;		// Interception destination IP
 	uint16_t snoop_port;		// Interception destination port
-	uint16_t sid;			// near end session id.
 	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
@@ -238,6 +224,12 @@ typedef struct
 	clockt last_packet_out;
 	uint32_t packets_out;
 	uint32_t packets_dropped;
+
+	// RADIUS session in use
+	uint16_t radius;
+
+	// interim RADIUS
+	time_t last_interim;
 } sessionlocalt;
 
 #define	SESSIONPFC	1	// PFC negotiated flags
@@ -326,8 +318,8 @@ enum
 	RADIUSIPCP,             // sending IPCP to end user
 	RADIUSSTART,            // sending start accounting to RADIUS server
 	RADIUSSTOP,             // sending stop accounting to RADIUS server
+	RADIUSINTERIM,		// sending interim accounting to RADIUS server
 	RADIUSWAIT,		// waiting timeout before available, in case delayed replies
-	RADIUSDEAD,		// errored while talking to radius server.
 };
 
 struct Tstats
@@ -455,6 +447,7 @@ typedef struct
 
 	char		radiussecret[64];
 	int		radius_accounting;
+	int		radius_interim;
 	in_addr_t	radiusserver[MAXRADSERVER];	// radius servers
 	uint16_t	radiusport[MAXRADSERVER];	// radius base ports
 	uint8_t		numradiusservers;		// radius server count