X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fhash.c;h=61e17b2786416a87535a7739278454d761ba83ba;hb=05edc34ca119606f349c6557f2fbe682861ab3d8;hp=63b4784fc0add651896913fed79783386c46e96c;hpb=5f55c39b21e69025045437ffbd3bb98fe6ce2e89;p=sliver-openvswitch.git diff --git a/lib/hash.c b/lib/hash.c index 63b4784fc..61e17b278 100644 --- a/lib/hash.c +++ b/lib/hash.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2009 Nicira Networks. + * Copyright (c) 2008, 2009, 2010 Nicira Networks. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -52,21 +52,24 @@ hash_words(const uint32_t *p, size_t n, uint32_t basis) return c; } -/* Returns the hash of the pair of aligned 32-bit words at 'p', starting from - * 'basis'. */ +/* Returns the hash of 'a', 'b', and 'c'. */ uint32_t -hash_2words(const uint32_t *p, uint32_t basis) +hash_3words(uint32_t a, uint32_t b, uint32_t c) { - uint32_t a, b, c; - - a = b = c = 0xdeadbeef + (2 << 2) + basis; - b += p[1]; - a += p[0]; + a += 0xdeadbeef; + b += 0xdeadbeef; + c += 0xdeadbeef; HASH_FINAL(a, b, c); - return c; } +/* Returns the hash of 'a' and 'b'. */ +uint32_t +hash_2words(uint32_t a, uint32_t b) +{ + return hash_3words(a, b, 0); +} + /* Returns the hash of the 'n' bytes at 'p', starting from 'basis'. */ uint32_t hash_bytes(const void *p_, size_t n, uint32_t basis)