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 2017-01-31 iRule(1)