// L2TPNS Global Stuff
-// $Id: l2tpns.h,v 1.65 2005/05/05 10:02:08 bodea Exp $
+// $Id: l2tpns.h,v 1.68 2005/05/08 07:13:56 bodea Exp $
#ifndef __L2TPNS_H__
#define __L2TPNS_H__
#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
// 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;
void processccp(tunnelidt t, sessionidt s, uint8_t *p, uint16_t l);
void sendchap(tunnelidt t, sessionidt s);
uint8_t *makeppp(uint8_t *b, int size, uint8_t *p, int l, tunnelidt t, sessionidt s, uint16_t mtype);
-void initlcp(tunnelidt t, sessionidt s);
+void sendlcp(tunnelidt t, sessionidt s, int authtype);
void send_ipin(sessionidt s, uint8_t *buf, int len);