1145519Sdarrenr/* $FreeBSD$ */ 2145510Sdarrenr 3145510Sdarrenr/* 4255332Scy * Copyright (C) 2012 by Darren Reed. 5145510Sdarrenr * 6145510Sdarrenr * See the IPFILTER.LICENCE file for details on licencing. 7145510Sdarrenr * 8255332Scy * $Id$ 9145510Sdarrenr */ 10145510Sdarrenr 11145510Sdarrenr#include <stdio.h> 12145510Sdarrenr#include <string.h> 13145510Sdarrenr#include <limits.h> 14145510Sdarrenr#include <sys/types.h> 15145510Sdarrenr#if !defined(__SVR4) && !defined(__svr4__) 16145510Sdarrenr#include <strings.h> 17145510Sdarrenr#endif 18145510Sdarrenr#include <stdlib.h> 19145510Sdarrenr#include <unistd.h> 20145510Sdarrenr#include <stddef.h> 21145510Sdarrenr#include <syslog.h> 22145510Sdarrenr#include "facpri.h" 23145510Sdarrenr 24145510Sdarrenr#if !defined(lint) 25255332Scystatic const char rcsid[] = "@(#)$Id$"; 26145510Sdarrenr#endif 27145510Sdarrenr 28145510Sdarrenr 29145510Sdarrenrtypedef struct table { 30145510Sdarrenr char *name; 31145510Sdarrenr int value; 32145510Sdarrenr} table_t; 33145510Sdarrenr 34145510Sdarrenrtable_t facs[] = { 35145510Sdarrenr { "kern", LOG_KERN }, { "user", LOG_USER }, 36145510Sdarrenr { "mail", LOG_MAIL }, { "daemon", LOG_DAEMON }, 37145510Sdarrenr { "auth", LOG_AUTH }, { "syslog", LOG_SYSLOG }, 38145510Sdarrenr { "lpr", LOG_LPR }, { "news", LOG_NEWS }, 39145510Sdarrenr { "uucp", LOG_UUCP }, 40145510Sdarrenr#if LOG_CRON == LOG_CRON2 41145510Sdarrenr { "cron2", LOG_CRON1 }, 42145510Sdarrenr#else 43145510Sdarrenr { "cron", LOG_CRON1 }, 44145510Sdarrenr#endif 45153881Sguido#ifdef LOG_FTP 46145510Sdarrenr { "ftp", LOG_FTP }, 47145510Sdarrenr#endif 48153881Sguido#ifdef LOG_AUTHPRIV 49145510Sdarrenr { "authpriv", LOG_AUTHPRIV }, 50145510Sdarrenr#endif 51145510Sdarrenr#ifdef LOG_AUDIT 52145510Sdarrenr { "audit", LOG_AUDIT }, 53145510Sdarrenr#endif 54145510Sdarrenr#ifdef LOG_LFMT 55145510Sdarrenr { "logalert", LOG_LFMT }, 56145510Sdarrenr#endif 57145510Sdarrenr#if LOG_CRON == LOG_CRON1 58145510Sdarrenr { "cron", LOG_CRON2 }, 59145510Sdarrenr#else 60145510Sdarrenr { "cron2", LOG_CRON2 }, 61145510Sdarrenr#endif 62145510Sdarrenr#ifdef LOG_SECURITY 63145510Sdarrenr { "security", LOG_SECURITY }, 64145510Sdarrenr#endif 65145510Sdarrenr { "local0", LOG_LOCAL0 }, { "local1", LOG_LOCAL1 }, 66145510Sdarrenr { "local2", LOG_LOCAL2 }, { "local3", LOG_LOCAL3 }, 67145510Sdarrenr { "local4", LOG_LOCAL4 }, { "local5", LOG_LOCAL5 }, 68145510Sdarrenr { "local6", LOG_LOCAL6 }, { "local7", LOG_LOCAL7 }, 69145510Sdarrenr { NULL, 0 } 70145510Sdarrenr}; 71145510Sdarrenr 72145510Sdarrenr 73145510Sdarrenr/* 74145510Sdarrenr * map a facility number to its name 75145510Sdarrenr */ 76145510Sdarrenrchar * 77145510Sdarrenrfac_toname(facpri) 78145510Sdarrenr int facpri; 79145510Sdarrenr{ 80145510Sdarrenr int i, j, fac; 81145510Sdarrenr 82145510Sdarrenr fac = facpri & LOG_FACMASK; 83145510Sdarrenr j = fac >> 3; 84161357Sguido if (j < (sizeof(facs)/sizeof(facs[0]))) { 85145510Sdarrenr if (facs[j].value == fac) 86145510Sdarrenr return facs[j].name; 87145510Sdarrenr } 88161357Sguido for (i = 0; facs[i].name; i++) 89161357Sguido if (fac == facs[i].value) 90161357Sguido return facs[i].name; 91145510Sdarrenr 92145510Sdarrenr return NULL; 93145510Sdarrenr} 94145510Sdarrenr 95145510Sdarrenr 96145510Sdarrenr/* 97145510Sdarrenr * map a facility name to its number 98145510Sdarrenr */ 99255332Scyint 100145510Sdarrenrfac_findname(name) 101145510Sdarrenr char *name; 102145510Sdarrenr{ 103161357Sguido int i; 104145510Sdarrenr 105145510Sdarrenr for (i = 0; facs[i].name; i++) 106145510Sdarrenr if (!strcmp(facs[i].name, name)) 107145510Sdarrenr return facs[i].value; 108145510Sdarrenr return -1; 109145510Sdarrenr} 110145510Sdarrenr 111145510Sdarrenr 112145510Sdarrenrtable_t pris[] = { 113145510Sdarrenr { "emerg", LOG_EMERG }, { "alert", LOG_ALERT }, 114145510Sdarrenr { "crit", LOG_CRIT }, { "err", LOG_ERR }, 115145510Sdarrenr { "warn", LOG_WARNING }, { "notice", LOG_NOTICE }, 116145510Sdarrenr { "info", LOG_INFO }, { "debug", LOG_DEBUG }, 117145510Sdarrenr { NULL, 0 } 118145510Sdarrenr}; 119145510Sdarrenr 120145510Sdarrenr 121145510Sdarrenr/* 122255332Scy * map a facility name to its number 123255332Scy */ 124255332Scyint 125255332Scypri_findname(name) 126255332Scy char *name; 127255332Scy{ 128255332Scy int i; 129255332Scy 130255332Scy for (i = 0; pris[i].name; i++) 131255332Scy if (!strcmp(pris[i].name, name)) 132255332Scy return pris[i].value; 133255332Scy return -1; 134255332Scy} 135255332Scy 136255332Scy 137255332Scy/* 138145510Sdarrenr * map a priority number to its name 139145510Sdarrenr */ 140145510Sdarrenrchar * 141145510Sdarrenrpri_toname(facpri) 142145510Sdarrenr int facpri; 143145510Sdarrenr{ 144145510Sdarrenr int i, pri; 145145510Sdarrenr 146145510Sdarrenr pri = facpri & LOG_PRIMASK; 147145510Sdarrenr if (pris[pri].value == pri) 148145510Sdarrenr return pris[pri].name; 149145510Sdarrenr for (i = 0; pris[i].name; i++) 150145510Sdarrenr if (pri == pris[i].value) 151145510Sdarrenr return pris[i].name; 152145510Sdarrenr return NULL; 153145510Sdarrenr} 154