summaryrefslogtreecommitdiffstats
path: root/lib/jhash.c
diff options
context:
space:
mode:
authorwhitespace / reindent <invalid@invalid.invalid>2017-07-17 14:03:14 +0200
committerwhitespace / reindent <invalid@invalid.invalid>2017-07-17 14:04:07 +0200
commitd62a17aedeb0eebdba98238874bb13d62c48dbf9 (patch)
tree3b319b1d61c8b85b4d1f06adf8b844bb8a9b5107 /lib/jhash.c
parent*: add indent control files (diff)
downloadfrr-d62a17aedeb0eebdba98238874bb13d62c48dbf9.tar.xz
frr-d62a17aedeb0eebdba98238874bb13d62c48dbf9.zip
indent.py `git ls-files | pcregrep '\.[ch]$' | pcregrep -v '^(ldpd|babeld|nhrpd)/'` Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Diffstat (limited to 'lib/jhash.c')
-rw-r--r--lib/jhash.c254
1 files changed, 130 insertions, 124 deletions
diff --git a/lib/jhash.c b/lib/jhash.c
index 33589b64e..b943997b1 100644
--- a/lib/jhash.c
+++ b/lib/jhash.c
@@ -24,129 +24,138 @@
#define JHASH_GOLDEN_RATIO 0x9e3779b9
/* NOTE: Arguments are modified. */
-#define __jhash_mix(a, b, c) \
-{ \
- a -= b; a -= c; a ^= (c>>13); \
- b -= c; b -= a; b ^= (a<<8); \
- c -= a; c -= b; c ^= (b>>13); \
- a -= b; a -= c; a ^= (c>>12); \
- b -= c; b -= a; b ^= (a<<16); \
- c -= a; c -= b; c ^= (b>>5); \
- a -= b; a -= c; a ^= (c>>3); \
- b -= c; b -= a; b ^= (a<<10); \
- c -= a; c -= b; c ^= (b>>15); \
-}
+#define __jhash_mix(a, b, c) \
+ { \
+ a -= b; \
+ a -= c; \
+ a ^= (c >> 13); \
+ b -= c; \
+ b -= a; \
+ b ^= (a << 8); \
+ c -= a; \
+ c -= b; \
+ c ^= (b >> 13); \
+ a -= b; \
+ a -= c; \
+ a ^= (c >> 12); \
+ b -= c; \
+ b -= a; \
+ b ^= (a << 16); \
+ c -= a; \
+ c -= b; \
+ c ^= (b >> 5); \
+ a -= b; \
+ a -= c; \
+ a ^= (c >> 3); \
+ b -= c; \
+ b -= a; \
+ b ^= (a << 10); \
+ c -= a; \
+ c -= b; \
+ c ^= (b >> 15); \
+ }
/* The most generic version, hashes an arbitrary sequence
* of bytes. No alignment or length assumptions are made about
* the input key.
*/
-u_int32_t
-jhash (const void *key, u_int32_t length, u_int32_t initval)
+u_int32_t jhash(const void *key, u_int32_t length, u_int32_t initval)
{
- u_int32_t a, b, c, len;
- const u_int8_t *k = key;
-
- len = length;
- a = b = JHASH_GOLDEN_RATIO;
- c = initval;
-
- while (len >= 12)
- {
- a +=
- (k[0] + ((u_int32_t) k[1] << 8) + ((u_int32_t) k[2] << 16) +
- ((u_int32_t) k[3] << 24));
- b +=
- (k[4] + ((u_int32_t) k[5] << 8) + ((u_int32_t) k[6] << 16) +
- ((u_int32_t) k[7] << 24));
- c +=
- (k[8] + ((u_int32_t) k[9] << 8) + ((u_int32_t) k[10] << 16) +
- ((u_int32_t) k[11] << 24));
-
- __jhash_mix (a, b, c);
-
- k += 12;
- len -= 12;
- }
-
- c += length;
- switch (len)
- {
- case 11:
- c += ((u_int32_t) k[10] << 24);
- /* fallthru */
- case 10:
- c += ((u_int32_t) k[9] << 16);
- /* fallthru */
- case 9:
- c += ((u_int32_t) k[8] << 8);
- /* fallthru */
- case 8:
- b += ((u_int32_t) k[7] << 24);
- /* fallthru */
- case 7:
- b += ((u_int32_t) k[6] << 16);
- /* fallthru */
- case 6:
- b += ((u_int32_t) k[5] << 8);
- /* fallthru */
- case 5:
- b += k[4];
- /* fallthru */
- case 4:
- a += ((u_int32_t) k[3] << 24);
- /* fallthru */
- case 3:
- a += ((u_int32_t) k[2] << 16);
- /* fallthru */
- case 2:
- a += ((u_int32_t) k[1] << 8);
- /* fallthru */
- case 1:
- a += k[0];
- };
-
- __jhash_mix (a, b, c);
-
- return c;
+ u_int32_t a, b, c, len;
+ const u_int8_t *k = key;
+
+ len = length;
+ a = b = JHASH_GOLDEN_RATIO;
+ c = initval;
+
+ while (len >= 12) {
+ a += (k[0] + ((u_int32_t)k[1] << 8) + ((u_int32_t)k[2] << 16)
+ + ((u_int32_t)k[3] << 24));
+ b += (k[4] + ((u_int32_t)k[5] << 8) + ((u_int32_t)k[6] << 16)
+ + ((u_int32_t)k[7] << 24));
+ c += (k[8] + ((u_int32_t)k[9] << 8) + ((u_int32_t)k[10] << 16)
+ + ((u_int32_t)k[11] << 24));
+
+ __jhash_mix(a, b, c);
+
+ k += 12;
+ len -= 12;
+ }
+
+ c += length;
+ switch (len) {
+ case 11:
+ c += ((u_int32_t)k[10] << 24);
+ /* fallthru */
+ case 10:
+ c += ((u_int32_t)k[9] << 16);
+ /* fallthru */
+ case 9:
+ c += ((u_int32_t)k[8] << 8);
+ /* fallthru */
+ case 8:
+ b += ((u_int32_t)k[7] << 24);
+ /* fallthru */
+ case 7:
+ b += ((u_int32_t)k[6] << 16);
+ /* fallthru */
+ case 6:
+ b += ((u_int32_t)k[5] << 8);
+ /* fallthru */
+ case 5:
+ b += k[4];
+ /* fallthru */
+ case 4:
+ a += ((u_int32_t)k[3] << 24);
+ /* fallthru */
+ case 3:
+ a += ((u_int32_t)k[2] << 16);
+ /* fallthru */
+ case 2:
+ a += ((u_int32_t)k[1] << 8);
+ /* fallthru */
+ case 1:
+ a += k[0];
+ };
+
+ __jhash_mix(a, b, c);
+
+ return c;
}
/* A special optimized version that handles 1 or more of u_int32_ts.
* The length parameter here is the number of u_int32_ts in the key.
*/
-u_int32_t
-jhash2 (const u_int32_t *k, u_int32_t length, u_int32_t initval)
+u_int32_t jhash2(const u_int32_t *k, u_int32_t length, u_int32_t initval)
{
- u_int32_t a, b, c, len;
-
- a = b = JHASH_GOLDEN_RATIO;
- c = initval;
- len = length;
-
- while (len >= 3)
- {
- a += k[0];
- b += k[1];
- c += k[2];
- __jhash_mix (a, b, c);
- k += 3;
- len -= 3;
- }
-
- c += length * 4;
-
- switch (len)
- {
- case 2:
- b += k[1];
- /* fallthru */
- case 1:
- a += k[0];
- };
-
- __jhash_mix (a, b, c);
-
- return c;
+ u_int32_t a, b, c, len;
+
+ a = b = JHASH_GOLDEN_RATIO;
+ c = initval;
+ len = length;
+
+ while (len >= 3) {
+ a += k[0];
+ b += k[1];
+ c += k[2];
+ __jhash_mix(a, b, c);
+ k += 3;
+ len -= 3;
+ }
+
+ c += length * 4;
+
+ switch (len) {
+ case 2:
+ b += k[1];
+ /* fallthru */
+ case 1:
+ a += k[0];
+ };
+
+ __jhash_mix(a, b, c);
+
+ return c;
}
@@ -156,26 +165,23 @@ jhash2 (const u_int32_t *k, u_int32_t length, u_int32_t initval)
* NOTE: In partilar the "c += length; __jhash_mix(a,b,c);" normally
* done at the end is not done here.
*/
-u_int32_t
-jhash_3words (u_int32_t a, u_int32_t b, u_int32_t c, u_int32_t initval)
+u_int32_t jhash_3words(u_int32_t a, u_int32_t b, u_int32_t c, u_int32_t initval)
{
- a += JHASH_GOLDEN_RATIO;
- b += JHASH_GOLDEN_RATIO;
- c += initval;
+ a += JHASH_GOLDEN_RATIO;
+ b += JHASH_GOLDEN_RATIO;
+ c += initval;
- __jhash_mix (a, b, c);
+ __jhash_mix(a, b, c);
- return c;
+ return c;
}
-u_int32_t
-jhash_2words (u_int32_t a, u_int32_t b, u_int32_t initval)
+u_int32_t jhash_2words(u_int32_t a, u_int32_t b, u_int32_t initval)
{
- return jhash_3words (a, b, 0, initval);
+ return jhash_3words(a, b, 0, initval);
}
-u_int32_t
-jhash_1word (u_int32_t a, u_int32_t initval)
+u_int32_t jhash_1word(u_int32_t a, u_int32_t initval)
{
- return jhash_3words (a, 0, 0, initval);
+ return jhash_3words(a, 0, 0, initval);
}