diff options
| author | Dmitri Pal <dpal@redhat.com> | 2009-02-24 13:52:53 -0500 |
|---|---|---|
| committer | Dmitri Pal <dpal@redhat.com> | 2009-02-24 13:52:53 -0500 |
| commit | 27d15caafe401160fcc62829a3460a52cd45d429 (patch) | |
| tree | fb86574351e262937355b48959c9ca73889fae0d /sinks/syslog | |
| parent | ef8d8570dcf44d723868df339223b132b19121c3 (diff) | |
| download | elapi_draft-27d15caafe401160fcc62829a3460a52cd45d429.tar.gz elapi_draft-27d15caafe401160fcc62829a3460a52cd45d429.tar.xz elapi_draft-27d15caafe401160fcc62829a3460a52cd45d429.zip | |
Adding missed commits.
Diffstat (limited to 'sinks/syslog')
| -rw-r--r-- | sinks/syslog/elapi_sink_syslog.c | 59 |
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); |
