Large multiple "if" optimisation
Jonathan Gazeley
Jonathan.Gazeley at bristol.ac.uk
Wed Nov 20 17:57:57 CET 2013
Currently I have this code block in my eduroam outer server which
compares the MAC address of the current authentication attempt to a list
of known MAC addresses of test clients which are then used for debugging
without having to disrupt service by stopping the daemon and running
radiusd -X.
if( (UOB-Stripped-MAC == "20:10:7a:1a:89:1d") || (UOB-Stripped-MAC ==
"bc:cf:cc:a1:a4:10") || (UOB-Stripped-MAC == "e4:ce:8f:49:8c:ae") ||
(UOB-Stripped-MAC == "a0:ed:cd:5c:66:70") || (UOB-Stripped-MAC ==
"94:44:52:e7:17:78") || (UOB-Stripped-MAC == "8c:3a:e3:14:eb:10") ||
(UOB-Stripped-MAC == "bc:c6:db:c7:31:30") ) {
# Enable debug messages
update control {
UOB-Debug = "%{debug:9}"
}
}
It's getting a bit unwieldy to manage this block, so I'm looking for a
better way of writing it. However it must be fast, as every eduroam user
hits this, i.e. database lookups are unsatisfactory. Flat files might be
ok depending on how they cached.
Any suggestions for neatening this up a bit, without compromising
performance?
Thanks,
Jonathan
More information about the Freeradius-Users
mailing list