Forum Discussion
iRule Switch Statement default pool
Trying to understand how this irule should behave when it hits the "default' option on the "switch" statement. When the "pool $default_pool" is called what is the behaviour of the pool statements that follow in the "if then" statement? Does it override the previous pool statement?
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
}
else
{
}
}
1 Reply
- rob_carr
Cirrocumulus
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.
Help guide the future of your DevCentral Community!
What tools do you use to collaborate? (1min - anonymous)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