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