summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 64765bc)
raw | patch | inline | side by side (parent: 64765bc)
author | Florian Forster <octo@leeloo.lan.home.verplant.org> | |
Sun, 28 Oct 2007 17:45:46 +0000 (18:45 +0100) | ||
committer | Florian Forster <octo@leeloo.lan.home.verplant.org> | |
Sun, 28 Oct 2007 17:45:46 +0000 (18:45 +0100) |
src/plugin.c | patch | blob | history | |
src/plugin.h | patch | blob | history |
diff --git a/src/plugin.c b/src/plugin.c
index 37c91a9ba2aa0d2fb79b5ec754d8d618ac0eb8f2..67d61880ee963c5cc4fc2403d9da8c3c274f0a3b 100644 (file)
--- a/src/plugin.c
+++ b/src/plugin.c
static llist_t *list_shutdown;
static llist_t *list_data_set;
static llist_t *list_log;
+static llist_t *list_notification;
static char *plugindir = NULL;
return (register_callback (&list_log, name, (void *) callback));
} /* int plugin_register_log */
+int plugin_register_notification (const char *name,
+ int (*callback) (const notification_t *notif))
+{
+ return (register_callback (&list_log, name, (void *) callback));
+} /* int plugin_register_log */
+
int plugin_unregister_config (const char *name)
{
cf_unregister (name);
return (plugin_unregister (list_log, name));
}
+int plugin_unregister_notification (const char *name)
+{
+ return (plugin_unregister (list_notification, name));
+}
+
void plugin_init_all (void)
{
int (*callback) (void);
return (0);
} /* int plugin_dispatch_values */
+int plugin_dispatch_notification (const notification_t *notif)
+{
+ int (*callback) (const notification_t *);
+ llentry_t *le;
+ /* Possible TODO: Add flap detection here */
+
+ /* Nobody cares for notifications */
+ if (list_notification == NULL)
+ return (-1);
+
+ le = llist_head (list_notification);
+ while (le != NULL)
+ {
+ callback = (int (*) (const notification_t *)) le->value;
+ (*callback) (notif);
+
+ le = le->next;
+ }
+
+ return (0);
+} /* int plugin_dispatch_notification */
+
void plugin_log (int level, const char *format, ...)
{
char msg[512];
diff --git a/src/plugin.h b/src/plugin.h
index 4ca6c771f16c8d87f050c499b4f367cf85b6b970..8c5acab090cd8f77bde9c319eccf169323a1fc8a 100644 (file)
--- a/src/plugin.h
+++ b/src/plugin.h
# define LOG_DEBUG 7
#endif
+#define NOTIF_MAX_MSG_LEN 128
+
+#define NOTIF_FAILURE 1
+#define NOTIF_WARNING 2
+#define NOTIF_OKAY 4
+
/*
* Public data types
*/
unsigned int delay; /* how many more iterations we still need to wait */
} complain_t;
+typedef struct notification_s
+{
+ int severity;
+ char message[NOTIF_MAX_MSG_LEN];
+ time_t time;
+ char host[DATA_MAX_NAME_LEN];
+} notification_t;
+
/*
* NAME
* plugin_set_dir
int plugin_register_data_set (const data_set_t *ds);
int plugin_register_log (char *name,
void (*callback) (int, const char *));
+int plugin_register_notification (const char *name,
+ int (*callback) (const notification_t *notif));
int plugin_unregister_config (const char *name);
int plugin_unregister_complex_config (const char *name);
int plugin_unregister_shutdown (const char *name);
int plugin_unregister_data_set (const char *name);
int plugin_unregister_log (const char *name);
+int plugin_unregister_notification (const char *name);
/*
*/
int plugin_dispatch_values (const char *name, value_list_t *vl);
+int plugin_dispatch_notification (const notification_t *notif);
+
void plugin_log (int level, const char *format, ...);
#define ERROR(...) plugin_log (LOG_ERR, __VA_ARGS__)
#define WARNING(...) plugin_log (LOG_WARNING, __VA_ARGS__)