Forum Discussion

monica_74227's avatar
monica_74227
Icon for Nimbostratus rankNimbostratus
Oct 24, 2009

how 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

 

}

 

}

13 Replies

  • Can you try testing the iRule I posted above? It corrects a few syntax issues you had where this:

     

     

    switch {IP::addr [LB::server addr]} {

     

     

    should be:

     

     

    switch [LB::server addr] {

     

     

    Thanks,

     

    Aaron
  • hey Aaron,

     

    Thank you for your replay, you are right, I have tested it once again, the following was working well!

     

     

    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 snatpool_crt_rd2 }

     

    "192.168.3.13" { snatpool snatpool_crt_rd1 }

     

    "192.168.3.20" { snatpool snatpool_crt_rd4 }

     

    "192.168.3.16" { snatpool snatpool_crt_sms }

     

    "192.168.3.25" { snatpool snatpool_crt_mail }

     

    "192.168.3.251" { snatpool snatpool_crt_vpn }

     

    "default" { snatpool snatpool_crt_default }

     

    }

     

    }

     

    221.218.248.158 {

     

    switch [IP::client_addr] {

     

    "192.168.3.11" { snatpool snatpool_uni_rd2 }

     

    "192.168.3.13" { snatpool snatpool_uni_rd1 }

     

    "192.168.3.20" { snatpool snatpool_uni_rd4 }

     

    "192.168.3.16" { snatpool snatpool_uni_sms }

     

    "192.168.3.25" { snatpool snatpool_uni_mail }

     

    "192.168.3.251" { snatpool snatpool_uni_vpn }

     

    "default" { snatpool snatpool_uni_default }

     

    }

     

    }

     

    default { snat automap }

     

    }

     

    }