1/* 2 * Copyright (c) 2005-2014 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#ifndef _SCNETWORKCONFIGURATIONPRIVATE_H 25#define _SCNETWORKCONFIGURATIONPRIVATE_H 26 27#include <Availability.h> 28#include <TargetConditionals.h> 29#include <sys/cdefs.h> 30#include <CoreFoundation/CoreFoundation.h> 31#include <SystemConfiguration/SystemConfiguration.h> 32#include <SystemConfiguration/SCValidation.h> 33#include <IOKit/IOKitLib.h> 34 35/*! 36 @header SCNetworkConfigurationPrivate 37 */ 38 39__BEGIN_DECLS 40 41 42/*! 43 @group Interface configuration 44 */ 45 46#pragma mark - 47#pragma mark SCNetworkInterface configuration (typedefs, consts, enums) 48 49/*! 50 @const kSCNetworkInterfaceTypeBridge 51 */ 52extern const CFStringRef kSCNetworkInterfaceTypeBridge __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/); 53 54 55/*! 56 @const kSCNetworkInterfaceTypeLoopback 57 */ 58extern const CFStringRef kSCNetworkInterfaceTypeLoopback __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/); 59 60/*! 61 @const kSCNetworkInterfaceLoopback 62 @discussion A network interface representing the loopback 63 interface (lo0). 64 */ 65extern const SCNetworkInterfaceRef kSCNetworkInterfaceLoopback __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/); 66 67/*! 68 @const kSCNetworkInterfaceTypeVPN 69 */ 70extern const CFStringRef kSCNetworkInterfaceTypeVPN __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/); 71 72/*! 73 @group Interface configuration (Bridge) 74 */ 75 76/*! 77 @typedef SCBridgeInterfaceRef 78 @discussion This is the type of a reference to an object that represents 79 a bridge interface. 80 */ 81typedef SCNetworkInterfaceRef SCBridgeInterfaceRef; 82 83typedef CF_ENUM(uint32_t, SCNetworkServicePrimaryRank) { 84 kSCNetworkServicePrimaryRankDefault = 0, 85 kSCNetworkServicePrimaryRankFirst = 1, 86 kSCNetworkServicePrimaryRankLast = 2, 87 kSCNetworkServicePrimaryRankNever = 3, 88 kSCNetworkServicePrimaryRankScoped = 4 89}; 90 91#pragma mark - 92#pragma mark SCNetworkInterface configuration (SPI) 93 94/*! 95 @group Interface configuration 96 */ 97 98static __inline__ CFTypeRef 99isA_SCNetworkInterface(CFTypeRef obj) 100{ 101 return (isA_CFType(obj, SCNetworkInterfaceGetTypeID())); 102} 103 104static __inline__ CFTypeRef 105isA_SCBondInterface(CFTypeRef obj) 106{ 107 CFStringRef interfaceType; 108 109 if (!isA_SCNetworkInterface(obj)) { 110 // if not an SCNetworkInterface 111 return NULL; 112 } 113 114 interfaceType = SCNetworkInterfaceGetInterfaceType((SCNetworkInterfaceRef)obj); 115 if (!CFEqual(interfaceType, kSCNetworkInterfaceTypeBond)) { 116 // if not a Bond 117 return NULL; 118 } 119 120 return obj; 121} 122 123static __inline__ CFTypeRef 124isA_SCBridgeInterface(CFTypeRef obj) 125{ 126 CFStringRef interfaceType; 127 128 if (!isA_SCNetworkInterface(obj)) { 129 // if not an SCNetworkInterface 130 return NULL; 131 } 132 133 interfaceType = SCNetworkInterfaceGetInterfaceType((SCNetworkInterfaceRef)obj); 134 if (!CFEqual(interfaceType, kSCNetworkInterfaceTypeBridge)) { 135 // if not a bridge 136 return NULL; 137 } 138 139 return obj; 140} 141 142static __inline__ CFTypeRef 143isA_SCVLANInterface(CFTypeRef obj) 144{ 145 CFStringRef interfaceType; 146 147 if (!isA_SCNetworkInterface(obj)) { 148 // if not an SCNetworkInterface 149 return NULL; 150 } 151 152 interfaceType = SCNetworkInterfaceGetInterfaceType((SCNetworkInterfaceRef)obj); 153 if (!CFEqual(interfaceType, kSCNetworkInterfaceTypeVLAN)) { 154 // if not a VLAN 155 return NULL; 156 } 157 158 return obj; 159} 160 161/*! 162 @function _SCNetworkInterfaceCompare 163 @discussion Compares two SCNetworkInterface objects. 164 @param val1 The SCNetworkInterface object. 165 @param val2 The SCNetworkInterface object. 166 @param context Not used. 167 @result A comparison result. 168 */ 169CFComparisonResult 170_SCNetworkInterfaceCompare (const void *val1, 171 const void *val2, 172 void *context) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0); 173 174/*! 175 @function _SCNetworkInterfaceCopyActive 176 @discussion Creates an SCNetworkInterface and associated with interface name 177 and SCDynamicStoreRef 178 @param the interface name 179 @param the SCDynamicStoreRef 180 @result the SCNetworkInterface 181 */ 182SCNetworkInterfaceRef 183_SCNetworkInterfaceCopyActive (SCDynamicStoreRef store, 184 CFStringRef bsdName) __OSX_AVAILABLE_STARTING(__MAC_10_8,__IPHONE_5_0); 185 186/*! 187 @function _SCNetworkInterfaceCopyAllWithPreferences 188 Returns all network capable interfaces on the system. 189 @param prefs The "preferences" session. 190 @result The list of interfaces on the system. 191 You must release the returned value. 192 */ 193CFArrayRef /* of SCNetworkInterfaceRef's */ 194_SCNetworkInterfaceCopyAllWithPreferences (SCPreferencesRef prefs) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0/*SPI*/); 195 196/*! 197 @function _SCNetworkInterfaceCopyBTPANInterface 198 @discussion Returns the SCNetworkInterface associated with the BT-PAN interface 199 @result The BT-PAN interface; NULL if the interface is not (yet) known. 200 */ 201SCNetworkInterfaceRef 202_SCNetworkInterfaceCopyBTPANInterface (void) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_NA); 203 204/*! 205 @function _SCNetworkInterfaceCopySlashDevPath 206 @discussion Returns the /dev pathname for the interface. 207 @param interface The network interface. 208 @result The /dev pathname associated with the interface (e.g. "/dev/modem"); 209 NULL if no path is available. 210 */ 211CFStringRef 212_SCNetworkInterfaceCopySlashDevPath (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_3_0); 213 214#define kIncludeNoVirtualInterfaces 0x0 215#define kIncludeVLANInterfaces 0x1 216#define kIncludeBondInterfaces 0x2 217#define kIncludeBridgeInterfaces 0x4 218#define kIncludeAllVirtualInterfaces 0xffffffff 219 220/*! 221 @function _SCNetworkInterfaceCreateWithBSDName 222 @discussion Create a new network interface associated with the provided 223 BSD interface name. This API supports Ethernet, FireWire, and 224 IEEE 802.11 interfaces. 225 @param bsdName The BSD interface name. 226 @param flags Indicates whether virtual (Bond, Bridge, VLAN) 227 network interfaces should be included. 228 @result A reference to the new SCNetworkInterface. 229 You must release the returned value. 230 */ 231SCNetworkInterfaceRef 232_SCNetworkInterfaceCreateWithBSDName (CFAllocatorRef allocator, 233 CFStringRef bsdName, 234 UInt32 flags) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0); 235 236/*! 237 @function _SCNetworkInterfaceCreateWithEntity 238 @discussion Create a new network interface associated with the provided 239 SCDynamicStore service entity dictionary. 240 @param interface_entity The entity dictionary. 241 @param service The network service. 242 @result A reference to the new SCNetworkInterface. 243 You must release the returned value. 244 */ 245SCNetworkInterfaceRef 246_SCNetworkInterfaceCreateWithEntity (CFAllocatorRef allocator, 247 CFDictionaryRef interface_entity, 248 SCNetworkServiceRef service) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0); 249 250/*! 251 @function _SCNetworkInterfaceCreateWithIONetworkInterfaceObject 252 @discussion Create a new network interface associated with the provided 253 IORegistry "IONetworkInterface" object. 254 @param if_obj The IONetworkInterface object. 255 @result A reference to the new SCNetworkInterface. 256 You must release the returned value. 257 */ 258SCNetworkInterfaceRef 259_SCNetworkInterfaceCreateWithIONetworkInterfaceObject (io_object_t if_obj) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0); 260 261/*! 262 @function SCNetworkInterfaceGetPrimaryRank 263 @discussion We allow caller to retrieve the rank on an interface. 264 @param the interface to get the rank 265 @result SCNetworkServicePrimaryRank 266 */ 267SCNetworkServicePrimaryRank 268SCNetworkInterfaceGetPrimaryRank (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_8,__IPHONE_5_0); 269 270/*! 271 @function SCNetworkInterfaceSetPrimaryRank 272 @discussion We allow caller to set an assertion on an interface. 273 The rank assertion lives as long as the SCNetworkInterfaceRef 274 remains valid. 275 @param the interface to set the rank assertion 276 @param the new rank to be set 277 @result TRUE if operation is successful; FALSE if an error was encountered. 278 */ 279Boolean 280SCNetworkInterfaceSetPrimaryRank (SCNetworkInterfaceRef interface, 281 SCNetworkServicePrimaryRank newRank) __OSX_AVAILABLE_STARTING(__MAC_10_8,__IPHONE_5_0); 282 283#define kSCNetworkInterfaceConfigurationActionKey CFSTR("New Interface Detected Action") 284#define kSCNetworkInterfaceConfigurationActionValueNone CFSTR("None") 285#define kSCNetworkInterfaceConfigurationActionValuePrompt CFSTR("Prompt") 286#define kSCNetworkInterfaceConfigurationActionValueConfigure CFSTR("Configure") 287 288#define kSCNetworkInterfaceNetworkConfigurationOverridesKey CFSTR("NetworkConfigurationOverrides") 289#define kSCNetworkInterfaceHiddenConfigurationKey CFSTR("HiddenConfiguration") 290#define kSCNetworkInterfaceHiddenPortKey CFSTR("HiddenPort") /* for serial ports */ 291#define kSCNetworkInterfaceHiddenInterfaceKey CFSTR("HiddenInterface") /* for network interfaces */ 292 293// IORegistry property to indicate that a [WWAN] interface is not yet ready 294#define kSCNetworkInterfaceInitializingKey CFSTR("Initializing") 295 296/*! 297 @function _SCNetworkInterfaceCopyInterfaceInfo 298 @discussion Returns interface details 299 @param interface The network interface. 300 @result A dictionary with details about the network interface. 301 */ 302CFDictionaryRef 303_SCNetworkInterfaceCopyInterfaceInfo (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_3_0); 304 305/*! 306 @function _SCNetworkInterfaceGetConfigurationAction 307 @discussion Returns a user-notification / auto-configuration action for the interface. 308 @param interface The network interface. 309 @result The user-notification / auto-configuration action; 310 NULL if the default action should be used. 311 */ 312CFStringRef 313_SCNetworkInterfaceGetConfigurationAction (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_2_0); 314 315/*! 316 @function _SCNetworkInterfaceGetHardwareAddress 317 @discussion Returns a link layer address for the interface. 318 @param interface The network interface. 319 @result The hardware (MAC) address for the interface. 320 NULL if no hardware address is available. 321 */ 322CFDataRef 323_SCNetworkInterfaceGetHardwareAddress (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0); 324 325/*! 326 @function _SCNetworkInterfaceGetIOInterfaceNamePrefix 327 @discussion Returns the IOInterfaceNamePrefix for the interface. 328 @param interface The network interface. 329 @result The IOInterfaceNamePrefix associated with the interface; 330 NULL if no IOInterfaceNamePrefix is available. 331 */ 332CFStringRef 333_SCNetworkInterfaceGetIOInterfaceNamePrefix (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_8,__IPHONE_6_0); 334 335/*! 336 @function _SCNetworkInterfaceGetIOInterfaceType 337 @discussion Returns the IOInterfaceType for the interface. 338 @param interface The network interface. 339 @result The IOInterfaceType associated with the interface 340 */ 341CFNumberRef 342_SCNetworkInterfaceGetIOInterfaceType (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0); 343 344/*! 345 @function _SCNetworkInterfaceGetIOInterfaceUnit 346 @discussion Returns the IOInterfaceUnit for the interface. 347 @param interface The network interface. 348 @result The IOInterfaceUnit associated with the interface; 349 NULL if no IOInterfaceUnit is available. 350 */ 351CFNumberRef 352_SCNetworkInterfaceGetIOInterfaceUnit (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0); 353 354/*! 355 @function _SCNetworkInterfaceGetIOPath 356 @discussion Returns the IOPath for the interface. 357 @param interface The network interface. 358 @result The IOPath associated with the interface; 359 NULL if no IOPath is available. 360 */ 361CFStringRef 362_SCNetworkInterfaceGetIOPath (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0); 363 364/*! 365 @function _SCNetworkInterfaceGetIORegistryEntryID 366 @discussion Returns the IORegistry entry ID for the interface. 367 @param interface The network interface. 368 @result The IORegistry entry ID associated with the interface; 369 Zero if no entry ID is available. 370 */ 371uint64_t 372_SCNetworkInterfaceGetIORegistryEntryID (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_8,__IPHONE_5_0); 373 374/*! 375 @function _SCNetworkInterfaceIsBluetoothPAN 376 @discussion Identifies if a network interface is a Bluetooth PAN (GN) device. 377 @param interface The network interface. 378 @result TRUE if the interface is a Bluetooth PAN device. 379 */ 380Boolean 381_SCNetworkInterfaceIsBluetoothPAN (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_3_0); 382 383/*! 384 @function _SCNetworkInterfaceIsBluetoothPAN_NAP 385 @discussion Identifies if a network interface is a Bluetooth PAN-NAP device. 386 @param interface The network interface. 387 @result TRUE if the interface is a Bluetooth PAN-NAP device. 388 */ 389Boolean 390_SCNetworkInterfaceIsBluetoothPAN_NAP (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0); 391 392/*! 393 @function _SCNetworkInterfaceIsBluetoothP2P 394 @discussion Identifies if a network interface is a Bluetooth P2P (PAN-U) device. 395 @param interface The network interface. 396 @result TRUE if the interface is a Bluetooth P2P device. 397 */ 398Boolean 399_SCNetworkInterfaceIsBluetoothP2P (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0); 400 401/*! 402 @function _SCNetworkInterfaceIsBuiltin 403 @discussion Identifies if a network interface is "built-in". 404 @param interface The network interface. 405 @result TRUE if the interface is "built-in". 406 */ 407Boolean 408_SCNetworkInterfaceIsBuiltin (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0); 409 410/*! 411 @function _SCNetworkInterfaceIsHiddenConfiguration 412 @discussion Identifies if the configuration of a network interface should be 413 hidden from any user interface (e.g. the "Network" pref pane). 414 @param interface The network interface. 415 @result TRUE if the interface configuration should be hidden. 416 */ 417Boolean 418_SCNetworkInterfaceIsHiddenConfiguration (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0); 419 420/*! 421 @function _SCNetworkInterfaceIsModemV92 422 @discussion Identifies if a modem network interface supports 423 v.92 (hold). 424 @param interface The network interface. 425 @result TRUE if the interface is "v.92" modem. 426 */ 427Boolean 428_SCNetworkInterfaceIsModemV92 (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0); 429 430/*! 431 @function _SCNetworkInterfaceIsTethered 432 @discussion Identifies if a network interface is an Apple tethered device (e.g. an iPhone). 433 @param interface The network interface. 434 @result TRUE if the interface is a tethered device. 435 */ 436Boolean 437_SCNetworkInterfaceIsTethered (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_3_0); 438 439/*! 440 @function _SCNetworkInterfaceIsThunderbolt 441 @discussion Identifies if a network interface is a Thunderbolt device 442 @param interface The network interface. 443 @result TRUE if the interface is a Thunderbolt device. 444 */ 445Boolean 446_SCNetworkInterfaceIsThunderbolt (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0); 447 448/*! 449 @function _SCNetworkInterfaceIsPhysicalEthernet 450 @discussion Indicates whether a network interface is a real ethernet interface i.e. one with an ethernet PHY. 451 @param interface The network interface. 452 @result TRUE if the interface is a real ethernet interface. 453 */ 454Boolean 455_SCNetworkInterfaceIsPhysicalEthernet (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0); 456 457/*! 458 @function _SCNetworkInterfaceForceConfigurationRefresh 459 @discussion Forces a configuration refresh of the 460 specified interface. 461 @param ifName Network interface name. 462 @result TRUE if the refresh was successfully posted. 463 */ 464Boolean 465_SCNetworkInterfaceForceConfigurationRefresh (CFStringRef ifName) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0); 466 467/*! 468 @function SCNetworkInterfaceCopyCapability 469 @discussion For the specified network interface, returns information 470 about the currently requested capabilities, the active capabilities, 471 and the capabilities which are available. 472 @param interface The desired network interface. 473 @param capability The desired capability. 474 @result a CFTypeRef representing the current value of requested 475 capability; 476 NULL if the capability is not available for this 477 interface or if an error was encountered. 478 You must release the returned value. 479 */ 480CFTypeRef 481SCNetworkInterfaceCopyCapability (SCNetworkInterfaceRef interface, 482 CFStringRef capability) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0/*SPI*/); 483 484/*! 485 @function SCNetworkInterfaceSetCapability 486 @discussion For the specified network interface, sets the requested 487 capabilities. 488 @param interface The desired network interface. 489 @param capability The desired capability. 490 @param newValue The new requested setting for the capability; 491 NULL to restore the default setting. 492 @result TRUE if the configuration was updated; FALSE if an error was encountered. 493 */ 494Boolean 495SCNetworkInterfaceSetCapability (SCNetworkInterfaceRef interface, 496 CFStringRef capability, 497 CFTypeRef newValue) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0/*SPI*/); 498 499#pragma mark - 500#pragma mark SCBondInterface configuration (SPIs) 501 502/*! 503 @function _SCBondInterfaceCopyActive 504 @discussion Returns all Ethernet Bond interfaces on the system. 505 @result The list of SCBondInterface interfaces on the system. 506 You must release the returned value. 507 */ 508CFArrayRef 509_SCBondInterfaceCopyActive (void) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/); 510 511/*! 512 @function _SCBondInterfaceUpdateConfiguration 513 @discussion Updates the bond interface configuration. 514 @param prefs The "preferences" session. 515 @result TRUE if the bond interface configuration was updated.; FALSE if the 516 an error was encountered. 517 */ 518Boolean 519_SCBondInterfaceUpdateConfiguration (SCPreferencesRef prefs) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/); 520 521/*! 522 @function SCBondInterfaceGetMode 523 @discussion Return the mode for the given bond interface. 524 @param bond The bond interface to get the mode from. 525 @result A CFNumberRef containing the mode (IF_BOND_MODE_{LACP,STATIC}). 526 */ 527CFNumberRef 528SCBondInterfaceGetMode (SCBondInterfaceRef bond) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/); 529 530/*! 531 @function SCBondInterfaceSetMode 532 @discussion Set the mode on the bond interface. 533 @param bond The bond interface on which to adjust the mode. 534 @param mode The mode value (0=IF_BOND_MODE_LACP,1=IF_BOND_MODE_STATIC) 535 @result TRUE if operation succeeded. 536 */ 537Boolean 538SCBondInterfaceSetMode (SCBondInterfaceRef bond, 539 CFNumberRef mode) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/); 540 541#pragma mark - 542#pragma mark SCBridgeInterface configuration (SPIs) 543 544/*! 545 @function SCBridgeInterfaceCopyAll 546 @discussion Returns all bridge interfaces on the system. 547 @param prefs The "preferences" session. 548 @result The list of bridge interfaces on the system. 549 You must release the returned value. 550 */ 551CFArrayRef /* of SCBridgeInterfaceRef's */ 552SCBridgeInterfaceCopyAll (SCPreferencesRef prefs) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/); 553 554/*! 555 @function SCBridgeInterfaceCopyAvailableMemberInterfaces 556 @discussion Returns all network capable devices on the system 557 that can be added to an bridge interface. 558 @param prefs The "preferences" session. 559 @result The list of interfaces. 560 You must release the returned value. 561 */ 562CFArrayRef /* of SCNetworkInterfaceRef's */ 563SCBridgeInterfaceCopyAvailableMemberInterfaces (SCPreferencesRef prefs) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/); 564 565/*! 566 @function SCBridgeInterfaceCreate 567 @discussion Create a new SCBridgeInterface interface. 568 @param prefs The "preferences" session. 569 @result A reference to the new SCBridgeInterface. 570 You must release the returned value. 571 */ 572SCBridgeInterfaceRef 573SCBridgeInterfaceCreate (SCPreferencesRef prefs) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/); 574 575/*! 576 @function SCBridgeInterfaceRemove 577 @discussion Removes the SCBridgeInterface from the configuration. 578 @param bridge The SCBridgeInterface interface. 579 @result TRUE if the interface was removed; FALSE if an error was encountered. 580 */ 581Boolean 582SCBridgeInterfaceRemove (SCBridgeInterfaceRef bridge) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/); 583 584/*! 585 @function SCBridgeInterfaceGetMemberInterfaces 586 @discussion Returns the member interfaces for the specified bridge interface. 587 @param bridge The SCBridgeInterface interface. 588 @result The list of interfaces. 589 */ 590CFArrayRef /* of SCNetworkInterfaceRef's */ 591SCBridgeInterfaceGetMemberInterfaces (SCBridgeInterfaceRef bridge) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/); 592 593/*! 594 @function SCBridgeInterfaceGetOptions 595 @discussion Returns the configuration settings associated with a bridge interface. 596 @param bridge The SCBridgeInterface interface. 597 @result The configuration settings associated with the bridge interface; 598 NULL if no changes to the default configuration have been saved. 599 */ 600CFDictionaryRef 601SCBridgeInterfaceGetOptions (SCBridgeInterfaceRef bridge) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/); 602 603/*! 604 @function SCBridgeInterfaceSetMemberInterfaces 605 @discussion Sets the member interfaces for the specified bridge interface. 606 @param bridge The SCBridgeInterface interface. 607 @param members The desired member interfaces. 608 @result TRUE if the configuration was stored; FALSE if an error was encountered. 609 */ 610Boolean 611SCBridgeInterfaceSetMemberInterfaces (SCBridgeInterfaceRef bridge, 612 CFArrayRef members) /* of SCNetworkInterfaceRef's */ 613 __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/); 614 615/*! 616 @function SCBridgeInterfaceSetLocalizedDisplayName 617 @discussion Sets the localized display name for the specified bridge interface. 618 @param bridge The SCBridgeInterface interface. 619 @param newName The new display name. 620 @result TRUE if the configuration was stored; FALSE if an error was encountered. 621 */ 622Boolean 623SCBridgeInterfaceSetLocalizedDisplayName (SCBridgeInterfaceRef bridge, 624 CFStringRef newName) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/); 625 626/*! 627 @function SCBridgeInterfaceSetOptions 628 @discussion Sets the configuration settings for the specified bridge interface. 629 @param bridge The SCBridgeInterface interface. 630 @param newOptions The new configuration settings. 631 @result TRUE if the configuration was stored; FALSE if an error was encountered. 632 */ 633Boolean 634SCBridgeInterfaceSetOptions (SCBridgeInterfaceRef bridge, 635 CFDictionaryRef newOptions) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/); 636 637#pragma mark - 638 639/*! 640 @function _SCBridgeInterfaceCopyActive 641 @discussion Returns all bridge interfaces on the system. 642 @result The list of SCBridgeInterface interfaces on the system. 643 You must release the returned value. 644 */ 645CFArrayRef 646_SCBridgeInterfaceCopyActive (void) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/); 647 648/*! 649 @function _SCBridgeInterfaceUpdateConfiguration 650 @discussion Updates the bridge interface configuration. 651 @param prefs The "preferences" session. 652 @result TRUE if the bridge interface configuration was updated.; FALSE if the 653 an error was encountered. 654 */ 655Boolean 656_SCBridgeInterfaceUpdateConfiguration (SCPreferencesRef prefs) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/); 657 658 659#pragma mark - 660#pragma mark SCVLANInterface configuration (SPIs) 661 662/*! 663 @function _SCVLANInterfaceCopyActive 664 @discussion Returns all VLAN interfaces on the system. 665 @result The list of SCVLANInterface interfaces on the system. 666 You must release the returned value. 667 */ 668CFArrayRef 669_SCVLANInterfaceCopyActive (void) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/); 670 671/*! 672 @function _SCVLANInterfaceUpdateConfiguration 673 @discussion Updates the VLAN interface configuration. 674 @param prefs The "preferences" session. 675 @result TRUE if the VLAN interface configuration was updated.; FALSE if the 676 an error was encountered. 677 */ 678Boolean 679_SCVLANInterfaceUpdateConfiguration (SCPreferencesRef prefs) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/); 680 681 682#pragma mark - 683#pragma mark SCNetworkInterface Password SPIs 684 685 686enum { 687 kSCNetworkInterfacePasswordTypePPP = 1, 688 kSCNetworkInterfacePasswordTypeIPSecSharedSecret, 689 kSCNetworkInterfacePasswordTypeEAPOL, 690 kSCNetworkInterfacePasswordTypeIPSecXAuth, 691 kSCNetworkInterfacePasswordTypeVPN, 692}; 693typedef uint32_t SCNetworkInterfacePasswordType; 694 695Boolean 696SCNetworkInterfaceCheckPassword (SCNetworkInterfaceRef interface, 697 SCNetworkInterfacePasswordType passwordType) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0); 698 699CFDataRef 700SCNetworkInterfaceCopyPassword (SCNetworkInterfaceRef interface, 701 SCNetworkInterfacePasswordType passwordType) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0); 702 703Boolean 704SCNetworkInterfaceRemovePassword (SCNetworkInterfaceRef interface, 705 SCNetworkInterfacePasswordType passwordType) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0); 706 707Boolean 708SCNetworkInterfaceSetPassword (SCNetworkInterfaceRef interface, 709 SCNetworkInterfacePasswordType passwordType, 710 CFDataRef password, 711 CFDictionaryRef options) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0); 712 713 714#pragma mark - 715#pragma mark SCNetworkProtocol configuration (SPI) 716 717 718/*! 719 @group Protocol configuration 720 */ 721 722 723static __inline__ CFTypeRef 724isA_SCNetworkProtocol(CFTypeRef obj) 725{ 726 return (isA_CFType(obj, SCNetworkProtocolGetTypeID())); 727} 728 729 730#pragma mark - 731#pragma mark SCNetworkService configuration (SPI) 732 733 734/*! 735 @group Service configuration 736 */ 737 738 739static __inline__ CFTypeRef 740isA_SCNetworkService(CFTypeRef obj) 741{ 742 return (isA_CFType(obj, SCNetworkServiceGetTypeID())); 743} 744 745/*! 746 @function _SCNetworkServiceCompare 747 @discussion Compares two SCNetworkService objects. 748 @param val1 The SCNetworkService object. 749 @param val2 The SCNetworkService object. 750 @param context The service order (from SCNetworkSetGetServiceOrder). 751 @result A comparison result. 752 */ 753CFComparisonResult 754_SCNetworkServiceCompare (const void *val1, 755 const void *val2, 756 void *context) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0); 757 758/*! 759 @function _SCNetworkServiceCopyActive 760 @discussion Returns the network service with the specified identifier. 761 762 Note: The service returned by this SPI differs from the SCNetworkServiceCopy 763 API in that queries and operations interact with the "active" service 764 represented in the SCDynamicStore. Only a limited subset of the 765 SCNetworkService APIs are supported. 766 @param prefs The dynamic store session. 767 @param serviceID The unique identifier for the service. 768 @result A reference to the SCNetworkService represented in the SCDynamicStore; 769 NULL if the serviceID does not exist in the SCDynamicStore or if an 770 error was encountered. 771 You must release the returned value. 772 */ 773SCNetworkServiceRef 774_SCNetworkServiceCopyActive (SCDynamicStoreRef store, 775 CFStringRef serviceID) __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_2_1); 776 777/*! 778 @function SCNetworkServiceGetPrimaryRank 779 @discussion Returns the primary service rank associated with a service. 780 @param service The network service. 781 @result The primary service rank associated with the specified application; 782 kSCNetworkServicePrimaryRankDefault if no rank is associated with the 783 application or an error was encountered. 784 */ 785SCNetworkServicePrimaryRank 786SCNetworkServiceGetPrimaryRank (SCNetworkServiceRef service) __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_2_0); 787 788/*! 789 @function SCNetworkServiceSetPrimaryRank 790 @discussion Updates the the primary service rank associated with a service. 791 @param service The network service. 792 @param newRank The new primary service rank; kSCNetworkServicePrimaryRankDefault 793 if the default service rank should be used. 794 @result TRUE if the rank was stored; FALSE if an error was encountered. 795 796 Notes : The kSCNetworkServicePrimaryRankFirst and kSCNetworkServicePrimaryRankLast 797 values can only valid as a transient setting. 798 */ 799Boolean 800SCNetworkServiceSetPrimaryRank (SCNetworkServiceRef service, 801 SCNetworkServicePrimaryRank newRank) __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_2_0); 802 803/*! 804 @function _SCNetworkServiceIsVPN 805 @discussion Identifies a VPN service. 806 @param service The network service. 807 @result TRUE if the service is a VPN. 808 */ 809Boolean 810_SCNetworkServiceIsVPN (SCNetworkServiceRef service) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0); 811 812/*! 813 @function SCNetworkServiceSetExternalID 814 @discussion Set the external identifier for a network service. 815 @param service A reference to the network service. 816 @param identifierDomain A service can have multiple external identifiers. This string specifies which external identifier to set. 817 @param identifier The new external identifier to assign to the network service. 818 @result Returns TRUE if the external identifier was set successfully, FALSE if an error occurred. 819 */ 820Boolean 821SCNetworkServiceSetExternalID (SCNetworkServiceRef service, 822 CFStringRef identifierDomain, 823 CFStringRef identifier); 824 825/*! 826 @function SCNetworkServiceCopyExternalID 827 @discussion Copy the external identifier for a network service. 828 @param service The network service. 829 @param identifierDomain A service can have multiple external identifiers. This string specifies which external identifier to copy. 830 @result Returns the service's external identifier, or NULL if the service does not have an external identifier in the given domain. 831*/ 832CFStringRef 833SCNetworkServiceCopyExternalID (SCNetworkServiceRef service, 834 CFStringRef identifierDomain); 835 836/*! 837 @function _SCNetworkServiceSetServiceID 838 @discussion Sets serviceID of the service to a different value provided. 839 @param service The network service 840 @param newServiceID The new service ID 841 @result TRUE if new service ID is set successfully. 842 */ 843Boolean 844_SCNetworkServiceSetServiceID (SCNetworkServiceRef service, 845 CFStringRef newServiceID) __OSX_AVAILABLE_STARTING(__MAC_10_10,__IPHONE_8_0); 846 847#pragma mark - 848#pragma mark SCNetworkSet configuration (SPI) 849 850 851/*! 852 @group Set configuration 853 */ 854 855 856static __inline__ CFTypeRef 857isA_SCNetworkSet(CFTypeRef obj) 858{ 859 return (isA_CFType(obj, SCNetworkSetGetTypeID())); 860} 861 862 863/*! 864 @function SCNetworkSetCopyAvailableInterfaces 865 @discussion Returns all available interfaces for the set. 866 The interfaces excludes those of bond and bridge members. 867 @param set The network set. 868 @result The list of SCNetworkInterfaces. 869 You must release the returned value. 870 */ 871CFArrayRef 872SCNetworkSetCopyAvailableInterfaces (SCNetworkSetRef set) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/); 873 874/*! 875 @function SCNetworkSetEstablishDefaultConfiguration 876 @discussion Updates a network set by adding services for 877 any network interface that is not currently 878 represented. 879 If the provided set contains one (or more) services, new 880 services will only be added for those interfaces that are 881 not represented in *any* set. 882 Otherwise, new services will be added for those interfaces 883 that are not represented in the provided set. 884 The new services are established with "default" configuration 885 options. 886 @param set The network set. 887 @result TRUE if the configuration was updated; FALSE if no 888 changes were required or if an error was encountered. 889*/ 890Boolean 891SCNetworkSetEstablishDefaultConfiguration (SCNetworkSetRef set) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0); 892 893/*! 894 @function SCNetworkSetEstablishDefaultInterfaceConfiguration 895 @discussion Updates a network set by adding services for 896 the specified network interface if is not currently 897 represented. 898 If the provided set contains one (or more) services, new 899 services will only be added for interfaces that are not 900 represented in *any* set. 901 Otherwise, new services will be added for interfaces that 902 are not represented in the provided set. 903 The new services are established with "default" configuration 904 options. 905 @param set The network set. 906 @param interface The network interface. 907 @result TRUE if the configuration was updated; FALSE if no 908 changes were required or if an error was encountered. 909 */ 910Boolean 911SCNetworkSetEstablishDefaultInterfaceConfiguration (SCNetworkSetRef set, 912 SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0); 913 914/*! 915 @function SCNetworkSetCopySelectedVPNService 916 @discussion On the iPhone we only allow a single VPN network service 917 to be selected at any given time. This API will identify 918 the selected VPN service. 919 @param set The network set. 920 @result The selected VPN service; NULL if no service has been 921 selected. 922 You must release the returned value. 923 */ 924SCNetworkServiceRef 925SCNetworkSetCopySelectedVPNService (SCNetworkSetRef set) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0); 926 927/*! 928 @function SCNetworkSetSetSelectedVPNService 929 @discussion On the iPhone we only allow a single VPN network service 930 to be selected at any given time. This API should be used to 931 select a VPN service. 932 @param set The network set. 933 @param service The VPN service to be selected. 934 @result TRUE if the name was saved; FALSE if an error was encountered. 935 */ 936Boolean 937SCNetworkSetSetSelectedVPNService (SCNetworkSetRef set, 938 SCNetworkServiceRef service) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0); 939 940Boolean 941_SCNetworkSetSetSetID (SCNetworkSetRef set, 942 CFStringRef setID) __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0); 943 944/*! 945 @group VPN Service configuration 946 */ 947 948#pragma mark - 949#pragma mark VPN Service configuration 950 951typedef SCNetworkServiceRef VPNServiceRef; 952 953/*! 954 @function VPNServiceCopyAllMatchingExternalID 955 @discussion Copy the VPN services with the given external identifier. 956 @param prefs A reference to the prefs where the VPN services are stored. 957 @param identifierDomain A service can have multiple external identifiers. This string specifies which one to match with the given identifier. 958 @param identifier The external identifier of the desired services. 959 @result A array of references to the VPN services with the given identifier, or NULL if no such service exists 960 */ 961CFArrayRef 962VPNServiceCopyAllMatchingExternalID (SCPreferencesRef prefs, 963 CFStringRef identifierDomain, 964 CFStringRef identifier) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/); 965 966/*! 967 @function VPNServiceCopyAll 968 @discussion Copy all VPN services. 969 @param prefs A reference to the prefs where the VPN services are stored. 970 @result An array containing VPNServiceRefs for all the VPN services. 971 */ 972CFArrayRef 973VPNServiceCopyAll (SCPreferencesRef prefs) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/); 974 975/*! 976 @function VPNServiceCopyAppRuleIDs 977 @discussion Copy all the app rule identifiers for a VPN service. 978 @param service A reference to the VPN service. 979 @result An array of CFStringRefs, each string containing the identifier of a app rule in the given service. 980 */ 981CFArrayRef 982VPNServiceCopyAppRuleIDs (VPNServiceRef service) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/); 983 984/*! 985 @function VPNServiceSetAppRule 986 @discussion Add or modify an app rule in a VPN service. The ruleSettings dictionary must contain one of the following keys: 987 <pre>kSCValNetVPNAppRuleExecutableMatch</pre> 988 <pre>kSCValNetVPNAppRuleAccountIdentifierMatch</pre> 989 The ruleSettings dictionary may also contain the following keys: 990 <pre>kSCValNetVPNAppRuleDNSDomainMatch</pre> 991 See SCSchemaDefinitionsPrivate.h for more details. 992 @param service A reference to the VPN service. 993 @param ruleIdentifier The identifier of the new app rule. 994 @param ruleSettings The settings for the new app rule. See the dictionary keys defined above. 995 @result TRUE if the app rule was set successfully, FALSE if an error occurred. 996 */ 997Boolean 998VPNServiceSetAppRule (VPNServiceRef service, 999 CFStringRef ruleIdentifier, 1000 CFDictionaryRef ruleSettings) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/); 1001 1002/*! 1003 @function VPNServiceCopyAppRule 1004 @discussion Copy the settings for a app rule in a VPN service. 1005 @param service The app tunnel service. 1006 @param ruleIdentifier The ID of the app rule. 1007 @result The rule settings, or NULL if the app rule could not be found. 1008 */ 1009CFDictionaryRef 1010VPNServiceCopyAppRule (VPNServiceRef service, 1011 CFStringRef ruleIdentifier) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/); 1012 1013/*! 1014 @function VPNServiceRemoveAppRule 1015 @discussion Remove an app rule from a VPN service. 1016 @param service The VPN service. 1017 @param ruleIdentifier The ID of the app rule to remove. 1018 @result Returns TRUE if the app rule was removed successfully; FALSE otherwise. 1019 */ 1020Boolean 1021VPNServiceRemoveAppRule (VPNServiceRef service, 1022 CFStringRef ruleIdentifier) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/); 1023 1024/*! 1025 @function VPNServiceIsManagedAppVPN 1026 @discussion Check to see if a VPN service is a managed App VPN service 1027 @param service The VPN servie. 1028 @result Returns TRUE if the service is a managed App VPN service; FALSE otherwise. 1029*/ 1030Boolean 1031VPNServiceIsManagedAppVPN (VPNServiceRef service) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/); 1032 1033/*! 1034 @group Migration SPI 1035 */ 1036#pragma mark - 1037#pragma mark Migration SPI 1038 1039extern const CFStringRef kSCNetworkConfigurationRepair /* CFBoolean */ __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0); 1040 1041extern const CFStringRef kSCNetworkConfigurationMigrationActionKey /* CFNumber */ __OSX_AVAILABLE_STARTING(__MAC_10_10,__IPHONE_8_0); 1042 1043typedef CF_ENUM(uint32_t, SCNetworkConfigurationMigrationAction) { 1044 kSCNetworkConfigurationMigrationAction_CleanInstall = 0, 1045 kSCNetworkConfigurationMigrationAction_Upgrade = 1, 1046 kSCNetworkConfigurationMigrationAction_Restore = 2, 1047}; 1048 1049/*! 1050 @function _SCNetworkConfigurationCopyMigrationPaths 1051 @result Returns an array of paths that we would need from the source 1052 */ 1053CFArrayRef 1054_SCNetworkConfigurationCopyMigrationPaths(CFDictionaryRef options) __OSX_AVAILABLE_STARTING(__MAC_10_10,__IPHONE_8_0); 1055 1056/*! 1057 @function _SCNetworkConfigurationPerformMigration 1058 @discussion Updates the network configuration of the target system with 1059 configurations from previous system. Both sourceDir and targetDir 1060 cannot be NULL, since NULL indicates API to look at the local system 1061 @param sourceDir A reference which points to the root of a directory populated 1062 with the list of requested directories/path from the "source" volume. Passing NULL 1063 will indicate that sourceDir should point to local system 1064 @param currentDir A reference which points to the root of a directory populated 1065 with the list of requested directories/path from the "destination" volume. Passing 1066 NULL will indicate that currentDir should point to local system. 1067 @param targetDir A reference which points to the root of a directory that we 1068 will populate (update) with new configuration. Passing NULL will mean that we want to 1069 migrate to the currentDir. If not NULL, then this path should exist. 1070 @param options Argument which will tell us what action we are supposed to take 1071 (clean-install, upgrade, migrate/restore settings from another system, ...) 1072 @result Returns array which would consist of those paths that should be moved 1073 from the "targetDir" directory to destination volume. You must release the returned value. 1074 */ 1075 1076CF_RETURNS_RETAINED 1077CFArrayRef 1078_SCNetworkConfigurationPerformMigration(CFURLRef sourceDir, 1079 CFURLRef currentDir, 1080 CFURLRef targetDir, 1081 CFDictionaryRef options) __OSX_AVAILABLE_STARTING(__MAC_10_10,__IPHONE_8_0); 1082 1083 1084/*! 1085 @function _SCNetworkConfigurationCheckValidity 1086 @discussion Verifies whether the configuration files present in the specified 1087 directory have valid mappings or not 1088 @param configDir A reference which points to the directory where the configuration 1089 files are present 1090 @result TRUE if valid configurations are found 1091 1092 */ 1093 1094Boolean 1095_SCNetworkConfigurationCheckValidity(CFURLRef configDir, 1096 CFDictionaryRef options) __OSX_AVAILABLE_STARTING(__MAC_10_10,__IPHONE_8_0); 1097 1098 1099/*! 1100 @function _SCNetworkMigrationAreConfigurationsIdentical 1101 @discussion Compares the migration output between network configurations 1102 with the expected output. 1103 @param configPref Preferences pointing toward preferences.plist file to 1104 be compared with expected file. 1105 @param configNetworkInterfacePref Preferences pointing toward NetworkInterfaces.plist 1106 file to be compared with expected file. 1107 @param expectedConfigPref Preferences pointing toward preferences.plist file 1108 which is the expected result. 1109 @param expectedNetworkInterfacePref Preferences pointing toward NetworkInterfaces.plist 1110 file which is the expected file. 1111 @result TRUE if configurations match with the expected configurations 1112 1113 */ 1114 1115Boolean 1116_SCNetworkMigrationAreConfigurationsIdentical (CFURLRef configurationURL, 1117 CFURLRef expectedConfigurationURL) 1118 __OSX_AVAILABLE_STARTING(__MAC_10_10,__IPHONE_8_0); 1119 1120/*! 1121 @function _SCNetworkConfigurationCopyMigrationRemovePaths 1122 @discussion List of paths to files which we want to be removed from the target filesystem after migration 1123 @param targetPaths the CFArray returned by _SCNetworkConfigurationPerformMigration 1124 @param targetDir the CFURL passed to _SCNetworkConfigurationPerformMigration 1125 @result An array of CFURL's; NULL if no paths need to be removed from the target filesystem 1126 1127*/ 1128 1129CFArrayRef // of CFURLRef's 1130_SCNetworkConfigurationCopyMigrationRemovePaths (CFArrayRef targetPaths, 1131 CFURLRef targetDir) __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0); 1132 1133__END_DECLS 1134#endif /* _SCNETWORKCONFIGURATIONPRIVATE_H */ 1135