dennypayne
Jun 22, 2006Employee
TCP::collect question
In the whitepaper regarding Siebel deployments referenced at http://www.f5.com/solutions/deployment/siebel77_bigip9_dg.html there is the following rule:
when CLIENT_ACCEPTED {
TCP::collect 1 }
when CLIENT_DATA {
if { [findstr [TCP::payload] "/siebel" 0 " "] == "/siebel/sccobjmgr_enu" } {
log local0. "Using pool SCCObjMgr_enuConnPool"
pool SCCObjMgr_enuConnPool
}
elseif { [findstr [TCP::payload] "/siebel" 0 " "] == "/siebel/eserviceobjmgr_enu" } {
log local0. "Using pool eServiceObjMgr_enuConnPool"
pool eServiceObjMgr_enuConnPool
}
elseif { [findstr [TCP::payload] "/siebel" 0 " "] == "/siebel/sccobjmgr_enu/rr" } {
log local0. "Using pool SCCObjMgr_enuRRPool"
pool SCCObjMgr_enuRRPool
}
elseif { [findstr [TCP::payload] "/siebel" 0 " "] == "/siebel/eserviceobjmgr_enu/rr" } {
log local0. "Using pool eServiceObjMgr_enuRRPool"
pool eServiceObjMgr_enuRRPool
}
elseif { [findstr [TCP::payload] "/siebel" 0 " "] contains "/!3." } {
log local0. "Using pool siebelapp2ServerPool"
pool siebelapp2ServerPool
}
elseif { [findstr [TCP::payload] "/siebel" 0 " "] contains "/!1." } {
log local0. "Using pool siebeldbServerPool"
pool siebeldbServerPool
}
elseif { [findstr [TCP::payload] "/siebel" 0 " "] contains "/!2." } {
log local0. "Using pool siebelapp1ServerPool"
pool siebelapp1ServerPool
}
else {
log local0. "Rejected request for [findstr [TCP::payload] "/siebel" 0 " "]"
discard }
} ' }
I'm not sure what the units are for on TCP::collect argument but I would assume it to be bytes. With that assumption, how can this rule work if you only collect 1 byte of data when the strings to be compared further down in the rule are larger than this?
Denny