MEDIUM: backend: add the crc32 hash algorithm for load balancing
Since we have it available, let's make it usable for load balancing, it comes at no cost except 3 lines of documentation.
This commit is contained in:
parent
8059977d3e
commit
324f07f6dd
@ -2794,6 +2794,11 @@ hash-type <method> <function> <modifier>
|
||||
data such as a source IP address or a visitor identifier in a URL
|
||||
parameter.
|
||||
|
||||
crc32 this is the most common CRC32 implementation as used in Ethernet,
|
||||
gzip, PNG, etc. It is slower than the other ones but may provide
|
||||
a better distribution or less predictable results especially when
|
||||
used on strings.
|
||||
|
||||
<modifier> indicates an optional method applied after hashing the key :
|
||||
|
||||
avalanche This directive indicates that the result from the hash
|
||||
|
@ -115,6 +115,7 @@
|
||||
#define BE_LB_HFCN_SDBM 0x000000 /* sdbm hash */
|
||||
#define BE_LB_HFCN_DJB2 0x400000 /* djb2 hash */
|
||||
#define BE_LB_HFCN_WT6 0x800000 /* wt6 hash */
|
||||
#define BE_LB_HFCN_CRC32 0xC00000 /* crc32 hash */
|
||||
#define BE_LB_HASH_FUNC 0xC00000 /* get/clear hash function */
|
||||
|
||||
|
||||
|
@ -75,6 +75,9 @@ static unsigned int gen_hash(const struct proxy* px, const char* key, unsigned l
|
||||
case BE_LB_HFCN_WT6:
|
||||
hash = hash_wt6(key, len);
|
||||
break;
|
||||
case BE_LB_HFCN_CRC32:
|
||||
hash = hash_crc32(key, len);
|
||||
break;
|
||||
case BE_LB_HFCN_SDBM:
|
||||
/* this is the default hash function */
|
||||
default:
|
||||
|
@ -4835,11 +4835,15 @@ stats_error_parsing:
|
||||
}
|
||||
else if (!strcmp(args[2], "djb2")) {
|
||||
curproxy->lbprm.algo |= BE_LB_HFCN_DJB2;
|
||||
} else if (!strcmp(args[2], "wt6")) {
|
||||
}
|
||||
else if (!strcmp(args[2], "wt6")) {
|
||||
curproxy->lbprm.algo |= BE_LB_HFCN_WT6;
|
||||
}
|
||||
else if (!strcmp(args[2], "crc32")) {
|
||||
curproxy->lbprm.algo |= BE_LB_HFCN_CRC32;
|
||||
}
|
||||
else {
|
||||
Alert("parsing [%s:%d] : '%s' only supports 'sdbm', 'djb2' or 'wt6' hash functions.\n", file, linenum, args[0]);
|
||||
Alert("parsing [%s:%d] : '%s' only supports 'sdbm', 'djb2', 'crc32', or 'wt6' hash functions.\n", file, linenum, args[0]);
|
||||
err_code |= ERR_ALERT | ERR_FATAL;
|
||||
goto out;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user