/*
- * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2000, 2001, 2003-2005, 2007-2011, 2013, 2014 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
- *
- * The contents of this file constitute Original Code as defined in and
- * are subject to the Apple Public Source License Version 1.1 (the
- * "License"). You may not use this file except in compliance with the
- * License. Please obtain a copy of the License at
- * http://www.apple.com/publicsource and read it before using this file.
- *
- * This Original Code and all software distributed under the License are
- * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ *
+ * 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 OR NON-INFRINGEMENT. Please see the
- * License for the specific language governing rights and limitations
- * under the License.
- *
+ * 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@
*/
#include <CoreFoundation/CFRuntime.h>
#include <SystemConfiguration/SCPreferences.h>
#include <SystemConfiguration/SCDynamicStore.h>
+#include <dispatch/dispatch.h>
+
+
+#define PREFS_DEFAULT_DIR CFSTR("/Library/Preferences/SystemConfiguration")
+#define PREFS_DEFAULT_CONFIG CFSTR("preferences.plist")
+#define PREFS_DEFAULT_DIR_OLD CFSTR("/var/db/SystemConfiguration")
+#define PREFS_DEFAULT_CONFIG_OLD CFSTR("preferences.xml")
-#define PREFS_DEFAULT_DIR CFSTR("/var/db/SystemConfiguration")
-#define PREFS_DEFAULT_CONFIG CFSTR("preferences.xml")
+#define PREFS_DEFAULT_USER_DIR CFSTR("Library/Preferences")
-#define PREFS_DEFAULT_USER_DIR CFSTR("Library/Preferences")
+#define NETWORK_INTERFACES_PREFS CFSTR("NetworkInterfaces.plist")
+#define INTERFACES CFSTR("Interfaces")
/* Define the per-preference-handle structure */
/* base CFType information */
CFRuntimeBase cfBase;
+ /* lock */
+ pthread_mutex_t lock;
+
/* session name */
CFStringRef name;
/* preferences ID */
CFStringRef prefsID;
- /* per-user preference info */
- Boolean perUser;
- CFStringRef user;
+ /* options */
+ CFDictionaryRef options;
- /* configuration file path */
+ /* configuration file */
char *path;
+ char *newPath;
+
+ /* preferences lock, lock file */
+ Boolean locked;
+ int lockFD;
+ char *lockPath;
+ struct timeval lockTime;
/* configuration file signature */
CFDataRef signature;
CFStringRef sessionKeyCommit;
CFStringRef sessionKeyApply;
+ /* run loop source, callout, context, rl scheduling info */
+ Boolean scheduled;
+ CFRunLoopSourceRef rls;
+ SCPreferencesCallBack rlsFunction;
+ SCPreferencesContext rlsContext;
+ CFMutableArrayRef rlList;
+ dispatch_queue_t dispatchQueue; // SCPreferencesSetDispatchQueue
+
/* preferences */
CFMutableDictionaryRef prefs;
/* flags */
Boolean accessed;
Boolean changed;
- Boolean locked;
Boolean isRoot;
+ Boolean limit_SCNetworkConfiguration;
+
+ /* authorization, helper */
+ CFDataRef authorizationData;
+ Boolean authorizationRequired;
+ mach_port_t helper_port;
} SCPreferencesPrivate, *SCPreferencesPrivateRef;
/* Define signature data */
typedef struct {
- dev_t st_dev; /* inode's device */
- ino_t st_ino; /* inode's number */
- struct timespec st_mtimespec; /* time of last data modification */
- off_t st_size; /* file size, in bytes */
+ int64_t st_dev; /* inode's device */
+ uint64_t st_ino; /* inode's number */
+ uint64_t tv_sec; /* time of last data modification */
+ uint64_t tv_nsec;
+ off_t st_size; /* file size, in bytes */
} SCPSignatureData, *SCPSignatureDataRef;
__BEGIN_DECLS
-SCPreferencesRef
-__SCPreferencesCreate (CFAllocatorRef allocator,
- CFStringRef name,
- CFStringRef prefsID,
- Boolean perUser,
- CFStringRef user);
+Boolean
+__SCPreferencesCreate_helper (SCPreferencesRef prefs);
+
+void
+__SCPreferencesAccess (SCPreferencesRef prefs);
+
+Boolean
+__SCPreferencesAddSession (SCPreferencesRef prefs);
+CF_RETURNS_RETAINED
CFDataRef
__SCPSignatureFromStatbuf (const struct stat *statBuf);
char *
__SCPreferencesPath (CFAllocatorRef allocator,
CFStringRef prefsID,
- Boolean perUser,
- CFStringRef user);
+ Boolean useNewPrefs);
+CF_RETURNS_RETAINED
CFStringRef
_SCPNotificationKey (CFAllocatorRef allocator,
CFStringRef prefsID,
- Boolean perUser,
- CFStringRef user,
int keyType);
+Boolean
+__SCPreferencesGetLimitSCNetworkConfiguration (SCPreferencesRef prefs);
+
+void
+__SCPreferencesSetLimitSCNetworkConfiguration
+ (SCPreferencesRef prefs,
+ Boolean limit_SCNetworkConfiguration);
+
+Boolean
+__SCPreferencesUsingDefaultPrefs (SCPreferencesRef prefs);
+
+SCPreferencesRef
+__SCPreferencesCreateNIPrefsFromPrefs (SCPreferencesRef prefs);
__END_DECLS