diff mbox series

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

Message ID 1565897480-120133-6-git-send-email-yihung.wei@gmail.com
State Superseded
Headers show
Series Support zone-based conntrack timeout policy | expand

Commit Message

Yi-Hung Wei Aug. 15, 2019, 7:31 p.m. UTC
From: Ben Pfaff <blp@ovn.org>

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

Patch

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
 }