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)
25 static  __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 
29 typedef   struct    table     {
30           char      *name;
31           int       value;
32 } table_t;
33 
34 table_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  */
76 char *
fac_toname(facpri)77 fac_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  */
99 int
fac_findname(name)100 fac_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 
112 table_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  */
124 int
pri_findname(name)125 pri_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  */
140 char *
pri_toname(facpri)141 pri_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