ltm rule command crc32ΒΆ

iRule(1)						BIG-IP TMSH Manual						  iRule(1)

crc32
       Returns the crc32 checksum for the specified string.

SYNOPSIS
       crc32 ANY_CHARS

DESCRIPTION
       The crc32 command calculates a 32-bit cyclic redundancy check value (CRC) for the bytes in a string using the well-known
       CRC-32 (Ethernet CRC) scheme. The polynomial is 0x04c11db7, the CRC register is initialized with 0xffffffff, the input
       bytes are taken msb-first, and the result is the complement of the final register value reflected.  (crc32 implements the
       scheme called "CRC-32" in this Catalogue of Parametrised CRC Algorithms.)  crc32 returns a number, or the empty string if
       an error occurs. CRC values with their most significant bits set are returned as negative numbers (due to sign-bit
       extension upon conversion to 64-bit iRules integers). To obtain a correct unsigned 32-bit CRC in every case apply a 32-bit
       mask like this: set CRC [expr {0xffffffff & [crc32 $msg]}].  (To display a CRC value, use something like log local0.info
       [format "CRC = 0x%08x" [expr {0xffffffff & [crc32 $msg]}]] .)

       Syntax

       crc32 

	    * Returns the crc32 check value for the specified string, or if an
	      error occurs, an empty string.

RETURN VALUE
VALID DURING
       ANY_EVENT, GLOBAL_GTM, UTILITY_COMMAND

EXAMPLES
	when HTTP_REQUEST {
	   # Create a hash value for the host based on crc32
	   # This could also be based on md5 or any other implementation
	   # of a hash like djb or something.
	set key [crc32 [HTTP::host]]

	   # Modulo the hash value by 1 - odd goes to one member, even another
	set key [expr {$key & 1}]

	   # Route the request to the pool member based on the modulus
	   # of the hash value.
	switch $key {
	0 { pool my_pool member 1.2.3.4:80 }
	1 { pool my_pool member 5.6.7.8:80 }
	   }
	}

HINTS
SEE ALSO
       fasthash

CHANGE LOG
       @BIGIP-9.0.0 --First introduced the command.

BIG-IP							    2022-04-12							  iRule(1)