+/**
+ * Closure for the validation_entries_iterate function.
+ */
+struct ValidationIteratorContext
+{
+ /**
+ * Function to call on each validation entry
+ */
+ GST_ValidationChangedCallback cb;
+
+ /**
+ * Closure for @e cb.
+ */
+ void *cb_cls;
+};
+
+
+static int
+validation_entries_iterate (void *cls,
+ const struct GNUNET_PeerIdentity *key,
+ void *value)
+{
+ struct ValidationIteratorContext *ic = cls;
+ struct ValidationEntry *ve = value;
+
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Notifying about validation entry for peer `%s' address `%s' \n",
+ GNUNET_i2s (&ve->pid), GST_plugins_a2s (ve->address));
+ ic->cb (ic->cb_cls, &ve->pid, ve->address, ve->send_time,
+ ve->valid_until, ve->next_validation, ve->state);
+
+ return GNUNET_OK;
+}
+
+/**
+ * Iterate over all iteration entries
+ *
+ * @param cb function to call
+ * @param cb_cls closure for cb
+ */
+void
+GST_validation_iterate (GST_ValidationChangedCallback cb,
+ void *cb_cls)
+{
+ struct ValidationIteratorContext ic;
+
+ if (NULL == validation_map)
+ return; /* can happen during shutdown */
+ ic.cb = cb;
+ ic.cb_cls = cb_cls;
+ GNUNET_CONTAINER_multipeermap_iterate (validation_map,
+ &validation_entries_iterate,
+ &ic);
+}