summaryrefslogtreecommitdiffstats
path: root/sinks
diff options
context:
space:
mode:
authorDmitri Pal <dpal@redhat.com>2009-02-24 13:52:53 -0500
committerDmitri Pal <dpal@redhat.com>2009-02-24 13:52:53 -0500
commit27d15caafe401160fcc62829a3460a52cd45d429 (patch)
treefb86574351e262937355b48959c9ca73889fae0d /sinks
parentef8d8570dcf44d723868df339223b132b19121c3 (diff)
downloadelapi_draft-27d15caafe401160fcc62829a3460a52cd45d429.tar.gz
elapi_draft-27d15caafe401160fcc62829a3460a52cd45d429.tar.xz
elapi_draft-27d15caafe401160fcc62829a3460a52cd45d429.zip
Adding missed commits.
Diffstat (limited to 'sinks')
-rw-r--r--sinks/syslog/elapi_sink_syslog.c59
1 files changed, 32 insertions, 27 deletions
diff --git a/sinks/syslog/elapi_sink_syslog.c b/sinks/syslog/elapi_sink_syslog.c
index d3a669d..cd20597 100644
--- a/sinks/syslog/elapi_sink_syslog.c
+++ b/sinks/syslog/elapi_sink_syslog.c
@@ -3,6 +3,7 @@
#include <stdio.h>
#include <errno.h>
#include <malloc.h>
+#include <syslog.h>
#include "elapi_sink.h"
#include "elapi_collection.h"
#include "elapi_debug.h"
@@ -11,12 +12,12 @@
/* FIXME - this should be taken from the config.h generated by autotools */
#define SYSLOG_RETRY 60
-#define syslog_audit_config "/home/dpal/IPA/Code/elapi/etc/syslog_defaults.conf"
-#define syslog_audit_dir "/home/dpal/IPA/Code/elapi/etc/syslog_defaults.d"
+#define syslog_audit_config "/etc/elapi/syslog_defaults.conf"
+#define syslog_audit_dir "/etc/elapi/syslog_defaults.d"
/* FIXME there is currently no code
* to make sure we do not call syslog functions from multiple dispatchers.
- * We probably should create a mutext at the load of the library and
+ * We probably should create a mutex at the load of the library and
* set a flag when the init function is called the first time
* and not call the openlog any more times.
* But I guess syslog can deal with this internally.
@@ -26,11 +27,11 @@
struct syslog_event {
struct serial_data sd;
int priority;
-}
+};
/* Default conmfiguration for syslog */
-struct syslog_config {
+struct syslog_conf {
int option;
int facility;
int level;
@@ -47,11 +48,12 @@ static int init_config(struct data_descriptor *dblock)
int *facility_cfg = (int *)(NULL);
int *level_cfg = (int *)(NULL);
char *ident_cfg = NULL;
+ int error;
DEBUG_STRING("init_config","Entry");
/* Allocate configuration data */
- conf_data = (struct syslog_conf *)(malloc(sizeof(struct syslog_config)));
+ conf_data = (struct syslog_conf *)(malloc(sizeof(struct syslog_conf)));
if(conf_data == (struct syslog_conf *)(NULL)) return errno;
/* Read configuration from the configuration file if any */
@@ -68,7 +70,7 @@ static int init_config(struct data_descriptor *dblock)
DEBUG_STRING("Identity",conf_data->ident);
/* Update defaults with settings from the file */
- error = get_value_from_config((void *)(&option_cfg),ELAPI_TYPE_INT, INI_DEFAULT_SECTION,"option",file_config);
+ error = get_value_from_config((void *)(&option_cfg),ELAPI_TYPE_INTEGER, INI_DEFAULT_SECTION,"option",file_config);
if(error != EOK) {
/* There is fundamentally something wrong */
DEBUG_NUMBER("Attempt to get option returned error",error);
@@ -78,10 +80,10 @@ static int init_config(struct data_descriptor *dblock)
/* Get the value */
if(option_cfg != (int *)(NULL)) {
conf_data->option = *option_cfg;
- free((void *)(option_cfg);
+ free((void *)(option_cfg));
}
- error = get_value_from_config((void *)(&facility_cfg),ELAPI_TYPE_INT, INI_DEFAULT_SECTION,"facility",file_config);
+ error = get_value_from_config((void *)(&facility_cfg),ELAPI_TYPE_INTEGER, INI_DEFAULT_SECTION,"facility",file_config);
if(error != EOK) {
/* There is fundamentally something wrong */
DEBUG_NUMBER("Attempt to get option returned error",error);
@@ -91,10 +93,10 @@ static int init_config(struct data_descriptor *dblock)
/* Get the value */
if(facility_cfg != (int *)(NULL)) {
conf_data->facility = *facility_cfg;
- free((void *)(facility_cfg);
+ free((void *)(facility_cfg));
}
- error = get_value_from_config((void *)(&level_cfg),ELAPI_TYPE_INT, INI_DEFAULT_SECTION,"level",file_config);
+ error = get_value_from_config((void *)(&level_cfg),ELAPI_TYPE_INTEGER, INI_DEFAULT_SECTION,"level",file_config);
if(error != EOK) {
/* There is fundamentally something wrong */
DEBUG_NUMBER("Attempt to get option returned error",error);
@@ -104,7 +106,7 @@ static int init_config(struct data_descriptor *dblock)
/* Get the value */
if(level_cfg != (int *)(NULL)) {
conf_data->level = *level_cfg;
- free((void *)(level_cfg);
+ free((void *)(level_cfg));
}
error = get_value_from_config((void *)(&ident_cfg),ELAPI_TYPE_STRING, INI_DEFAULT_SECTION,"identity",file_config);
@@ -116,8 +118,7 @@ static int init_config(struct data_descriptor *dblock)
/* Get the value */
if(ident_cfg != (char *)(NULL)) {
- conf_data->ident = *ident_cfg;
- free((void *)(ident_cfg);
+ conf_data->ident = ident_cfg;
}
@@ -157,7 +158,7 @@ static int syslog_sink_init(struct data_descriptor *dblock)
dblock->internal_data = (void *)(event_storage);
/* Prepare the configuration data block */
- if((error = init_config(dblock)) {
+ if((error = init_config(dblock))) {
DEBUG_NUMBER("Failed to init config",error);
free(dblock->internal_data);
dblock->internal_data = NULL;
@@ -176,7 +177,7 @@ static int syslog_sink_init(struct data_descriptor *dblock)
static int syslog_sink_format(struct data_descriptor *dblock,struct collection_item *event)
{
struct syslog_event *event_storage;
- struct syslog_config *config;
+ struct syslog_conf *config;
int error = EOK;
@@ -184,8 +185,8 @@ static int syslog_sink_format(struct data_descriptor *dblock,struct collection_i
DEBUG_NUMBER("DBLOCK in format",dblock);
DEBUG_NUMBER("internal data in format",dblock->internal_data);
- event_storage = (struct event_storage *)(dblock->internal_data);
- config = (struct event_storage *)(dblock->config);
+ event_storage = (struct syslog_event *)(dblock->internal_data);
+ config = (struct syslog_conf *)(dblock->config);
event_storage->priority = config->level | config->facility;
@@ -195,7 +196,7 @@ static int syslog_sink_format(struct data_descriptor *dblock,struct collection_i
/* Traverse collection */
- error = traverse_collection(event,ELAPI_TRAVERSE_DEFAULT | ELAPI_TRAVERSE_END ,serialize,(void *)(event_storage->sd));
+ error = traverse_collection(event,ELAPI_TRAVERSE_DEFAULT | ELAPI_TRAVERSE_END ,serialize,(void *)(&(event_storage->sd)));
if(error) {
DEBUG_NUMBER("traverse_collection returned error",error);
return error;
@@ -210,12 +211,12 @@ static int syslog_sink_format(struct data_descriptor *dblock,struct collection_i
static void syslog_sink_cleanup(struct data_descriptor *dblock)
{
struct syslog_event *event_storage;
- struct syslog_config *config;
+ struct syslog_conf *config;
DEBUG_STRING("syslog_sink_cleanup","Entry");
- event_storage = (struct event_storage *)(dblock->internal_data);
- config = (struct event_storage *)(dblock->config);
+ event_storage = (struct syslog_event *)(dblock->internal_data);
+ config = (struct syslog_conf *)(dblock->config);
if(event_storage->sd.buffer != NULL) {
free(event_storage->sd.buffer);
@@ -232,11 +233,15 @@ static void syslog_sink_cleanup(struct data_descriptor *dblock)
/* Close facility */
static void syslog_sink_close(struct data_descriptor *dblock)
{
+ struct syslog_conf *config;
+
DEBUG_STRING("syslog_sink_close","Entry");
if(dblock->internal_data != NULL) {
syslog_sink_cleanup(dblock);
free(dblock->internal_data);
+ config = (struct syslog_conf *)(dblock->config);
+ if(config->ident != NULL) free(config->ident);
free(dblock->config);
dblock->internal_data=NULL;
dblock->config=NULL;
@@ -251,18 +256,18 @@ static void syslog_sink_close(struct data_descriptor *dblock)
static int syslog_sink_submit(struct data_descriptor *dblock)
{
struct syslog_event *event_storage;
- struct syslog_config *config;
+ struct syslog_conf *config;
DEBUG_STRING("syslog_sink_submit","Entry");
DEBUG_NUMBER("DBLOCK in submit",dblock);
DEBUG_NUMBER("internal data in submit",dblock->internal_data);
- event_storage = (struct serial_data *)(dblock->internal_data);
- config = (struct event_storage *)(dblock->config);
+ event_storage = (struct syslog_event *)(dblock->internal_data);
+ config = (struct syslog_conf *)(dblock->config);
- DEBUG_STRING("OUTPUT:",event_storage->db.buffer);
+ DEBUG_STRING("OUTPUT:",event_storage->sd.buffer);
- fprintf(stderr,"%s %d %s\n",config->ident, event_storage->priority, event_storage->db.buffer);
+ fprintf(stderr,"%s %d %s\n",config->ident, event_storage->priority, event_storage->sd.buffer);
syslog_sink_cleanup(dblock);