summaryrefslogtreecommitdiff
path: root/src/pluto/plugin_list.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pluto/plugin_list.c')
-rw-r--r--src/pluto/plugin_list.c72
1 files changed, 72 insertions, 0 deletions
diff --git a/src/pluto/plugin_list.c b/src/pluto/plugin_list.c
new file mode 100644
index 000000000..499218904
--- /dev/null
+++ b/src/pluto/plugin_list.c
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2011 Martin Willi, revosec AG
+ * Copyright (C) 2011 Andreas Steffen, HSR Hochschule fuer Technik Rapperswil
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ */
+
+#include <whack.h>
+#include <log.h>
+
+#include <library.h>
+#include <utils/linked_list.h>
+
+/**
+ * List loaded plugin information
+ */
+void plugin_list(void)
+{
+ plugin_feature_t *features, *fp;
+ enumerator_t *enumerator;
+ linked_list_t *list;
+ plugin_t *plugin;
+ int count, i;
+ bool loaded;
+ char *str;
+
+ whack_log(RC_COMMENT, " ");
+ whack_log(RC_COMMENT, "List of loaded Plugins:");
+ whack_log(RC_COMMENT, " ");
+
+ enumerator = lib->plugins->create_plugin_enumerator(lib->plugins);
+ while (enumerator->enumerate(enumerator, &plugin, &list))
+ {
+ whack_log(RC_COMMENT, "%s:", plugin->get_name(plugin));
+ if (plugin->get_features)
+ {
+ count = plugin->get_features(plugin, &features);
+ for (i = 0; i < count; i++)
+ {
+ str = plugin_feature_get_string(&features[i]);
+ switch (features[i].kind)
+ {
+ case FEATURE_PROVIDE:
+ fp = &features[i];
+ loaded = list->find_first(list, NULL,
+ (void**)&fp) == SUCCESS;
+ whack_log(RC_COMMENT, " %s%s",
+ str, loaded ? "" : " (not loaded)");
+ break;
+ case FEATURE_DEPENDS:
+ whack_log(RC_COMMENT, " %s", str);
+ break;
+ case FEATURE_SDEPEND:
+ whack_log(RC_COMMENT, " %s(soft)", str);
+ break;
+ default:
+ break;
+ }
+ free(str);
+ }
+ }
+ }
+ enumerator->destroy(enumerator);
+}