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						      2020-06-23					     iRule(1)