1/* $NetBSD: facpri.c,v 1.3 2018/02/04 08:19:42 mrg Exp $ */ 2 3/* 4 * Copyright (C) 2012 by Darren Reed. 5 * 6 * See the IPFILTER.LICENCE file for details on licencing. 7 * 8 * Id: facpri.c,v 1.1.1.2 2012/07/22 13:44:38 darrenr Exp $ 9 */ 10 11#include <stdio.h> 12#include <string.h> 13#include <limits.h> 14#include <sys/types.h> 15#if !defined(__SVR4) && !defined(__svr4__) 16#include <strings.h> 17#endif 18#include <stdlib.h> 19#include <unistd.h> 20#include <stddef.h> 21#include <syslog.h> 22#include "facpri.h" 23 24#if !defined(lint) 25static __attribute__((__used__)) const char rcsid[] = "@(#)Id: facpri.c,v 1.1.1.2 2012/07/22 13:44:38 darrenr Exp $"; 26#endif 27 28 29typedef struct table { 30 char *name; 31 int value; 32} table_t; 33 34table_t facs[] = { 35 { "kern", LOG_KERN }, { "user", LOG_USER }, 36 { "mail", LOG_MAIL }, { "daemon", LOG_DAEMON }, 37 { "auth", LOG_AUTH }, { "syslog", LOG_SYSLOG }, 38 { "lpr", LOG_LPR }, { "news", LOG_NEWS }, 39 { "uucp", LOG_UUCP }, 40#if LOG_CRON == LOG_CRON2 41 { "cron2", LOG_CRON1 }, 42#else 43 { "cron", LOG_CRON1 }, 44#endif 45#ifdef LOG_FTP 46 { "ftp", LOG_FTP }, 47#endif 48#ifdef LOG_AUTHPRIV 49 { "authpriv", LOG_AUTHPRIV }, 50#endif 51#ifdef LOG_AUDIT 52 { "audit", LOG_AUDIT }, 53#endif 54#ifdef LOG_LFMT 55 { "logalert", LOG_LFMT }, 56#endif 57#if LOG_CRON == LOG_CRON1 58 { "cron", LOG_CRON2 }, 59#else 60 { "cron2", LOG_CRON2 }, 61#endif 62#ifdef LOG_SECURITY 63 { "security", LOG_SECURITY }, 64#endif 65 { "local0", LOG_LOCAL0 }, { "local1", LOG_LOCAL1 }, 66 { "local2", LOG_LOCAL2 }, { "local3", LOG_LOCAL3 }, 67 { "local4", LOG_LOCAL4 }, { "local5", LOG_LOCAL5 }, 68 { "local6", LOG_LOCAL6 }, { "local7", LOG_LOCAL7 }, 69 { NULL, 0 } 70}; 71 72 73/* 74 * map a facility number to its name 75 */ 76char * 77fac_toname(facpri) 78 int facpri; 79{ 80 int i, j, fac; 81 82 fac = facpri & LOG_FACMASK; 83 j = fac >> 3; 84 if (j < (sizeof(facs)/sizeof(facs[0]))) { 85 if (facs[j].value == fac) 86 return facs[j].name; 87 } 88 for (i = 0; facs[i].name; i++) 89 if (fac == facs[i].value) 90 return facs[i].name; 91 92 return NULL; 93} 94 95 96/* 97 * map a facility name to its number 98 */ 99int 100fac_findname(name) 101 char *name; 102{ 103 int i; 104 105 for (i = 0; facs[i].name; i++) 106 if (!strcmp(facs[i].name, name)) 107 return facs[i].value; 108 return -1; 109} 110 111 112table_t pris[] = { 113 { "emerg", LOG_EMERG }, { "alert", LOG_ALERT }, 114 { "crit", LOG_CRIT }, { "err", LOG_ERR }, 115 { "warn", LOG_WARNING }, { "notice", LOG_NOTICE }, 116 { "info", LOG_INFO }, { "debug", LOG_DEBUG }, 117 { NULL, 0 } 118}; 119 120 121/* 122 * map a facility name to its number 123 */ 124int 125pri_findname(name) 126 char *name; 127{ 128 int i; 129 130 for (i = 0; pris[i].name; i++) 131 if (!strcmp(pris[i].name, name)) 132 return pris[i].value; 133 return -1; 134} 135 136 137/* 138 * map a priority number to its name 139 */ 140char * 141pri_toname(facpri) 142 int facpri; 143{ 144 int i, pri; 145 146 pri = facpri & LOG_PRIMASK; 147 if (pris[pri].value == pri) 148 return pris[pri].name; 149 for (i = 0; pris[i].name; i++) 150 if (pri == pris[i].value) 151 return pris[i].name; 152 return NULL; 153} 154