1#ifndef _host_security_user_
2#define _host_security_user_
3
4/* Module host_security */
5
6#include <string.h>
7#include <mach/ndr.h>
8#include <mach/boolean.h>
9#include <mach/kern_return.h>
10#include <mach/notify.h>
11#include <mach/mach_types.h>
12#include <mach/message.h>
13#include <mach/mig_errors.h>
14#include <mach/port.h>
15
16/* BEGIN MIG_STRNCPY_ZEROFILL CODE */
17
18#if defined(__has_include)
19#if __has_include(<mach/mig_strncpy_zerofill_support.h>)
20#ifndef USING_MIG_STRNCPY_ZEROFILL
21#define USING_MIG_STRNCPY_ZEROFILL
22#endif
23#ifndef __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__
24#define __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__
25#ifdef __cplusplus
26extern "C" {
27#endif
28#ifndef __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS_CSTRING_ATTR
29#define __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS_CSTRING_COUNTEDBY_ATTR(C) __unsafe_indexable
30#endif
31 extern int mig_strncpy_zerofill(char * dest, const char * src, int len) __attribute__((weak_import));
32#ifdef __cplusplus
33}
34#endif
35#endif /* __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__ */
36#endif /* __has_include(<mach/mig_strncpy_zerofill_support.h>) */
37#endif /* __has_include */
38
39/* END MIG_STRNCPY_ZEROFILL CODE */
40
41
42#ifdef AUTOTEST
43#ifndef FUNCTION_PTR_T
44#define FUNCTION_PTR_T
45typedef void (*function_ptr_t)(mach_port_t, char *, mach_msg_type_number_t);
46typedef struct {
47 char * name;
48 function_ptr_t function;
49} function_table_entry;
50typedef function_table_entry *function_table_t;
51#endif /* FUNCTION_PTR_T */
52#endif /* AUTOTEST */
53
54#ifndef host_security_MSG_COUNT
55#define host_security_MSG_COUNT 2
56#endif /* host_security_MSG_COUNT */
57
58#include <Availability.h>
59#include <mach/std_types.h>
60#include <mach/mig.h>
61#include <mach/mig.h>
62#include <mach/mach_types.h>
63
64#ifdef __BeforeMigUserHeader
65__BeforeMigUserHeader
66#endif /* __BeforeMigUserHeader */
67
68#include <sys/cdefs.h>
69__BEGIN_DECLS
70
71
72/* Routine host_security_create_task_token */
73#ifdef mig_external
74mig_external
75#else
76extern
77#endif /* mig_external */
78kern_return_t host_security_create_task_token
79(
80 host_security_t host_security,
81 task_t parent_task,
82 security_token_t sec_token,
83 audit_token_t audit_token,
84 host_t host,
85 ledger_array_t ledgers,
86 mach_msg_type_number_t ledgersCnt,
87 boolean_t inherit_memory,
88 task_t *child_task
89);
90
91/* Routine host_security_set_task_token */
92#ifdef mig_external
93mig_external
94#else
95extern
96#endif /* mig_external */
97kern_return_t host_security_set_task_token
98(
99 host_security_t host_security,
100 task_t target_task,
101 security_token_t sec_token,
102 audit_token_t audit_token,
103 host_t host
104);
105
106__END_DECLS
107
108/********************** Caution **************************/
109/* The following data types should be used to calculate */
110/* maximum message sizes only. The actual message may be */
111/* smaller, and the position of the arguments within the */
112/* message layout may vary from what is presented here. */
113/* For example, if any of the arguments are variable- */
114/* sized, and less than the maximum is sent, the data */
115/* will be packed tight in the actual message to reduce */
116/* the presence of holes. */
117/********************** Caution **************************/
118
119/* typedefs for all requests */
120
121#ifndef __Request__host_security_subsystem__defined
122#define __Request__host_security_subsystem__defined
123
124#ifdef __MigPackStructs
125#pragma pack(push, 4)
126#endif
127 typedef struct {
128 mach_msg_header_t Head;
129 /* start of the kernel processed data */
130 mach_msg_body_t msgh_body;
131 mach_msg_port_descriptor_t parent_task;
132 mach_msg_port_descriptor_t host;
133 mach_msg_ool_ports_descriptor_t ledgers;
134 /* end of the kernel processed data */
135 NDR_record_t NDR;
136 security_token_t sec_token;
137 audit_token_t audit_token;
138 mach_msg_type_number_t ledgersCnt;
139 boolean_t inherit_memory;
140 } __Request__host_security_create_task_token_t __attribute__((unused));
141#ifdef __MigPackStructs
142#pragma pack(pop)
143#endif
144
145#ifdef __MigPackStructs
146#pragma pack(push, 4)
147#endif
148 typedef struct {
149 mach_msg_header_t Head;
150 /* start of the kernel processed data */
151 mach_msg_body_t msgh_body;
152 mach_msg_port_descriptor_t target_task;
153 mach_msg_port_descriptor_t host;
154 /* end of the kernel processed data */
155 NDR_record_t NDR;
156 security_token_t sec_token;
157 audit_token_t audit_token;
158 } __Request__host_security_set_task_token_t __attribute__((unused));
159#ifdef __MigPackStructs
160#pragma pack(pop)
161#endif
162#endif /* !__Request__host_security_subsystem__defined */
163
164/* union of all requests */
165
166#ifndef __RequestUnion__host_security_subsystem__defined
167#define __RequestUnion__host_security_subsystem__defined
168union __RequestUnion__host_security_subsystem {
169 __Request__host_security_create_task_token_t Request_host_security_create_task_token;
170 __Request__host_security_set_task_token_t Request_host_security_set_task_token;
171};
172#endif /* !__RequestUnion__host_security_subsystem__defined */
173/* typedefs for all replies */
174
175#ifndef __Reply__host_security_subsystem__defined
176#define __Reply__host_security_subsystem__defined
177
178#ifdef __MigPackStructs
179#pragma pack(push, 4)
180#endif
181 typedef struct {
182 mach_msg_header_t Head;
183 /* start of the kernel processed data */
184 mach_msg_body_t msgh_body;
185 mach_msg_port_descriptor_t child_task;
186 /* end of the kernel processed data */
187 } __Reply__host_security_create_task_token_t __attribute__((unused));
188#ifdef __MigPackStructs
189#pragma pack(pop)
190#endif
191
192#ifdef __MigPackStructs
193#pragma pack(push, 4)
194#endif
195 typedef struct {
196 mach_msg_header_t Head;
197 NDR_record_t NDR;
198 kern_return_t RetCode;
199 } __Reply__host_security_set_task_token_t __attribute__((unused));
200#ifdef __MigPackStructs
201#pragma pack(pop)
202#endif
203#endif /* !__Reply__host_security_subsystem__defined */
204
205/* union of all replies */
206
207#ifndef __ReplyUnion__host_security_subsystem__defined
208#define __ReplyUnion__host_security_subsystem__defined
209union __ReplyUnion__host_security_subsystem {
210 __Reply__host_security_create_task_token_t Reply_host_security_create_task_token;
211 __Reply__host_security_set_task_token_t Reply_host_security_set_task_token;
212};
213#endif /* !__RequestUnion__host_security_subsystem__defined */
214
215#ifndef subsystem_to_name_map_host_security
216#define subsystem_to_name_map_host_security \
217 { "host_security_create_task_token", 600 },\
218 { "host_security_set_task_token", 601 }
219#endif
220
221#ifdef __AfterMigUserHeader
222__AfterMigUserHeader
223#endif /* __AfterMigUserHeader */
224
225#endif /* _host_security_user_ */
226