Per-user upload and download throttle rates - Yuri

Make autothrottle.so understand cisco lcp:interface-config - Yuri
Show filter stats in show session - Yuri
This commit is contained in:
fred_nerk 2004-08-26 06:22:37 +00:00
parent 32febcb0c7
commit 90ebb19a3d
6 changed files with 198 additions and 97 deletions

37
tbf.c
View file

@ -1,6 +1,6 @@
// L2TPNS: token bucket filters
char const *cvs_id_tbf = "$Id: tbf.c,v 1.4 2004/07/08 16:54:35 bodea Exp $";
char const *cvs_id_tbf = "$Id: tbf.c,v 1.5 2004/08/26 06:22:37 fred_nerk Exp $";
#define _GNU_SOURCE
@ -12,40 +12,7 @@ char const *cvs_id_tbf = "$Id: tbf.c,v 1.4 2004/07/08 16:54:35 bodea Exp $";
#include "util.h"
#include "tbf.h"
// Need a time interval.
#define TBF_MAX_QUEUE 2 // Maximum of 2 queued packet per
#define TBF_MAX_SIZE 3000 // Maxiumum queued packet size is 2048.
#define TBF_MAX_CREDIT 6000 // Maximum 6000 bytes of credit.
#define TBF_RATE 360 // 360 bytes per 1/10th of a second.
typedef struct {
int credit;
int lasttime;
int queued;
int oldest; // Position of packet in the ring buffer.
sessionidt sid; // associated session ID.
int max_credit; // Maximum amount of credit available (burst size).
int rate; // How many bytes of credit per second we get? (sustained rate)
void (*send)(sessionidt s, u8 *, int); // Routine to actually send out the data.
int prev; // Timer chain position.
int next; // Timer chain position.
u32 b_queued; // Total bytes sent through this TBF
u32 b_sent; // Total bytes sucessfully made it to the network.
u32 p_queued; // ditto packets.
u32 p_sent; // ditto packets.
u32 b_dropped; // Total bytes dropped.
u32 p_dropped; // Total packets dropped.
u32 p_delayed; // Total packets not sent immediately.
int sizes[TBF_MAX_QUEUE];
char packets[TBF_MAX_QUEUE][TBF_MAX_SIZE];
} tbft;
static tbft *filter_list = NULL;
tbft *filter_list = NULL;
static int filter_list_size = 0;
static int timer_chain = -1; // Head of timer chain.