Convert an integer to a MAC address in unlang / expr
    James Wood 
    james.wood at purplewifi.com
       
    Wed Aug 26 05:50:41 CEST 2020
    
    
  
Hello,
FR 3.0.19
Quick one - I have some Aruba APs that are sending the BSSID in the
Called-Station-Id attribute instead of the base radio MAC. I need to get
back to the base radio MAC, so Aerohive has provided a mask we can apply to
find out the base radio MAC from this BSSID.
I am doing:
if (&Called-Station-Id =~
/^([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})[^0-9a-f]?([0-9a-f]{2})([^0-9a-f](.+))?$/i)
 {
   update control {
       &Tmp-String-1 := "%{expr: 0x%{1}%{2}%{3}%{4}%{5}%{6} &
0xFFFFFFFFFFC0}"
   }
}
This works and the debug output shows &Tmp-String-1:
EXPAND %{expr: 0x%{1}%{2}%{3}%{4}%{5}%{6} & 0xFFFFFFFFFFC0}
--> 149928134221440
149928134221440 is correct so I need to base convert this integer back to a
real MAC in a format like  88-5B-DD-2E-9E-80 or  885BDD2E9E80 instead of
149928134221440.
Any thoughts?
Thanks,
James
    
    
More information about the Freeradius-Users
mailing list