ottleydamian
Mar 03, 2019Cirrus
TCP iRule to find HTTP headers
I have a situation where I have an iRule that works once the user is using the HTTP protocol. Unfortunately, the same VIP handles a proprietary protocol from Oracle called T3. To use the iRule I need an HTTP profile but that will break the T3 users.
- My idea is the parse the TCP and determine if the request is HTTP
- If it is HTTP, add an HTTP profile and my iRule to the VIP dynamically
I would like some help. I know the a TCP header is 20 bytes and HTTP starts with the method GET or POST. So I am guessing that I have to 'scan' the tcp payload for a GET (for example) and if it starts with that, apply the http profile and then the iRule.
Thanks for your help and/or guidance in advance!
I think you could limit the iRule to this:
when CLIENT_ACCEPTED { HTTP::disable TCP::collect 4 } when CLIENT_DATA { if { [TCP::payload 4] contains "GET" } { HTTP::enable } TCP::release } when HTTP_REQUEST { my irule } when HTTP_RESPONSE { my irule }
I'll expect the HTTP_REQUEST and HTTP_RESPONSE events will not be triggered when the HTTP profile is disabled.