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 */