[netfilter-cvslog] r6323 - in branches/ulog/ulogd2: include/ulogd
output/mysql output/pgsql util
laforge at netfilter.org
laforge at netfilter.org
Thu Dec 15 13:37:59 CET 2005
Author: laforge at netfilter.org
Date: 2005-12-15 13:37:58 +0100 (Thu, 15 Dec 2005)
New Revision: 6323
Added:
branches/ulog/ulogd2/include/ulogd/db.h
Modified:
branches/ulog/ulogd2/output/mysql/Makefile.am
branches/ulog/ulogd2/output/mysql/ulogd_output_MYSQL.c
branches/ulog/ulogd2/output/pgsql/Makefile.am
branches/ulog/ulogd2/output/pgsql/ulogd_output_PGSQL.c
branches/ulog/ulogd2/util/db.c
Log:
don't "#include" a .c file but rather compile db.c on it's own
Added: branches/ulog/ulogd2/include/ulogd/db.h
===================================================================
--- branches/ulog/ulogd2/include/ulogd/db.h 2005-12-14 21:35:27 UTC (rev 6322)
+++ branches/ulog/ulogd2/include/ulogd/db.h 2005-12-15 12:37:58 UTC (rev 6323)
@@ -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
Modified: branches/ulog/ulogd2/output/mysql/Makefile.am
===================================================================
--- branches/ulog/ulogd2/output/mysql/Makefile.am 2005-12-14 21:35:27 UTC (rev 6322)
+++ branches/ulog/ulogd2/output/mysql/Makefile.am 2005-12-15 12:37:58 UTC (rev 6323)
@@ -4,6 +4,6 @@
pkglib_LTLIBRARIES = ulogd_output_MYSQL.la
-ulogd_output_MYSQL_la_SOURCES = ulogd_output_MYSQL.c
+ulogd_output_MYSQL_la_SOURCES = ulogd_output_MYSQL.c ../../util/db.c
ulogd_output_MYSQL_la_LDFLAGS = -module
Modified: branches/ulog/ulogd2/output/mysql/ulogd_output_MYSQL.c
===================================================================
--- branches/ulog/ulogd2/output/mysql/ulogd_output_MYSQL.c 2005-12-14 21:35:27 UTC (rev 6322)
+++ branches/ulog/ulogd2/output/mysql/ulogd_output_MYSQL.c 2005-12-15 12:37:58 UTC (rev 6323)
@@ -47,9 +47,8 @@
#include <mysql/mysql.h>
#include <ulogd/ulogd.h>
#include <ulogd/conffile.h>
+#include <ulogd/db.h>
-#include "../../util/db.c"
-
#ifdef DEBUG_MYSQL
#define DEBUGP(x, args...) fprintf(stderr, x, ## args)
#else
@@ -245,7 +244,7 @@
struct db_instance *di = (struct db_instance *) &upi->private;
di->driver = &db_driver_mysql;
- return configure_db(upi, stack);
+ return ulogd_db_configure(upi, stack);
}
static struct ulogd_plugin plugin_mysql = {
@@ -261,10 +260,10 @@
.config_kset = &kset_mysql,
.priv_size = sizeof(struct mysql_instance),
.configure = &configure_mysql,
- .start = &start_db,
- .stop = &stop_db,
- .signal = &signal_db,
- .interp = &interp_db,
+ .start = &ulogd_db_start,
+ .stop = &ulogd_db_stop,
+ .signal = &ulogd_db_signal,
+ .interp = &ulogd_db_interp,
.version = ULOGD_VERSION,
};
Modified: branches/ulog/ulogd2/output/pgsql/Makefile.am
===================================================================
--- branches/ulog/ulogd2/output/pgsql/Makefile.am 2005-12-14 21:35:27 UTC (rev 6322)
+++ branches/ulog/ulogd2/output/pgsql/Makefile.am 2005-12-15 12:37:58 UTC (rev 6323)
@@ -4,6 +4,6 @@
pkglib_LTLIBRARIES = ulogd_output_PGSQL.la
-ulogd_output_PGSQL_la_SOURCES = ulogd_output_PGSQL.c
+ulogd_output_PGSQL_la_SOURCES = ulogd_output_PGSQL.c ../../util/db.c
ulogd_output_PGSQL_la_LDFLAGS = -module
Modified: branches/ulog/ulogd2/output/pgsql/ulogd_output_PGSQL.c
===================================================================
--- branches/ulog/ulogd2/output/pgsql/ulogd_output_PGSQL.c 2005-12-14 21:35:27 UTC (rev 6322)
+++ branches/ulog/ulogd2/output/pgsql/ulogd_output_PGSQL.c 2005-12-15 12:37:58 UTC (rev 6323)
@@ -14,11 +14,12 @@
#include <string.h>
#include <errno.h>
#include <arpa/inet.h>
-#include <libpq-fe.h>
+
#include <ulogd/ulogd.h>
#include <ulogd/conffile.h>
+#include <ulogd/db.h>
-#include "../../util/db.c"
+#include <libpq-fe.h>
#ifdef DEBUG_PGSQL
#define DEBUGP(x, args...) fprintf(stderr, x, ## args)
@@ -78,113 +79,9 @@
#define port_ce(x) (x->ces[DB_CE_NUM+5])
#define schema_ce(x) (x->ces[DB_CE_NUM+6])
-#if 0
-/* our main output function, called by ulogd */
-static int pgsql_output(ulog_iret_t *result)
-{
- struct _field *f;
- ulog_iret_t *res;
- PGresult *pgres;
-#ifdef IP_AS_STRING
- char *tmpstr; /* need this for --log-ip-as-string */
- struct in_addr addr;
-#endif
+#define PGSQL_HAVE_NAMESPACE_TEMPLATE \
+ "SELECT nspname FROM pg_namespace n WHERE n.nspname='%s'"
- stmt_ins = stmt_val;
-
- for (f = fields; f; f = f->next) {
- res = keyh_getres(f->id);
-
- if (!res) {
- ulogd_log(ULOGD_NOTICE,
- "no result for %s ?!?\n", f->name);
- }
-
- if (!res || !IS_VALID((*res))) {
- /* no result, we have to fake something */
- sprintf(stmt_ins, "NULL,");
- stmt_ins = stmt + strlen(stmt);
- continue;
- }
-
- switch (res->type) {
- case ULOGD_RET_INT8:
- sprintf(stmt_ins, "%d,", res->value.i8);
- break;
- case ULOGD_RET_INT16:
- sprintf(stmt_ins, "%d,", res->value.i16);
- break;
- case ULOGD_RET_INT32:
- sprintf(stmt_ins, "%d,", res->value.i32);
- break;
- case ULOGD_RET_INT64:
- sprintf(stmt_ins, "%lld,", res->value.i64);
- break;
- case ULOGD_RET_UINT8:
- sprintf(stmt_ins, "%u,", res->value.ui8);
- break;
- case ULOGD_RET_UINT16:
- sprintf(stmt_ins, "%u,", res->value.ui16);
- break;
- case ULOGD_RET_IPADDR:
-#ifdef IP_AS_STRING
- *stmt_ins++ = '\'';
- memset(&addr, 0, sizeof(addr));
- addr.s_addr = ntohl(res->value.ui32);
- tmpstr = (char *)inet_ntoa(addr);
- PQescapeString(stmt_ins,tmpstr,strlen(tmpstr));
- stmt_ins = stmt + strlen(stmt);
- sprintf(stmt_ins, "',");
- break;
-#endif /* IP_AS_STRING */
- /* EVIL: fallthrough when logging IP as
- * u_int32_t */
-
- case ULOGD_RET_UINT32:
- sprintf(stmt_ins, "%u,", res->value.ui32);
- break;
- case ULOGD_RET_UINT64:
- sprintf(stmt_ins, "%llu,", res->value.ui64);
- break;
- case ULOGD_RET_BOOL:
- sprintf(stmt_ins, "'%d',", res->value.b);
- break;
- case ULOGD_RET_STRING:
- *stmt_ins++ = '\'';
- PQescapeString(stmt_ins,res->value.ptr,strlen(res->value.ptr));
- stmt_ins = stmt + strlen(stmt);
- sprintf(stmt_ins, "',");
- break;
- case ULOGD_RET_RAW:
- ulogd_log(ULOGD_NOTICE,"%s: pgsql doesn't support type RAW\n",res->key);
- sprintf(stmt_ins, "NULL,");
- break;
- default:
- ulogd_log(ULOGD_NOTICE,
- "unknown type %d for %s\n",
- res->type, res->key);
- break;
- }
- stmt_ins = stmt + strlen(stmt);
- }
- *(stmt_ins - 1) = ')';
- DEBUGP("stmt=#%s#\n", stmt);
-
- /* now we have created our statement, insert it */
- /* Added code by Jaki */
- pgres = PQexec(dbh, stmt);
- if(!pgres || PQresultStatus(pgres) != PGRES_COMMAND_OK) {
- ulogd_log(ULOGD_ERROR, "sql error during insert: %s\n",
- PQresultErrorMessage(pgres));
- return 1;
- }
-
- return 0;
-}
-#endif
-
-#define PGSQL_HAVE_NAMESPACE_TEMPLATE "SELECT nspname FROM pg_namespace n WHERE n.nspname='%s'"
-
/* Determine if server support schemas */
static int pgsql_namespace(struct ulogd_pluginstance *upi)
{
@@ -218,9 +115,11 @@
return 0;
}
-#define PGSQL_GETCOLUMN_TEMPLATE "SELECT a.attname FROM pg_class c, pg_attribute a WHERE c.relname ='%s' AND a.attnum>0 AND a.attrelid=c.oid ORDER BY a.attnum"
+#define PGSQL_GETCOLUMN_TEMPLATE \
+ "SELECT a.attname FROM pg_class c, pg_attribute a WHERE c.relname ='%s' AND a.attnum>0 AND a.attrelid=c.oid ORDER BY a.attnum"
-#define PGSQL_GETCOLUMN_TEMPLATE_SCHEMA "SELECT a.attname FROM pg_attribute a, pg_class c LEFT JOIN pg_namespace n ON c.relnamespace=n.oid WHERE c.relname ='%s' AND n.nspname='%s' AND a.attnum>0 AND a.attrelid=c.oid AND a.attisdropped=FALSE ORDER BY a.attnum"
+#define PGSQL_GETCOLUMN_TEMPLATE_SCHEMA \
+ "SELECT a.attname FROM pg_attribute a, pg_class c LEFT JOIN pg_namespace n ON c.relnamespace=n.oid WHERE c.relname ='%s' AND n.nspname='%s' AND a.attnum>0 AND a.attrelid=c.oid AND a.attisdropped=FALSE ORDER BY a.attnum"
/* find out which columns the table has */
static int get_columns_pgsql(struct ulogd_pluginstance *upi)
@@ -410,7 +309,7 @@
pi->db_inst.driver = &db_driver_pgsql;
- return configure_db(upi, stack);
+ return ulogd_db_configure(upi, stack);
}
static struct ulogd_plugin pgsql_plugin = {
@@ -425,10 +324,11 @@
},
.config_kset = &pgsql_kset,
.priv_size = sizeof(struct pgsql_instance),
- .start = &start_db,
- .stop = &stop_db,
- .signal = &signal_db,
- .interp = &interp_db,
+ .configure = &configure_pgsql,
+ .start = &ulogd_db_start,
+ .stop = &ulogd_db_stop,
+ .signal = &ulogd_db_signal,
+ .interp = &ulogd_db_interp,
.version = ULOGD_VERSION,
};
Modified: branches/ulog/ulogd2/util/db.c
===================================================================
--- branches/ulog/ulogd2/util/db.c 2005-12-14 21:35:27 UTC (rev 6322)
+++ branches/ulog/ulogd2/util/db.c 2005-12-15 12:37:58 UTC (rev 6323)
@@ -24,60 +24,22 @@
* $Id: ulogd_output_MYSQL.c 6304 2005-12-08 09:43:19Z /C=DE/ST=Berlin/L=Berlin/O=Netfilter Project/OU=Development/CN=laforge/emailAddress=laforge at netfilter.org $
*/
-/* generic db layer */
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <netinet/in.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);
-};
+#include <ulogd/ulogd.h>
+#include <ulogd/db.h>
-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 */
+/* generic db layer */
-#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])
-
static int __interp_db(struct ulogd_pluginstance *upi);
/* this is a wrapper that just calls the current real
* interp function */
-static int interp_db(struct ulogd_pluginstance *upi)
+int ulogd_db_interp(struct ulogd_pluginstance *upi)
{
struct db_instance *dbi = (struct db_instance *) &upi->private;
return dbi->interp(upi);
@@ -150,7 +112,7 @@
return 0;
}
-static int configure_db(struct ulogd_pluginstance *upi,
+int ulogd_db_configure(struct ulogd_pluginstance *upi,
struct ulogd_pluginstance_stack *stack)
{
struct db_instance *di = (struct db_instance *) upi->private;
@@ -185,7 +147,7 @@
return ret;
}
-static int start_db(struct ulogd_pluginstance *upi)
+int ulogd_db_start(struct ulogd_pluginstance *upi)
{
struct db_instance *di = (struct db_instance *) upi->private;
int ret;
@@ -203,7 +165,7 @@
return ret;
}
-static int stop_db(struct ulogd_pluginstance *upi)
+int ulogd_db_stop(struct ulogd_pluginstance *upi)
{
struct db_instance *di = (struct db_instance *) upi->private;
ulogd_log(ULOGD_NOTICE, "stopping\n");
@@ -251,7 +213,7 @@
if (open_db(upi)) {
ulogd_log(ULOGD_ERROR, "can't establish database connection\n");
- return init_reconnect(upi);
+ return _init_reconnect(upi);
}
/* enable 'real' logging */
@@ -356,7 +318,6 @@
di->stmt_ins = di->stmt + strlen(di->stmt);
}
*(di->stmt_ins - 1) = ')';
- DEBUGP("stmt=#%s#\n", di->stmt);
/* now we have created our statement, insert it */
@@ -369,8 +330,7 @@
return 0;
}
-static void signal_db(struct ulogd_pluginstance *upi,
- int signal)
+void ulogd_db_signal(struct ulogd_pluginstance *upi, int signal)
{
switch (signal) {
case SIGHUP:
More information about the netfilter-cvslog
mailing list