// L2TPNS Global Stuff
-// $Id: l2tpns.h,v 1.62 2005-04-18 04:18:15 bodea Exp $
+// $Id: l2tpns.h,v 1.65 2005-05-05 10:02:08 bodea Exp $
#ifndef __L2TPNS_H__
#define __L2TPNS_H__
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
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
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)
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
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
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
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