this repo has no description
1/*
2 * Copyright (c) 2000, 2001, 2003-2005, 2011, 2012, 2015, 2018-2019 Apple Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
11 * file.
12 *
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
20 *
21 * @APPLE_LICENSE_HEADER_END@
22 */
23
24/*
25 * Modification History
26 *
27 * June 1, 2001 Allan Nathanson <ajn@apple.com>
28 * - public API conversion
29 *
30 * March 24, 2000 Allan Nathanson <ajn@apple.com>
31 * - initial revision
32 */
33
34#include <mach/std_types.defs>
35#include <mach/mach_types.defs>
36
37subsystem config 20000;
38serverprefix _;
39UseSpecialReplyPort 1;
40
41import "config_types.h";
42
43/*
44 * serialized XML or UTF8 data (client->server)
45 */
46type xmlData = ^ array [] of MACH_MSG_TYPE_BYTE
47 ctype : xmlData_t;
48
49/*
50 * serialized XML or UTF8 data (server->client)
51 */
52type xmlDataOut = ^ array [] of MACH_MSG_TYPE_BYTE
53 ctype : xmlDataOut_t;
54
55/*
56 * additional types
57 */
58/*
59type task_move_send_t = MACH_MSG_TYPE_MOVE_SEND
60 ctype: mach_port_t;
61*/
62
63
64/*
65 * CAUTION CAUTION CAUTION CAUTION CAUTION CAUTION
66 *
67 * Be very careful when adding, removing, or changing any
68 * of the MiG routes below. Everything tends to work fine
69 * when the SCDynamicStore client code (in the framework)
70 * and SCDynamicStore server code (in configd) are in sync.
71 * But, when the two are NOT in sync as is often the
72 * case when running the iOS Simulator, the conflict can
73 * be problematic.
74 *
75 * CAUTION CAUTION CAUTION CAUTION CAUTION CAUTION
76 */
77
78
79/*
80 * Connection management API's
81 */
82
83routine configopen ( server : mach_port_t;
84 name : xmlData;
85 options : xmlData;
86 out session : mach_port_move_send_t;
87 out status : int;
88 ServerAuditToken audit_token : audit_token_t);
89
90 skip; /* was configclose */
91 skip; /* was configlock */
92 skip; /* was configunlock */
93
94 skip; /* reserved for future use */
95 skip; /* reserved for future use */
96 skip; /* reserved for future use */
97 skip; /* reserved for future use */
98
99/*
100 * Dynamic store access API's
101 */
102
103routine configlist ( server : mach_port_t;
104 xmlData : xmlData;
105 isRegex : int;
106 out list : xmlDataOut, dealloc;
107 out status : int;
108 ServerAuditToken audit_token : audit_token_t);
109
110routine configadd ( server : mach_port_t;
111 key : xmlData;
112 data : xmlData;
113 out newInstance : int; // no longer used
114 out status : int;
115 ServerAuditToken audit_token : audit_token_t);
116
117routine configget ( server : mach_port_t;
118 key : xmlData;
119 out data : xmlDataOut, dealloc;
120 out newInstance : int; // no longer used
121 out status : int;
122 ServerAuditToken audit_token : audit_token_t);
123
124routine configset ( server : mach_port_t;
125 key : xmlData;
126 data : xmlData;
127 instance : int;
128 out newInstance : int; // no longer used
129 out status : int;
130 ServerAuditToken audit_token : audit_token_t);
131
132routine configremove ( server : mach_port_t;
133 key : xmlData;
134 out status : int;
135 ServerAuditToken audit_token : audit_token_t);
136
137 skip; /* was configtouch */
138
139routine configadd_s ( server : mach_port_t;
140 key : xmlData;
141 data : xmlData;
142 out newInstance : int; // no longer used
143 out status : int);
144
145routine confignotify ( server : mach_port_t;
146 key : xmlData;
147 out status : int;
148 ServerAuditToken audit_token : audit_token_t);
149
150routine configget_m ( server : mach_port_t;
151 keys : xmlData;
152 patterns : xmlData;
153 out data : xmlDataOut, dealloc;
154 out status : int;
155 ServerAuditToken audit_token : audit_token_t);
156
157routine configset_m ( server : mach_port_t;
158 data : xmlData;
159 remove : xmlData;
160 notify : xmlData;
161 out status : int;
162 ServerAuditToken audit_token : audit_token_t);
163
164/*
165 * Notification API's
166 */
167
168routine notifyadd ( server : mach_port_t;
169 key : xmlData;
170 isRegex : int;
171 out status : int);
172
173routine notifyremove ( server : mach_port_t;
174 key : xmlData;
175 isRegex : int;
176 out status : int);
177
178routine notifychanges ( server : mach_port_t;
179 out list : xmlDataOut, dealloc;
180 out status : int);
181
182routine notifyviaport ( server : mach_port_t;
183 port : mach_port_move_send_t;
184 msgid : mach_msg_id_t; /* must be zero */
185 out status : int);
186
187 skip; /* was notifyviafd (passing UNIX domain socket filename) */
188
189 skip; /* was notifyviasignal */
190
191routine notifycancel ( server : mach_port_t;
192 out status : int);
193
194routine notifyset ( server : mach_port_t;
195 keys : xmlData;
196 patterns : xmlData;
197 out status : int);
198
199routine notifyviafd ( server : mach_port_t;
200 fileport : mach_port_move_send_t;
201 identifier : int;
202 out status : int);
203
204 skip; /* reserved for future use */
205 skip; /* reserved for future use */
206
207/*
208 * Miscellaneous API's
209 */
210
211routine snapshot ( server : mach_port_t;
212 out status : int;
213 ServerAuditToken audit_token : audit_token_t);