Hi! I've tried to use the DBI plugin of ulogd2 for NFCT based accounting, and despite using table="conntrack", it always insisted in using the table "ulog" for deriving the keys/columns to be stored. I've hacked up a quick fix, and it seems to work as expected (though no proper null temrmination after strncpy). As I've been absent from ulogd and netfilter hacking for some time, I tohught I'd post it here rather than pushing something to the git repo... Regards, Harald -- - Harald Welte <laforge@xxxxxxxxxxxxx> http://netfilter.org/ ============================================================================ "Fragmentation is like classful addressing -- an interesting early architectural error that shows how much experimentation was going on while IP was being designed." -- Paul Vixie
diff --git a/output/dbi/ulogd_output_DBI.c b/output/dbi/ulogd_output_DBI.c index 88730e6..4b3ec16 100644 --- a/output/dbi/ulogd_output_DBI.c +++ b/output/dbi/ulogd_output_DBI.c @@ -102,7 +102,8 @@ static void str_tolower(char *s) static int get_columns_dbi(struct ulogd_pluginstance *upi) { struct dbi_instance *pi = (struct dbi_instance *) upi->private; - char query[256] = "SELECT * FROM ulog\0"; + char *table = table_ce(upi->config_kset).u.string; + char query[256]; unsigned int ui; if (!pi->dbh) { @@ -110,6 +111,8 @@ static int get_columns_dbi(struct ulogd_pluginstance *upi) return 1; } + snprintf(query, 256, "SELECT * FROM %s", table); + ulogd_log(ULOGD_DEBUG, "%s\n", query); pi->result = dbi_conn_query(pi->dbh,query); if (!pi->result) {