X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fhash.c;h=41ad1bf2fc96ba8a9d041ef8a1281176cf1e1819;hb=c9409e7744fbdbb8d8f0a7a04214b680a0360c89;hp=a77da7dcb6180b73189003aa5cc0fd5490b2befd;hpb=7376da647fb2d327f8765381b27b4db8d81a104f;p=sliver-openvswitch.git diff --git a/lib/hash.c b/lib/hash.c index a77da7dcb..41ad1bf2f 100644 --- a/lib/hash.c +++ b/lib/hash.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2009, 2010, 2012 Nicira Networks. + * Copyright (c) 2008, 2009, 2010, 2012 Nicira, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -102,3 +102,18 @@ hash_bytes(const void *p_, size_t n, uint32_t basis) return c; } + +/* Returns the hash of the 'n' 32-bit words at 'p', starting from 'basis'. + * 'p' must be properly aligned. */ +uint32_t +mhash_words(const uint32_t p[], size_t n_words, uint32_t basis) +{ + uint32_t hash; + size_t i; + + hash = basis; + for (i = 0; i < n_words; i++) { + hash = mhash_add(hash, p[i]); + } + return mhash_finish(hash, n_words); +}