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