X-Git-Url: http://git.sameswireless.fr/l2tpns.git/blobdiff_plain/c34bfa1cfc1b1e10c21defcb045e8dd7cd47d30f..0a29a72f55590ec82f57497072c2abfcc35fd3f6:/autothrottle.c?ds=sidebyside

diff --git a/autothrottle.c b/autothrottle.c
index 65f3ff7..5a1dfe5 100644
--- a/autothrottle.c
+++ b/autothrottle.c
@@ -1,13 +1,12 @@
 #include <string.h>
-#include <malloc.h>
-#include <stdlib.h>
-#include <sys/wait.h>
-#include <sys/types.h>
 #include "l2tpns.h"
 #include "plugin.h"
-#include "control.h"
 
-int __plugin_api_version = 1;
+/* set up throttling based on RADIUS reply */
+
+char const *cvs_id = "$Id: autothrottle.c,v 1.9 2004/11/17 08:23:34 bodea Exp $";
+
+int plugin_api_version = PLUGIN_API_VERSION;
 struct pluginfuncs *p;
 
 #define THROTTLE_KEY "lcp:interface-config"
@@ -65,8 +64,18 @@ int plugin_radius_response(struct param_radius_response *data)
 	{
 		if (strcmp(data->value, "yes") == 0)
 		{
-			p->log(3, 0, p->get_id_by_session(data->s), data->s->tunnel, "         Throttling user\n");
-			data->s->throttle_in = data->s->throttle_out = config->rl_rate;
+		    	unsigned long *rate = p->getconfig("throttle_speed", UNSIGNED_LONG);
+			if (rate)
+			{
+				if (*rate)
+					p->log(3, 0, p->get_id_by_session(data->s), data->s->tunnel, "         Throttling user to %dkb/s\n", *rate);
+				else
+					p->log(3, 0, p->get_id_by_session(data->s), data->s->tunnel, "         Not throttling user (throttle_speed=0)\n");
+
+				data->s->throttle_in = data->s->throttle_out = *rate;
+			}
+			else
+				p->log(1, 0, p->get_id_by_session(data->s), data->s->tunnel, "Not throttling user (can't get throttle_speed)\n");
 		}
 		else if (strcmp(data->value, "no") == 0)
 		{
@@ -85,8 +94,3 @@ int plugin_init(struct pluginfuncs *funcs)
 {
 	return ((p = funcs)) ? 1 : 0;
 }
-
-void plugin_done()
-{
-}
-