]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
incremental version of chunk_hash
authorTobias Brunner <tobias@strongswan.org>
Wed, 10 Dec 2008 13:43:51 +0000 (13:43 -0000)
committerTobias Brunner <tobias@strongswan.org>
Wed, 10 Dec 2008 13:43:51 +0000 (13:43 -0000)
src/libstrongswan/chunk.c
src/libstrongswan/chunk.h

index 1d0f9279a5ef9c33a00d5c17817c4a50746bb05c..01f6b9ed773e122955aaf5466aeb8854f66e8d56 100644 (file)
@@ -448,11 +448,11 @@ int chunk_compare(chunk_t a, chunk_t b)
  * The implementation is based on Paul Hsieh's SuperFastHash:
  *      http://www.azillionmonkeys.com/qed/hash.html
  */
-u_int32_t chunk_hash(chunk_t chunk)
+u_int32_t chunk_hash_inc(chunk_t chunk, u_int32_t hash)
 {
        u_char *data = chunk.ptr;
        size_t len = chunk.len;
-       u_int32_t hash = len, tmp;
+       u_int32_t tmp;
        int rem;
        
        if (!len || data == NULL)
@@ -511,6 +511,14 @@ u_int32_t chunk_hash(chunk_t chunk)
        return hash;
 }
 
+/**
+ * Described in header.
+ */
+u_int32_t chunk_hash(chunk_t chunk)
+{
+       return chunk_hash_inc(chunk, chunk.len);
+}
+
 /**
  * output handler in printf() for chunks
  */
index 5661375895e8567230952aa0638ff3da2775773d..d6c2e805b0e886fd3ddb5215e6430c11cfd17731 100644 (file)
@@ -231,6 +231,11 @@ static inline bool chunk_equals(chunk_t a, chunk_t b)
  */
 u_int32_t chunk_hash(chunk_t chunk);
 
+/**
+ * Incremental version of chunk_hash. Use this to hash two or more chunks.
+ */
+u_int32_t chunk_hash_inc(chunk_t chunk, u_int32_t hash);
+
 /**
  * Get printf hooks for a chunk.
  *