Forum Discussion
monica_74227
Nimbostratus
Jun 23, 2009intelligent SNAT generate errors
Dear all,
I write a iRule as the following:
when CLIENT_ACCEPTED {
if { [matchclass [IP::local_addr] equals $::Uni_class]} {
pool Uni_first_pool
}
elseif { [matchclass [IP::local_addr] equals $::CRT_class]} {
pool CRT_first_pool
}
else {
pool Default_gateway_pool
}
}
when LB_SELECTED {
if {[IP::addr [LB::server addr] equals 11.10.10.254] and [IP::addr [IP::client_addr] equals 10.6.3.4] } {
snat snat_uni_pool
}
elseif {[IP::addr [LB::server addr] equals 11.10.10.254] and [IP::addr [IP::client_addr] equals 10.6.3.5] } {
snat snat_uni_pool
}
elseif {[IP::addr [LB::server addr] equals 10.10.10.254] and [IP::addr [IP::client_addr] equals 10.6.3.4] } {
snat snat_crt_pool
}
elseif {[IP::addr [LB::server addr] equals 10.10.10.254] and [IP::addr [IP::client_addr] equals 10.6.3.5] } {
snat snat_crt_pool
}
else {
snat automap
}
}
however, that genertat some errors when I update with Webgui, just like the picture, I don't know what is wrong, thank you for you help!
4 Replies
- hoolio
Cirrostratus
Hi,
The error indicates you were using 'snat pool snat_crt_pool'. The command to specify a SNAT pool is snatpool (without a space).
Can you try this if you want to use SNAT pools and automap?when CLIENT_ACCEPTED { if { [matchclass [IP::local_addr] equals $::Uni_class]} { pool Uni_first_pool } elseif { [matchclass [IP::local_addr] equals $::CRT_class]} { pool CRT_first_pool } else { pool Default_gateway_pool } } when LB_SELECTED { if {([IP::addr [IP::client_addr] equals 10.6.3.4] or [IP::addr [IP::client_addr] equals 10.6.3.5]) and \ [IP::addr [LB::server addr] equals 11.10.10.254]}{ snatpool snat_uni_pool } elseif {([IP::addr [IP::client_addr] equals 10.6.3.4] or [IP::addr [IP::client_addr] equals 10.6.3.5]) and \ [IP::addr [LB::server addr] equals 10.10.10.254]}{ snatpool snat_crt_pool } else { snat automap } }
Aaron - monica_74227
Nimbostratus
thank you very much Aaron, I will try that! - monica_74227
Nimbostratus
hey Aaron,
I have tried that iRule, It should now include the "\", the following is okay :
when CLIENT_ACCEPTED {
if { [matchclass [IP::local_addr] equals $::Uni_class]} {
pool Uni_first_pool
}
elseif { [matchclass [IP::local_addr] equals $::CRT_class]} {
pool CRT_first_pool
}
else {
pool Default_gateway_pool
}
}
when LB_SELECTED {
if {([IP::addr [IP::client_addr] equals 12.10.10.1] or [IP::addr [IP::client_addr] equals 12.10.10.2]) and [IP::addr [LB::server addr] equals 10.10.10.254] } {
snatpool snat_uni_pool
}
elseif {([IP::addr [IP::client_addr] equals 12.10.10.1] or [IP::addr [IP::client_addr] equals 12.10.10.2]) and [IP::addr [LB::server addr] equals 11.10.10.254] } {
snatpool snat_crt_pool
}
else {
snat automap
}
} - hoolio
Cirrostratus
The backslash just escapes the newline character and allows you to break up long lines. Functionally, you can remove it with no difference.
Aaron
Help guide the future of your DevCentral Community!
What tools do you use to collaborate? (1min - anonymous)Recent Discussions
Related Content
DevCentral Quicklinks
* 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
Discover DevCentral Connects
