X-Git-Url: http://git.sameswireless.fr/l2tpns.git/blobdiff_plain/442b04cea2db5efc9636bb6a7d5b7166dee8fb3c..7fd68b1daeab9a2a1a3ee8f0652c25fc37bf3549:/l2tpns.h diff --git a/l2tpns.h b/l2tpns.h index 953c058..6314ae7 100644 --- a/l2tpns.h +++ b/l2tpns.h @@ -49,7 +49,7 @@ #define RINGBUFFER_SIZE 10000 // Number of ringbuffer entries to allocate #define MAX_LOG_LENGTH 512 // Maximum size of log message #define ECHO_TIMEOUT 10 // Time between last packet sent and LCP ECHO generation -#define IDLE_TIMEOUT 240 // Time between last packet seen and session shutdown +#define IDLE_ECHO_TIMEOUT 240 // Time between last packet seen and session shutdown #define BUSY_WAIT_TIME 3000 // 5 minutes in 1/10th seconds to wait for radius to cleanup on shutdown #define MP_BEGIN 0x80 // This value is used when (b)egin bit is set in MP header @@ -261,6 +261,7 @@ typedef struct { tunnelidt tid; // Fragment originating tunnel uint8_t flags; // MP frame flags uint32_t seq; // fragment seq num + uint32_t jitteravg; uint16_t length; // Fragment length uint8_t data[MAXFRAGLEN]; // Fragment data } fragmentt; @@ -408,6 +409,11 @@ typedef struct // Last Multilink frame sequence number received uint32_t last_seq; + + // jitter average of the session + uint32_t jitteravg; + // time in milliseconds of the last fragment. + uint64_t prev_time; } sessionlocalt; // session flags @@ -740,6 +746,10 @@ typedef struct in_addr_t nexthop_address; struct in6_addr nexthop6_address; #endif + + int echo_timeout; // Time between last packet sent and LCP ECHO generation + int idle_echo_timeout; // Time between last packet seen and + // Drop sessions who have not responded within IDLE_ECHO_TIMEOUT seconds } configt; enum config_typet { INT, STRING, UNSIGNED_LONG, SHORT, BOOL, IPv4, IPv6 }; @@ -887,6 +897,7 @@ void adjust_tcp_mss(sessionidt s, tunnelidt t, uint8_t *buf, int len, uint8_t *t void sendipcp(sessionidt s, tunnelidt t); void sendipv6cp(sessionidt s, tunnelidt t); void processudp(uint8_t *buf, int len, struct sockaddr_in *addr); +void processipout(uint8_t *buf, int len); void snoop_send_packet(uint8_t *packet, uint16_t size, in_addr_t destination, uint16_t port); int find_filter(char const *name, size_t len); int ip_filter(uint8_t *buf, int len, uint8_t filter);