xref: /freebsd/contrib/openbsm/test/bsm/generate.c (revision b626f5a73a48f44a31a200291b141e1da408a2ff)
1506764c6SRobert Watson /*-
2bc168a6cSRobert Watson  * Copyright (c) 2006-2007 Robert N. M. Watson
37a0a89d2SRobert Watson  * Copyright (c) 2008 Apple Inc.
4506764c6SRobert Watson  * All rights reserved.
5506764c6SRobert Watson  *
6506764c6SRobert Watson  * Redistribution and use in source and binary forms, with or without
7506764c6SRobert Watson  * modification, are permitted provided that the following conditions
8506764c6SRobert Watson  * are met:
9506764c6SRobert Watson  * 1. Redistributions of source code must retain the above copyright
10506764c6SRobert Watson  *    notice, this list of conditions and the following disclaimer.
11506764c6SRobert Watson  * 2. Redistributions in binary form must reproduce the above copyright
12506764c6SRobert Watson  *    notice, this list of conditions and the following disclaimer in the
13506764c6SRobert Watson  *    documentation and/or other materials provided with the distribution.
14506764c6SRobert Watson  *
15506764c6SRobert Watson  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16506764c6SRobert Watson  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17506764c6SRobert Watson  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18506764c6SRobert Watson  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19506764c6SRobert Watson  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20506764c6SRobert Watson  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21506764c6SRobert Watson  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22506764c6SRobert Watson  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23506764c6SRobert Watson  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24506764c6SRobert Watson  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25506764c6SRobert Watson  * SUCH DAMAGE.
26506764c6SRobert Watson  */
27506764c6SRobert Watson 
28506764c6SRobert Watson /*
29506764c6SRobert Watson  * Generate a series of BSM token samples in the requested directory.
30506764c6SRobert Watson  */
31506764c6SRobert Watson 
32506764c6SRobert Watson #include <sys/types.h>
33d9af45c4SRobert Watson #include <sys/socket.h>
34506764c6SRobert Watson #include <sys/stat.h>
35506764c6SRobert Watson 
36506764c6SRobert Watson #include <netinet/in.h>
37506764c6SRobert Watson #include <netinet/in_systm.h>
38506764c6SRobert Watson #include <netinet/ip.h>
39506764c6SRobert Watson 
40506764c6SRobert Watson #include <arpa/inet.h>
41506764c6SRobert Watson 
42506764c6SRobert Watson #include <bsm/audit_kevents.h>
43506764c6SRobert Watson #include <bsm/libbsm.h>
44506764c6SRobert Watson 
45506764c6SRobert Watson #include <err.h>
46506764c6SRobert Watson #include <errno.h>
47506764c6SRobert Watson #include <fcntl.h>
48506764c6SRobert Watson #include <limits.h>
49506764c6SRobert Watson #include <stdio.h>
50506764c6SRobert Watson #include <stdlib.h>
51506764c6SRobert Watson #include <string.h>
52506764c6SRobert Watson #include <sysexits.h>
53506764c6SRobert Watson #include <unistd.h>
54506764c6SRobert Watson 
55506764c6SRobert Watson static int	do_records, do_tokens;
56506764c6SRobert Watson 
57506764c6SRobert Watson static void
usage(void)58506764c6SRobert Watson usage(void)
59506764c6SRobert Watson {
60506764c6SRobert Watson 
61506764c6SRobert Watson 	fprintf(stderr, "generate [-rt] path\n");
62506764c6SRobert Watson 	exit(EX_USAGE);
63506764c6SRobert Watson }
64506764c6SRobert Watson 
65506764c6SRobert Watson static int
open_file(const char * directory,const char * name)66506764c6SRobert Watson open_file(const char *directory, const char *name)
67506764c6SRobert Watson {
68506764c6SRobert Watson 	char pathname[PATH_MAX];
69506764c6SRobert Watson 	int fd;
70506764c6SRobert Watson 
71506764c6SRobert Watson 	snprintf(pathname, PATH_MAX, "%s/%s", directory, name);
72506764c6SRobert Watson 	(void)unlink(pathname);
73506764c6SRobert Watson 	fd = open(pathname, O_WRONLY | O_CREAT | O_EXCL, 0600);
74506764c6SRobert Watson 	if (fd < 0)
75506764c6SRobert Watson 		err(EX_CANTCREAT, "open: %s", name);
76506764c6SRobert Watson 	return (fd);
77506764c6SRobert Watson }
78506764c6SRobert Watson 
79506764c6SRobert Watson static void
write_file(int fd,void * buffer,size_t buflen,const char * filename)80506764c6SRobert Watson write_file(int fd, void *buffer, size_t buflen, const char *filename)
81506764c6SRobert Watson {
82506764c6SRobert Watson 	ssize_t len;
83506764c6SRobert Watson 
84506764c6SRobert Watson 	len = write(fd, buffer, buflen);
85506764c6SRobert Watson 	if (len < 0)
86506764c6SRobert Watson 		err(EX_OSERR, "write_file: %s", filename);
87506764c6SRobert Watson 	if (len < buflen)
88506764c6SRobert Watson 		err(EX_OSERR, "write_file: short write: %s", filename);
89506764c6SRobert Watson }
90506764c6SRobert Watson 
91506764c6SRobert Watson /*
92506764c6SRobert Watson  * Write a single token to a file.
93506764c6SRobert Watson  */
94506764c6SRobert Watson static void
write_token(const char * directory,const char * filename,token_t * tok)95506764c6SRobert Watson write_token(const char *directory, const char *filename, token_t *tok)
96506764c6SRobert Watson {
97506764c6SRobert Watson 	u_char buffer[MAX_AUDIT_RECORD_SIZE];
98506764c6SRobert Watson 	size_t buflen;
99506764c6SRobert Watson 	int fd;
100506764c6SRobert Watson 
101506764c6SRobert Watson 	buflen = MAX_AUDIT_RECORD_SIZE;
102506764c6SRobert Watson 	if (au_close_token(tok, buffer, &buflen) < 0)
103506764c6SRobert Watson 		err(EX_UNAVAILABLE, "au_close_token");
104506764c6SRobert Watson 	fd = open_file(directory, filename);
105506764c6SRobert Watson 	write_file(fd, buffer, buflen, filename);
106506764c6SRobert Watson 	close(fd);
107506764c6SRobert Watson }
108506764c6SRobert Watson 
109506764c6SRobert Watson /*
110506764c6SRobert Watson  * Write a token to a file, wrapped in audit record header and trailer.
111506764c6SRobert Watson  */
112506764c6SRobert Watson static void
write_record(const char * directory,const char * filename,token_t * tok,short event)113506764c6SRobert Watson write_record(const char *directory, const char *filename, token_t *tok,
114506764c6SRobert Watson     short event)
115506764c6SRobert Watson {
116506764c6SRobert Watson 	u_char buffer[MAX_AUDIT_RECORD_SIZE];
117506764c6SRobert Watson 	size_t buflen;
118506764c6SRobert Watson 	int au, fd;
119506764c6SRobert Watson 
120506764c6SRobert Watson 	au = au_open();
121506764c6SRobert Watson 	if (au < 0)
122506764c6SRobert Watson 		err(EX_UNAVAILABLE, "au_open");
123506764c6SRobert Watson 	if (au_write(au, tok) < 0)
124506764c6SRobert Watson 		err(EX_UNAVAILABLE, "au_write");
125506764c6SRobert Watson 	buflen = MAX_AUDIT_RECORD_SIZE;
126506764c6SRobert Watson 	if (au_close_buffer(au, event, buffer, &buflen) < 0)
127506764c6SRobert Watson 		err(EX_UNAVAILABLE, "au_close_buffer");
128506764c6SRobert Watson 	fd = open_file(directory, filename);
129506764c6SRobert Watson 	write_file(fd, buffer, buflen, filename);
130506764c6SRobert Watson 	close(fd);
131506764c6SRobert Watson }
132506764c6SRobert Watson 
133506764c6SRobert Watson static struct timeval	 file_token_timeval = { 0x12345, 0x67890} ;
134506764c6SRobert Watson 
135506764c6SRobert Watson static void
generate_file_token(const char * directory,const char * token_filename)136506764c6SRobert Watson generate_file_token(const char *directory, const char *token_filename)
137506764c6SRobert Watson {
138506764c6SRobert Watson 	token_t *file_token;
139506764c6SRobert Watson 
140506764c6SRobert Watson 	file_token = au_to_file("test", file_token_timeval);
141506764c6SRobert Watson 	if (file_token == NULL)
142506764c6SRobert Watson 		err(EX_UNAVAILABLE, "au_to_file");
143506764c6SRobert Watson 	write_token(directory, token_filename, file_token);
144506764c6SRobert Watson }
145506764c6SRobert Watson 
14622ccb20dSRobert Watson static void
generate_file_record(const char * directory,const char * record_filename)14722ccb20dSRobert Watson generate_file_record(const char *directory, const char *record_filename)
14822ccb20dSRobert Watson {
14922ccb20dSRobert Watson 	token_t *file_token;
15022ccb20dSRobert Watson 
15122ccb20dSRobert Watson 	file_token = au_to_file("test", file_token_timeval);
15222ccb20dSRobert Watson 	if (file_token == NULL)
15322ccb20dSRobert Watson 		err(EX_UNAVAILABLE, "au_to_file");
15422ccb20dSRobert Watson 	write_record(directory, record_filename, file_token, AUE_NULL);
15522ccb20dSRobert Watson }
15622ccb20dSRobert Watson 
157506764c6SRobert Watson /*
158506764c6SRobert Watson  * AUT_OHEADER
159506764c6SRobert Watson  */
160506764c6SRobert Watson 
161506764c6SRobert Watson static int		 trailer_token_len = 0x12345678;
162506764c6SRobert Watson 
163506764c6SRobert Watson static void
generate_trailer_token(const char * directory,const char * token_filename)164506764c6SRobert Watson generate_trailer_token(const char *directory, const char *token_filename)
165506764c6SRobert Watson {
166506764c6SRobert Watson 	token_t *trailer_token;
167506764c6SRobert Watson 
168506764c6SRobert Watson 	trailer_token = au_to_trailer(trailer_token_len);
169506764c6SRobert Watson 	if (trailer_token == NULL)
170506764c6SRobert Watson 		err(EX_UNAVAILABLE, "au_to_trailer");
171506764c6SRobert Watson 	write_token(directory, token_filename, trailer_token);
172506764c6SRobert Watson }
173506764c6SRobert Watson 
174506764c6SRobert Watson static int		 header32_token_len = 0x12345678;
175506764c6SRobert Watson static au_event_t	 header32_e_type = AUE_OPEN;
176506764c6SRobert Watson static au_emod_t	 header32_e_mod = 0x4567;
177506764c6SRobert Watson static struct timeval	 header32_tm = { 0x12345, 0x67890 };
178506764c6SRobert Watson 
179506764c6SRobert Watson static void
generate_header32_token(const char * directory,const char * token_filename)180506764c6SRobert Watson generate_header32_token(const char *directory, const char *token_filename)
181506764c6SRobert Watson {
182506764c6SRobert Watson 	token_t *header32_token;
183506764c6SRobert Watson 
184506764c6SRobert Watson 	header32_token = au_to_header32_tm(header32_token_len,
185506764c6SRobert Watson 	    header32_e_type, header32_e_mod, header32_tm);
186506764c6SRobert Watson 	if (header32_token == NULL)
187506764c6SRobert Watson 		err(EX_UNAVAILABLE, "au_to_header32");
188506764c6SRobert Watson 	write_token(directory, token_filename, header32_token);
189506764c6SRobert Watson }
190506764c6SRobert Watson 
191506764c6SRobert Watson /*
192506764c6SRobert Watson  * AUT_HEADER32_EX
193506764c6SRobert Watson  */
194506764c6SRobert Watson 
195506764c6SRobert Watson static char		 data_token_unit_print = AUP_STRING;
196506764c6SRobert Watson static char		 data_token_unit_type = AUR_CHAR;
197506764c6SRobert Watson static char		*data_token_data = "SomeData";
198506764c6SRobert Watson static char		 data_token_unit_count = sizeof("SomeData") + 1;
199506764c6SRobert Watson 
200506764c6SRobert Watson static void
generate_data_token(const char * directory,const char * token_filename)201506764c6SRobert Watson generate_data_token(const char *directory, const char *token_filename)
202506764c6SRobert Watson {
203506764c6SRobert Watson 	token_t *data_token;
204506764c6SRobert Watson 
205506764c6SRobert Watson 	data_token = au_to_data(data_token_unit_print, data_token_unit_type,
206506764c6SRobert Watson 	    data_token_unit_count, data_token_data);
207506764c6SRobert Watson 	if (data_token == NULL)
208506764c6SRobert Watson 		err(EX_UNAVAILABLE, "au_to_data");
209506764c6SRobert Watson 	write_token(directory, token_filename, data_token);
210506764c6SRobert Watson }
211506764c6SRobert Watson 
212506764c6SRobert Watson static void
generate_data_record(const char * directory,const char * record_filename)213506764c6SRobert Watson generate_data_record(const char *directory, const char *record_filename)
214506764c6SRobert Watson {
215506764c6SRobert Watson 	token_t *data_token;
216506764c6SRobert Watson 
217506764c6SRobert Watson 	data_token = au_to_data(data_token_unit_print, data_token_unit_type,
218506764c6SRobert Watson 	    data_token_unit_count, data_token_data);
219506764c6SRobert Watson 	if (data_token == NULL)
220506764c6SRobert Watson 		err(EX_UNAVAILABLE, "au_to_data");
221506764c6SRobert Watson 	write_record(directory, record_filename, data_token, AUE_NULL);
222506764c6SRobert Watson }
223506764c6SRobert Watson 
224506764c6SRobert Watson static char		 ipc_type = AT_IPC_MSG;
225506764c6SRobert Watson static int		 ipc_id = 0x12345678;
226506764c6SRobert Watson 
227506764c6SRobert Watson static void
generate_ipc_token(const char * directory,const char * token_filename)228506764c6SRobert Watson generate_ipc_token(const char *directory, const char *token_filename)
229506764c6SRobert Watson {
230506764c6SRobert Watson 	token_t *ipc_token;
231506764c6SRobert Watson 
232506764c6SRobert Watson 	ipc_token = au_to_ipc(ipc_type, ipc_id);
233506764c6SRobert Watson 	if (ipc_token == NULL)
234506764c6SRobert Watson 		err(EX_UNAVAILABLE, "au_to_ipc");
235506764c6SRobert Watson 	write_token(directory, token_filename, ipc_token);
236506764c6SRobert Watson }
237506764c6SRobert Watson 
238506764c6SRobert Watson static void
generate_ipc_record(const char * directory,const char * record_filename)239506764c6SRobert Watson generate_ipc_record(const char *directory, const char *record_filename)
240506764c6SRobert Watson {
241506764c6SRobert Watson 	token_t *ipc_token;
242506764c6SRobert Watson 
243506764c6SRobert Watson 	ipc_token = au_to_ipc(ipc_type, ipc_id);
244506764c6SRobert Watson 	if (ipc_token == NULL)
245506764c6SRobert Watson 		err(EX_UNAVAILABLE, "au_to_ipc");
246506764c6SRobert Watson 	write_record(directory, record_filename, ipc_token, AUE_NULL);
247506764c6SRobert Watson }
248506764c6SRobert Watson 
249506764c6SRobert Watson static char		*path_token_path = "/test/this/is/a/test";
250506764c6SRobert Watson 
251506764c6SRobert Watson static void
generate_path_token(const char * directory,const char * token_filename)252506764c6SRobert Watson generate_path_token(const char *directory, const char *token_filename)
253506764c6SRobert Watson {
254506764c6SRobert Watson 	token_t *path_token;
255506764c6SRobert Watson 
256506764c6SRobert Watson 	path_token = au_to_path(path_token_path);
257506764c6SRobert Watson 	if (path_token == NULL)
258506764c6SRobert Watson 		err(EX_UNAVAILABLE, "au_to_path");
259506764c6SRobert Watson 	write_token(directory, token_filename, path_token);
260506764c6SRobert Watson }
261506764c6SRobert Watson 
262506764c6SRobert Watson static void
generate_path_record(const char * directory,const char * record_filename)263506764c6SRobert Watson generate_path_record(const char *directory, const char *record_filename)
264506764c6SRobert Watson {
265506764c6SRobert Watson 	token_t *path_token;
266506764c6SRobert Watson 
267506764c6SRobert Watson 	path_token = au_to_path(path_token_path);
268506764c6SRobert Watson 	if (path_token == NULL)
269506764c6SRobert Watson 		err(EX_UNAVAILABLE, "au_to_path");
270506764c6SRobert Watson 	write_record(directory, record_filename, path_token, AUE_NULL);
271506764c6SRobert Watson }
272506764c6SRobert Watson 
273506764c6SRobert Watson static au_id_t		 subject32_auid = 0x12345678;
274506764c6SRobert Watson static uid_t		 subject32_euid = 0x01234567;
275506764c6SRobert Watson static gid_t		 subject32_egid = 0x23456789;
276506764c6SRobert Watson static uid_t		 subject32_ruid = 0x98765432;
277506764c6SRobert Watson static gid_t		 subject32_rgid = 0x09876543;
278506764c6SRobert Watson static pid_t		 subject32_pid = 0x13243546;
279506764c6SRobert Watson static au_asid_t	 subject32_sid = 0x97867564;
280506764c6SRobert Watson static au_tid_t		 subject32_tid = { 0x16593746 };
281d9af45c4SRobert Watson static au_tid_addr_t	 subject32_tid_addr = { 0x16593746 };
282506764c6SRobert Watson 
283506764c6SRobert Watson static void
generate_subject32_token(const char * directory,const char * token_filename)284506764c6SRobert Watson generate_subject32_token(const char *directory, const char *token_filename)
285506764c6SRobert Watson {
286506764c6SRobert Watson 	token_t *subject32_token;
287506764c6SRobert Watson 
288506764c6SRobert Watson 	subject32_tid.machine = inet_addr("127.0.0.1");
289506764c6SRobert Watson 
290506764c6SRobert Watson 	subject32_token = au_to_subject32(subject32_auid, subject32_euid,
291506764c6SRobert Watson 	    subject32_egid, subject32_ruid, subject32_rgid, subject32_pid,
292506764c6SRobert Watson 	    subject32_sid, &subject32_tid);
293506764c6SRobert Watson 	if (subject32_token == NULL)
294506764c6SRobert Watson 		err(EX_UNAVAILABLE, "au_to_subject32");
295506764c6SRobert Watson 	write_token(directory, token_filename, subject32_token);
296506764c6SRobert Watson }
297506764c6SRobert Watson 
298506764c6SRobert Watson static void
generate_subject32_record(const char * directory,const char * record_filename)299506764c6SRobert Watson generate_subject32_record(const char *directory, const char *record_filename)
300506764c6SRobert Watson {
301506764c6SRobert Watson 	token_t *subject32_token;
302506764c6SRobert Watson 
303506764c6SRobert Watson 	subject32_tid.machine = inet_addr("127.0.0.1");
304506764c6SRobert Watson 
305506764c6SRobert Watson 	subject32_token = au_to_subject32(subject32_auid, subject32_euid,
306506764c6SRobert Watson 	    subject32_egid, subject32_ruid, subject32_rgid, subject32_pid,
307506764c6SRobert Watson 	    subject32_sid, &subject32_tid);
308506764c6SRobert Watson 	if (subject32_token == NULL)
309506764c6SRobert Watson 		err(EX_UNAVAILABLE, "au_to_subject32");
310506764c6SRobert Watson 	write_record(directory, record_filename, subject32_token, AUE_NULL);
311506764c6SRobert Watson }
312506764c6SRobert Watson 
313d9af45c4SRobert Watson static void
generate_subject32ex_token(const char * directory,const char * token_filename,u_int32_t type)314d9af45c4SRobert Watson generate_subject32ex_token(const char *directory, const char *token_filename,
315d9af45c4SRobert Watson     u_int32_t type)
316d9af45c4SRobert Watson {
317d9af45c4SRobert Watson 	token_t *subject32ex_token;
318d9af45c4SRobert Watson 	char *buf;
319d9af45c4SRobert Watson 
320d9af45c4SRobert Watson 	buf = (char *)malloc(strlen(token_filename) + 6);
321d9af45c4SRobert Watson 	if (type == AU_IPv6) {
322d9af45c4SRobert Watson 		inet_pton(AF_INET6, "fe80::1", subject32_tid_addr.at_addr);
323d9af45c4SRobert Watson 		subject32_tid_addr.at_type = AU_IPv6;
324d9af45c4SRobert Watson 		sprintf(buf, "%s%s", token_filename, "-IPv6");
325d9af45c4SRobert Watson 	} else {
326d9af45c4SRobert Watson 		subject32_tid_addr.at_addr[0] = inet_addr("127.0.0.1");
327d9af45c4SRobert Watson 		subject32_tid_addr.at_type = AU_IPv4;
328d9af45c4SRobert Watson 		sprintf(buf, "%s%s", token_filename, "-IPv4");
329d9af45c4SRobert Watson 	}
330d9af45c4SRobert Watson 
331d9af45c4SRobert Watson 	subject32ex_token = au_to_subject32_ex(subject32_auid, subject32_euid,
332d9af45c4SRobert Watson 	    subject32_egid, subject32_ruid, subject32_rgid, subject32_pid,
333d9af45c4SRobert Watson 	    subject32_sid, &subject32_tid_addr);
334d9af45c4SRobert Watson 	if (subject32ex_token == NULL)
335d9af45c4SRobert Watson 		err(EX_UNAVAILABLE, "au_to_subject32_ex");
336d9af45c4SRobert Watson 	write_token(directory, buf, subject32ex_token);
337bc168a6cSRobert Watson 	free(buf);
338d9af45c4SRobert Watson }
339d9af45c4SRobert Watson 
34022ccb20dSRobert Watson static void
generate_subject32ex_record(const char * directory,const char * record_filename,u_int32_t type)34122ccb20dSRobert Watson generate_subject32ex_record(const char *directory, const char *record_filename,
34222ccb20dSRobert Watson     u_int32_t type)
34322ccb20dSRobert Watson {
34422ccb20dSRobert Watson 	token_t *subject32ex_token;
34522ccb20dSRobert Watson 	char *buf;
34622ccb20dSRobert Watson 
34722ccb20dSRobert Watson 	buf = (char *)malloc(strlen(record_filename) + 6);
34822ccb20dSRobert Watson 	if (type == AU_IPv6) {
34922ccb20dSRobert Watson 		inet_pton(AF_INET6, "fe80::1", subject32_tid_addr.at_addr);
35022ccb20dSRobert Watson 		subject32_tid_addr.at_type = AU_IPv6;
35122ccb20dSRobert Watson 		sprintf(buf, "%s%s", record_filename, "-IPv6");
35222ccb20dSRobert Watson 	} else {
35322ccb20dSRobert Watson 		subject32_tid_addr.at_addr[0] = inet_addr("127.0.0.1");
35422ccb20dSRobert Watson 		subject32_tid_addr.at_type = AU_IPv4;
35522ccb20dSRobert Watson 		sprintf(buf, "%s%s", record_filename, "-IPv4");
35622ccb20dSRobert Watson 	}
35722ccb20dSRobert Watson 
35822ccb20dSRobert Watson 	subject32ex_token = au_to_subject32_ex(subject32_auid, subject32_euid,
35922ccb20dSRobert Watson 	    subject32_egid, subject32_ruid, subject32_rgid, subject32_pid,
36022ccb20dSRobert Watson 	    subject32_sid, &subject32_tid_addr);
36122ccb20dSRobert Watson 	if (subject32ex_token == NULL)
36222ccb20dSRobert Watson 		err(EX_UNAVAILABLE, "au_to_subject32_ex");
36322ccb20dSRobert Watson 	write_record(directory, record_filename, subject32ex_token, AUE_NULL);
364bc168a6cSRobert Watson 	free(buf);
36522ccb20dSRobert Watson }
36622ccb20dSRobert Watson 
367506764c6SRobert Watson static au_id_t		 process32_auid = 0x12345678;
368506764c6SRobert Watson static uid_t		 process32_euid = 0x01234567;
369506764c6SRobert Watson static gid_t		 process32_egid = 0x23456789;
370506764c6SRobert Watson static uid_t		 process32_ruid = 0x98765432;
371506764c6SRobert Watson static gid_t		 process32_rgid = 0x09876543;
372506764c6SRobert Watson static pid_t		 process32_pid = 0x13243546;
373506764c6SRobert Watson static au_asid_t	 process32_sid = 0x97867564;
374506764c6SRobert Watson static au_tid_t		 process32_tid = { 0x16593746 };
375d9af45c4SRobert Watson static au_tid_addr_t	 process32_tid_addr = { 0x16593746 };
376506764c6SRobert Watson 
377506764c6SRobert Watson static void
generate_process32_token(const char * directory,const char * token_filename)378506764c6SRobert Watson generate_process32_token(const char *directory, const char *token_filename)
379506764c6SRobert Watson {
380506764c6SRobert Watson 	token_t *process32_token;
381506764c6SRobert Watson 
382506764c6SRobert Watson 	process32_tid.machine = inet_addr("127.0.0.1");
383506764c6SRobert Watson 
384506764c6SRobert Watson 	process32_token = au_to_process32(process32_auid, process32_euid,
385506764c6SRobert Watson 	    process32_egid, process32_ruid, process32_rgid, process32_pid,
386506764c6SRobert Watson 	    process32_sid, &process32_tid);
387506764c6SRobert Watson 	if (process32_token == NULL)
388506764c6SRobert Watson 		err(EX_UNAVAILABLE, "au_to_process32");
389506764c6SRobert Watson 	write_token(directory, token_filename, process32_token);
390506764c6SRobert Watson }
391506764c6SRobert Watson 
392506764c6SRobert Watson static void
generate_process32_record(const char * directory,const char * record_filename)393506764c6SRobert Watson generate_process32_record(const char *directory, const char *record_filename)
394506764c6SRobert Watson {
395506764c6SRobert Watson 	token_t *process32_token;
396506764c6SRobert Watson 
397506764c6SRobert Watson 	process32_tid.machine = inet_addr("127.0.0.1");
398506764c6SRobert Watson 
399506764c6SRobert Watson 	process32_token = au_to_process32(process32_auid, process32_euid,
400506764c6SRobert Watson 	    process32_egid, process32_ruid, process32_rgid, process32_pid,
401506764c6SRobert Watson 	    process32_sid, &process32_tid);
402506764c6SRobert Watson 	if (process32_token == NULL)
403506764c6SRobert Watson 		err(EX_UNAVAILABLE, "au_ti_process32");
404506764c6SRobert Watson 	write_record(directory, record_filename, process32_token, AUE_NULL);
405506764c6SRobert Watson }
406506764c6SRobert Watson 
407d9af45c4SRobert Watson static void
generate_process32ex_token(const char * directory,const char * token_filename,u_int32_t type)408bc168a6cSRobert Watson generate_process32ex_token(const char *directory, const char *token_filename,
409bc168a6cSRobert Watson     u_int32_t type)
410d9af45c4SRobert Watson {
411d9af45c4SRobert Watson 	token_t *process32ex_token;
412bc168a6cSRobert Watson 	char *buf;
413d9af45c4SRobert Watson 
414bc168a6cSRobert Watson 	buf = (char *)malloc(strlen(token_filename) + 6);
415bc168a6cSRobert Watson 	if (type == AU_IPv6) {
416bc168a6cSRobert Watson 		inet_pton(AF_INET6, "fe80::1", process32_tid_addr.at_addr);
417bc168a6cSRobert Watson 		process32_tid_addr.at_type = AU_IPv6;
418bc168a6cSRobert Watson 		sprintf(buf, "%s%s", token_filename, "-IPv6");
419bc168a6cSRobert Watson 	} else {
420d9af45c4SRobert Watson 		process32_tid_addr.at_addr[0] = inet_addr("127.0.0.1");
421d9af45c4SRobert Watson 		process32_tid_addr.at_type = AU_IPv4;
422bc168a6cSRobert Watson 		sprintf(buf, "%s%s", token_filename, "-IPv4");
423bc168a6cSRobert Watson 	}
424d9af45c4SRobert Watson 
425d9af45c4SRobert Watson 	process32ex_token = au_to_process32_ex(process32_auid, process32_euid,
426d9af45c4SRobert Watson 	    process32_egid, process32_ruid, process32_rgid, process32_pid,
427d9af45c4SRobert Watson 	    process32_sid, &process32_tid_addr);
428d9af45c4SRobert Watson 	if (process32ex_token == NULL)
429d9af45c4SRobert Watson 		err(EX_UNAVAILABLE, "au_to_process32_ex");
430bc168a6cSRobert Watson 	write_token(directory, buf, process32ex_token);
431bc168a6cSRobert Watson 	free(buf);
432d9af45c4SRobert Watson }
433d9af45c4SRobert Watson 
43422ccb20dSRobert Watson static void
generate_process32ex_record(const char * directory,const char * record_filename,u_int32_t type)435bc168a6cSRobert Watson generate_process32ex_record(const char *directory, const char *record_filename,
436bc168a6cSRobert Watson     u_int32_t type)
43722ccb20dSRobert Watson {
43822ccb20dSRobert Watson 	token_t *process32ex_token;
439bc168a6cSRobert Watson 	char *buf;
44022ccb20dSRobert Watson 
441bc168a6cSRobert Watson 	buf = (char *)malloc(strlen(record_filename) + 6);
442bc168a6cSRobert Watson 	if (type == AU_IPv6) {
443bc168a6cSRobert Watson 		inet_pton(AF_INET6, "fe80::1", process32_tid_addr.at_addr);
444bc168a6cSRobert Watson 		process32_tid_addr.at_type = AU_IPv6;
445bc168a6cSRobert Watson 		sprintf(buf, "%s%s", record_filename, "-IPv6");
446bc168a6cSRobert Watson 	} else {
44722ccb20dSRobert Watson 		process32_tid_addr.at_addr[0] = inet_addr("127.0.0.1");
44822ccb20dSRobert Watson 		process32_tid_addr.at_type = AU_IPv4;
449bc168a6cSRobert Watson 		sprintf(buf, "%s%s", record_filename, "-IPv4");
450bc168a6cSRobert Watson 	}
45122ccb20dSRobert Watson 
45222ccb20dSRobert Watson 	process32ex_token = au_to_process32_ex(process32_auid, process32_euid,
45322ccb20dSRobert Watson 	    process32_egid, process32_ruid, process32_rgid, process32_pid,
45422ccb20dSRobert Watson 	    process32_sid, &process32_tid_addr);
45522ccb20dSRobert Watson 	if (process32ex_token == NULL)
45622ccb20dSRobert Watson 		err(EX_UNAVAILABLE, "au_to_process32_ex");
457bc168a6cSRobert Watson 	write_record(directory, buf, process32ex_token, AUE_NULL);
458bc168a6cSRobert Watson 	free(buf);
459bc168a6cSRobert Watson }
460bc168a6cSRobert Watson 
461bc168a6cSRobert Watson static au_id_t		 process64_auid = 0x12345678;
462bc168a6cSRobert Watson static uid_t		 process64_euid = 0x01234567;
463bc168a6cSRobert Watson static gid_t		 process64_egid = 0x23456789;
464bc168a6cSRobert Watson static uid_t		 process64_ruid = 0x98765432;
465bc168a6cSRobert Watson static gid_t		 process64_rgid = 0x09876543;
466bc168a6cSRobert Watson static pid_t		 process64_pid = 0x13243546;
467bc168a6cSRobert Watson static au_asid_t	 process64_sid = 0x97867564;
468bc168a6cSRobert Watson static au_tid_t		 process64_tid = { 0x16593746 };
469bc168a6cSRobert Watson static au_tid_addr_t	 process64_tid_addr = { 0x16593746 };
470bc168a6cSRobert Watson 
471bc168a6cSRobert Watson static void
generate_process64_token(const char * directory,const char * token_filename)472bc168a6cSRobert Watson generate_process64_token(const char *directory, const char *token_filename)
473bc168a6cSRobert Watson {
474bc168a6cSRobert Watson 	token_t *process64_token;
475bc168a6cSRobert Watson 
476bc168a6cSRobert Watson 	process64_tid.machine = inet_addr("127.0.0.1");
477bc168a6cSRobert Watson 
478bc168a6cSRobert Watson 	process64_token = au_to_process64(process64_auid, process64_euid,
479bc168a6cSRobert Watson 	    process64_egid, process64_ruid, process64_rgid, process64_pid,
480bc168a6cSRobert Watson 	    process64_sid, &process64_tid);
481bc168a6cSRobert Watson 	if (process64_token == NULL)
482bc168a6cSRobert Watson 		err(EX_UNAVAILABLE, "au_to_process64");
483bc168a6cSRobert Watson 	write_token(directory, token_filename, process64_token);
484bc168a6cSRobert Watson }
485bc168a6cSRobert Watson 
486bc168a6cSRobert Watson static void
generate_process64_record(const char * directory,const char * record_filename)487bc168a6cSRobert Watson generate_process64_record(const char *directory, const char *record_filename)
488bc168a6cSRobert Watson {
489bc168a6cSRobert Watson 	token_t *process64_token;
490bc168a6cSRobert Watson 
491bc168a6cSRobert Watson 	process64_tid.machine = inet_addr("127.0.0.1");
492bc168a6cSRobert Watson 
493bc168a6cSRobert Watson 	process64_token = au_to_process64(process64_auid, process64_euid,
494bc168a6cSRobert Watson 	    process64_egid, process64_ruid, process64_rgid, process64_pid,
495bc168a6cSRobert Watson 	    process64_sid, &process64_tid);
496bc168a6cSRobert Watson 	if (process64_token == NULL)
497bc168a6cSRobert Watson 		err(EX_UNAVAILABLE, "au_ti_process64");
498bc168a6cSRobert Watson 	write_record(directory, record_filename, process64_token, AUE_NULL);
499bc168a6cSRobert Watson }
500bc168a6cSRobert Watson 
501bc168a6cSRobert Watson static void
generate_process64ex_token(const char * directory,const char * token_filename,u_int32_t type)502bc168a6cSRobert Watson generate_process64ex_token(const char *directory, const char *token_filename,
503bc168a6cSRobert Watson     u_int32_t type)
504bc168a6cSRobert Watson {
505bc168a6cSRobert Watson 	token_t *process64ex_token;
506bc168a6cSRobert Watson 	char *buf;
507bc168a6cSRobert Watson 
508bc168a6cSRobert Watson 	buf = (char *)malloc(strlen(token_filename) + 6);
509bc168a6cSRobert Watson 	if (type == AU_IPv6) {
510bc168a6cSRobert Watson 		inet_pton(AF_INET6, "fe80::1", process64_tid_addr.at_addr);
511bc168a6cSRobert Watson 		process64_tid_addr.at_type = AU_IPv6;
512bc168a6cSRobert Watson 		sprintf(buf, "%s%s", token_filename, "-IPv6");
513bc168a6cSRobert Watson 	} else {
514bc168a6cSRobert Watson 		process64_tid_addr.at_addr[0] = inet_addr("127.0.0.1");
515bc168a6cSRobert Watson 		process64_tid_addr.at_type = AU_IPv4;
516bc168a6cSRobert Watson 		sprintf(buf, "%s%s", token_filename, "-IPv4");
517bc168a6cSRobert Watson 	}
518bc168a6cSRobert Watson 
519bc168a6cSRobert Watson 	process64ex_token = au_to_process64_ex(process64_auid, process64_euid,
520bc168a6cSRobert Watson 	    process64_egid, process64_ruid, process64_rgid, process64_pid,
521bc168a6cSRobert Watson 	    process64_sid, &process64_tid_addr);
522bc168a6cSRobert Watson 	if (process64ex_token == NULL)
523bc168a6cSRobert Watson 		err(EX_UNAVAILABLE, "au_to_process64_ex");
524bc168a6cSRobert Watson 	write_token(directory, buf, process64ex_token);
525bc168a6cSRobert Watson 	free(buf);
526bc168a6cSRobert Watson }
527bc168a6cSRobert Watson 
528bc168a6cSRobert Watson static void
generate_process64ex_record(const char * directory,const char * record_filename,u_int32_t type)529bc168a6cSRobert Watson generate_process64ex_record(const char *directory, const char *record_filename,
530bc168a6cSRobert Watson     u_int32_t type)
531bc168a6cSRobert Watson {
532bc168a6cSRobert Watson 	token_t *process64ex_token;
533bc168a6cSRobert Watson 	char *buf;
534bc168a6cSRobert Watson 
535bc168a6cSRobert Watson 	buf = (char *)malloc(strlen(record_filename) + 6);
536bc168a6cSRobert Watson 	if (type == AU_IPv6) {
537bc168a6cSRobert Watson 		inet_pton(AF_INET6, "fe80::1", process64_tid_addr.at_addr);
538bc168a6cSRobert Watson 		process64_tid_addr.at_type = AU_IPv6;
539bc168a6cSRobert Watson 		sprintf(buf, "%s%s", record_filename, "-IPv6");
540bc168a6cSRobert Watson 	} else {
541bc168a6cSRobert Watson 		process64_tid_addr.at_addr[0] = inet_addr("127.0.0.1");
542bc168a6cSRobert Watson 		process64_tid_addr.at_type = AU_IPv4;
543bc168a6cSRobert Watson 		sprintf(buf, "%s%s", record_filename, "-IPv4");
544bc168a6cSRobert Watson 	}
545bc168a6cSRobert Watson 
546bc168a6cSRobert Watson 	process64ex_token = au_to_process64_ex(process64_auid, process64_euid,
547bc168a6cSRobert Watson 	    process64_egid, process64_ruid, process64_rgid, process64_pid,
548bc168a6cSRobert Watson 	    process64_sid, &process64_tid_addr);
549bc168a6cSRobert Watson 	if (process64ex_token == NULL)
550bc168a6cSRobert Watson 		err(EX_UNAVAILABLE, "au_to_process64_ex");
551bc168a6cSRobert Watson 	write_record(directory, buf, process64ex_token, AUE_NULL);
552bc168a6cSRobert Watson 	free(buf);
55322ccb20dSRobert Watson }
55422ccb20dSRobert Watson 
5557a0a89d2SRobert Watson static char		 return32_status = EINVAL;
556506764c6SRobert Watson static uint32_t		 return32_ret = 0x12345678;
557506764c6SRobert Watson 
558506764c6SRobert Watson static void
generate_return32_token(const char * directory,const char * token_filename)559506764c6SRobert Watson generate_return32_token(const char *directory, const char *token_filename)
560506764c6SRobert Watson {
561506764c6SRobert Watson 	token_t *return32_token;
562506764c6SRobert Watson 
5637a0a89d2SRobert Watson 	return32_token = au_to_return32(au_errno_to_bsm(return32_status),
5647a0a89d2SRobert Watson 	    return32_ret);
565506764c6SRobert Watson 	if (return32_token == NULL)
566506764c6SRobert Watson 		err(EX_UNAVAILABLE, "au_to_return32");
567506764c6SRobert Watson 	write_token(directory, token_filename, return32_token);
568506764c6SRobert Watson }
569506764c6SRobert Watson 
570506764c6SRobert Watson static void
generate_return32_record(const char * directory,const char * record_filename)571506764c6SRobert Watson generate_return32_record(const char *directory, const char *record_filename)
572506764c6SRobert Watson {
573506764c6SRobert Watson 	token_t *return32_token;
574506764c6SRobert Watson 
5757a0a89d2SRobert Watson 	return32_token = au_to_return32(au_errno_to_bsm(return32_status),
5767a0a89d2SRobert Watson 	    return32_ret);
577506764c6SRobert Watson 	if (return32_token == NULL)
578506764c6SRobert Watson 		err(EX_UNAVAILABLE, "au_to_return32");
579506764c6SRobert Watson 	write_record(directory, record_filename, return32_token, AUE_NULL);
580506764c6SRobert Watson }
581506764c6SRobert Watson 
582506764c6SRobert Watson static char		*text_token_text = "This is a test.";
583506764c6SRobert Watson 
584506764c6SRobert Watson static void
generate_text_token(const char * directory,const char * token_filename)585506764c6SRobert Watson generate_text_token(const char *directory, const char *token_filename)
586506764c6SRobert Watson {
587506764c6SRobert Watson 	token_t *text_token;
588506764c6SRobert Watson 
589506764c6SRobert Watson 	text_token = au_to_text(text_token_text);
590506764c6SRobert Watson 	if (text_token == NULL)
591506764c6SRobert Watson 		err(EX_UNAVAILABLE, "au_to_text");
592506764c6SRobert Watson 	write_token(directory, token_filename, text_token);
593506764c6SRobert Watson }
594506764c6SRobert Watson 
595506764c6SRobert Watson static void
generate_text_record(const char * directory,const char * record_filename)596506764c6SRobert Watson generate_text_record(const char *directory, const char *record_filename)
597506764c6SRobert Watson {
598506764c6SRobert Watson 	token_t *text_token;
599506764c6SRobert Watson 
600506764c6SRobert Watson 	text_token = au_to_text(text_token_text);
601506764c6SRobert Watson 	if (text_token == NULL)
602506764c6SRobert Watson 		err(EX_UNAVAILABLE, "au_to_text");
603506764c6SRobert Watson 	write_record(directory, record_filename, text_token, AUE_NULL);
604506764c6SRobert Watson }
605506764c6SRobert Watson 
606506764c6SRobert Watson static char		 opaque_token_data[] = {0xaa, 0xbb, 0xcc, 0xdd};
607506764c6SRobert Watson static int		 opaque_token_bytes = sizeof(opaque_token_data);
608506764c6SRobert Watson 
609506764c6SRobert Watson static void
generate_opaque_token(const char * directory,const char * token_filename)610506764c6SRobert Watson generate_opaque_token(const char *directory, const char *token_filename)
611506764c6SRobert Watson {
612506764c6SRobert Watson 	token_t *opaque_token;
613506764c6SRobert Watson 
614506764c6SRobert Watson 	opaque_token = au_to_opaque(opaque_token_data, opaque_token_bytes);
615506764c6SRobert Watson 	if (opaque_token == NULL)
616506764c6SRobert Watson 		err(EX_UNAVAILABLE, "au_to_opaque");
617506764c6SRobert Watson 	write_token(directory, token_filename, opaque_token);
618506764c6SRobert Watson }
619506764c6SRobert Watson 
620506764c6SRobert Watson static void
generate_opaque_record(const char * directory,const char * record_filename)621506764c6SRobert Watson generate_opaque_record(const char *directory, const char *record_filename)
622506764c6SRobert Watson {
623506764c6SRobert Watson 	token_t *opaque_token;
624506764c6SRobert Watson 
625506764c6SRobert Watson 	opaque_token = au_to_opaque(opaque_token_data, opaque_token_bytes);
626506764c6SRobert Watson 	if (opaque_token == NULL)
627506764c6SRobert Watson 		err(EX_UNAVAILABLE, "au_to_opaque");
628506764c6SRobert Watson 	write_record(directory, record_filename, opaque_token, AUE_NULL);
629506764c6SRobert Watson }
630506764c6SRobert Watson 
631506764c6SRobert Watson static struct in_addr	 in_addr_token_addr;
632506764c6SRobert Watson 
633506764c6SRobert Watson static void
generate_in_addr_token(const char * directory,const char * token_filename)634506764c6SRobert Watson generate_in_addr_token(const char *directory, const char *token_filename)
635506764c6SRobert Watson {
636506764c6SRobert Watson 	token_t *in_addr_token;
637506764c6SRobert Watson 
638506764c6SRobert Watson 	in_addr_token_addr.s_addr = inet_addr("192.168.100.15");
639506764c6SRobert Watson 
640506764c6SRobert Watson 	in_addr_token = au_to_in_addr(&in_addr_token_addr);
641506764c6SRobert Watson 	if (in_addr_token == NULL)
642506764c6SRobert Watson 		err(EX_UNAVAILABLE, "au_to_in_addr");
643506764c6SRobert Watson 	write_token(directory, token_filename, in_addr_token);
644506764c6SRobert Watson }
645506764c6SRobert Watson 
646506764c6SRobert Watson static void
generate_in_addr_record(const char * directory,const char * record_filename)647506764c6SRobert Watson generate_in_addr_record(const char *directory, const char *record_filename)
648506764c6SRobert Watson {
649506764c6SRobert Watson 	token_t *in_addr_token;
650506764c6SRobert Watson 
651506764c6SRobert Watson 	in_addr_token_addr.s_addr = inet_addr("192.168.100.15");
652506764c6SRobert Watson 
653506764c6SRobert Watson 	in_addr_token = au_to_in_addr(&in_addr_token_addr);
654506764c6SRobert Watson 	if (in_addr_token == NULL)
655506764c6SRobert Watson 		err(EX_UNAVAILABLE, "au_to_in_addr");
656506764c6SRobert Watson 	write_record(directory, record_filename, in_addr_token, AUE_NULL);
657506764c6SRobert Watson }
658506764c6SRobert Watson 
659506764c6SRobert Watson static struct ip	 ip_token_ip;
660506764c6SRobert Watson static u_char		 ip_token_ip_v = 4;
661506764c6SRobert Watson static uint16_t		 ip_token_ip_id = 0x5478;
662506764c6SRobert Watson static u_char		 ip_token_ip_ttl = 64;
663506764c6SRobert Watson static u_char		 ip_token_ip_p = IPPROTO_ICMP;
664506764c6SRobert Watson static struct in_addr	 ip_token_ip_src;
665506764c6SRobert Watson static struct in_addr	 ip_token_ip_dst;
666506764c6SRobert Watson 
667506764c6SRobert Watson static void
generate_ip_token(const char * directory,const char * token_filename)668506764c6SRobert Watson generate_ip_token(const char *directory, const char *token_filename)
669506764c6SRobert Watson {
670506764c6SRobert Watson 	token_t *ip_token;
671506764c6SRobert Watson 
672506764c6SRobert Watson 	ip_token_ip_src.s_addr = inet_addr("192.168.100.155");
673506764c6SRobert Watson 	ip_token_ip_dst.s_addr = inet_addr("192.168.110.48");
674506764c6SRobert Watson 
675506764c6SRobert Watson 	memset(&ip_token_ip, 0, sizeof(ip_token_ip));
676506764c6SRobert Watson 	ip_token_ip.ip_v = ip_token_ip_v;
677506764c6SRobert Watson 	ip_token_ip.ip_len = htons(sizeof(ip_token_ip));
678506764c6SRobert Watson 	ip_token_ip.ip_id = htons(ip_token_ip_id);
679506764c6SRobert Watson 	ip_token_ip.ip_ttl = ip_token_ip_ttl;
680506764c6SRobert Watson 	ip_token_ip.ip_p = ip_token_ip_p;
681506764c6SRobert Watson 	ip_token_ip.ip_src = ip_token_ip_src;
682506764c6SRobert Watson 	ip_token_ip.ip_dst = ip_token_ip_dst;
683506764c6SRobert Watson 
684506764c6SRobert Watson 	ip_token = au_to_ip(&ip_token_ip);
685506764c6SRobert Watson 	if (ip_token == NULL)
686506764c6SRobert Watson 		err(EX_UNAVAILABLE, "au_to_ip");
687506764c6SRobert Watson 	write_token(directory, token_filename, ip_token);
688506764c6SRobert Watson }
689506764c6SRobert Watson 
690506764c6SRobert Watson static void
generate_ip_record(const char * directory,const char * record_filename)691506764c6SRobert Watson generate_ip_record(const char *directory, const char *record_filename)
692506764c6SRobert Watson {
693506764c6SRobert Watson 	token_t *ip_token;
694506764c6SRobert Watson 
695506764c6SRobert Watson 	ip_token_ip_src.s_addr = inet_addr("192.168.100.155");
696506764c6SRobert Watson 	ip_token_ip_dst.s_addr = inet_addr("192.168.110.48");
697506764c6SRobert Watson 
698506764c6SRobert Watson 	memset(&ip_token_ip, 0, sizeof(ip_token_ip));
699506764c6SRobert Watson 	ip_token_ip.ip_v = ip_token_ip_v;
700506764c6SRobert Watson 	ip_token_ip.ip_len = htons(sizeof(ip_token_ip));
701506764c6SRobert Watson 	ip_token_ip.ip_id = htons(ip_token_ip_id);
702506764c6SRobert Watson 	ip_token_ip.ip_ttl = ip_token_ip_ttl;
703506764c6SRobert Watson 	ip_token_ip.ip_p = ip_token_ip_p;
704506764c6SRobert Watson 	ip_token_ip.ip_src = ip_token_ip_src;
705506764c6SRobert Watson 	ip_token_ip.ip_dst = ip_token_ip_dst;
706506764c6SRobert Watson 
707506764c6SRobert Watson 	ip_token = au_to_ip(&ip_token_ip);
708506764c6SRobert Watson 	if (ip_token == NULL)
709506764c6SRobert Watson 		err(EX_UNAVAILABLE, "au_to_ip");
710506764c6SRobert Watson 	write_record(directory, record_filename, ip_token, AUE_NULL);
711506764c6SRobert Watson }
712506764c6SRobert Watson 
713506764c6SRobert Watson static u_int16_t		 iport_token_iport;
714506764c6SRobert Watson 
715506764c6SRobert Watson static void
generate_iport_token(const char * directory,const char * token_filename)716506764c6SRobert Watson generate_iport_token(const char *directory, const char *token_filename)
717506764c6SRobert Watson {
718506764c6SRobert Watson 	token_t *iport_token;
719506764c6SRobert Watson 
720506764c6SRobert Watson 	iport_token_iport = htons(80);
721506764c6SRobert Watson 
722506764c6SRobert Watson 	iport_token = au_to_iport(iport_token_iport);
723506764c6SRobert Watson 	if (iport_token == NULL)
724506764c6SRobert Watson 		err(EX_UNAVAILABLE, "au_to_iport");
725506764c6SRobert Watson 	write_token(directory, token_filename, iport_token);
726506764c6SRobert Watson }
727506764c6SRobert Watson 
728506764c6SRobert Watson static void
generate_iport_record(const char * directory,const char * record_filename)729506764c6SRobert Watson generate_iport_record(const char *directory, const char *record_filename)
730506764c6SRobert Watson {
731506764c6SRobert Watson 	token_t *iport_token;
732506764c6SRobert Watson 
733506764c6SRobert Watson 	iport_token_iport = htons(80);
734506764c6SRobert Watson 
735506764c6SRobert Watson 	iport_token = au_to_iport(iport_token_iport);
736506764c6SRobert Watson 	if (iport_token == NULL)
737506764c6SRobert Watson 		err(EX_UNAVAILABLE, "au_to_iport");
738506764c6SRobert Watson 	write_record(directory, record_filename, iport_token, AUE_NULL);
739506764c6SRobert Watson }
740506764c6SRobert Watson 
741506764c6SRobert Watson static char	 arg32_token_n = 3;
742506764c6SRobert Watson static char	*arg32_token_text = "test_arg32_token";
743506764c6SRobert Watson static uint32_t	 arg32_token_v = 0xabcdef00;
744506764c6SRobert Watson 
745506764c6SRobert Watson static void
generate_arg32_token(const char * directory,const char * token_filename)746506764c6SRobert Watson generate_arg32_token(const char *directory, const char *token_filename)
747506764c6SRobert Watson {
748506764c6SRobert Watson 	token_t *arg32_token;
749506764c6SRobert Watson 
750506764c6SRobert Watson 	arg32_token = au_to_arg32(arg32_token_n, arg32_token_text,
751506764c6SRobert Watson 	    arg32_token_v);
752506764c6SRobert Watson 	if (arg32_token == NULL)
753506764c6SRobert Watson 		err(EX_UNAVAILABLE, "au_to_arg32");
754506764c6SRobert Watson 	write_token(directory, token_filename, arg32_token);
755506764c6SRobert Watson }
756506764c6SRobert Watson 
757506764c6SRobert Watson static void
generate_arg32_record(const char * directory,const char * record_filename)758506764c6SRobert Watson generate_arg32_record(const char *directory, const char *record_filename)
759506764c6SRobert Watson {
760506764c6SRobert Watson 	token_t *arg32_token;
761506764c6SRobert Watson 
762506764c6SRobert Watson 	arg32_token = au_to_arg32(arg32_token_n, arg32_token_text,
763506764c6SRobert Watson 	    arg32_token_v);
764506764c6SRobert Watson 	if (arg32_token == NULL)
765506764c6SRobert Watson 		err(EX_UNAVAILABLE, "au_to_arg32");
766506764c6SRobert Watson 	write_record(directory, record_filename, arg32_token, AUE_NULL);
767506764c6SRobert Watson }
768506764c6SRobert Watson 
769506764c6SRobert Watson static long	 seq_audit_count = 0x12345678;
770506764c6SRobert Watson 
771506764c6SRobert Watson static void
generate_seq_token(const char * directory,const char * token_filename)772506764c6SRobert Watson generate_seq_token(const char *directory, const char *token_filename)
773506764c6SRobert Watson {
774506764c6SRobert Watson 	token_t *seq_token;
775506764c6SRobert Watson 
776506764c6SRobert Watson 	seq_token = au_to_seq(seq_audit_count);
777506764c6SRobert Watson 	if (seq_token == NULL)
778506764c6SRobert Watson 		err(EX_UNAVAILABLE, "au_to_seq");
779506764c6SRobert Watson 	write_token(directory, token_filename, seq_token);
780506764c6SRobert Watson }
781506764c6SRobert Watson 
782506764c6SRobert Watson static void
generate_seq_record(const char * directory,const char * record_filename)783506764c6SRobert Watson generate_seq_record(const char *directory, const char *record_filename)
784506764c6SRobert Watson {
785506764c6SRobert Watson 	token_t *seq_token;
786506764c6SRobert Watson 
787506764c6SRobert Watson 	seq_token = au_to_seq(seq_audit_count);
788506764c6SRobert Watson 	if (seq_token == NULL)
789506764c6SRobert Watson 		err(EX_UNAVAILABLE, "au_to_seq");
790506764c6SRobert Watson 	write_record(directory, record_filename, seq_token, AUE_NULL);
791506764c6SRobert Watson }
792506764c6SRobert Watson 
793c74c7b73SRobert Watson #if 0
794506764c6SRobert Watson /*
795506764c6SRobert Watson  * AUT_ACL
796506764c6SRobert Watson  */
797506764c6SRobert Watson 
798506764c6SRobert Watson static void
799506764c6SRobert Watson generate_attr_token(const char *directory, const char *token_filename)
800506764c6SRobert Watson {
801506764c6SRobert Watson 	token_t *attr_token;
802506764c6SRobert Watson 
803506764c6SRobert Watson }
804506764c6SRobert Watson 
805506764c6SRobert Watson static void
806506764c6SRobert Watson generate_attr_record(const char *directory, const char *record_filename)
807506764c6SRobert Watson {
808506764c6SRobert Watson 	token_t *attr_token;
809506764c6SRobert Watson 
810506764c6SRobert Watson }
811506764c6SRobert Watson 
812506764c6SRobert Watson static void
813506764c6SRobert Watson generate_ipc_perm_token(const char *directory, const char *token_filename)
814506764c6SRobert Watson {
815506764c6SRobert Watson 	token_t *ipc_perm_token;
816506764c6SRobert Watson 
817506764c6SRobert Watson }
818506764c6SRobert Watson 
819506764c6SRobert Watson static void
820506764c6SRobert Watson generate_ipc_perm_record(const char *directory, const char *record_filename)
821506764c6SRobert Watson {
822506764c6SRobert Watson 	token_t *ipc_perm_token;
823506764c6SRobert Watson 
824506764c6SRobert Watson }
825c74c7b73SRobert Watson #endif
826506764c6SRobert Watson 
827c74c7b73SRobert Watson #if 0
828506764c6SRobert Watson /*
829506764c6SRobert Watson  * AUT_LABEL
830506764c6SRobert Watson  */
831506764c6SRobert Watson 
832506764c6SRobert Watson static void
833506764c6SRobert Watson generate_groups_token(const char *directory, const char *token_filename)
834506764c6SRobert Watson {
835506764c6SRobert Watson 	token_t *groups_token;
836506764c6SRobert Watson 
837506764c6SRobert Watson }
838506764c6SRobert Watson 
839506764c6SRobert Watson static void
840506764c6SRobert Watson generate_groups_record(const char *directory, const char *record_filename)
841506764c6SRobert Watson {
842506764c6SRobert Watson 	token_t *groups_token;
843506764c6SRobert Watson 
844506764c6SRobert Watson }
845c74c7b73SRobert Watson #endif
846506764c6SRobert Watson 
847506764c6SRobert Watson /*
848506764c6SRobert Watson  * AUT_ILABEL
849506764c6SRobert Watson  */
850506764c6SRobert Watson 
851506764c6SRobert Watson /*
852506764c6SRobert Watson  * AUT_SLABEL
853506764c6SRobert Watson  */
854506764c6SRobert Watson 
855506764c6SRobert Watson /*
856506764c6SRobert Watson  * AUT_CLEAR
857506764c6SRobert Watson  */
858506764c6SRobert Watson 
859506764c6SRobert Watson /*
860506764c6SRobert Watson  * AUT_PRIV
861506764c6SRobert Watson  */
862506764c6SRobert Watson 
863506764c6SRobert Watson /*
864506764c6SRobert Watson  * AUT_UPRIV
865506764c6SRobert Watson  */
866506764c6SRobert Watson 
867506764c6SRobert Watson /*
868506764c6SRobert Watson  * AUT_LIAISON
869506764c6SRobert Watson  */
870506764c6SRobert Watson 
871506764c6SRobert Watson /*
872506764c6SRobert Watson  * AUT_NEWGROUPS
873506764c6SRobert Watson  */
874506764c6SRobert Watson 
875506764c6SRobert Watson /*
876506764c6SRobert Watson  * AUT_EXEC_ARGS
877506764c6SRobert Watson  */
878506764c6SRobert Watson 
879506764c6SRobert Watson /*
880506764c6SRobert Watson  * AUT_EXEC_ENV
881506764c6SRobert Watson  */
882506764c6SRobert Watson 
883c74c7b73SRobert Watson #if 0
884506764c6SRobert Watson static void
885506764c6SRobert Watson generate_attr32_token(const char *directory, const char *token_filename)
886506764c6SRobert Watson {
887506764c6SRobert Watson 	token_t *attr32_token;
888506764c6SRobert Watson 
889506764c6SRobert Watson }
890506764c6SRobert Watson 
891506764c6SRobert Watson static void
892506764c6SRobert Watson generate_attr32_record(const char *directory, const char *record_filename)
893506764c6SRobert Watson {
894506764c6SRobert Watson 	token_t *attr32_token;
895506764c6SRobert Watson 
896506764c6SRobert Watson }
897c74c7b73SRobert Watson #endif
898506764c6SRobert Watson 
899bc168a6cSRobert Watson static char	*zonename_sample = "testzone";
900bc168a6cSRobert Watson 
901bc168a6cSRobert Watson static void
generate_zonename_token(const char * directory,const char * token_filename)902bc168a6cSRobert Watson generate_zonename_token(const char *directory, const char *token_filename)
903bc168a6cSRobert Watson {
904bc168a6cSRobert Watson 	token_t *zonename_token;
905bc168a6cSRobert Watson 
906bc168a6cSRobert Watson 	zonename_token = au_to_zonename(zonename_sample);
907bc168a6cSRobert Watson 	if (zonename_token == NULL)
908bc168a6cSRobert Watson 		err(EX_UNAVAILABLE, "au_to_zonename");
909bc168a6cSRobert Watson 	write_token(directory, token_filename, zonename_token);
910bc168a6cSRobert Watson }
911bc168a6cSRobert Watson 
912bc168a6cSRobert Watson static void
generate_zonename_record(const char * directory,const char * record_filename)913bc168a6cSRobert Watson generate_zonename_record(const char *directory, const char *record_filename)
914bc168a6cSRobert Watson {
915bc168a6cSRobert Watson 	token_t *zonename_token;
916bc168a6cSRobert Watson 
917bc168a6cSRobert Watson 	zonename_token = au_to_zonename(zonename_sample);
918bc168a6cSRobert Watson 	if (zonename_token == NULL)
919bc168a6cSRobert Watson 		err(EX_UNAVAILABLE, "au_to_zonename");
920bc168a6cSRobert Watson 	write_record(directory, record_filename, zonename_token, AUE_NULL);
921bc168a6cSRobert Watson }
922bc168a6cSRobert Watson 
923c74c7b73SRobert Watson static u_short socketex_domain = PF_INET;
9247a0a89d2SRobert Watson static u_short socketex_type = SOCK_STREAM;
9257a0a89d2SRobert Watson static struct sockaddr_in socketex_laddr, socketex_raddr;
9267a0a89d2SRobert Watson 
9277a0a89d2SRobert Watson static void
generate_socketex_token(const char * directory,const char * token_filename)9287a0a89d2SRobert Watson generate_socketex_token(const char *directory, const char *token_filename)
9297a0a89d2SRobert Watson {
9307a0a89d2SRobert Watson 	token_t *socketex_token;
9317a0a89d2SRobert Watson 
9327a0a89d2SRobert Watson 	bzero(&socketex_laddr, sizeof(socketex_laddr));
9337a0a89d2SRobert Watson 	socketex_laddr.sin_family = AF_INET;
9347a0a89d2SRobert Watson 	socketex_laddr.sin_len = sizeof(socketex_laddr);
9357a0a89d2SRobert Watson 	socketex_laddr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
9367a0a89d2SRobert Watson 
9377a0a89d2SRobert Watson 	bzero(&socketex_raddr, sizeof(socketex_raddr));
9387a0a89d2SRobert Watson 	socketex_raddr.sin_family = AF_INET;
9397a0a89d2SRobert Watson 	socketex_raddr.sin_len = sizeof(socketex_raddr);
9407a0a89d2SRobert Watson 	socketex_raddr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
9417a0a89d2SRobert Watson 
942c74c7b73SRobert Watson 	socketex_token = au_to_socket_ex(au_domain_to_bsm(socketex_domain),
943c74c7b73SRobert Watson 	    au_socket_type_to_bsm(socketex_type),
9447a0a89d2SRobert Watson 	    (struct sockaddr *)&socketex_laddr,
9457a0a89d2SRobert Watson 	    (struct sockaddr *)&socketex_raddr);
9467a0a89d2SRobert Watson 	if (socketex_token == NULL)
9477a0a89d2SRobert Watson 		err(EX_UNAVAILABLE, "au_to_socket_ex");
9487a0a89d2SRobert Watson 	write_token(directory, token_filename, socketex_token);
9497a0a89d2SRobert Watson }
9507a0a89d2SRobert Watson 
9517a0a89d2SRobert Watson static void
generate_socketex_record(const char * directory,const char * record_filename)9527a0a89d2SRobert Watson generate_socketex_record(const char *directory, const char *record_filename)
9537a0a89d2SRobert Watson {
9547a0a89d2SRobert Watson 	token_t *socketex_token;
9557a0a89d2SRobert Watson 
9567a0a89d2SRobert Watson 	bzero(&socketex_laddr, sizeof(socketex_laddr));
9577a0a89d2SRobert Watson 	socketex_laddr.sin_family = AF_INET;
9587a0a89d2SRobert Watson 	socketex_laddr.sin_len = sizeof(socketex_laddr);
9597a0a89d2SRobert Watson 	socketex_laddr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
9607a0a89d2SRobert Watson 
9617a0a89d2SRobert Watson 	bzero(&socketex_raddr, sizeof(socketex_raddr));
9627a0a89d2SRobert Watson 	socketex_raddr.sin_family = AF_INET;
9637a0a89d2SRobert Watson 	socketex_raddr.sin_len = sizeof(socketex_raddr);
9647a0a89d2SRobert Watson 	socketex_raddr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
9657a0a89d2SRobert Watson 
966c74c7b73SRobert Watson 	socketex_token = au_to_socket_ex(au_domain_to_bsm(socketex_domain),
967c74c7b73SRobert Watson 	    au_socket_type_to_bsm(socketex_type),
9687a0a89d2SRobert Watson 	    (struct sockaddr *)&socketex_laddr,
9697a0a89d2SRobert Watson 	    (struct sockaddr *)&socketex_raddr);
9707a0a89d2SRobert Watson 	if (socketex_token == NULL)
9717a0a89d2SRobert Watson 		err(EX_UNAVAILABLE, "au_to_socket_ex");
9727a0a89d2SRobert Watson 	write_record(directory, record_filename, socketex_token, AUE_NULL);
9737a0a89d2SRobert Watson }
9747a0a89d2SRobert Watson 
9757a0a89d2SRobert Watson /*
9767a0a89d2SRobert Watson  * Generate a series of error-number specific return tokens in records.
9777a0a89d2SRobert Watson  */
9787a0a89d2SRobert Watson static void
generate_error_record(const char * directory,const char * filename,int error)9797a0a89d2SRobert Watson generate_error_record(const char *directory, const char *filename, int error)
9807a0a89d2SRobert Watson {
9817a0a89d2SRobert Watson 	char pathname[PATH_MAX];
9827a0a89d2SRobert Watson 	token_t *return32_token;
9837a0a89d2SRobert Watson 
9847a0a89d2SRobert Watson 	return32_token = au_to_return32(au_errno_to_bsm(error), -1);
9857a0a89d2SRobert Watson 	if (return32_token == NULL)
9867a0a89d2SRobert Watson 		err(EX_UNAVAILABLE, "au_to_return32");
9877a0a89d2SRobert Watson 	(void)snprintf(pathname, PATH_MAX, "%s_record", filename);
9887a0a89d2SRobert Watson 	write_record(directory, pathname, return32_token, AUE_NULL);
9897a0a89d2SRobert Watson }
9907a0a89d2SRobert Watson 
9917a0a89d2SRobert Watson /*
9927a0a89d2SRobert Watson  * Not all the error numbers, just a few present on all platforms for now.
9937a0a89d2SRobert Watson  */
9947a0a89d2SRobert Watson const struct {
9957a0a89d2SRobert Watson 	int error_number;
9967a0a89d2SRobert Watson 	const char *error_name;
9977a0a89d2SRobert Watson } error_list[] = {
9987a0a89d2SRobert Watson 	{ EPERM, "EPERM" },
9997a0a89d2SRobert Watson 	{ ENOENT, "ENOENT" },
10007a0a89d2SRobert Watson 	{ ESRCH, "ESRCH" },
10017a0a89d2SRobert Watson 	{ EINTR, "EINTR" },
10027a0a89d2SRobert Watson 	{ EIO, "EIO" },
10037a0a89d2SRobert Watson 	{ ENXIO, "ENXIO" },
10047a0a89d2SRobert Watson 	{ E2BIG, "E2BIG" },
10057a0a89d2SRobert Watson 	{ ENOEXEC, "ENOEXEC" },
10067a0a89d2SRobert Watson 	{ EBADF, "EBADF" },
10077a0a89d2SRobert Watson 	{ ECHILD, "ECHILD" },
10087a0a89d2SRobert Watson 	{ EDEADLK, "EDEADLK" },
10097a0a89d2SRobert Watson 	{ ENOMEM, "ENOMEM" },
10107a0a89d2SRobert Watson 	{ EACCES, "EACCES" },
10117a0a89d2SRobert Watson 	{ EFAULT, "EFAULT" },
10127a0a89d2SRobert Watson 	{ ENOTBLK, "ENOTBLK" },
10137a0a89d2SRobert Watson 	{ EBUSY, "EBUSY" },
10147a0a89d2SRobert Watson 	{ EEXIST, "EEXIST" },
10157a0a89d2SRobert Watson 	{ EXDEV, "EXDEV" },
10167a0a89d2SRobert Watson 	{ ENODEV, "ENODEV" },
10177a0a89d2SRobert Watson 	{ ENOTDIR, "ENOTDIR" },
10187a0a89d2SRobert Watson 	{ EISDIR, "EISDIR" },
10197a0a89d2SRobert Watson 	{ EINVAL, "EINVAL" },
10207a0a89d2SRobert Watson 	{ ENFILE, "ENFILE" },
10217a0a89d2SRobert Watson 	{ EMFILE, "EMFILE" },
10227a0a89d2SRobert Watson 	{ ENOTTY, "ENOTTY" },
10237a0a89d2SRobert Watson 	{ ETXTBSY, "ETXTBSY" },
10247a0a89d2SRobert Watson 	{ EFBIG, "EFBIG" },
10257a0a89d2SRobert Watson 	{ ENOSPC, "ENOSPC" },
10267a0a89d2SRobert Watson 	{ ESPIPE, "ESPIPE" },
10277a0a89d2SRobert Watson 	{ EROFS, "EROFS" },
10287a0a89d2SRobert Watson 	{ EMLINK, "EMLINK" },
10297a0a89d2SRobert Watson 	{ EPIPE, "EPIPE" }
10307a0a89d2SRobert Watson };
10317a0a89d2SRobert Watson const int error_list_count = sizeof(error_list)/sizeof(error_list[0]);
10327a0a89d2SRobert Watson 
10337a0a89d2SRobert Watson static void
do_error_records(const char * directory)10347a0a89d2SRobert Watson do_error_records(const char *directory)
10357a0a89d2SRobert Watson {
10367a0a89d2SRobert Watson 	int i;
10377a0a89d2SRobert Watson 
10387a0a89d2SRobert Watson 	for (i = 0; i < error_list_count; i++)
10397a0a89d2SRobert Watson 		generate_error_record(directory, error_list[i].error_name,
10407a0a89d2SRobert Watson 		    error_list[i].error_number);
10417a0a89d2SRobert Watson }
10427a0a89d2SRobert Watson 
1043506764c6SRobert Watson int
main(int argc,char * argv[])1044506764c6SRobert Watson main(int argc, char *argv[])
1045506764c6SRobert Watson {
1046506764c6SRobert Watson 	const char *directory;
1047506764c6SRobert Watson 	int ch;
1048506764c6SRobert Watson 
1049506764c6SRobert Watson 	while ((ch = getopt(argc, argv, "rt")) != -1) {
1050506764c6SRobert Watson 		switch (ch) {
1051506764c6SRobert Watson 		case 'r':
1052506764c6SRobert Watson 			do_records++;
1053506764c6SRobert Watson 			break;
1054506764c6SRobert Watson 
1055506764c6SRobert Watson 		case 't':
1056506764c6SRobert Watson 			do_tokens++;
1057506764c6SRobert Watson 			break;
1058506764c6SRobert Watson 
1059506764c6SRobert Watson 		default:
1060506764c6SRobert Watson 			usage();
1061506764c6SRobert Watson 		}
1062506764c6SRobert Watson 	}
1063506764c6SRobert Watson 
1064506764c6SRobert Watson 	argc -= optind;
1065506764c6SRobert Watson 	argv += optind;
1066506764c6SRobert Watson 
1067506764c6SRobert Watson 	if (argc != 1)
1068506764c6SRobert Watson 		usage();
1069506764c6SRobert Watson 
1070506764c6SRobert Watson 	directory = argv[0];
1071506764c6SRobert Watson 
1072506764c6SRobert Watson 	if (mkdir(directory, 0755) < 0 && errno != EEXIST)
1073506764c6SRobert Watson 		err(EX_OSERR, "mkdir: %s", directory);
1074506764c6SRobert Watson 
1075506764c6SRobert Watson 	if (do_tokens) {
1076506764c6SRobert Watson 		generate_file_token(directory, "file_token");
1077506764c6SRobert Watson 		generate_trailer_token(directory, "trailer_token");
1078506764c6SRobert Watson 		generate_header32_token(directory, "header32_token");
1079506764c6SRobert Watson 		generate_data_token(directory, "data_token");
1080506764c6SRobert Watson 		generate_ipc_token(directory, "ipc_token");
1081506764c6SRobert Watson 		generate_path_token(directory, "path_token");
1082506764c6SRobert Watson 		generate_subject32_token(directory, "subject32_token");
1083bc168a6cSRobert Watson 		generate_subject32ex_token(directory, "subject32ex_token",
1084bc168a6cSRobert Watson 		    AU_IPv4);
1085bc168a6cSRobert Watson 		generate_subject32ex_token(directory, "subject32ex_token",
1086bc168a6cSRobert Watson 		    AU_IPv6);
1087506764c6SRobert Watson 		generate_process32_token(directory, "process32_token");
1088bc168a6cSRobert Watson 		generate_process32ex_token(directory, "process32ex_token",
1089bc168a6cSRobert Watson 		    AU_IPv4);
1090bc168a6cSRobert Watson 		generate_process32ex_token(directory, "process32ex_token",
1091bc168a6cSRobert Watson 		    AU_IPv6);
1092bc168a6cSRobert Watson 		generate_process64_token(directory, "process64_token");
1093bc168a6cSRobert Watson 		generate_process64ex_token(directory, "process64ex_token",
1094bc168a6cSRobert Watson 		    AU_IPv4);
1095bc168a6cSRobert Watson 		generate_process64ex_token(directory, "process64ex_token",
1096bc168a6cSRobert Watson 		    AU_IPv6);
1097506764c6SRobert Watson 		generate_return32_token(directory, "return32_token");
1098506764c6SRobert Watson 		generate_text_token(directory, "text_token");
1099506764c6SRobert Watson 		generate_opaque_token(directory, "opaque_token");
1100506764c6SRobert Watson 		generate_in_addr_token(directory, "in_addr_token");
1101506764c6SRobert Watson 		generate_ip_token(directory, "ip_token");
1102506764c6SRobert Watson 		generate_iport_token(directory, "iport_token");
1103506764c6SRobert Watson 		generate_arg32_token(directory, "arg32_token");
1104506764c6SRobert Watson 		generate_seq_token(directory, "seq_token");
1105c74c7b73SRobert Watson #if 0
1106506764c6SRobert Watson 		generate_attr_token(directory,  "attr_token");
1107506764c6SRobert Watson 		generate_ipc_perm_token(directory, "ipc_perm_token");
1108506764c6SRobert Watson 		generate_groups_token(directory, "groups_token");
1109506764c6SRobert Watson 		generate_attr32_token(directory, "attr32_token");
1110c74c7b73SRobert Watson #endif
1111bc168a6cSRobert Watson 		generate_zonename_token(directory, "zonename_token");
11127a0a89d2SRobert Watson 		generate_socketex_token(directory, "socketex_token");
1113506764c6SRobert Watson 	}
1114506764c6SRobert Watson 
1115506764c6SRobert Watson 	if (do_records) {
111622ccb20dSRobert Watson 		generate_file_record(directory, "file_record");
111722ccb20dSRobert Watson 		generate_data_record(directory, "data_record");
111822ccb20dSRobert Watson 		generate_ipc_record(directory, "ipc_record");
111922ccb20dSRobert Watson 		generate_path_record(directory, "path_record");
112022ccb20dSRobert Watson 		generate_subject32_record(directory, "subject32_record");
112122ccb20dSRobert Watson 		generate_subject32ex_record(directory, "subject32ex_record",
112222ccb20dSRobert Watson 		    AU_IPv4);
112322ccb20dSRobert Watson 		generate_subject32ex_record(directory, "subject32ex_record",
112422ccb20dSRobert Watson 		    AU_IPv6);
112522ccb20dSRobert Watson 		generate_process32_record(directory, "process32_record");
1126bc168a6cSRobert Watson 		generate_process32ex_record(directory, "process32ex_record",
1127bc168a6cSRobert Watson 		    AU_IPv4);
1128bc168a6cSRobert Watson 		generate_process32ex_record(directory, "process32ex_record",
1129bc168a6cSRobert Watson 		    AU_IPv6);
1130bc168a6cSRobert Watson 		generate_process64_record(directory, "process64_record");
1131bc168a6cSRobert Watson 		generate_process64ex_record(directory, "process64ex_record",
1132bc168a6cSRobert Watson 		    AU_IPv4);
1133bc168a6cSRobert Watson 		generate_process64ex_record(directory, "process64ex_record",
1134bc168a6cSRobert Watson 		    AU_IPv6);
113522ccb20dSRobert Watson 		generate_return32_record(directory, "return32_record");
113622ccb20dSRobert Watson 		generate_text_record(directory, "text_record");
113722ccb20dSRobert Watson 		generate_opaque_record(directory, "opaque_record");
113822ccb20dSRobert Watson 		generate_in_addr_record(directory, "in_addr_record");
113922ccb20dSRobert Watson 		generate_ip_record(directory, "ip_record");
114022ccb20dSRobert Watson 		generate_iport_record(directory, "iport_record");
114122ccb20dSRobert Watson 		generate_arg32_record(directory, "arg32_record");
114222ccb20dSRobert Watson 		generate_seq_record(directory, "seq_record");
1143c74c7b73SRobert Watson #if 0
114422ccb20dSRobert Watson 		generate_attr_record(directory,  "attr_record");
114522ccb20dSRobert Watson 		generate_ipc_perm_record(directory, "ipc_perm_record");
114622ccb20dSRobert Watson 		generate_groups_record(directory, "groups_record");
114722ccb20dSRobert Watson 		generate_attr32_record(directory, "attr32_record");
1148c74c7b73SRobert Watson #endif
1149bc168a6cSRobert Watson 		generate_zonename_record(directory, "zonename_record");
11507a0a89d2SRobert Watson 		generate_socketex_record(directory, "socketex_record");
11517a0a89d2SRobert Watson 		do_error_records(directory);
1152506764c6SRobert Watson 	}
1153506764c6SRobert Watson 
1154506764c6SRobert Watson 	return (0);
1155506764c6SRobert Watson }
1156