summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/ulogd/db.h61
1 files changed, 61 insertions, 0 deletions
diff --git a/include/ulogd/db.h b/include/ulogd/db.h
new file mode 100644
index 0000000..b4b4325
--- /dev/null
+++ b/include/ulogd/db.h
@@ -0,0 +1,61 @@
+#ifndef _ULOGD_DB_H
+#define _ULOGD_DB_H
+
+#include <ulogd/ulogd.h>
+
+struct db_driver {
+ int (*get_columns)(struct ulogd_pluginstance *upi);
+ int (*open_db)(struct ulogd_pluginstance *upi);
+ int (*close_db)(struct ulogd_pluginstance *upi);
+ int (*escape_string)(struct ulogd_pluginstance *upi,
+ char *dst, const char *src, unsigned int len);
+ int (*execute)(struct ulogd_pluginstance *upi,
+ const char *stmt, unsigned int len);
+ char *(*strerror)(struct ulogd_pluginstance *upi);
+};
+
+struct db_instance {
+ char *stmt; /* buffer for our insert statement */
+ char *stmt_val; /* pointer to the beginning of the "VALUES" part */
+ char *stmt_ins; /* pointer to current inser position in statement */
+ char *schema;
+ time_t reconnect;
+ int (*interp)(struct ulogd_pluginstance *upi);
+ struct db_driver *driver;
+};
+#define TIME_ERR ((time_t)-1) /* Be paranoid */
+
+#define DB_CES \
+ { \
+ .key = "table", \
+ .type = CONFIG_TYPE_STRING, \
+ .options = CONFIG_OPT_MANDATORY, \
+ }, \
+ { \
+ .key = "reconnect", \
+ .type = CONFIG_TYPE_INT, \
+ }, \
+ { \
+ .key = "ip_as_string", \
+ .type = CONFIG_TYPE_INT, \
+ }, \
+ { \
+ .key = "connect_timeout", \
+ .type = CONFIG_TYPE_INT, \
+ }
+
+#define DB_CE_NUM 4
+#define table_ce(x) (x->ces[0])
+#define reconnect_ce(x) (x->ces[1])
+#define asstring_ce(x) (x->ces[2])
+#define timeout_ce(x) (x->ces[3])
+
+void ulogd_db_signal(struct ulogd_pluginstance *upi, int signal);
+int ulogd_db_start(struct ulogd_pluginstance *upi);
+int ulogd_db_stop(struct ulogd_pluginstance *upi);
+int ulogd_db_interp(struct ulogd_pluginstance *upi);
+int ulogd_db_configure(struct ulogd_pluginstance *upi,
+ struct ulogd_pluginstance_stack *stack);
+
+
+#endif