X-Git-Url: http://git.sameswireless.fr/l2tpns.git/blobdiff_plain/1642e0dbaae2eaaed894d01ef94d0fe2520c6de2..e3f281ce02023aed0fa1a0cb14b82e63d3b718a0:/l2tpns.h?ds=sidebyside diff --git a/l2tpns.h b/l2tpns.h index c42b6b7..77936b3 100644 --- a/l2tpns.h +++ b/l2tpns.h @@ -1,5 +1,5 @@ // 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__ @@ -43,6 +43,7 @@ #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 @@ -164,6 +165,8 @@ typedef struct 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 @@ -176,19 +179,18 @@ typedef struct 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 @@ -196,11 +198,10 @@ typedef struct 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; @@ -588,7 +589,7 @@ void processipv6in(tunnelidt t, sessionidt s, uint8_t *p, uint16_t l); 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);