[ovs-dev] [PATCH v4 5/9] simap: Add utility function to help compare two simaps.

Yi-Hung Wei yihung.wei at gmail.com
Thu Aug 15 19:31:16 UTC 2019


From: Ben Pfaff <blp at ovn.org>

Signed-off-by: Ben Pfaff <blp at ovn.org>
---
 lib/simap.c | 15 ++++++++++++++-
 lib/simap.h |  1 +
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/lib/simap.c b/lib/simap.c
index d634f8ed9eea..f404ece67703 100644
--- a/lib/simap.c
+++ b/lib/simap.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2010, 2011, 2012, 2017 Nicira, Inc.
+ * Copyright (c) 2009, 2010, 2011, 2012, 2017, 2019 Nicira, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -242,6 +242,19 @@ simap_equal(const struct simap *a, const struct simap *b)
     return true;
 }
 
+uint32_t
+simap_hash(const struct simap *simap)
+{
+    uint32_t hash = 0;
+
+    const struct simap_node *node;
+    SIMAP_FOR_EACH (node, simap) {
+        hash ^= hash_int(node->data,
+                         hash_name(node->name, strlen(node->name)));
+    }
+    return hash;
+}
+
 static size_t
 hash_name(const char *name, size_t length)
 {
diff --git a/lib/simap.h b/lib/simap.h
index 5b4a2f39dca3..5e646e660782 100644
--- a/lib/simap.h
+++ b/lib/simap.h
@@ -70,6 +70,7 @@ bool simap_find_and_delete(struct simap *, const char *);
 
 const struct simap_node **simap_sort(const struct simap *);
 bool simap_equal(const struct simap *, const struct simap *);
+uint32_t simap_hash(const struct simap *);
 
 #ifdef  __cplusplus
 }
-- 
2.7.4



More information about the dev mailing list