]> git.saurik.com Git - apple/configd.git/blob - SystemConfiguration.fproj/SCDKeys.c
configd-1061.141.1.tar.gz
[apple/configd.git] / SystemConfiguration.fproj / SCDKeys.c
1 /*
2 * Copyright (c) 2000, 2001, 2005, 2010 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 * December 11, 2000 Allan Nathanson <ajn@apple.com>
31 * - initial revision
32 */
33
34 #include <SystemConfiguration/SystemConfiguration.h>
35
36 #include <stdarg.h>
37
38 /*
39 * SCDynamicStoreKeyCreate*
40 * - convenience routines that create a CFString key for an item in the store
41 */
42
43 /*
44 * Function: SCDynamicStoreKeyCreate
45 * Purpose:
46 * Creates a store key using the given format.
47 */
48 CFStringRef
49 SCDynamicStoreKeyCreate(CFAllocatorRef allocator,
50 CFStringRef fmt,
51 ...)
52 {
53 va_list args;
54 CFStringRef result;
55
56 va_start(args, fmt);
57 result = CFStringCreateWithFormatAndArguments(allocator,
58 NULL,
59 fmt,
60 args);
61 va_end(args);
62
63 return result;
64 }
65
66 CFStringRef
67 SCDynamicStoreKeyCreateNetworkGlobalEntity(CFAllocatorRef allocator,
68 CFStringRef domain,
69 CFStringRef entity)
70 {
71 return (CFStringCreateWithFormat(allocator,
72 NULL,
73 CFSTR("%@/%@/%@/%@"),
74 domain,
75 kSCCompNetwork,
76 kSCCompGlobal,
77 entity));
78 }
79
80 CFStringRef
81 SCDynamicStoreKeyCreateNetworkInterface(CFAllocatorRef allocator,
82 CFStringRef domain)
83 {
84 return (CFStringCreateWithFormat(allocator,
85 NULL,
86 CFSTR("%@/%@/%@"),
87 domain,
88 kSCCompNetwork,
89 kSCCompInterface));
90 }
91
92 CFStringRef
93 SCDynamicStoreKeyCreateNetworkInterfaceEntity(CFAllocatorRef allocator,
94 CFStringRef domain,
95 CFStringRef ifname,
96 CFStringRef entity)
97 {
98 if (entity == NULL) {
99 return (CFStringCreateWithFormat(allocator,
100 NULL,
101 CFSTR("%@/%@/%@/%@"),
102 domain,
103 kSCCompNetwork,
104 kSCCompInterface,
105 ifname));
106 } else {
107 return (CFStringCreateWithFormat(allocator,
108 NULL,
109 CFSTR("%@/%@/%@/%@/%@"),
110 domain,
111 kSCCompNetwork,
112 kSCCompInterface,
113 ifname,
114 entity));
115 }
116 }
117
118 CFStringRef
119 SCDynamicStoreKeyCreateNetworkServiceEntity(CFAllocatorRef allocator,
120 CFStringRef domain,
121 CFStringRef serviceID,
122 CFStringRef entity)
123 {
124 if (entity == NULL) {
125 return (CFStringCreateWithFormat(allocator,
126 NULL,
127 CFSTR("%@/%@/%@/%@"),
128 domain,
129 kSCCompNetwork,
130 kSCCompService,
131 serviceID));
132 } else {
133 return (CFStringCreateWithFormat(allocator,
134 NULL,
135 CFSTR("%@/%@/%@/%@/%@"),
136 domain,
137 kSCCompNetwork,
138 kSCCompService,
139 serviceID,
140 entity));
141 }
142 }