Forum Discussion
iRule Switch Statement default pool
You have some syntax problems with your iRule, namely unbalanced closing braces and an empty else statement. I've fixed those below.
when CLIENT_ACCEPTED {
set default_pool prod_default3_pool
set inbound_temp_pool prod_temp3_pool
}
when HTTP_REQUEST {
switch -glob [string tolower [HTTP::uri]] {
"/foo*" {
drop
}
"/bar*" {
pool bar_pool
persist cookie insert "barsession" "1d 00:00:00"
}
default {
pool $default_pool
if { [HTTP::cookie exists "TEMP"] } {
pool $inbound_temp_pool
}
}
}
}
In a switch statement, the 'default' option handles anything that haven't matched one of the configured comparisons. In your rule, that means any request with a URI not beginning with /foo or /bar will fall to the default case and end up assigned to the pool specified by $default_pool...except when the request contains the HTTP cookie "TEMP", in which case, the connection is assigned to the pool specified by $inbound_temp_pool.
As written, your rule is setting the variables default_pool and inbound_temp_pool on each new connection, which is probably not needed. You might want to move that variable assignment out to the RULE_INIT event, or even get rid of the assignment entirely and directly name the pools.
Recent Discussions
Related Content
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com