ovs-atomic: Delete atomic, atomic_flag, ovs_refcount destroy functions.
[sliver-openvswitch.git] / lib / dpif-linux.c
index 69b3e68..6f21fc4 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013 Nicira, Inc.
+ * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014 Nicira, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -1104,6 +1104,14 @@ dpif_linux_flow_dump_next(const struct dpif *dpif_, void *iter_, void *state_,
     return error;
 }
 
+static bool
+dpif_linux_flow_dump_next_may_destroy_keys(void *state_)
+{
+    struct dpif_linux_flow_state *state = state_;
+
+    return state->buffer.size ? false : true;
+}
+
 static int
 dpif_linux_flow_dump_done(const struct dpif *dpif OVS_UNUSED, void *iter_)
 {
@@ -1112,7 +1120,6 @@ dpif_linux_flow_dump_done(const struct dpif *dpif OVS_UNUSED, void *iter_)
     unsigned int nl_status = nl_dump_done(&iter->dump);
 
     atomic_read(&iter->status, &dump_status);
-    atomic_destroy(&iter->status);
     free(iter);
     return dump_status ? dump_status : nl_status;
 }
@@ -1669,6 +1676,7 @@ const struct dpif_class dpif_linux_class = {
     dpif_linux_flow_dump_state_init,
     dpif_linux_flow_dump_start,
     dpif_linux_flow_dump_next,
+    dpif_linux_flow_dump_next_may_destroy_keys,
     dpif_linux_flow_dump_done,
     dpif_linux_flow_dump_state_uninit,
     dpif_linux_execute,