]> git.saurik.com Git - apple/configd.git/blobdiff - SystemConfiguration.fproj/SCNetworkConfigurationPrivate.h
configd-204.tar.gz
[apple/configd.git] / SystemConfiguration.fproj / SCNetworkConfigurationPrivate.h
diff --git a/SystemConfiguration.fproj/SCNetworkConfigurationPrivate.h b/SystemConfiguration.fproj/SCNetworkConfigurationPrivate.h
new file mode 100644 (file)
index 0000000..a51cd29
--- /dev/null
@@ -0,0 +1,383 @@
+/*
+ * Copyright (c) 2005-2007 Apple 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 _SCNETWORKCONFIGURATIONPRIVATE_H
+#define _SCNETWORKCONFIGURATIONPRIVATE_H
+
+#include <AvailabilityMacros.h>
+#include <sys/cdefs.h>
+#include <CoreFoundation/CoreFoundation.h>
+#include <SystemConfiguration/SystemConfiguration.h>
+#include <SystemConfiguration/SCValidation.h>
+#include <IOKit/IOKitLib.h>
+
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1050
+
+/*!
+       @header SCNetworkConfigurationPrivate
+ */
+
+__BEGIN_DECLS
+
+
+#pragma mark -
+#pragma mark SCNetworkInterface configuration (SPI)
+
+
+/*!
+       @group Interface configuration
+ */
+
+static __inline__ CFTypeRef
+isA_SCNetworkInterface(CFTypeRef obj)
+{
+       return (isA_CFType(obj, SCNetworkInterfaceGetTypeID()));
+}
+
+static __inline__ CFTypeRef
+isA_SCBondInterface(CFTypeRef obj)
+{
+       CFStringRef     interfaceType;
+
+       if (!isA_SCNetworkInterface(obj)) {
+               // if not an SCNetworkInterface
+               return NULL;
+       }
+
+       interfaceType = SCNetworkInterfaceGetInterfaceType((SCNetworkInterfaceRef)obj);
+       if (!CFEqual(interfaceType, kSCNetworkInterfaceTypeBond)) {
+               // if not a Bond
+               return NULL;
+       }
+
+       return obj;
+}
+
+static __inline__ CFTypeRef
+isA_SCVLANInterface(CFTypeRef obj)
+{
+       CFStringRef     interfaceType;
+
+       if (!isA_SCNetworkInterface(obj)) {
+               // if not an SCNetworkInterface
+               return NULL;
+       }
+
+       interfaceType = SCNetworkInterfaceGetInterfaceType((SCNetworkInterfaceRef)obj);
+       if (!CFEqual(interfaceType, kSCNetworkInterfaceTypeVLAN)) {
+               // if not a VLAN
+               return NULL;
+       }
+
+       return obj;
+}
+
+/*!
+       @function _SCNetworkInterfaceCompare
+       @discussion Compares two SCNetworkInterface objects.
+       @param val1 The SCNetworkInterface object.
+       @param val2 The SCNetworkInterface object.
+       @param context Not used.
+       @result A comparison result.
+ */
+CFComparisonResult
+_SCNetworkInterfaceCompare                             (const void                     *val1,
+                                                        const void                     *val2,
+                                                        void                           *context)       AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+#define kIncludeNoVirtualInterfaces    0x0
+#define kIncludeVLANInterfaces         0x1
+#define kIncludeBondInterfaces         0x2
+#define kIncludeAllVirtualInterfaces   0xffffffff
+
+/*!
+       @function _SCNetworkInterfaceCreateWithBSDName
+       @discussion Create a new network interface associated with the provided
+               BSD interface name.  This API supports Ethhernet, FireWire, and
+               IEEE 802.11 interfaces.
+       @param bsdName The BSD interface name.
+       @param flags Indicates whether virtual (Bond, VLAN)
+               network interfaces should be included.
+       @result A reference to the new SCNetworkInterface.
+               You must release the returned value.
+ */
+SCNetworkInterfaceRef
+_SCNetworkInterfaceCreateWithBSDName                   (CFAllocatorRef                 allocator,
+                                                        CFStringRef                    bsdName,
+                                                        UInt32                         flags)          AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+/*!
+       @function _SCNetworkInterfaceCreateWithEntity
+       @discussion Create a new network interface associated with the provided
+               SCDynamicStore service entity dictionary.
+       @param interface_entity The entity dictionary.
+       @param service The network service.
+       @result A reference to the new SCNetworkInterface.
+               You must release the returned value.
+ */
+SCNetworkInterfaceRef
+_SCNetworkInterfaceCreateWithEntity                    (CFAllocatorRef                 allocator,
+                                                        CFDictionaryRef                interface_entity,
+                                                        SCNetworkServiceRef            service)        AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+/*!
+       @function _SCNetworkInterfaceCreateWithIONetworkInterfaceObject
+       @discussion Create a new network interface associated with the provided
+               IORegistry "IONetworkInterface" object.
+       @param if_obj The IONetworkInterface object.
+       @result A reference to the new SCNetworkInterface.
+               You must release the returned value.
+ */
+SCNetworkInterfaceRef
+_SCNetworkInterfaceCreateWithIONetworkInterfaceObject  (io_object_t                    if_obj)         AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+/*!
+       @function _SCNetworkInterfaceGetHardwareAddress
+       @discussion Returns a link layer address for the interface.
+       @param interface The network interface.
+       @result The hardware (MAC) address for the interface.
+               NULL if no hardware address is available.
+ */
+CFDataRef
+_SCNetworkInterfaceGetHardwareAddress                  (SCNetworkInterfaceRef          interface)      AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+/*!
+       @function _SCNetworkInterfaceGetIOInterfaceType
+       @discussion Returns the IOInterfaceType for the interface.
+       @param interface The network interface.
+       @result The IOInterfaceType associated with the interface
+ */
+CFNumberRef
+_SCNetworkInterfaceGetIOInterfaceType                  (SCNetworkInterfaceRef          interface)      AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+/*!
+       @function _SCNetworkInterfaceGetIOInterfaceUnit
+       @discussion Returns the IOInterfaceUnit for the interface.
+       @param interface The network interface.
+       @result The IOInterfaceUnit associated with the interface;
+               NULL if no IOLocation is available.
+ */
+CFNumberRef
+_SCNetworkInterfaceGetIOInterfaceUnit                  (SCNetworkInterfaceRef          interface)      AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+/*!
+       @function _SCNetworkInterfaceGetIOPath
+       @discussion Returns the IOPath for the interface.
+       @param interface The network interface.
+       @result The IOPath associated with the interface;
+               NULL if no IOPath is available.
+ */
+CFStringRef
+_SCNetworkInterfaceGetIOPath                           (SCNetworkInterfaceRef          interface)      AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+/*!
+       @function _SCNetworkInterfaceIsBuiltin
+       @discussion Identifies if a network interface is "built-in".
+       @param interface The network interface.
+       @result TRUE if the interface is "built-in".
+ */
+Boolean
+_SCNetworkInterfaceIsBuiltin                           (SCNetworkInterfaceRef          interface)      AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+/*!
+       @function _SCNetworkInterfaceIsModemV92
+       @discussion Identifies if a modem network interface supports
+               v.92 (hold).
+       @param interface The network interface.
+       @result TRUE if the interface is "v.92" modem.
+ */
+Boolean
+_SCNetworkInterfaceIsModemV92                          (SCNetworkInterfaceRef          interface)      AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+/*!
+       @function _SCNetworkInterfaceForceConfigurationRefresh
+       @discussion Forces a configuration refresh of the
+               specified interface.
+       @param ifName Network interface name.
+       @result TRUE if the refresh was successfully posted.
+ */
+Boolean
+_SCNetworkInterfaceForceConfigurationRefresh           (CFStringRef                    ifName)         AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+/*!
+       @function _SCBondInterfaceCopyActive
+       @discussion Returns all Ethernet Bond interfaces on the system.
+       @result The list of SCBondInterface interfaces on the system.
+               You must release the returned value.
+ */
+CFArrayRef
+_SCBondInterfaceCopyActive                             (void)                                          AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+/*!
+       @function _SCBondInterfaceUpdateConfiguration
+       @discussion Updates the bond interface configuration.
+       @param prefs The "preferences" session.
+       @result TRUE if the bond interface configuration was updated.; FALSE if the
+               an error was encountered.
+ */
+Boolean
+_SCBondInterfaceUpdateConfiguration                    (SCPreferencesRef               prefs)          AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+/*!
+       @function SCBondInterfaceSetMode
+       @discussion Set the mode on the bond interface.
+       @param bond The bond interface on which to adjust the mode.
+       @param mode The mode value (0=IF_BOND_MODE_LACP,1=IF_BOND_MODE_STATIC)
+       @result TRUE if operation succeeded.
+ */
+Boolean
+SCBondInterfaceSetMode                                 (SCBondInterfaceRef             bond,
+                                                        CFNumberRef                    mode)           AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+/*!
+       @function SCBondInterfaceSetMode
+       @discussion Return the mode for the given bond interface.
+       @param bond The bond interface to get the mode from.
+       @result A CFNumberRef containing the mode (IF_BOND_MODE_{LACP,STATIC}).
+ */
+CFNumberRef
+SCBondInterfaceGetMode                                 (SCBondInterfaceRef             bond)           AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+/*!
+       @function _SCVLANInterfaceCopyActive
+       @discussion Returns all VLAN interfaces on the system.
+       @result The list of SCVLANInterface interfaces on the system.
+               You must release the returned value.
+ */
+CFArrayRef
+_SCVLANInterfaceCopyActive                             (void)                                          AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+/*!
+       @function _SCVLANInterfaceUpdateConfiguration
+       @discussion Updates the VLAN interface configuration.
+       @param prefs The "preferences" session.
+       @result TRUE if the VLAN interface configuration was updated.; FALSE if the
+               an error was encountered.
+ */
+Boolean
+_SCVLANInterfaceUpdateConfiguration                    (SCPreferencesRef               prefs)          AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+
+#pragma mark -
+#pragma mark SCNetworkInterface Password SPIs
+
+
+enum {
+       kSCNetworkInterfacePasswordTypePPP              = 1,
+       kSCNetworkInterfacePasswordTypeIPSecSharedSecret,
+       kSCNetworkInterfacePasswordTypeEAPOL,
+};
+typedef uint32_t       SCNetworkInterfacePasswordType;
+
+Boolean
+SCNetworkInterfaceCheckPassword                                (SCNetworkInterfaceRef          interface,
+                                                        SCNetworkInterfacePasswordType passwordType)   AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+CFDataRef
+SCNetworkInterfaceCopyPassword                         (SCNetworkInterfaceRef          interface,
+                                                        SCNetworkInterfacePasswordType passwordType)   AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+Boolean
+SCNetworkInterfaceRemovePassword                       (SCNetworkInterfaceRef          interface,
+                                                        SCNetworkInterfacePasswordType passwordType)   AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+Boolean
+SCNetworkInterfaceSetPassword                          (SCNetworkInterfaceRef          interface,
+                                                        SCNetworkInterfacePasswordType passwordType,
+                                                        CFDataRef                      password,
+                                                        CFDictionaryRef                options)        AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+
+#pragma mark -
+#pragma mark SCNetworkProtocol configuration (SPI)
+
+
+/*!
+       @group Protocol configuration
+ */
+
+
+static __inline__ CFTypeRef
+isA_SCNetworkProtocol(CFTypeRef obj)
+{
+       return (isA_CFType(obj, SCNetworkProtocolGetTypeID()));
+}
+
+
+#pragma mark -
+#pragma mark SCNetworkService configuration (SPI)
+
+
+/*!
+       @group Service configuration
+ */
+
+
+static __inline__ CFTypeRef
+isA_SCNetworkService(CFTypeRef obj)
+{
+       return (isA_CFType(obj, SCNetworkServiceGetTypeID()));
+}
+
+
+#pragma mark -
+#pragma mark SCNetworkSet configuration (SPI)
+
+
+/*!
+       @group Set configuration
+ */
+
+
+static __inline__ CFTypeRef
+isA_SCNetworkSet(CFTypeRef obj)
+{
+       return (isA_CFType(obj, SCNetworkSetGetTypeID()));
+}
+
+
+/*!
+       @function SCNetworkSetEstablishDefaultConfiguration
+       @discussion Updates a network set by adding services for
+               any network interface that is not currently
+               represented.
+               If the provided set contains one (or more) services, new
+               services will only be added for those interfaces that are
+               not represented in *any* set.
+               Otherwise, new services will be added for those interfaces
+               that are not represented in the provided set.
+               The new services are established with "default" configuration
+               options.
+       @param set The network set.
+       @result TRUE if the configuration was updated; FALSE if no
+               changes were required or if an error was encountered.
+*/
+Boolean
+SCNetworkSetEstablishDefaultConfiguration              (SCNetworkSetRef                set);
+
+
+__END_DECLS
+
+#endif /* MAC_OS_X_VERSION_MAX_ALLOWED >= 1050 */
+
+#endif /* _SCNETWORKCONFIGURATIONPRIVATE_H */