]> git.saurik.com Git - apple/configd.git/blob - SystemConfiguration.fproj/genSCPreferences.c
f6484a2d1a444ba5ffb7857c76cf33ab9392bdb6
[apple/configd.git] / SystemConfiguration.fproj / genSCPreferences.c
1 /*
2 * Copyright (c) 2000-2003 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
7 *
8 * This file contains Original Code and/or Modifications of Original Code
9 * as defined in and that are subject to the Apple Public Source License
10 * Version 2.0 (the 'License'). You may not use this file except in
11 * compliance with the License. Please obtain a copy of the License at
12 * http://www.opensource.apple.com/apsl/ and read it before using this
13 * file.
14 *
15 * The Original Code and all software distributed under the License are
16 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
17 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
18 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
19 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
20 * Please see the License for the specific language governing rights and
21 * limitations under the License.
22 *
23 * @APPLE_LICENSE_HEADER_END@
24 */
25
26 /*
27 * genSCPreferences.c
28 * - generates System Configuration header/cfile
29 * - invoke with "header" to generate the header
30 * - invoke with "cfile" to generate the cfile
31 */
32
33 /*
34 * Modification History
35 *
36 * 16 July 2003 Allan Nathanson (ajn@apple.com)
37 * - changes to facilitate cross-compilation to earlier releases
38 *
39 * 5 May 2003 Allan Nathanson (ajn@apple.com)
40 * - switch back to "extern const CFStringRef ..."
41 *
42 * 1 June 2001 Allan Nathanson <ajn@apple.com>
43 * - public API conversion
44 *
45 * 27 Apr 2001 Allan Nathanson (ajn@apple.com)
46 * - switch from "extern const CFStringRef ..." to "#define ..."
47 *
48 * 3 Nov 2000 Dieter Siegmund (dieter@apple)
49 * - created
50 */
51 #include <stdio.h>
52 #include <stdlib.h>
53 #include <string.h>
54 #include <unistd.h>
55 #include <mach/boolean.h>
56
57 char copyright_string[] =
58 "/*\n"
59 " * Copyright (c) 2000-2003 Apple Computer, Inc. All rights reserved.\n"
60 " *\n"
61 " * @APPLE_LICENSE_HEADER_START@
62 " *
63 " * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
64 " *
65 " * This file contains Original Code and/or Modifications of Original Code
66 " * as defined in and that are subject to the Apple Public Source License
67 " * Version 2.0 (the 'License'). You may not use this file except in
68 " * compliance with the License. Please obtain a copy of the License at
69 " * http://www.opensource.apple.com/apsl/ and read it before using this
70 " * file.
71 " *
72 " * The Original Code and all software distributed under the License are
73 " * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
74 " * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
75 " * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
76 " * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
77 " * Please see the License for the specific language governing rights and
78 " * limitations under the License.
79 " *
80 " * @APPLE_LICENSE_HEADER_END@
81 " */\n";
82
83
84 typedef enum {
85 COMMENT,
86 OBSOLETE,
87 REGULAR,
88 DEFINE,
89 FUTURE,
90 END
91 } controlType;
92
93 #define SC_SCHEMA_DECLARATION "SC_SCHEMA_DECLARATION"
94
95 #define KEY_PREFIX "kSC"
96
97 #define COMP "Comp"
98 #define DYNAMICSTORE "DynamicStore"
99 #define PREF "Pref"
100 #define PROP "Prop"
101 #define PATH "Path"
102 #define NETENT "EntNet"
103 #define NETPROP "PropNet"
104 #define NETVAL "ValNet"
105 #define SETUPENT "EntSetup"
106 #define SETUPPROP "PropSetup"
107 #define SYSTEMENT "EntSystem"
108 #define SYSTEMPROP "PropSystem"
109 #define RESV "Resv"
110 #define USERSENT "EntUsers"
111 #define USERSPROP "PropUsers"
112 #define VERSION "Version"
113
114 #define CFARRAY_CFNUMBER "CFArray[CFNumber]"
115 #define CFARRAY_CFSTRING "CFArray[CFString]"
116 #define CFBOOLEAN "CFBoolean"
117 #define CFDATA "CFData"
118 #define CFDICTIONARY "CFDictionary"
119 #define CFNUMBER "CFNumber"
120 #define CFNUMBER_BOOL "CFNumber (0 or 1)"
121 #define CFSTRING "CFString"
122
123 #define ACSPENABLED "ACSPEnabled" // Apple Client Server Protocol
124 #define ACTIVE "Active"
125 #define ADDRESSES "Addresses"
126 #define AFTER "After"
127 #define AIRPORT "AirPort"
128 #define ALERT "Alert"
129 #define ALLOWNETCREATION "AllowNetCreation"
130 #define ALTERNATEREMOTEADDRESS "AlternateRemoteAddress"
131 #define ANYREGEX "AnyRegex"
132 #define APPLETALK "AppleTalk"
133 #define AUTH "Auth"
134 #define AUTOMATIC "Automatic"
135 #define BEFORE "Before"
136 #define BINDINGMETHODS "BindingMethods"
137 #define BOOTP "BOOTP"
138 #define BROADCAST "Broadcast"
139 #define BROADCASTADDRESSES "BroadcastAddresses"
140 #define BROADCASTSERVERTAG "BroadcastServerTag"
141 #define CALLWAITINGAUDIBLEALERT "CallWaitingAudibleAlert"
142 #define CCP "CCP"
143 #define CHAP "CHAP"
144 #define COMM "Comm"
145 #define COMPRESSIONACFIELD "CompressionACField"
146 #define COMPRESSIONPFIELD "CompressionPField"
147 #define COMPRESSIONVJ "CompressionVJ"
148 #define COMPUTERNAME "ComputerName"
149 #define CONFIGMETHOD "ConfigMethod"
150 #define CONNECTDELAY "ConnectDelay"
151 #define CONNECTIONSCRIPT "ConnectionScript"
152 #define CONNECTSPEED "ConnectSpeed"
153 #define CONNECTTIME "ConnectTime"
154 #define CONSOLEUSER "ConsoleUser"
155 #define CURRENTSET "CurrentSet"
156 #define DATACOMPRESSION "DataCompression"
157 #define DEFAULTSERVERTAG "DefaultServerTag"
158 #define DEFAULTZONE "DefaultZone"
159 #define DESTADDRESSES "DestAddresses"
160 #define DETACHING "Detaching"
161 #define DEVICE "Device"
162 #define DEVICENAME "DeviceName"
163 #define DHCP "DHCP"
164 #define DHCPCLIENTID "DHCPClientID"
165 #define DIALMODE "DialMode"
166 #define DIALONDEMAND "DialOnDemand"
167 #define DISCONNECTONANSWER "DisconnectOnAnswer"
168 #define DISCONNECTONIDLE "DisconnectOnIdle"
169 #define DISCONNECTONIDLETIMER "DisconnectOnIdleTimer"
170 #define DISCONNECTONLOGOUT "DisconnectOnLogout"
171 #define DISCONNECTONSLEEP "DisconnectOnSleep"
172 #define DISCONNECTTIME "DisconnectTime"
173 #define DISPLAYTERMINALWINDOW "DisplayTerminalWindow"
174 #define DNS "DNS"
175 #define DOMAIN "Domain"
176 #define DOMAINNAME "DomainName"
177 #define DOMAINSEPARATOR "DomainSeparator"
178 #define EAP "EAP"
179 #define ECHOENABLED "EchoEnabled"
180 #define ECHOFAILURE "EchoFailure"
181 #define ECHOINTERVAL "EchoInterval"
182 #define ENABLED "Enabled"
183 #define ENCODING "Encoding"
184 #define ENCRYPTION "Encryption"
185 #define ERRORCORRECTION "ErrorCorrection"
186 #define ETHERNET "Ethernet"
187 #define EXCEPTIONSLIST "ExceptionsList"
188 #define FILE "File"
189 #define FIREWIRE "FireWire"
190 #define FLAGS "Flags"
191 #define FTPENABLE "FTPEnable"
192 #define FTPPASSIVE "FTPPassive"
193 #define FTPPORT "FTPPort"
194 #define FTPPROXY "FTPProxy"
195 #define GID "GID"
196 #define GLOBAL "Global"
197 #define GOPHERENABLE "GopherEnable"
198 #define GOPHERPORT "GopherPort"
199 #define GOPHERPROXY "GopherProxy"
200 #define HARDWARE "Hardware"
201 #define HOLD "Hold"
202 #define HOSTNAMES "HostNames"
203 #define HTTPENABLE "HTTPEnable"
204 #define HTTPPORT "HTTPPort"
205 #define HTTPPROXY "HTTPProxy"
206 #define HTTPSENABLE "HTTPSEnable"
207 #define HTTPSPORT "HTTPSPort"
208 #define HTTPSPROXY "HTTPSProxy"
209 #define IDLEREMINDER "IdleReminder"
210 #define IDLEREMINDERTIMER "IdleReminderTimer"
211 #define IGNOREDIALTONE "IgnoreDialTone"
212 #define INACTIVE "Inactive"
213 #define INFORM "INFORM"
214 #define INTERFACE "Interface"
215 #define INTERFACENAME "InterfaceName"
216 #define INTERFACES "Interfaces"
217 #define IP "IP"
218 #define IPCP "IPCP"
219 #define IPV4 "IPv4"
220 #define IPV6 "IPv6"
221 #define IPSEC "IPSec"
222 #define JOINMODE "JoinMode"
223 #define KEYCHAIN "Keychain"
224 #define L2TP "L2TP"
225 #define LASTCAUSE "LastCause"
226 #define LASTUPDATED "LastUpdated"
227 #define LCP "LCP"
228 #define LINK "Link"
229 #define LINKLOCAL "LinkLocal"
230 #define LOCALHOSTNAME "LocalHostName"
231 #define LOGFILE "Logfile"
232 #define MACADDRESS "MACAddress"
233 #define MANUAL "Manual"
234 #define MEDIA "Media"
235 #define OPTIONS "Options"
236 #define MODEM "Modem"
237 #define MRU "MRU"
238 #define MSCHAP1 "MSCHAP1"
239 #define MSCHAP2 "MSCHAP2"
240 #define MTU "MTU"
241 #define NAME "Name"
242 #define NETINFO "NetInfo"
243 #define NETWORK "Network"
244 #define NETWORKID "NetworkID"
245 #define NETWORKRANGE "NetworkRange"
246 #define NETWORKSERVICES "NetworkServices"
247 #define NIS "NIS"
248 #define NODE "Node"
249 #define NODEID "NodeID"
250 #define NOTE "Note"
251 #define OVERRIDEPRIMARY "OverridePrimary"
252 #define PAP "PAP"
253 #define PASSWORD "Password"
254 #define PLUGIN "Plugin"
255 #define PLUGINS "Plugins"
256 #define POWERENABLED "PowerEnabled"
257 #define PPP "PPP"
258 #define PPPOE "PPPoE"
259 #define PPPOVERRIDEPRIMARY "PPPOverridePrimary"
260 #define PPPSERIAL "PPPSerial"
261 #define PPTP "PPTP"
262 #define PREFERRED "Preferred"
263 #define PREFERREDNETWORK "PreferredNetwork"
264 #define PREFIXLENGTH "PrefixLength"
265 #define PREFS "Prefs"
266 #define PRIMARYINTERFACE "PrimaryInterface"
267 #define PRIMARYSERVICE "PrimaryService"
268 #define PROMPT "Prompt"
269 #define PROTOCOL "Protocol"
270 #define PROXIES "Proxies"
271 #define PROXYAUTOCONFIGENABLE "ProxyAutoConfigEnable"
272 #define PROXYAUTOCONFIGURLSTRING "ProxyAutoConfigURLString"
273 #define PULSEDIAL "PulseDial"
274 #define RECEIVEACCM "ReceiveACCM"
275 #define RECENT "Recent"
276 #define REDIALCOUNT "RedialCount"
277 #define REDIALENABLED "RedialEnabled"
278 #define REDIALINTERVAL "RedialInterval"
279 #define RELAY "Relay"
280 #define REMINDER "Reminder"
281 #define REMINDERTIME "ReminderTime"
282 #define REMOTEADDRESS "RemoteAddress"
283 #define RETRYCONNECTTIME "RetryConnectTime"
284 #define ROOTSEPARATOR "RootSeparator"
285 #define ROUTER "Router"
286 #define ROUTERADVERTISEMENT "RouterAdvertisement"
287 #define RTSPENABLE "RTSPEnable"
288 #define RTSPPORT "RTSPPort"
289 #define RTSPPROXY "RTSPProxy"
290 #define SAVEPASSWORDS "SavePasswords"
291 #define SEARCHDOMAINS "SearchDomains"
292 #define SEEDNETWORKRANGE "SeedNetworkRange"
293 #define SEEDROUTER "SeedRouter"
294 #define SEEDZONES "SeedZones"
295 #define SERVERADDRESSES "ServerAddresses"
296 #define SERVERTAGS "ServerTags"
297 #define SERVICE "Service"
298 #define SERVICEIDS "ServiceIDs"
299 #define SERVICEORDER "ServiceOrder"
300 #define SESSIONTIMER "SessionTimer"
301 #define SETS "Sets"
302 #define SETUP "Setup"
303 #define SHAREDSECRET "SharedSecret"
304 #define SOCKSENABLE "SOCKSEnable"
305 #define SOCKSPORT "SOCKSPort"
306 #define SOCKSPROXY "SOCKSProxy"
307 #define SORTLIST "SortList"
308 #define SPEAKER "Speaker"
309 #define SPEED "Speed"
310 #define STATE "State"
311 #define STATUS "Status"
312 #define STF "6to4"
313 #define STRONGEST "Strongest"
314 #define SUBNETMASKS "SubnetMasks"
315 #define SUBTYPE "SubType"
316 #define SUPPORTSMODEMONHOLD "SupportsModemOnHold"
317 #define SYSTEM "System"
318 #define TERMINALSCRIPT "TerminalScript"
319 #define TRANSMITACCM "TransmitACCM"
320 #define TRANSPORT "Transport"
321 #define TYPE "Type"
322 #define UID "UID"
323 #define USERDEFINEDNAME "UserDefinedName"
324 #define USE "Use"
325 #define USERS "Users"
326 #define VERBOSELOGGING "VerboseLogging"
327 #define WAITFORDIALTONE "WaitForDialTone"
328
329 struct {
330 int control;
331 const char * prefix;
332 const char * key;
333 const char * value;
334 const char * type;
335 } names[] = {
336 { COMMENT, "/*\n * Reserved Keys\n */", NULL, NULL },
337 { REGULAR, RESV, LINK, "__LINK__", CFSTRING },
338 { REGULAR, RESV, INACTIVE, "__INACTIVE__", NULL },
339 { COMMENT, "", NULL, NULL, NULL },
340
341 { COMMENT, "/*\n * Generic Keys\n */", NULL },
342 { DEFINE , PROP, INTERFACENAME, NULL, CFSTRING },
343 { REGULAR, PROP, MACADDRESS, NULL, CFSTRING },
344 { REGULAR, PROP, USERDEFINEDNAME, NULL, CFSTRING },
345 { DEFINE , PROP, VERSION, NULL, CFSTRING },
346 { COMMENT, "", NULL, NULL, NULL },
347
348 { COMMENT, "/*\n * Preference Keys\n */", NULL },
349 { REGULAR, PREF, CURRENTSET, NULL, CFSTRING },
350 { REGULAR, PREF, NETWORKSERVICES, NULL, CFDICTIONARY },
351 { REGULAR, PREF, SETS, NULL, CFDICTIONARY },
352 { REGULAR, PREF, SYSTEM, NULL, CFDICTIONARY },
353 { COMMENT, "", NULL, NULL, NULL },
354
355 { COMMENT, "/*\n * Component Keys\n */", NULL },
356 { REGULAR, COMP, NETWORK, NULL, NULL },
357 { REGULAR, COMP, SERVICE, NULL, NULL },
358 { REGULAR, COMP, GLOBAL, NULL, NULL },
359 { DEFINE , COMP, HOSTNAMES, NULL, NULL },
360 { REGULAR, COMP, INTERFACE, NULL, NULL },
361 { REGULAR, COMP, SYSTEM, NULL, NULL },
362 { REGULAR, COMP, USERS, NULL, NULL },
363 { COMMENT, "", NULL, NULL, NULL },
364
365 { COMMENT, "/*\n * Regex key which matches any component\n */", NULL },
366 { REGULAR, COMP, ANYREGEX, "[^/]+", NULL },
367 { COMMENT, "", NULL, NULL, NULL },
368
369 { COMMENT, "/*\n * Network Entity Keys\n */", NULL },
370 { REGULAR, NETENT, AIRPORT, NULL, CFDICTIONARY },
371 { REGULAR, NETENT, APPLETALK, NULL, CFDICTIONARY },
372 { DEFINE , NETENT, DHCP, NULL, CFDICTIONARY },
373 { REGULAR, NETENT, DNS, NULL, CFDICTIONARY },
374 { REGULAR, NETENT, ETHERNET, NULL, CFDICTIONARY },
375 { DEFINE , NETENT, FIREWIRE, NULL, CFDICTIONARY },
376 { REGULAR, NETENT, INTERFACE, NULL, CFDICTIONARY },
377 { REGULAR, NETENT, IPV4, NULL, CFDICTIONARY },
378 { REGULAR, NETENT, IPV6, NULL, CFDICTIONARY },
379 { DEFINE , NETENT, L2TP, NULL, CFDICTIONARY },
380 { REGULAR, NETENT, LINK, NULL, CFDICTIONARY },
381 { REGULAR, NETENT, MODEM, NULL, CFDICTIONARY },
382 { REGULAR, NETENT, NETINFO, NULL, CFDICTIONARY },
383 { FUTURE , NETENT, NIS, NULL, CFDICTIONARY },
384 { REGULAR, NETENT, PPP, NULL, CFDICTIONARY },
385 { REGULAR, NETENT, PPPOE, NULL, CFDICTIONARY },
386 { DEFINE , NETENT, PPPSERIAL, NULL, CFDICTIONARY },
387 { DEFINE , NETENT, PPTP, NULL, CFDICTIONARY },
388 { REGULAR, NETENT, PROXIES, NULL, CFDICTIONARY },
389 { DEFINE , NETENT, STF, NULL, CFDICTIONARY },
390 { COMMENT, "", NULL, NULL, NULL },
391
392 { COMMENT, "/*\n * " KEY_PREFIX COMP NETWORK " Properties\n */", NULL },
393 { DEFINE , NETPROP, OVERRIDEPRIMARY, NULL, CFNUMBER_BOOL },
394 { REGULAR, NETPROP, SERVICEORDER, NULL, CFARRAY_CFSTRING },
395 { REGULAR, NETPROP, PPPOVERRIDEPRIMARY, NULL, CFNUMBER_BOOL },
396 { COMMENT, "", NULL, NULL, NULL },
397
398 { COMMENT, "/*\n * " KEY_PREFIX COMP NETWORK INTERFACE " Properties\n */", NULL },
399 { DEFINE , NETPROP, INTERFACES, NULL, CFARRAY_CFSTRING },
400 { COMMENT, "", NULL, NULL, NULL },
401
402 { COMMENT, "/*\n * " KEY_PREFIX COMP NETWORK HOSTNAMES " Properties\n */", NULL },
403 { DEFINE , NETPROP, LOCALHOSTNAME, NULL, CFSTRING },
404 { COMMENT, "", NULL, NULL, NULL },
405
406 { COMMENT, "/*\n * " KEY_PREFIX NETENT AIRPORT " (Hardware) Entity Keys\n */", NULL, NULL, NULL },
407 { DEFINE , NETPROP AIRPORT, ALLOWNETCREATION, NULL, CFNUMBER_BOOL },
408 { REGULAR, NETPROP AIRPORT, AUTH PASSWORD, NULL, CFDATA },
409 { REGULAR, NETPROP AIRPORT, AUTH PASSWORD ENCRYPTION, NULL, CFSTRING },
410 { DEFINE , NETPROP AIRPORT, JOINMODE, NULL, CFSTRING },
411 { REGULAR, NETPROP AIRPORT, POWERENABLED, NULL, CFNUMBER_BOOL },
412 { REGULAR, NETPROP AIRPORT, PREFERREDNETWORK, NULL, CFSTRING },
413 { DEFINE , NETPROP AIRPORT, SAVEPASSWORDS, NULL, CFNUMBER_BOOL },
414 { COMMENT, "", NULL, NULL, NULL },
415 { COMMENT, "/* " KEY_PREFIX NETPROP AIRPORT JOINMODE " values */", NULL, NULL, NULL },
416 { DEFINE , NETVAL AIRPORT JOINMODE, AUTOMATIC, NULL, NULL },
417 { DEFINE , NETVAL AIRPORT JOINMODE, PREFERRED, NULL, NULL },
418 { DEFINE , NETVAL AIRPORT JOINMODE, RECENT, NULL, NULL },
419 { DEFINE , NETVAL AIRPORT JOINMODE, STRONGEST, NULL, NULL },
420 { COMMENT, "", NULL, NULL, NULL },
421 { COMMENT, "/* " KEY_PREFIX NETPROP AIRPORT PASSWORD ENCRYPTION " values */", NULL, NULL, NULL },
422 { DEFINE , NETVAL AIRPORT AUTH PASSWORD ENCRYPTION, KEYCHAIN, NULL, NULL },
423 { COMMENT, "", NULL, NULL, NULL },
424
425 { COMMENT, "/*\n * " KEY_PREFIX NETENT APPLETALK " Entity Keys\n */", NULL, NULL, NULL },
426 { REGULAR, NETPROP APPLETALK, COMPUTERNAME, NULL, CFSTRING },
427 { REGULAR, NETPROP APPLETALK, COMPUTERNAME ENCODING, NULL, CFNUMBER },
428 { REGULAR, NETPROP APPLETALK, CONFIGMETHOD, NULL, CFSTRING },
429 { REGULAR, NETPROP APPLETALK, DEFAULTZONE, NULL, CFSTRING },
430 { REGULAR, NETPROP APPLETALK, NETWORKID, NULL, CFNUMBER },
431 { REGULAR, NETPROP APPLETALK, NETWORKRANGE, NULL, CFARRAY_CFNUMBER },
432 { REGULAR, NETPROP APPLETALK, NODEID, NULL, CFNUMBER },
433 { REGULAR, NETPROP APPLETALK, SEEDNETWORKRANGE, NULL, CFARRAY_CFNUMBER },
434 { REGULAR, NETPROP APPLETALK, SEEDZONES, NULL, CFARRAY_CFSTRING },
435 { COMMENT, "", NULL, NULL, NULL },
436 { COMMENT, "/* " KEY_PREFIX NETPROP APPLETALK CONFIGMETHOD " values */", NULL, NULL, NULL },
437 { REGULAR, NETVAL APPLETALK CONFIGMETHOD, NODE, NULL, NULL },
438 { REGULAR, NETVAL APPLETALK CONFIGMETHOD, ROUTER, NULL, NULL },
439 { REGULAR, NETVAL APPLETALK CONFIGMETHOD, SEEDROUTER, NULL, NULL },
440 { COMMENT, "", NULL, NULL, NULL },
441
442 { COMMENT, "/*\n * " KEY_PREFIX NETENT DNS " Entity Keys\n */", NULL, NULL, NULL },
443 { REGULAR, NETPROP DNS, DOMAINNAME, NULL, CFSTRING },
444 { REGULAR, NETPROP DNS, SEARCHDOMAINS, NULL, CFARRAY_CFSTRING},
445 { REGULAR, NETPROP DNS, SERVERADDRESSES, NULL, CFARRAY_CFSTRING },
446 { DEFINE , NETPROP DNS, SORTLIST, NULL, CFARRAY_CFSTRING },
447 { COMMENT, "", NULL, NULL, NULL },
448
449 { COMMENT, "/*\n * " KEY_PREFIX NETENT ETHERNET " (Hardware) Entity Keys\n */", NULL, NULL, NULL },
450 { DEFINE , NETPROP ETHERNET, MEDIA SUBTYPE, NULL, CFSTRING },
451 { DEFINE , NETPROP ETHERNET, MEDIA OPTIONS, NULL, CFARRAY_CFSTRING },
452 { DEFINE , NETPROP ETHERNET, MTU, NULL, CFNUMBER },
453 { COMMENT, "", NULL, NULL, NULL },
454
455 { COMMENT, "/*\n * " KEY_PREFIX NETENT FIREWIRE " (Hardware) Entity Keys\n */", NULL, NULL, NULL },
456 { COMMENT, "/* RESERVED FOR FUTURE USE */", NULL, NULL, NULL },
457 { COMMENT, "", NULL, NULL, NULL },
458
459 { COMMENT, "/*\n * " KEY_PREFIX NETENT INTERFACE " Entity Keys\n */", NULL },
460 { REGULAR, NETPROP INTERFACE, DEVICENAME, NULL, CFSTRING },
461 { REGULAR, NETPROP INTERFACE, HARDWARE, NULL, CFSTRING },
462 { REGULAR, NETPROP INTERFACE, TYPE, NULL, CFSTRING },
463 { REGULAR, NETPROP INTERFACE, SUBTYPE, NULL, CFSTRING },
464 { DEFINE , NETPROP INTERFACE, SUPPORTSMODEMONHOLD, NULL, CFNUMBER_BOOL },
465 { COMMENT, "", NULL, NULL, NULL },
466 { COMMENT, "/* " KEY_PREFIX NETPROP INTERFACE TYPE " values */", NULL, NULL, NULL },
467 { REGULAR, NETVAL INTERFACE TYPE, ETHERNET, NULL, NULL },
468 { DEFINE , NETVAL INTERFACE TYPE, FIREWIRE, NULL, NULL },
469 { REGULAR, NETVAL INTERFACE TYPE, PPP, NULL, NULL },
470 { DEFINE , NETVAL INTERFACE TYPE, STF, NULL, NULL },
471 { COMMENT, "", NULL, NULL, NULL },
472 { COMMENT, "/* " KEY_PREFIX NETPROP SERVICE SUBTYPE " values (for " PPP ") */", NULL, NULL, NULL },
473 { REGULAR, NETVAL INTERFACE SUBTYPE, PPPOE, NULL, NULL },
474 { REGULAR, NETVAL INTERFACE SUBTYPE, PPPSERIAL, NULL, NULL },
475 { DEFINE , NETVAL INTERFACE SUBTYPE, PPTP, NULL, NULL },
476 { DEFINE , NETVAL INTERFACE SUBTYPE, L2TP, NULL, NULL },
477 { COMMENT, "", NULL, NULL, NULL },
478
479 { COMMENT, "/*\n * " KEY_PREFIX NETENT IPV4 " Entity Keys\n */", NULL, NULL, NULL },
480 { REGULAR, NETPROP IPV4, ADDRESSES, NULL, CFARRAY_CFSTRING },
481 { REGULAR, NETPROP IPV4, CONFIGMETHOD, NULL, CFSTRING },
482 { REGULAR, NETPROP IPV4, DHCPCLIENTID, NULL, CFSTRING },
483 { REGULAR, NETPROP IPV4, ROUTER, NULL, CFSTRING },
484 { REGULAR, NETPROP IPV4, SUBNETMASKS, NULL, CFARRAY_CFSTRING },
485 { REGULAR, NETPROP IPV4, DESTADDRESSES, NULL, CFARRAY_CFSTRING },
486 { REGULAR, NETPROP IPV4, BROADCASTADDRESSES, NULL, CFARRAY_CFSTRING },
487 { COMMENT, "", NULL, NULL, NULL },
488 { COMMENT, "/* " KEY_PREFIX NETPROP IPV4 CONFIGMETHOD " values */", NULL, NULL, NULL },
489 { REGULAR, NETVAL IPV4 CONFIGMETHOD, BOOTP, NULL, NULL },
490 { REGULAR, NETVAL IPV4 CONFIGMETHOD, DHCP, NULL, NULL },
491 { REGULAR, NETVAL IPV4 CONFIGMETHOD, INFORM, NULL, NULL },
492 { REGULAR, NETVAL IPV4 CONFIGMETHOD, LINKLOCAL, NULL, NULL },
493 { REGULAR, NETVAL IPV4 CONFIGMETHOD, MANUAL, NULL, NULL },
494 { REGULAR, NETVAL IPV4 CONFIGMETHOD, PPP, NULL, NULL },
495 { COMMENT, "", NULL, NULL, NULL },
496
497 { COMMENT, "/*\n * " KEY_PREFIX NETENT IPV6 " Entity Keys\n */", NULL, NULL, NULL },
498 { REGULAR, NETPROP IPV6, ADDRESSES, NULL, CFARRAY_CFSTRING },
499 { REGULAR, NETPROP IPV6, CONFIGMETHOD, NULL, CFSTRING },
500 { DEFINE , NETPROP IPV6, DESTADDRESSES, NULL, CFARRAY_CFSTRING },
501 { DEFINE , NETPROP IPV6, FLAGS, NULL, CFNUMBER },
502 { DEFINE , NETPROP IPV6, PREFIXLENGTH, NULL, CFARRAY_CFNUMBER },
503 { DEFINE , NETPROP IPV6, ROUTER, NULL, CFSTRING },
504 { COMMENT, "", NULL, NULL, NULL },
505 { COMMENT, "/* " KEY_PREFIX NETPROP IPV6 CONFIGMETHOD " values */", NULL, NULL, NULL },
506 { DEFINE , NETVAL IPV6 CONFIGMETHOD, AUTOMATIC, NULL, NULL },
507 { DEFINE , NETVAL IPV6 CONFIGMETHOD, MANUAL, NULL, NULL },
508 { DEFINE , NETVAL IPV6 CONFIGMETHOD, ROUTERADVERTISEMENT, NULL, NULL },
509 { DEFINE , NETVAL IPV6 CONFIGMETHOD, STF, NULL, NULL },
510 { COMMENT, "", NULL, NULL, NULL },
511
512 { COMMENT, "/*\n * " KEY_PREFIX NETENT STF " Entity Keys\n */", NULL, NULL, NULL },
513 { DEFINE , NETPROP STF, RELAY, NULL, CFSTRING },
514 { COMMENT, "", NULL, NULL, NULL },
515
516 { COMMENT, "/*\n * " KEY_PREFIX NETENT LINK " Entity Keys\n */", NULL, NULL, NULL },
517 { REGULAR, NETPROP LINK, ACTIVE, NULL, CFBOOLEAN },
518 { DEFINE , NETPROP LINK, DETACHING, NULL, CFBOOLEAN },
519 { COMMENT, "", NULL, NULL, NULL },
520
521 { COMMENT, "/*\n * " KEY_PREFIX NETENT MODEM " (Hardware) Entity Keys\n */", NULL, NULL, NULL },
522 { REGULAR, NETPROP MODEM, CONNECTIONSCRIPT, NULL, CFSTRING },
523 { DEFINE , NETPROP MODEM, CONNECTSPEED, NULL, CFNUMBER },
524 { DEFINE , NETPROP MODEM, DATACOMPRESSION, NULL, CFNUMBER_BOOL },
525 { REGULAR, NETPROP MODEM, DIALMODE, NULL, CFSTRING },
526 { DEFINE , NETPROP MODEM, ERRORCORRECTION, NULL, CFNUMBER_BOOL },
527 { DEFINE , NETPROP MODEM, HOLD CALLWAITINGAUDIBLEALERT, NULL, CFNUMBER_BOOL },
528 { DEFINE , NETPROP MODEM, HOLD DISCONNECTONANSWER, NULL, CFNUMBER_BOOL },
529 { DEFINE , NETPROP MODEM, HOLD ENABLED, NULL, CFNUMBER_BOOL },
530 { DEFINE , NETPROP MODEM, HOLD REMINDER, NULL, CFNUMBER_BOOL },
531 { DEFINE , NETPROP MODEM, HOLD REMINDERTIME, NULL, CFNUMBER },
532 { DEFINE , NETPROP MODEM, NOTE, NULL, CFSTRING },
533 { REGULAR, NETPROP MODEM, PULSEDIAL, NULL, CFNUMBER_BOOL },
534 { REGULAR, NETPROP MODEM, SPEAKER, NULL, CFNUMBER_BOOL },
535 { REGULAR, NETPROP MODEM, SPEED, NULL, CFNUMBER },
536 { COMMENT, "", NULL, NULL, NULL },
537 { COMMENT, "/* " KEY_PREFIX NETPROP MODEM DIALMODE " values */", NULL, NULL, NULL },
538 { REGULAR, NETVAL MODEM DIALMODE, IGNOREDIALTONE, NULL, NULL },
539 { REGULAR, NETVAL MODEM DIALMODE, MANUAL, NULL, NULL },
540 { REGULAR, NETVAL MODEM DIALMODE, WAITFORDIALTONE, NULL, NULL },
541 { COMMENT, "", NULL, NULL, NULL },
542
543 { COMMENT, "/*\n * " KEY_PREFIX NETENT NETINFO " Entity Keys\n */", NULL, NULL, NULL },
544 { REGULAR, NETPROP NETINFO, BINDINGMETHODS, NULL, CFSTRING },
545 { REGULAR, NETPROP NETINFO, SERVERADDRESSES, NULL, CFARRAY_CFSTRING },
546 { REGULAR, NETPROP NETINFO, SERVERTAGS, NULL, CFARRAY_CFSTRING },
547 { REGULAR, NETPROP NETINFO, BROADCASTSERVERTAG, NULL, CFSTRING },
548 { COMMENT, "", NULL, NULL, NULL },
549 { COMMENT, "/* " KEY_PREFIX NETPROP NETINFO BINDINGMETHODS " values */", NULL, NULL, NULL },
550 { REGULAR, NETVAL NETINFO BINDINGMETHODS, BROADCAST, NULL, NULL },
551 { REGULAR, NETVAL NETINFO BINDINGMETHODS, DHCP, NULL, NULL },
552 { REGULAR, NETVAL NETINFO BINDINGMETHODS, MANUAL, NULL, NULL },
553 { COMMENT, "", NULL, NULL, NULL },
554 { COMMENT, "/* " KEY_PREFIX NETPROP NETINFO BROADCASTSERVERTAG " default value */", NULL, NULL, NULL },
555 { REGULAR, NETVAL NETINFO, DEFAULTSERVERTAG, "network", NULL },
556 { COMMENT, "", NULL, NULL, NULL },
557
558 { COMMENT, "/*\n * " KEY_PREFIX NETENT NIS " Entity Keys\n */", NULL, NULL, NULL },
559 { COMMENT, "/* RESERVED FOR FUTURE USE */", NULL, NULL, NULL },
560 { COMMENT, "", NULL, NULL, NULL },
561
562 { COMMENT, "/*\n * " KEY_PREFIX NETENT PPP " Entity Keys\n */", NULL, NULL, NULL },
563 { DEFINE , NETPROP PPP, ACSPENABLED, NULL, CFNUMBER_BOOL },
564 { DEFINE , NETPROP PPP, CONNECTTIME, NULL, CFNUMBER },
565 { DEFINE , NETPROP PPP, DEVICE LASTCAUSE, NULL, CFNUMBER },
566 { REGULAR, NETPROP PPP, DIALONDEMAND, NULL, CFNUMBER_BOOL },
567 { REGULAR, NETPROP PPP, DISCONNECTONIDLE, NULL, CFNUMBER_BOOL },
568 { REGULAR, NETPROP PPP, DISCONNECTONIDLETIMER, NULL, CFNUMBER },
569 { REGULAR, NETPROP PPP, DISCONNECTONLOGOUT, NULL, CFNUMBER_BOOL },
570 { DEFINE , NETPROP PPP, DISCONNECTONSLEEP, NULL, CFNUMBER_BOOL },
571 { DEFINE , NETPROP PPP, DISCONNECTTIME, NULL, CFNUMBER },
572 { REGULAR, NETPROP PPP, IDLEREMINDERTIMER, NULL, CFNUMBER },
573 { REGULAR, NETPROP PPP, IDLEREMINDER, NULL, CFNUMBER_BOOL },
574 { DEFINE , NETPROP PPP, LASTCAUSE, NULL, CFNUMBER },
575 { REGULAR, NETPROP PPP, LOGFILE, NULL, CFSTRING },
576 { DEFINE , NETPROP PPP, PLUGINS, NULL, CFARRAY_CFSTRING },
577 { DEFINE , NETPROP PPP, RETRYCONNECTTIME, NULL, CFNUMBER },
578 { DEFINE , NETPROP PPP, SESSIONTIMER, NULL, CFNUMBER },
579 { DEFINE , NETPROP PPP, STATUS, NULL, CFNUMBER },
580 { DEFINE , NETPROP PPP, USE SESSIONTIMER, NULL, CFNUMBER_BOOL },
581 { REGULAR, NETPROP PPP, VERBOSELOGGING, NULL, CFNUMBER_BOOL },
582 { COMMENT, "", NULL, NULL, NULL },
583
584 { COMMENT, "/* " AUTH ": */", NULL, NULL, NULL },
585 { DEFINE , NETPROP PPP, AUTH EAP PLUGINS, NULL, CFARRAY_CFSTRING },
586 { REGULAR, NETPROP PPP, AUTH NAME, NULL, CFSTRING },
587 { REGULAR, NETPROP PPP, AUTH PASSWORD, NULL, CFSTRING },
588 { REGULAR, NETPROP PPP, AUTH PASSWORD ENCRYPTION, NULL, CFSTRING },
589 { DEFINE , NETPROP PPP, AUTH PROMPT, NULL, CFSTRING },
590 { REGULAR, NETPROP PPP, AUTH PROTOCOL, NULL, CFARRAY_CFSTRING },
591 { COMMENT, "", NULL, NULL, NULL },
592 { COMMENT, "/* " KEY_PREFIX NETPROP PPP AUTH PASSWORD ENCRYPTION " values */", NULL, NULL, NULL },
593 { DEFINE , NETVAL PPP AUTH PASSWORD ENCRYPTION, KEYCHAIN, NULL, NULL },
594 { COMMENT, "", NULL, NULL, NULL },
595 { COMMENT, "/* " KEY_PREFIX NETPROP PPP AUTH PROMPT " values */", NULL, NULL, NULL },
596 { DEFINE , NETVAL PPP AUTH PROMPT, BEFORE, NULL, CFSTRING },
597 { DEFINE , NETVAL PPP AUTH PROMPT, AFTER, NULL, CFSTRING },
598 { COMMENT, "", NULL, NULL, NULL },
599 { COMMENT, "/* " KEY_PREFIX NETPROP PPP AUTH PROTOCOL " values */", NULL, NULL, NULL },
600 { REGULAR, NETVAL PPP AUTH PROTOCOL, CHAP, NULL, CFSTRING },
601 { DEFINE , NETVAL PPP AUTH PROTOCOL, EAP, NULL, CFSTRING },
602 { DEFINE , NETVAL PPP AUTH PROTOCOL, MSCHAP1, NULL, CFSTRING },
603 { DEFINE , NETVAL PPP AUTH PROTOCOL, MSCHAP2, NULL, CFSTRING },
604 { REGULAR, NETVAL PPP AUTH PROTOCOL, PAP, NULL, CFSTRING },
605
606 { COMMENT, "\n/* " COMM ": */", NULL, NULL, NULL },
607 { REGULAR, NETPROP PPP, COMM ALTERNATEREMOTEADDRESS, NULL, CFSTRING },
608 { REGULAR, NETPROP PPP, COMM CONNECTDELAY, NULL, CFNUMBER },
609 { REGULAR, NETPROP PPP, COMM DISPLAYTERMINALWINDOW, NULL, CFNUMBER_BOOL },
610 { REGULAR, NETPROP PPP, COMM REDIALCOUNT, NULL, CFNUMBER },
611 { REGULAR, NETPROP PPP, COMM REDIALENABLED, NULL, CFNUMBER_BOOL },
612 { REGULAR, NETPROP PPP, COMM REDIALINTERVAL, NULL, CFNUMBER },
613 { REGULAR, NETPROP PPP, COMM REMOTEADDRESS, NULL, CFSTRING },
614 { REGULAR, NETPROP PPP, COMM TERMINALSCRIPT, NULL, CFSTRING },
615 { DEFINE , NETPROP PPP, COMM USE TERMINALSCRIPT, NULL, CFNUMBER_BOOL },
616
617 { COMMENT, "\n/* " CCP ": */", NULL, NULL, NULL },
618 { DEFINE , NETPROP PPP, CCP ENABLED, NULL, CFNUMBER_BOOL },
619
620 { COMMENT, "\n/* " IPCP ": */", NULL, NULL, NULL },
621 { REGULAR, NETPROP PPP, IPCP COMPRESSIONVJ, NULL, CFNUMBER_BOOL },
622
623 { COMMENT, "\n/* " LCP ": */", NULL, NULL, NULL },
624 { REGULAR, NETPROP PPP, LCP ECHOENABLED, NULL, CFNUMBER_BOOL },
625 { REGULAR, NETPROP PPP, LCP ECHOFAILURE, NULL, CFNUMBER },
626 { REGULAR, NETPROP PPP, LCP ECHOINTERVAL, NULL, CFNUMBER },
627 { REGULAR, NETPROP PPP, LCP COMPRESSIONACFIELD, NULL, CFNUMBER_BOOL },
628 { REGULAR, NETPROP PPP, LCP COMPRESSIONPFIELD, NULL, CFNUMBER_BOOL },
629 { REGULAR, NETPROP PPP, LCP MRU, NULL, CFNUMBER },
630 { REGULAR, NETPROP PPP, LCP MTU, NULL, CFNUMBER },
631 { REGULAR, NETPROP PPP, LCP RECEIVEACCM, NULL, CFNUMBER },
632 { REGULAR, NETPROP PPP, LCP TRANSMITACCM, NULL, CFNUMBER },
633 { COMMENT, "", NULL, NULL, NULL },
634
635 { COMMENT, "/*\n * " KEY_PREFIX NETENT PPPOE " Entity Keys\n */", NULL, NULL, NULL },
636 { COMMENT, "/* RESERVED FOR FUTURE USE */", NULL, NULL, NULL },
637 { COMMENT, "", NULL, NULL, NULL },
638
639 { COMMENT, "/*\n * " KEY_PREFIX NETENT PPPSERIAL " Entity Keys\n */", NULL, NULL, NULL },
640 { COMMENT, "/* RESERVED FOR FUTURE USE */", NULL, NULL, NULL },
641 { COMMENT, "", NULL, NULL, NULL },
642
643 { COMMENT, "/*\n * " KEY_PREFIX NETENT PPTP " Entity Keys\n */", NULL, NULL, NULL },
644 { COMMENT, "/* RESERVED FOR FUTURE USE */", NULL, NULL, NULL },
645 { COMMENT, "", NULL, NULL, NULL },
646
647 { COMMENT, "/*\n * " KEY_PREFIX NETENT L2TP " Entity Keys\n */", NULL, NULL, NULL },
648 { DEFINE , NETPROP L2TP, IPSEC SHAREDSECRET, NULL, CFSTRING },
649 { DEFINE , NETPROP L2TP, IPSEC SHAREDSECRET ENCRYPTION, NULL, CFSTRING },
650 { DEFINE , NETPROP L2TP, TRANSPORT, NULL, CFSTRING },
651 { COMMENT, "", NULL, NULL, NULL },
652 { COMMENT, "/* " KEY_PREFIX NETPROP L2TP IPSEC SHAREDSECRET ENCRYPTION " values */", NULL, NULL, NULL },
653 { DEFINE , NETVAL L2TP IPSEC SHAREDSECRET ENCRYPTION, KEYCHAIN, NULL, NULL },
654 { COMMENT, "", NULL, NULL, NULL },
655 { COMMENT, "/* " KEY_PREFIX NETPROP L2TP TRANSPORT " values */", NULL, NULL, NULL },
656 { DEFINE , NETVAL L2TP TRANSPORT, IP, NULL, NULL },
657 { DEFINE , NETVAL L2TP TRANSPORT, IPSEC, NULL, NULL },
658 { COMMENT, "", NULL, NULL, NULL },
659
660 { COMMENT, "/*\n * " KEY_PREFIX NETENT PROXIES " Entity Keys\n */", NULL, NULL, NULL },
661 { REGULAR, NETPROP PROXIES, EXCEPTIONSLIST, NULL, CFARRAY_CFSTRING },
662 { REGULAR, NETPROP PROXIES, FTPENABLE, NULL, CFNUMBER_BOOL },
663 { REGULAR, NETPROP PROXIES, FTPPASSIVE, NULL, CFNUMBER_BOOL },
664 { REGULAR, NETPROP PROXIES, FTPPORT, NULL, CFNUMBER },
665 { REGULAR, NETPROP PROXIES, FTPPROXY, NULL, CFSTRING },
666 { REGULAR, NETPROP PROXIES, GOPHERENABLE, NULL, CFNUMBER_BOOL },
667 { REGULAR, NETPROP PROXIES, GOPHERPORT, NULL, CFNUMBER },
668 { REGULAR, NETPROP PROXIES, GOPHERPROXY, NULL, CFSTRING },
669 { REGULAR, NETPROP PROXIES, HTTPENABLE, NULL, CFNUMBER_BOOL },
670 { REGULAR, NETPROP PROXIES, HTTPPORT, NULL, CFNUMBER },
671 { REGULAR, NETPROP PROXIES, HTTPPROXY, NULL, CFSTRING },
672 { DEFINE , NETPROP PROXIES, HTTPSENABLE, NULL, CFNUMBER_BOOL },
673 { DEFINE , NETPROP PROXIES, HTTPSPORT, NULL, CFNUMBER },
674 { DEFINE , NETPROP PROXIES, HTTPSPROXY, NULL, CFSTRING },
675 { REGULAR, NETPROP PROXIES, RTSPENABLE, NULL, CFNUMBER_BOOL },
676 { REGULAR, NETPROP PROXIES, RTSPPORT, NULL, CFNUMBER },
677 { REGULAR, NETPROP PROXIES, RTSPPROXY, NULL, CFSTRING },
678 { REGULAR, NETPROP PROXIES, SOCKSENABLE, NULL, CFNUMBER_BOOL },
679 { REGULAR, NETPROP PROXIES, SOCKSPORT, NULL, CFNUMBER },
680 { REGULAR, NETPROP PROXIES, SOCKSPROXY, NULL, CFSTRING },
681 { DEFINE , NETPROP PROXIES, PROXYAUTOCONFIGENABLE, NULL, CFNUMBER_BOOL },
682 { DEFINE , NETPROP PROXIES, PROXYAUTOCONFIGURLSTRING, NULL, CFSTRING },
683 { COMMENT, "", NULL, NULL, NULL },
684
685 { COMMENT, "/*\n " KEY_PREFIX COMP USERS " Entity Keys\n */", NULL, NULL, NULL },
686 { REGULAR, USERSENT, CONSOLEUSER, NULL, NULL },
687 { COMMENT, "", NULL, NULL, NULL },
688
689 { COMMENT, "/*\n * " KEY_PREFIX COMP SYSTEM " Properties\n */", NULL, NULL, NULL },
690 { REGULAR, SYSTEMPROP, COMPUTERNAME, NULL, CFSTRING },
691 { REGULAR, SYSTEMPROP, COMPUTERNAME ENCODING, NULL, CFNUMBER },
692 { COMMENT, "", NULL, NULL, NULL },
693
694 { COMMENT, "/*\n * Configuration Store Definitions\n */", NULL },
695 { COMMENT, "/* domain prefixes */", NULL },
696 { DEFINE , DYNAMICSTORE DOMAIN, FILE, "File:", NULL },
697 { DEFINE , DYNAMICSTORE DOMAIN, PLUGIN, "Plugin:", NULL },
698 { DEFINE , DYNAMICSTORE DOMAIN, SETUP, "Setup:", NULL },
699 { DEFINE , DYNAMICSTORE DOMAIN, STATE, "State:", NULL },
700 { DEFINE , DYNAMICSTORE DOMAIN, PREFS, "Prefs:", NULL },
701 { COMMENT, "", NULL, NULL, NULL },
702
703 { COMMENT, "/* " KEY_PREFIX DYNAMICSTORE DOMAIN SETUP " Properties */", NULL },
704 { DEFINE , DYNAMICSTORE SETUPPROP, CURRENTSET, NULL, CFSTRING },
705 { DEFINE , DYNAMICSTORE SETUPPROP, LASTUPDATED, NULL, NULL },
706 { COMMENT, "", NULL, NULL, NULL },
707
708 { COMMENT, "/* Properties */", NULL },
709 { DEFINE , DYNAMICSTORE NETPROP, INTERFACES, NULL, CFARRAY_CFSTRING },
710 { DEFINE , DYNAMICSTORE NETPROP, PRIMARYINTERFACE, NULL, CFSTRING },
711 { DEFINE , DYNAMICSTORE NETPROP, PRIMARYSERVICE, NULL, CFSTRING },
712 { DEFINE , DYNAMICSTORE NETPROP, SERVICEIDS, NULL, CFARRAY_CFSTRING },
713 { COMMENT, "", NULL, NULL, NULL },
714
715 { COMMENT, "/*\n * Obsolete schema definitions which will be removed \"soon\".\n */", NULL },
716 { OBSOLETE, USERSPROP CONSOLEUSER, NAME, NULL, CFSTRING },
717 { OBSOLETE, USERSPROP CONSOLEUSER, UID, NULL, CFNUMBER },
718 { OBSOLETE, USERSPROP CONSOLEUSER, GID, NULL, CFNUMBER },
719 { COMMENT, "", NULL, NULL, NULL },
720
721 { END, NULL, NULL, NULL, NULL },
722 };
723
724 static inline void
725 setmax(int *max, char **maxstr, char *str)
726 {
727 int l;
728
729 l = strlen(str);
730 if (l > *max) {
731 if (*maxstr) free(*maxstr);
732 *maxstr = strdup(str);
733 *max = l;
734 }
735 return;
736 }
737
738 enum {
739 gen_header_e,
740 gen_hfile_e,
741 gen_cfile_e,
742 };
743
744 void
745 dump_names(int type)
746 {
747 int i;
748 int maxkbuf = 0;
749 char *maxkstr = NULL;
750 int maxvbuf = 0;
751 char *maxvstr = NULL;
752
753 for (i = 0; TRUE; i++) {
754 switch (names[i].control) {
755 case END: {
756 goto done;
757 break;
758 }
759 case COMMENT: {
760 switch (type) {
761 case gen_header_e:
762 case gen_hfile_e:
763 if (names[i].prefix)
764 printf("%s\n", names[i].prefix);
765 break;
766 default:
767 break;
768 }
769 break;
770 }
771 case DEFINE: {
772 char kbuf[256];
773 char vbuf[256];
774
775 switch (type) {
776 case gen_header_e:
777 snprintf(kbuf, sizeof(kbuf), KEY_PREFIX "%s%s",
778 names[i].prefix, names[i].key);
779
780 if (names[i].value)
781 snprintf(vbuf, sizeof(vbuf), "SCSTR(\"%s\")",
782 names[i].value);
783 else
784 snprintf(vbuf, sizeof(vbuf), "SCSTR(\"%s\")",
785 names[i].key);
786
787 if (names[i].type)
788 printf("#define %-40s %-40s /* %s */\n",
789 kbuf, vbuf, names[i].type);
790 else
791 printf("#define %-40s %-40s\n",
792 kbuf, vbuf);
793 break;
794 case gen_hfile_e:
795 snprintf(kbuf, sizeof(kbuf), "(" KEY_PREFIX "%s%s);",
796 names[i].prefix, names[i].key);
797 setmax(&maxkbuf, &maxkstr, kbuf);
798
799 snprintf(vbuf, sizeof(vbuf), "\"%s\"",
800 names[i].value ? names[i].value : names[i].key);
801 setmax(&maxvbuf, &maxvstr, vbuf);
802
803 printf("SC_SCHEMA_DECLARATION%-42s /* %-17s %-30s */\n",
804 kbuf,
805 names[i].type ? names[i].type : "",
806 vbuf);
807 break;
808 case gen_cfile_e:
809 snprintf(kbuf, sizeof(kbuf), KEY_PREFIX "%s%s",
810 names[i].prefix, names[i].key);
811
812 if (names[i].value)
813 printf("const CFStringRef %-45s = CFSTR(\"%s\");\n",
814 kbuf, names[i].value);
815 else
816 printf("const CFStringRef %-45s = CFSTR(\"%s\");\n",
817 kbuf, names[i].key);
818 break;
819 default:
820 break;
821 }
822 break;
823 }
824 case REGULAR: {
825 char kbuf[256];
826 char vbuf[256];
827
828 switch (type) {
829 case gen_header_e:
830 snprintf(kbuf, sizeof(kbuf), KEY_PREFIX "%s%s",
831 names[i].prefix, names[i].key);
832
833 if (names[i].value)
834 snprintf(vbuf, sizeof(vbuf), "SCSTR(\"%s\")",
835 names[i].value);
836 else
837 snprintf(vbuf, sizeof(vbuf), "SCSTR(\"%s\")",
838 names[i].key);
839
840 if (names[i].type)
841 printf("#define %-40s %-40s /* %s */\n",
842 kbuf, vbuf, names[i].type);
843 else
844 printf("#define %-40s %-40s\n",
845 kbuf, vbuf);
846 break;
847 case gen_hfile_e:
848 snprintf(kbuf, sizeof(kbuf), "(" KEY_PREFIX "%s%s);",
849 names[i].prefix, names[i].key);
850 setmax(&maxkbuf, &maxkstr, kbuf);
851
852 snprintf(vbuf, sizeof(vbuf), "\"%s\"",
853 names[i].value ? names[i].value : names[i].key);
854 setmax(&maxvbuf, &maxvstr, vbuf);
855
856 printf("SC_SCHEMA_DECLARATION%-42s /* %-17s %-30s */\n",
857 kbuf,
858 names[i].type ? names[i].type : "",
859 vbuf);
860 break;
861 case gen_cfile_e:
862 snprintf(kbuf, sizeof(kbuf), KEY_PREFIX "%s%s",
863 names[i].prefix, names[i].key);
864
865 if (names[i].value)
866 printf("const CFStringRef %-45s = CFSTR(\"%s\");\n",
867 kbuf, names[i].value);
868 else
869 printf("const CFStringRef %-45s = CFSTR(\"%s\");\n",
870 kbuf, names[i].key);
871 break;
872 default:
873 break;
874 }
875 break;
876 }
877 case OBSOLETE: {
878 static int nObsolete = 0;
879 char kbuf[256];
880 char vbuf[256];
881
882 switch (type) {
883 case gen_hfile_e:
884 if (nObsolete++ == 0) {
885 printf("#ifndef SCSTR\n");
886 printf("#include <CoreFoundation/CFString.h>\n");
887 printf("#define SCSTR(s) CFSTR(s)\n");
888 printf("#endif\n");
889 }
890
891 snprintf(kbuf, sizeof(kbuf), KEY_PREFIX "%s%s",
892 names[i].prefix, names[i].key);
893
894 if (names[i].value)
895 snprintf(vbuf, sizeof(vbuf), "SCSTR(\"%s\")",
896 names[i].value);
897 else
898 snprintf(vbuf, sizeof(vbuf), "SCSTR(\"%s\")",
899 names[i].key);
900
901 printf("#define %-40s %-40s /* %s */\n",
902 kbuf,
903 vbuf,
904 names[i].type ? names[i].type : "");
905 break;
906 default:
907 break;
908 }
909 break;
910 }
911 case FUTURE: {
912 char kbuf[256];
913
914 switch (type) {
915 case gen_header_e:
916 snprintf(kbuf, sizeof(kbuf), KEY_PREFIX "%s%s",
917 names[i].prefix, names[i].key);
918
919 printf("// #define %-37s %-40s /* %s */\n",
920 kbuf,
921 "SCSTR(\"???\") */",
922 "RESERVED FOR FUTURE USE");
923 break;
924 case gen_hfile_e:
925 snprintf(kbuf, sizeof(kbuf), "(" KEY_PREFIX "%s%s);",
926 names[i].prefix, names[i].key);
927 setmax(&maxkbuf, &maxkstr, kbuf);
928
929 printf("// SC_SCHEMA_DECLARATION%-39s /* %s */\n",
930 kbuf, "RESERVED FOR FUTURE USE");
931 break;
932 default:
933 break;
934 }
935 break;
936 }
937 default: {
938 break;
939 }
940 }
941 }
942 done:
943 switch (type) {
944 case gen_hfile_e:
945 fprintf(stderr, "max key: length = %2d, string = %s\n", maxkbuf, maxkstr);
946 fprintf(stderr, "max val: length = %2d, string = %s\n", maxvbuf, maxvstr);
947 break;
948 }
949 return;
950 }
951
952 int
953 main(int argc, char * argv[])
954 {
955 char * type = "";
956
957 if (argc >= 2)
958 type = argv[1];
959
960 if (strcmp(type, "header-x") == 0) {
961 printf("%s\n", copyright_string);
962 printf("/*\n * This file is automatically generated\n * DO NOT EDIT!\n */\n\n");
963
964 printf("/*\n");
965 printf(" * Note: For Cocoa/Obj-C/Foundation programs accessing these preference\n");
966 printf(" * keys you may want to consider the following:\n");
967 printf(" *\n");
968 printf(" * #define SCSTR(s) (NSString *)CFSTR(s)\n");
969 printf(" * #import <SystemConfiguration/SystemConfiguration.h>\n");
970 printf(" */\n\n");
971
972 printf("#ifndef _SCSCHEMADEFINITIONS_10_1_H\n#define _SCSCHEMADEFINITIONS_10_1_H\n\n");
973
974 printf("#ifndef SCSTR\n");
975 printf("#include <CoreFoundation/CFString.h>\n");
976 printf("#define SCSTR(s) CFSTR(s)\n");
977 printf("#endif\n");
978
979 printf("\n");
980 dump_names(gen_header_e);
981 printf("#endif /* _SCSCHEMADEFINITIONS_10_1_H */\n");
982 }
983 else if (strcmp(type, "header") == 0) {
984 printf("%s\n", copyright_string);
985 printf("/*\n * This file is automatically generated\n * DO NOT EDIT!\n */\n\n");
986
987 printf("/*\n");
988 printf(" * Note: For Cocoa/Obj-C/Foundation programs accessing these preference\n");
989 printf(" * keys you may want to consider the following:\n");
990 printf(" *\n");
991 printf(" * #define " SC_SCHEMA_DECLARATION "(x)\t\textern NSString * x\n");
992 printf(" * #import <SystemConfiguration/SystemConfiguration.h>\n");
993 printf(" */\n\n");
994
995 printf("#ifndef _SCSCHEMADEFINITIONS_H\n#define _SCSCHEMADEFINITIONS_H\n\n");
996
997 printf("#ifndef SC_SCHEMA_DECLARATION\n");
998 printf("#ifndef SCSTR\n");
999 printf("#include <CoreFoundation/CFString.h>\n");
1000 printf("#define " SC_SCHEMA_DECLARATION "(x)\textern const CFStringRef x\n");
1001 printf("#else\n");
1002 printf("#import <Foundation/NSString.h>\n");
1003 printf("#define " SC_SCHEMA_DECLARATION "(x)\textern NSString * x\n");
1004 printf("#endif\n");
1005 printf("#endif\n");
1006
1007 printf("\n");
1008 dump_names(gen_hfile_e);
1009
1010 printf("#include <AvailabilityMacros.h>\n");
1011 printf("#if MAC_OS_X_VERSION_10_3 > MAC_OS_X_VERSION_MIN_REQUIRED\n");
1012 printf(" #if MAC_OS_X_VERSION_10_1 <= MAC_OS_X_VERSION_MIN_REQUIRED\n");
1013 printf(" #include <SystemConfiguration/SCSchemaDefinitions_10_1.h>\n");
1014 printf(" #endif\n");
1015 printf("#endif\n\n");
1016
1017 printf("#endif /* _SCSCHEMADEFINITIONS_H */\n");
1018 }
1019 else if (strcmp(type, "cfile") == 0) {
1020 printf("/*\n");
1021 printf(" * This file is automatically generated\n");
1022 printf(" * DO NOT EDIT!\n");
1023 printf(" */\n");
1024 printf("\n");
1025 printf("#include <CoreFoundation/CFString.h>\n");
1026 printf("\n");
1027 dump_names(gen_cfile_e);
1028 }
1029 exit(0);
1030 return (0);
1031 }
1032