xref: /illumos-gate/usr/src/cmd/praudit/toktable.h (revision b5c366f4)
1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License (the "License").
6  * You may not use this file except in compliance with the License.
7  *
8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9  * or http://www.opensolaris.org/os/licensing.
10  * See the License for the specific language governing permissions
11  * and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL HEADER in each
14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15  * If applicable, add the following below this CDDL HEADER, with the
16  * fields enclosed by brackets "[]" replaced with your own identifying
17  * information: Portions Copyright [yyyy] [name of copyright owner]
18  *
19  * CDDL HEADER END
20  */
21 /*
22  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
23  * Use is subject to license terms.
24  *
25  * Copyright 2018 Nexenta Systems, Inc.  All rights reserved.
26  */
27 
28 #ifndef	_TOKTABLE_H
29 #define	_TOKTABLE_H
30 
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34 
35 /*
36  * Solaris Audit Token Table.
37  */
38 
39 typedef struct token_desc {
40 	char	*t_name;	/* name of the token */
41 	char	*t_tagname;	/* tag name */
42 	int	(*func)();	/* token processing function */
43 	short	t_type;		/* token or tag type */
44 } token_desc_t;
45 
46 
47 #define	NOFUNC		(int (*)())0
48 
49 #define	MAXTOKEN	0xff
50 
51 extern token_desc_t tokentable[];
52 
53 /*
54  * Tag types -
55  *
56  *	attribute:	an attribute:
57  *			xxx="..."
58  *
59  *	element:	a simple element:
60  *			<xxx> ... </xxx>
61  *
62  *	enclosed:	a self contained element, optionally with attributes:
63  *			<xxx a="" b="" ... />
64  *
65  *	extended:	an element with attributes:
66  *			<xxx a="" b="" ...> ... </xxx>
67  */
68 #define	T_ATTRIBUTE	1	/* attribute */
69 #define	T_ELEMENT	2	/* element */
70 #define	T_ENCLOSED	3	/* enclosed element */
71 #define	T_EXTENDED	4	/* extended element */
72 #define	T_UNKNOWN	99	/* huh... */
73 
74 /*
75  * Define the kinds of tags
76  */
77 enum tagnum_t { TAG_INVALID = MAXTOKEN,
78 	TAG_UID,
79 	TAG_GID,
80 	TAG_RUID,
81 	TAG_RGID,
82 	TAG_AUID,
83 	TAG_PID,
84 	TAG_SID,
85 	TAG_TID32,
86 	TAG_TID64,
87 	TAG_TID32_EX,
88 	TAG_TID64_EX,
89 	TAG_EVMOD,
90 	TAG_TOKVERS,
91 	TAG_EVTYPE,
92 	TAG_ISO,
93 	TAG_ERRVAL,
94 	TAG_RETVAL,
95 	TAG_SETTYPE,
96 	TAG_GROUPID,
97 	TAG_XID,
98 	TAG_XCUID,
99 	TAG_XSELTEXT,
100 	TAG_XSELTYPE,
101 	TAG_XSELDATA,
102 	TAG_ARGNUM,
103 	TAG_ARGVAL32,
104 	TAG_ARGVAL64,
105 	TAG_ARGDESC,
106 	TAG_MODE,
107 	TAG_FSID,
108 	TAG_NODEID32,
109 	TAG_NODEID64,
110 	TAG_DEVICE32,
111 	TAG_DEVICE64,
112 	TAG_SEQNUM,			/* with sequence token */
113 	TAG_ARGV,			/* with cmd token */
114 	TAG_ARGE,			/* with cmd token */
115 	TAG_ARG,			/* with exec_args token */
116 	TAG_ENV,			/* with exec_env token */
117 	TAG_XAT,			/* with attr_path token */
118 	TAG_RESULT,			/* with use_of_privilege token */
119 	TAG_CUID,			/* with IPC_perm token */
120 	TAG_CGID,			/* with IPC_perm token */
121 	TAG_SEQ,			/* with IPC_perm token */
122 	TAG_KEY,			/* with IPC_perm token */
123 	TAG_IPVERS,			/* with ip token */
124 	TAG_IPSERV,			/* with ip token */
125 	TAG_IPLEN,			/* with ip token */
126 	TAG_IPID,			/* with ip token */
127 	TAG_IPOFFS,			/* with ip token */
128 	TAG_IPTTL,			/* with ip token */
129 	TAG_IPPROTO,			/* with ip token */
130 	TAG_IPCKSUM,			/* with ip token */
131 	TAG_IPSRC,			/* with ip token */
132 	TAG_IPDEST,			/* with ip token */
133 	TAG_ACLTYPE,			/* with acl token */
134 	TAG_ACLVAL,			/* with acl token */
135 	TAG_SOCKTYPE,			/* with socket token */
136 	TAG_SOCKPORT,			/* with socket token */
137 	TAG_SOCKADDR,			/* with socket token */
138 	TAG_SOCKEXDOM,			/* with socket_ex token */
139 	TAG_SOCKEXTYPE,			/* with socket_ex token */
140 	TAG_SOCKEXLPORT,		/* with socket_ex token */
141 	TAG_SOCKEXLADDR,		/* with socket_ex token */
142 	TAG_SOCKEXFPORT,		/* with socket_ex token */
143 	TAG_SOCKEXFADDR,		/* with socket_ex token */
144 	TAG_IPCTYPE,			/* with IPC token */
145 	TAG_IPCID,			/* with IPC token */
146 	TAG_ARBPRINT,			/* with arbitrary (data) token */
147 	TAG_ARBTYPE,			/* with arbitrary (data) token */
148 	TAG_ARBCOUNT,			/* with arbitrary (data) token */
149 	TAG_HOSTID,			/* with extended header token */
150 	TAG_ZONENAME,			/* with zonename token */
151 	TAG_TID_TYPE,			/* with tid token */
152 	TAG_IP,				/* with tid token, type=ip */
153 	TAG_IP_LOCAL,			/* with tid token, type=ip */
154 	TAG_IP_REMOTE,			/* with tid token, type=ip */
155 	TAG_IP_ADR,			/* with tid token, type=ip */
156 	TAG_ACEMASK,			/* with ace token */
157 	TAG_ACEFLAGS,			/* with ace token */
158 	TAG_ACETYPE,			/* with ace token */
159 	TAG_ACEID,			/* with ace token */
160 	TAG_USERNAME,			/* with user token */
161 	TAG_WSID,			/* with wsid token */
162 	MAXTAG
163 };
164 
165 
166 /*
167  * These tokens are the same for all versions of Solaris
168  */
169 
170 /*
171  * Control tokens
172  */
173 
174 extern int	file_token();
175 extern int	trailer_token();
176 extern int	header_token();
177 extern int	header32_ex_token();
178 
179 /*
180  * Data tokens
181  */
182 
183 extern int	arbitrary_data_token();
184 extern int	fmri_token();
185 extern int	s5_IPC_token();
186 extern int	path_token();
187 extern int	path_attr_token();
188 extern int	subject32_token();
189 extern int	process32_token();
190 extern int	return_value32_token();
191 extern int	text_token();
192 extern int	opaque_token();
193 extern int	ip_addr_token();
194 extern int	ip_token();
195 extern int	iport_token();
196 extern int	argument32_token();
197 extern int	socket_token();
198 extern int	sequence_token();
199 
200 /*
201  * Modifier tokens
202  */
203 
204 extern int	acl_token();
205 extern int	ace_token();
206 extern int	attribute_token();
207 extern int	s5_IPC_perm_token();
208 extern int	group_token();
209 extern int	label_token();
210 extern int	privilege_token();
211 extern int	useofpriv_token();
212 extern int	liaison_token();
213 extern int	newgroup_token();
214 extern int	exec_args_token();
215 extern int	exec_env_token();
216 extern int	attribute32_token();
217 extern int	useofauth_token();
218 extern int	user_token();
219 extern int	zonename_token();
220 extern int	secflags_token();
221 
222 /*
223  * X windows tokens
224  */
225 
226 extern int	xatom_token();
227 extern int	xselect_token();
228 extern int	xcolormap_token();
229 extern int	xcursor_token();
230 extern int	xfont_token();
231 extern int	xgc_token();
232 extern int	xpixmap_token();
233 extern int	xproperty_token();
234 extern int	xwindow_token();
235 extern int	xclient_token();
236 
237 /*
238  * Command tokens
239  */
240 
241 extern int	cmd_token();
242 extern int	exit_token();
243 
244 /*
245  * Miscellaneous tokens
246  */
247 
248 extern int	host_token();
249 
250 /*
251  * Solaris64 tokens
252  */
253 
254 extern int	argument64_token();
255 extern int	return_value64_token();
256 extern int	attribute64_token();
257 extern int	header64_token();
258 extern int	subject64_token();
259 extern int	process64_token();
260 extern int	file64_token();
261 
262 /*
263  * Extended network address tokens
264  */
265 
266 extern int	header64_ex_token();
267 extern int	subject32_ex_token();
268 extern int	process32_ex_token();
269 extern int	subject64_ex_token();
270 extern int	process64_ex_token();
271 extern int	ip_addr_ex_token();
272 extern int	socket_ex_token();
273 extern int	tid_token();
274 
275 #ifdef __cplusplus
276 }
277 #endif
278 
279 #endif	/* _TOKTABLE_H */
280