xref: /illumos-gate/usr/src/cmd/ipf/lib/facpri.c (revision f3ac678143127d4c6c1793fadabb5ded04e127b6)
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)
23  static const char rcsid[] = "@(#)$Id: facpri.c,v 1.6 2003/12/01 01:59:43 darrenr Exp $";
24  #endif
25  
26  
27  typedef	struct	table	{
28  	char	*name;
29  	int	value;
30  } table_t;
31  
32  table_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   */
74  char *
fac_toname(facpri)75  fac_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   */
97  int
fac_findname(name)98  fac_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  
110  table_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   */
122  int
pri_findname(name)123  pri_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   */
138  char *
pri_toname(facpri)139  pri_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