Update and clean Tomato RAF files
[tomato.git] / release / src / router / nginx / src / core / ngx_murmurhash.c
blobc31e0e03500bde18fc5acb695cc6061b2a681ab6
2 /*
3 * Copyright (C) Austin Appleby
4 */
7 #include <ngx_config.h>
8 #include <ngx_core.h>
11 uint32_t
12 ngx_murmur_hash2(u_char *data, size_t len)
14 uint32_t h, k;
16 h = 0 ^ len;
18 while (len >= 4) {
19 k = data[0];
20 k |= data[1] << 8;
21 k |= data[2] << 16;
22 k |= data[3] << 24;
24 k *= 0x5bd1e995;
25 k ^= k >> 24;
26 k *= 0x5bd1e995;
28 h *= 0x5bd1e995;
29 h ^= k;
31 data += 4;
32 len -= 4;
35 switch (len) {
36 case 3:
37 h ^= data[2] << 16;
38 case 2:
39 h ^= data[1] << 8;
40 case 1:
41 h ^= data[0];
42 h *= 0x5bd1e995;
45 h ^= h >> 13;
46 h *= 0x5bd1e995;
47 h ^= h >> 15;
49 return h;