add "throttle=N"

This commit is contained in:
Brendan O'Dea 2005-05-13 05:28:16 +00:00
parent c650fd367a
commit b140841c65

View file

@ -4,7 +4,16 @@
/* set up throttling based on RADIUS reply */ /* set up throttling based on RADIUS reply */
char const *cvs_id = "$Id: autothrottle.c,v 1.13 2004-11-30 07:14:45 bodea Exp $"; /*
* lcp:interface-config#1=service-policy input N
* lcp:interface-config#2=service-policy output N
*
* throttle=N
* throttle=yes (use throttle_rate from config)
* throttle=no
*/
char const *cvs_id = "$Id: autothrottle.c,v 1.14 2005-05-13 05:28:16 bodea Exp $";
int plugin_api_version = PLUGIN_API_VERSION; int plugin_api_version = PLUGIN_API_VERSION;
struct pluginfuncs *p; struct pluginfuncs *p;
@ -69,31 +78,33 @@ int plugin_radius_response(struct param_radius_response *data)
if (!strcmp(data->key, "throttle")) if (!strcmp(data->key, "throttle"))
{ {
char *e;
int rate;
if ((rate = strtol(data->value, &e, 10)) < 0 || *e)
{
rate = -1;
if (!strcmp(data->value, "yes")) if (!strcmp(data->value, "yes"))
{ {
unsigned long *rate = p->getconfig("throttle_speed", UNSIGNED_LONG); unsigned long *ts = p->getconfig("throttle_speed", UNSIGNED_LONG);
if (rate) if (ts)
{ rate = *ts;
if (*rate)
p->log(3, p->get_id_by_session(data->s), data->s->tunnel,
" Throttling user to %dkb/s\n", *rate);
else
p->log(3, 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, 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")) else if (!strcmp(data->value, "no"))
{ rate = 0;
}
if (rate < 0)
return PLUGIN_RET_OK;
if (rate)
p->log(3, p->get_id_by_session(data->s), data->s->tunnel,
" Throttling user to %dkb/s\n", rate);
else
p->log(3, p->get_id_by_session(data->s), data->s->tunnel, p->log(3, p->get_id_by_session(data->s), data->s->tunnel,
" Not throttling user\n"); " Not throttling user\n");
data->s->throttle_in = data->s->throttle_out = 0; data->s->throttle_in = data->s->throttle_out = rate;
}
} }
return PLUGIN_RET_OK; return PLUGIN_RET_OK;