Is it possible to automate a Disconnect-Request based on exceeded Monthly-Usage?

Alan DeKok aland at
Wed Sep 11 13:14:26 CEST 2019

On Sep 11, 2019, at 3:05 AM, Houman <houmie at> wrote:
> Sorry, I should have explained that I'm using StrongSwan as my NAS, which
> is supporting CoA :

  That's nice, but sort of assumed.  If the NAS doesn't support CoA, then there's no point in sending it CoA packets.

> I have found the home server example in sites-available/originate-coa. I
> think I have to set it up under /etc/freeradius/3.0/proxy.cnf.

  I'm not sure what that means.  Set "it" up?  Set *what* up?

  If you read the "originate-coa" virtual server, you will see what you have to set up.  So did you do that?

> Alan, I'm a bit lost here when you said:
>> That's what "originate-com" is for.
>> The documentation isn't perfect, but it should be good.  When you receive
> an accounting >request packet, check for over the limit, and if so, send a
> Disconnect-Request packet.
> I think you mean I have to do that
> in /etc/freeradius/3.0/sites-enabled/default under the section:
> update request { ... }

  In the "preacct" or "accounting" sections.

> In what programming language do I have to do that? I think it has to be in
> SQL right?

  If your users are in SQL, you check their usage via SQL queries.

> I already do this to capture the monthly usage upon each request:
> update request {
>                Monthly-Usage = "%{sql:SELECT
> COALESCE((SUM(`acctoutputoctets`)), 0) FROM radacct WHERE
> `username`='%{User-Name}' AND Month(acctupdatetime)=(Month(NOW())) AND
> Year(acctupdatetime)=Year(NOW())}"
>        }


> Now I need to add another line underneath to compare the Monthly-Usage
> against a value and then send the Disconnect-Request if it's greater than
> the value.  How Do I raise the Disconnect-Request?

  The "originate-coa" virtual server explains that in detail.  Read the comments at the top of that file.  See also "man unlang".

  There *is* extensive documentation on this, that I already pointed you to.  If you have questions about the documentation, ask.  But asking a question *answered in the documentation*, then it looks like you haven't read it.

  Alan DeKok.

More information about the Freeradius-Users mailing list