Re: 2GB problems

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 ...


Go Back   Usenet Forums > Networking and Network Related > FreeRADIUS Users

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 01-28-2007
Tas Dionisakos
 
Posts: n/a
Default Re: 2GB problems

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
Reply With Quote
Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT +1. The time now is 12:10 AM.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.0.0