From 438279431c67cb9a0238e7e623911617d5b092d8 Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Wed, 29 Jul 2009 16:27:01 +0200 Subject: IPFIX: preliminary fixes, yet unusable This patch is a preliminary fix for the yet-unfinished IPFIX support. This patch resolves a couple of bugs that made ulogd crash and a couple of missing symbols that didn't allow to use this plugin in the configuration file. Signed-off-by: Pablo Neira Ayuso --- output/ulogd_output_IPFIX.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/output/ulogd_output_IPFIX.c b/output/ulogd_output_IPFIX.c index 88964ef..025faab 100644 --- a/output/ulogd_output_IPFIX.c +++ b/output/ulogd_output_IPFIX.c @@ -93,6 +93,7 @@ struct bitmask *bitmask_alloc(unsigned int num_bits) return NULL; bm->size_bits = num_bits; + bm->buf = (void *)bm + sizeof(*bm); bitmask_clear(bm); @@ -240,7 +241,7 @@ build_template_for_bitmask(struct ulogd_pluginstance *upi, tmpl->total_length = 0; - for (i = 0; i < upi->input.num_keys; i++) { + for (i = 0, j = 0; i < upi->input.num_keys; i++) { struct ulogd_key *key = &upi->input.keys[i]; int length = ulogd_key_size(key); @@ -332,8 +333,7 @@ static int output_ipfix(struct ulogd_pluginstance *upi) ulogd_log(ULOGD_ERROR, "can't build new template!\n"); return ULOGD_IRET_ERR; } - /* FIXME: prepend? */ - list_add(&ii->template_list, &template->list); + llist_add(&template->list, &ii->template_list); } total_size = template->total_length; @@ -435,18 +435,14 @@ static int start_ipfix(struct ulogd_pluginstance *pi) if (!ii->valid_bitmask) return -ENOMEM; + INIT_LLIST_HEAD(&ii->template_list); + ret = open_connect_socket(pi); if (ret < 0) goto out_bm_free; - ret = build_template(pi); - if (ret < 0) - goto out_sock_close; - return 0; -out_sock_close: - close(ii->fd); out_bm_free: bitmask_free(ii->valid_bitmask); ii->valid_bitmask = NULL; -- cgit v1.2.3