Forum Discussion
monica_74227
Nimbostratus
Oct 24, 2009how about this iRule ?
hey guys,
Could you help me to check this iRule, I don't know if it does work well ? Many thanks!
when CLIENT_ACCEPTED {
if { [ matchclass [IP::client_addr] equals $::mail_internal_class ] } {
pool mail_gateway_pool
}
else {
pool default_gateway_pool
}
}
when LB_SELECTED {
if {[IP::addr [LB::server addr] equals 222.35.42.126] and [IP::addr [IP::client_addr] equals 172.16.1.11] } {
snatpool snat_crt_test2
} elseif {[IP::addr [LB::server addr] equals 221.218.248.155] and [IP::addr [IP::client_addr] equals 172.16.1.11] } {
snatpool snat_uni_test2
} elseif {[IP::addr [LB::server addr] equals 222.35.42.126] and [IP::addr [IP::client_addr] equals 172.16.1.13] } {
snatpool snat_crt_test1
} elseif {[IP::addr [LB::server addr] equals 221.218.248.155] and [IP::addr [IP::client_addr] equals 172.16.1.13] } {
snatpool snat_uni_test1
} elseif {[IP::addr [LB::server addr] equals 222.35.42.126] and [IP::addr [IP::client_addr] equals 172.16.1.20] } {
snatpool snat_crt_test4
} elseif {[IP::addr [LB::server addr] equals 221.218.248.155] and [IP::addr [IP::client_addr] equals 172.16.1.20] } {
snatpool snat_uni_test4
} elseif {[IP::addr [LB::server addr] equals 222.35.42.126] and [IP::addr [IP::client_addr] equals 172.16.1.16] } {
snatpool snat_crt_sms
} elseif {[IP::addr [LB::server addr] equals 221.218.248.155] and [IP::addr [IP::client_addr] equals 172.16.1.16] } {
snatpool snat_uni_sms
} elseif {[IP::addr [LB::server addr] equals 222.35.42.126] and [IP::addr [IP::client_addr] equals 172.16.1.25] } {
snatpool snat_crt_mail
} elseif {[IP::addr [LB::server addr] equals 221.218.248.155] and [IP::addr [IP::client_addr] equals 172.16.1.25] } {
snatpool snat_uni_mail
} elseif {[IP::addr [LB::server addr] equals 222.35.42.126] } {
snatpool snat_crt_pool
} elseif {[IP::addr [LB::server addr] equals 221.218.248.155] } {
snatpool snat_uni_pool
} else {
snat automap
}
}
- hoolio
Cirrostratus
That is a lot of possible evalutions if there aren't any matches or the match for a particular connection is late in the list. You might try combining a few of the checks together to reduce the number of IP checks you're doing.if {[IP::addr [LB::server addr] equals 222.35.42.126] and [IP::addr [IP::client_addr] equals 172.16.1.11] } { snatpool snat_crt_test2 } elseif {[IP::addr [LB::server addr] equals 221.218.248.155] and [IP::addr [IP::client_addr] equals 172.16.1.11] } { snatpool snat_uni_test2 }
if {[IP::addr [IP::client_addr] equals 172.16.1.11] }{ if {[IP::addr [LB::server addr] equals 222.35.42.126] }{ snatpool snat_crt_test2 } elseif {[IP::addr [LB::server addr] equals 221.218.248.155]} { snatpool snat_uni_test2 } }
- monica_74227
Nimbostratus
- hoolio
Cirrostratus
Hi Monica, - monica_74227
Nimbostratus
hey Aaron, - hoolio
Cirrostratus
Hi Monica, - monica_74227
Nimbostratus
Hey Aaron, - hoolio
Cirrostratus
That looks good. One small correct: when using switch you can use the following format:switch [IP::client_addr] { "case 1" { } ...
when CLIENT_ACCEPTED { if { [ matchclass [IP::client_addr] equals $::mail_internal_class ] } { pool mail_gateway_pool } else { pool default_gateway_pool } } when LB_SELECTED { switch [LB::server addr] { 222.35.42.126 { switch [IP::client_addr] { 192.168.3.11 { snatpool snat_crt_test2 } 192.168.3.13 { snatpool snat_crt_test1 } 192.168.3.20 { snatpool snat_crt_test4 } 192.168.3.16 { snatpool snat_crt_sms } 192.168.3.25 { snatpool snat_crt_mail } default { snatpool snat_crt_pool } } } 221.218.248.155 { switch [IP::client_addr] { 192.168.3.11 { snatpool snat_uni_test2 } 192.168.3.13 { snatpool snat_uni_test1 } 192.168.3.20 { snatpool snat_uni_test4 } 192.168.3.16 { snatpool snat_uni_sms } 192.168.3.25 { snatpool snat_uni_mail } default { snatpool snat_uni_pool } } } default { snat automap } } }
- monica_74227
Nimbostratus
okay, many thanks! - Ben_Cuthbert_90Historic F5 AccountDrop the $:: from your mail_internal_class might be a good idea too
- monica_74227
Nimbostratus
hey Aaron,
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