ltm rule command findclass
iRule(1) BIG-IP TMSH Manual iRule(1)
findclass
Searches a data group list for a member that starts with the specified
string and returns the data-group member string.
SYNOPSIS
findclass STRING DATA_GROUP (SEPARATOR)?
DESCRIPTION
Searches a data group list for a member whose key matches the specified
string, and if a match is found, returns the data-group member string.
Note: findclass has been deprecated in v10 in favor of the new class
commands. The class command offers better functionality and performance
than findclass Only the key value of the data group list member (the
portion up to the first separator character, which defaults to space
unless otherwise specified) is compared to the specified string to
determine a match.
If a match is found, and no separator character is specified, the
command returns the entire member value associated with the matched key
(including the key).
If a match is found and a separator is specified, the data group member
is split at the first separator, and the portion of the list member
following the first separator is returned. Note that you should not
use a $:: or :: prefix on the datagroup name when using the class
command (or in any datagroup reference on 9.4.4 or later).
In v9.4.4 - 10, using $::datagroup_name will work but demote the
virtual server from running on all TMMs. For details, see the CMP
compatibility page.
In v11, using $::datagroup_name will result in a runtime error and TCP
reset being sent to the client!
Syntax
findclass
* Searches for a member whose key exactly matches . If a match is
found, it returns the entire data group list member intact,
including the key and the separator.
findclass
* Searches for a member whose key exactly matches . If a match is
found, it returns the portion of the data group list member
following the first instance of .
RETURN VALUE
VALID DURING
ANY_EVENT
EXAMPLES
class dest_pairs_dg {
"8080 proxy"
"8020 snatpool2"
"8081 proxy2"
"8084 proxy3"
"8140 snatpool6"
}
when CLIENT_ACCEPTED {
set my_spool [findclass [TCP::local_port] dest_pairs_dg " "]
if { $my_spool ne "" } {
snatpool $my_spool
}
}
class URIredirects_dg {
"/dir1/dir2/dir3/ http://somehost.somewhere.com/redirect_target.html"
"/dir4/dir5/dir6/ http://someotherhost.nowhere.com/redirect_target.html"
}
when HTTP_REQUEST {
set location [findclass [HTTP::uri] URIredirects_dg " "]
if { $location ne "" } {
HTTP::redirect $location
}
}
class myRedirects_dg {
"host1.domain.com 302 https://securehost.domain.com"
"host2.domain.com 301 https://securehost2.domain.com"
}
when HTTP_REQUEST {
# Check if there is a class entry which starts with the requested URI
set row [findclass [string tolower [HTTP::host]] myRedirects_dg]
# Check if there was a matched row
if { $row ne "" }{
# Send a response using the status and location from the class
HTTP::respond [getfield $row " " 2] Location [getfield $row " " 3][HTTP::uri] Connection Close
# Clear the row variable
unset row
}
}
HINTS
SEE ALSO
CHANGE LOG
@BIGIP-9.0.0 --First introduced the command.
BIG-IP 2017-01-31 iRule(1)