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 1d0f927..01f6b9e 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)
@@ -512,6 +512,14 @@ u_int32_t chunk_hash(chunk_t chunk)
 }
 
 /**
+ * Described in header.
+ */
+u_int32_t chunk_hash(chunk_t chunk)
+{
+       return chunk_hash_inc(chunk, chunk.len);
+}
+
+/**
  * output handler in printf() for chunks
  */
 static int chunk_print(FILE *stream, const struct printf_info *info,
index 5661375..d6c2e80 100644 (file)
@@ -232,6 +232,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.
  *
  * Arguments are: