Sorry, the values I gave before were on a test db after I tested out the stop queries in the dialup.conf fille manually, so the values were incorrect. Here is the correct info<br><br>mysql> select sum(acctinputoctets + acctoutputoctets ) from radacct where username='scotty';<br>
+------------------------------------------+<br>| sum(acctinputoctets + acctoutputoctets ) |<br>+------------------------------------------+<br>|                               1840263628 | <br>+------------------------------------------+<br>
1 row in set (0.00 sec)<br><br><br><br>mysql> select * from radcheck where username='scotty';<br>+------+----------+--------------------+----+------------+<br>| id   | username | attribute          | op | value      |<br>
+------+----------+--------------------+----+------------+<br>| 5192 | Scotty   | Auth-Type          | := | Perl       | <br>| 5191 | Scotty   | databank           | := | -302340151 | <br>| 5190 | Scotty   | Cleartext-Password | := | DALNIC     | <br>
+------+----------+--------------------+----+------------+<br>3 rows in set (0.00 sec)<br><br><br>original databank value = 262141750<br><br>as you can see the amount of traffic used, far exceeds what was "assigned" originally. I understand the negative value, Its something I can deal with to be a certain amount off but this is really bad. When I ran the queries manually I noticed that without quoting the radcheck.value in the accounting_stop_query_alt querie, it would not update the radcheck.value for databank. but once it is quoted seems, to work. I am going to keep an eye on it to see if it resolves itself. <br>
<br>Im not too clued up on freeradius, so just to clear my mind to only way for a session to end is on a stop request(correct?) and even if interim updates are send, on the stop request it will show all data used in the session (not just just since the last update)<br>
<br><br><br><div class="gmail_quote">On Mon, Feb 7, 2011 at 11:13 AM, Brian Candler <span dir="ltr"><<a href="mailto:B.Candler@pobox.com">B.Candler@pobox.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="im">On Mon, Feb 07, 2011 at 08:48:27AM +0200, Tyller D wrote:<br>
>    if ( $device =~ /^nomadix/i ) {<br>
>    if ($DATABANK != '') {<br>
>                    if ( $DATABANK le 0 ) {<br>
>                                               $RAD_REPLY{'Reply-Message'}<br>
>    = "You have no more Data Left";<br>
>                                            return RLM_MODULE_REJECT;<br>
>                    }else {<br>
>                                            return RLM_MODULE_REJECT;<br>
><br>
>    $RAD_REPLY{'Nomadix-MaxBytesDown'} = "$DATABANK";<br>
>                    }<br>
<br>
</div>That logic returns RLM_MODULE_REJECT in both branches of the if statement,<br>
so I imagine you haven't copy-pasted it correctly. But I think I see what<br>
you're getting at.<br></blockquote><div><br>You are correct, it was a copy error <br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

<div class="im"><br>
>    exctract from radcheck:<br>
>    +------+----------+--------------------+----+----------+<br>
>    | id   | username | attribute          | op | value    |<br>
>    +------+----------+--------------------+----+----------+<br>
>    | 3069 | Joe  | databank           | := | 52428800 |<br>
>    | 3068 | Joe  | Cleartext-Password | := | Joe123   |<br>
>    | 3070 | Joe  | Auth-Type          | := | Perl     |<br>
>    +------+----------+--------------------+----+----------+<br>
<br>
</div>OK, so you're using radcheck as a convenient place to store the user's<br>
remaining quota. I guess that should work.<br>
<div class="im"><br>
>    but it not always exectuting stop request correctly because<br>
>    mysql> select sum(acctinputoctets + acctoutputoctets) from radacct<br>
>    where username='scotty';<br>
>    +-----------------------------------------+<br>
>    | sum(acctinputoctets + acctoutputoctets) |<br>
>    +-----------------------------------------+<br>
>    |                              1840263628 |<br>
>    +-----------------------------------------+<br>
>    mysql> select value from radcheck where username='scotty' and<br>
>    attribute='databank';<br>
>    +------------+<br>
>    | value      |<br>
>    +------------+<br>
>    | -302340151 |<br>
>    +------------+<br>
<br>
</div>Well, those are two different things. The databank value will be whatever<br>
original value you put in databank (which you haven't told us), minus the<br>
bytes in and bytes out. So that would be correct if the initial value was<br>
1537923477<br>
<br>
I have to say this looks like a pretty fragile way of doing accounting,<br>
because you are relying 100% on Stop packets. This means:<br>
<br>
(1) A lost stop packet will not update databank<br>
<br>
(2) If a user stays online solidly for months, they won't get their quota<br>
updated in the database<br>
<br>
Doing accounting based on interim-update packets is more robust. However,<br>
they are cumulative (each interim-update packet shows the *total* used so<br>
far for that session, just as if it were a Stop packet), so you can't just<br>
subtract them from an accumulator.  You need to add together the last values<br>
seen for each session.<br>
<div><div></div><div class="h5">-<br>
List info/subscribe/unsubscribe? See <a href="http://www.freeradius.org/list/users.html" target="_blank">http://www.freeradius.org/list/users.html</a><br>
</div></div></blockquote></div>This is something that I have been wanting to look at but I need to get this atleast to work as it should and I can update the process when I have some time. Thanks for the advice.<br>