// L2TPNS Global Stuff
-// $Id: l2tpns.h,v 1.67 2005-05-07 13:12:25 bodea Exp $
+// $Id: l2tpns.h,v 1.73 2005-05-26 12:17:30 bodea Exp $
#ifndef __L2TPNS_H__
#define __L2TPNS_H__
#define MAXSESSION 60000 // could be up to 65535
#define MAXTBFS 6000 // Maximum token bucket filters. Might need up to 2 * session.
-#define RADIUS_SHIFT 5
-#define RADIUS_MASK ((unsigned short)(((unsigned short)~0) >> (16 - RADIUS_SHIFT)))
-#define MAXRADIUS ((unsigned long)(1L << RADIUS_SHIFT) * 255)
+#define RADIUS_SHIFT 6
+#define RADIUS_MASK ((1 << RADIUS_SHIFT) - 1)
+#define MAXRADIUS (1 << (8 + RADIUS_SHIFT))
#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 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_TIME 3000 // 5 minutes in 1/10th seconds to wait for radius to cleanup on shutdown
-#define DEFAULT_MRU 1458 // maximum packet size to avoid fragmentation when LNS ethernet MTU is 1500
+#define DEFAULT_MRU 1452 // maximum packet size to avoid fragmentation when LNS ethernet MTU is 1500
// Constants
#ifndef ETCDIR
sessionidt next; // next session in linked list
sessionidt far; // far end session ID
tunnelidt tunnel; // near end tunnel ID
+ uint8_t l2tp_flags; // various bit flags from the ICCN on the l2tp tunnel.
+ uint8_t flags; // Various session flags.
in_addr_t ip; // IP of session set by RADIUS response (host byte order).
int ip_pool_index; // index to IP pool
uint32_t unique_id; // unique session id
uint32_t total_cout; // This counter is never reset while a session is open
uint16_t throttle_in; // upstream throttle rate (kbps)
uint16_t throttle_out; // downstream throttle rate
+ uint8_t filter_in; // input filter index (to ip_filters[N-1]; 0 if none)
+ uint8_t filter_out; // output filter index
+ uint16_t mru; // maximum receive unit
clockt opened; // when started
clockt die; // being closed, when to finally free
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 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.
- uint32_t flags; // Various session flags.
- uint8_t walled_garden; // is this session gardened?
- char random_vector[MAXTEL];
int random_vector_length;
+ char random_vector[MAXTEL];
char user[MAXUSER]; // user (needed in seesion for radius stop messages)
char called[MAXTEL]; // called number
char calling[MAXTEL]; // calling number
uint32_t rx_connect_speed;
in_addr_t snoop_ip; // Interception destination IP
uint16_t snoop_port; // Interception destination port
- 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
+ uint8_t walled_garden; // is this session gardened?
uint8_t ipv6prefixlen; // IPv6 route prefix length
- char reserved[1]; // Space to expand structure without changing HB_VERSION
+ struct in6_addr ipv6route; // Static IPv6 route
+ char reserved[24]; // Space to expand structure without changing HB_VERSION
}
sessiont;
char old_plugins[64][MAXPLUGINS];
int next_tbf; // Next HTB id available to use
- int scheduler_fifo; // If the system has multiple CPUs, use FIFO scheduling policy for this process.
+ int scheduler_fifo; // If the system has multiple CPUs, use FIFO scheduling
+ // policy for this process.
int lock_pages; // Lock pages into memory.
int icmp_rate; // Max number of ICMP unreachable per second to send
int max_packets; // DoS prevention: per session limit of packets/0.1s
struct in6_addr ipv6_prefix; // Our IPv6 network pool.
+
+ int cluster_master_min_adv; // Master advertises routes while the number of up to date
+ // slaves is less than this value.
+
#ifdef BGP
#define BGP_NUM_PEERS 2
uint16_t as_number;