This is a discussion on Re: 2GB problems within the FreeRADIUS Users forums, part of the Networking and Network Related category; I have just applied the patch yet it still doesn't work, it produces the same result. It is still ...
|
|||||||
| FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
|
|||
|
I have just applied the patch yet it still doesn't work, it produces the
same result. It is still producing a negative value, are there any workarounds? Tas. Alan DeKok wrote: > Tas Dionisakos wrote: > >> I have setup a captive portal with mysql,chilli, and freeradius. >> >> My portal allows users access base on data use (quota), I am using the >> rlm_sqlcounter (from freeradius 1.1.4) to measure the usage on login. >> >> The problem Im having is that if I assign a quota more than 2gb >> freeradius sees the bytes in a negative value for some reason, I have >> attached rad logs. >> > > Try this patch. If it works, please say so on the list. > > Alan DeKok. > -- > http://deployingradius.com - The web site of the book > http://deployingradius.com/blog/ - The blog > > ------------------------------------------------------------------------ > > Index: rlm_sqlcounter.c > ================================================== ================= > RCS file: /source/radiusd/src/modules/rlm_sqlcounter/rlm_sqlcounter.c,v > retrieving revision 1.11.2.3.2.6 > diff -u -r1.11.2.3.2.6 rlm_sqlcounter.c > --- rlm_sqlcounter.c 18 Nov 2006 14:45:19 -0000 1.11.2.3.2.6 > +++ rlm_sqlcounter.c 25 Jan 2007 09:03:40 -0000 > @@ -175,8 +175,8 @@ > last = data->reset[len - 1]; > if (!isalpha((int) last)) > last = 'd'; > -/* num = atoi(data->reset); */ > - DEBUG("rlm_sqlcounter: num=%d, last=%c",num,last); > + num = atoi(data->reset); > + DEBUG("rlm_sqlcounter: num=%u, last=%c",num,last); > } > if (strcmp(data->reset, "hourly") == 0 || last == 'h') { > /* > @@ -392,6 +392,7 @@ > > check_pairs = check_pairs; /* shut the compiler up */ > reply_pairs = reply_pairs; > + request = request; > > /* first, expand %k, %b and %e in query */ > sqlcounter_expand(querystr, MAX_QUERY_LEN, data->query, instance); > @@ -596,7 +597,7 @@ > { > rlm_sqlcounter_t *data = (rlm_sqlcounter_t *) instance; > int ret=RLM_MODULE_NOOP; > - int counter=0; > + uint32_t counter=0; > int res=0; > DICT_ATTR *dattr; > VALUE_PAIR *key_vp, *check_vp; > @@ -659,13 +660,18 @@ > /* Finally, xlat resulting SQL query */ > radius_xlat(querystr, MAX_QUERY_LEN, responsestr, request, sql_escape_func); > > - counter = atoi(querystr); > + counter = strtoul(querystr, NULL, 10); > > > /* > * Check if check item > counter > */ > - res=check_vp->lvalue - counter; > + if (check_vp->lvalue > counter) { > + res = check_vp->lvalue - counter; > + } else { > + res = - ((int) (counter - check_vp->lvalue)); > + } > + > if (res > 0) { > DEBUG2("rlm_sqlcounter: (Check item - counter) is greater than zero"); > /* > @@ -692,7 +698,7 @@ > } > > if ((reply_item = pairfind(request->reply->vps, data->reply_attr)) != NULL) { > - if (reply_item->lvalue > res) > + if (reply_item->lvalue > (uint32_t) res) > reply_item->lvalue = res; > } else { > if ((reply_item = paircreate(data->reply_attr, PW_TYPE_INTEGER)) == NULL) { > @@ -705,7 +711,7 @@ > > ret=RLM_MODULE_OK; > > - DEBUG2("rlm_sqlcounter: Authorized user %s, check_item=%d, counter=%d", > + DEBUG2("rlm_sqlcounter: Authorized user %s, check_item=%d, counter=%u", > key_vp->strvalue,check_vp->lvalue,counter); > DEBUG2("rlm_sqlcounter: Sent Reply-Item for user %s, Type=%s, value=%d", > key_vp->strvalue,data->reply_name,reply_item->lvalue); > @@ -729,7 +735,7 @@ > > ret=RLM_MODULE_REJECT; > > - DEBUG2("rlm_sqlcounter: Rejected user %s, check_item=%d, counter=%d", > + DEBUG2("rlm_sqlcounter: Rejected user %s, check_item=%d, counter=%u", > key_vp->strvalue,check_vp->lvalue,counter); > } > > > ------------------------------------------------------------------------ > > - > List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html -- ************************************* Tas Dionisakos IT Manager St Mary’s College and Newman College The University of Melbourne T: 03 9342 1708 M: 0439 655 565 E: tas@newman.unimelb.edu.au C: (0o (||||)(||||) o0) ************************************* - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html |