Precompiled into byte code high performance Easy for





Pre-compiled into byte code - high performance Easy for humans Hard for computers Hard for humans Easy for computers Slow Fast 110110 100100

https: //devcentral. f 5. com/wiki/i. Rules. Home. Page. ashx https: //devcentral. f 5. com/codeshare/Topic/irules


• • • Physical Data Link Network SSL offload TCP handshake HTTP request (after headers) CLIENTSSL_HANDSHAKE CLIENT_ACCEPTED HTTP_REQUEST Transport Load Decision LB_SELECTED BIG-IP LB_FAILED Session Presentation HTTP TCP handshake response (after headers) SERVER_CONNECTED HTTP_RESPONSE Application
![• • • set hostname [HTTP: : host] log local 0. "Host: $hostname" • • • set hostname [HTTP: : host] log local 0. "Host: $hostname"](http://slidetodoc.com/presentation_image_h2/ac28c6efc878cf360c9388677dd6d871/image-9.jpg)
• • • set hostname [HTTP: : host] log local 0. "Host: $hostname" Variables can be retrieved by appending the $ symbol


# log a message when a specific hostname is encountered # use a variable to store the host name set hostname [HTTP: : host] if { [$hostname contains ”chas"] } { log local 0. "Host: $hostname" } }



A general rule of thumb is: Any time you can do something from within the standard config options, profiles, GUI or CLI – do it there first. For equivalent functionality, an i. Rule is about 20% slower









call



https: //devcentral. f 5. com/articles/v 11 -irules-data-group-updates





# Limit each client IP address to 20 concurrent connections # Check if the subtable has over 20 entries # Add the client IP: port to the client IP-specific subtable # with a max lifetime of 180 seconds # When the client connection is closed, remove the table entry






TMM Node. js Process(es) RPC Handle when HTTP_REQUEST { set RPC_hdl [ILX: : init my_plugin my_extension] set result [ILX: : call $RPC_hdl my_func <arg 1>] } if { $result eq 'something' }{ # Do something } else { # Do something else } LX Plugin ilx. add. Method('my_func', function my. Func. CB(req, res){ typeof req. params()[0] // 'string' <…ADDITIONAL_PROCESSING…> } res. reply('<some_reply>');


• o o • • TCL i. Rules Extensions q Any folder other than “rules”. q Extension names can be anything but name will be part of ILX: : init command. Workspaces & Plugins




- Slides: 43