Grzegorz_Skrzyp
Jan 28, 2014Nimbostratus
Radius attributes based balncing question
Hi Experts, This is my first rule - you know what this mean :) OK - the goal is to have pool member selection based on RADIUS attribute. I have on my box:
when RULE_INIT {
set static::debug_custom_attribute 1
set static::pool_name POOL_RADIUS_auth
set static::pool_odd_member 192.168.36.1
set static::pool_even_member 192.168.36.2
}
when CLIENT_DATA {
set nasip [RADIUS::avp 4 ip4]
set callingId [RADIUS::avp 31 "string"]
set is_odd [expr $callingId & 1]
if { $is_odd } {
Calling-Station-Id is odd
trying to select odd_member of the pool
pool $static::pool_name member $static::pool_odd_member
if { [LB::status node $static::pool_odd_member] eq "down" } {
log local0. "Pool: $static::pool_name member: $static::pool_odd_member -> is down switching to: $static::pool_even_member"
pool $static::pool_name member $static::pool_even_member
}
if { $static::debug_custom_attribute } {
log local0. "Calling-Station-Id: $callingId is odd"
}
} else {
Calling-Station-Id is even
trying to select even_member of the pool
pool $static::pool_name member $static::pool_even_member
if { [LB::status node $static::pool_even_member] eq "down" } {
log local0. "Pool: $static::pool_name member: $static::pool_even_member -> is down switching to: $static::pool_odd_member"
pool $static::pool_name member $static::pool_odd_member
}
if { $static::debug_custom_attribute } {
log local0. "Calling-Station-Id: $callingId is even"
}
}
}
But this is not working as I want. Could someone help me to mak it working? Thanks