2 * Copyright (c) 2006, 2008, 2009, 2011 Apple Inc. All rights reserved.
4 * @APPLE_LICENSE_HEADER_START@
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
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.
21 * @APPLE_LICENSE_HEADER_END@
24 #ifndef _SCNETWORKCONNECTIONPRIVATE_H
25 #define _SCNETWORKCONNECTIONPRIVATE_H
27 #include <Availability.h>
28 #include <sys/cdefs.h>
29 #include <CoreFoundation/CoreFoundation.h>
30 #include <SystemConfiguration/SystemConfiguration.h>
31 #include <SystemConfiguration/SCNetworkConfigurationPrivate.h>
34 typedef const struct __SCUserPreferencesRef
* SCUserPreferencesRef
;
41 #pragma mark SCNetworkConnection SPIs
44 CFArrayRef
/* of SCNetworkServiceRef's */
45 SCNetworkConnectionCopyAvailableServices (SCNetworkSetRef set
) __OSX_AVAILABLE_STARTING(__MAC_10_5
,__IPHONE_2_0
);
47 SCNetworkConnectionRef
48 SCNetworkConnectionCreateWithService (CFAllocatorRef allocator
,
49 SCNetworkServiceRef service
,
50 SCNetworkConnectionCallBack callout
,
51 SCNetworkConnectionContext
*context
) __OSX_AVAILABLE_STARTING(__MAC_10_5
,__IPHONE_2_0
);
54 SCNetworkConnectionGetService (SCNetworkConnectionRef connection
) __OSX_AVAILABLE_STARTING(__MAC_10_5
,__IPHONE_2_0
);
56 CFArrayRef
/* of SCUserPreferencesRef's */
57 SCNetworkConnectionCopyAllUserPreferences (SCNetworkConnectionRef connection
) __OSX_AVAILABLE_STARTING(__MAC_10_5
,__IPHONE_2_0
);
60 SCNetworkConnectionCopyCurrentUserPreferences (SCNetworkConnectionRef connection
) __OSX_AVAILABLE_STARTING(__MAC_10_5
,__IPHONE_2_0
);
63 SCNetworkConnectionCreateUserPreferences (SCNetworkConnectionRef connection
) __OSX_AVAILABLE_STARTING(__MAC_10_5
,__IPHONE_2_0
);
66 SCNetworkConnectionSuspend (SCNetworkConnectionRef connection
) __OSX_AVAILABLE_STARTING(__MAC_10_3
,__IPHONE_2_0
);
69 SCNetworkConnectionResume (SCNetworkConnectionRef connection
) __OSX_AVAILABLE_STARTING(__MAC_10_3
,__IPHONE_2_0
);
73 #pragma mark SCNetworkConnection "VPN on Demand" SPIs
78 * in the SCDynamicStore we will have :
80 * <key>State:/Network/Global/OnDemand</key>
85 * <key>ServiceID</key>
86 * <string>A740678C-1983-492B-BF64-B825AAE7101E</string>
88 * <integer>8</integer>
89 * <key>RemoteAddress</key>
90 * <string>vpn.mycompany.com</string>
91 * <key>OnDemandMatchDomainsAlways</key>
93 * <string>internal.mycompany.com</string>
95 * <key>OnDemandMatchDomainsOnRetry</key>
97 * <string>mycompany.com</string>
99 * <key>kSCNetworkConnectionOnDemandMatchDomainsNever</key>
101 * <string>external.mycompany.com</string>
109 #define kSCNETWORKCONNECTION_ONDEMAND_NOTIFY_KEY "com.apple.system.SCNetworkConnectionOnDemand"
111 // a CFArray[CFDictionary] of VPN on Demand "trigger" configurations
112 #define kSCNetworkConnectionOnDemandTriggers CFSTR("Triggers")
115 #define kSCNetworkConnectionOnDemandServiceID CFSTR("ServiceID")
117 // VPN service status (idle, connecting, connected, disconnecting)
118 #define kSCNetworkConnectionOnDemandStatus CFSTR("Status")
120 // VPN server address
121 #define kSCNetworkConnectionOnDemandRemoteAddress CFSTR("RemoteAddress")
123 // a CFArray[CFString] representing those domain (or host) names that, if
124 // matched to a target hostname, should result in our first establishing
125 // the VPN connection before any DNS queries are issued.
126 #define kSCNetworkConnectionOnDemandMatchDomainsAlways CFSTR("OnDemandMatchDomainsAlways")
128 // a CFArray[CFString] representing those domain (or host) names that, if
129 // matched to a target hostname, should result in a DNS query regardless of
130 // whether the VPN connection has been established. If the DNS query returns
131 // an [EAI_NONAME] error then we should establish the VPN connection and
132 // re-issue / retry the query.
133 #define kSCNetworkConnectionOnDemandMatchDomainsOnRetry CFSTR("OnDemandMatchDomainsOnRetry")
135 // a CFArray[CFString] representing those domain (or host) names that should
136 // be excluded from those that would be used to establish tje VPN connection.
137 #define kSCNetworkConnectionOnDemandMatchDomainsNever CFSTR("OnDemandMatchDomainsNever")
142 __SCNetworkConnectionCopyOnDemandInfoWithName (SCDynamicStoreRef
*storeP
,
143 CFStringRef nodeName
,
144 Boolean onDemandRetry
,
145 CFStringRef
*connectionServiceID
,
146 SCNetworkConnectionStatus
*connectionStatus
,
147 CFStringRef
*vpnRemoteAddress
) __OSX_AVAILABLE_STARTING(__MAC_10_6
,__IPHONE_2_0
);
151 #pragma mark SCUserPreferences SPIs
155 SCUserPreferencesRemove (SCUserPreferencesRef userPreferences
) __OSX_AVAILABLE_STARTING(__MAC_10_5
,__IPHONE_2_0
);
158 SCUserPreferencesSetCurrent (SCUserPreferencesRef userPreferences
) __OSX_AVAILABLE_STARTING(__MAC_10_5
,__IPHONE_2_0
);
161 SCUserPreferencesCopyName (SCUserPreferencesRef userPreferences
) __OSX_AVAILABLE_STARTING(__MAC_10_5
,__IPHONE_2_0
);
164 SCUserPreferencesGetTypeID (void) __OSX_AVAILABLE_STARTING(__MAC_10_5
,__IPHONE_2_0
);
167 SCUserPreferencesGetUniqueID (SCUserPreferencesRef userPreferences
) __OSX_AVAILABLE_STARTING(__MAC_10_5
,__IPHONE_2_0
);
170 SCUserPreferencesIsForced (SCUserPreferencesRef userPreferences
) __OSX_AVAILABLE_STARTING(__MAC_10_5
,__IPHONE_2_0
);
173 SCUserPreferencesSetName (SCUserPreferencesRef userPreferences
,
174 CFStringRef newName
) __OSX_AVAILABLE_STARTING(__MAC_10_5
,__IPHONE_2_0
);
177 SCNetworkConnectionStartWithUserPreferences (SCNetworkConnectionRef connection
,
178 SCUserPreferencesRef userPreferences
,
179 Boolean linger
) __OSX_AVAILABLE_STARTING(__MAC_10_5
,__IPHONE_2_0
);
182 SCUserPreferencesCopyInterfaceConfiguration (SCUserPreferencesRef userPreferences
,
183 SCNetworkInterfaceRef interface
) __OSX_AVAILABLE_STARTING(__MAC_10_5
,__IPHONE_2_0
);
186 SCUserPreferencesSetInterfaceConfiguration (SCUserPreferencesRef userPreferences
,
187 SCNetworkInterfaceRef interface
,
188 CFDictionaryRef newOptions
) __OSX_AVAILABLE_STARTING(__MAC_10_5
,__IPHONE_2_0
);
191 SCUserPreferencesCopyExtendedInterfaceConfiguration
192 (SCUserPreferencesRef userPreferences
,
193 SCNetworkInterfaceRef interface
,
194 CFStringRef extendedType
) __OSX_AVAILABLE_STARTING(__MAC_10_5
,__IPHONE_2_0
);
197 SCUserPreferencesSetExtendedInterfaceConfiguration
198 (SCUserPreferencesRef userPreferences
,
199 SCNetworkInterfaceRef interface
,
200 CFStringRef extendedType
,
201 CFDictionaryRef newOptions
) __OSX_AVAILABLE_STARTING(__MAC_10_5
,__IPHONE_2_0
);
205 #pragma mark SCUserPreferences + SCNetworkInterface Password SPIs
209 SCUserPreferencesCheckInterfacePassword (SCUserPreferencesRef userPreferences
,
210 SCNetworkInterfaceRef interface
,
211 SCNetworkInterfacePasswordType passwordType
) __OSX_AVAILABLE_STARTING(__MAC_10_5
,__IPHONE_2_0
);
214 SCUserPreferencesCopyInterfacePassword (SCUserPreferencesRef userPreferences
,
215 SCNetworkInterfaceRef interface
,
216 SCNetworkInterfacePasswordType passwordType
) __OSX_AVAILABLE_STARTING(__MAC_10_5
,__IPHONE_2_0
);
219 SCUserPreferencesRemoveInterfacePassword (SCUserPreferencesRef userPreferences
,
220 SCNetworkInterfaceRef interface
,
221 SCNetworkInterfacePasswordType passwordType
) __OSX_AVAILABLE_STARTING(__MAC_10_5
,__IPHONE_2_0
);
224 SCUserPreferencesSetInterfacePassword (SCUserPreferencesRef userPreferences
,
225 SCNetworkInterfaceRef interface
,
226 SCNetworkInterfacePasswordType passwordType
,
228 CFDictionaryRef options
) __OSX_AVAILABLE_STARTING(__MAC_10_5
,__IPHONE_2_0
);
232 #endif /* _SCNETWORKCONNECTIONPRIVATE_H */