Using unlang for Calling-Station-Id

Alexander Clouter alex at
Mon Sep 14 12:54:30 CEST 2009

Kanwar Ranbir Sandhu <m3freak at> wrote:
> On Sat, 2009-09-12 at 23:28 +0100, Alexander Clouter wrote:
>> If you also make this a policy, then you can make your 
>> configuration simpler.
> I'm not sure what you mean here.  Please explain.
In a snippet from my configuration I have:
authorize {




The '|ed)_station_id' bit lurks in 
/etc/freeradius/policy.conf and looks like:
        rewrite.calling_station_id {
                if("%{request:Calling-Station-Id}" =~ /^([0-9a-f]{2}).?([0-9a-f]{2}).?([0-9a-f]{2}).?([0-9a-f]{2}).?([0-9a-f]{2}).?([0-9a-f]{2})$/i){
                        update request {
                                Calling-Station-Id := "%{1}-%{2}-%{3}-%{4}-%{5}-%{6}"
                else {  

This means you do not need to clutter your virtual server chunks with 
huge bits of regex :)

>> As this is just for logging, you probably just want the amendment in 
>> post-auth only, just before you call 'sql' or whatever.  
> So, I don't need it in preacct?  I mean, it's working as is.  Would it
> be better to put in post-auth versus preacct?
Well, depends, if you want the original to be around then I would leave 
Calling-Station-Id alone, I like to only amend the original attribute 
values if they are mangled in some strange manner and need fixing up to 
be more kosher (for example '-' in MAC addresses rather than ':').

If this is for just logging you might want to 'update control' and 
tinker with 'Tmp-String-0' and then when it comes to your SQL logging 
you can use that in place of Calling-Station-Id.

Of course it all depends on your needs, from your description my gut 
feeling would be to leave Calling-Station-Id alone and create your own 
and add some custom attibutes to /etc/freeradius/dictionary.


Alexander Clouter
.sigmonster says: Being ugly isn't illegal.  Yet.

More information about the Freeradius-Users mailing list