]> git.saurik.com Git - apple/configd.git/blobdiff - SystemConfiguration.fproj/SCNetworkConfiguration.h
configd-130.tar.gz
[apple/configd.git] / SystemConfiguration.fproj / SCNetworkConfiguration.h
diff --git a/SystemConfiguration.fproj/SCNetworkConfiguration.h b/SystemConfiguration.fproj/SCNetworkConfiguration.h
new file mode 100644 (file)
index 0000000..a9be635
--- /dev/null
@@ -0,0 +1,753 @@
+/*
+ * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ * 
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ * 
+ * @APPLE_LICENSE_HEADER_END@
+ */
+
+#ifndef _SCNETWORKCONFIGURATION_H
+#define _SCNETWORKCONFIGURATION_H
+
+
+#include <sys/cdefs.h>
+#include <AvailabilityMacros.h>
+#include <CoreFoundation/CoreFoundation.h>
+#include <SystemConfiguration/SystemConfiguration.h>
+
+
+/*!
+       @header SCNetworkConfiguration
+       @discussion The SCNetworkConfiguration API provides access to the
+               stored network configuration.  The functions include
+               providing access to the network capable devices on the
+               system, the network sets, network services, and network
+               protocols.
+
+               Note: When using the SCNetworkConfiguraiton APIs you must
+               keep in mind that in order for any of your changes to be
+               committed to permanent storage a call must be made to the
+               SCPreferencesCommitChanges function.
+ */
+
+/*!
+       @group Interface configuration
+ */
+
+/*!
+       @typedef SCNetworkInterfaceRef
+       @discussion This is the type of a reference to an object that represents
+               a network interface.
+ */
+typedef const struct __SCNetworkInterface * SCNetworkInterfaceRef;
+
+/*!
+       @const kSCNetworkInterfaceType6to4
+ */
+extern const CFStringRef kSCNetworkInterfaceType6to4                                           AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @const kSCNetworkInterfaceTypeBluetooth
+ */
+extern const CFStringRef kSCNetworkInterfaceTypeBluetooth                                      AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @const kSCNetworkInterfaceTypeBond
+ */
+extern const CFStringRef kSCNetworkInterfaceTypeBond                                           AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @const kSCNetworkInterfaceTypeEthernet
+ */
+extern const CFStringRef kSCNetworkInterfaceTypeEthernet                                       AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @const kSCNetworkInterfaceTypeFireWire
+ */
+extern const CFStringRef kSCNetworkInterfaceTypeFireWire                                       AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @const kSCNetworkInterfaceTypeIEEE80211
+ */
+extern const CFStringRef kSCNetworkInterfaceTypeIEEE80211                                      AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;      // IEEE 802.11, AirPort
+
+/*!
+       @const kSCNetworkInterfaceTypeIrDA
+ */
+extern const CFStringRef kSCNetworkInterfaceTypeIrDA                                           AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @const kSCNetworkInterfaceTypeL2TP
+ */
+extern const CFStringRef kSCNetworkInterfaceTypeL2TP                                           AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @const kSCNetworkInterfaceTypeModem
+ */
+extern const CFStringRef kSCNetworkInterfaceTypeModem                                          AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @const kSCNetworkInterfaceTypePPP
+ */
+extern const CFStringRef kSCNetworkInterfaceTypePPP                                            AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @const kSCNetworkInterfaceTypePPTP
+ */
+extern const CFStringRef kSCNetworkInterfaceTypePPTP                                           AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @const kSCNetworkInterfaceTypeSerial
+ */
+extern const CFStringRef kSCNetworkInterfaceTypeSerial                                         AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @const kSCNetworkInterfaceTypeVLAN
+ */
+extern const CFStringRef kSCNetworkInterfaceTypeVLAN                                           AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/* special network interfaces (and types) */
+
+/*!
+       @const kSCNetworkInterfaceTypeIPv4
+ */
+extern const CFStringRef kSCNetworkInterfaceTypeIPv4                                           AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @const kSCNetworkInterfaceIPv4
+       @discussion A network interface that can used for layering other
+               interfaces (e.g. 6to4, PPP, PPTP, L2TP) over an existing
+               IPv4 network.
+ */
+extern const SCNetworkInterfaceRef kSCNetworkInterfaceIPv4                                     AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+
+/*!
+       @group Protocol configuration
+ */
+
+/*!
+       @typedef SCNetworkProtocolRef
+       @discussion This is the type of a reference to an object that represents
+               a network protocol.
+ */
+typedef const struct __SCNetworkProtocol * SCNetworkProtocolRef;
+
+/* network "protocol" types */
+
+/*!
+       @const kSCNetworkProtocolTypeAppleTalk
+ */
+extern const CFStringRef kSCNetworkProtocolTypeAppleTalk                                       AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @const kSCNetworkProtocolTypeDNS
+ */
+extern const CFStringRef kSCNetworkProtocolTypeDNS                                             AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @const kSCNetworkProtocolTypeIPv4
+ */
+extern const CFStringRef kSCNetworkProtocolTypeIPv4                                            AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @const kSCNetworkProtocolTypeIPv6
+ */
+extern const CFStringRef kSCNetworkProtocolTypeIPv6                                            AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @const kSCNetworkProtocolTypeProxies
+ */
+extern const CFStringRef kSCNetworkProtocolTypeProxies                                         AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+
+/*!
+       @group Service configuration
+ */
+
+/*!
+       @typedef SCNetworkServiceRef
+       @discussion This is the type of a reference to an object that represents
+               a network service.
+ */
+typedef const struct __SCNetworkService * SCNetworkServiceRef;
+
+
+/*!
+       @group Set configuration
+ */
+
+/*!
+       @typedef SCNetworkSetRef
+       @discussion This is the type of a reference to an object that represents
+               a network set.
+ */
+typedef const struct __SCNetworkSet    * SCNetworkSetRef;
+
+
+__BEGIN_DECLS
+
+
+/* --------------------------------------------------------------------------------
+ * INTERFACES
+ * -------------------------------------------------------------------------------- */
+
+/*!
+       @group Interface configuration
+ */
+
+/*!
+       @function SCNetworkInterfaceGetTypeID
+       @discussion Returns the type identifier of all SCNetworkInterface instances.
+ */
+CFTypeID
+SCNetworkInterfaceGetTypeID                    (void)                                          AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkInterfaceCopyAll
+       @discussion Returns all network capable devices on the system.
+       @result The list of SCNetworkInterface devices on the system.
+               You must release the returned value.
+ */
+CFArrayRef /* of SCNetworkInterfaceRef's */
+SCNetworkInterfaceCopyAll                      (void)                                          AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkInterfaceGetSupportedInterfaceTypes
+       @discussion Identify all of the network interface types (e.g. PPP) that
+               can be layered on top of this interface.
+       @param interface The network interface.
+       @result The list of SCNetworkInterface types supported by the interface;
+               NULL if no interface types are supported.
+ */
+CFArrayRef /* of kSCNetworkInterfaceTypeXXX CFStringRef's */
+SCNetworkInterfaceGetSupportedInterfaceTypes   (SCNetworkInterfaceRef          interface)      AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkInterfaceGetSupportedProtocolTypes
+       @discussion Identify all of the network protocol types (e.g. IPv4, IPv6) that
+               can be layered on top of this interface.
+       @param interface The network interface.
+       @result The list of SCNetworkProtocol types supported by the interface;
+               NULL if no protocol types are supported.
+ */
+CFArrayRef /* of kSCNetworkProtocolTypeXXX CFStringRef's */
+SCNetworkInterfaceGetSupportedProtocolTypes    (SCNetworkInterfaceRef          interface)      AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkInterfaceCreateWithInterface
+       @discussion Create a new network interface layered on top of another.  For
+               example, this function would be used to create a "PPP" interface
+               on top of a "modem".
+       @param interface The network interface.
+       @param interfaceType The type of SCNetworkInterface to be layered on
+               top of the provided interface.
+       @result A reference to the new SCNetworkInterface.
+               You must release the returned value.
+ */
+SCNetworkInterfaceRef
+SCNetworkInterfaceCreateWithInterface          (SCNetworkInterfaceRef          interface,
+                                                CFStringRef                    interfaceType)  AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkInterfaceGetBSDName
+       @discussion Returns the BSD interface (en0) or device name (modem)
+               for the interface.
+       @param interface The network interface.
+       @result The BSD name associated with the interface (e.g. "en0");
+               NULL if no BSD name is available.
+ */
+CFStringRef
+SCNetworkInterfaceGetBSDName                   (SCNetworkInterfaceRef          interface)      AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkInterfaceGetConfiguration
+       @discussion Returns the configuration settings associated with a interface.
+       @param interface The network interface.
+       @result The configuration settings associated with the interface;
+               NULL if no changes to the default configuration have been saved.
+ */
+CFDictionaryRef
+SCNetworkInterfaceGetConfiguration             (SCNetworkInterfaceRef          interface)      AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkInterfaceGetHardwareAddressString
+       @discussion Returns a displayable link layer address for the interface.
+       @param interface The network interface.
+       @result A string representing the hardware (MAC) address for the interface.
+ */
+CFStringRef
+SCNetworkInterfaceGetHardwareAddressString     (SCNetworkInterfaceRef          interface)      AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkInterfaceGetInterface
+       @discussion For layered network interfaces, return the underlying interface.
+       @param interface The network interface.
+       @result The underlying network interface;
+               NULL if this is a leaf interface.
+ */
+SCNetworkInterfaceRef
+SCNetworkInterfaceGetInterface                 (SCNetworkInterfaceRef          interface)      AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkInterfaceGetInterfaceType
+       @discussion Returns the associated network interface type.
+       @param interface The network interface.
+       @result The interface type.
+ */
+CFStringRef
+SCNetworkInterfaceGetInterfaceType             (SCNetworkInterfaceRef          interface)      AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkInterfaceGetLocalizedDisplayName
+       @discussion Returns the localized name (e.g. "Built-in Ethernet") for
+               the interface.
+       @param interface The network interface.
+       @result A localized, display name for the interface;
+               NULL if no name is available.
+ */
+CFStringRef
+SCNetworkInterfaceGetLocalizedDisplayName      (SCNetworkInterfaceRef          interface)      AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkInterfaceSetConfiguration
+       @discussion Stores the configuration settings for the interface.
+       @param interface The network interface.
+       @param config The configuration settings to associate with this interface.
+       @result TRUE if the configuration was stored; FALSE if an error was encountered.
+ */
+Boolean
+SCNetworkInterfaceSetConfiguration             (SCNetworkInterfaceRef          interface,
+                                                CFDictionaryRef                config)         AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/* --------------------------------------------------------------------------------
+ * PROTOCOLS
+ * -------------------------------------------------------------------------------- */
+
+/*!
+       @group Protocol configuration
+ */
+
+/*!
+       @function SCNetworkProtocolGetTypeID
+       @discussion Returns the type identifier of all SCNetworkProtocol instances.
+ */
+CFTypeID
+SCNetworkProtocolGetTypeID                     (void)                                          AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkProtocolGetConfiguration
+       @discussion Returns the configuration settings associated with the protocol.
+       @param protocol The network protocol.
+       @result The configuration settings associated with the protocol;
+               NULL if no changes to the default configuration have been saved.
+ */
+CFDictionaryRef
+SCNetworkProtocolGetConfiguration              (SCNetworkProtocolRef           protocol)       AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkProtocolGetEnabled
+       @discussion Returns whether this protocol has been enabled.
+       @param protocol The network protocol.
+       @result TRUE if the protocol is enabled.
+ */
+Boolean
+SCNetworkProtocolGetEnabled                    (SCNetworkProtocolRef           protocol)       AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkProtocolGetProtocolType
+       @discussion Returns the associated network protocol type.
+       @param protocol The network protocol.
+       @result The protocol type.
+ */
+CFStringRef
+SCNetworkProtocolGetProtocolType               (SCNetworkProtocolRef           protocol)       AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkProtocolSetConfiguration
+       @discussion Stores the configuration settings for the protocol.
+       @param protocol The network protocol.
+       @param config The configuration settings to associate with this protocol.
+       @result TRUE if the configuration was stored; FALSE if an error was encountered.
+ */
+Boolean
+SCNetworkProtocolSetConfiguration              (SCNetworkProtocolRef           protocol,
+                                                CFDictionaryRef                config)         AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkProtocolSetEnabled
+       @discussion Enables or disables the protocol.
+       @param protocol The network protocol.
+       @param enabled TRUE if the protocol should be enabled.
+       @result TRUE if the enabled status was saved; FALSE if an error was encountered.
+ */
+Boolean
+SCNetworkProtocolSetEnabled                    (SCNetworkProtocolRef           protocol,
+                                                Boolean                        enabled)        AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/* --------------------------------------------------------------------------------
+ * SERVICES
+ * -------------------------------------------------------------------------------- */
+
+/*!
+       @group Service configuration
+ */
+
+/*!
+       @function SCNetworkServiceGetTypeID
+       @discussion Returns the type identifier of all SCNetworkService instances.
+ */
+CFTypeID
+SCNetworkServiceGetTypeID                      (void);
+
+/*!
+       @function SCNetworkServiceAddProtocolType
+       @discussion Adds a network protocol of the specified type to the
+               service.  The protocal configuration is set to default values
+               that are appropriate for the interface associated with the
+               service.
+       @param service The network service.
+       @param protocolType The type of SCNetworkProtocol to be added to the service.
+       @result TRUE if the protocol was added to the service; FALSE if the
+               protocol was already present or an error was encountered.
+ */
+Boolean
+SCNetworkServiceAddProtocolType                        (SCNetworkServiceRef            service,
+                                                CFStringRef                    protocolType)   AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkServiceCopyAll
+       @discussion Returns all available network services for the specified preferences.
+       @param prefs The "preferences" session.
+       @result The list of SCNetworkService services associated with the preferences.
+               You must release the returned value.
+ */
+CFArrayRef /* of SCNetworkServiceRef's */
+SCNetworkServiceCopyAll                                (SCPreferencesRef               prefs)          AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkServiceCopyProtocols
+       @discussion Returns all network protocols associated with the service.
+       @param service The network service.
+       @result The list of SCNetworkProtocol protocols associated with the service.
+               You must release the returned value.
+ */
+CFArrayRef /* of SCNetworkProtocolRef's */
+SCNetworkServiceCopyProtocols                  (SCNetworkServiceRef            service)        AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkServiceCreate
+       @discussion Create a new network service for the specified interface in the
+               configuration.
+       @param prefs The "preferences" session.
+       @result A reference to the new SCNetworkService.
+               You must release the returned value.
+ */
+SCNetworkServiceRef
+SCNetworkServiceCreate                         (SCPreferencesRef               prefs,
+                                                SCNetworkInterfaceRef          interface)      AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkServiceCopy
+       @discussion Returns the network service with the specified identifier.
+       @param prefs The "preferences" session.
+       @param serviceID The unique identifier for the service.
+       @result A reference to the SCNetworkService from the associated preferences;
+               NULL if the serviceID does not exist in the preferences or if an
+               error was encountered.
+               You must release the returned value.
+ */
+SCNetworkServiceRef
+SCNetworkServiceCopy                           (SCPreferencesRef               prefs,
+                                                CFStringRef                    serviceID)      AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkServiceGetEnabled
+       @discussion Returns whether this service has been enabled.
+       @param service The network service.
+       @result TRUE if the service is enabled.
+ */
+Boolean
+SCNetworkServiceGetEnabled                     (SCNetworkServiceRef            service)        AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkServiceGetInterface
+       @discussion Returns the network interface associated with the service.
+       @param service The network service.
+       @result A reference to the SCNetworkInterface associated with the service;
+               NULL if an error was encountered.
+ */
+SCNetworkInterfaceRef
+SCNetworkServiceGetInterface                   (SCNetworkServiceRef            service)        AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkServiceGetName
+       @discussion Returns the [user specified] name associated with the service.
+       @param service The network service.
+       @result The [user specified] name.
+ */
+CFStringRef
+SCNetworkServiceGetName                                (SCNetworkServiceRef            service)        AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkServiceCopyProtocol
+       @discussion Returns the network protocol of the specified type for
+               the service.
+       @param service The network service.
+       @result A reference to the SCNetworkProtocol associated with the service;
+               NULL if this protocol has not been added or if an error was encountered.
+               You must release the returned value.
+ */
+SCNetworkProtocolRef
+SCNetworkServiceCopyProtocol                   (SCNetworkServiceRef            service,
+                                                CFStringRef                    protocolType)   AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkServiceGetServiceID
+       @discussion Returns the identifier for the service.
+       @param service The network service.
+       @result The service identifier.
+ */
+CFStringRef
+SCNetworkServiceGetServiceID                   (SCNetworkServiceRef            service)        AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkServiceRemove
+       @discussion Removes the network service from the configuration.
+       @param service The network service.
+       @result TRUE if the service was removed; FALSE if an error was encountered.
+ */
+Boolean
+SCNetworkServiceRemove                         (SCNetworkServiceRef            service)        AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkServiceRemoveProtocolType
+       @discussion Removes the network protocol of the specified type from the service.
+       @param service The network service.
+       @param protocolType The type of SCNetworkProtocol to be removed from the service.
+       @result TRUE if the protocol was removed to the service; FALSE if the
+               protocol was not configured or an error was encountered.
+ */
+Boolean
+SCNetworkServiceRemoveProtocolType             (SCNetworkServiceRef            service,
+                                                CFStringRef                    protocolType)   AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkServiceSetEnabled
+       @discussion Enables or disables the service.
+       @param service The network service.
+       @param enabled TRUE if the service should be enabled.
+       @result TRUE if the enabled status was saved; FALSE if an error was encountered.
+ */
+Boolean
+SCNetworkServiceSetEnabled                     (SCNetworkServiceRef            service,
+                                                Boolean                        enabled)        AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkServiceSetName
+       @discussion Stores the [user specified] name for the service.
+       @param service The network service.
+       @param name The [user defined] name to associate with the service.
+       @result TRUE if the name was saved; FALSE if an error was encountered.
+
+       Note: although not technically required, the [user specified] names
+       for all services within any given set should be unique.  As such, an
+       error will be returned if you attemp to name two services with the
+       same string.
+ */
+Boolean
+SCNetworkServiceSetName                                (SCNetworkServiceRef            service,
+                                                CFStringRef                    name)           AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/* --------------------------------------------------------------------------------
+ * SETS
+ * -------------------------------------------------------------------------------- */
+
+/*!
+       @group Set configuration
+ */
+
+/*!
+       @function SCNetworkSetGetTypeID
+       @discussion Returns the type identifier of all SCNetworkSet instances.
+ */
+CFTypeID
+SCNetworkSetGetTypeID                          (void)                                          AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkSetAddService
+       @discussion Adds the network service to the set.
+       @param set The network set.
+       @param service The service to be added.
+       @result TRUE if the service was added to the set; FALSE if the
+               service was already present or an error was encountered.
+
+       Note: at the present time, the Network Prefs UI does not
+       support having a single service be a member of more than
+       one set.  As such, an error will be returned if you attempt
+       to add a service to more than one set.
+ */
+Boolean
+SCNetworkSetAddService                         (SCNetworkSetRef                set,
+                                                SCNetworkServiceRef            service)        AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkSetCopyAll
+       @discussion Returns all available sets for the specified preferences.
+       @param prefs The "preferences" session.
+       @result The list of SCNetworkSet sets associated with the preferences.
+               You must release the returned value.
+ */
+CFArrayRef /* of SCNetworkSetRef's */
+SCNetworkSetCopyAll                            (SCPreferencesRef               prefs)          AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkSetCopyCurrent
+       @discussion Returns the "current" set.
+       @param prefs The "preferences" session.
+       @result The current set; NULL if no current set has been defined.
+ */
+SCNetworkSetRef
+SCNetworkSetCopyCurrent                                (SCPreferencesRef               prefs)          AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkSetCopyServices
+       @discussion Returns all network services associated with the set.
+       @param set The network set.
+       @result The list of SCNetworkService services associated with the set.
+               You must release the returned value.
+ */
+CFArrayRef /* of SCNetworkServiceRef's */
+SCNetworkSetCopyServices                       (SCNetworkSetRef                set)            AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkSetCreate
+       @discussion Create a new set in the configuration.
+       @param prefs The "preferences" session.
+       @result A reference to the new SCNetworkSet.
+               You must release the returned value.
+ */
+SCNetworkSetRef
+SCNetworkSetCreate                             (SCPreferencesRef               prefs)          AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkSetCopy
+       @discussion Returns the set with the specified identifier.
+       @param prefs The "preferences" session.
+       @param setID The unique identifier for the set.
+       @result A reference to the SCNetworkSet from the associated preferences;
+               NULL if the setID does not exist in the preferences or if an
+               error was encountered.
+               You must release the returned value.
+ */
+SCNetworkSetRef
+SCNetworkSetCopy                               (SCPreferencesRef               prefs,
+                                                CFStringRef                    setID)          AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkSetGetName
+       @discussion Returns the [user specified] name associated with the set.
+       @param set The network set.
+       @result The [user specified] name.
+ */
+CFStringRef
+SCNetworkSetGetName                            (SCNetworkSetRef                set)            AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkSetGetSetID
+       @discussion Returns the identifier for the set.
+       @param set The network set.
+       @result The set identifier.
+ */
+CFStringRef
+SCNetworkSetGetSetID                           (SCNetworkSetRef                set)            AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkSetGetServiceOrder
+       @discussion Returns the [user specified] ordering of network services
+               within the set.
+       @param set The network set.
+       @result The ordered list of CFStringRef service identifiers associated
+               with the set;
+               NULL if no service order has been specified or if an error
+               was encountered.
+ */
+CFArrayRef /* of serviceID CFStringRef's */
+SCNetworkSetGetServiceOrder                    (SCNetworkSetRef                set)            AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkSetRemove
+       @discussion Removes the set from the configuration.
+       @param set The network set.
+       @result TRUE if the set was removed; FALSE if an error was encountered.
+ */
+Boolean
+SCNetworkSetRemove                             (SCNetworkSetRef                set)            AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkSetRemoveService
+       @discussion Removes the network service from the set.
+       @param set The network set.
+       @param service The service to be removed.
+       @result TRUE if the service was removed from the set; FALSE if the
+               service was not already present or an error was encountered.
+ */
+Boolean
+SCNetworkSetRemoveService                      (SCNetworkSetRef                set,
+                                                SCNetworkServiceRef            service)        AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkSetSetCurrent
+       @discussion Specifies the set that should be the "current" set.
+       @param set The network set.
+       @result TRUE if the current set was updated;
+               FALSE if an error was encountered.
+ */
+Boolean
+SCNetworkSetSetCurrent                         (SCNetworkSetRef                set)            AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkSetSetName
+       @discussion Stores the [user specified] name for the set.
+       @param set The network set.
+       @param name The [user defined] name to associate with the set.
+       @result TRUE if the name was saved; FALSE if an error was encountered.
+
+       Note: although not technically required, the [user specified] names
+       for all set should be unique.  As such, an error will be returned if
+       you attemp to name two sets with the same string.
+ */
+Boolean
+SCNetworkSetSetName                            (SCNetworkSetRef                set,
+                                                CFStringRef                    name)           AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+/*!
+       @function SCNetworkSetGetServiceOrder
+       @discussion Stores the [user specified] ordering of network services for the set.
+       @param set The network set.
+       @param newOrder The ordered list of CFStringRef service identifiers for the set.
+       @result TRUE if the new service order was saved; FALSE if an error was encountered.
+ */
+Boolean
+SCNetworkSetSetServiceOrder                    (SCNetworkSetRef                set,
+                                                CFArrayRef                     newOrder)       AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;      /* serviceID CFStringRef's */
+
+
+__END_DECLS
+
+#endif /* _SCNETWORKCONFIGURATION_H */