Ferg_104721
Oct 30, 2011Nimbostratus
Syntext on Irule for NATTING
Hi
I am writing an irule to do some natting (long story i know there are better ways). I know the switch statement has a limitation in the number of functions you can have it do, i.e. SNAT and POOL in one catch. The irule i am implementating is meant to A. if specific IP, SNAT to a specific SNAT pool member. I now have a requirement for a specific IP to SNAT and redirect to another pool. I had syntext errors from F5 so i came up with below, just wanted to confirm this looks logically correct.
Thanks
when CLIENT_ACCEPTED {
set c_nat 0
if {[IP::remote_addr] equals "10.X.X.25" or [IP::remote_addr] equals "10.X.X.26"}{
$c_nat 1
} else {
$c_nat 0
}
if {$c_nat == 0}{
switch -glob [IP::remote_addr] {
10.X.X.5 { snatpool SNATX member X.X.X.1 }
10.X.X.6 { snatpool SNATX member X.X.X.2}
10.X.X.7 { snatpool SNATX member X.X.X.3 }
10.X.X.8 { snatpool SNATX member X.X.X.4 }
10.X.X.9 { snatpool SNATX member X.X.X.5 }
default { snatpool SNAT }
}
} elseif {$c_nat == 1}{
pool poo_2
switch -glob [IP::remote_addr] {
10.X.X.25 { snatpool SNATY member X.X.Y.1 }
10.X.X.26 { snatpool SNATY member X.X.Y.2 }
}
} else {
log local0. "NAT on F5 has failed
}
}