diff options
Diffstat (limited to 'contrib/ipfilter/lib/save_syslog.c')
-rw-r--r-- | contrib/ipfilter/lib/save_syslog.c | 137 |
1 files changed, 0 insertions, 137 deletions
diff --git a/contrib/ipfilter/lib/save_syslog.c b/contrib/ipfilter/lib/save_syslog.c deleted file mode 100644 index c1efdf4..0000000 --- a/contrib/ipfilter/lib/save_syslog.c +++ /dev/null @@ -1,137 +0,0 @@ -#include "ipf.h" -#include "ipmon.h" -#include <syslog.h> - -static void *syslog_parse __P((char **)); -static void syslog_destroy __P((void *)); -static int syslog_send __P((void *, ipmon_msg_t *)); -static void syslog_print __P((void *)); - -typedef struct syslog_opts_s { - int facpri; - int fac; - int pri; -} syslog_opts_t; - -ipmon_saver_t syslogsaver = { - "syslog", - syslog_destroy, - NULL, /* dup */ - NULL, /* match */ - syslog_parse, - syslog_print, - syslog_send -}; - - -static void * -syslog_parse(char **strings) -{ - syslog_opts_t *ctx; - char *str; - char *s; - - ctx = calloc(1, sizeof(*ctx)); - if (ctx == NULL) - return NULL; - - ctx->facpri = -1; - - if (strings[0] != NULL && strings[0][0] != '\0') { - str = strdup(*strings); - if (str != NULL && *str != '\0') { - int fac = -1, pri = -1; - - s = strchr(str, '.'); - if (s != NULL) - *s++ = '\0'; - - if (*str != '\0') { - fac = fac_findname(str); - if (fac == -1) { - free(str); - free(ctx); - return NULL; - } - } - - if (s != NULL && *s != '\0') { - pri = pri_findname(s); - if (pri == -1) { - free(str); - free(ctx); - return NULL; - } - } - free(str); - - ctx->fac = fac; - ctx->pri = pri; - if (pri == -1) - ctx->facpri = fac; - else if (fac == -1) - ctx->facpri = pri; - else - ctx->facpri = fac | pri; - } else { - if (str != NULL) - free(str); - free(ctx); - ctx = NULL; - } - } - - return ctx; -} - - -static void -syslog_print(ctx) - void *ctx; -{ - syslog_opts_t *sys = ctx; - - if (sys->facpri == -1) - return; - - if (sys->fac == -1) { - printf(".%s", pri_toname(sys->pri)); - } else if (sys->pri == -1) { - printf("%s.", fac_toname(sys->fac)); - } else { - printf("%s.%s", fac_toname(sys->facpri & LOG_FACMASK), - pri_toname(sys->facpri & LOG_PRIMASK)); - } -} - - -static void -syslog_destroy(ctx) - void *ctx; -{ - free(ctx); -} - - -static int -syslog_send(ctx, msg) - void *ctx; - ipmon_msg_t *msg; -{ - syslog_opts_t *sys = ctx; - int facpri; - - if (sys->facpri == -1) { - facpri = msg->imm_loglevel; - } else { - if (sys->pri == -1) { - facpri = sys->fac | (msg->imm_loglevel & LOG_PRIMASK); - } else if (sys->fac == -1) { - facpri = sys->pri | (msg->imm_loglevel & LOG_FACMASK); - } else { - facpri = sys->facpri; - } - } - syslog(facpri, "%s", msg->imm_msg); - return 0; -} |