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