|
Description
|
because of poor paren placement, the OUTBOUND_HASH_V6 macro in sadb.h computes a hash value of:
*x^(*x+1)^(*x+2)^(*x+3)
when
x[0]^x[1]^x[2]^x[3]
was intended, with the result that only a small number of outbound hash buckets are ever used. it appears that roughly half end up in bucket 0, with the rest at assorted other buckets in a decaying exponential distribution. i haven't worked out the math of the precise distribution just yet other than to know, intuitively, that it's really amazingly poor...
see
http://cvs.opensolaris.org/source/xref/usr/src/uts/common/inet/sadb.h#298
for code.
|