So i've been working with this and I can't seem to get information out of the persistence table. If I try and do a lookup during CLIENT_ACCEPTED it throws me a "Prerequisite operation not in progress" if I try and do it during LB_SELECTED I get nothing returned on my lookup. I can perform a lookup right after I set the persistence in LB_SELECTED, so i'm not sure why I can't do it again when the odd port connection comes in.
when CLIENT_ACCEPTED {
switch -glob [TCP::local_port] {
49* { if {[TCP::local_port] > 49151 && 49250 > [TCP::local_port]} {
set lport [TCP::local_port]
if { ! [expr {$lport & 1}]} {
pool pool_$lport
} else {
set evenport [ expr $lport -1]
set current [LB::server addr]
set remaddr [IP::client_addr]
set ourpool "pool_$evenport"
set hoohaa [persist lookup source_addr [IP::client_addr]]
log local0. "current: $current evenport: $evenport pers entry: $hoohaa remote_addr: $remaddr"
}
}
}
default { discard }
}
}
when LB_SELECTED {
if {[TCP::local_port] > 49151 && 49250 > [TCP::local_port]} {
set lport [TCP::local_port]
if { ! [expr {$lport &1}]} {
even
set remaddr [IP::client_addr]
persist add source_addr [IP::client_addr] 300
set output [persist lookup source_addr [IP::client_addr] node ]
log local0. "pers lookup: $output remip: [IP::remote_addr]"
} else {
odd
set evenport [ expr $lport - 1 ]
set current [LB::server addr]
set remaddr [IP::client_addr]
set ourpool "pool_$evenport"
log local0. "pool: $ourpool remaddr: $remaddr"
set hoohaa [persist lookup source_addr [IP::client_addr] ]
log local0. "current: $current evenport: $evenport pers entry: $hoohaa remote_addr: $remaddr"
if {[$entry != $current]} {
LB::reselect pool pool_$lport
}
}
}
}