No Takers???
Here's an optimised version that uses no variables (so I can enter the optimisation competition one day) :
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
when CLIENT_ACCEPTED {
if { [UDP::payload length] > 4 } {
if {![catch [RADIUS::code]] equals 4 } {
if {[expr 0x[binary scan [RADIUS::avp 40] H*]] == 1} {
if { [expr {[expr 0x[binary format c4 [split [binary scan [RADIUS::avp 8] a*] .]] H8] % 2 }] == 0 } {
pool pool_radius member 1.1.1.1 1813
} else {
pool pool_radius member 1.1.1.2 1813
}
}
}
}
}
when LB_SELECTED {
if { [UDP::payload length] > 4 } {
if {![catch [RADIUS::code]] equals 4 } {
if {[expr 0x[binary scan [RADIUS::avp 40] H*]] == 2} {
persist delete source "[binary scan [RADIUS::avp 8] a*] any virtual"
}
}
}
}
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Regards
Jan