--- /dev/null
+//
+// EventFactory.h
+// SystemConfigurationNetworkEventFactory
+//
+// Created by Allan Nathanson on 11/15/17.
+//
+//
+
+#import <EventFactory/EventFactory.h>
+
+@interface EventFactory : EFEventFactory
+
+@end
--- /dev/null
+//
+// EventFactory.m
+// SystemConfigurationNetworkEventFactory
+//
+// Created by Allan Nathanson on 11/15/17.
+//
+//
+
+#import "EventFactory.h"
+#import <os/log.h>
+
+#pragma mark -
+#pragma mark Logging
+
+static os_log_t
+__log_Spectacles(void)
+{
+ static os_log_t log = NULL;
+
+ if (log == NULL) {
+ log = os_log_create("com.apple.spectacles", "SystemConfiguration");
+ }
+
+ return log;
+}
+
+#define specs_log_err(format, ...) os_log_error(__log_Spectacles(), format, ##__VA_ARGS__)
+#define specs_log_notice(format, ...) os_log (__log_Spectacles(), format, ##__VA_ARGS__)
+#define specs_log_info(format, ...) os_log_info (__log_Spectacles(), format, ##__VA_ARGS__)
+#define specs_log_debug(format, ...) os_log_debug(__log_Spectacles(), format, ##__VA_ARGS__)
+
+#pragma mark -
+#pragma mark Matching
+
+#define REMatched(re_matches, args) \
+ ((re_matches != nil) && (re_matches.count == 1) && (re_matches[0].numberOfRanges == (args + 1)))
+
+#define REMatchRange(re_matches, arg) \
+ [re_matches[0] rangeAtIndex:arg]
+
+#pragma mark -
+#pragma mark SystemConfiguratioin Network Event Factory
+
+@interface EventFactory ()
+
+@property (readonly, nonatomic) NSRegularExpression *kevExpressionInterfaceAttach;
+@property (readonly, nonatomic) NSRegularExpression *kevExpressionLink;
+@property (readonly, nonatomic) NSRegularExpression *kevExpressionLinkQuality;
+
+@end
+
+@implementation EventFactory
+
+- (instancetype)init
+{
+ self = [super init];
+ if (self) {
+ NSError *expressionError;
+
+ expressionError = nil;
+ _kevExpressionInterfaceAttach = [[NSRegularExpression alloc] initWithPattern:@"Process interface (attach|detach): (\\w+)" options:0 error:&expressionError];
+ if (expressionError != nil) {
+ specs_log_info("Failed to create a regular expression: %@", expressionError);
+ }
+
+ expressionError = nil;
+ _kevExpressionLink = [[NSRegularExpression alloc] initWithPattern:@"Process interface link (down|up): (\\w+)" options:0 error:&expressionError];
+ if (expressionError != nil) {
+ specs_log_info("Failed to create a regular expression: %@", expressionError);
+ }
+
+ expressionError = nil;
+ _kevExpressionLinkQuality = [[NSRegularExpression alloc] initWithPattern:@"Process interface quality: (\\w+) \\(q=([-\\d]+)\\)" options:0 error:&expressionError];
+ if (expressionError != nil) {
+ specs_log_info("Failed to create a regular expression: %@", expressionError);
+ }
+ }
+
+ return self;
+}
+
+- (void)startWithLogSourceAttributes:(NSDictionary<NSString *, NSObject *> *)attributes
+{
+ //
+ // Prepare for parsing logs
+ //
+ specs_log_info("Event factory is starting with attributes: %@", attributes);
+}
+
+- (void)handleLogEvent:(EFLogEvent *)logEvent completionHandler:(void (^)(NSArray<EFEvent *> * _Nullable))completionHandler
+{
+ NSString *category;
+ NSString *message;
+ EFNetworkControlPathEvent *newNetworkEvent = nil;
+
+ message = logEvent.eventMessage;
+ if (message == nil) {
+ return;
+ }
+
+ //
+ // Parse logEvent and continue constructing SpectaclesNetworkEvent objects
+ //
+ // Note: if one or more NetworkEvent objects are complete, send them to the
+ // app in the completion handler block.
+ //
+
+
+ category = logEvent.category;
+ if ([category isEqualToString:@"InterfaceNamer"]) {
+
+ do {
+ } while (false);
+
+ specs_log_debug("Skipped [%@] message: %@", category, message);
+
+ } else if ([category isEqualToString:@"IPMonitor"]) {
+
+ do {
+ } while (false);
+
+ specs_log_debug("Skipped [%@] message: %@", category, message);
+
+ } else if ([category isEqualToString:@"KernelEventMonitor"]) {
+
+ do {
+ NSArray<NSTextCheckingResult *> *matches;
+ NSRange range = NSMakeRange(0, message.length);
+
+ //
+ // interface attach/detach
+ //
+ matches = [_kevExpressionInterfaceAttach matchesInString:message
+ options:NSMatchingReportProgress
+ range:range];
+ if (REMatched(matches, 2)) {
+ NSString *event;
+ NSString *interface;
+
+ interface = [message substringWithRange:REMatchRange(matches, 2)];
+ event = [message substringWithRange:REMatchRange(matches, 1)];
+ specs_log_debug("interface attach/detach: %@ --> %@", interface, event);
+
+ newNetworkEvent = [[EFNetworkControlPathEvent alloc] initWithLogEvent:logEvent subsystemIdentifier:[[NSData alloc] init]];
+ newNetworkEvent.interfaceBSDName = interface;
+ newNetworkEvent.interfaceStatus = [event isEqualToString:@"attach"] ? @"interface attached" : @"interface detached";
+ break;
+ }
+
+ //
+ // interface link up/down
+ //
+ matches = [_kevExpressionLink matchesInString:message
+ options:NSMatchingReportProgress
+ range:range];
+ if (REMatched(matches, 2)) {
+ NSString *event;
+ NSString *interface;
+
+ interface = [message substringWithRange:REMatchRange(matches, 2)];
+ event = [message substringWithRange:REMatchRange(matches, 1)];
+ specs_log_debug("link change: %@ --> %@", interface, event);
+
+ newNetworkEvent = [[EFNetworkControlPathEvent alloc] initWithLogEvent:logEvent subsystemIdentifier:[[NSData alloc] init]];
+ newNetworkEvent.interfaceBSDName = interface;
+ newNetworkEvent.interfaceStatus = [event isEqualToString:@"up"] ? @"link up" : @"link down";
+ break;
+ }
+
+ //
+ // interface link quality
+ //
+ matches = [_kevExpressionLinkQuality matchesInString:message
+ options:NSMatchingReportProgress
+ range:range];
+ if (REMatched(matches, 2)) {
+ NSString *interface;
+ NSString *quality;
+
+ interface = [message substringWithRange:REMatchRange(matches, 1)];
+ quality = [message substringWithRange:REMatchRange(matches, 2)];
+ specs_log_debug("link quality: %@ --> %@", interface, quality);
+
+ newNetworkEvent = [[EFNetworkControlPathEvent alloc] initWithLogEvent:logEvent subsystemIdentifier:[[NSData alloc] init]];
+ newNetworkEvent.interfaceBSDName = interface;
+ newNetworkEvent.interfaceStatus = [NSString stringWithFormat:@"link quality = %@", quality];
+ break;
+ }
+
+ specs_log_debug("Skipped [%@] message: %@", category, message);
+ } while (false);
+
+ } else if ([category isEqualToString:@"PreferencesMonitor"]) {
+
+ do {
+ } while (false);
+
+ specs_log_debug("Skipped [%@] message: %@", category, message);
+
+ } else {
+ // if we have no handler for this category
+ specs_log_debug("Skipped [%@] message: %@", category, message);
+ }
+
+ if (newNetworkEvent != nil) {
+ completionHandler(@[ newNetworkEvent ]);
+ } else {
+ completionHandler(nil);
+ }
+}
+
+- (void)finishWithCompletionHandler:(void (^)(NSArray<EFEvent *> * _Nullable))completionHandler
+{
+ //
+ // Clean up
+ //
+ // Note: if one or more SpectaclesNetworkEvent objects are in the process of
+ // being built, return them in the completion handler block.
+ //
+ specs_log_notice("Event factory is finishing");
+ completionHandler(nil);
+}
+
+@end
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>$(DEVELOPMENT_LANGUAGE)</string>
+ <key>CFBundleExecutable</key>
+ <string>$(EXECUTABLE_NAME)</string>
+ <key>CFBundleIdentifier</key>
+ <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>$(PRODUCT_NAME)</string>
+ <key>CFBundlePackageType</key>
+ <string>BNDL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.0</string>
+ <key>CFBundleVersion</key>
+ <string>1</string>
+ <key>LSMinimumSystemVersion</key>
+ <string>$(MACOSX_DEPLOYMENT_TARGET)</string>
+ <key>NSHumanReadableCopyright</key>
+ <string>Copyright © 2017 Apple Inc. All rights reserved.</string>
+ <key>NSPrincipalClass</key>
+ <string>EventFactory</string>
+ <key>LogEventPredicate</key>
+ <string>subsystem == "com.apple.SystemConfiguration"</string>
+</dict>
+</plist>
--- /dev/null
+// This file was automatically generated by protocompiler
+// DO NOT EDIT!
+// Compiled from stdin
+
+#include <stdint.h>
+#ifdef __OBJC__
+#include <Foundation/Foundation.h>
+#endif
+
+#ifndef NS_ENUM
+#if (__cplusplus && __cplusplus >= 201103L && (__has_extension(cxx_strong_enums) || __has_feature(objc_fixed_enum))) || (!__cplusplus && __has_feature(objc_fixed_enum))
+#define NS_ENUM(_type, _name) enum _name : _type _name; enum _name : _type
+#else
+#define NS_ENUM(_type, _name) _type _name; enum
+#endif
+#endif // !defined(NS_ENUM)
+
+typedef NS_ENUM(int32_t, AWDIPMonitorInterfaceType) {
+ AWDIPMonitorInterfaceType_IPMONITOR_INTERFACE_TYPE_OTHER = 0,
+ AWDIPMonitorInterfaceType_IPMONITOR_INTERFACE_TYPE_WIFI = 1,
+ AWDIPMonitorInterfaceType_IPMONITOR_INTERFACE_TYPE_CELLULAR = 2,
+ AWDIPMonitorInterfaceType_IPMONITOR_INTERFACE_TYPE_WIRED = 3,
+};
+#ifdef __OBJC__
+NS_INLINE NSString *AWDIPMonitorInterfaceTypeAsString(AWDIPMonitorInterfaceType value)
+{
+ switch (value)
+ {
+ case AWDIPMonitorInterfaceType_IPMONITOR_INTERFACE_TYPE_OTHER: return @"IPMONITOR_INTERFACE_TYPE_OTHER";
+ case AWDIPMonitorInterfaceType_IPMONITOR_INTERFACE_TYPE_WIFI: return @"IPMONITOR_INTERFACE_TYPE_WIFI";
+ case AWDIPMonitorInterfaceType_IPMONITOR_INTERFACE_TYPE_CELLULAR: return @"IPMONITOR_INTERFACE_TYPE_CELLULAR";
+ case AWDIPMonitorInterfaceType_IPMONITOR_INTERFACE_TYPE_WIRED: return @"IPMONITOR_INTERFACE_TYPE_WIRED";
+ default: return [NSString stringWithFormat:@"(unknown: %i)", value];
+ }
+}
+#endif /* __OBJC__ */
+#ifdef __OBJC__
+NS_INLINE AWDIPMonitorInterfaceType StringAsAWDIPMonitorInterfaceType(NSString *value)
+{
+ if ([value isEqualToString:@"IPMONITOR_INTERFACE_TYPE_OTHER"]) return AWDIPMonitorInterfaceType_IPMONITOR_INTERFACE_TYPE_OTHER;
+ if ([value isEqualToString:@"IPMONITOR_INTERFACE_TYPE_WIFI"]) return AWDIPMonitorInterfaceType_IPMONITOR_INTERFACE_TYPE_WIFI;
+ if ([value isEqualToString:@"IPMONITOR_INTERFACE_TYPE_CELLULAR"]) return AWDIPMonitorInterfaceType_IPMONITOR_INTERFACE_TYPE_CELLULAR;
+ if ([value isEqualToString:@"IPMONITOR_INTERFACE_TYPE_WIRED"]) return AWDIPMonitorInterfaceType_IPMONITOR_INTERFACE_TYPE_WIRED;
+ return AWDIPMonitorInterfaceType_IPMONITOR_INTERFACE_TYPE_OTHER;
+}
+#endif /* __OBJC__ */
--- /dev/null
+// This file was automatically generated by protocompiler
+// DO NOT EDIT!
+// Compiled from stdin
+
+#import <Foundation/Foundation.h>
+#import <ProtocolBuffer/PBCodable.h>
+
+#import "AWDIPMonitorGlobalEnums.h"
+
+typedef NS_ENUM(int32_t, AWDIPMonitorInterfaceAdvisoryReport_Flags) {
+ AWDIPMonitorInterfaceAdvisoryReport_Flags_LINK_LAYER_ISSUE = 1,
+ AWDIPMonitorInterfaceAdvisoryReport_Flags_UPLINK_ISSUE = 2,
+};
+#ifdef __OBJC__
+NS_INLINE NSString *AWDIPMonitorInterfaceAdvisoryReport_FlagsAsString(AWDIPMonitorInterfaceAdvisoryReport_Flags value)
+{
+ switch (value)
+ {
+ case AWDIPMonitorInterfaceAdvisoryReport_Flags_LINK_LAYER_ISSUE: return @"LINK_LAYER_ISSUE";
+ case AWDIPMonitorInterfaceAdvisoryReport_Flags_UPLINK_ISSUE: return @"UPLINK_ISSUE";
+ default: return [NSString stringWithFormat:@"(unknown: %i)", value];
+ }
+}
+#endif /* __OBJC__ */
+#ifdef __OBJC__
+NS_INLINE AWDIPMonitorInterfaceAdvisoryReport_Flags StringAsAWDIPMonitorInterfaceAdvisoryReport_Flags(NSString *value)
+{
+ if ([value isEqualToString:@"LINK_LAYER_ISSUE"]) return AWDIPMonitorInterfaceAdvisoryReport_Flags_LINK_LAYER_ISSUE;
+ if ([value isEqualToString:@"UPLINK_ISSUE"]) return AWDIPMonitorInterfaceAdvisoryReport_Flags_UPLINK_ISSUE;
+ return AWDIPMonitorInterfaceAdvisoryReport_Flags_LINK_LAYER_ISSUE;
+}
+#endif /* __OBJC__ */
+
+#ifdef __cplusplus
+#define AWDIPMONITORINTERFACEADVISORYREPORT_FUNCTION extern "C"
+#else
+#define AWDIPMONITORINTERFACEADVISORYREPORT_FUNCTION extern
+#endif
+
+@interface AWDIPMonitorInterfaceAdvisoryReport : PBCodable <NSCopying>
+{
+ uint64_t _timestamp;
+ uint32_t _advisoryCount;
+ uint32_t _flags;
+ AWDIPMonitorInterfaceType _interfaceType;
+ struct {
+ int timestamp:1;
+ int advisoryCount:1;
+ int flags:1;
+ int interfaceType:1;
+ } _has;
+}
+
+
+@property (nonatomic) BOOL hasTimestamp;
+@property (nonatomic) uint64_t timestamp;
+
+@property (nonatomic) BOOL hasInterfaceType;
+@property (nonatomic) AWDIPMonitorInterfaceType interfaceType;
+- (NSString *)interfaceTypeAsString:(AWDIPMonitorInterfaceType)value;
+- (AWDIPMonitorInterfaceType)StringAsInterfaceType:(NSString *)str;
+
+@property (nonatomic) BOOL hasFlags;
+@property (nonatomic) uint32_t flags;
+
+@property (nonatomic) BOOL hasAdvisoryCount;
+@property (nonatomic) uint32_t advisoryCount;
+
+// Performs a shallow copy into other
+- (void)copyTo:(AWDIPMonitorInterfaceAdvisoryReport *)other;
+
+// Performs a deep merge from other into self
+// If set in other, singular values in self are replaced in self
+// Singular composite values are recursively merged
+// Repeated values from other are appended to repeated values in self
+- (void)mergeFrom:(AWDIPMonitorInterfaceAdvisoryReport *)other;
+
+AWDIPMONITORINTERFACEADVISORYREPORT_FUNCTION BOOL AWDIPMonitorInterfaceAdvisoryReportReadFrom(AWDIPMonitorInterfaceAdvisoryReport *self, PBDataReader *reader);
+
+@end
+
--- /dev/null
+// This file was automatically generated by protocompiler
+// DO NOT EDIT!
+// Compiled from stdin
+
+#import "AWDIPMonitorInterfaceAdvisoryReport.h"
+#import <ProtocolBuffer/PBConstants.h>
+#import <ProtocolBuffer/PBHashUtil.h>
+#import <ProtocolBuffer/PBDataReader.h>
+
+@implementation AWDIPMonitorInterfaceAdvisoryReport
+
+@synthesize timestamp = _timestamp;
+- (void)setTimestamp:(uint64_t)v
+{
+ _has.timestamp = YES;
+ _timestamp = v;
+}
+- (void)setHasTimestamp:(BOOL)f
+{
+ _has.timestamp = f;
+}
+- (BOOL)hasTimestamp
+{
+ return _has.timestamp;
+}
+@synthesize interfaceType = _interfaceType;
+- (AWDIPMonitorInterfaceType)interfaceType
+{
+ return _has.interfaceType ? _interfaceType : AWDIPMonitorInterfaceType_IPMONITOR_INTERFACE_TYPE_OTHER;
+}
+- (void)setInterfaceType:(AWDIPMonitorInterfaceType)v
+{
+ _has.interfaceType = YES;
+ _interfaceType = v;
+}
+- (void)setHasInterfaceType:(BOOL)f
+{
+ _has.interfaceType = f;
+}
+- (BOOL)hasInterfaceType
+{
+ return _has.interfaceType;
+}
+- (NSString *)interfaceTypeAsString:(AWDIPMonitorInterfaceType)value
+{
+ return AWDIPMonitorInterfaceTypeAsString(value);
+}
+- (AWDIPMonitorInterfaceType)StringAsInterfaceType:(NSString *)str
+{
+ return StringAsAWDIPMonitorInterfaceType(str);
+}
+@synthesize flags = _flags;
+- (void)setFlags:(uint32_t)v
+{
+ _has.flags = YES;
+ _flags = v;
+}
+- (void)setHasFlags:(BOOL)f
+{
+ _has.flags = f;
+}
+- (BOOL)hasFlags
+{
+ return _has.flags;
+}
+@synthesize advisoryCount = _advisoryCount;
+- (void)setAdvisoryCount:(uint32_t)v
+{
+ _has.advisoryCount = YES;
+ _advisoryCount = v;
+}
+- (void)setHasAdvisoryCount:(BOOL)f
+{
+ _has.advisoryCount = f;
+}
+- (BOOL)hasAdvisoryCount
+{
+ return _has.advisoryCount;
+}
+
+- (NSString *)description
+{
+ return [NSString stringWithFormat:@"%@ %@", [super description], [self dictionaryRepresentation]];
+}
+
+- (NSDictionary *)dictionaryRepresentation
+{
+ NSMutableDictionary *dict = [NSMutableDictionary dictionary];
+ if (self->_has.timestamp)
+ {
+ [dict setObject:[NSNumber numberWithUnsignedLongLong:self->_timestamp] forKey:@"timestamp"];
+ }
+ if (self->_has.interfaceType)
+ {
+ [dict setObject:AWDIPMonitorInterfaceTypeAsString(self->_interfaceType) forKey:@"interface_type"];
+ }
+ if (self->_has.flags)
+ {
+ [dict setObject:[NSNumber numberWithUnsignedInt:self->_flags] forKey:@"flags"];
+ }
+ if (self->_has.advisoryCount)
+ {
+ [dict setObject:[NSNumber numberWithUnsignedInt:self->_advisoryCount] forKey:@"advisory_count"];
+ }
+ return dict;
+}
+
+BOOL AWDIPMonitorInterfaceAdvisoryReportReadFrom(AWDIPMonitorInterfaceAdvisoryReport *self, PBDataReader *reader) {
+ while (PBReaderHasMoreData(reader)) {
+ uint32_t tag = 0;
+ uint8_t aType = 0;
+
+ PBReaderReadTag32AndType(reader, &tag, &aType);
+
+ if (PBReaderHasError(reader))
+ break;
+
+ if (aType == TYPE_END_GROUP) {
+ break;
+ }
+
+ switch (tag) {
+
+ case 1 /* timestamp */:
+ {
+ self->_has.timestamp = YES;
+ self->_timestamp = PBReaderReadUint64(reader);
+ }
+ break;
+ case 2 /* interfaceType */:
+ {
+ self->_has.interfaceType = YES;
+ self->_interfaceType = PBReaderReadInt32(reader);
+ }
+ break;
+ case 3 /* flags */:
+ {
+ self->_has.flags = YES;
+ self->_flags = PBReaderReadUint32(reader);
+ }
+ break;
+ case 4 /* advisoryCount */:
+ {
+ self->_has.advisoryCount = YES;
+ self->_advisoryCount = PBReaderReadUint32(reader);
+ }
+ break;
+ default:
+ if (!PBReaderSkipValueWithTag(reader, tag, aType))
+ return NO;
+ break;
+ }
+ }
+ return !PBReaderHasError(reader);
+}
+
+- (BOOL)readFrom:(PBDataReader *)reader
+{
+ return AWDIPMonitorInterfaceAdvisoryReportReadFrom(self, reader);
+}
+- (void)writeTo:(PBDataWriter *)writer
+{
+ /* timestamp */
+ {
+ if (self->_has.timestamp)
+ {
+ PBDataWriterWriteUint64Field(writer, self->_timestamp, 1);
+ }
+ }
+ /* interfaceType */
+ {
+ if (self->_has.interfaceType)
+ {
+ PBDataWriterWriteInt32Field(writer, self->_interfaceType, 2);
+ }
+ }
+ /* flags */
+ {
+ if (self->_has.flags)
+ {
+ PBDataWriterWriteUint32Field(writer, self->_flags, 3);
+ }
+ }
+ /* advisoryCount */
+ {
+ if (self->_has.advisoryCount)
+ {
+ PBDataWriterWriteUint32Field(writer, self->_advisoryCount, 4);
+ }
+ }
+}
+
+- (void)copyTo:(AWDIPMonitorInterfaceAdvisoryReport *)other
+{
+ if (self->_has.timestamp)
+ {
+ other->_timestamp = _timestamp;
+ other->_has.timestamp = YES;
+ }
+ if (self->_has.interfaceType)
+ {
+ other->_interfaceType = _interfaceType;
+ other->_has.interfaceType = YES;
+ }
+ if (self->_has.flags)
+ {
+ other->_flags = _flags;
+ other->_has.flags = YES;
+ }
+ if (self->_has.advisoryCount)
+ {
+ other->_advisoryCount = _advisoryCount;
+ other->_has.advisoryCount = YES;
+ }
+}
+
+- (id)copyWithZone:(NSZone *)zone
+{
+ AWDIPMonitorInterfaceAdvisoryReport *copy = [[[self class] allocWithZone:zone] init];
+ if (self->_has.timestamp)
+ {
+ copy->_timestamp = _timestamp;
+ copy->_has.timestamp = YES;
+ }
+ if (self->_has.interfaceType)
+ {
+ copy->_interfaceType = _interfaceType;
+ copy->_has.interfaceType = YES;
+ }
+ if (self->_has.flags)
+ {
+ copy->_flags = _flags;
+ copy->_has.flags = YES;
+ }
+ if (self->_has.advisoryCount)
+ {
+ copy->_advisoryCount = _advisoryCount;
+ copy->_has.advisoryCount = YES;
+ }
+ return copy;
+}
+
+- (BOOL)isEqual:(id)object
+{
+ AWDIPMonitorInterfaceAdvisoryReport *other = (AWDIPMonitorInterfaceAdvisoryReport *)object;
+ return [other isMemberOfClass:[self class]]
+ &&
+ ((self->_has.timestamp && other->_has.timestamp && self->_timestamp == other->_timestamp) || (!self->_has.timestamp && !other->_has.timestamp))
+ &&
+ ((self->_has.interfaceType && other->_has.interfaceType && self->_interfaceType == other->_interfaceType) || (!self->_has.interfaceType && !other->_has.interfaceType))
+ &&
+ ((self->_has.flags && other->_has.flags && self->_flags == other->_flags) || (!self->_has.flags && !other->_has.flags))
+ &&
+ ((self->_has.advisoryCount && other->_has.advisoryCount && self->_advisoryCount == other->_advisoryCount) || (!self->_has.advisoryCount && !other->_has.advisoryCount))
+ ;
+}
+
+- (NSUInteger)hash
+{
+ return 0
+ ^
+ (self->_has.timestamp ? PBHashInt((NSUInteger)self->_timestamp) : 0)
+ ^
+ (self->_has.interfaceType ? PBHashInt((NSUInteger)self->_interfaceType) : 0)
+ ^
+ (self->_has.flags ? PBHashInt((NSUInteger)self->_flags) : 0)
+ ^
+ (self->_has.advisoryCount ? PBHashInt((NSUInteger)self->_advisoryCount) : 0)
+ ;
+}
+
+- (void)mergeFrom:(AWDIPMonitorInterfaceAdvisoryReport *)other
+{
+ if (other->_has.timestamp)
+ {
+ self->_timestamp = other->_timestamp;
+ self->_has.timestamp = YES;
+ }
+ if (other->_has.interfaceType)
+ {
+ self->_interfaceType = other->_interfaceType;
+ self->_has.interfaceType = YES;
+ }
+ if (other->_has.flags)
+ {
+ self->_flags = other->_flags;
+ self->_has.flags = YES;
+ }
+ if (other->_has.advisoryCount)
+ {
+ self->_advisoryCount = other->_advisoryCount;
+ self->_has.advisoryCount = YES;
+ }
+}
+
+@end
+
--- /dev/null
+//
+// AWDMetricIds_IPMonitor.h
+// AppleWirelessDiagnostics
+//
+// WARNING :: DO NOT MODIFY THIS FILE!
+//
+// This file is auto-generated! Do not modify it or your changes will get overwritten!
+//
+
+#ifndef AWD_MetricId_HeaderGuard_IPMonitor
+#define AWD_MetricId_HeaderGuard_IPMonitor
+
+// Component Id:
+// ---------------
+// Use this value for any API requesting the "component id" for your component.
+enum {
+ AWDComponentId_IPMonitor = 0x81
+};
+
+
+// Simple Metrics:
+// ---------------
+// This component currently has no metrics compatible with the 'simple metric' API.
+
+
+// General Metrics:
+// ----------------
+enum {
+ AWDMetricId_IPMonitor_InterfaceAdvisoryReport = 0x810000
+};
+
+#endif // AWD_MetricId_HeaderGuard_IPMonitor
--- /dev/null
+/*
+ * Copyright (c) 2018 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@
+ */
+
+/*
+ * IPMonitorAWDReport.h
+ * - C shim layer to interact with AWD to generate and submit a metric
+ */
+
+#ifndef _S_IPMONITOR_AWD_REPORT_H
+#define _S_IPMONITOR_AWD_REPORT_H
+
+/*
+ * Modification History
+ *
+ * June 21, 2018 Dieter Siegmund (dieter@apple.com)
+ * - created
+ */
+
+#include <CoreFoundation/CFBase.h>
+#ifndef NS_ENUM
+#define NS_ENUM CF_ENUM
+#endif
+
+#include "AWDIPMonitorGlobalEnums.h"
+
+/* ugh, duplicate */
+#ifndef __OBJC__
+typedef NS_ENUM(int32_t, AWDIPMonitorInterfaceAdvisoryReport_Flags) {
+ AWDIPMonitorInterfaceAdvisoryReport_Flags_LINK_LAYER_ISSUE = 1,
+ AWDIPMonitorInterfaceAdvisoryReport_Flags_UPLINK_ISSUE = 2,
+};
+#endif
+
+typedef CFTypeRef InterfaceAdvisoryReportRef;
+
+InterfaceAdvisoryReportRef
+InterfaceAdvisoryReportCreate(AWDIPMonitorInterfaceType type);
+
+void
+InterfaceAdvisoryReportSubmit(InterfaceAdvisoryReportRef report);
+
+void
+InterfaceAdvisoryReportSetFlags(InterfaceAdvisoryReportRef report,
+ AWDIPMonitorInterfaceAdvisoryReport_Flags flags);
+void
+InterfaceAdvisoryReportSetAdvisoryCount(InterfaceAdvisoryReportRef report,
+ uint32_t count);
+#endif /* _S_IPMONITOR_AWD_REPORT_H */
--- /dev/null
+/*
+ * Copyright (c) 2018 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@
+ */
+
+/*
+ * IPMonitorAWDReport.m
+ * - C shim layer to interact with AWD to generate and submit a metric
+ */
+
+
+#import <WirelessDiagnostics/WirelessDiagnostics.h>
+#import "AWDMetricIds_IPMonitor.h"
+#import "AWDIPMonitorInterfaceAdvisoryReport.h"
+#import "IPMonitorAWDReport.h"
+#import <SystemConfiguration/SCPrivate.h>
+
+#include "symbol_scope.h"
+
+#if defined(TEST_IPMONITOR_AWD_REPORT) || defined(TEST_IPMONITOR_CONTROL)
+
+#define my_log(__level, __format, ...) SCPrint(TRUE, stdout, CFSTR(__format "\n"), ## __VA_ARGS__)
+
+#else /* TEST_IPMONITOR_AWD_REPORT || TEST_IPMONITOR_CONTROL */
+
+#define my_log(__level, __format, ...) SC_log(__level, __format, ## __VA_ARGS__)
+
+#endif /* TEST_IPMONITOR_AWD_REPORT || TEST_IPMONITOR_CONTROL */
+
+
+STATIC AWDServerConnection *
+IPMonitorAWDServerConnection(void)
+{
+ AWDServerConnection * server;
+
+ if ([AWDServerConnection class] == nil) {
+ return (nil);
+ }
+ server = [[AWDServerConnection alloc]
+ initWithComponentId:AWDComponentId_IPMonitor];
+ if (server == NULL) {
+ my_log(LOG_NOTICE, "Failed to create AWD server connection");
+ }
+ return (server);
+}
+
+STATIC InterfaceAdvisoryReportRef
+_InterfaceAdvisoryReportCreate(AWDIPMonitorInterfaceType type)
+{
+ AWDIPMonitorInterfaceAdvisoryReport * metric;
+
+ if ([AWDServerConnection class] == nil) {
+ return (NULL);
+ }
+ metric = [[AWDIPMonitorInterfaceAdvisoryReport alloc] init];
+ metric.interfaceType = type;
+
+ /* default to zero values */
+ metric.flags = 0;
+ metric.advisoryCount = 0;
+
+ return ((InterfaceAdvisoryReportRef)metric);
+}
+
+PRIVATE_EXTERN InterfaceAdvisoryReportRef
+InterfaceAdvisoryReportCreate(AWDIPMonitorInterfaceType type)
+{
+ InterfaceAdvisoryReportRef report;
+
+ @autoreleasepool {
+ report = _InterfaceAdvisoryReportCreate(type);
+ }
+ return (report);
+}
+
+STATIC void
+_InterfaceAdvisoryReportSubmit(InterfaceAdvisoryReportRef report)
+{
+ AWDMetricContainer * container;
+ AWDServerConnection * server;
+
+ server = IPMonitorAWDServerConnection();
+ if (server == NULL) {
+ return;
+ }
+ container = [server newMetricContainerWithIdentifier:
+ AWDMetricId_IPMonitor_InterfaceAdvisoryReport];
+ [container setMetric:(AWDIPMonitorInterfaceAdvisoryReport *)report];
+ [server submitMetric:container];
+ [server release];
+ [container release];
+ return;
+}
+
+PRIVATE_EXTERN void
+InterfaceAdvisoryReportSubmit(InterfaceAdvisoryReportRef report)
+{
+ @autoreleasepool {
+ _InterfaceAdvisoryReportSubmit(report);
+ }
+}
+
+#define INTERFACE_ADVISORY_REPORT_SET_PROP(report, name, value) \
+ @autoreleasepool { \
+ AWDIPMonitorInterfaceAdvisoryReport * metric; \
+ \
+ metric = (AWDIPMonitorInterfaceAdvisoryReport *)report; \
+ metric.name = value; \
+ }
+
+void
+InterfaceAdvisoryReportSetFlags(InterfaceAdvisoryReportRef report,
+ AWDIPMonitorInterfaceAdvisoryReport_Flags flags)
+{
+ INTERFACE_ADVISORY_REPORT_SET_PROP(report, flags, flags);
+}
+
+void
+InterfaceAdvisoryReportSetAdvisoryCount(InterfaceAdvisoryReportRef report,
+ uint32_t count)
+{
+ INTERFACE_ADVISORY_REPORT_SET_PROP(report, advisoryCount, count);
+}
+
+#ifdef TEST_IPMONITOR_AWD_REPORT
+
+int
+main(int argc, char * argv[])
+{
+ InterfaceAdvisoryReportRef report;
+ AWDIPMonitorInterfaceType type;
+
+ type = AWDIPMonitorInterfaceType_IPMONITOR_INTERFACE_TYPE_WIFI;
+ report = InterfaceAdvisoryReportCreate(type);
+ if (report == NULL) {
+ fprintf(stderr, "WirelessDiagnostics framework not available\n");
+ exit(1);
+ }
+ printf("Before setting values:\n");
+ CFShow(report);
+ fflush(stdout);
+
+
+ /* set values */
+ InterfaceAdvisoryReportSetFlags(report,
+ AWDIPMonitorInterfaceAdvisoryReport_Flags_LINK_LAYER_ISSUE
+ | AWDIPMonitorInterfaceAdvisoryReport_Flags_UPLINK_ISSUE);
+ InterfaceAdvisoryReportSetAdvisoryCount(report, 2);
+
+ printf("After setting values:\n");
+ CFShow(report);
+ fflush(stdout);
+
+ InterfaceAdvisoryReportSubmit(report);
+ CFRelease(report);
+ if (argc > 1) {
+ fprintf(stderr, "pid is %d\n", getpid());
+ sleep(120);
+ }
+}
+
+#endif /* TEST_IPMONITOR_AWD_REPORT */
/*
- * Copyright (c) 2013-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2013-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#define my_log(__level, __format, ...) SC_log(__level, __format, ## __VA_ARGS__)
-#endif /* TEST_IPMONITOR_CONTROL */
+#endif /* TEST_IPMONITOR_CONTROL */
/**
** IPMonitorControl CF object glue
struct IPMonitorControl {
CFRuntimeBase cf_base;
-#ifdef VERBOSE_ACTIVITY_LOGGING
- os_activity_t activity;
-#endif // VERBOSE_ACTIVITY_LOGGING
dispatch_queue_t queue;
xpc_connection_t connection;
+
CFMutableDictionaryRef assertions; /* ifname<string> = rank<number> */
+ CFMutableDictionaryRef advisories; /* ifname<string> = adv<number> */
};
STATIC CFStringRef __IPMonitorControlCopyDebugDesc(CFTypeRef cf);
if (control->connection != NULL) {
xpc_release(control->connection);
}
-#ifdef VERBOSE_ACTIVITY_LOGGING
- if (control->activity != NULL) {
- os_release(control->activity);
- }
-#endif // VERBOSE_ACTIVITY_LOGGING
if (control->queue != NULL) {
- xpc_release(control->queue);
+ dispatch_release(control->queue);
}
+ my_CFRelease(&control->advisories);
+ my_CFRelease(&control->assertions);
return;
}
return (control);
}
+STATIC xpc_object_t
+create_request_dictionary(void)
+{
+ const char * progname;
+ xpc_object_t request;
+
+ request = xpc_dictionary_create(NULL, NULL, 0);
+ progname = getprogname();
+ if (progname != NULL) {
+ xpc_dictionary_set_string(request,
+ kIPMonitorControlRequestKeyProcessName,
+ progname);
+ }
+ return (request);
+}
+
STATIC Boolean
IPMonitorControlHandleResponse(xpc_object_t event, Boolean async,
Boolean * retry_p)
success = FALSE;
#ifdef TEST_IPMONITOR_CONTROL
my_log(LOG_NOTICE, "failure code %lld", error);
-#endif /* TEST_IPMONITOR_CONTROL */
+#endif /* TEST_IPMONITOR_CONTROL */
}
else {
success = TRUE;
if (event == XPC_ERROR_CONNECTION_INTERRUPTED) {
#ifdef TEST_IPMONITOR_CONTROL
my_log(LOG_NOTICE, "can retry");
-#endif /* TEST_IPMONITOR_CONTROL */
+#endif /* TEST_IPMONITOR_CONTROL */
retry = TRUE;
}
else {
STATIC void
-IPMonitorControlSetInterfaceRank(IPMonitorControlRef control,
- CFStringRef ifname_cf,
- SCNetworkServicePrimaryRank rank)
+_IPMonitorControlSetInterfacePrimaryRank(IPMonitorControlRef control,
+ CFStringRef ifname_cf,
+ SCNetworkServicePrimaryRank rank)
{
if (control->assertions == NULL) {
if (rank == kSCNetworkServicePrimaryRankDefault) {
if (rank == kSCNetworkServicePrimaryRankDefault) {
CFDictionaryRemoveValue(control->assertions, ifname_cf);
if (CFDictionaryGetCount(control->assertions) == 0) {
- CFRelease(control->assertions);
- control->assertions = NULL;
+ my_CFRelease(&control->assertions);
}
}
else {
if (!CFNumberGetValue(value, kCFNumberSInt32Type, &rank)) {
return;
}
- request = xpc_dictionary_create(NULL, NULL, 0);
+ request = create_request_dictionary();
xpc_dictionary_set_uint64(request,
kIPMonitorControlRequestKeyType,
kIPMonitorControlRequestTypeSetInterfaceRank);
}
+STATIC void
+_IPMonitorControlSetInterfaceAdvisory(IPMonitorControlRef control,
+ CFStringRef ifname_cf,
+ SCNetworkInterfaceAdvisory advisory)
+{
+ if (control->advisories == NULL) {
+ if (advisory == kSCNetworkInterfaceAdvisoryNone) {
+ /* no advisories, no need to store advisory */
+ return;
+ }
+ control->advisories
+ = CFDictionaryCreateMutable(NULL, 0,
+ &kCFTypeDictionaryKeyCallBacks,
+ &kCFTypeDictionaryValueCallBacks);
+ }
+ if (advisory == kSCNetworkInterfaceAdvisoryNone) {
+ CFDictionaryRemoveValue(control->advisories, ifname_cf);
+ if (CFDictionaryGetCount(control->advisories) == 0) {
+ my_CFRelease(&control->advisories);
+ }
+ }
+ else {
+ CFNumberRef advisory_cf;
+
+ advisory_cf = CFNumberCreate(NULL, kCFNumberSInt32Type, &advisory);
+ CFDictionarySetValue(control->advisories, ifname_cf, advisory_cf);
+ CFRelease(advisory_cf);
+ }
+ return;
+}
+
+STATIC void
+ApplyInterfaceAdvisory(const void * key, const void * value, void * context)
+{
+ xpc_connection_t connection = (xpc_connection_t)context;
+ char ifname[IF_NAMESIZE];
+ SCNetworkInterfaceAdvisory advisory;
+ xpc_object_t request;
+
+ if (!CFStringGetCString(key, ifname, sizeof(ifname),
+ kCFStringEncodingUTF8)) {
+ return;
+ }
+ if (!CFNumberGetValue(value, kCFNumberSInt32Type, &advisory)) {
+ return;
+ }
+ request = create_request_dictionary();
+ xpc_dictionary_set_uint64(request,
+ kIPMonitorControlRequestKeyType,
+ kIPMonitorControlRequestTypeSetInterfaceAdvisory);
+ xpc_dictionary_set_string(request,
+ kIPMonitorControlRequestKeyInterfaceName,
+ ifname);
+ xpc_dictionary_set_uint64(request,
+ kIPMonitorControlRequestKeyAdvisory,
+ advisory);
+ xpc_connection_send_message(connection, request);
+ xpc_release(request);
+ return;
+}
+
+
/**
** IPMonitorControl SPI
**/
= xpc_connection_create_mach_service(kIPMonitorControlServerName,
queue, flags);
handler = ^(xpc_object_t event) {
- os_activity_t activity;
Boolean retry;
- activity = os_activity_create("processing IPMonitor [rank] reply",
- OS_ACTIVITY_CURRENT,
- OS_ACTIVITY_FLAG_DEFAULT);
- os_activity_scope(activity);
-
(void)IPMonitorControlHandleResponse(event, TRUE, &retry);
- if (retry && control->assertions != NULL) {
- CFDictionaryApplyFunction(control->assertions,
- ApplyInterfaceRank,
- control->connection);
+ if (retry) {
+ if (control->assertions != NULL) {
+ CFDictionaryApplyFunction(control->assertions,
+ ApplyInterfaceRank,
+ control->connection);
+ }
+ if (control->advisories != NULL) {
+ CFDictionaryApplyFunction(control->advisories,
+ ApplyInterfaceAdvisory,
+ control->connection);
+ }
}
-
- os_release(activity);
};
xpc_connection_set_event_handler(connection, handler);
-#ifdef VERBOSE_ACTIVITY_LOGGING
- control->activity = os_activity_create("accessing IPMonitor [rank] controls",
- OS_ACTIVITY_CURRENT,
- OS_ACTIVITY_FLAG_DEFAULT);
-#endif // VERBOSE_ACTIVITY_LOGGING
control->connection = connection;
control->queue = queue;
xpc_connection_resume(connection);
return (control);
}
+STATIC xpc_object_t
+IPMonitorControlSendRequest(IPMonitorControlRef control,
+ xpc_object_t request)
+{
+ xpc_object_t reply;
+
+ while (TRUE) {
+ Boolean retry_on_error = FALSE;
+ Boolean success;
+
+ reply = xpc_connection_send_message_with_reply_sync(control->connection,
+ request);
+ if (reply == NULL) {
+ my_log(LOG_NOTICE, "failed to send message");
+ break;
+ }
+ success = IPMonitorControlHandleResponse(reply, FALSE,
+ &retry_on_error);
+ if (success) {
+ break;
+ }
+ xpc_release(reply);
+ reply = NULL;
+ if (retry_on_error) {
+ continue;
+ }
+ my_log(LOG_NOTICE, "fatal error");
+ break;
+ }
+ return (reply);
+}
+
PRIVATE_EXTERN Boolean
IPMonitorControlSetInterfacePrimaryRank(IPMonitorControlRef control,
CFStringRef ifname_cf,
SCNetworkServicePrimaryRank rank)
{
char ifname[IF_NAMESIZE];
+ xpc_object_t reply;
xpc_object_t request;
Boolean success = FALSE;
return (FALSE);
}
-#ifdef VERBOSE_ACTIVITY_LOGGING
- os_activity_scope(control->activity);
-#endif // VERBOSE_ACTIVITY_LOGGING
-
- request = xpc_dictionary_create(NULL, NULL, 0);
+ request = create_request_dictionary();
xpc_dictionary_set_uint64(request,
kIPMonitorControlRequestKeyType,
kIPMonitorControlRequestTypeSetInterfaceRank);
xpc_dictionary_set_uint64(request,
kIPMonitorControlRequestKeyPrimaryRank,
rank);
- while (TRUE) {
- xpc_object_t reply;
- Boolean retry_on_error = FALSE;
-
- reply = xpc_connection_send_message_with_reply_sync(control->connection,
- request);
- if (reply == NULL) {
- my_log(LOG_NOTICE, "failed to send message");
- break;
- }
- success = IPMonitorControlHandleResponse(reply, FALSE,
- &retry_on_error);
- xpc_release(reply);
- if (success) {
- break;
- }
- if (retry_on_error) {
- continue;
- }
- my_log(LOG_NOTICE, "fatal error");
- break;
- }
+ reply = IPMonitorControlSendRequest(control, request);
xpc_release(request);
- if (success) {
+ if (reply != NULL) {
+ success = TRUE;
+ xpc_release(reply);
+
/* sync our state */
CFRetain(ifname_cf);
CFRetain(control);
dispatch_async(control->queue,
^{
- IPMonitorControlSetInterfaceRank(control,
- ifname_cf,
- rank);
+ _IPMonitorControlSetInterfacePrimaryRank(control,
+ ifname_cf,
+ rank);
CFRelease(ifname_cf);
CFRelease(control);
});
return (success);
}
-SCNetworkServicePrimaryRank
+PRIVATE_EXTERN SCNetworkServicePrimaryRank
IPMonitorControlGetInterfacePrimaryRank(IPMonitorControlRef control,
CFStringRef ifname_cf)
{
char ifname[IF_NAMESIZE];
SCNetworkServicePrimaryRank rank;
+ xpc_object_t reply;
xpc_object_t request;
rank = kSCNetworkServicePrimaryRankDefault;
return rank;
}
-#ifdef VERBOSE_ACTIVITY_LOGGING
- os_activity_scope(control->activity);
-#endif // VERBOSE_ACTIVITY_LOGGING
-
- request = xpc_dictionary_create(NULL, NULL, 0);
+ request = create_request_dictionary();
xpc_dictionary_set_uint64(request,
kIPMonitorControlRequestKeyType,
kIPMonitorControlRequestTypeGetInterfaceRank);
xpc_dictionary_set_string(request,
kIPMonitorControlRequestKeyInterfaceName,
ifname);
- while (TRUE) {
- xpc_object_t reply;
- Boolean retry_on_error = FALSE;
- Boolean success;
+ reply = IPMonitorControlSendRequest(control, request);
+ if (reply != NULL) {
+ rank = (SCNetworkServicePrimaryRank)
+ xpc_dictionary_get_uint64(reply,
+ kIPMonitorControlResponseKeyPrimaryRank);
+ xpc_release(reply);
+ }
+ xpc_release(request);
+ return (rank);
+}
- reply = xpc_connection_send_message_with_reply_sync(control->connection,
- request);
- if (reply == NULL) {
- my_log(LOG_NOTICE, "failed to send message");
- break;
- }
- success = IPMonitorControlHandleResponse(reply, FALSE, &retry_on_error);
- if (success) {
- rank = (SCNetworkServicePrimaryRank)
- xpc_dictionary_get_uint64(reply,
- kIPMonitorControlResponseKeyPrimaryRank);
- }
+PRIVATE_EXTERN Boolean
+IPMonitorControlSetInterfaceAdvisory(IPMonitorControlRef control,
+ CFStringRef ifname_cf,
+ SCNetworkInterfaceAdvisory advisory,
+ CFStringRef reason)
+{
+ char ifname[IF_NAMESIZE];
+ char * reason_str = NULL;
+ xpc_object_t reply;
+ xpc_object_t request;
+ Boolean success = FALSE;
+
+ if (!CFStringGetCString(ifname_cf, ifname, sizeof(ifname),
+ kCFStringEncodingUTF8)) {
+ return (FALSE);
+ }
+ if (reason != NULL) {
+ reason_str
+ = _SC_cfstring_to_cstring(reason, NULL, 0, kCFStringEncodingUTF8);
+ }
+ request = create_request_dictionary();
+ xpc_dictionary_set_uint64(request,
+ kIPMonitorControlRequestKeyType,
+ kIPMonitorControlRequestTypeSetInterfaceAdvisory);
+ xpc_dictionary_set_string(request,
+ kIPMonitorControlRequestKeyInterfaceName,
+ ifname);
+ xpc_dictionary_set_uint64(request,
+ kIPMonitorControlRequestKeyAdvisory,
+ advisory);
+ if (reason_str != NULL) {
+ xpc_dictionary_set_string(request,
+ kIPMonitorControlRequestKeyReason,
+ reason_str);
+ CFAllocatorDeallocate(NULL, reason_str);
+ }
+ reply = IPMonitorControlSendRequest(control, request);
+ xpc_release(request);
+ if (reply != NULL) {
xpc_release(reply);
- if (success) {
- break;
- }
- if (retry_on_error) {
- continue;
- }
- break;
+ success = TRUE;
+
+ /* sync our state */
+ CFRetain(ifname_cf);
+ CFRetain(control);
+ dispatch_async(control->queue,
+ ^{
+ _IPMonitorControlSetInterfaceAdvisory(control,
+ ifname_cf,
+ advisory);
+ CFRelease(ifname_cf);
+ CFRelease(control);
+ });
+ }
+ return (success);
+}
+
+PRIVATE_EXTERN Boolean
+IPMonitorControlInterfaceAdvisoryIsSet(IPMonitorControlRef control,
+ CFStringRef ifname_cf)
+{
+ char ifname[IF_NAMESIZE];
+ xpc_object_t reply;
+ xpc_object_t request;
+ Boolean is_set = FALSE;
+
+ if (!CFStringGetCString(ifname_cf, ifname, sizeof(ifname),
+ kCFStringEncodingUTF8)) {
+ return (FALSE);
}
+ request = create_request_dictionary();
+ xpc_dictionary_set_uint64(request,
+ kIPMonitorControlRequestKeyType,
+ kIPMonitorControlRequestTypeInterfaceAdvisoryIsSet);
+ xpc_dictionary_set_string(request,
+ kIPMonitorControlRequestKeyInterfaceName,
+ ifname);
+ reply = IPMonitorControlSendRequest(control, request);
xpc_release(request);
+ if (reply != NULL) {
+ if (xpc_dictionary_get_bool(reply,
+ kIPMonitorControlResponseKeyAdvisoryIsSet)) {
+ is_set = TRUE;
+ }
+ xpc_release(reply);
+ }
+ return (is_set);
+}
- return (rank);
+PRIVATE_EXTERN Boolean
+IPMonitorControlAnyInterfaceAdvisoryIsSet(IPMonitorControlRef control)
+{
+ xpc_object_t reply;
+ xpc_object_t request;
+ Boolean is_set = FALSE;
+
+ request = create_request_dictionary();
+ xpc_dictionary_set_uint64(request,
+ kIPMonitorControlRequestKeyType,
+ kIPMonitorControlRequestTypeAnyInterfaceAdvisoryIsSet);
+ reply = IPMonitorControlSendRequest(control, request);
+ xpc_release(request);
+ if (reply != NULL) {
+ if (xpc_dictionary_get_bool(reply,
+ kIPMonitorControlResponseKeyAdvisoryIsSet)) {
+ is_set = TRUE;
+ }
+ xpc_release(reply);
+ }
+ return (is_set);
}
+PRIVATE_EXTERN CFStringRef
+IPMonitorControlCopyInterfaceAdvisoryNotificationKey(CFStringRef ifname)
+{
+ return (_IPMonitorControlCopyInterfaceAdvisoryNotificationKey(ifname));
+}
/*
- * Copyright (c) 2013 Apple Inc. All rights reserved.
+ * Copyright (c) 2013-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
IPMonitorControlGetInterfacePrimaryRank(IPMonitorControlRef control,
CFStringRef ifname);
+Boolean
+IPMonitorControlSetInterfaceAdvisory(IPMonitorControlRef control,
+ CFStringRef ifname,
+ SCNetworkInterfaceAdvisory advisory,
+ CFStringRef reason);
+Boolean
+IPMonitorControlInterfaceAdvisoryIsSet(IPMonitorControlRef control,
+ CFStringRef ifname);
+Boolean
+IPMonitorControlAnyInterfaceAdvisoryIsSet(IPMonitorControlRef control);
+
+CFStringRef
+IPMonitorControlCopyInterfaceAdvisoryNotificationKey(CFStringRef ifname);
+
#endif /* _IPMONITOR_CONTROL_H */
kIPMonitorControlRequestTypeNone = 0,
kIPMonitorControlRequestTypeSetInterfaceRank = 1,
kIPMonitorControlRequestTypeGetInterfaceRank = 2,
+ kIPMonitorControlRequestTypeSetInterfaceAdvisory = 3,
+ kIPMonitorControlRequestTypeInterfaceAdvisoryIsSet = 4,
+ kIPMonitorControlRequestTypeAnyInterfaceAdvisoryIsSet = 5,
};
/*
* - keys used to communicate a request to the server
*/
#define kIPMonitorControlRequestKeyType "Type"
+#define kIPMonitorControlRequestKeyProcessName "ProcessName"
#define kIPMonitorControlRequestKeyInterfaceName "InterfaceName"
#define kIPMonitorControlRequestKeyPrimaryRank "PrimaryRank"
+#define kIPMonitorControlRequestKeyAdvisory "Advisory"
+#define kIPMonitorControlRequestKeyReason "Reason"
/*
* kIPMonitorControlResponseKey*
*/
#define kIPMonitorControlResponseKeyError "Error"
#define kIPMonitorControlResponseKeyPrimaryRank "PrimaryRank"
+#define kIPMonitorControlResponseKeyAdvisoryIsSet "AdvisoryIsSet"
+
+static inline CFStringRef
+_IPMonitorControlCopyInterfaceAdvisoryNotificationKey(CFStringRef ifname)
+{
+ return SCDynamicStoreKeyCreateNetworkInterfaceEntity(NULL,
+ kSCDynamicStoreDomainState,
+ ifname,
+ CFSTR("Advisory"));
+}
+
+static inline void
+my_CFRelease(void * t)
+{
+ void * * obj = (void * *)t;
+ if (obj && *obj) {
+ CFRelease(*obj);
+ *obj = NULL;
+ }
+ return;
+}
#endif /* _IPMONITOR_CONTROL_PRIVATE_H */
/*
- * Copyright (c) 2013-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2013-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#include <sys/queue.h>
#include <CoreFoundation/CFRunLoop.h>
#include <SystemConfiguration/SCNetworkConfigurationPrivate.h>
+#include <SystemConfiguration/SCPrivate.h>
#include "IPMonitorControlServer.h"
#include "symbol_scope.h"
#include "IPMonitorControlPrivate.h"
-#include <SystemConfiguration/SCPrivate.h>
+#include "IPMonitorAWDReport.h"
#ifdef TEST_IPMONITOR_CONTROL
#define my_log(__level, __format, ...) SCPrint(TRUE, stdout, CFSTR(__format "\n"), ## __VA_ARGS__)
struct ControlSession {
LIST_ENTRY_ControlSession link;
xpc_connection_t connection;
+
CFMutableDictionaryRef assertions; /* ifname<string> = rank<number> */
+ CFMutableDictionaryRef advisories; /* ifname<string> = advisory<number> */
};
/**
STATIC CFMutableArrayRef S_if_changes;
STATIC CFRange S_if_changes_range;
+STATIC CFNumberRef
+RankLastNumberGet(void)
+{
+ STATIC CFNumberRef rank_last;
+
+ if (rank_last == NULL) {
+ SCNetworkServicePrimaryRank rank;
+
+ rank = kSCNetworkServicePrimaryRankLast;
+ rank_last = CFNumberCreate(NULL, kCFNumberSInt32Type, &rank);
+ }
+ return (rank_last);
+}
+
STATIC void
InterfaceChangedListAddInterface(CFStringRef ifname)
{
return;
}
+STATIC void
+InterfaceAdvisoryAdd(const void * key, const void * value, void * context)
+{
+#pragma unused(value)
+ CFMutableDictionaryRef * assertions_p;
+ CFNumberRef existing_rank;
+ CFNumberRef rank;
+
+ /* an interface advisory implies RankLast */
+ rank = RankLastNumberGet();
+ assertions_p = (CFMutableDictionaryRef *)context;
+ if (*assertions_p == NULL) {
+ *assertions_p
+ = CFDictionaryCreateMutable(NULL, 0,
+ &kCFTypeDictionaryKeyCallBacks,
+ &kCFTypeDictionaryValueCallBacks);
+ CFDictionarySetValue(*assertions_p, key, rank);
+ return;
+ }
+ existing_rank = CFDictionaryGetValue(*assertions_p, key);
+ if (existing_rank == NULL
+ || (CFNumberCompare(rank, existing_rank, NULL)
+ == kCFCompareGreaterThan)) {
+ CFDictionarySetValue(*assertions_p, key, rank);
+ }
+ return;
+}
+
STATIC CFDictionaryRef
InterfaceRankAssertionsCopy(void)
{
ControlSessionRef session;
LIST_FOREACH(session, &S_ControlSessions, link) {
- if (session->assertions == NULL) {
- continue;
+ if (session->advisories != NULL) {
+ CFDictionaryApplyFunction(session->advisories,
+ InterfaceAdvisoryAdd,
+ &assertions);
+ }
+ if (session->assertions != NULL) {
+ CFDictionaryApplyFunction(session->assertions,
+ InterfaceRankAssertionAdd,
+ &assertions);
}
- CFDictionaryApplyFunction(session->assertions,
- InterfaceRankAssertionAdd,
- &assertions);
}
return (assertions);
}
+STATIC Boolean
+InterfaceHasAdvisories(CFStringRef ifname)
+{
+ ControlSessionRef session;
+
+ LIST_FOREACH(session, &S_ControlSessions, link) {
+ if (session->advisories != NULL
+ && CFDictionaryContainsKey(session->advisories, ifname)) {
+ return (TRUE);
+ }
+ }
+ return (FALSE);
+}
+
+
+STATIC AWDIPMonitorInterfaceAdvisoryReport_Flags
+advisory_to_flags(SCNetworkInterfaceAdvisory advisory)
+{
+ AWDIPMonitorInterfaceAdvisoryReport_Flags flags;
+
+ switch (advisory) {
+ case kSCNetworkInterfaceAdvisoryNone:
+ default:
+ flags = 0;
+ break;
+ case kSCNetworkInterfaceAdvisoryLinkLayerIssue:
+ flags = AWDIPMonitorInterfaceAdvisoryReport_Flags_LINK_LAYER_ISSUE;
+ break;
+ case kSCNetworkInterfaceAdvisoryUplinkIssue:
+ flags = AWDIPMonitorInterfaceAdvisoryReport_Flags_UPLINK_ISSUE;
+ break;
+ }
+ return (flags);
+}
+
+STATIC AWDIPMonitorInterfaceAdvisoryReport_Flags
+InterfaceGetAdvisoryFlags(CFStringRef ifname,
+ ControlSessionRef exclude_session,
+ uint32_t * ret_count)
+{
+ uint32_t count;
+ AWDIPMonitorInterfaceAdvisoryReport_Flags flags = 0;
+ ControlSessionRef session;
+
+ count = 0;
+ LIST_FOREACH(session, &S_ControlSessions, link) {
+ SCNetworkInterfaceAdvisory advisory = 0;
+ CFNumberRef advisory_cf;
+
+ if (session->advisories == NULL) {
+ continue;
+ }
+ if (exclude_session != NULL && exclude_session == session) {
+ continue;
+ }
+ advisory_cf = CFDictionaryGetValue(session->advisories, ifname);
+ if (advisory_cf == NULL) {
+ /* session has no advisories for this interface */
+ continue;
+ }
+ (void)CFNumberGetValue(advisory_cf, kCFNumberSInt32Type, &advisory);
+ flags |= advisory_to_flags(advisory);
+ count++;
+ }
+ *ret_count = count;
+ return (flags);
+}
+
+STATIC Boolean
+AnyInterfaceHasAdvisories(void)
+{
+ ControlSessionRef session;
+
+ LIST_FOREACH(session, &S_ControlSessions, link) {
+ if (session->advisories != NULL) {
+ return (TRUE);
+ }
+ }
+ return (FALSE);
+}
+
STATIC CFRunLoopRef S_runloop;
STATIC CFRunLoopSourceRef S_signal_source;
}
STATIC void
-GenerateNotification(void)
+NotifyIPMonitor(void)
{
if (S_signal_source != NULL) {
CFRunLoopSourceSignal(S_signal_source);
return;
}
+STATIC void
+NotifyInterfaceAdvisory(CFStringRef ifname)
+{
+ CFStringRef key;
+
+ key = _IPMonitorControlCopyInterfaceAdvisoryNotificationKey(ifname);
+ SCDynamicStoreNotifyValue(NULL, key);
+ CFRelease(key);
+ return;
+}
+
+STATIC void
+SubmitInterfaceAdvisoryMetric(CFStringRef ifname,
+ AWDIPMonitorInterfaceAdvisoryReport_Flags flags,
+ uint32_t count)
+{
+ InterfaceAdvisoryReportRef report;
+ AWDIPMonitorInterfaceType type;
+
+ /* XXX need to actually figure out what the interface type is */
+ if (CFStringHasPrefix(ifname, CFSTR("pdp"))) {
+ type = AWDIPMonitorInterfaceType_IPMONITOR_INTERFACE_TYPE_CELLULAR;
+ }
+ else {
+ type = AWDIPMonitorInterfaceType_IPMONITOR_INTERFACE_TYPE_WIFI;
+ }
+ report = InterfaceAdvisoryReportCreate(type);
+ if (report == NULL) {
+ return;
+ }
+ InterfaceAdvisoryReportSetFlags(report, flags);
+ InterfaceAdvisoryReportSetAdvisoryCount(report, count);
+ InterfaceAdvisoryReportSubmit(report);
+ my_log(LOG_NOTICE, "%@: submitted AWD report %@", ifname, report);
+ CFRelease(report);
+}
+
/**
** ControlSession
**/
return;
}
+STATIC void
+AddChangedInterfaceNotify(const void * key, const void * value, void * context)
+{
+#pragma unused(value)
+#pragma unused(context)
+ InterfaceChangedListAddInterface((CFStringRef)key);
+ NotifyInterfaceAdvisory((CFStringRef)key);
+ return;
+}
+
+STATIC void
+GenerateMetricForInterfaceAtSessionClose(const void * key, const void * value,
+ void * context)
+{
+ uint32_t count_after;
+ uint32_t count_before;
+ AWDIPMonitorInterfaceAdvisoryReport_Flags flags_after;
+ AWDIPMonitorInterfaceAdvisoryReport_Flags flags_before;
+ CFStringRef ifname = (CFStringRef)key;
+ ControlSessionRef session = (ControlSessionRef)context;
+
+#pragma unused(value)
+ /*
+ * Get the flags and count including this session, then again
+ * excluding this session. If either flags or count are different,
+ * generate the metric.
+ */
+ flags_before = InterfaceGetAdvisoryFlags(ifname, NULL, &count_before);
+ flags_after = InterfaceGetAdvisoryFlags(ifname, session, &count_after);
+ if (flags_before != flags_after || count_before != count_after) {
+ SubmitInterfaceAdvisoryMetric(ifname, flags_after, count_after);
+ }
+ return;
+}
+
+STATIC void
+ControlSessionGenerateMetricsAtClose(ControlSessionRef session)
+{
+ if (session->advisories == NULL) {
+ return;
+ }
+ CFDictionaryApplyFunction(session->advisories,
+ GenerateMetricForInterfaceAtSessionClose,
+ session);
+}
+
STATIC void
ControlSessionInvalidate(ControlSessionRef session)
{
my_log(LOG_DEBUG, "Invalidating %p", session);
+ ControlSessionGenerateMetricsAtClose(session);
LIST_REMOVE(session, link);
- if (session->assertions != NULL) {
- my_log(LOG_DEBUG,
- "IPMonitorControlServer: %p pid %d removing assertions %@",
- session->connection,
- xpc_connection_get_pid(session->connection),
- session->assertions);
- CFDictionaryApplyFunction(session->assertions, AddChangedInterface,
- NULL);
- CFRelease(session->assertions);
- session->assertions = NULL;
- GenerateNotification();
+ if (session->assertions != NULL || session->advisories != NULL) {
+ if (session->advisories != NULL) {
+ my_log(LOG_NOTICE,
+ "pid %d removing advisories %@",
+ xpc_connection_get_pid(session->connection),
+ session->advisories);
+ CFDictionaryApplyFunction(session->advisories,
+ AddChangedInterfaceNotify,
+ NULL);
+ my_CFRelease(&session->advisories);
+ }
+ if (session->assertions != NULL) {
+ my_log(LOG_NOTICE,
+ "pid %d removing assertions %@",
+ xpc_connection_get_pid(session->connection),
+ session->assertions);
+ CFDictionaryApplyFunction(session->assertions, AddChangedInterface,
+ NULL);
+ my_CFRelease(&session->assertions);
+ }
+ NotifyIPMonitor();
}
return;
}
ControlSessionRef session;
session = (ControlSessionRef)malloc(sizeof(*session));
- bzero(session, sizeof(*session));
+ memset(session, 0, sizeof(*session));
session->connection = connection;
xpc_connection_set_finalizer_f(connection, ControlSessionRelease);
xpc_connection_set_context(connection, session);
}
STATIC ControlSessionRef
-ControlSessionGet(xpc_connection_t connection)
+ControlSessionForConnection(xpc_connection_t connection)
{
ControlSessionRef session;
CFRelease(rank_cf);
}
InterfaceChangedListAddInterface(ifname_cf);
- GenerateNotification();
+ NotifyIPMonitor();
CFRelease(ifname_cf);
return;
}
return (rank);
}
+STATIC void
+ControlSessionSetInterfaceAdvisory(ControlSessionRef session,
+ const char * ifname,
+ SCNetworkInterfaceAdvisory advisory)
+{
+ uint32_t count_after;
+ uint32_t count_before;
+ AWDIPMonitorInterfaceAdvisoryReport_Flags flags_after;
+ AWDIPMonitorInterfaceAdvisoryReport_Flags flags_before;
+ CFStringRef ifname_cf;
+
+ if (session->advisories == NULL) {
+ if (advisory == kSCNetworkInterfaceAdvisoryNone) {
+ /* no advisories, no need to store advisory */
+ return;
+ }
+ session->advisories
+ = CFDictionaryCreateMutable(NULL, 0,
+ &kCFTypeDictionaryKeyCallBacks,
+ &kCFTypeDictionaryValueCallBacks);
+ }
+ ifname_cf = CFStringCreateWithCString(NULL, ifname,
+ kCFStringEncodingUTF8);
+ flags_before = InterfaceGetAdvisoryFlags(ifname_cf, NULL, &count_before);
+ if (advisory == kSCNetworkInterfaceAdvisoryNone) {
+ CFDictionaryRemoveValue(session->advisories, ifname_cf);
+ if (CFDictionaryGetCount(session->advisories) == 0) {
+ CFRelease(session->advisories);
+ session->advisories = NULL;
+ }
+ }
+ else {
+ CFNumberRef advisory_cf;
+
+ advisory_cf = CFNumberCreate(NULL, kCFNumberSInt32Type, &advisory);
+ CFDictionarySetValue(session->advisories, ifname_cf, advisory_cf);
+ CFRelease(advisory_cf);
+ }
+ flags_after = InterfaceGetAdvisoryFlags(ifname_cf, NULL, &count_after);
+ if (flags_before != flags_after || count_before != count_after) {
+ SubmitInterfaceAdvisoryMetric(ifname_cf, flags_after, count_after);
+ }
+ InterfaceChangedListAddInterface(ifname_cf);
+ NotifyInterfaceAdvisory(ifname_cf);
+ NotifyIPMonitor();
+ CFRelease(ifname_cf);
+ return;
+}
+
/**
** IPMonitorControlServer
**/
+
+STATIC const char *
+get_process_name(xpc_object_t request)
+{
+ const char * process_name;
+
+ process_name
+ = xpc_dictionary_get_string(request,
+ kIPMonitorControlRequestKeyProcessName);
+ if (process_name == NULL) {
+ process_name = "<unknown>";
+ }
+ return (process_name);
+}
+
STATIC Boolean
-IPMonitorControlServerValidateConnection(xpc_connection_t connection)
+IPMonitorControlServerConnectionIsRoot(xpc_connection_t connection)
{
uid_t uid;
return (uid == 0);
}
+STATIC Boolean
+IPMonitorControlServerConnectionHasEntitlement(xpc_connection_t connection,
+ const char * entitlement)
+{
+ Boolean entitled = FALSE;
+ xpc_object_t val;
+
+ val = xpc_connection_copy_entitlement_value(connection, entitlement);
+ if (val != NULL) {
+ if (xpc_get_type(val) == XPC_TYPE_BOOL) {
+ entitled = xpc_bool_get_value(val);
+ }
+ xpc_release(val);
+ }
+ return (entitled);
+}
+
+STATIC const char *
+get_rank_str(SCNetworkServicePrimaryRank rank)
+{
+ const char * str = NULL;
+
+ switch (rank) {
+ case kSCNetworkServicePrimaryRankDefault:
+ str = "Default";
+ break;
+ case kSCNetworkServicePrimaryRankFirst:
+ str = "First";
+ break;
+ case kSCNetworkServicePrimaryRankLast:
+ str = "Last";
+ break;
+ case kSCNetworkServicePrimaryRankNever:
+ str = "Never";
+ break;
+ case kSCNetworkServicePrimaryRankScoped:
+ str = "Scoped";
+ break;
+ default:
+ break;
+ }
+ return (str);
+}
+
STATIC int
-IPMonitorControlServerHandleSetInterfaceRank(xpc_connection_t connection,
- xpc_object_t request,
- xpc_object_t reply)
+HandleSetInterfaceRank(xpc_connection_t connection,
+ xpc_object_t request,
+ xpc_object_t reply)
{
#pragma unused(reply)
const char * ifname;
SCNetworkServicePrimaryRank rank;
+ const char * rank_str;
ControlSessionRef session;
- if (!IPMonitorControlServerValidateConnection(connection)) {
+ if (!IPMonitorControlServerConnectionIsRoot(connection)) {
my_log(LOG_INFO, "connection %p pid %d permission denied",
connection, xpc_connection_get_pid(connection));
return (EPERM);
rank = (SCNetworkServicePrimaryRank)
xpc_dictionary_get_uint64(request,
kIPMonitorControlRequestKeyPrimaryRank);
- switch (rank) {
- case kSCNetworkServicePrimaryRankDefault:
- case kSCNetworkServicePrimaryRankFirst:
- case kSCNetworkServicePrimaryRankLast:
- case kSCNetworkServicePrimaryRankNever:
- case kSCNetworkServicePrimaryRankScoped:
- break;
- default:
+ rank_str = get_rank_str(rank);
+ if (rank_str == NULL) {
return (EINVAL);
}
- session = ControlSessionGet(connection);
+ session = ControlSessionForConnection(connection);
ControlSessionSetInterfaceRank(session, ifname, rank);
- my_log(LOG_INFO, "connection %p pid %d set %s %u",
- connection, xpc_connection_get_pid(connection), ifname, rank);
+ my_log(LOG_NOTICE, "%s[%d] SetInterfaceRank(%s) = %s (%u)",
+ get_process_name(request),
+ xpc_connection_get_pid(connection), ifname, rank_str, rank);
return (0);
}
STATIC int
-IPMonitorControlServerHandleGetInterfaceRank(xpc_connection_t connection,
- xpc_object_t request,
- xpc_object_t reply)
+HandleGetInterfaceRank(xpc_connection_t connection,
+ xpc_object_t request,
+ xpc_object_t reply)
{
const char * ifname;
SCNetworkServicePrimaryRank rank;
return (0);
}
+STATIC const char *
+get_advisory_str(SCNetworkInterfaceAdvisory advisory)
+{
+ const char * str = NULL;
+
+ switch (advisory) {
+ case kSCNetworkInterfaceAdvisoryNone:
+ str = "None";
+ break;
+ case kSCNetworkInterfaceAdvisoryLinkLayerIssue:
+ str = "LinkLayerIssue";
+ break;
+ case kSCNetworkInterfaceAdvisoryUplinkIssue:
+ str = "UplinkIssue";
+ break;
+ default:
+ break;
+ }
+ return (str);
+}
+
+STATIC int
+HandleSetInterfaceAdvisory(xpc_connection_t connection,
+ xpc_object_t request,
+ xpc_object_t reply)
+{
+#pragma unused(reply)
+ SCNetworkInterfaceAdvisory advisory;
+ const char * advisory_str;
+ const char * ifname;
+ const char * reason;
+ ControlSessionRef session;
+
+#define ENTITLEMENT "com.apple.SystemConfiguration.SCNetworkInterfaceSetAdvisory"
+ if (!IPMonitorControlServerConnectionIsRoot(connection)
+ && !IPMonitorControlServerConnectionHasEntitlement(connection,
+ ENTITLEMENT)) {
+ my_log(LOG_INFO, "connection %p pid %d permission denied",
+ connection, xpc_connection_get_pid(connection));
+ return (EPERM);
+ }
+ ifname
+ = xpc_dictionary_get_string(request,
+ kIPMonitorControlRequestKeyInterfaceName);
+ if (ifname == NULL) {
+ return (EINVAL);
+ }
+ reason
+ = xpc_dictionary_get_string(request,
+ kIPMonitorControlRequestKeyReason);
+ advisory = (SCNetworkInterfaceAdvisory)
+ xpc_dictionary_get_uint64(request, kIPMonitorControlRequestKeyAdvisory);
+
+ /* validate the advisory code */
+ advisory_str = get_advisory_str(advisory);
+ if (advisory_str == NULL) {
+ return (EINVAL);
+ }
+ session = ControlSessionForConnection(connection);
+ ControlSessionSetInterfaceAdvisory(session, ifname, advisory);
+ my_log(LOG_NOTICE, "%s[%d] SetInterfaceAdvisory(%s) = %s (%u) reason='%s'",
+ get_process_name(request),
+ xpc_connection_get_pid(connection), ifname, advisory_str, advisory,
+ reason != NULL ? reason : "" );
+ return (0);
+}
+
+STATIC int
+HandleInterfaceAdvisoryIsSet(xpc_connection_t connection,
+ xpc_object_t request,
+ xpc_object_t reply)
+{
+#pragma unused(connection)
+ const char * ifname;
+ CFStringRef ifname_cf;
+
+ if (reply == NULL) {
+ /* no point in processing the request if we can't provide an answer */
+ return (EINVAL);
+ }
+ ifname
+ = xpc_dictionary_get_string(request,
+ kIPMonitorControlRequestKeyInterfaceName);
+ if (ifname == NULL) {
+ return (EINVAL);
+ }
+ ifname_cf = CFStringCreateWithCString(NULL, ifname,
+ kCFStringEncodingUTF8);
+ xpc_dictionary_set_bool(reply,
+ kIPMonitorControlResponseKeyAdvisoryIsSet,
+ InterfaceHasAdvisories(ifname_cf));
+ CFRelease(ifname_cf);
+ return (0);
+}
+
+STATIC int
+HandleAnyInterfaceAdvisoryIsSet(xpc_connection_t connection,
+ xpc_object_t request,
+ xpc_object_t reply)
+{
+#pragma unused(connection)
+#pragma unused(request)
+ if (reply == NULL) {
+ /* no point in processing the request if we can't provide an answer */
+ return (EINVAL);
+ }
+ xpc_dictionary_set_bool(reply,
+ kIPMonitorControlResponseKeyAdvisoryIsSet,
+ AnyInterfaceHasAdvisories());
+ return (0);
+}
+
STATIC void
IPMonitorControlServerHandleDisconnect(xpc_connection_t connection)
{
ControlSessionRef session;
- my_log(LOG_DEBUG, "IPMonitorControlServer: client %p went away", connection);
+ my_log(LOG_DEBUG, "IPMonitorControlServer: client %p went away",
+ connection);
session = ControlSessionLookup(connection);
if (session == NULL) {
/* never asserted anything */
reply = xpc_dictionary_create_reply(request);
switch (request_type) {
case kIPMonitorControlRequestTypeSetInterfaceRank:
- error = IPMonitorControlServerHandleSetInterfaceRank(connection,
- request,
- reply);
+ error = HandleSetInterfaceRank(connection, request, reply);
break;
case kIPMonitorControlRequestTypeGetInterfaceRank:
- error = IPMonitorControlServerHandleGetInterfaceRank(connection,
- request,
- reply);
+ error = HandleGetInterfaceRank(connection, request, reply);
+ break;
+ case kIPMonitorControlRequestTypeSetInterfaceAdvisory:
+ error = HandleSetInterfaceAdvisory(connection, request, reply);
+ break;
+ case kIPMonitorControlRequestTypeInterfaceAdvisoryIsSet:
+ error = HandleInterfaceAdvisoryIsSet(connection, request, reply);
+ break;
+ case kIPMonitorControlRequestTypeAnyInterfaceAdvisoryIsSet:
+ error = HandleAnyInterfaceAdvisoryIsSet(connection, request, reply);
break;
default:
error = EINVAL;
ifeq ($(PLATFORM),iphoneos)
# iOS internal SDK
CORETELEPHONY=-framework CoreTelephony
-ARCHS=armv7
+ARCHS=arm64
endif
ifeq ($(PLATFORM),macosx)
PF_INC = -F$(SYSROOT)/System/Library/PrivateFrameworks
endif
-SC_PRIV=-DUSE_SYSTEMCONFIGURATION_PRIVATE_HEADERS
ARCH_FLAGS=$(foreach a,$(ARCHS),-arch $(a))
if_rank_assert: IPMonitorControlServer.c IPMonitorControl.c main.c
- $(CC) $(SC_PRIV) -DTEST_IPMONITOR_CONTROL -I$(SYSROOT)/System/Library/Frameworks/System.framework/PrivateHeaders $(ARCH_FLAGS) -isysroot $(SYSROOT) $(PF_INC) -framework CoreFoundation -framework SystemConfiguration -Wall -g -o $@ $^
+ $(CC) -DTEST_IPMONITOR_CONTROL -I$(SYSROOT)/System/Library/Frameworks/System.framework/PrivateHeaders $(ARCH_FLAGS) -isysroot $(SYSROOT) $(PF_INC) -framework CoreFoundation -framework SystemConfiguration -Wall -g -o $@ $^
+
+IPMonitorAWDReportTest: IPMonitorAWDReport.m
+ $(CC) -isysroot $(SYSROOT) $(ARCH_FLAGS) -g -Wall -DTEST_IPMONITOR_AWD_REPORT -framework Foundation -weak_framework WirelessDiagnostics -framework CoreFoundation -framework SystemConfiguration -framework ProtocolBuffer $(PF_INC) -I AWD AWD/AWDIPMonitorInterfaceAdvisoryReport.m -o $@ $^
clean:
rm -rf *.dSYM *~ *.o if_rank_assert
--- /dev/null
+component: IPMonitor
+output_directory: IPMonitorControl/AWD
+package: AWD
+language: objc-no-arc
/*
- * Copyright (c) 2013, 2015 Apple Inc. All rights reserved.
+ * Copyright (c) 2013, 2015, 2018 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,
* 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 "IPMonitorControlServer.h"
#include "symbol_scope.h"
-STATIC void
+STATIC void
AssertionsChanged(void * info)
{
CFDictionaryRef assertions = NULL;
CFRunLoopSourceRef rls;
STATIC Boolean verbose = TRUE;
- bzero(&context, sizeof(context));
+ memset(&context, 0, sizeof(context));
context.info = (void *)NULL;
context.perform = AssertionsChanged;
rls = CFRunLoopSourceCreate(NULL, 0, &context);
$(CC) $(PF_INC) $(ARCH_FLAGS) -isysroot $(SYSROOT) -DMAIN ${TEST_INCLUDE} ${EXTRA_CFLAGS} -Wall -O0 -g -c -o dns-configurationX.o dns-configuration.c
test_dns: ip_pluginX.o IPMonitorControlPrefs.o agent-monitor.o configAgent.o controller.o dnsAgent.o proxyAgent.o dnsinfo_create.o dnsinfo_flatfile.o dnsinfo_server.o network_state_information_priv.o network_information_server.o dns-configurationX.o proxy-configuration.o set-hostname.o smb-configuration.o IPMonitorControlServer.o libSystemConfiguration_client.o libSystemConfiguration_server.o
- $(CC) $(PF_INC) $(ARCH_FLAGS) -isysroot $(SYSROOT) -Wall -O0 -g -o test_dns ip_pluginX.o IPMonitorControlPrefs.o agent-monitor.o configAgent.o controller.o dnsAgent.o proxyAgent.o dnsinfo_create.o dnsinfo_flatfile.o dnsinfo_server.o network_state_information_priv.o network_information_server.o dns-configurationX.o proxy-configuration.o set-hostname.o smb-configuration.o IPMonitorControlServer.o libSystemConfiguration_client.o libSystemConfiguration_server.o ${EXTRA_CFLAGS} -framework SystemConfiguration -framework CoreFoundation -framework Foundation -framework Network -framework NetworkExtension
+ $(CC) $(PF_INC) $(ARCH_FLAGS) -isysroot $(SYSROOT) -Wall -O0 -g -o test_dns ip_pluginX.o IPMonitorControlPrefs.o agent-monitor.o configAgent.o controller.o dnsAgent.o proxyAgent.o dnsinfo_create.o dnsinfo_flatfile.o dnsinfo_server.o network_state_information_priv.o network_information_server.o dns-configurationX.o proxy-configuration.o set-hostname.o smb-configuration.o IPMonitorControlServer.o libSystemConfiguration_client.o libSystemConfiguration_server.o ${EXTRA_CFLAGS} -lnetwork -framework SystemConfiguration -framework CoreFoundation -framework Foundation -framework Network -framework NetworkExtension
# ----------
$(CC) $(PF_INC) $(ARCH_FLAGS) -isysroot $(SYSROOT) -DMAIN ${TEST_INCLUDE} ${EXTRA_CFLAGS} -Wall -O0 -g -c -o proxy-configurationX.o proxy-configuration.c
test_proxy: ip_pluginX.o IPMonitorControlPrefs.o agent-monitor.o configAgent.o controller.o dnsAgent.o proxyAgent.o dnsinfo_create.o dnsinfo_flatfile.o dnsinfo_server.o network_state_information_priv.o network_information_server.o dns-configuration.o proxy-configurationX.o set-hostname.o smb-configuration.o IPMonitorControlServer.o libSystemConfiguration_client.o libSystemConfiguration_server.o
- $(CC) $(PF_INC) $(ARCH_FLAGS) -isysroot $(SYSROOT) -Wall -O0 -g -o test_proxy ip_pluginX.o IPMonitorControlPrefs.o agent-monitor.o configAgent.o controller.o dnsAgent.o proxyAgent.o dnsinfo_create.o dnsinfo_flatfile.o dnsinfo_server.o network_state_information_priv.o network_information_server.o dns-configuration.o proxy-configurationX.o set-hostname.o smb-configuration.o IPMonitorControlServer.o libSystemConfiguration_client.o libSystemConfiguration_server.o ${EXTRA_CFLAGS} -framework SystemConfiguration -framework CoreFoundation -framework Foundation -framework Network -framework NetworkExtension
+ $(CC) $(PF_INC) $(ARCH_FLAGS) -isysroot $(SYSROOT) -Wall -O0 -g -o test_proxy ip_pluginX.o IPMonitorControlPrefs.o agent-monitor.o configAgent.o controller.o dnsAgent.o proxyAgent.o dnsinfo_create.o dnsinfo_flatfile.o dnsinfo_server.o network_state_information_priv.o network_information_server.o dns-configuration.o proxy-configurationX.o set-hostname.o smb-configuration.o IPMonitorControlServer.o libSystemConfiguration_client.o libSystemConfiguration_server.o ${EXTRA_CFLAGS} -lnetwork -framework SystemConfiguration -framework CoreFoundation -framework Foundation -framework Network -framework NetworkExtension
# ----------
$(CC) $(PF_INC) $(ARCH_FLAGS) -isysroot $(SYSROOT) -DMAIN -DDEBUG ${TEST_INCLUDE} ${EXTRA_CFLAGS} -Wall -O0 -g -c -o set-hostnameX.o set-hostname.c
test_hostname: ip_pluginX.o IPMonitorControlPrefs.o agent-monitor.o configAgent.o controller.o dnsAgent.o proxyAgent.o dnsinfo_create.o dnsinfo_flatfile.o dnsinfo_server.o network_state_information_priv.o network_information_server.o dns-configuration.o proxy-configuration.o set-hostnameX.o smb-configuration.o IPMonitorControlServer.o libSystemConfiguration_client.o libSystemConfiguration_server.o
- $(CC) $(PF_INC) $(ARCH_FLAGS) -isysroot $(SYSROOT) -Wall -O0 -g -o test_hostname ip_pluginX.o IPMonitorControlPrefs.o agent-monitor.o configAgent.o controller.o dnsAgent.o proxyAgent.o dnsinfo_create.o dnsinfo_flatfile.o dnsinfo_server.o network_state_information_priv.o network_information_server.o dns-configuration.o proxy-configuration.o set-hostnameX.o smb-configuration.o IPMonitorControlServer.o libSystemConfiguration_client.o libSystemConfiguration_server.o ${EXTRA_CFLAGS} -framework SystemConfiguration -framework CoreFoundation -framework Foundation -framework Network -framework NetworkExtension
+ $(CC) $(PF_INC) $(ARCH_FLAGS) -isysroot $(SYSROOT) -Wall -O0 -g -o test_hostname ip_pluginX.o IPMonitorControlPrefs.o agent-monitor.o configAgent.o controller.o dnsAgent.o proxyAgent.o dnsinfo_create.o dnsinfo_flatfile.o dnsinfo_server.o network_state_information_priv.o network_information_server.o dns-configuration.o proxy-configuration.o set-hostnameX.o smb-configuration.o IPMonitorControlServer.o libSystemConfiguration_client.o libSystemConfiguration_server.o ${EXTRA_CFLAGS} -lnetwork -framework SystemConfiguration -framework CoreFoundation -framework Foundation -framework Network -framework NetworkExtension
# ----------
$(CC) $(PF_INC) $(ARCH_FLAGS) -isysroot $(SYSROOT) -DMAIN -DDEBUG ${TEST_INCLUDE} ${EXTRA_CFLAGS} -Wall -O0 -g -c -o smb-configurationX.o smb-configuration.c
test_smb: ip_pluginX.o IPMonitorControlPrefs.o agent-monitor.o configAgent.o controller.o dnsAgent.o proxyAgent.o dnsinfo_create.o dnsinfo_flatfile.o dnsinfo_server.o network_state_information_priv.o network_information_server.o dns-configuration.o proxy-configuration.o set-hostname.o smb-configurationX.o IPMonitorControlServer.o libSystemConfiguration_client.o libSystemConfiguration_server.o
- $(CC) $(PF_INC) $(ARCH_FLAGS) -isysroot $(SYSROOT) -Wall -O0 -g -o test_smb ip_pluginX.o IPMonitorControlPrefs.o agent-monitor.o configAgent.o controller.o dnsAgent.o proxyAgent.o dnsinfo_create.o dnsinfo_flatfile.o dnsinfo_server.o network_state_information_priv.o network_information_server.o dns-configuration.o proxy-configuration.o set-hostname.o smb-configurationX.o IPMonitorControlServer.o libSystemConfiguration_client.o libSystemConfiguration_server.o ${EXTRA_CFLAGS} -framework SystemConfiguration -framework CoreFoundation -framework Foundation -framework Network -framework NetworkExtension
+ $(CC) $(PF_INC) $(ARCH_FLAGS) -isysroot $(SYSROOT) -Wall -O0 -g -o test_smb ip_pluginX.o IPMonitorControlPrefs.o agent-monitor.o configAgent.o controller.o dnsAgent.o proxyAgent.o dnsinfo_create.o dnsinfo_flatfile.o dnsinfo_server.o network_state_information_priv.o network_information_server.o dns-configuration.o proxy-configuration.o set-hostname.o smb-configurationX.o IPMonitorControlServer.o libSystemConfiguration_client.o libSystemConfiguration_server.o ${EXTRA_CFLAGS} -lnetwork -framework SystemConfiguration -framework CoreFoundation -framework Foundation -framework Network -framework NetworkExtension
# ----------
$(CC) $(PF_INC) $(ARCH_FLAGS) -isysroot $(SYSROOT) -DTEST_DNS_ORDER ${TEST_INCLUDE} ${EXTRA_CFLAGS} -Wall -O0 -g -c -o $@ $^
test_dns_order: test_dns_order.o IPMonitorControlPrefs.o agent-monitor.o configAgent.o controller.o dnsAgent.o proxyAgent.o dnsinfo_create.o dnsinfo_flatfile.o dnsinfo_server.o network_state_information_priv.o network_information_server.o dns-configuration.o proxy-configuration.o set-hostname.o smb-configuration.o IPMonitorControlServer.o libSystemConfiguration_client.o libSystemConfiguration_server.o
- $(CC) $(PF_INC) $(ARCH_FLAGS) -isysroot $(SYSROOT) -Wall -O0 -g -o test_dns_order test_dns_order.o IPMonitorControlPrefs.o agent-monitor.o configAgent.o controller.o dnsAgent.o proxyAgent.o dnsinfo_create.o dnsinfo_flatfile.o dnsinfo_server.o network_state_information_priv.o network_information_server.o dns-configuration.o proxy-configuration.o set-hostname.o smb-configuration.o IPMonitorControlServer.o libSystemConfiguration_client.o libSystemConfiguration_server.o ${EXTRA_CFLAGS} -framework SystemConfiguration -framework CoreFoundation -framework Foundation -framework Network -framework NetworkExtension
+ $(CC) $(PF_INC) $(ARCH_FLAGS) -isysroot $(SYSROOT) -Wall -O0 -g -o test_dns_order test_dns_order.o IPMonitorControlPrefs.o agent-monitor.o configAgent.o controller.o dnsAgent.o proxyAgent.o dnsinfo_create.o dnsinfo_flatfile.o dnsinfo_server.o network_state_information_priv.o network_information_server.o dns-configuration.o proxy-configuration.o set-hostname.o smb-configuration.o IPMonitorControlServer.o libSystemConfiguration_client.o libSystemConfiguration_server.o ${EXTRA_CFLAGS} -lnetwork -framework SystemConfiguration -framework CoreFoundation -framework Foundation -framework Network -framework NetworkExtension
# ----------
$(CC) $(PF_INC) $(ARCH_FLAGS) -isysroot $(SYSROOT) -DTEST_IPV4_ROUTELIST ${TEST_INCLUDE} ${EXTRA_CFLAGS} -Wall -O0 -g -c -o $@ $^
test_ipv4_routelist: test_ipv4_routelist.o IPMonitorControlPrefs.o agent-monitor.o configAgent.o controller.o dnsAgent.o proxyAgent.o dnsinfo_create.o dnsinfo_flatfile.o dnsinfo_server.o network_state_information_priv.o network_information_server.o dns-configuration.o proxy-configuration.o set-hostname.o smb-configuration.o IPMonitorControlServer.o libSystemConfiguration_client.o libSystemConfiguration_server.o
- $(CC) $(PF_INC) $(ARCH_FLAGS) -isysroot $(SYSROOT) -Wall -O0 -g -o test_ipv4_routelist test_ipv4_routelist.o IPMonitorControlPrefs.o agent-monitor.o configAgent.o controller.o dnsAgent.o proxyAgent.o dnsinfo_create.o dnsinfo_flatfile.o dnsinfo_server.o network_state_information_priv.o network_information_server.o dns-configuration.o proxy-configuration.o set-hostname.o smb-configuration.o IPMonitorControlServer.o libSystemConfiguration_client.o libSystemConfiguration_server.o ${EXTRA_CFLAGS} -framework SystemConfiguration -framework CoreFoundation -framework Foundation -framework Network -framework NetworkExtension
+ $(CC) $(PF_INC) $(ARCH_FLAGS) -isysroot $(SYSROOT) -Wall -O0 -g -o test_ipv4_routelist test_ipv4_routelist.o IPMonitorControlPrefs.o agent-monitor.o configAgent.o controller.o dnsAgent.o proxyAgent.o dnsinfo_create.o dnsinfo_flatfile.o dnsinfo_server.o network_state_information_priv.o network_information_server.o dns-configuration.o proxy-configuration.o set-hostname.o smb-configuration.o IPMonitorControlServer.o libSystemConfiguration_client.o libSystemConfiguration_server.o ${EXTRA_CFLAGS} -lnetwork -framework SystemConfiguration -framework CoreFoundation -framework Foundation -framework Network -framework NetworkExtension
test_ipv4_routelist_reference.txt: test_ipv4_routelist
sh $(REFERENCE_OUTPUT) create test_ipv4_routelist test_ipv4_routelist_reference.txt routelist_output_filter.sh
$(CC) $(PF_INC) $(ARCH_FLAGS) -isysroot $(SYSROOT) -DTEST_IPV6_ROUTELIST ${TEST_INCLUDE} ${EXTRA_CFLAGS} -Wall -O0 -g -c -o $@ $^
test_ipv6_routelist: test_ipv6_routelist.o IPMonitorControlPrefs.o agent-monitor.o configAgent.o controller.o dnsAgent.o proxyAgent.o dnsinfo_create.o dnsinfo_flatfile.o dnsinfo_server.o network_state_information_priv.o network_information_server.o dns-configuration.o proxy-configuration.o set-hostname.o smb-configuration.o IPMonitorControlServer.o libSystemConfiguration_client.o libSystemConfiguration_server.o
- $(CC) $(PF_INC) $(ARCH_FLAGS) -isysroot $(SYSROOT) -Wall -O0 -g -o test_ipv6_routelist test_ipv6_routelist.o IPMonitorControlPrefs.o agent-monitor.o configAgent.o controller.o dnsAgent.o proxyAgent.o dnsinfo_create.o dnsinfo_flatfile.o dnsinfo_server.o network_state_information_priv.o network_information_server.o dns-configuration.o proxy-configuration.o set-hostname.o smb-configuration.o IPMonitorControlServer.o libSystemConfiguration_client.o libSystemConfiguration_server.o ${EXTRA_CFLAGS} -framework SystemConfiguration -framework CoreFoundation -framework Foundation -framework Network -framework NetworkExtension
+ $(CC) $(PF_INC) $(ARCH_FLAGS) -isysroot $(SYSROOT) -Wall -O0 -g -o test_ipv6_routelist test_ipv6_routelist.o IPMonitorControlPrefs.o agent-monitor.o configAgent.o controller.o dnsAgent.o proxyAgent.o dnsinfo_create.o dnsinfo_flatfile.o dnsinfo_server.o network_state_information_priv.o network_information_server.o dns-configuration.o proxy-configuration.o set-hostname.o smb-configuration.o IPMonitorControlServer.o libSystemConfiguration_client.o libSystemConfiguration_server.o ${EXTRA_CFLAGS} -lnetwork -framework SystemConfiguration -framework CoreFoundation -framework Foundation -framework Network -framework NetworkExtension
test_ipv6_routelist_reference.txt: test_ipv6_routelist
sh $(REFERENCE_OUTPUT) create test_ipv6_routelist test_ipv6_routelist_reference.txt routelist_output_filter.sh
$(CC) $(PF_INC) $(ARCH_FLAGS) -isysroot $(SYSROOT) -DTEST_IPMONITOR ${TEST_INCLUDE} ${EXTRA_CFLAGS} -Wall -O0 -g -c -o IPMonitor.o ip_plugin.c
IPMonitor: IPMonitor.o IPMonitorControlPrefs.o agent-monitor.o configAgent.o controller.o dnsAgent.o proxyAgent.o dnsinfo_create.o dnsinfo_flatfile.o dnsinfo_server.o network_state_information_priv.o network_information_server.o dns-configuration.o proxy-configuration.o set-hostname.o smb-configuration.o IPMonitorControlServer.o libSystemConfiguration_client.o libSystemConfiguration_server.o
- $(CC) $(PF_INC) $(ARCH_FLAGS) -isysroot $(SYSROOT) -Wall -O0 -g -o IPMonitor IPMonitor.o IPMonitorControlPrefs.o agent-monitor.o configAgent.o controller.o dnsAgent.o proxyAgent.o dnsinfo_create.o dnsinfo_flatfile.o dnsinfo_server.o network_state_information_priv.o network_information_server.o dns-configuration.o proxy-configuration.o set-hostname.o smb-configuration.o IPMonitorControlServer.o libSystemConfiguration_client.o libSystemConfiguration_server.o ${EXTRA_CFLAGS} -framework SystemConfiguration -framework CoreFoundation -framework Foundation -framework Network -framework NetworkExtension
+ $(CC) $(PF_INC) $(ARCH_FLAGS) -isysroot $(SYSROOT) -Wall -O0 -g -o IPMonitor IPMonitor.o IPMonitorControlPrefs.o agent-monitor.o configAgent.o controller.o dnsAgent.o proxyAgent.o dnsinfo_create.o dnsinfo_flatfile.o dnsinfo_server.o network_state_information_priv.o network_information_server.o dns-configuration.o proxy-configuration.o set-hostname.o smb-configuration.o IPMonitorControlServer.o libSystemConfiguration_client.o libSystemConfiguration_server.o ${EXTRA_CFLAGS} -lnetwork -framework SystemConfiguration -framework CoreFoundation -framework Foundation -framework Network -framework NetworkExtension
# ----------
/*
- * Copyright (c) 2015, 2016 Apple Inc. All rights reserved.
+ * Copyright (c) 2015-2017 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
__BEGIN_DECLS
-void process_AgentMonitor();
-void process_AgentMonitor_DNS();
-void process_AgentMonitor_Proxy();
+void process_AgentMonitor(void);
+void process_AgentMonitor_DNS(void);
+void process_AgentMonitor_Proxy(void);
const void * copy_proxy_information_for_agent_uuid(uuid_t uuid, uint64_t *length);
const void * copy_dns_information_for_agent_uuid(uuid_t uuid, uint64_t *length);
/*
- * Copyright (c) 2015, 2016 Apple Inc. All rights reserved.
+ * Copyright (c) 2015-2017 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#import "controller.h"
void
-process_AgentMonitor()
+process_AgentMonitor(void)
{
SC_log(LOG_DEBUG, "Triggering AgentMonitor");
@autoreleasepool {
}
void
-process_AgentMonitor_DNS()
+process_AgentMonitor_DNS(void)
{
SC_log(LOG_DEBUG, "Triggering AgentMonitor for DNS");
@autoreleasepool {
}
void
-process_AgentMonitor_Proxy()
+process_AgentMonitor_Proxy(void)
{
SC_log(LOG_DEBUG, "Triggering AgentMonitor for Proxy");
@autoreleasepool {
/*
- * Copyright (c) 2015, 2016 Apple Inc. All rights reserved.
+ * Copyright (c) 2015-2017 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
kAgentSubTypeGlobal,
};
-os_log_t __log_IPMonitor();
+os_log_t __log_IPMonitor(void);
/* Parameters */
#define kEntityName "EntityName"
/*
- * Copyright (c) 2004-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2004-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
/*
- * Copyright (c) 2000-2017 Apple Inc. All Rights Reserved.
+ * Copyright (c) 2000-2018 Apple Inc. All Rights Reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#include <netinet/icmp6.h>
#include <netinet6/in6_var.h>
#include <netinet6/nd6.h>
+#if __has_include(<si_compare.h>)
+#include <si_compare.h>
+#else // __has_include(<si_compare.h>)
#include <network/sa_compare.h>
+#endif // __has_include(<si_compare.h>)
#include <arpa/inet.h>
#include <sys/sysctl.h>
#include <limits.h>
typedef unsigned int IFIndex;
-static dispatch_queue_t __network_change_queue();
+static dispatch_queue_t __network_change_queue(void);
#pragma mark -
__private_extern__ os_log_t
-__log_IPMonitor()
+__log_IPMonitor(void)
{
static os_log_t log = NULL;
}
#endif /* !TARGET_OS_SIMULATOR */
+static boolean_t
+service_has_clat46_address(CFStringRef serviceID)
+{
+ CFDictionaryRef ip_dict;
+
+ ip_dict = service_dict_get(serviceID, kSCEntNetIPv4);
+ if (ip_dict != NULL) {
+ CFBooleanRef clat46 = NULL;
+ CFDictionaryRef ipv4;
+
+ ipv4 = ipdict_get_service(ip_dict);
+ if (isA_CFDictionary(ipv4) &&
+ CFDictionaryGetValueIfPresent(ipv4,
+ kSCPropNetIPv4CLAT46,
+ (const void **)&clat46) &&
+ isA_CFBoolean(clat46)) {
+ return CFBooleanGetValue(clat46);
+ }
+ }
+
+ return FALSE;
+}
+
#ifndef kSCPropNetHostname
#define kSCPropNetHostname CFSTR("Hostname")
#endif
#if !TARGET_OS_SIMULATOR
if (interface != NULL) {
if (changed) {
- // IPv6 configuration changed for this interface, poke NAT64
- my_CFSetAddValue_async(__network_change_queue(), &S_nat64_prefix_changes, interface);
+ CFBooleanRef needs_plat = NULL;
+
+ if ((state_dict != NULL) &&
+ CFDictionaryGetValueIfPresent(state_dict,
+ kSCPropNetIPv6PerformPLATDiscovery,
+ (const void **)&needs_plat) &&
+ isA_CFBoolean(needs_plat) &&
+ CFBooleanGetValue(needs_plat)) {
+ // perform PLAT discovery
+ my_CFSetAddValue_async(__network_change_queue(), &S_nat64_prefix_requests, interface);
+ } else {
+ // IPv6 configuration changed for this interface, poke NAT64
+ my_CFSetAddValue_async(__network_change_queue(), &S_nat64_prefix_changes, interface);
+ }
}
CFRelease(interface);
}
if (((proto == kProtocolFlagsIPv4) && (v4_n == 1)) ||
((proto == kProtocolFlagsIPv6) && (v6_n == 1))) {
/* if we now have the 1st server address of another protocol */
+#if __has_include(<si_compare.h>)
+ favor_v4 = (si_destination_compare_no_dependencies((struct sockaddr *)&v4_dns1,
+ (struct sockaddr *)&v6_dns1) >= 0);
+#else // __has_include(<si_compare.h>)
favor_v4 = (sa_dst_compare_no_dependencies((struct sockaddr *)&v4_dns1,
(struct sockaddr *)&v6_dns1) >= 0);
+#endif // __has_include(<si_compare.h>)
#ifdef TEST_DNS_ORDER
char v4_buf[INET_ADDRSTRLEN];
char v6_buf[INET6_ADDRSTRLEN];
* Check whether the given candidate requires demotion. A candidate
* might need to be demoted if its IPv4 and IPv6 services must be coupled
* but a higher ranked service has IPv4 or IPv6.
+ *
+ * The converse is also true: if the given candidate has lower rank than
+ * the other candidate and the other candidate is coupled, this candidate
+ * needs to be demoted.
*/
static Boolean
ElectionResultsCandidateNeedsDemotion(CandidateRef other_candidate,
{
Boolean ret = FALSE;
- if (other_candidate == NULL
- || !candidate->ip_is_coupled
- || RANK_ASSERTION_MASK(candidate->rank) == kRankAssertionNever) {
+ if (other_candidate == NULL) {
+ /* no other candidate */
+ goto done;
+ }
+ if (other_candidate->ineligible) {
+ /* other candidate can't become primary */
+ goto done;
+ }
+ if (RANK_ASSERTION_MASK(other_candidate->rank) == kRankAssertionNever) {
+ /* the other candidate can't become primary */
+ goto done;
+ }
+ if (!candidate->ip_is_coupled && !other_candidate->ip_is_coupled) {
+ /* neither candidate is coupled */
goto done;
}
if (CFEqual(other_candidate->if_name, candidate->if_name)) {
/* avoid creating a feedback loop */
goto done;
}
- if (RANK_ASSERTION_MASK(other_candidate->rank) == kRankAssertionNever) {
- /* the other candidate isn't eligible to become primary, ignore */
- goto done;
- }
if (candidate->rank < other_candidate->rank) {
/* we're higher ranked than the other candidate, ignore */
goto done;
}
- if (candidate->rank == other_candidate->rank
- && other_candidate->ip_is_coupled) {
- /* same rank as another service that is coupled, ignore */
+ if (candidate->ip_is_coupled) {
+ if (other_candidate->ip_is_coupled
+ && candidate->rank == other_candidate->rank) {
+ /* same rank as another service that is coupled, ignore */
+ goto done;
+ }
+ }
+ else if (other_candidate->ip_is_coupled) { /* must be true */
+ if (candidate->rank == other_candidate->rank) {
+ /* other candidate will be demoted, so we don't need to */
+ goto done;
+ }
+ /* we're lower rank and need to be demoted */
+ }
+ else { /* can't happen, we already tested for this above */
+ /* neither candidate is coupled */
goto done;
}
ret = TRUE;
if (service_dict_get(candidate->serviceID, kSCEntNetDNS) != NULL) {
flags |= NWI_IFSTATE_FLAGS_HAS_DNS;
}
+ if ((af == AF_INET) && service_has_clat46_address(candidate->serviceID)) {
+ flags |= NWI_IFSTATE_FLAGS_HAS_CLAT46;
+ }
CFStringGetCString(candidate->if_name, ifname, sizeof(ifname),
kCFStringEncodingASCII);
if ((S_IPMonitor_debug & kDebugFlag2) != 0) {
scan)) {
/* demote the service */
my_log(LOG_NOTICE,
- "IPv%c over %@ demoted: not primary for IPv%c",
- ipvx_char(af), scan->if_name, ipvx_other_char(af));
+ "IPv%c over %@ (rank 0x%x) demoted: "
+ "primary IPv%c %@ (rank 0x%x)",
+ ipvx_char(af), scan->if_name, scan->rank,
+ ipvx_other_char(af), other_candidate->if_name,
+ other_candidate->rank);
deferred[deferred_count++] = scan;
skip = TRUE;
}
#endif // !my_log
os_log_t
-__log_IPMonitor();
+__log_IPMonitor(void);
boolean_t
cfstring_to_ip(CFStringRef str, struct in_addr * ip_p);
/*
- * Copyright (c) 2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2017, 2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <sys/sockio.h>
+#if __has_include(<nw/private.h>)
+#include <nw/private.h>
+#else // __has_include(<nw/private.h>)
#include <network/nat64.h>
+#endif // __has_include(<nw/private.h>)
static CFMutableSetRef nat64_prefix_requests = NULL;
}
-static __inline__ void
-_nat64_prefix_request_complete(const char *if_name,
- int32_t num_prefixes,
- nw_nat64_prefix_t *prefixes)
+static Boolean
+_nat64_prefix_set(const char *if_name,
+ int32_t num_prefixes,
+ nw_nat64_prefix_t *prefixes)
{
struct if_nat64req req;
int ret;
int s;
- SC_log(LOG_DEBUG, "%s: _nat64_prefix_request_complete", if_name);
+ SC_log(LOG_DEBUG, "%s: _nat64_prefix_set", if_name);
// pass NAT64 prefixes to the kernel
bzero(&req, sizeof(req));
s = socket(AF_INET, SOCK_DGRAM, 0);
if (s == -1) {
SC_log(LOG_ERR, "socket() failed: %s", strerror(errno));
- return;
+ return (FALSE);
}
ret = ioctl(s, SIOCSIFNAT64PREFIX, &req);
close(s);
if ((errno != ENOENT) || (num_prefixes != 0)) {
SC_log(LOG_ERR, "%s: ioctl(SIOCSIFNAT64PREFIX) failed: %s", if_name, strerror(errno));
}
- return;
+ return (FALSE);
}
SC_log(LOG_INFO, "%s: nat64 prefix%s updated", if_name, (num_prefixes != 1) ? "es" : "");
+ return (TRUE);
+}
+
+
+static void
+_nat64_prefix_post(CFStringRef interface,
+ int32_t num_prefixes,
+ nw_nat64_prefix_t *prefixes,
+ CFAbsoluteTime start_time)
+{
+ CFStringRef key;
+
+ key = SCDynamicStoreKeyCreateNetworkInterfaceEntity(NULL,
+ kSCDynamicStoreDomainState,
+ interface,
+ kSCEntNetNAT64);
+ if (num_prefixes >= 0) {
+ CFDateRef date;
+ CFMutableDictionaryRef plat_dict;
+
+ plat_dict = CFDictionaryCreateMutable(NULL,
+ 0,
+ &kCFTypeDictionaryKeyCallBacks,
+ &kCFTypeDictionaryValueCallBacks);
+ /* prefixes (if available) */
+ if (num_prefixes > 0) {
+ CFMutableArrayRef prefix_array;
+
+ prefix_array = CFArrayCreateMutable(NULL, 0, &kCFTypeArrayCallBacks);
+ for (int32_t i = 0; i < num_prefixes; i++) {
+ char prefix_str[NW_NAT64_PREFIX_STR_LENGTH] = {0};
+ CFStringRef str;
+
+ nw_nat64_write_prefix_to_string(&prefixes[i], prefix_str, sizeof(prefix_str));
+ str = CFStringCreateWithCString(NULL, prefix_str, kCFStringEncodingASCII);
+ CFArrayAppendValue(prefix_array, str);
+ CFRelease(str);
+ }
+ CFDictionarySetValue(plat_dict, kSCPropNetNAT64PrefixList, prefix_array);
+ CFRelease(prefix_array);
+ }
+ /* start time */
+ date = CFDateCreate(NULL, start_time);
+ CFDictionarySetValue(plat_dict,
+ kSCPropNetNAT64PLATDiscoveryStartTime,
+ date);
+ CFRelease(date);
+
+ /* completion time */
+ date = CFDateCreate(NULL, CFAbsoluteTimeGetCurrent());
+ CFDictionarySetValue(plat_dict,
+ kSCPropNetNAT64PLATDiscoveryCompletionTime,
+ date);
+ CFRelease(date);
+
+ (void)SCDynamicStoreSetValue(NULL, key, plat_dict);
+ SC_log(LOG_INFO, "%@: PLAT discovery complete %@",
+ interface, plat_dict);
+ CFRelease(plat_dict);
+ } else {
+ (void)SCDynamicStoreRemoveValue(NULL, key);
+ }
+ CFRelease(key);
return;
}
char *if_name;
CFStringRef interface = (CFStringRef)value;
bool ok;
+ CFAbsoluteTime start_time;
SC_log(LOG_DEBUG, "%@: _nat64_prefix_request_start", interface);
CFSetAddValue(nat64_prefix_requests, interface);
CFRetain(interface);
+ start_time = CFAbsoluteTimeGetCurrent();
ok = nw_nat64_copy_prefixes_async(&if_index,
nat64_dispatch_queue(),
^(int32_t num_prefixes, nw_nat64_prefix_t *prefixes) {
if (num_prefixes >= 0) {
// update interface
- _nat64_prefix_request_complete(if_name, num_prefixes, prefixes);
+ if (!_nat64_prefix_set(if_name, num_prefixes, prefixes)) {
+ num_prefixes = -1;
+ }
} else {
SC_log(LOG_ERR,
"%s: nw_nat64_copy_prefixes_async() num_prefixes(%d) < 0",
CFSetRemoveValue(nat64_prefix_requests, interface);
}
+ _nat64_prefix_post(interface, num_prefixes, prefixes, start_time);
+
// cleanup
CFRelease(interface);
CFAllocatorDeallocate(NULL, if_name);
/*
- * Copyright (c) 2001-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2001-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
* to give persistent interface names
*/
+#include <TargetConditionals.h>
#include <ctype.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
+#if TARGET_OS_IPHONE
+#include <lockdown.h>
+#include <notify.h>
+#endif // TARGET_OS_IPHONE
#include <sys/ioctl.h>
#include <sys/stat.h>
#include <sys/sysctl.h>
#include <SystemConfiguration/SCDPlugin.h>
#include <SystemConfiguration/SCPrivate.h>
#include <SystemConfiguration/SCValidation.h>
+#include "SCNetworkConfigurationInternal.h"
#include "plugin_shared.h"
#if !TARGET_OS_IPHONE
#include "InterfaceNamerControlPrefs.h"
};
#endif // !USE_REGISTRY_ENTRY_ID
+#define kSCNetworkInterfaceActive "Active"
#define kSCNetworkInterfaceInfo "SCNetworkInterfaceInfo"
#define kSCNetworkInterfaceType "SCNetworkInterfaceType"
-#define kSCNetworkInterfaceActive "Active"
+#define kSCNetworkInterfaceMatchingMACs "MatchingMACs"
#define MY_PLUGIN_NAME "InterfaceNamer"
#define MY_PLUGIN_ID CFSTR("com.apple.SystemConfiguration." MY_PLUGIN_NAME)
*/
static io_iterator_t S_iter = MACH_PORT_NULL;
+#if !TARGET_OS_IPHONE
+/*
+ * S_locked
+ * An array of CFData(WatchedInfo) objects representing those
+ * interfaces that have been connected to the system while
+ * locked.
+ */
+static CFMutableArrayRef S_locked = NULL;
+#endif // !TARGET_OS_IPHONE
+
/*
* S_notify
* notification object for receiving IOKit notifications of
*/
static CFMutableDictionaryRef S_state = NULL;
+#if TARGET_OS_IPHONE
+/*
+ * S_trustedHostAttached
+ *
+ * Note: this global must only be updated on trustRequired_queue()
+ */
+static Boolean S_trustedHostAttached = FALSE;
+
+/*
+ * S_trustRequired
+ * An array of CFData(WatchedInfo) objects representing those
+ * interfaces that require [lockdownd] trust.
+ */
+static CFMutableArrayRef S_trustRequired = NULL;
+#endif // TARGET_OS_IPHONE
+
/*
* S_timer
* CFRunLoopTimer tracking how long we are willing to wait
*/
__private_extern__
os_log_t
-__log_InterfaceNamer()
+__log_InterfaceNamer(void)
{
static os_log_t log = NULL;
return;
}
- prefs = SCPreferencesCreate(NULL, MY_PLUGIN_ID, NETWORK_INTERFACES_PREFS);
+ prefs = SCPreferencesCreate(NULL, CFSTR(MY_PLUGIN_NAME ":writeInterfaceList"), NETWORK_INTERFACES_PREFS);
if (prefs == NULL) {
SC_log(LOG_NOTICE, "SCPreferencesCreate() failed: %s", SCErrorString(SCError()));
return;
CFMutableArrayRef plist = NULL;
SCPreferencesRef prefs = NULL;
- prefs = SCPreferencesCreate(NULL, MY_PLUGIN_ID, NETWORK_INTERFACES_PREFS);
+ prefs = SCPreferencesCreate(NULL, CFSTR(MY_PLUGIN_NAME ":readInterfaceList"), NETWORK_INTERFACES_PREFS);
if (prefs == NULL) {
SC_log(LOG_NOTICE, "SCPreferencesCreate() failed: %s", SCErrorString(SCError()));
return (NULL);
{
CFStringRef key;
- key = SCDynamicStoreKeyCreate(NULL, CFSTR("%@" MY_PLUGIN_NAME),
- kSCDynamicStoreDomainPlugin);
+ key = SCDynamicStoreKeyCreate(NULL, CFSTR("%@" MY_PLUGIN_NAME), kSCDynamicStoreDomainPlugin);
(void)SCDynamicStoreSetValue(NULL, key, S_state);
CFRelease(key);
return;
}
-#if !TARGET_OS_EMBEDDED
+#if TARGET_OS_OSX
static void
updateBTPANInformation(const void *value, void *context)
return;
}
-#endif // !TARGET_OS_EMBEDDED
+#endif // TARGET_OS_OSX
static CFDictionaryRef
-createInterfaceDict(SCNetworkInterfaceRef interface)
+createInterfaceDict(SCNetworkInterfaceRef interface, CFArrayRef matchingMACs)
{
CFMutableDictionaryRef new_if;
CFTypeRef val;
CFDictionarySetValue(new_if, CFSTR(kSCNetworkInterfaceActive), kCFBooleanTrue);
+ if (matchingMACs != NULL) {
+ CFDictionarySetValue(new_if, CFSTR(kSCNetworkInterfaceMatchingMACs), matchingMACs);
+ }
+
return new_if;
}
io_registry_entry_t entry = MACH_PORT_NULL;
- io_iterator_t iterator = MACH_PORT_NULL;
- kern_return_t kr;
- mach_port_t masterPort = MACH_PORT_NULL;
+ io_iterator_t iterator = MACH_PORT_NULL;
+ kern_return_t kr;
+ mach_port_t masterPort = MACH_PORT_NULL;
kr = IOMasterPort(bootstrap_port, &masterPort);
if (kr != KERN_SUCCESS) {
}
static void
-insertInterface(CFMutableArrayRef db_list, SCNetworkInterfaceRef interface)
+insertInterface(CFMutableArrayRef db_list, SCNetworkInterfaceRef interface, CFDictionaryRef db_dict_match)
{
CFIndex i;
CFDictionaryRef if_dict;
CFStringRef if_name;
CFNumberRef if_type;
CFNumberRef if_unit;
- CFIndex n = CFArrayGetCount(db_list);
+ CFArrayRef matchingMACs = NULL;
+ CFIndex n = CFArrayGetCount(db_list);
CFComparisonResult res;
if_name = SCNetworkInterfaceGetBSDName(interface);
addTimestamp(S_state, if_name);
}
- if_dict = createInterfaceDict(interface);
+ if (!_SCNetworkInterfaceIsBuiltin(interface) && (db_dict_match != NULL)) {
+ CFDataRef addr_cur;
+ CFDataRef addr_old;
+
+ matchingMACs = CFDictionaryGetValue(db_dict_match, CFSTR(kSCNetworkInterfaceMatchingMACs));
+ if (matchingMACs != NULL) {
+ CFRetain(matchingMACs);
+ }
+
+ addr_old = CFDictionaryGetValue(db_dict_match, CFSTR(kIOMACAddress));
+ addr_cur = _SCNetworkInterfaceGetHardwareAddress(interface);
+ if ((addr_old != NULL) && (addr_cur != NULL) && !CFEqual(addr_old, addr_cur)) {
+ CFMutableArrayRef matching_new;
+
+ // if MAC address changed, add previous MAC to history
+ if (matchingMACs != NULL) {
+ matching_new = CFArrayCreateMutableCopy(NULL, 0, matchingMACs);
+ CFRelease(matchingMACs);
+
+ // remove duplicates of the now current MAC from history
+ i = CFArrayGetFirstIndexOfValue(matching_new, CFRangeMake(0, CFArrayGetCount(matching_new)), addr_cur);
+ if (i != kCFNotFound) {
+ CFArrayRemoveValueAtIndex(matching_new, i);
+ }
+
+ // remove duplicates of the previous MAC from history before re-inserting
+ i = CFArrayGetFirstIndexOfValue(matching_new, CFRangeMake(0, CFArrayGetCount(matching_new)), addr_old);
+ if (i != kCFNotFound) {
+ CFArrayRemoveValueAtIndex(matching_new, i);
+ }
+ } else {
+ matching_new = CFArrayCreateMutable(NULL, 0, &kCFTypeArrayCallBacks);
+ }
+ CFArrayInsertValueAtIndex(matching_new, 0, addr_old);
+
+ // limit history size
+#define MATCHING_HISTORY_MAXLEN 32
+ for (i = CFArrayGetCount(matching_new); i > MATCHING_HISTORY_MAXLEN; i--) {
+ CFArrayRemoveValueAtIndex(matching_new, i - 1);
+ }
+
+ matchingMACs = matching_new;
+ }
+ }
+
+ if_dict = createInterfaceDict(interface, matchingMACs);
+ if (matchingMACs != NULL) {
+ CFRelease(matchingMACs);
+ }
+
if_type = _SCNetworkInterfaceGetIOInterfaceType(interface);
if_unit = _SCNetworkInterfaceGetIOInterfaceUnit(interface);
if ((if_type == NULL) || (if_unit == NULL)) {
CFArrayAppendValue(S_dblist, if_dict);
-#if !TARGET_OS_EMBEDDED
+#if TARGET_OS_OSX
updateBTPANInformation(if_dict, NULL);
-#endif // !TARGET_OS_EMBEDDED
+#endif // TARGET_OS_OSX
CFRelease(if_dict);
return;
static void
replaceInterface(SCNetworkInterfaceRef interface)
{
- int n = 0;
- CFIndex where;
+ CFDictionaryRef db_dict;
+ CFDictionaryRef db_dict_match = NULL;
+ int n = 0;
+ CFIndex where;
if (S_dblist == NULL) {
S_dblist = CFArrayCreateMutable(NULL, 0,
&kCFTypeArrayCallBacks);
}
+
// remove any dict that has our type/addr
- while (lookupInterfaceByAddress(S_dblist, interface, &where) != NULL) {
+ while (TRUE) {
+ db_dict = lookupInterfaceByAddress(S_dblist, interface, &where);
+ if (db_dict == NULL) {
+ break;
+ }
+ if (db_dict_match == NULL) {
+ db_dict_match = CFRetain(db_dict);
+ }
CFArrayRemoveValueAtIndex(S_dblist, where);
n++;
}
+
// remove any dict that has the same type/unit
- while (lookupInterfaceByUnit(S_dblist, interface, &where) != NULL) {
+ while (TRUE) {
+ db_dict = lookupInterfaceByUnit(S_dblist, interface, &where);
+ if (db_dict == NULL) {
+ break;
+ }
+ if (db_dict_match == NULL) {
+ db_dict_match = CFRetain(db_dict);
+ }
CFArrayRemoveValueAtIndex(S_dblist, where);
n++;
}
- insertInterface(S_dblist, interface);
+
+ insertInterface(S_dblist, interface, db_dict_match);
+ if (db_dict_match != NULL) {
+ CFRelease(db_dict_match);
+ }
if (n > 1) {
SC_log(LOG_ERR, "Multiple interfaces updated (n = %d, %@)", n, interface);
(unit != NULL) ? "Unit: " : "",
(unit != NULL) ? (CFTypeRef)unit : (CFTypeRef)CFSTR(""),
(unit != NULL) ? ", " : "",
- addr);
+ (addr != NULL) ? addr : CFSTR("?"));
}
static Boolean
#pragma unused(service)
#pragma unused(messageArgument)
switch (messageType) {
- case kIOMessageServiceIsTerminated : { // if [locked] interface yanked
+ case kIOMessageServiceIsTerminated : { // if [watched] interface yanked
CFDataRef watched = (CFDataRef)refCon;
WatchedInfo *watchedInfo = (WatchedInfo *)(void *)CFDataGetBytePtr(watched);
return NULL;
}
- // create [locked] interface watcher
+ // create [locked/trusted] interface watcher
watched = CFDataCreateMutable(NULL, sizeof(WatchedInfo));
CFDataSetLength(watched, sizeof(WatchedInfo));
watchedInfo = (WatchedInfo *)(void *)CFDataGetBytePtr(watched);
#if !TARGET_OS_IPHONE
+static void
+shareLocked(void)
+{
+ CFIndex n;
+
+ n = (S_locked != NULL) ? CFArrayGetCount(S_locked) : 0;
+ if (n > 0) {
+ CFMutableArrayRef locked;
+
+ locked = CFArrayCreateMutable(NULL, 0, &kCFTypeArrayCallBacks);
+
+ for (CFIndex i = 0; i < n; i++) {
+ CFStringRef addr;
+ CFStringRef name;
+ CFStringRef path;
+ CFStringRef str;
+ CFDataRef watched = CFArrayGetValueAtIndex(S_locked, i);
+ WatchedInfo *watchedInfo = (WatchedInfo *)(void *)CFDataGetBytePtr(watched);
+
+ name = SCNetworkInterfaceGetLocalizedDisplayName(watchedInfo->interface);
+ addr = SCNetworkInterfaceGetHardwareAddressString(watchedInfo->interface);
+ path = _SCNetworkInterfaceGetIOPath(watchedInfo->interface);
+ str = CFStringCreateWithFormat(NULL, NULL, CFSTR("%@: %@: %@"),
+ (name != NULL) ? name : CFSTR("?"),
+ (addr != NULL) ? addr : CFSTR("?"),
+ path);
+ CFArrayAppendValue(locked, str);
+ CFRelease(str);
+ }
+
+ CFDictionarySetValue(S_state, kInterfaceNamerKey_LockedInterfaces, locked);
+ CFRelease(locked);
+ } else {
+ CFDictionaryRemoveValue(S_state, kInterfaceNamerKey_LockedInterfaces);
+ }
+
+ updateStore();
+
+ return;
+}
+
static boolean_t
blockNewInterfaces()
{
return !allow;
}
-
static boolean_t
isConsoleLocked()
{
return locked;
}
+
+//#define ENABLE_LOCKED_CONSOLE_INTERFACE_NOTIFICATIONS
+#ifdef ENABLE_LOCKED_CONSOLE_INTERFACE_NOTIFICATIONS
+
+static CFUserNotificationRef userNotification;
+static CFRunLoopSourceRef userRls;
+
+static void
+lockedNotification_remove(void)
+{
+ if (userRls != NULL) {
+ CFRunLoopSourceInvalidate(userRls);
+ userRls = NULL;
+ }
+
+ if (userNotification != NULL) {
+ SInt32 status;
+
+ status = CFUserNotificationCancel(userNotification);
+ if (status != 0) {
+ SC_log(LOG_ERR,
+ "CFUserNotificationCancel() failed, status=%d",
+ (int)status);
+ }
+ CFRelease(userNotification);
+ userNotification = NULL;
+ }
+
+ return;
+}
+
+#define MY_ICON_PATH "/System/Library/PreferencePanes/Network.prefPane/Contents/Resources/Network.icns"
+
+static void
+lockedNotification_reply(CFUserNotificationRef userNotification, CFOptionFlags response_flags)
+{
+#pragma unused(userNotification)
+
+ os_activity_t activity;
+ CFIndex n;
+
+ activity = os_activity_create("process locked interface notification",
+ OS_ACTIVITY_CURRENT,
+ OS_ACTIVITY_FLAG_DEFAULT);
+ os_activity_scope(activity);
+
+ n = (S_locked != NULL) ? CFArrayGetCount(S_locked) : 0;
+ for (CFIndex i = 0; i < n; i++) {
+ CFDataRef watched = CFArrayGetValueAtIndex(S_locked, i);
+ WatchedInfo *watchedInfo = (WatchedInfo *)(void *)CFDataGetBytePtr(watched);
+
+ // process user response
+ switch (response_flags & 0x3) {
+ case kCFUserNotificationDefaultResponse: {
+ // if OK'd, [re-]process new interfaces
+ if (i == 0) {
+ SC_log(LOG_INFO, "Reprocessing %ld [locked] interface%s", n, n == 1 ? "" : "s");
+
+ if (S_iflist == NULL) {
+ S_iflist = CFArrayCreateMutable(NULL, 0, &kCFTypeArrayCallBacks);
+ }
+ }
+
+ // add the interface to those newly discovered
+ CFArrayAppendValue(S_iflist, watchedInfo->interface);
+ break;
+ }
+ default: {
+ // if cancelled, ignore [remaining] new interfaces
+ SC_log(LOG_INFO, "[locked] interface ignored");
+ SC_log(LOG_INFO, " path = %@", _SCNetworkInterfaceGetIOPath(watchedInfo->interface));
+ break;
+ }
+ }
+
+ // stop watching
+ watcherRelease(watched);
+ }
+
+ if (S_locked != NULL) {
+ CFRelease(S_locked);
+ S_locked = NULL;
+ }
+
+ lockedNotification_remove();
+
+ if (S_iflist != NULL) {
+ updateInterfaces();
+ }
+
+ os_release(activity);
+
+ return;
+}
+
+static void
+lockedNotification_add(void)
+{
+ CFBundleRef bundle;
+ CFMutableDictionaryRef dict;
+ SInt32 error = 0;
+ CFMutableArrayRef message;
+ CFIndex n;
+ CFURLRef url = NULL;
+
+ n = (S_locked != NULL) ? CFArrayGetCount(S_locked) : 0;
+ if (n == 0) {
+ // no locked interfaces, no notification needed
+ return;
+ }
+
+ dict = CFDictionaryCreateMutable(NULL,
+ 0,
+ &kCFTypeDictionaryKeyCallBacks,
+ &kCFTypeDictionaryValueCallBacks);
+
+ // set localization URL
+ bundle = _SC_CFBundleGet();
+ if (bundle != NULL) {
+ url = CFBundleCopyBundleURL(bundle);
+ }
+ if (url != NULL) {
+ // set URL
+ CFDictionarySetValue(dict, kCFUserNotificationLocalizationURLKey, url);
+ CFRelease(url);
+ } else {
+ SC_log(LOG_ERR, "can't find bundle");
+ goto done;
+ }
+
+ // set icon URL
+ url = CFURLCreateFromFileSystemRepresentation(NULL,
+ (const UInt8 *)MY_ICON_PATH,
+ sizeof(MY_ICON_PATH) - 1,
+ FALSE);
+ if (url != NULL) {
+ CFDictionarySetValue(dict, kCFUserNotificationIconURLKey, url);
+ CFRelease(url);
+ }
+
+ // header
+ CFDictionarySetValue(dict,
+ kCFUserNotificationAlertHeaderKey,
+ (n == 1) ? CFSTR("LOCKED_SINGLE_INTERFACE_HEADER")
+ : CFSTR("LOCKED_MULTIPLE_INTERFACES_HEADER"));
+
+ // message
+ message = CFArrayCreateMutable(NULL, 0, &kCFTypeArrayCallBacks);
+ CFArrayAppendValue(message,
+ (n == 1) ? CFSTR("LOCKED_SINGLE_INTERFACE_MESSAGE")
+ : CFSTR("LOCKED_MULTIPLE_INTERFACES_MESSAGE"));
+ for (CFIndex i = 0; i < n; i++) {
+ CFStringRef name;
+ CFStringRef str;
+ CFDataRef watched = CFArrayGetValueAtIndex(S_locked, i);
+ WatchedInfo *watchedInfo = (WatchedInfo *)(void *)CFDataGetBytePtr(watched);
+
+ name = SCNetworkInterfaceGetLocalizedDisplayName(watchedInfo->interface);
+ str = CFStringCreateWithFormat(NULL, NULL, CFSTR("\r\t%@"), name);
+ CFArrayAppendValue(message, str);
+ CFRelease(str);
+ }
+ CFDictionarySetValue(dict, kCFUserNotificationAlertMessageKey, message);
+ CFRelease(message);
+
+ // button titles
+ CFDictionarySetValue(dict,
+ kCFUserNotificationDefaultButtonTitleKey,
+ CFSTR("LOCKED_INTERFACES_IGNORE"));
+ CFDictionarySetValue(dict,
+ kCFUserNotificationAlternateButtonTitleKey,
+ (n == 1) ? CFSTR("LOCKED_SINGLE_INTERFACE_ADD")
+ : CFSTR("LOCKED_MULTIPLE_INTERFACES_ADD"));
+
+ // create and post notification
+ userNotification = CFUserNotificationCreate(NULL,
+ 0,
+ kCFUserNotificationNoteAlertLevel,
+ &error,
+ dict);
+ if (userNotification == NULL) {
+ SC_log(LOG_ERR, "CFUserNotificationCreate() failed: %d", (int)error);
+ goto done;
+ }
+
+ // establish callback
+ userRls = CFUserNotificationCreateRunLoopSource(NULL,
+ userNotification,
+ lockedNotification_reply,
+ 0);
+ if (userRls == NULL) {
+ SC_log(LOG_ERR, "CFUserNotificationCreateRunLoopSource() failed");
+ CFRelease(userNotification);
+ userNotification = NULL;
+ goto done;
+ }
+ CFRunLoopAddSource(CFRunLoopGetCurrent(), userRls, kCFRunLoopDefaultMode);
+
+ done :
+
+ if (dict != NULL) CFRelease(dict);
+ return;
+}
+
+static void
+lockedNotification_update(void)
+{
+ // if present, remove current notification
+ lockedNotification_remove();
+
+ // post notification (if needed)
+ lockedNotification_add();
+
+ return;
+}
+
+#endif // ENABLE_LOCKED_CONSOLE_INTERFACE_NOTIFICATIONS
+
+static void
+lockedInterfaceUpdated(CFDataRef watched, natural_t messageType, void *messageArgument)
+{
+#pragma unused(messageArgument)
+ Boolean updated = FALSE;
+ WatchedInfo *watchedInfo = (WatchedInfo *)(void *)CFDataGetBytePtr(watched);
+
+ switch (messageType) {
+ case kIOMessageServiceIsTerminated : { // if [locked] interface yanked
+ SC_log(LOG_INFO, "[locked] interface removed");
+ SC_log(LOG_INFO, " path = %@", _SCNetworkInterfaceGetIOPath(watchedInfo->interface));
+
+ if (S_locked != NULL) {
+ CFIndex i;
+ CFIndex n = CFArrayGetCount(S_locked);
+
+ i = CFArrayGetFirstIndexOfValue(S_locked, CFRangeMake(0, n), watched);
+ if (i != kCFNotFound) {
+ CFArrayRemoveValueAtIndex(S_locked, i);
+ if (CFArrayGetCount(S_locked) == 0) {
+ CFRelease(S_locked);
+ S_locked = NULL;
+ }
+ updated = TRUE;
+ }
+ }
+
+ break;
+ }
+
+ default :
+ return;
+ }
+
+ if (updated) {
+#ifdef ENABLE_LOCKED_CONSOLE_INTERFACE_NOTIFICATIONS
+ // update user notification after interface removed
+ lockedNotification_update();
+#endif // ENABLE_LOCKED_CONSOLE_INTERFACE_NOTIFICATIONS
+
+ // post info about interfaces not added because the console is locked
+ shareLocked();
+ }
+
+ return;
+}
+
+static void
+watchLockedInterface(SCNetworkInterfaceRef interface)
+{
+ Boolean updated = FALSE;
+ CFDataRef watched;
+
+ watched = watcherCreate(interface, lockedInterfaceUpdated);
+ if (watched != NULL) {
+ SC_log(LOG_INFO, "watching [locked] interface");
+ SC_log(LOG_INFO, " path = %@", _SCNetworkInterfaceGetIOPath(interface));
+
+ if (S_locked == NULL) {
+ S_locked = CFArrayCreateMutable(NULL, 0, &kCFTypeArrayCallBacks);
+ }
+ CFArrayAppendValue(S_locked, watched);
+ updated = TRUE;
+ }
+
+ if (updated) {
+ // post info about interfaces not added because the console is locked
+ shareLocked();
+
+#ifdef ENABLE_LOCKED_CONSOLE_INTERFACE_NOTIFICATIONS
+ // post/update user notification with new interface
+ lockedNotification_update();
+#endif // ENABLE_LOCKED_CONSOLE_INTERFACE_NOTIFICATIONS
+ }
+
+ return;
+}
#endif // !TARGET_OS_IPHONE
+#pragma mark -
+#pragma mark Trust required support [iOS]
+
+
+#if TARGET_OS_IPHONE
+static void
+shareExcluded()
+{
+ CFMutableArrayRef excluded = NULL;
+ CFIndex n;
+
+ n = (S_trustRequired != NULL) ? CFArrayGetCount(S_trustRequired) : 0;
+ if ((n > 0) && !S_trustedHostAttached) {
+ // if we have interfaces that require not [yet] granted "trust".
+
+ excluded = CFArrayCreateMutable(NULL, 0, &kCFTypeArrayCallBacks);
+
+ for (CFIndex i = 0; i < n; i++) {
+ CFStringRef bsdName;
+ CFDataRef watched = CFArrayGetValueAtIndex(S_trustRequired, i);
+ WatchedInfo *watchedInfo = (WatchedInfo *)(void *)CFDataGetBytePtr(watched);
+
+ bsdName = SCNetworkInterfaceGetBSDName(watchedInfo->interface);
+ if (bsdName == NULL) {
+ SC_log(LOG_NOTICE, "[trust required] excluded interface w/no BSD name");
+ SC_log(LOG_NOTICE, " interface = %@", watchedInfo->interface);
+ continue;
+ }
+ CFArrayAppendValue(excluded, bsdName);
+ }
+ }
+
+ if (excluded != NULL) {
+ CFDictionarySetValue(S_state, kInterfaceNamerKey_ExcludedInterfaces, excluded);
+ CFRelease(excluded);
+ } else {
+ CFDictionaryRemoveValue(S_state, kInterfaceNamerKey_ExcludedInterfaces);
+ }
+
+ updateStore();
+
+ return;
+}
+
+static dispatch_queue_t
+trustRequired_queue()
+{
+ static dispatch_once_t once;
+ static dispatch_queue_t q;
+
+ dispatch_once(&once, ^{
+ q = dispatch_queue_create("Trust Required queue", NULL);
+ });
+
+ return q;
+
+}
+
+// runs on "Trust Required" dispatch queue
+static void
+trustRequiredNotification_update(CFRunLoopRef rl, CFStringRef reason)
+{
+ Boolean curTrusted = FALSE;
+ CFBooleanRef trusted;
+
+ trusted = lockdown_copy_trustedHostAttached();
+ if (trusted != NULL) {
+ curTrusted = isA_CFBoolean(trusted) && CFBooleanGetValue(trusted);
+ CFRelease(trusted);
+ }
+
+ SC_log(LOG_INFO, "%@, trusted = %s", reason, curTrusted ? "Yes" : "No");
+
+ if (S_trustedHostAttached != curTrusted) {
+ S_trustedHostAttached = curTrusted;
+ CFRunLoopPerformBlock(rl, kCFRunLoopDefaultMode, ^{
+ shareExcluded();
+ });
+ CFRunLoopWakeUp(rl);
+ }
+
+ return;
+}
+
+static void
+trustRequiredInterfaceUpdated(CFDataRef watched, natural_t messageType, void *messageArgument)
+{
+#pragma unused(messageArgument)
+ Boolean updated = FALSE;
+ WatchedInfo *watchedInfo = (WatchedInfo *)(void *)CFDataGetBytePtr(watched);
+
+ switch (messageType) {
+ case kIOMessageServiceIsTerminated : { // if [locked] interface yanked
+ SC_log(LOG_INFO, "[trust required] interface removed");
+ SC_log(LOG_INFO, " path = %@", _SCNetworkInterfaceGetIOPath(watchedInfo->interface));
+
+ if (S_trustRequired != NULL) {
+ CFIndex i;
+ CFIndex n = CFArrayGetCount(S_trustRequired);
+
+ i = CFArrayGetFirstIndexOfValue(S_trustRequired, CFRangeMake(0, n), watched);
+ if (i != kCFNotFound) {
+ CFArrayRemoveValueAtIndex(S_trustRequired, i);
+ if (CFArrayGetCount(S_trustRequired) == 0) {
+ CFRelease(S_trustRequired);
+ S_trustRequired = NULL;
+ }
+ updated = TRUE;
+ }
+ }
+
+ break;
+ }
+
+ default :
+ return;
+ }
+
+ if (updated) {
+ CFRunLoopRef rl = CFRunLoopGetCurrent();
+
+ CFRetain(rl);
+ dispatch_async(trustRequired_queue(), ^{
+ trustRequiredNotification_update(rl, CFSTR("TrustRequired interface removed"));
+ CFRelease(rl);
+ });
+ }
+
+ return;
+}
+
+static void
+watchTrustedStatus(CFStringRef notification, CFStringRef reason)
+{
+ const char * key;
+ int notify_token = -1;
+ uint32_t ret;
+ CFRunLoopRef rl = CFRunLoopGetCurrent();
+
+ key = CFStringGetCStringPtr(notification, kCFStringEncodingUTF8);
+ assert(key != NULL);
+
+ CFRetain(rl);
+ CFRetain(reason);
+ ret = notify_register_dispatch(key,
+ ¬ify_token,
+ trustRequired_queue(),
+ ^(int token){
+#pragma unused(token)
+ trustRequiredNotification_update(rl, reason);
+ });
+ if (ret != NOTIFY_STATUS_OK) {
+ SC_log(LOG_ERR, "notify_register_dispatch(%@) failed: %u", notification, ret);
+ CFRelease(rl);
+ CFRelease(reason);
+ }
+
+ return;
+}
+
+static void
+updateTrustRequiredInterfaces(CFArrayRef interfaces)
+{
+ CFIndex n;
+ Boolean updated = FALSE;
+
+ n = (interfaces != NULL) ? CFArrayGetCount(interfaces) : 0;
+ for (CFIndex i = 0; i < n; i++) {
+ SCNetworkInterfaceRef interface;
+
+ interface = CFArrayGetValueAtIndex(interfaces, i);
+ if (_SCNetworkInterfaceIsTrustRequired(interface)) {
+ CFDataRef watched;
+
+ watched = watcherCreate(interface, trustRequiredInterfaceUpdated);
+ if (watched != NULL) {
+ SC_log(LOG_INFO, "watching [trust required] interface: %@",
+ SCNetworkInterfaceGetBSDName(interface));
+
+ if (S_trustRequired == NULL) {
+ S_trustRequired = CFArrayCreateMutable(NULL, 0, &kCFTypeArrayCallBacks);
+ }
+ CFArrayAppendValue(S_trustRequired, watched);
+ updated = TRUE;
+ }
+ }
+ }
+
+ if (updated) {
+ static dispatch_once_t once;
+ CFRunLoopRef rl = CFRunLoopGetCurrent();
+
+ dispatch_once(&once, ^{
+ // watch for "Trusted host attached"
+ watchTrustedStatus(kLockdownNotificationTrustedHostAttached,
+ CFSTR("Trusted Host attached"));
+
+ // watch for "Host detached"
+ watchTrustedStatus(kLockdownNotificationHostDetached,
+ CFSTR("Host detached"));
+ });
+
+ CFRetain(rl);
+ dispatch_async(trustRequired_queue(), ^{
+ trustRequiredNotification_update(rl, CFSTR("TrustRequired interface added"));
+ CFRelease(rl);
+ });
+ }
+
+ return;
+}
+#endif // TARGET_OS_IPHONE
+
+
#pragma mark -
#pragma mark Interface naming
return (S_quiet == MACH_PORT_NULL);
}
+static Boolean
+wasPreviouslyUsedInterface(CFDictionaryRef dbdict, SCNetworkInterfaceRef interface)
+{
+ CFArrayRef matchingMACs;
+
+ matchingMACs = CFDictionaryGetValue(dbdict, CFSTR(kSCNetworkInterfaceMatchingMACs));
+ if (matchingMACs != NULL) {
+ CFDataRef addr;
+
+ addr = _SCNetworkInterfaceGetHardwareAddress(interface);
+ if (addr != NULL) {
+ if (CFArrayContainsValue(matchingMACs,
+ CFRangeMake(0, CFArrayGetCount(matchingMACs)),
+ addr)) {
+ return TRUE;
+ }
+ }
+ }
+
+ return FALSE;
+}
+
static void
nameInterfaces(CFMutableArrayRef if_list)
{
CFDictionaryRef dbdict;
boolean_t is_builtin;
kern_return_t kr;
- int retries = 0;
+ int retries = 0;
dbdict = lookupInterfaceByAddress(S_dblist, interface, NULL);
if (dbdict != NULL) {
i + 1,
is_builtin ? kCFBooleanTrue : kCFBooleanFalse);
+ if ((dbdict != NULL) && wasPreviouslyUsedInterface(dbdict, interface)) {
+ unit = CFDictionaryGetValue(dbdict, CFSTR(kIOInterfaceUnit));
+ CFRetain(unit);
+
+ SC_log(LOG_INFO, "Interface assigned unit %@ (updating database w/previously used interface)", unit);
+ }
+
#if !TARGET_OS_IPHONE
- if (!is_builtin &&
+ if ((unit == NULL) &&
+ !is_builtin &&
(dbdict != NULL) &&
blockNewInterfaces() &&
!_SCNetworkInterfaceIsApplePreconfigured(interface) &&
isConsoleLocked()) {
- CFDataRef addr;
+ CFStringRef addr;
// if new (but matching) interface and console locked, ignore
+ addr = SCNetworkInterfaceGetHardwareAddressString(interface);
SC_log(LOG_NOTICE, "Console locked, network interface* ignored");
- SC_log(LOG_INFO, " path = %@", path);
- addr = _SCNetworkInterfaceGetHardwareAddress(interface);
- if (addr != NULL) {
- SC_log(LOG_INFO, " addr = %@", addr);
- }
+ SC_log(LOG_INFO, " path = %@, addr = %@",
+ path,
+ (addr != NULL) ? addr : CFSTR("?"));
+ watchLockedInterface(interface);
continue;
}
#endif // !TARGET_OS_IPHONE
- if (dbdict != NULL) {
+ if ((unit == NULL) && (dbdict != NULL)) {
unit = CFDictionaryGetValue(dbdict, CFSTR(kIOInterfaceUnit));
CFRetain(unit);
- SC_log(LOG_INFO, "Interface assigned unit %@ (updating database)", unit);
+ SC_log(LOG_INFO, "Interface assigned unit %@ (updating database w/new interface)", unit);
}
}
blockNewInterfaces() &&
!_SCNetworkInterfaceIsApplePreconfigured(interface) &&
isConsoleLocked()) {
- CFDataRef addr;
+ CFStringRef addr;
// if new interface and console locked, ignore
+ addr = SCNetworkInterfaceGetHardwareAddressString(interface);
SC_log(LOG_NOTICE, "Console locked, network interface ignored");
- SC_log(LOG_INFO, " path = %@", path);
- addr = _SCNetworkInterfaceGetHardwareAddress(interface);
- if (addr != NULL) {
- SC_log(LOG_INFO, " addr = %@", addr);
- }
+ SC_log(LOG_INFO, " path = %@, addr = %@",
+ path,
+ (addr != NULL) ? addr : CFSTR("?"));
+ watchLockedInterface(interface);
continue;
}
#endif // !TARGET_OS_IPHONE
SCPreferencesRef prefs = NULL;
SCNetworkSetRef set = NULL;
- prefs = SCPreferencesCreate(NULL, CFSTR("InterfaceNamer:updateNetworkConfiguration"), NULL);
+ prefs = SCPreferencesCreate(NULL, CFSTR(MY_PLUGIN_NAME ":updateNetworkConfiguration"), NULL);
+ if (prefs == NULL) {
+ SC_log(LOG_NOTICE, "SCPreferencesCreate() failed: %s", SCErrorString(SCError()));
+ return;
+ }
set = SCNetworkSetCopyCurrent(prefs);
if (set == NULL) {
*/
updatePreConfiguredInterfaces(S_iflist);
+#if TARGET_OS_IPHONE
+ /*
+ * Update the list of "trust required" interfaces
+ */
+ updateTrustRequiredInterfaces(S_iflist);
+#endif // TARGET_OS_IPHONE
+
if (isQuiet()) {
/*
* The registry [matching] has quiesced so let's
}
#endif /* WAIT_PREVIOUS_BOOT_INTERFACES_OR_QUIET */
-#if !TARGET_OS_EMBEDDED
+#if TARGET_OS_OSX
if (S_dblist != NULL) {
// apply special handling for the BT-PAN interface (if present)
CFArrayApplyFunction(S_dblist,
updateBTPANInformation,
NULL);
}
-#endif // !TARGET_OS_EMBEDDED
+#endif // TARGET_OS_OSX
ok = TRUE;
{
#pragma unused(bundle)
// open a SCPreferences session
- S_prefs = SCPreferencesCreate(NULL, CFSTR(MY_PLUGIN_NAME), NULL);
+ S_prefs = SCPreferencesCreate(NULL, CFSTR(MY_PLUGIN_NAME ":setup_Virtual"), NULL);
if (S_prefs == NULL) {
SC_log(LOG_ERR, "SCPreferencesCreate() failed: %s",
SCErrorString(SCError()));
/*
- * Copyright (c) 2002-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2002-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#endif /* kSCEntNetIdleRoute */
static CFStringRef
-create_interface_key(const char * if_name)
+create_interface_cfstring(const char * if_name)
+{
+ CFStringRef interface;
+
+ interface = CFStringCreateWithCString(NULL, if_name,
+ kCFStringEncodingUTF8);
+ return (interface);
+}
+
+static CFStringRef
+create_interface_key(CFStringRef interface)
{
- CFStringRef interface;
CFStringRef key;
- interface = CFStringCreateWithCString(NULL, if_name, kCFStringEncodingMacRoman);
key = SCDynamicStoreKeyCreateNetworkInterfaceEntity(NULL,
kSCDynamicStoreDomainState,
interface,
kSCEntNetLink);
- CFRelease(interface);
return (key);
}
static void
interface_update_status(const char *if_name,
+ CFStringRef interface,
CFBooleanRef active, boolean_t attach,
CFBooleanRef expensive, boolean_t only_if_different)
{
CFMutableDictionaryRef newDict;
CFDictionaryRef oldDict;
- key = create_interface_key(if_name);
+ key = create_interface_key(interface);
oldDict = cache_SCDynamicStoreCopyValue(store, key);
if (oldDict != NULL && isA_CFDictionary(oldDict) == NULL) {
CFRelease(oldDict);
#ifdef KEV_DL_LINK_QUALITY_METRIC_CHANGED
static CFStringRef
-create_linkquality_key(const char * if_name)
+create_linkquality_key(CFStringRef interface)
{
- CFStringRef interface;
CFStringRef key;
- interface = CFStringCreateWithCString(NULL, if_name, kCFStringEncodingMacRoman);
key = SCDynamicStoreKeyCreateNetworkInterfaceEntity(NULL,
kSCDynamicStoreDomainState,
interface,
kSCEntNetLinkQuality);
- CFRelease(interface);
return (key);
}
interface_update_quality_metric(const char *if_name,
int quality)
{
- CFStringRef key = NULL;
- CFMutableDictionaryRef newDict = NULL;
- CFNumberRef linkquality = NULL;
+ CFStringRef key;
+ CFStringRef interface;
+ CFMutableDictionaryRef newDict;
- key = create_linkquality_key(if_name);
+ interface = create_interface_cfstring(if_name);
+ key = create_linkquality_key(interface);
newDict = copy_entity(key);
if (quality != IFNET_LQM_THRESH_UNKNOWN) {
+ CFNumberRef linkquality;
+
linkquality = CFNumberCreate(NULL, kCFNumberIntType, &quality);
CFDictionarySetValue(newDict, kSCPropNetLinkQuality, linkquality);
CFRelease(linkquality);
cache_SCDynamicStoreRemoveValue(store, key);
}
+ CFRelease(interface);
CFRelease(key);
CFRelease(newDict);
return;
#ifdef KEV_DL_ISSUES
static CFStringRef
-create_link_issues_key(const char * if_name)
+create_link_issues_key(CFStringRef interface)
{
- CFStringRef interface;
CFStringRef key;
- interface = CFStringCreateWithCString(NULL, if_name, kCFStringEncodingMacRoman);
key = SCDynamicStoreKeyCreateNetworkInterfaceEntity(NULL,
kSCDynamicStoreDomainState,
interface,
kSCEntNetLinkIssues);
- CFRelease(interface);
return (key);
}
size_t info_size)
{
CFDataRef infoData;
+ CFStringRef interface;
CFStringRef key;
CFDataRef modidData;
CFMutableDictionaryRef newDict;
CFDateRef timeStamp;
- key = create_link_issues_key(if_name);
+ interface = create_interface_cfstring(if_name);
+ key = create_link_issues_key(interface);
newDict = copy_entity(key);
SC_log(LOG_DEBUG, "Update interface link issues: %s: %@", if_name, newDict);
cache_SCDynamicStoreSetValue(store, key, newDict);
+ CFRelease(interface);
CFRelease(newDict);
CFRelease(key);
return;
void
interface_detaching(const char *if_name)
{
+ CFStringRef interface;
CFStringRef key;
CFMutableDictionaryRef newDict;
SC_log(LOG_DEBUG, "Detach interface: %s", if_name);
- key = create_interface_key(if_name);
+ interface = create_interface_cfstring(if_name);
+ key = create_interface_key(interface);
newDict = copy_entity(key);
CFDictionarySetValue(newDict, kSCPropNetLinkDetaching,
kCFBooleanTrue);
cache_SCDynamicStoreSetValue(store, key, newDict);
+ CFRelease(interface);
CFRelease(newDict);
CFRelease(key);
return;
}
+static CFStringRef
+create_nat64_key(CFStringRef interface)
+{
+ CFStringRef key;
+
+ key = SCDynamicStoreKeyCreateNetworkInterfaceEntity(NULL,
+ kSCDynamicStoreDomainState,
+ interface,
+ kSCEntNetNAT64);
+ return (key);
+}
+
static void
interface_remove(const char *if_name)
{
+ CFStringRef interface;
CFStringRef key;
SC_log(LOG_DEBUG, "Remove interface: %s", if_name);
- key = create_interface_key(if_name);
+ interface = create_interface_cfstring(if_name);
+
+ key = create_interface_key(interface);
+ cache_SCDynamicStoreRemoveValue(store, key);
+ CFRelease(key);
+
+ key = create_nat64_key(interface);
cache_SCDynamicStoreRemoveValue(store, key);
CFRelease(key);
#ifdef KEV_DL_LINK_QUALITY_METRIC_CHANGED
- key = create_linkquality_key(if_name);
+ key = create_linkquality_key(interface);
cache_SCDynamicStoreRemoveValue(store, key);
CFRelease(key);
#endif /* KEV_DL_LINK_QUALITY_METRIC_CHANGED */
#ifdef KEV_DL_ISSUES
- key = create_link_issues_key(if_name);
+ key = create_link_issues_key(interface);
cache_SCDynamicStoreRemoveValue(store, key);
CFRelease(key);
#endif /* KEV_DL_ISSUES */
+ CFRelease(interface);
return;
}
-__private_extern__
-void
-link_update_status(const char *if_name, boolean_t attach, boolean_t only_if_different)
+static void
+S_link_update_status(const char *if_name, CFStringRef interface, boolean_t attach, boolean_t only_if_different)
{
CFBooleanRef active = NULL;
CFBooleanRef expensive = NULL;
}
/* update status */
- interface_update_status(if_name, active, attach, expensive, only_if_different);
+ interface_update_status(if_name, interface, active, attach, expensive, only_if_different);
close(sock);
return;
}
+__private_extern__
+void
+link_update_status(const char *if_name, boolean_t attach, boolean_t only_if_different)
+{
+ CFStringRef interface;
+
+ interface = create_interface_cfstring(if_name);
+ S_link_update_status(if_name, interface, attach, only_if_different);
+ CFRelease(interface);
+}
+
__private_extern__
void
link_update_status_if_missing(const char * if_name)
{
+ CFStringRef interface;
CFStringRef key;
CFDictionaryRef dict;
- key = create_interface_key(if_name);
+ interface = create_interface_cfstring(if_name);
+ key = create_interface_key(interface);
dict = cache_SCDynamicStoreCopyValue(store, key);
if (dict != NULL) {
/* it's already present, don't update */
CFRelease(dict);
goto done;
}
- link_update_status(if_name, FALSE, FALSE);
+ S_link_update_status(if_name, interface, FALSE, FALSE);
dict = cache_SCDynamicStoreCopyValue(store, key);
if (dict != NULL) {
/* our action made it appear */
CFRelease(dict);
}
done:
+ CFRelease(interface);
CFRelease(key);
return;
}
Boolean added = FALSE;
CFStringRef interface;
- interface = CFStringCreateWithCString(NULL, if_name, kCFStringEncodingMacRoman);
+ interface = create_interface_cfstring(if_name);
if (!CFArrayContainsValue(ifList,
CFRangeMake(0, CFArrayGetCount(ifList)),
interface)) {
CFStringRef interface;
CFIndex where;
- interface = CFStringCreateWithCString(NULL, if_name, kCFStringEncodingMacRoman);
+ interface = create_interface_cfstring(if_name);
where = CFArrayGetFirstIndexOfValue(ifList,
CFRangeMake(0, CFArrayGetCount(ifList)),
interface);
void
interface_update_idle_state(const char *if_name)
{
- CFStringRef if_name_cf;
+ CFStringRef interface;
CFStringRef key;
int ref;
- /* We will only update the SCDynamicStore if the idle ref count
- * is still 0 */
+ /* only update the SCDynamicStore if the idle ref count is still 0 */
ref = socket_reference_count(if_name);
if (ref != 0) {
return;
}
- if_name_cf = CFStringCreateWithCString(NULL, if_name,
- kCFStringEncodingASCII);
-
+ interface = create_interface_cfstring(if_name);
key = SCDynamicStoreKeyCreateNetworkInterfaceEntity(NULL,
kSCDynamicStoreDomainState,
- if_name_cf,
+ interface,
kSCEntNetIdleRoute);
SC_log(LOG_DEBUG, "Post interface idle: %s", if_name);
cache_SCDynamicStoreNotifyValue(store, key);
CFRelease(key);
- CFRelease(if_name_cf);
+ CFRelease(interface);
return;
}
#endif // KEV_DL_IF_IDLE_ROUTE_REFCNT
/*
- * Copyright (c) 2013-2016 Apple Inc. All rights reserved.
+ * Copyright (c) 2013-2016, 2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
/*
- * Copyright (c) 2002-2007, 2011, 2013, 2015, 2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2002-2007, 2011, 2013, 2015, 2017, 2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#include <notify.h>
#include <sys/sysctl.h>
#include <sys/kern_event.h>
+#if __has_include(<nw/private.h>)
+#include <nw/private.h>
+#else // __has_include(<nw/private.h>)
#include <network/config.h>
+#endif // __has_include(<nw/private.h>)
#include <netinet6/nd6.h>
static dispatch_queue_t S_kev_queue;
__private_extern__ os_log_t
-__log_KernelEventMonitor()
+__log_KernelEventMonitor(void)
{
static os_log_t log = NULL;
/*
- * Copyright (c) 2002-2016 Apple Inc. All rights reserved.
+ * Copyright (c) 2002-2017 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
__BEGIN_DECLS
os_log_t
-__log_KernelEventMonitor ();
+__log_KernelEventMonitor (void);
int
dgram_socket (int domain);
/*
- * Copyright (c) 2002-2007, 2011, 2013, 2015-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2002-2007, 2011, 2013, 2015-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
static os_log_t
-__log_LinkConfiguration()
+__log_LinkConfiguration(void)
{
static os_log_t log = NULL;
CFArrayAppendValue(patterns, key);
CFRelease(key);
+#if TARGET_OS_OSX
/* ...watch for (per-interface) FireWire configuration changes */
key = SCDynamicStoreKeyCreateNetworkInterfaceEntity(NULL,
kSCDynamicStoreDomainSetup,
kSCEntNetFireWire);
CFArrayAppendValue(patterns, key);
CFRelease(key);
+#endif // TARGET_OS_OSX
/* register the keys/patterns */
ok = SCDynamicStoreSetNotificationKeys(store, keys, patterns);
/*
- * Copyright (c) 2000-2008, 2010, 2012-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2000-2008, 2010, 2012-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
static SCDynamicStoreRef store = NULL;
/* InterfaceNamer[.plugin] monitoring globals */
+static CFMutableArrayRef excluded_interfaces = NULL; // of SCNetworkInterfaceRef
+static CFMutableArrayRef excluded_names = NULL; // of CFStringRef (BSD name)
Boolean haveConfiguration = FALSE;
static CFStringRef namerKey = NULL;
-static CFMutableArrayRef preconfigured_names = NULL; // of CFStringRef (BSD name)
static CFMutableArrayRef preconfigured_interfaces= NULL; // of SCNetworkInterfaceRef
+static CFMutableArrayRef preconfigured_names = NULL; // of CFStringRef (BSD name)
/* KernelEventMonitor[.plugin] monitoring globals */
static CFStringRef interfacesKey = NULL;
static os_log_t
-__log_PreferencesMonitor()
+__log_PreferencesMonitor(void)
{
static os_log_t log = NULL;
}
+static Boolean
+findInterfaces(CFArrayRef interfaces, CFMutableArrayRef *matched_interfaces, CFMutableArrayRef *matched_names)
+{
+ CFIndex n;
+ CFIndex nx = 0;
+ Boolean updated = FALSE;
+
+ // start clean
+ if (*matched_interfaces != NULL) {
+ CFRelease(*matched_interfaces);
+ *matched_interfaces = NULL;
+ }
+ if (*matched_names != NULL) {
+ nx = CFArrayGetCount(*matched_names);
+ CFRelease(*matched_names);
+ *matched_names = NULL;
+ }
+
+ n = (interfaces != NULL) ? CFArrayGetCount(interfaces) : 0;
+ for (CFIndex i = 0; i < n; i++) {
+ CFStringRef bsdName = CFArrayGetValueAtIndex(interfaces, i);
+ SCNetworkInterfaceRef interface;
+
+ for (int retry = 0; retry < 10; retry++) {
+ if (retry != 0) {
+ // add short delay (before retry)
+ usleep(20 * 1000); // 20ms
+ }
+
+ interface = _SCNetworkInterfaceCreateWithBSDName(NULL, bsdName, kIncludeNoVirtualInterfaces);
+ if (interface == NULL) {
+ SC_log(LOG_ERR, "could not create network interface for %@", bsdName);
+ } else if (_SCNetworkInterfaceGetIOPath(interface) == NULL) {
+ SC_log(LOG_ERR, "could not get IOPath for %@", bsdName);
+ CFRelease(interface);
+ interface = NULL;
+ }
+
+ if (interface == NULL) {
+ // if SCNetworkInterface not [currently] available
+ continue;
+ }
+
+ // keep track of the interface name (quicker than having to iterate the list
+ // of SCNetworkInterfaces, extract the name, and compare).
+ if (*matched_names == NULL) {
+ *matched_names = CFArrayCreateMutable(NULL, 0, &kCFTypeArrayCallBacks);
+ }
+ CFArrayAppendValue(*matched_names, bsdName);
+
+ if (*matched_interfaces == NULL) {
+ *matched_interfaces = CFArrayCreateMutable(NULL, 0, &kCFTypeArrayCallBacks);
+ }
+ CFArrayAppendValue(*matched_interfaces, interface);
+ CFRelease(interface);
+
+ updated = TRUE;
+ }
+ }
+
+ // check if all interfaces were detached
+ n = (*matched_names != NULL) ? CFArrayGetCount(*matched_names) : 0;
+ if ((nx > 0) && (n == 0)) {
+ updated = TRUE;
+ }
+
+ return updated;
+}
+
+
static void
storeCallback(SCDynamicStoreRef store, CFArrayRef changedKeys, void *info)
{
/*
* Capture/process InterfaceNamer[.bundle] info
* 1. check if IORegistry "quiet", "timeout"
- * 2. update list of named pre-configured interfaces
+ * 2. update list of excluded interfaces (e.g. those requiring that
+ * the attached host be trusted)
+ * 3. update list of named pre-configured interfaces
*/
dict = SCDynamicStoreCopyValue(store, namerKey);
if (dict != NULL) {
if (isA_CFDictionary(dict)) {
+ CFArrayRef excluded;
CFArrayRef preconfigured;
if (CFDictionaryContainsKey(dict, kInterfaceNamerKey_Quiet)) {
timeout = TRUE;
}
- preconfigured = CFDictionaryGetValue(dict, kInterfaceNamerKey_PreConfiguredInterfaces);
- preconfigured = isA_CFArray(preconfigured);
- if (!_SC_CFEqual(preconfigured, preconfigured_names)) {
- CFIndex n;
- CFIndex nx = 0;
-
- // start clean
- if (preconfigured_names != NULL) {
- nx = CFArrayGetCount(preconfigured_names);
- CFRelease(preconfigured_names);
- preconfigured_names = NULL;
- }
- if (preconfigured_interfaces != NULL) {
- CFRelease(preconfigured_interfaces);
- preconfigured_interfaces = NULL;
- }
+ excluded = CFDictionaryGetValue(dict, kInterfaceNamerKey_ExcludedInterfaces);
+ excluded = isA_CFArray(excluded);
+ if (!_SC_CFEqual(excluded, excluded_names)) {
+ Boolean excluded_updated;
- // add pre-configured interfaces
- n = (preconfigured != NULL) ? CFArrayGetCount(preconfigured) : 0;
- for (CFIndex i = 0; i < n; i++) {
- CFStringRef bsdName = CFArrayGetValueAtIndex(preconfigured, i);
- SCNetworkInterfaceRef interface;
-
- for (int retry = 0; retry < 10; retry++) {
- if (retry != 0) {
- // add short delay (before retry)
- usleep(20 * 1000); // 20ms
- }
-
- interface = _SCNetworkInterfaceCreateWithBSDName(NULL, bsdName, kIncludeNoVirtualInterfaces);
- if (interface == NULL) {
- SC_log(LOG_ERR, "could not create network interface for %@", bsdName);
- } else if (_SCNetworkInterfaceGetIOPath(interface) == NULL) {
- SC_log(LOG_ERR, "could not get IOPath for %@", bsdName);
- CFRelease(interface);
- interface = NULL;
- }
-
- if (interface != NULL) {
- // if we have an interface
- break;
- }
- }
-
- if (interface == NULL) {
- // if SCNetworkInterface not [currently] available
- continue;
- }
-
- // keep track of the interface name (quicker than having to iterate the list
- // of SCNetworkInterfaces, extract the name, and compare).
- if (preconfigured_names == NULL) {
- preconfigured_names = CFArrayCreateMutable(NULL, 0, &kCFTypeArrayCallBacks);
- }
- CFArrayAppendValue(preconfigured_names, bsdName);
+ excluded_updated = findInterfaces(excluded, &excluded_interfaces, &excluded_names);
+ if (excluded_updated) {
+ CFStringRef interfaces = CFSTR("<empty>");
- if (preconfigured_interfaces == NULL) {
- preconfigured_interfaces = CFArrayCreateMutable(NULL, 0, &kCFTypeArrayCallBacks);
+ // report [updated] pre-configured interfaces
+ if (excluded_names != NULL) {
+ interfaces = CFStringCreateByCombiningStrings(NULL, excluded_names, CFSTR(","));
+ } else {
+ CFRetain(interfaces);
}
- CFArrayAppendValue(preconfigured_interfaces, interface);
- CFRelease(interface);
+ SC_log(LOG_INFO, "excluded interface list changed: %@", interfaces);
+ CFRelease(interfaces);
updated = TRUE;
}
+ }
- // check if all pre-configured interfaces were detached
- n = (preconfigured_names != NULL) ? CFArrayGetCount(preconfigured_names) : 0;
- if ((nx > 0) && (n == 0)) {
- updated = TRUE;
- }
+ preconfigured = CFDictionaryGetValue(dict, kInterfaceNamerKey_PreConfiguredInterfaces);
+ preconfigured = isA_CFArray(preconfigured);
+ if (!_SC_CFEqual(preconfigured, preconfigured_names)) {
+ Boolean preconfigured_updated;
- if (updated) {
+ preconfigured_updated = findInterfaces(preconfigured, &preconfigured_interfaces, &preconfigured_names);
+ if (preconfigured_updated) {
CFStringRef interfaces = CFSTR("<empty>");
// report [updated] pre-configured interfaces
}
SC_log(LOG_INFO, "pre-configured interface list changed: %@", interfaces);
CFRelease(interfaces);
+
+ updated = TRUE;
}
}
}
}
+static void
+excludeConfigurations(SCPreferencesRef prefs)
+{
+ Boolean ok;
+ CFRange range;
+ CFArrayRef services;
+ SCNetworkSetRef set;
+
+ range = CFRangeMake(0,
+ (excluded_names != NULL) ? CFArrayGetCount(excluded_names) : 0);
+ if (range.length == 0) {
+ // if no [excluded] interfaces
+ return;
+ }
+
+ set = SCNetworkSetCopyCurrent(prefs);
+ if (set == NULL) {
+ // if no current set
+ return;
+ }
+
+ /*
+ * Check for (and remove) any network services associated with
+ * an excluded interface from the prefs.
+ */
+ services = SCNetworkSetCopyServices(set);
+ if (services != NULL) {
+ CFIndex n;
+
+ n = CFArrayGetCount(services);
+ for (CFIndex i = 0; i < n; i++) {
+ CFStringRef bsdName;
+ SCNetworkInterfaceRef interface;
+ SCNetworkServiceRef service;
+
+ service = CFArrayGetValueAtIndex(services, i);
+
+ interface = SCNetworkServiceGetInterface(service);
+ if (interface == NULL) {
+ // if no interface
+ continue;
+ }
+
+ bsdName = SCNetworkInterfaceGetBSDName(interface);
+ if (bsdName == NULL) {
+ // if no interface name
+ continue;
+ }
+
+ if (!CFArrayContainsValue(excluded_names, range, bsdName)) {
+ // if not excluded
+ continue;
+ }
+
+ // remove [excluded] network service from the prefs
+ SC_log(LOG_NOTICE, "removing network service for %@", bsdName);
+ ok = SCNetworkSetRemoveService(set, service);
+ if (!ok) {
+ SC_log(LOG_ERR, "SCNetworkSetRemoveService() failed: %s",
+ SCErrorString(SCError()));
+ }
+ }
+
+ CFRelease(services);
+ }
+
+ CFRelease(set);
+ return;
+}
+
+
static void
updatePreConfiguredConfiguration(SCPreferencesRef prefs)
{
/* add any [Apple] pre-configured network services */
updatePreConfiguredConfiguration(prefs);
+ /* remove any excluded network services */
+ excludeConfigurations(prefs);
+
/* update SCDynamicStore (Setup:) */
updateSCDynamicStore(prefs);
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>Builtin</key>
+ <true/>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleExecutable</key>
+ <string>QoSMarking</string>
+ <key>CFBundleIdentifier</key>
+ <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>com.apple.SystemConfiguration.QoSMarking</string>
+ <key>CFBundlePackageType</key>
+ <string>BNDL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.17</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>1.17</string>
+ <key>QoSMarking_AppleAudioVideoCalls_BundleIDs</key>
+ <array>
+ <string>com.apple.datausage.telephony.ims</string>
+ <string>com.apple.facetime</string>
+ <string>com.apple.siri</string>
+ </array>
+ <key>Requires</key>
+ <array>
+ <string>com.apple.SystemConfiguration.InterfaceNamer</string>
+ <string>com.apple.SystemConfiguration.PreferencesMonitor</string>
+ </array>
+</dict>
+</plist>
<string>com.apple.facetime</string>
<string>com.apple.siri</string>
</array>
+ <key>QoSMarking_AppleAudioVideoCalls_ExecutablePaths</key>
+ <array>
+ <string>/System/Library/PrivateFrameworks/IDS.framework/identityservicesd.app/Contents/MacOS/identityservicesd</string>
+ </array>
<key>Requires</key>
<array>
<string>com.apple.SystemConfiguration.InterfaceNamer</string>
/*
- * Copyright (c) 2016, 2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2016-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
__private_extern__ os_log_t
-__log_QoSMarking()
+__log_QoSMarking(void)
{
static os_log_t log = NULL;
/*
- * Copyright (c) 2013, 2015-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2013, 2015-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
*/
+#include <TargetConditionals.h>
#include <SystemConfiguration/SystemConfiguration.h>
#include <SystemConfiguration/SCPrivate.h>
#include <SystemConfiguration/SCValidation.h>
#include "cache.h"
+#if TARGET_OS_SIMULATOR && !TARGET_OS_IOSMAC
+
static CFMutableArrayRef mirror_keys = NULL;
static CFMutableArrayRef mirror_patterns = NULL;
* Logging
*/
__private_extern__ os_log_t
-__log_SimulatorSupport()
+__log_SimulatorSupport(void)
{
static os_log_t log = NULL;
return 0;
}
#endif
+
+#endif // TARGET_OS_SIMULATOR && !TARGET_OS_IOSMAC
/*
- * Copyright (c) 2013, 2015-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2013, 2015-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#include <SystemConfiguration/scprefs_observer.h>
#include "IPMonitorControlPrefs.h"
-os_log_t __log_IPMonitor();
+os_log_t __log_IPMonitor(void);
/*
* kIPMonitorControlPrefsID
/*
- * Copyright (c) 2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2017, 2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
/*
- * Copyright (c) 2016 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2016, 2018 Apple Computer, Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#define kInterfaceNamerKey_Quiet CFSTR("*QUIET*")
#define kInterfaceNamerKey_Timeout CFSTR("*TIMEOUT*")
+// Configuration excluded network interfaces
+#define kInterfaceNamerKey_ExcludedInterfaces CFSTR("_Excluded_")
+
+// Network interfaces that have not yet been made available because the console is "locked"
+#define kInterfaceNamerKey_LockedInterfaces CFSTR("_Locked_")
+
// [Apple] pre-configured network interfaces
#define kInterfaceNamerKey_PreConfiguredInterfaces CFSTR("_PreConfigured_")
/*
- * Copyright (c) 2007-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2007-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
* Logging
*/
static os_log_t
-__log_SCMonitor()
+__log_SCMonitor(void)
{
static os_log_t log = NULL;
/*
- * Copyright (c) 2004-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2004-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
/*
- * Copyright (c) 2009-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2009-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
/*
- * Copyright (c) 2009, 2010, 2012, 2013, 2015 Apple Inc. All rights reserved.
+ * Copyright (c) 2009, 2010, 2012, 2013, 2015, 2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#include <sys/param.h>
#include <sys/stat.h>
#include <dlfcn.h>
+#include <mach-o/dyld_priv.h>
+#include <sys/codesign.h>
#include <SystemConfiguration/CaptiveNetwork.h>
#include <SystemConfiguration/SCPrivate.h>
#pragma mark CaptiveNetwork.framework APIs (exported through the SystemConfiguration.framework)
-#if TARGET_OS_IPHONE
const CFStringRef kCNNetworkInfoKeySSIDData = CFSTR("SSIDDATA");
const CFStringRef kCNNetworkInfoKeySSID = CFSTR("SSID");
const CFStringRef kCNNetworkInfoKeyBSSID = CFSTR("BSSID");
-#endif // TARGET_OS_IPHONE
static void *
return dyfunc ? dyfunc() : NULL;
}
-
#if TARGET_OS_IPHONE
+
+#define CN_COPY_ENTITLEMENT CFSTR("com.apple.developer.networking.wifi-info")
+
+static CFDictionaryRef
+__CopyEntitlementsForPID(pid_t pid)
+{
+ uint8_t *buffer = NULL;
+ size_t bufferlen = 0L;
+ int64_t datalen = 0L;
+ CFDataRef cfdata = NULL;
+ struct csheader {
+ uint32_t magic;
+ uint32_t length;
+ } csheader = { 0, 0 };
+ int error = -1;
+ CFPropertyListRef plist = NULL;
+
+ /*
+ * Get the length of the actual entitlement data
+ */
+ error = csops(pid, CS_OPS_ENTITLEMENTS_BLOB, &csheader, sizeof(csheader));
+
+ if (error == -1 && errno == ERANGE) {
+ bufferlen = ntohl(csheader.length);
+ if (bufferlen > 1024 * 1024 || bufferlen < 8) {
+ errno = EINVAL;
+ goto out;
+ }
+ buffer = malloc(bufferlen);
+ if (buffer == NULL) {
+ goto out;
+ }
+ error = csops(pid, CS_OPS_ENTITLEMENTS_BLOB, buffer, bufferlen);
+ if (error < 0) {
+ goto out;
+ }
+ }
+
+ datalen = bufferlen - sizeof(csheader);
+
+ if (error == 0 && buffer && datalen > 0) {
+ cfdata = CFDataCreateWithBytesNoCopy(kCFAllocatorDefault, buffer + sizeof(csheader), datalen, kCFAllocatorNull);
+ if (cfdata == NULL) {
+ goto out;
+ }
+
+ plist = CFPropertyListCreateWithData(NULL, cfdata, kCFPropertyListImmutable, NULL, NULL);
+ if (!plist) {
+ SC_log(LOG_ERR, "Could not decode entitlements for pid %d", pid);
+ }
+ }
+ else {
+ SC_log(LOG_ERR, "Could not get valid codesigning data for pid %d. Error %d", pid, error);
+ }
+out:
+ if (error < 0) {
+ SC_log(LOG_ERR, "Error getting entitlements for pid %d: %s", pid, strerror(errno));
+ }
+ if (cfdata != NULL) {
+ CFRelease(cfdata);
+ }
+ if (buffer != NULL) {
+ free(buffer);
+ }
+ if (plist && !isA_CFDictionary(plist)) {
+ SC_log(LOG_ERR, "Could not decode entitlements for pid %d as a dictionary.", pid);
+ CFRelease(plist);
+ plist = NULL;
+ }
+
+ return plist;
+}
+
+static Boolean
+__isApplicationEntitled(void)
+{
+ if (dyld_get_program_sdk_version() >= DYLD_IOS_VERSION_12_0) {
+ /* application is linked on or after iOS 12.0 SDK so it must have the entitlement */
+ CFTypeRef entitlement = NULL;
+ CFDictionaryRef entitlements = __CopyEntitlementsForPID(getpid());
+ if (entitlements != NULL) {
+ Boolean entitled = FALSE;
+ entitlement = CFDictionaryGetValue(entitlements, CN_COPY_ENTITLEMENT);
+ if(isA_CFBoolean(entitlement)) {
+ entitled = CFBooleanGetValue(entitlement);
+ }
+ CFRelease(entitlements);
+ return entitled;
+ }
+ /* application is linked on or after iOS 12.0 SDK but missing entitlement */
+ return FALSE;
+ }
+ /* application is linked before iOS 12.0 SDK */
+ return TRUE;
+}
+
+#endif /* TARGET_OS_IPHONE */
+
CFDictionaryRef
CNCopyCurrentNetworkInfo(CFStringRef interfaceName)
{
+#if TARGET_OS_IPHONE && !TARGET_OS_IOSMAC
+ if (__isApplicationEntitled() == FALSE) {
+ SC_log(LOG_DEBUG, "Application does not have %@ entitlement", CN_COPY_ENTITLEMENT);
+ return NULL;
+ }
static typeof (CNCopyCurrentNetworkInfo) *dyfunc = NULL;
if (!dyfunc) {
void *image = __loadCaptiveNetwork();
if (image) dyfunc = dlsym(image, "__CNCopyCurrentNetworkInfo");
}
return dyfunc ? dyfunc(interfaceName) : NULL;
+#else // TARGET_OS_IPHONE && !TARGET_OS_IOSMAC
+#pragma unused(interfaceName)
+ return NULL;
+#endif // TARGET_OS_IPHONE && !TARGET_OS_IOSMAC
}
-#endif // TARGET_OS_IPHONE
+
/*
- * Copyright (c) 2009-2016 Apple Inc. All rights reserved.
+ * Copyright (c) 2009-2016, 2018 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,
* 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 _CAPTIVENETWORK_H
#define _CAPTIVENETWORK_H
-#include <Availability.h>
+#include <os/availability.h>
#include <sys/cdefs.h>
#include <CoreFoundation/CoreFoundation.h>
*/
Boolean
CNSetSupportedSSIDs (CFArrayRef ssidArray)
- __OSX_AVAILABLE_BUT_DEPRECATED_MSG(__MAC_10_8, __MAC_NA,
- __IPHONE_4_0, __IPHONE_9_0,
- "Replaced by <NetworkExtension/NEHotspotHelper.h>");
+ API_AVAILABLE(macos(10.8))
+ API_DEPRECATED_WITH_REPLACEMENT("Replaced by <NetworkExtension/NEHotspotHelper.h>", ios(4.0,9.0))
+ SPI_AVAILABLE(tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function CNMarkPortalOnline
*/
Boolean
CNMarkPortalOnline (CFStringRef interfaceName)
- __OSX_AVAILABLE_BUT_DEPRECATED_MSG(__MAC_10_8, __MAC_NA,
- __IPHONE_4_0, __IPHONE_9_0,
- "Replaced by <NetworkExtension/NEHotspotHelper.h>");
+ API_AVAILABLE(macos(10.8))
+ API_DEPRECATED_WITH_REPLACEMENT("Replaced by <NetworkExtension/NEHotspotHelper.h>", ios(4.0,9.0))
+ SPI_AVAILABLE(tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function CNMarkPortalOffline
*/
Boolean
CNMarkPortalOffline (CFStringRef interfaceName)
- __OSX_AVAILABLE_BUT_DEPRECATED_MSG(__MAC_10_8, __MAC_NA,
- __IPHONE_4_0, __IPHONE_9_0,
- "Replaced by <NetworkExtension/NEHotspotHelper.h>");
+ API_AVAILABLE(macos(10.8))
+ API_DEPRECATED_WITH_REPLACEMENT("Replaced by <NetworkExtension/NEHotspotHelper.h>", ios(4.0,9.0))
+ SPI_AVAILABLE(tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function CNCopySupportedInterfaces
You MUST release the returned value.
*/
CFArrayRef __nullable
-CNCopySupportedInterfaces (void) __OSX_AVAILABLE_STARTING(__MAC_10_8,__IPHONE_4_1);
+CNCopySupportedInterfaces (void)
+ API_AVAILABLE(macos(10.8), ios(4.1))
+ SPI_AVAILABLE(tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@constant kCNNetworkInfoKeySSIDData
@discussion NetworkInfo Dictionary key for SSID in CFData format
*/
-extern const CFStringRef kCNNetworkInfoKeySSIDData __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_4_1);
+extern const CFStringRef kCNNetworkInfoKeySSIDData
+ API_AVAILABLE(ios(4.1))
+ SPI_AVAILABLE(macos(10.6), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@constant kCNNetworkInfoKeySSID
@discussion NetworkInfo Dictionary key for SSID in CFString format
*/
-extern const CFStringRef kCNNetworkInfoKeySSID __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_4_1);
+extern const CFStringRef kCNNetworkInfoKeySSID
+ API_AVAILABLE(ios(4.1))
+ SPI_AVAILABLE(macos(10.6), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@constant kCNNetworkInfoKeyBSSID
@discussion NetworkInfo Dictionary key for BSSID in CFString format
*/
-extern const CFStringRef kCNNetworkInfoKeyBSSID __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_4_1);
+extern const CFStringRef kCNNetworkInfoKeyBSSID
+ API_AVAILABLE(ios(4.1))
+ SPI_AVAILABLE(macos(10.6), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function CNCopyCurrentNetworkInfo
You MUST release the returned value.
*/
CFDictionaryRef __nullable
-CNCopyCurrentNetworkInfo (CFStringRef interfaceName) __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_4_1);
+CNCopyCurrentNetworkInfo (CFStringRef interfaceName)
+ API_AVAILABLE(ios(4.1))
+ SPI_AVAILABLE(macos(10.6), tvos(9.0), watchos(1.0), bridgeos(1.0));
__END_DECLS
/*
- * Copyright (c) 2001, 2004, 2005, 2008, 2015, 2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2001, 2004, 2005, 2008, 2015, 2017, 2018 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,
* 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 _DHCPCLIENTPREFERENCES_H
-#ifdef USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS
-#include <SystemConfiguration/_DHCPClientPreferences.h>
-#else /* USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS */
#define _DHCPCLIENTPREFERENCES_H
-#include <Availability.h>
+#include <os/availability.h>
#include <sys/cdefs.h>
#include <CoreFoundation/CFString.h>
Boolean
DHCPClientPreferencesSetApplicationOptions (CFStringRef applicationID,
const UInt8 * __nullable options,
- CFIndex count) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ CFIndex count) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function DHCPClientPreferencesCopyApplicationOptions
UInt8 * __nullable
DHCPClientPreferencesCopyApplicationOptions (CFStringRef applicationID,
- CFIndex *count) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ CFIndex *count) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
__END_DECLS
CF_ASSUME_NONNULL_END
CF_IMPLICIT_BRIDGING_DISABLED
-#endif /* USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS */
#endif /* _DHCPCLIENTPREFERENCES_H */
/*
- * Copyright (c) 2002-2007, 2010, 2011, 2013, 2015-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2002-2007, 2010, 2011, 2013, 2015-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
all: SCSchemaDefinitions.h SCSchemaDefinitionsPrivate.h SCSchemaDefinitions.c
/tmp/genSCPreferences: genSCPreferences.c Makefile
- cc -g -o /tmp/genSCPreferences genSCPreferences.c
+ xcrun --sdk macosx.internal cc -g -o /tmp/genSCPreferences genSCPreferences.c
SCSchemaDefinitions.h: /tmp/genSCPreferences
/tmp/genSCPreferences header > SCSchemaDefinitions.h
os_log_t
-_SC_LOG_DEFAULT()
+_SC_LOG_DEFAULT(void)
{
static os_log_t log = NULL;
/*
- * Copyright (c) 2011, 2016, 2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2011, 2016-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#ifndef _SCD_H
#define _SCD_H
-#include <Availability.h>
+#include <os/availability.h>
#include <TargetConditionals.h>
#include <sys/cdefs.h>
#include <SystemConfiguration/SCDynamicStore.h>
__END_DECLS
-#endif /* _SCD_H */
+#endif /* _SCD_H */
/*
- * Copyright (c) 2000-2008, 2011, 2013-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2000-2008, 2011, 2013-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#pragma mark LocalHostName
-__private_extern__ CFStringRef
+CFStringRef
_SCPreferencesCopyLocalHostName(SCPreferencesRef prefs)
{
CFDictionaryRef dict;
/*
- * Copyright (c) 2000-2005, 2008-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2000-2005, 2008-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#include "config.h" /* MiG generated file */
#include "SCD.h"
-#if !TARGET_OS_SIMULATOR || (defined(IPHONE_SIMULATOR_HOST_MIN_VERSION_REQUIRED) && (IPHONE_SIMULATOR_HOST_MIN_VERSION_REQUIRED >= 1090))
+#if !TARGET_OS_SIMULATOR || (defined(IPHONE_SIMULATOR_HOST_MIN_VERSION_REQUIRED) && (IPHONE_SIMULATOR_HOST_MIN_VERSION_REQUIRED >= 1090))
#define HAVE_MACHPORT_GUARDS
#endif
+static mach_port_t
+acquireNotifyPort(SCDynamicStoreRef store)
+{
+ kern_return_t kr;
+ mach_port_t oldNotify;
+#ifdef HAVE_MACHPORT_GUARDS
+ mach_port_options_t opts;
+#endif // HAVE_MACHPORT_GUARDS
+ mach_port_t port;
+ int sc_status;
+ SCDynamicStorePrivateRef storePrivate = (SCDynamicStorePrivateRef)store;
+
+ /* allocate a mach port for the SCDynamicStore notifications */
+
+ retry_allocate :
+
+#ifdef HAVE_MACHPORT_GUARDS
+ memset(&opts, 0, sizeof(opts));
+ opts.flags = MPO_CONTEXT_AS_GUARD|MPO_INSERT_SEND_RIGHT;
+
+ kr = mach_port_construct(mach_task_self(), &opts, (mach_port_context_t)store, &port);
+#else // HAVE_MACHPORT_GUARDS
+ kr = mach_port_allocate(mach_task_self(), MACH_PORT_RIGHT_RECEIVE, &port);
+#endif // HAVE_MACHPORT_GUARDS
+
+ if (kr != KERN_SUCCESS) {
+ SC_log(LOG_NOTICE, "could not allocate mach port: %s", mach_error_string(kr));
+ if ((kr == KERN_NO_SPACE) || (kr == KERN_RESOURCE_SHORTAGE)) {
+ sleep(1);
+ goto retry_allocate;
+ } else {
+ return MACH_PORT_NULL;
+ }
+ }
+
+#ifndef HAVE_MACHPORT_GUARDS
+ kr = mach_port_insert_right(mach_task_self(),
+ port,
+ port,
+ MACH_MSG_TYPE_MAKE_SEND);
+ if (kr != KERN_SUCCESS) {
+ /*
+ * We can't insert a send right into our own port! This should
+ * only happen if someone stomped on OUR port (so let's leave
+ * the port alone).
+ */
+ SC_log(LOG_NOTICE, "mach_port_insert_right() failed: %s", mach_error_string(kr));
+ return MACH_PORT_NULL;
+ }
+#endif // HAVE_MACHPORT_GUARDS
+
+ /* Request a notification when/if the server dies */
+ kr = mach_port_request_notification(mach_task_self(),
+ port,
+ MACH_NOTIFY_NO_SENDERS,
+ 1,
+ port,
+ MACH_MSG_TYPE_MAKE_SEND_ONCE,
+ &oldNotify);
+ if (kr != KERN_SUCCESS) {
+ /*
+ * We can't request a notification for our own port! This should
+ * only happen if someone stomped on OUR port (so let's leave
+ * the port alone).
+ */
+ SC_log(LOG_NOTICE, "mach_port_request_notification() failed: %s", mach_error_string(kr));
+ return MACH_PORT_NULL;
+ }
+
+ if (oldNotify != MACH_PORT_NULL) {
+ SC_log(LOG_NOTICE, "oldNotify != MACH_PORT_NULL");
+ }
+
+#ifdef DEBUG
+ SC_log(LOG_DEBUG, " establish notification request with SCDynamicStore server");
+#endif /* DEBUG */
+
+#ifdef VERBOSE_ACTIVITY_LOGGING
+ os_activity_scope(storePrivate->activity);
+#endif // VERBOSE_ACTIVITY_LOGGING
+
+ retry :
+
+ __MACH_PORT_DEBUG(TRUE, "*** rlsSchedule", port);
+ kr = notifyviaport(storePrivate->server, port, 0, (int *)&sc_status);
+
+ if (__SCDynamicStoreCheckRetryAndHandleError(store,
+ kr,
+ &sc_status,
+ "rlsSchedule notifyviaport()")) {
+ goto retry;
+ }
+
+ if (kr != KERN_SUCCESS) {
+ if ((kr == MACH_SEND_INVALID_DEST) || (kr == MIG_SERVER_DIED)) {
+ /* remove the send right that we tried (but failed) to pass to the server */
+ (void) mach_port_deallocate(mach_task_self(), port);
+ }
+
+ /* remove our receive right */
+#ifdef HAVE_MACHPORT_GUARDS
+ (void) mach_port_destruct(mach_task_self(), port, 0, (mach_port_context_t)store);
+#else // HAVE_MACHPORT_GUARDS
+ (void) mach_port_mod_refs(mach_task_self(), port, MACH_PORT_RIGHT_RECEIVE, -1);
+#endif // HAVE_MACHPORT_GUARDS
+ return MACH_PORT_NULL;
+ }
+
+ if (sc_status != kSCStatusOK) {
+ /* something [else] didn't work, remove our receive right */
+#ifdef HAVE_MACHPORT_GUARDS
+ (void) mach_port_destruct(mach_task_self(), port, 0, (mach_port_context_t)store);
+#else // HAVE_MACHPORT_GUARDS
+ (void) mach_port_mod_refs(mach_task_self(), port, MACH_PORT_RIGHT_RECEIVE, -1);
+#endif // HAVE_MACHPORT_GUARDS
+ return MACH_PORT_NULL;
+ }
+
+ return port;
+}
+
+
static CFStringRef
notifyMPCopyDescription(const void *info)
{
static void
rlsCallback(CFMachPortRef port, void *msg, CFIndex size, void *info)
{
+#ifndef DEBUG
+#pragma unused(port)
+#endif /* DEBUG */
#pragma unused(size)
mach_no_senders_notification_t *buf = msg;
mach_msg_id_t msgid = buf->not_header.msgh_id;
SCDynamicStorePrivateRef storePrivate = (SCDynamicStorePrivateRef)store;
#ifdef DEBUG
- SC_log(LOG_DEBUG, "schedule notifications for mode %@",
- (rl != NULL) ? mode : CFSTR("libdispatch"));
+ SC_log(LOG_DEBUG, "schedule notifications for mode %@", mode);
#endif /* DEBUG */
if (storePrivate->rlsNotifyPort == NULL) {
, CFRelease
, notifyMPCopyDescription
};
- kern_return_t kr;
- mach_port_t oldNotify;
-#ifdef HAVE_MACHPORT_GUARDS
- mach_port_options_t opts;
-#endif // HAVE_MACHPORT_GUARDS
mach_port_t port;
- int sc_status;
#ifdef DEBUG
SC_log(LOG_DEBUG, " activate callback runloop source");
#endif /* DEBUG */
- /* allocate a mach port for the SCDynamicStore notifications */
-
- retry_allocate :
-
-#ifdef HAVE_MACHPORT_GUARDS
- bzero(&opts, sizeof(opts));
- opts.flags = MPO_CONTEXT_AS_GUARD|MPO_INSERT_SEND_RIGHT;
-
- kr = mach_port_construct(mach_task_self(), &opts, (mach_port_context_t)store, &port);
-#else // HAVE_MACHPORT_GUARDS
- kr = mach_port_allocate(mach_task_self(), MACH_PORT_RIGHT_RECEIVE, &port);
-#endif // HAVE_MACHPORT_GUARDS
-
- if (kr != KERN_SUCCESS) {
- SC_log(LOG_NOTICE, "could not allocate mach port: %s", mach_error_string(kr));
- if ((kr == KERN_NO_SPACE) || (kr == KERN_RESOURCE_SHORTAGE)) {
- sleep(1);
- goto retry_allocate;
- } else {
- return;
- }
- }
-
-#ifndef HAVE_MACHPORT_GUARDS
- kr = mach_port_insert_right(mach_task_self(),
- port,
- port,
- MACH_MSG_TYPE_MAKE_SEND);
- if (kr != KERN_SUCCESS) {
- /*
- * We can't insert a send right into our own port! This should
- * only happen if someone stomped on OUR port (so let's leave
- * the port alone).
- */
- SC_log(LOG_NOTICE, "mach_port_insert_right() failed: %s", mach_error_string(kr));
- return;
- }
-#endif // HAVE_MACHPORT_GUARDS
-
- /* Request a notification when/if the server dies */
- kr = mach_port_request_notification(mach_task_self(),
- port,
- MACH_NOTIFY_NO_SENDERS,
- 1,
- port,
- MACH_MSG_TYPE_MAKE_SEND_ONCE,
- &oldNotify);
- if (kr != KERN_SUCCESS) {
- /*
- * We can't request a notification for our own port! This should
- * only happen if someone stomped on OUR port (so let's leave
- * the port alone).
- */
- SC_log(LOG_NOTICE, "mach_port_request_notification() failed: %s", mach_error_string(kr));
- return;
- }
-
- if (oldNotify != MACH_PORT_NULL) {
- SC_log(LOG_NOTICE, "oldNotify != MACH_PORT_NULL");
- }
-
-#ifdef DEBUG
- SC_log(LOG_DEBUG, " establish notification request with SCDynamicStore server");
-#endif /* DEBUG */
-
-#ifdef VERBOSE_ACTIVITY_LOGGING
- os_activity_scope(storePrivate->activity);
-#endif // VERBOSE_ACTIVITY_LOGGING
-
- retry :
-
- __MACH_PORT_DEBUG(TRUE, "*** rlsSchedule", port);
- kr = notifyviaport(storePrivate->server, port, 0, (int *)&sc_status);
-
- if (__SCDynamicStoreCheckRetryAndHandleError(store,
- kr,
- &sc_status,
- "rlsSchedule notifyviaport()")) {
- goto retry;
- }
-
- if (kr != KERN_SUCCESS) {
- if ((kr == MACH_SEND_INVALID_DEST) || (kr == MIG_SERVER_DIED)) {
- /* remove the send right that we tried (but failed) to pass to the server */
- (void) mach_port_deallocate(mach_task_self(), port);
- }
-
- /* remove our receive right */
-#ifdef HAVE_MACHPORT_GUARDS
- (void) mach_port_destruct(mach_task_self(), port, 0, (mach_port_context_t)store);
-#else // HAVE_MACHPORT_GUARDS
- (void) mach_port_mod_refs(mach_task_self(), port, MACH_PORT_RIGHT_RECEIVE, -1);
-#endif // HAVE_MACHPORT_GUARDS
- return;
- }
-
- if (sc_status != kSCStatusOK) {
- /* something [else] didn't work, remove our receive right */
-#ifdef HAVE_MACHPORT_GUARDS
- (void) mach_port_destruct(mach_task_self(), port, 0, (mach_port_context_t)store);
-#else // HAVE_MACHPORT_GUARDS
- (void) mach_port_mod_refs(mach_task_self(), port, MACH_PORT_RIGHT_RECEIVE, -1);
-#endif // HAVE_MACHPORT_GUARDS
+ port = acquireNotifyPort(store);
+ if (port == MACH_PORT_NULL) {
return;
}
}
}
- if ((rl != NULL) && (storePrivate->rlsNotifyRLS != NULL)) {
+ if (storePrivate->rlsNotifyRLS != NULL) {
/* set notifier active */
storePrivate->notifyStatus = Using_NotifierInformViaRunLoop;
SCDynamicStorePrivateRef storePrivate = (SCDynamicStorePrivateRef)store;
#ifdef DEBUG
- SC_log(LOG_DEBUG, "cancel notifications for mode %@",
- (rl != NULL) ? mode : CFSTR("libdispatch"));
+ SC_log(LOG_DEBUG, "cancel notifications for mode %@", mode);
#endif /* DEBUG */
- if ((rl != NULL) && (storePrivate->rlsNotifyRLS != NULL)) {
+ if (storePrivate->rlsNotifyRLS != NULL) {
if (_SC_unschedule(store, rl, mode, storePrivate->rlList, FALSE)) {
/*
* if currently scheduled on this runLoop / runLoopMode
if (queue == NULL) {
if (storePrivate->dispatchQueue == NULL) {
+ // if not scheduled
_SCErrorSet(kSCStatusInvalidArgument);
return FALSE;
}
return FALSE;
}
- if ((storePrivate->dispatchQueue != NULL) || (storePrivate->rls != NULL)) {
- _SCErrorSet(kSCStatusInvalidArgument);
- return FALSE;
- }
-
- if (storePrivate->notifyStatus != NotifierNotRegistered) {
- // sorry, you can only have one notification registered at once...
+ if ((storePrivate->dispatchQueue != NULL) ||
+ (storePrivate->rls != NULL) ||
+ (storePrivate->notifyStatus != NotifierNotRegistered)) {
+ // if already scheduled
_SCErrorSet(kSCStatusNotifierActive);
return FALSE;
}
- /*
- * mark our using of the SCDynamicStore notifications, create and schedule
- * the notification port (storePrivate->rlsNotifyPort), and a bunch of other
- * "setup"
- */
+#ifdef DEBUG
+ SC_log(LOG_DEBUG, "schedule notifications for dispatch queue");
+#endif /* DEBUG */
+
+ //
+ // mark our using of the SCDynamicStore notifications, create and schedule
+ // the notification source/port (storePrivate->dispatchSource), and a bunch
+ // of other "setup"
+ //
storePrivate->notifyStatus = Using_NotifierInformViaDispatch;
- rlsSchedule((void*)store, NULL, NULL);
- if (storePrivate->rlsNotifyPort == NULL) {
- /* if we could not schedule the notification */
+
+ mp = acquireNotifyPort(store);
+ if (mp == MACH_PORT_NULL) {
+ // if we could not schedule the notification
_SCErrorSet(kSCStatusFailed);
goto cleanup;
}
dispatch_set_finalizer_f(storePrivate->dispatchGroup, (dispatch_function_t)CFRelease);
// create a dispatch source for the mach notifications
- mp = CFMachPortGetPort(storePrivate->rlsNotifyPort);
source = dispatch_source_create(DISPATCH_SOURCE_TYPE_MACH_RECV, mp, 0, queue);
if (source == NULL) {
SC_log(LOG_NOTICE, "dispatch_source_create() failed");
+
+ // remove our receive right
+#ifdef HAVE_MACHPORT_GUARDS
+ (void) mach_port_destruct(mach_task_self(), mp, 0, (mach_port_context_t)store);
+#else // HAVE_MACHPORT_GUARDS
+ (void) mach_port_mod_refs(mach_task_self(), mp, MACH_PORT_RIGHT_RECEIVE, -1);
+#endif // HAVE_MACHPORT_GUARDS
+
_SCErrorSet(kSCStatusFailed);
goto cleanup;
}
}
msgid = notify_msg.msg.header.msgh_id;
+ mach_msg_destroy(¬ify_msg.msg.header);
#ifdef DEBUG
SC_log(LOG_DEBUG, "dispatch source callback, queue rlsPerform");
});
dispatch_source_set_cancel_handler(source, ^{
+ __MACH_PORT_DEBUG((storePrivate->rlsNotifyPort != NULL),
+ "*** SCDynamicStoreSetDispatchQueue (before releasing source/port)",
+ mp);
+
+ // remove our receive right
+#ifdef HAVE_MACHPORT_GUARDS
+ (void) mach_port_destruct(mach_task_self(), mp, 0, (mach_port_context_t)store);
+#else // HAVE_MACHPORT_GUARDS
+ (void) mach_port_mod_refs(mach_task_self(), mp, MACH_PORT_RIGHT_RECEIVE, -1);
+#endif // HAVE_MACHPORT_GUARDS
+
+ // release source
dispatch_release(source);
});
cleanup :
+#ifdef DEBUG
+ SC_log(LOG_DEBUG, "cancel notifications for dispatch queue");
+#endif /* DEBUG */
+
CFRetain(store);
if (storePrivate->dispatchSource != NULL) {
drainQueue = storePrivate->dispatchQueue;
storePrivate->dispatchQueue = NULL;
- rlsCancel((void*)store, NULL, NULL);
-
if ((drainGroup != NULL) && (drainQueue != NULL)) {
dispatch_group_notify(drainGroup, drainQueue, ^{
// release group/queue references
/*
- * Copyright (c) 2000-2006, 2008-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2000-2006, 2008-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
__private_extern__ os_log_t
-__log_SCDynamicStore()
+__log_SCDynamicStore(void)
{
static os_log_t log = NULL;
/*
- * Copyright (c) 2002-2006, 2013, 2015, 2017 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2002-2006, 2013, 2015, 2017, 2018 Apple Computer, Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
void
-_SCDPluginExecInit()
+_SCDPluginExecInit(void)
{
struct sigaction act;
CFMachPortContext context = { 0
/*
- * Copyright (c) 2000-2004, 2006 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2000-2004, 2006, 2017, 2018 Apple Computer, Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
@param bundleVerbose A boolean value indicating whether verbose logging has
been enabled for this bundle.
*/
-typedef void (*SCDynamicStoreBundleLoadFunction) (CFBundleRef bundle,
+typedef void SCDynamicStoreBundleLoadFunction (CFBundleRef bundle,
Boolean bundleVerbose);
/*!
@param bundleName The name of the plug-in / bundle.
@param bundlePath The path name associated with the plug-in / bundle.
*/
-typedef void (*SCDynamicStoreBundleStartFunction) (const char *bundleName,
+typedef void SCDynamicStoreBundleStartFunction (const char *bundleName,
const char *bundlePath);
/*!
be used to initialize any configuration information and/or state
in the store.
*/
-typedef void (*SCDynamicStoreBundlePrimeFunction) (void);
+typedef void SCDynamicStoreBundlePrimeFunction (void);
/*!
Note: a plugin can delay shut down of the daemon by no more than
30 seconds.
*/
-typedef void (*SCDynamicStoreBundleStopFunction) (CFRunLoopSourceRef stopRls);
+typedef void SCDynamicStoreBundleStopFunction (CFRunLoopSourceRef stopRls);
/*!
/*
- * Copyright (c) 2000-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2000-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
* - initial revision
*/
-//#define DO_NOT_CRASH
-//#define DO_NOT_INFORM
-
#define SC_LOG_HANDLE _SC_LOG_DEFAULT()
#include <SystemConfiguration/SystemConfiguration.h>
#include <SystemConfiguration/SCValidation.h>
#include <dlfcn.h>
-#if TARGET_OS_EMBEDDED && !defined(DO_NOT_INFORM)
+#if TARGET_OS_IPHONE && !TARGET_OS_SIMULATOR && !defined(DO_NOT_INFORM)
#include <CoreFoundation/CFUserNotification.h>
-#endif // TARGET_OS_EMBEDDED && !defined(DO_NOT_INFORM)
+#endif // TARGET_OS_IPHONE && !TARGET_OS_SIMULATOR && !defined(DO_NOT_INFORM)
+
+/* CrashReporter "Application Specific Information" */
+#include <CrashReporterClient.h>
#define N_QUICK 32
}
-/* CrashReporter info */
-#if !TARGET_OS_IPHONE
-#include <CrashReporterClient.h>
-#else // !TARGET_OS_IPHONE
-const char *__crashreporter_info__ = NULL;
-asm(".desc ___crashreporter_info__, 0x10");
-#endif // !TARGET_OS_IPHONE
-
-
static Boolean
_SC_SimulateCrash(const char *crash_info, CFStringRef notifyHeader, CFStringRef notifyMessage)
{
-#if !TARGET_OS_EMBEDDED || defined(DO_NOT_INFORM)
+#if !defined(DO_NOT_INFORM)
#pragma unused(notifyHeader)
#pragma unused(notifyMessage)
-#endif // !TARGET_OS_EMBEDDED || defined(DO_NOT_INFORM)
+#endif // !defined(DO_NOT_INFORM)
#if TARGET_OS_SIMULATOR
#pragma unused(crash_info)
#endif // TARGET_OS_SIMULATOR
CFRelease(str);
}
-#if TARGET_OS_EMBEDDED && !defined(DO_NOT_INFORM)
+#if !defined(DO_NOT_INFORM)
if (ok && (notifyHeader != NULL) && (notifyMessage != NULL)) {
static Boolean warned = FALSE;
warned = TRUE;
}
}
-#endif // TARGET_OS_EMBEDDED && !defined(DO_NOT_INFORM)
+#endif // !defined(DO_NOT_INFORM)
#endif // !TARGET_OS_SIMULATOR
return ok;
Boolean ok = FALSE;
if (crash_info != NULL) {
-#if !TARGET_OS_IPHONE
CRSetCrashLogMessage(crash_info);
-#else // !TARGET_OS_IPHONE
- __crashreporter_info__ = crash_info;
-#endif // !TARGET_OS_IPHONE
-
SC_log(LOG_NOTICE, "%s", crash_info);
}
#endif // DO_NOT_CRASH
}
-#if !TARGET_OS_IPHONE
CRSetCrashLogMessage(NULL);
-#else // !TARGET_OS_IPHONE
- __crashreporter_info__ = NULL;
-#endif // !TARGET_OS_IPHONE
return;
}
/*
- * Copyright (c) 2000, 2001, 2003-2005, 2008-2010, 2015 Apple Inc. All rights reserved.
+ * Copyright (c) 2000, 2001, 2003-2005, 2008-2010, 2015, 2018 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,
* 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 _SCDYNAMICSTORE_H
-#ifdef USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS
-#include <SystemConfiguration/_SCDynamicStore.h>
-#else /* USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS */
#define _SCDYNAMICSTORE_H
-#include <Availability.h>
+#include <os/availability.h>
#include <TargetConditionals.h>
#include <sys/cdefs.h>
#include <dispatch/dispatch.h>
@discussion Returns the type identifier of all SCDynamicStore instances.
*/
CFTypeID
-SCDynamicStoreGetTypeID (void) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+SCDynamicStoreGetTypeID (void) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
CFStringRef name,
SCDynamicStoreCallBack __nullable callout,
SCDynamicStoreContext * __nullable context
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCDynamicStoreCreateWithOptions
CFDictionaryRef __nullable storeOptions,
SCDynamicStoreCallBack __nullable callout,
SCDynamicStoreContext * __nullable context
- ) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.4)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
-extern const CFStringRef kSCDynamicStoreUseSessionKeys __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/); /* CFBoolean */
+extern const CFStringRef kSCDynamicStoreUseSessionKeys API_AVAILABLE(macos(10.4)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0)); /* CFBoolean */
/*!
@function SCDynamicStoreCreateRunLoopSource
CFAllocatorRef __nullable allocator,
SCDynamicStoreRef store,
CFIndex order
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCDynamicStoreSetDispatchQueue
SCDynamicStoreSetDispatchQueue (
SCDynamicStoreRef store,
dispatch_queue_t __nullable queue
- ) __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.6)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCDynamicStoreCopyKeyList
SCDynamicStoreCopyKeyList (
SCDynamicStoreRef __nullable store,
CFStringRef pattern
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCDynamicStoreAddValue
SCDynamicStoreRef __nullable store,
CFStringRef key,
CFPropertyListRef value
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCDynamicStoreAddTemporaryValue
SCDynamicStoreRef store,
CFStringRef key,
CFPropertyListRef value
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCDynamicStoreCopyValue
SCDynamicStoreCopyValue (
SCDynamicStoreRef __nullable store,
CFStringRef key
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCDynamicStoreCopyMultiple
SCDynamicStoreRef __nullable store,
CFArrayRef __nullable keys,
CFArrayRef __nullable patterns
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCDynamicStoreSetValue
SCDynamicStoreRef __nullable store,
CFStringRef key,
CFPropertyListRef value
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCDynamicStoreSetMultiple
CFDictionaryRef __nullable keysToSet,
CFArrayRef __nullable keysToRemove,
CFArrayRef __nullable keysToNotify
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCDynamicStoreRemoveValue
SCDynamicStoreRemoveValue (
SCDynamicStoreRef __nullable store,
CFStringRef key
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCDynamicStoreNotifyValue
SCDynamicStoreNotifyValue (
SCDynamicStoreRef __nullable store,
CFStringRef key
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCDynamicStoreSetNotificationKeys
SCDynamicStoreRef store,
CFArrayRef __nullable keys,
CFArrayRef __nullable patterns
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCDynamicStoreCopyNotifiedKeys
CFArrayRef __nullable
SCDynamicStoreCopyNotifiedKeys (
SCDynamicStoreRef store
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
__END_DECLS
CF_ASSUME_NONNULL_END
CF_IMPLICIT_BRIDGING_DISABLED
-#endif /* USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS */
#endif /* _SCDYNAMICSTORE_H */
/*
- * Copyright (c) 2001, 2002, 2004, 2005, 2008, 2012, 2015 Apple Inc. All rights reserved.
+ * Copyright (c) 2001, 2002, 2004, 2005, 2008, 2012, 2015, 2018 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,
* 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 _SCDYNAMICSTORECOPYDHCPINFO_H
-#ifdef USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS
-#include <SystemConfiguration/_SCDynamicStoreCopyDHCPInfo.h>
-#else /* USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS */
#define _SCDYNAMICSTORECOPYDHCPINFO_H
-#include <Availability.h>
+#include <os/availability.h>
#include <sys/cdefs.h>
#include <CoreFoundation/CoreFoundation.h>
#include <SystemConfiguration/SCDynamicStore.h>
*/
CFDictionaryRef __nullable
SCDynamicStoreCopyDHCPInfo (SCDynamicStoreRef __nullable store,
- CFStringRef __nullable serviceID) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ CFStringRef __nullable serviceID) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function DHCPInfoGetOptionData
*/
CFDataRef __nullable
DHCPInfoGetOptionData (CFDictionaryRef info,
- UInt8 code) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ UInt8 code) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function DHCPInfoGetLeaseStartTime
The return value must NOT be released.
*/
CFDateRef __nullable
-DHCPInfoGetLeaseStartTime (CFDictionaryRef info) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+DHCPInfoGetLeaseStartTime (CFDictionaryRef info) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
The return value must NOT be released.
*/
CFDateRef __nullable
-DHCPInfoGetLeaseExpirationTime (CFDictionaryRef info) __OSX_AVAILABLE_STARTING(__MAC_10_8,__IPHONE_6_0/*SPI*/);
+DHCPInfoGetLeaseExpirationTime (CFDictionaryRef info) API_AVAILABLE(macos(10.8)) SPI_AVAILABLE(ios(6.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
__END_DECLS
CF_ASSUME_NONNULL_END
CF_IMPLICIT_BRIDGING_DISABLED
-#endif /* USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS */
#endif /* _SCDYNAMICSTORECOPYDHCPINFO_H */
/*
- * Copyright (c) 2000-2005, 2008, 2015 Apple Inc. All rights reserved.
+ * Copyright (c) 2000-2005, 2008, 2015, 2018 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,
* 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 _SCDYNAMICSTORECOPYSPECIFIC_H
-#ifdef USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS
-#include <SystemConfiguration/_SCDynamicStoreCopySpecific.h>
-#else /* USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS */
#define _SCDYNAMICSTORECOPYSPECIFIC_H
-#include <Availability.h>
+#include <os/availability.h>
#include <sys/cdefs.h>
#include <sys/types.h>
#include <CoreFoundation/CoreFoundation.h>
SCDynamicStoreCopyComputerName (
SCDynamicStoreRef __nullable store,
CFStringEncoding * __nullable nameEncoding
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCDynamicStoreCopyConsoleUser
SCDynamicStoreRef __nullable store,
uid_t * __nullable uid,
gid_t * __nullable gid
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_NA);
+ ) API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
/*!
@function SCDynamicStoreCopyLocalHostName
CFStringRef __nullable
SCDynamicStoreCopyLocalHostName (
SCDynamicStoreRef __nullable store
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCDynamicStoreCopyLocation
CFStringRef __nullable
SCDynamicStoreCopyLocation (
SCDynamicStoreRef __nullable store
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_NA);
+ ) API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
/*!
@function SCDynamicStoreCopyProxies
CFDictionaryRef __nullable
SCDynamicStoreCopyProxies (
SCDynamicStoreRef __nullable store
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
__END_DECLS
CF_ASSUME_NONNULL_END
CF_IMPLICIT_BRIDGING_DISABLED
-#endif /* USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS */
#endif /* _SCDYNAMICSTORECOPYSPECIFIC_H */
/*
- * Copyright (c) 2003-2005, 2008 Apple Inc. All rights reserved.
+ * Copyright (c) 2003-2005, 2008, 2018 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,
* 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 _SCDYNAMICSTORECOPYSPECIFICPRIVATE_H
#define _SCDYNAMICSTORECOPYSPECIFICPRIVATE_H
-#include <Availability.h>
+#include <os/availability.h>
#include <sys/cdefs.h>
#include <CoreFoundation/CoreFoundation.h>
#include <SystemConfiguration/SCDynamicStore.h>
* Predefined keys for the console session dictionaries
*/
extern const CFStringRef kSCConsoleSessionID /* value is CFNumber */
- __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_NA);
+ API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
extern const CFStringRef kSCConsoleSessionUserName /* value is CFString */
- __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_NA);
+ API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
extern const CFStringRef kSCConsoleSessionUID /* value is CFNumber (a uid_t) */
- __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_NA);
+ API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
extern const CFStringRef kSCConsoleSessionConsoleSet /* value is CFNumber */
- __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_NA);
+ API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
extern const CFStringRef kSCConsoleSessionOnConsole /* value is CFBoolean */
- __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_NA);
+ API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
extern const CFStringRef kSCConsoleSessionLoginDone /* value is CFBoolean */
- __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_NA);
+ API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
extern const CFStringRef kSCConsoleSessionSystemSafeBoot /* value is CFBoolean */
- __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_NA);
+ API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
extern const CFStringRef kSCConsoleSessionLoginwindowSafeLogin /* value is CFBoolean */
- __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_NA);
+ API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
/*!
@function SCDynamicStoreCopyConsoleInformation
CFArrayRef
SCDynamicStoreCopyConsoleInformation (
SCDynamicStoreRef store
- ) __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_NA);
+ ) API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
__END_DECLS
-#endif /* _SCDYNAMICSTORECOPYSPECIFICPRIVATE_H */
+#endif /* _SCDYNAMICSTORECOPYSPECIFICPRIVATE_H */
/*
- * Copyright (c) 2000-2004, 2006, 2009-2011, 2013, 2015-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2000-2004, 2006, 2009-2011, 2013, 2015-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#ifndef _SCDYNAMICSTOREINTERNAL_H
#define _SCDYNAMICSTOREINTERNAL_H
-#include <Availability.h>
+#include <os/availability.h>
#include <TargetConditionals.h>
#include <sys/cdefs.h>
#include <dispatch/dispatch.h>
__BEGIN_DECLS
+__private_extern__
os_log_t
-__log_SCDynamicStore ();
+__log_SCDynamicStore (void);
SCDynamicStorePrivateRef
__SCDynamicStoreCreatePrivate (CFAllocatorRef allocator,
SCDynamicStoreCallBack callout,
SCDynamicStoreContext *context);
+__private_extern__
SCDynamicStoreRef
__SCDynamicStoreNullSession (void);
+__private_extern__
Boolean
__SCDynamicStoreCheckRetryAndHandleError(SCDynamicStoreRef store,
kern_return_t status,
int *sc_status,
const char *func);
+__private_extern__
Boolean
__SCDynamicStoreReconnectNotifications (SCDynamicStoreRef store);
__END_DECLS
-#endif /* _SCDYNAMICSTOREINTERNAL_H */
+#endif /* _SCDYNAMICSTOREINTERNAL_H */
/*
- * Copyright (c) 2000-2002, 2004, 2005, 2008, 2015 Apple Inc. All rights reserved.
+ * Copyright (c) 2000-2002, 2004, 2005, 2008, 2015, 2018 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,
* 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 _SCDYNAMICSTOREKEY_H
-#ifdef USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS
-#include <SystemConfiguration/_SCDynamicStoreKey.h>
-#else /* USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS */
#define _SCDYNAMICSTOREKEY_H
-#include <Availability.h>
+#include <os/availability.h>
#include <sys/cdefs.h>
#include <CoreFoundation/CoreFoundation.h>
CFAllocatorRef __nullable allocator,
CFStringRef fmt,
...
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCDynamicStoreKeyCreateNetworkGlobalEntity
CFAllocatorRef __nullable allocator,
CFStringRef domain,
CFStringRef entity
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCDynamicStoreKeyCreateNetworkInterface
SCDynamicStoreKeyCreateNetworkInterface (
CFAllocatorRef __nullable allocator,
CFStringRef domain
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCDynamicStoreKeyCreateNetworkInterfaceEntity
CFStringRef domain,
CFStringRef ifname,
CFStringRef __nullable entity
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCDynamicStoreKeyCreateNetworkServiceEntity
CFStringRef domain,
CFStringRef serviceID,
CFStringRef __nullable entity
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCDynamicStoreKeyCreateComputerName
CFStringRef
SCDynamicStoreKeyCreateComputerName (
CFAllocatorRef __nullable allocator
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCDynamicStoreKeyCreateConsoleUser
CFStringRef
SCDynamicStoreKeyCreateConsoleUser (
CFAllocatorRef __nullable allocator
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_NA);
+ ) API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
/*!
@function SCDynamicStoreKeyCreateHostNames
CFStringRef
SCDynamicStoreKeyCreateHostNames (
CFAllocatorRef __nullable allocator
- ) __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.2)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCDynamicStoreKeyCreateLocation
CFStringRef
SCDynamicStoreKeyCreateLocation (
CFAllocatorRef __nullable allocator
- ) __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.2)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCDynamicStoreKeyCreateProxies
CFStringRef
SCDynamicStoreKeyCreateProxies (
CFAllocatorRef __nullable allocator
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
__END_DECLS
CF_ASSUME_NONNULL_END
CF_IMPLICIT_BRIDGING_DISABLED
-#endif /* USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS */
#endif /* _SCDYNAMICSTOREKEY_H */
/*
- * Copyright (c) 2000, 2001, 2004, 2005, 2010, 2011, 2013, 2015 Apple Inc. All rights reserved.
+ * Copyright (c) 2000, 2001, 2004, 2005, 2010, 2011, 2013, 2015, 2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#ifndef _SCDYNAMICSTOREPRIVATE_H
#define _SCDYNAMICSTOREPRIVATE_H
+#include <TargetConditionals.h>
+#include <os/availability.h>
#include <sys/cdefs.h>
#include <mach/message.h>
#include <CoreFoundation/CoreFoundation.h>
SCDynamicStoreSetDisconnectCallBack (
SCDynamicStoreRef store,
SCDynamicStoreDisconnectCallBack callout
- ) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(5.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
Boolean
SCDynamicStoreSnapshot (SCDynamicStoreRef store);
__END_DECLS
-#endif /* _SCDYNAMICSTOREPRIVATE_H */
+#endif /* _SCDYNAMICSTOREPRIVATE_H */
/*
- * Copyright (c) 2001, 2003-2005, 2008 Apple Inc. All rights reserved.
+ * Copyright (c) 2001, 2003-2005, 2008, 2018 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,
* 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 _SCDYNAMICSTORESETSPECIFICPRIVATE_H
#define _SCDYNAMICSTORESETSPECIFICPRIVATE_H
-#include <Availability.h>
+#include <os/availability.h>
#include <sys/cdefs.h>
#include <SystemConfiguration/SCDynamicStore.h>
uid_t uid,
gid_t gid,
CFArrayRef sessions
- ) __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_NA);
+ ) API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
/*!
@function SCDynamicStoreSetConsoleUser
const char *user,
uid_t uid,
gid_t gid
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_NA);
+ ) API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
__END_DECLS
-#endif /* _SCDYNAMICSTORESETSPECIFICPRIVATE_H */
+#endif /* _SCDYNAMICSTORESETSPECIFICPRIVATE_H */
/*
- * Copyright (c) 2002, 2004, 2006, 2010, 2011, 2015, 2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2002, 2004, 2006, 2010, 2011, 2015, 2017, 2018 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,
* 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@
*/
}
+#if !TARGET_OS_IPHONE
CFStringRef
SCDynamicStoreCopyLocation(SCDynamicStoreRef store)
{
return location;
}
+#endif // !TARGET_OS_IPHONE
/*
- * Copyright (c) 2000, 2001, 2003-2007 Apple Inc. All rights reserved.
+ * Copyright (c) 2000, 2001, 2003-2007, 2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
/*
- * Copyright (c) 2000, 2001, 2003-2009, 2015 Apple Inc. All rights reserved.
+ * Copyright (c) 2000, 2001, 2003-2009, 2015, 2018 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,
* 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 _SCNETWORK_H
#define _SCNETWORK_H
-#include <Availability.h>
+#include <os/availability.h>
#include <sys/cdefs.h>
#include <sys/types.h>
#include <sys/socket.h>
const struct sockaddr *address,
socklen_t addrlen,
SCNetworkConnectionFlags *flags
- ) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_6,__IPHONE_NA,__IPHONE_NA);
+ ) API_DEPRECATED("No longer supported", macos(10.1,10.6)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
/*!
@function SCNetworkCheckReachabilityByName
SCNetworkCheckReachabilityByName (
const char *nodename,
SCNetworkConnectionFlags *flags
- ) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_6,__IPHONE_NA,__IPHONE_NA);
+ ) API_DEPRECATED("No longer supported", macos(10.1,10.6)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
/*!
@function SCNetworkInterfaceRefreshConfiguration
Boolean
SCNetworkInterfaceRefreshConfiguration (
CFStringRef ifName
- ) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);
+ ) API_DEPRECATED("No longer supported", macos(10.1,10.5)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
__END_DECLS
CF_ASSUME_NONNULL_END
CF_IMPLICIT_BRIDGING_DISABLED
-#endif /* _SCNETWORK_H */
+#endif /* _SCNETWORK_H */
/*
- * Copyright (c) 2004-2011, 2015, 2016 Apple Inc. All rights reserved.
+ * Copyright (c) 2004-2011, 2015, 2016, 2018 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,
* 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
-#ifdef USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS
-#include <SystemConfiguration/_SCNetworkConfiguration.h>
-#else /* USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS */
#define _SCNETWORKCONFIGURATION_H
-#include <Availability.h>
+#include <os/availability.h>
#include <TargetConditionals.h>
#include <sys/cdefs.h>
#include <CoreFoundation/CoreFoundation.h>
/*!
@const kSCNetworkInterfaceType6to4
*/
-extern const CFStringRef kSCNetworkInterfaceType6to4 __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCNetworkInterfaceType6to4 API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@const kSCNetworkInterfaceTypeBluetooth
*/
-extern const CFStringRef kSCNetworkInterfaceTypeBluetooth __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCNetworkInterfaceTypeBluetooth API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@const kSCNetworkInterfaceTypeBond
*/
-extern const CFStringRef kSCNetworkInterfaceTypeBond __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCNetworkInterfaceTypeBond API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@const kSCNetworkInterfaceTypeEthernet
*/
-extern const CFStringRef kSCNetworkInterfaceTypeEthernet __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCNetworkInterfaceTypeEthernet API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@const kSCNetworkInterfaceTypeFireWire
*/
-extern const CFStringRef kSCNetworkInterfaceTypeFireWire __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCNetworkInterfaceTypeFireWire API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@const kSCNetworkInterfaceTypeIEEE80211
*/
-extern const CFStringRef kSCNetworkInterfaceTypeIEEE80211 __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/); // IEEE 802.11, AirPort
+extern const CFStringRef kSCNetworkInterfaceTypeIEEE80211 API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0)); // IEEE 802.11, AirPort
/*!
@const kSCNetworkInterfaceTypeIPSec
*/
-extern const CFStringRef kSCNetworkInterfaceTypeIPSec __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCNetworkInterfaceTypeIPSec API_AVAILABLE(macos(10.5))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@const kSCNetworkInterfaceTypeIrDA
*/
-extern const CFStringRef kSCNetworkInterfaceTypeIrDA __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCNetworkInterfaceTypeIrDA API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@const kSCNetworkInterfaceTypeL2TP
*/
-extern const CFStringRef kSCNetworkInterfaceTypeL2TP __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCNetworkInterfaceTypeL2TP API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@const kSCNetworkInterfaceTypeModem
*/
-extern const CFStringRef kSCNetworkInterfaceTypeModem __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCNetworkInterfaceTypeModem API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@const kSCNetworkInterfaceTypePPP
*/
-extern const CFStringRef kSCNetworkInterfaceTypePPP __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCNetworkInterfaceTypePPP API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@const kSCNetworkInterfaceTypePPTP
*/
-extern const CFStringRef kSCNetworkInterfaceTypePPTP __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4,__MAC_10_12,__IPHONE_2_0/*SPI*/,__IPHONE_10_0/*SPI*/);
+extern const CFStringRef kSCNetworkInterfaceTypePPTP API_DEPRECATED("No longer supported", macos(10.4,10.12))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
+
/*!
@const kSCNetworkInterfaceTypeSerial
*/
-extern const CFStringRef kSCNetworkInterfaceTypeSerial __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCNetworkInterfaceTypeSerial API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@const kSCNetworkInterfaceTypeVLAN
*/
-extern const CFStringRef kSCNetworkInterfaceTypeVLAN __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCNetworkInterfaceTypeVLAN API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@const kSCNetworkInterfaceTypeWWAN
*/
-extern const CFStringRef kSCNetworkInterfaceTypeWWAN __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCNetworkInterfaceTypeWWAN API_AVAILABLE(macos(10.5))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/* special network interfaces (and types) */
/*!
@const kSCNetworkInterfaceTypeIPv4
*/
-extern const CFStringRef kSCNetworkInterfaceTypeIPv4 __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCNetworkInterfaceTypeIPv4 API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@const kSCNetworkInterfaceIPv4
interfaces (e.g. 6to4, IPSec, PPTP, L2TP) over an existing
IPv4 network.
*/
-extern const SCNetworkInterfaceRef kSCNetworkInterfaceIPv4 __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+extern const SCNetworkInterfaceRef kSCNetworkInterfaceIPv4 API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@group Interface configuration (Bond)
/*!
@const kSCBondStatusDeviceAggregationStatus
*/
-extern const CFStringRef kSCBondStatusDeviceAggregationStatus /* CFNumber */ __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCBondStatusDeviceAggregationStatus /* CFNumber */ API_AVAILABLE(macos(10.4)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
/*!
@const kSCBondStatusDeviceCollecting
*/
-extern const CFStringRef kSCBondStatusDeviceCollecting /* CFNumber (0 or 1) */ __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCBondStatusDeviceCollecting /* CFNumber (0 or 1) */ API_AVAILABLE(macos(10.4)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
/*!
@const kSCBondStatusDeviceDistributing
*/
-extern const CFStringRef kSCBondStatusDeviceDistributing /* CFNumber (0 or 1) */ __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCBondStatusDeviceDistributing /* CFNumber (0 or 1) */ API_AVAILABLE(macos(10.4)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
/*!
@group Interface configuration (VLAN)
/*!
@const kSCNetworkProtocolTypeDNS
*/
-extern const CFStringRef kSCNetworkProtocolTypeDNS __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCNetworkProtocolTypeDNS API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@const kSCNetworkProtocolTypeIPv4
*/
-extern const CFStringRef kSCNetworkProtocolTypeIPv4 __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCNetworkProtocolTypeIPv4 API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@const kSCNetworkProtocolTypeIPv6
*/
-extern const CFStringRef kSCNetworkProtocolTypeIPv6 __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCNetworkProtocolTypeIPv6 API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@const kSCNetworkProtocolTypeProxies
*/
-extern const CFStringRef kSCNetworkProtocolTypeProxies __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCNetworkProtocolTypeProxies API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@const kSCNetworkProtocolTypeSMB
*/
-extern const CFStringRef kSCNetworkProtocolTypeSMB __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_NA);
+extern const CFStringRef kSCNetworkProtocolTypeSMB API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
/*!
@group Service configuration
@discussion Returns the type identifier of all SCNetworkInterface instances.
*/
CFTypeID
-SCNetworkInterfaceGetTypeID (void) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+SCNetworkInterfaceGetTypeID (void) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkInterfaceCopyAll
You must release the returned value.
*/
CFArrayRef /* of SCNetworkInterfaceRef's */
-SCNetworkInterfaceCopyAll (void) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+SCNetworkInterfaceCopyAll (void) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkInterfaceGetSupportedInterfaceTypes
NULL if no interface types are supported.
*/
CFArrayRef /* of kSCNetworkInterfaceTypeXXX CFStringRef's */ __nullable
-SCNetworkInterfaceGetSupportedInterfaceTypes (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+SCNetworkInterfaceGetSupportedInterfaceTypes (SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkInterfaceGetSupportedProtocolTypes
NULL if no protocol types are supported.
*/
CFArrayRef /* of kSCNetworkProtocolTypeXXX CFStringRef's */ __nullable
-SCNetworkInterfaceGetSupportedProtocolTypes (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+SCNetworkInterfaceGetSupportedProtocolTypes (SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkInterfaceCreateWithInterface
*/
SCNetworkInterfaceRef __nullable
SCNetworkInterfaceCreateWithInterface (SCNetworkInterfaceRef interface,
- CFStringRef interfaceType) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+ CFStringRef interfaceType) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkInterfaceGetBSDName
NULL if no BSD name is available.
*/
CFStringRef __nullable
-SCNetworkInterfaceGetBSDName (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+SCNetworkInterfaceGetBSDName (SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkInterfaceGetConfiguration
or an error was encountered.
*/
CFDictionaryRef __nullable
-SCNetworkInterfaceGetConfiguration (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+SCNetworkInterfaceGetConfiguration (SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkInterfaceGetExtendedConfiguration
*/
CFDictionaryRef __nullable
SCNetworkInterfaceGetExtendedConfiguration (SCNetworkInterfaceRef interface,
- CFStringRef extendedType) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+ CFStringRef extendedType) API_AVAILABLE(macos(10.5))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkInterfaceGetHardwareAddressString
@result A string representing the hardware (MAC) address for the interface.
*/
CFStringRef __nullable
-SCNetworkInterfaceGetHardwareAddressString (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+SCNetworkInterfaceGetHardwareAddressString (SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkInterfaceGetInterface
NULL if this is a leaf interface.
*/
SCNetworkInterfaceRef __nullable
-SCNetworkInterfaceGetInterface (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+SCNetworkInterfaceGetInterface (SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkInterfaceGetInterfaceType
@result The interface type.
*/
CFStringRef __nullable
-SCNetworkInterfaceGetInterfaceType (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+SCNetworkInterfaceGetInterfaceType (SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkInterfaceGetLocalizedDisplayName
NULL if no name is available.
*/
CFStringRef __nullable
-SCNetworkInterfaceGetLocalizedDisplayName (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+SCNetworkInterfaceGetLocalizedDisplayName (SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkInterfaceSetConfiguration
*/
Boolean
SCNetworkInterfaceSetConfiguration (SCNetworkInterfaceRef interface,
- CFDictionaryRef __nullable config) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+ CFDictionaryRef __nullable config) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkInterfaceSetExtendedConfiguration
Boolean
SCNetworkInterfaceSetExtendedConfiguration (SCNetworkInterfaceRef interface,
CFStringRef extendedType,
- CFDictionaryRef __nullable config) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+ CFDictionaryRef __nullable config) API_AVAILABLE(macos(10.5))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#pragma mark -
CFDictionaryRef __nullable * __nullable current,
CFDictionaryRef __nullable * __nullable active,
CFArrayRef __nullable * __nullable available,
- Boolean filter) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+ Boolean filter) API_AVAILABLE(macos(10.5))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkInterfaceCopyMediaSubTypes
100baseTX, etc). NULL if no subtypes are available.
*/
CFArrayRef __nullable
-SCNetworkInterfaceCopyMediaSubTypes (CFArrayRef available) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+SCNetworkInterfaceCopyMediaSubTypes (CFArrayRef available) API_AVAILABLE(macos(10.5))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkInterfaceCopyMediaSubTypeOptions
*/
CFArrayRef __nullable
SCNetworkInterfaceCopyMediaSubTypeOptions (CFArrayRef available,
- CFStringRef subType) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+ CFStringRef subType) API_AVAILABLE(macos(10.5))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkInterfaceCopyMTU
@result TRUE if requested information has been returned.
*/
Boolean
-SCNetworkInterfaceCopyMTU (SCNetworkInterfaceRef interface,
- int * __nullable mtu_cur,
- int * __nullable mtu_min,
- int * __nullable mtu_max) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+SCNetworkInterfaceCopyMTU (SCNetworkInterfaceRef interface,
+ int * __nullable mtu_cur,
+ int * __nullable mtu_min,
+ int * __nullable mtu_max) API_AVAILABLE(macos(10.5))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkInterfaceSetMediaOptions
Boolean
SCNetworkInterfaceSetMediaOptions (SCNetworkInterfaceRef interface,
CFStringRef subtype,
- CFArrayRef options) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+ CFArrayRef options) API_AVAILABLE(macos(10.5))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkInterfaceSetMTU
*/
Boolean
SCNetworkInterfaceSetMTU (SCNetworkInterfaceRef interface,
- int mtu) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+ int mtu) API_AVAILABLE(macos(10.5))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkInterfaceForceConfigurationRefresh
@result Returns TRUE if the notification was sent; FALSE otherwise.
*/
Boolean
-SCNetworkInterfaceForceConfigurationRefresh (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+SCNetworkInterfaceForceConfigurationRefresh (SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.5))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@group Interface configuration (Bond)
You must release the returned value.
*/
CFArrayRef /* of SCBondInterfaceRef's */
-SCBondInterfaceCopyAll (SCPreferencesRef prefs) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/);
+SCBondInterfaceCopyAll (SCPreferencesRef prefs) API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
/*!
@function SCBondInterfaceCopyAvailableMemberInterfaces
You must release the returned value.
*/
CFArrayRef /* of SCNetworkInterfaceRef's */
-SCBondInterfaceCopyAvailableMemberInterfaces (SCPreferencesRef prefs) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/);
+SCBondInterfaceCopyAvailableMemberInterfaces (SCPreferencesRef prefs) API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
/*!
@function SCBondInterfaceCreate
You must release the returned value.
*/
SCBondInterfaceRef __nullable
-SCBondInterfaceCreate (SCPreferencesRef prefs) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/);
+SCBondInterfaceCreate (SCPreferencesRef prefs) API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
/*!
@function SCBondInterfaceRemove
@result TRUE if the interface was removed; FALSE if an error was encountered.
*/
Boolean
-SCBondInterfaceRemove (SCBondInterfaceRef bond) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/);
+SCBondInterfaceRemove (SCBondInterfaceRef bond) API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
/*!
@function SCBondInterfaceGetMemberInterfaces
@result The list of interfaces.
*/
CFArrayRef /* of SCNetworkInterfaceRef's */ __nullable
-SCBondInterfaceGetMemberInterfaces (SCBondInterfaceRef bond) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/);
+SCBondInterfaceGetMemberInterfaces (SCBondInterfaceRef bond) API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
/*!
@function SCBondInterfaceGetOptions
NULL if no changes to the default configuration have been saved.
*/
CFDictionaryRef __nullable
-SCBondInterfaceGetOptions (SCBondInterfaceRef bond) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/);
+SCBondInterfaceGetOptions (SCBondInterfaceRef bond) API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
/*!
@function SCBondInterfaceSetMemberInterfaces
Boolean
SCBondInterfaceSetMemberInterfaces (SCBondInterfaceRef bond,
CFArrayRef members) /* of SCNetworkInterfaceRef's */
- __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/);
+ API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
/*!
@function SCBondInterfaceSetLocalizedDisplayName
*/
Boolean
SCBondInterfaceSetLocalizedDisplayName (SCBondInterfaceRef bond,
- CFStringRef newName) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/);
+ CFStringRef newName) API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
/*!
@function SCBondInterfaceSetOptions
*/
Boolean
SCBondInterfaceSetOptions (SCBondInterfaceRef bond,
- CFDictionaryRef newOptions) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/);
+ CFDictionaryRef newOptions) API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
#pragma mark -
You must release the returned value.
*/
SCBondStatusRef __nullable
-SCBondInterfaceCopyStatus (SCBondInterfaceRef bond) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/);
+SCBondInterfaceCopyStatus (SCBondInterfaceRef bond) API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
/*!
@function SCBondStatusGetTypeID
@discussion Returns the type identifier of all SCBondStatus instances.
*/
CFTypeID
-SCBondStatusGetTypeID (void) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/);
+SCBondStatusGetTypeID (void) API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
/*!
@function SCBondStatusGetMemberInterfaces
@result The list of interfaces.
*/
CFArrayRef __nullable /* of SCNetworkInterfaceRef's */
-SCBondStatusGetMemberInterfaces (SCBondStatusRef bondStatus) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/);
+SCBondStatusGetMemberInterfaces (SCBondStatusRef bondStatus) API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
/*!
@function SCBondStatusGetInterfaceStatus
*/
CFDictionaryRef __nullable
SCBondStatusGetInterfaceStatus (SCBondStatusRef bondStatus,
- SCNetworkInterfaceRef __nullable interface) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/);
+ SCNetworkInterfaceRef __nullable interface) API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
/*!
@group Interface configuration (VLAN)
You must release the returned value.
*/
CFArrayRef /* of SCVLANInterfaceRef's */
-SCVLANInterfaceCopyAll (SCPreferencesRef prefs) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/);
+SCVLANInterfaceCopyAll (SCPreferencesRef prefs) API_AVAILABLE(macos(10.5))
+ SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCVLANInterfaceCopyAvailablePhysicalInterfaces
You must release the returned value.
*/
CFArrayRef /* of SCNetworkInterfaceRef's */
-SCVLANInterfaceCopyAvailablePhysicalInterfaces (void) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/);
+SCVLANInterfaceCopyAvailablePhysicalInterfaces (void) API_AVAILABLE(macos(10.5))
+ SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCVLANInterfaceCreate
SCVLANInterfaceRef __nullable
SCVLANInterfaceCreate (SCPreferencesRef prefs,
SCNetworkInterfaceRef physical,
- CFNumberRef tag) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/);
+ CFNumberRef tag) API_AVAILABLE(macos(10.5))
+ SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCVLANInterfaceRemove
@result TRUE if the interface was removed; FALSE if an error was encountered.
*/
Boolean
-SCVLANInterfaceRemove (SCVLANInterfaceRef vlan) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/);
+SCVLANInterfaceRemove (SCVLANInterfaceRef vlan) API_AVAILABLE(macos(10.5))
+ SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCVLANInterfaceGetPhysicalInterface
@result The list of interfaces.
*/
SCNetworkInterfaceRef __nullable
-SCVLANInterfaceGetPhysicalInterface (SCVLANInterfaceRef vlan) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/);
+SCVLANInterfaceGetPhysicalInterface (SCVLANInterfaceRef vlan) API_AVAILABLE(macos(10.5))
+ SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCVLANInterfaceGetTag
@result The tag.
*/
CFNumberRef __nullable
-SCVLANInterfaceGetTag (SCVLANInterfaceRef vlan) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/);
+SCVLANInterfaceGetTag (SCVLANInterfaceRef vlan) API_AVAILABLE(macos(10.5))
+ SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCVLANInterfaceGetOptions
NULL if no changes to the default configuration have been saved.
*/
CFDictionaryRef __nullable
-SCVLANInterfaceGetOptions (SCVLANInterfaceRef vlan) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/);
+SCVLANInterfaceGetOptions (SCVLANInterfaceRef vlan) API_AVAILABLE(macos(10.5))
+ SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCVLANInterfaceSetPhysicalInterfaceAndTag
Boolean
SCVLANInterfaceSetPhysicalInterfaceAndTag (SCVLANInterfaceRef vlan,
SCNetworkInterfaceRef physical,
- CFNumberRef tag) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/);
+ CFNumberRef tag) API_AVAILABLE(macos(10.5))
+ SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCVLANInterfaceSetLocalizedDisplayName
*/
Boolean
SCVLANInterfaceSetLocalizedDisplayName (SCVLANInterfaceRef vlan,
- CFStringRef newName) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/);
+ CFStringRef newName) API_AVAILABLE(macos(10.5))
+ SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCVLANInterfaceSetOptions
*/
Boolean
SCVLANInterfaceSetOptions (SCVLANInterfaceRef vlan,
- CFDictionaryRef newOptions) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/);
+ CFDictionaryRef newOptions) API_AVAILABLE(macos(10.5))
+ SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/* --------------------------------------------------------------------------------
@discussion Returns the type identifier of all SCNetworkProtocol instances.
*/
CFTypeID
-SCNetworkProtocolGetTypeID (void) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+SCNetworkProtocolGetTypeID (void) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkProtocolGetConfiguration
or an error was encountered.
*/
CFDictionaryRef __nullable
-SCNetworkProtocolGetConfiguration (SCNetworkProtocolRef protocol) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+SCNetworkProtocolGetConfiguration (SCNetworkProtocolRef protocol) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkProtocolGetEnabled
@result TRUE if the protocol is enabled.
*/
Boolean
-SCNetworkProtocolGetEnabled (SCNetworkProtocolRef protocol) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+SCNetworkProtocolGetEnabled (SCNetworkProtocolRef protocol) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkProtocolGetProtocolType
@result The protocol type.
*/
CFStringRef __nullable
-SCNetworkProtocolGetProtocolType (SCNetworkProtocolRef protocol) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+SCNetworkProtocolGetProtocolType (SCNetworkProtocolRef protocol) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkProtocolSetConfiguration
*/
Boolean
SCNetworkProtocolSetConfiguration (SCNetworkProtocolRef protocol,
- CFDictionaryRef __nullable config) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+ CFDictionaryRef __nullable config) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkProtocolSetEnabled
*/
Boolean
SCNetworkProtocolSetEnabled (SCNetworkProtocolRef protocol,
- Boolean enabled) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+ Boolean enabled) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/* --------------------------------------------------------------------------------
* SERVICES
@discussion Returns the type identifier of all SCNetworkService instances.
*/
CFTypeID
-SCNetworkServiceGetTypeID (void) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+SCNetworkServiceGetTypeID (void) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkServiceAddProtocolType
*/
Boolean
SCNetworkServiceAddProtocolType (SCNetworkServiceRef service,
- CFStringRef protocolType) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+ CFStringRef protocolType) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkServiceCopyAll
You must release the returned value.
*/
CFArrayRef /* of SCNetworkServiceRef's */ __nullable
-SCNetworkServiceCopyAll (SCPreferencesRef prefs) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+SCNetworkServiceCopyAll (SCPreferencesRef prefs) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkServiceCopyProtocols
You must release the returned value.
*/
CFArrayRef /* of SCNetworkProtocolRef's */ __nullable
-SCNetworkServiceCopyProtocols (SCNetworkServiceRef service) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+SCNetworkServiceCopyProtocols (SCNetworkServiceRef service) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkServiceCreate
*/
SCNetworkServiceRef __nullable
SCNetworkServiceCreate (SCPreferencesRef prefs,
- SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+ SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkServiceCopy
*/
SCNetworkServiceRef __nullable
SCNetworkServiceCopy (SCPreferencesRef prefs,
- CFStringRef serviceID) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+ CFStringRef serviceID) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkServiceEstablishDefaultConfiguration
@result TRUE if the configuration was updated; FALSE if an error was encountered.
*/
Boolean
-SCNetworkServiceEstablishDefaultConfiguration (SCNetworkServiceRef service) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+SCNetworkServiceEstablishDefaultConfiguration (SCNetworkServiceRef service) API_AVAILABLE(macos(10.5))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkServiceGetEnabled
@result TRUE if the service is enabled.
*/
Boolean
-SCNetworkServiceGetEnabled (SCNetworkServiceRef service) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+SCNetworkServiceGetEnabled (SCNetworkServiceRef service) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkServiceGetInterface
NULL if an error was encountered.
*/
SCNetworkInterfaceRef __nullable
-SCNetworkServiceGetInterface (SCNetworkServiceRef service) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+SCNetworkServiceGetInterface (SCNetworkServiceRef service) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkServiceGetName
@result The [user specified] name.
*/
CFStringRef __nullable
-SCNetworkServiceGetName (SCNetworkServiceRef service) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+SCNetworkServiceGetName (SCNetworkServiceRef service) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkServiceCopyProtocol
*/
SCNetworkProtocolRef __nullable
SCNetworkServiceCopyProtocol (SCNetworkServiceRef service,
- CFStringRef protocolType) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+ CFStringRef protocolType) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkServiceGetServiceID
@result The service identifier.
*/
CFStringRef __nullable
-SCNetworkServiceGetServiceID (SCNetworkServiceRef service) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+SCNetworkServiceGetServiceID (SCNetworkServiceRef service) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkServiceRemove
@result TRUE if the service was removed; FALSE if an error was encountered.
*/
Boolean
-SCNetworkServiceRemove (SCNetworkServiceRef service) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+SCNetworkServiceRemove (SCNetworkServiceRef service) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkServiceRemoveProtocolType
*/
Boolean
SCNetworkServiceRemoveProtocolType (SCNetworkServiceRef service,
- CFStringRef protocolType) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+ CFStringRef protocolType) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkServiceSetEnabled
*/
Boolean
SCNetworkServiceSetEnabled (SCNetworkServiceRef service,
- Boolean enabled) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+ Boolean enabled) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkServiceSetName
*/
Boolean
SCNetworkServiceSetName (SCNetworkServiceRef service,
- CFStringRef __nullable name) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+ CFStringRef __nullable name) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/* --------------------------------------------------------------------------------
@discussion Returns the type identifier of all SCNetworkSet instances.
*/
CFTypeID
-SCNetworkSetGetTypeID (void) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+SCNetworkSetGetTypeID (void) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkSetAddService
*/
Boolean
SCNetworkSetAddService (SCNetworkSetRef set,
- SCNetworkServiceRef service) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+ SCNetworkServiceRef service) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkSetContainsInterface
*/
Boolean
SCNetworkSetContainsInterface (SCNetworkSetRef set,
- SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+ SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.5))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkSetCopyAll
You must release the returned value.
*/
CFArrayRef /* of SCNetworkSetRef's */ __nullable
-SCNetworkSetCopyAll (SCPreferencesRef prefs) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+SCNetworkSetCopyAll (SCPreferencesRef prefs) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkSetCopyCurrent
@result The current set; NULL if no current set has been defined.
*/
SCNetworkSetRef __nullable
-SCNetworkSetCopyCurrent (SCPreferencesRef prefs) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+SCNetworkSetCopyCurrent (SCPreferencesRef prefs) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkSetCopyServices
You must release the returned value.
*/
CFArrayRef /* of SCNetworkServiceRef's */ __nullable
-SCNetworkSetCopyServices (SCNetworkSetRef set) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+SCNetworkSetCopyServices (SCNetworkSetRef set) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkSetCreate
You must release the returned value.
*/
SCNetworkSetRef __nullable
-SCNetworkSetCreate (SCPreferencesRef prefs) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+SCNetworkSetCreate (SCPreferencesRef prefs) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkSetCopy
*/
SCNetworkSetRef __nullable
SCNetworkSetCopy (SCPreferencesRef prefs,
- CFStringRef setID) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+ CFStringRef setID) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkSetGetName
@result The [user specified] name.
*/
CFStringRef __nullable
-SCNetworkSetGetName (SCNetworkSetRef set) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+SCNetworkSetGetName (SCNetworkSetRef set) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkSetGetSetID
@result The set identifier.
*/
CFStringRef __nullable
-SCNetworkSetGetSetID (SCNetworkSetRef set) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+SCNetworkSetGetSetID (SCNetworkSetRef set) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkSetGetServiceOrder
was encountered.
*/
CFArrayRef /* of serviceID CFStringRef's */ __nullable
-SCNetworkSetGetServiceOrder (SCNetworkSetRef set) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+SCNetworkSetGetServiceOrder (SCNetworkSetRef set) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkSetRemove
@result TRUE if the set was removed; FALSE if an error was encountered.
*/
Boolean
-SCNetworkSetRemove (SCNetworkSetRef set) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+SCNetworkSetRemove (SCNetworkSetRef set) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkSetRemoveService
*/
Boolean
SCNetworkSetRemoveService (SCNetworkSetRef set,
- SCNetworkServiceRef service) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+ SCNetworkServiceRef service) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkSetSetCurrent
FALSE if an error was encountered.
*/
Boolean
-SCNetworkSetSetCurrent (SCNetworkSetRef set) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+SCNetworkSetSetCurrent (SCNetworkSetRef set) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkSetSetName
*/
Boolean
SCNetworkSetSetName (SCNetworkSetRef set,
- CFStringRef __nullable name) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+ CFStringRef __nullable name) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkSetSetServiceOrder
*/
Boolean
SCNetworkSetSetServiceOrder (SCNetworkSetRef set,
- CFArrayRef newOrder) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/); /* serviceID CFStringRef's */
+ CFArrayRef newOrder) API_AVAILABLE(macos(10.4))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0)); /* serviceID CFStringRef's */
__END_DECLS
CF_ASSUME_NONNULL_END
CF_IMPLICIT_BRIDGING_DISABLED
-#endif /* USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS */
#endif /* _SCNETWORKCONFIGURATION_H */
/*
- * Copyright (c) 2004-2007, 2009, 2010-2013, 2015, 2016 Apple Inc. All rights reserved.
+ * Copyright (c) 2004-2007, 2009, 2010-2013, 2015-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
*/
+#include "SCPreferencesInternal.h"
#include "SCNetworkConfigurationInternal.h"
#include <sys/ioctl.h>
__private_extern__ os_log_t
-__log_SCNetworkConfiguration()
+__log_SCNetworkConfiguration(void)
{
static os_log_t log = NULL;
return ok;
}
-#if !TARGET_OS_EMBEDDED
+#if TARGET_OS_OSX
#define SYSTEMCONFIGURATION_RESOURCES_PATH SYSTEMCONFIGURATION_FRAMEWORK_PATH "/Resources"
#else
#define SYSTEMCONFIGURATION_RESOURCES_PATH SYSTEMCONFIGURATION_FRAMEWORK_PATH
-#endif // !TARGET_OS_EMBEDDED
+#endif // TARGET_OS_OSX
#define NETWORKCONFIGURATION_RESOURCE_FILE "NetworkConfiguration.plist"
/*
- * Copyright (c) 2004-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2004-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#include <SystemConfiguration/SystemConfiguration.h>
#include <SystemConfiguration/SCPrivate.h>
#include <SystemConfiguration/SCValidation.h>
-#include <SystemConfiguration/SCPreferencesPathKey.h>
+#include "SCPreferencesPathKey.h"
#include <IOKit/IOKitLib.h>
#if !TARGET_OS_SIMULATOR
uint64_t entryID;
CFMutableDictionaryRef overrides;
CFStringRef prefix;
+ Boolean trustRequired;
CFNumberRef type;
CFNumberRef unit;
CFNumberRef family;
__SCNetworkInterfaceCopyXNonLocalizedDisplayName(SCNetworkInterfaceRef interface);
#endif // !TARGET_OS_IPHONE
-int
-__SCNetworkInterfaceCreateCapabilities (SCNetworkInterfaceRef interface,
- int capability_base,
- CFDictionaryRef capability_options);
-
-int
-__SCNetworkInterfaceCreateMediaOptions (SCNetworkInterfaceRef interface,
- CFDictionaryRef media_options);
-
CFStringRef
__SCNetworkInterfaceGetDefaultConfigurationType (SCNetworkInterfaceRef interface);
CFStringRef
__SCNetworkInterfaceGetNonLocalizedDisplayName (SCNetworkInterfaceRef interface);
-Boolean
-__SCNetworkInterfaceSetDisableUntilNeededValue (SCNetworkInterfaceRef interface,
- CFTypeRef disable);
-
void
__SCNetworkInterfaceSetUserDefinedName(SCNetworkInterfaceRef interface, CFStringRef name);
CFArrayRef members);
void
-_SCNetworkInterfaceCacheOpen();
+_SCNetworkInterfaceCacheOpen(void);
void
-_SCNetworkInterfaceCacheClose();
+_SCNetworkInterfaceCacheClose(void);
#pragma mark -
#pragma mark SCNetworkProtocol configuration (internal)
os_log_t
-__log_SCNetworkConfiguration ();
+__log_SCNetworkConfiguration (void);
#pragma mark -
/*
- * Copyright (c) 2005-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2005-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#ifndef _SCNETWORKCONFIGURATIONPRIVATE_H
#define _SCNETWORKCONFIGURATIONPRIVATE_H
-#include <Availability.h>
+#include <os/availability.h>
#include <TargetConditionals.h>
#include <sys/cdefs.h>
#include <CoreFoundation/CoreFoundation.h>
/*!
@const kSCNetworkInterfaceTypeBridge
*/
-extern const CFStringRef kSCNetworkInterfaceTypeBridge __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCNetworkInterfaceTypeBridge API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@const kSCNetworkInterfaceTypeLoopback
*/
-extern const CFStringRef kSCNetworkInterfaceTypeLoopback __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCNetworkInterfaceTypeLoopback API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@const kSCNetworkInterfaceLoopback
@discussion A network interface representing the loopback
interface (lo0).
*/
-extern const SCNetworkInterfaceRef kSCNetworkInterfaceLoopback __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const SCNetworkInterfaceRef kSCNetworkInterfaceLoopback API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@const kSCNetworkInterfaceTypeVPN
*/
-extern const CFStringRef kSCNetworkInterfaceTypeVPN __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCNetworkInterfaceTypeVPN API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@group Interface configuration (Bridge)
CFComparisonResult
_SCNetworkInterfaceCompare (const void *val1,
const void *val2,
- void *context) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+ void *context) API_AVAILABLE(macos(10.5), ios(2.0));
/*!
@function _SCNetworkInterfaceCopyActive
*/
SCNetworkInterfaceRef
_SCNetworkInterfaceCopyActive (SCDynamicStoreRef store,
- CFStringRef bsdName) __OSX_AVAILABLE_STARTING(__MAC_10_8,__IPHONE_5_0);
+ CFStringRef bsdName) API_AVAILABLE(macos(10.8), ios(5.0));
/*!
@function _SCNetworkInterfaceCopyAllWithPreferences
You must release the returned value.
*/
CFArrayRef /* of SCNetworkInterfaceRef's */
-_SCNetworkInterfaceCopyAllWithPreferences (SCPreferencesRef prefs) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0/*SPI*/);
+_SCNetworkInterfaceCopyAllWithPreferences (SCPreferencesRef prefs) API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(5.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function _SCNetworkInterfaceCopyBTPANInterface
@result The BT-PAN interface; NULL if the interface is not (yet) known.
*/
SCNetworkInterfaceRef
-_SCNetworkInterfaceCopyBTPANInterface (void) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_NA);
+_SCNetworkInterfaceCopyBTPANInterface (void) API_AVAILABLE(macos(10.9)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
/*!
@function _SCNetworkInterfaceCopySlashDevPath
NULL if no path is available.
*/
CFStringRef
-_SCNetworkInterfaceCopySlashDevPath (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_3_0);
+_SCNetworkInterfaceCopySlashDevPath (SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.6), ios(3.0));
#define kIncludeNoVirtualInterfaces 0x0
#define kIncludeVLANInterfaces 0x1
SCNetworkInterfaceRef
_SCNetworkInterfaceCreateWithBSDName (CFAllocatorRef allocator,
CFStringRef bsdName,
- UInt32 flags) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+ UInt32 flags) API_AVAILABLE(macos(10.5), ios(2.0));
/*!
@function _SCNetworkInterfaceCreateWithEntity
SCNetworkInterfaceRef
_SCNetworkInterfaceCreateWithEntity (CFAllocatorRef allocator,
CFDictionaryRef interface_entity,
- SCNetworkServiceRef service) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+ SCNetworkServiceRef service) API_AVAILABLE(macos(10.5), ios(2.0));
/*!
@function _SCNetworkInterfaceCreateWithIONetworkInterfaceObject
You must release the returned value.
*/
SCNetworkInterfaceRef
-_SCNetworkInterfaceCreateWithIONetworkInterfaceObject (io_object_t if_obj) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+_SCNetworkInterfaceCreateWithIONetworkInterfaceObject (io_object_t if_obj) API_AVAILABLE(macos(10.5), ios(2.0));
/*!
@function SCNetworkInterfaceGetPrimaryRank
@result SCNetworkServicePrimaryRank
*/
SCNetworkServicePrimaryRank
-SCNetworkInterfaceGetPrimaryRank (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_8,__IPHONE_5_0);
+SCNetworkInterfaceGetPrimaryRank (SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.8), ios(5.0));
/*!
@function SCNetworkInterfaceSetPrimaryRank
*/
Boolean
SCNetworkInterfaceSetPrimaryRank (SCNetworkInterfaceRef interface,
- SCNetworkServicePrimaryRank newRank) __OSX_AVAILABLE_STARTING(__MAC_10_8,__IPHONE_5_0);
+ SCNetworkServicePrimaryRank newRank) API_AVAILABLE(macos(10.8), ios(5.0));
+
+/**
+ ** SCNetworkInterfaceAdvisory
+ **/
+
+typedef CF_ENUM(uint32_t, SCNetworkInterfaceAdvisory) {
+ kSCNetworkInterfaceAdvisoryNone = 0,
+ kSCNetworkInterfaceAdvisoryLinkLayerIssue = 1,
+ kSCNetworkInterfaceAdvisoryUplinkIssue = 2,
+};
+
+/*!
+ @function SCNetworkInterfaceSetAdvisory
+ @discussion Advise the system of some condition on the network interface
+ that warrants changing how the interface is used for IP networking,
+ and to clear a previously set advisory.
+ Calling this function requires root or having the boolean entitlement
+ "com.apple.SystemConfiguration.SCNetworkInterfaceSetAdvisory" = true.
+ @param interface The interface to assert the advisory on.
+ @param advisory The advisory to indicate on the interface, use
+ kSCNetworkInterfaceAdvisoryNone to clear advisory.
+ @param reason A string indicating the reason for setting the advisory,
+ used to aid debugging.
+ @result TRUE if the advisory change was successful; FALSE otherwise.
+*/
+Boolean
+SCNetworkInterfaceSetAdvisory(SCNetworkInterfaceRef interface,
+ SCNetworkInterfaceAdvisory advisory,
+ CFStringRef reason)
+ API_AVAILABLE(macos(10.14), ios(12.0));
+
+/*!
+ @function SCNetworkInterfaceAdvisoryIsSet
+ @discussion Find out if there is an advisory set on the interface.
+ @param interface The interface to check for an advisory.
+ @result TRUE if an advisory is set; FALSE otherwise.
+*/
+Boolean
+SCNetworkInterfaceAdvisoryIsSet(SCNetworkInterfaceRef interface)
+ API_AVAILABLE(macos(10.14), ios(12.0));
+
+/*!
+ @function SCNetworkInterfaceCopyAdvisoryNotificationKey
+ @discussion Get the SCDynamicStore notication key for advisory changes
+ made on the interface.
+ @param interface The interface for which to get the notification key.
+ @result Key used to receive advisory change notifications on the
+ interface.
+*/
+CFStringRef
+SCNetworkInterfaceCopyAdvisoryNotificationKey(SCNetworkInterfaceRef interface)
+ API_AVAILABLE(macos(10.14), ios(12.0));
+
#define kSCNetworkInterfaceConfigurationActionKey CFSTR("New Interface Detected Action")
#define kSCNetworkInterfaceConfigurationActionValueNone CFSTR("None")
// IORegistry property to indicate that a [WWAN] interface is not yet ready
#define kSCNetworkInterfaceInitializingKey CFSTR("Initializing")
+// IORegistry property to indicate that the attached host should be trusted before use
+#define kSCNetworkInterfaceTrustRequiredKey CFSTR("TrustRequired")
+
/*!
@function _SCNetworkInterfaceCopyInterfaceInfo
@discussion Returns interface details
@result A dictionary with details about the network interface.
*/
CFDictionaryRef
-_SCNetworkInterfaceCopyInterfaceInfo (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_3_0);
+_SCNetworkInterfaceCopyInterfaceInfo (SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.6), ios(3.0));
/*!
@function _SCNetworkInterfaceGetConfigurationAction
NULL if the default action should be used.
*/
CFStringRef
-_SCNetworkInterfaceGetConfigurationAction (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_2_0);
+_SCNetworkInterfaceGetConfigurationAction (SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.6), ios(2.0));
/*!
@function _SCNetworkInterfaceGetFamilyType
NULL if no family type is available.
*/
CFNumberRef
-_SCNetworkInterfaceGetFamilyType (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_12,__IPHONE_10_0);
+_SCNetworkInterfaceGetFamilyType (SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.12), ios(10.0));
/*!
@function _SCNetworkInterfaceGetFamilySubType
NULL if no family subtype is available.
*/
CFNumberRef
-_SCNetworkInterfaceGetFamilySubType (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_12,__IPHONE_10_0);
+_SCNetworkInterfaceGetFamilySubType (SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.12), ios(10.0));
/*!
@function _SCNetworkInterfaceGetHardwareAddress
NULL if no hardware address is available.
*/
CFDataRef
-_SCNetworkInterfaceGetHardwareAddress (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+_SCNetworkInterfaceGetHardwareAddress (SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.5), ios(2.0));
/*!
@function _SCNetworkInterfaceGetIOInterfaceNamePrefix
NULL if no IOInterfaceNamePrefix is available.
*/
CFStringRef
-_SCNetworkInterfaceGetIOInterfaceNamePrefix (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_8,__IPHONE_6_0);
+_SCNetworkInterfaceGetIOInterfaceNamePrefix (SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.8), ios(6.0));
/*!
@function _SCNetworkInterfaceGetIOInterfaceType
@result The IOInterfaceType associated with the interface
*/
CFNumberRef
-_SCNetworkInterfaceGetIOInterfaceType (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+_SCNetworkInterfaceGetIOInterfaceType (SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.5), ios(2.0));
/*!
@function _SCNetworkInterfaceGetIOInterfaceUnit
NULL if no IOInterfaceUnit is available.
*/
CFNumberRef
-_SCNetworkInterfaceGetIOInterfaceUnit (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+_SCNetworkInterfaceGetIOInterfaceUnit (SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.5), ios(2.0));
/*!
@function _SCNetworkInterfaceGetIOPath
NULL if no IOPath is available.
*/
CFStringRef
-_SCNetworkInterfaceGetIOPath (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+_SCNetworkInterfaceGetIOPath (SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.5), ios(2.0));
/*!
@function _SCNetworkInterfaceGetIORegistryEntryID
Zero if no entry ID is available.
*/
uint64_t
-_SCNetworkInterfaceGetIORegistryEntryID (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_8,__IPHONE_5_0);
+_SCNetworkInterfaceGetIORegistryEntryID (SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.8), ios(5.0));
/*!
@function _SCNetworkInterfaceIsApplePreconfigured
@result TRUE if the interface is an internal/pre-configured.
*/
Boolean
-_SCNetworkInterfaceIsApplePreconfigured (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_12,__IPHONE_10_0);
+_SCNetworkInterfaceIsApplePreconfigured (SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.12), ios(10.0));
/*!
@function _SCNetworkInterfaceIsBluetoothPAN
@result TRUE if the interface is a Bluetooth PAN device.
*/
Boolean
-_SCNetworkInterfaceIsBluetoothPAN (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_3_0);
+_SCNetworkInterfaceIsBluetoothPAN (SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.6), ios(3.0));
/*!
@function _SCNetworkInterfaceIsBluetoothPAN_NAP
@result TRUE if the interface is a Bluetooth PAN-NAP device.
*/
Boolean
-_SCNetworkInterfaceIsBluetoothPAN_NAP (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0);
+_SCNetworkInterfaceIsBluetoothPAN_NAP (SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.7), ios(5.0));
/*!
@function _SCNetworkInterfaceIsBluetoothP2P
@result TRUE if the interface is a Bluetooth P2P device.
*/
Boolean
-_SCNetworkInterfaceIsBluetoothP2P (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0);
+_SCNetworkInterfaceIsBluetoothP2P (SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.7), ios(5.0));
/*!
@function _SCNetworkInterfaceIsBuiltin
@result TRUE if the interface is "built-in".
*/
Boolean
-_SCNetworkInterfaceIsBuiltin (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+_SCNetworkInterfaceIsBuiltin (SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.5), ios(2.0));
/*!
@function _SCNetworkInterfaceIsHiddenConfiguration
@result TRUE if the interface configuration should be hidden.
*/
Boolean
-_SCNetworkInterfaceIsHiddenConfiguration (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0);
+_SCNetworkInterfaceIsHiddenConfiguration (SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.7), ios(4.0));
/*!
@function _SCNetworkInterfaceIsTethered
@result TRUE if the interface is a tethered device.
*/
Boolean
-_SCNetworkInterfaceIsTethered (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_3_0);
+_SCNetworkInterfaceIsTethered (SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.6), ios(3.0));
/*!
@function _SCNetworkInterfaceIsThunderbolt
@result TRUE if the interface is a Thunderbolt device.
*/
Boolean
-_SCNetworkInterfaceIsThunderbolt (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
+_SCNetworkInterfaceIsThunderbolt (SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.9), ios(7.0));
+
+/*!
+ @function _SCNetworkInterfaceIsTrustRequired
+ @discussion Identifies if a network interface requires that the
+ associated host be trusted.
+ @param interface The network interface.
+ @result TRUE if the interface requires trust.
+ */
+Boolean
+_SCNetworkInterfaceIsTrustRequired (SCNetworkInterfaceRef interface) SPI_AVAILABLE(macos(10.14)) API_AVAILABLE(ios(12.0));
/*!
@function _SCNetworkInterfaceIsPhysicalEthernet
@result TRUE if the interface is a real ethernet interface.
*/
Boolean
-_SCNetworkInterfaceIsPhysicalEthernet (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0);
+_SCNetworkInterfaceIsPhysicalEthernet (SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.7), ios(5.0));
/*!
@function _SCNetworkInterfaceForceConfigurationRefresh
@result TRUE if the refresh was successfully posted.
*/
Boolean
-_SCNetworkInterfaceForceConfigurationRefresh (CFStringRef ifName) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+_SCNetworkInterfaceForceConfigurationRefresh (CFStringRef ifName) API_AVAILABLE(macos(10.5), ios(2.0));
/*!
@function SCNetworkInterfaceCopyCapability
*/
CFTypeRef
SCNetworkInterfaceCopyCapability (SCNetworkInterfaceRef interface,
- CFStringRef capability) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0/*SPI*/);
+ CFStringRef capability) API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(5.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkInterfaceSetCapability
Boolean
SCNetworkInterfaceSetCapability (SCNetworkInterfaceRef interface,
CFStringRef capability,
- CFTypeRef newValue) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0/*SPI*/);
+ CFTypeRef newValue) API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(5.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
+
+Boolean
+__SCNetworkInterfaceSetDisableUntilNeededValue (SCNetworkInterfaceRef interface,
+ CFTypeRef disable) API_AVAILABLE(macos(10.11)) SPI_AVAILABLE(ios(9.0), tvos(9.0), watchos(2.0), bridgeos(2.0));
+
+
+int
+__SCNetworkInterfaceCreateCapabilities (SCNetworkInterfaceRef interface,
+ int capability_base,
+ CFDictionaryRef capability_options) API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(5.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
+
+int
+__SCNetworkInterfaceCreateMediaOptions (SCNetworkInterfaceRef interface,
+ CFDictionaryRef media_options) API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(5.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
+
#pragma mark -
#pragma mark SCBondInterface configuration (SPIs)
You must release the returned value.
*/
CFArrayRef
-_SCBondInterfaceCopyActive (void) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/);
+_SCBondInterfaceCopyActive (void) API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
/*!
@function _SCBondInterfaceUpdateConfiguration
an error was encountered.
*/
Boolean
-_SCBondInterfaceUpdateConfiguration (SCPreferencesRef prefs) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/);
+_SCBondInterfaceUpdateConfiguration (SCPreferencesRef prefs) API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
/*!
@function SCBondInterfaceGetMode
@result A CFNumberRef containing the mode (IF_BOND_MODE_{LACP,STATIC}).
*/
CFNumberRef
-SCBondInterfaceGetMode (SCBondInterfaceRef bond) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/);
+SCBondInterfaceGetMode (SCBondInterfaceRef bond) API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
/*!
@function SCBondInterfaceSetMode
*/
Boolean
SCBondInterfaceSetMode (SCBondInterfaceRef bond,
- CFNumberRef mode) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/);
+ CFNumberRef mode) API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
#pragma mark -
#pragma mark SCBridgeInterface configuration (SPIs)
You must release the returned value.
*/
CFArrayRef /* of SCBridgeInterfaceRef's */
-SCBridgeInterfaceCopyAll (SCPreferencesRef prefs) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+SCBridgeInterfaceCopyAll (SCPreferencesRef prefs) API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCBridgeInterfaceCopyAvailableMemberInterfaces
You must release the returned value.
*/
CFArrayRef /* of SCNetworkInterfaceRef's */
-SCBridgeInterfaceCopyAvailableMemberInterfaces (SCPreferencesRef prefs) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+SCBridgeInterfaceCopyAvailableMemberInterfaces (SCPreferencesRef prefs) API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCBridgeInterfaceCreate
You must release the returned value.
*/
SCBridgeInterfaceRef
-SCBridgeInterfaceCreate (SCPreferencesRef prefs) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+SCBridgeInterfaceCreate (SCPreferencesRef prefs) API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCBridgeInterfaceRemove
@result TRUE if the interface was removed; FALSE if an error was encountered.
*/
Boolean
-SCBridgeInterfaceRemove (SCBridgeInterfaceRef bridge) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+SCBridgeInterfaceRemove (SCBridgeInterfaceRef bridge) API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCBridgeInterfaceGetMemberInterfaces
@result The list of interfaces.
*/
CFArrayRef /* of SCNetworkInterfaceRef's */
-SCBridgeInterfaceGetMemberInterfaces (SCBridgeInterfaceRef bridge) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+SCBridgeInterfaceGetMemberInterfaces (SCBridgeInterfaceRef bridge) API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCBridgeInterfaceGetOptions
NULL if no changes to the default configuration have been saved.
*/
CFDictionaryRef
-SCBridgeInterfaceGetOptions (SCBridgeInterfaceRef bridge) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+SCBridgeInterfaceGetOptions (SCBridgeInterfaceRef bridge) API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCBridgeInterfaceSetMemberInterfaces
Boolean
SCBridgeInterfaceSetMemberInterfaces (SCBridgeInterfaceRef bridge,
CFArrayRef members) /* of SCNetworkInterfaceRef's */
- __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+ API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCBridgeInterfaceSetLocalizedDisplayName
*/
Boolean
SCBridgeInterfaceSetLocalizedDisplayName (SCBridgeInterfaceRef bridge,
- CFStringRef newName) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+ CFStringRef newName) API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCBridgeInterfaceSetOptions
*/
Boolean
SCBridgeInterfaceSetOptions (SCBridgeInterfaceRef bridge,
- CFDictionaryRef newOptions) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+ CFDictionaryRef newOptions) API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#pragma mark -
You must release the returned value.
*/
CFArrayRef
-_SCBridgeInterfaceCopyActive (void) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+_SCBridgeInterfaceCopyActive (void) API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function _SCBridgeInterfaceUpdateConfiguration
an error was encountered.
*/
Boolean
-_SCBridgeInterfaceUpdateConfiguration (SCPreferencesRef prefs) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+_SCBridgeInterfaceUpdateConfiguration (SCPreferencesRef prefs) API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#pragma mark -
You must release the returned value.
*/
CFArrayRef
-_SCVLANInterfaceCopyActive (void) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/);
+_SCVLANInterfaceCopyActive (void) API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function _SCVLANInterfaceUpdateConfiguration
an error was encountered.
*/
Boolean
-_SCVLANInterfaceUpdateConfiguration (SCPreferencesRef prefs) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_4_0/*SPI*/);
+_SCVLANInterfaceUpdateConfiguration (SCPreferencesRef prefs) API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#pragma mark -
Boolean
SCNetworkInterfaceCheckPassword (SCNetworkInterfaceRef interface,
- SCNetworkInterfacePasswordType passwordType) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+ SCNetworkInterfacePasswordType passwordType) API_AVAILABLE(macos(10.5), ios(2.0));
CFDataRef
SCNetworkInterfaceCopyPassword (SCNetworkInterfaceRef interface,
- SCNetworkInterfacePasswordType passwordType) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+ SCNetworkInterfacePasswordType passwordType) API_AVAILABLE(macos(10.5), ios(2.0));
Boolean
SCNetworkInterfaceRemovePassword (SCNetworkInterfaceRef interface,
- SCNetworkInterfacePasswordType passwordType) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+ SCNetworkInterfacePasswordType passwordType) API_AVAILABLE(macos(10.5), ios(2.0));
Boolean
SCNetworkInterfaceSetPassword (SCNetworkInterfaceRef interface,
SCNetworkInterfacePasswordType passwordType,
CFDataRef password,
- CFDictionaryRef options) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+ CFDictionaryRef options) API_AVAILABLE(macos(10.5), ios(2.0));
Boolean
-SCNetworkInterfaceGetDisableUntilNeeded (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_11,__IPHONE_9_0);
+SCNetworkInterfaceGetDisableUntilNeeded (SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.11), ios(9.0));
Boolean
SCNetworkInterfaceSetDisableUntilNeeded (SCNetworkInterfaceRef interface,
- Boolean disable) __OSX_AVAILABLE_STARTING(__MAC_10_11,__IPHONE_9_0);
+ Boolean disable) API_AVAILABLE(macos(10.11), ios(9.0));
CFDictionaryRef
-SCNetworkInterfaceGetQoSMarkingPolicy (SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_13,__IPHONE_10_0);
+SCNetworkInterfaceGetQoSMarkingPolicy (SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.13), ios(10.0));
Boolean
SCNetworkInterfaceSetQoSMarkingPolicy (SCNetworkInterfaceRef interface,
- CFDictionaryRef policy) __OSX_AVAILABLE_STARTING(__MAC_10_13,__IPHONE_10_0);
+ CFDictionaryRef policy) API_AVAILABLE(macos(10.13), ios(10.0));
#pragma mark -
CFComparisonResult
_SCNetworkProtocolCompare (const void *val1,
const void *val2,
- void *context) __OSX_AVAILABLE_STARTING(__MAC_10_13,__IPHONE_11_0);
+ void *context) API_AVAILABLE(macos(10.13), ios(11.0));
#pragma mark -
CFComparisonResult
_SCNetworkServiceCompare (const void *val1,
const void *val2,
- void *context) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0);
+ void *context) API_AVAILABLE(macos(10.7), ios(4.0));
/*!
@function _SCNetworkServiceCopyActive
*/
SCNetworkServiceRef
_SCNetworkServiceCopyActive (SCDynamicStoreRef store,
- CFStringRef serviceID) __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_2_1);
+ CFStringRef serviceID) API_AVAILABLE(macos(10.6), ios(2.1));
/*!
@function SCNetworkServiceGetPrimaryRank
application or an error was encountered.
*/
SCNetworkServicePrimaryRank
-SCNetworkServiceGetPrimaryRank (SCNetworkServiceRef service) __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_2_0);
+SCNetworkServiceGetPrimaryRank (SCNetworkServiceRef service) API_AVAILABLE(macos(10.6), ios(2.0));
/*!
@function SCNetworkServiceSetPrimaryRank
*/
Boolean
SCNetworkServiceSetPrimaryRank (SCNetworkServiceRef service,
- SCNetworkServicePrimaryRank newRank) __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_2_0);
+ SCNetworkServicePrimaryRank newRank) API_AVAILABLE(macos(10.6), ios(2.0));
/*!
@function _SCNetworkServiceIsVPN
@result TRUE if the service is a VPN.
*/
Boolean
-_SCNetworkServiceIsVPN (SCNetworkServiceRef service) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0);
+_SCNetworkServiceIsVPN (SCNetworkServiceRef service) API_AVAILABLE(macos(10.7), ios(4.0));
/*!
@function SCNetworkServiceSetExternalID
*/
Boolean
_SCNetworkServiceSetServiceID (SCNetworkServiceRef service,
- CFStringRef newServiceID) __OSX_AVAILABLE_STARTING(__MAC_10_10,__IPHONE_8_0);
+ CFStringRef newServiceID) API_AVAILABLE(macos(10.10), ios(8.0));
#pragma mark -
#pragma mark SCNetworkSet configuration (SPI)
CFComparisonResult
_SCNetworkSetCompare (const void *val1,
const void *val2,
- void *context) __OSX_AVAILABLE_STARTING(__MAC_10_13,__IPHONE_11_0);
+ void *context) API_AVAILABLE(macos(10.13), ios(11.0));
/*!
@function SCNetworkSetCopyAvailableInterfaces
You must release the returned value.
*/
CFArrayRef
-SCNetworkSetCopyAvailableInterfaces (SCNetworkSetRef set) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+SCNetworkSetCopyAvailableInterfaces (SCNetworkSetRef set) API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function _SCNetworkSetCreateDefault
You must release the returned value.
*/
SCNetworkSetRef
-_SCNetworkSetCreateDefault (SCPreferencesRef prefs) __OSX_AVAILABLE_STARTING(__MAC_10_12,__IPHONE_10_0/*SPI*/);
+_SCNetworkSetCreateDefault (SCPreferencesRef prefs) API_AVAILABLE(macos(10.12)) SPI_AVAILABLE(ios(10.0), tvos(10.0), watchos(3.0), bridgeos(3.0));
/*!
@function SCNetworkSetEstablishDefaultConfiguration
changes were required or if an error was encountered.
*/
Boolean
-SCNetworkSetEstablishDefaultConfiguration (SCNetworkSetRef set) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+SCNetworkSetEstablishDefaultConfiguration (SCNetworkSetRef set) API_AVAILABLE(macos(10.5), ios(2.0));
/*!
@function SCNetworkSetEstablishDefaultInterfaceConfiguration
*/
Boolean
SCNetworkSetEstablishDefaultInterfaceConfiguration (SCNetworkSetRef set,
- SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+ SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.5), ios(2.0));
/*!
@function SCNetworkSetCopySelectedVPNService
You must release the returned value.
*/
SCNetworkServiceRef
-SCNetworkSetCopySelectedVPNService (SCNetworkSetRef set) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0);
+SCNetworkSetCopySelectedVPNService (SCNetworkSetRef set) API_AVAILABLE(macos(10.7), ios(4.0));
/*!
@function SCNetworkSetSetSelectedVPNService
*/
Boolean
SCNetworkSetSetSelectedVPNService (SCNetworkSetRef set,
- SCNetworkServiceRef service) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0);
+ SCNetworkServiceRef service) API_AVAILABLE(macos(10.7), ios(4.0));
Boolean
_SCNetworkSetSetSetID (SCNetworkSetRef set,
- CFStringRef setID) __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0);
+ CFStringRef setID) API_AVAILABLE(macos(10.10), ios(8.0));
/*!
@group VPN Service configuration
CFArrayRef
VPNServiceCopyAllMatchingExternalID (SCPreferencesRef prefs,
CFStringRef identifierDomain,
- CFStringRef identifier) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+ CFStringRef identifier) API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function VPNServiceCopyAll
@result An array containing VPNServiceRefs for all the VPN services.
*/
CFArrayRef
-VPNServiceCopyAll (SCPreferencesRef prefs) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+VPNServiceCopyAll (SCPreferencesRef prefs) API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function VPNServiceCopyAppRuleIDs
@result An array of CFStringRefs, each string containing the identifier of a app rule in the given service.
*/
CFArrayRef
-VPNServiceCopyAppRuleIDs (VPNServiceRef service) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+VPNServiceCopyAppRuleIDs (VPNServiceRef service) API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function VPNServiceSetAppRule
Boolean
VPNServiceSetAppRule (VPNServiceRef service,
CFStringRef ruleIdentifier,
- CFDictionaryRef ruleSettings) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+ CFDictionaryRef ruleSettings) API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function VPNServiceCopyAppRule
*/
CFDictionaryRef
VPNServiceCopyAppRule (VPNServiceRef service,
- CFStringRef ruleIdentifier) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+ CFStringRef ruleIdentifier) API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function VPNServiceRemoveAppRule
*/
Boolean
VPNServiceRemoveAppRule (VPNServiceRef service,
- CFStringRef ruleIdentifier) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+ CFStringRef ruleIdentifier) API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function VPNServiceIsManagedAppVPN
@result Returns TRUE if the service is a managed App VPN service; FALSE otherwise.
*/
Boolean
-VPNServiceIsManagedAppVPN (VPNServiceRef service) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+VPNServiceIsManagedAppVPN (VPNServiceRef service) API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@group Migration SPI
#pragma mark -
#pragma mark Migration SPI
-extern const CFStringRef kSCNetworkConfigurationRepair /* CFBoolean */ __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0);
+extern const CFStringRef kSCNetworkConfigurationRepair /* CFBoolean */ API_AVAILABLE(macos(10.10), ios(8.0));
-extern const CFStringRef kSCNetworkConfigurationMigrationActionKey /* CFNumber */ __OSX_AVAILABLE_STARTING(__MAC_10_10,__IPHONE_8_0);
+extern const CFStringRef kSCNetworkConfigurationMigrationActionKey /* CFNumber */ API_AVAILABLE(macos(10.10), ios(8.0));
typedef CF_ENUM(uint32_t, SCNetworkConfigurationMigrationAction) {
kSCNetworkConfigurationMigrationAction_CleanInstall = 0,
@result Returns an array of paths that we would need from the source
*/
CFArrayRef
-_SCNetworkConfigurationCopyMigrationPaths(CFDictionaryRef options) __OSX_AVAILABLE_STARTING(__MAC_10_10,__IPHONE_8_0);
+_SCNetworkConfigurationCopyMigrationPaths(CFDictionaryRef options) API_AVAILABLE(macos(10.10), ios(8.0));
/*!
@function _SCNetworkConfigurationPerformMigration
_SCNetworkConfigurationPerformMigration (CFURLRef sourceDir,
CFURLRef currentDir,
CFURLRef targetDir,
- CFDictionaryRef options) __OSX_AVAILABLE_STARTING(__MAC_10_10,__IPHONE_8_0);
+ CFDictionaryRef options) API_AVAILABLE(macos(10.10), ios(8.0));
/*!
Boolean
_SCNetworkConfigurationCheckValidity (CFURLRef configDir,
- CFDictionaryRef options) __OSX_AVAILABLE_STARTING(__MAC_10_10,__IPHONE_8_0);
+ CFDictionaryRef options) API_AVAILABLE(macos(10.10), ios(8.0));
/*!
_SCNetworkConfigurationCheckValidityWithPreferences
(SCPreferencesRef prefs,
SCPreferencesRef ni_prefs,
- CFDictionaryRef options) __OSX_AVAILABLE_STARTING(__MAC_10_11, __IPHONE_9_0);
+ CFDictionaryRef options) API_AVAILABLE(macos(10.11), ios(9.0));
/*!
Boolean
_SCNetworkMigrationAreConfigurationsIdentical (CFURLRef configurationURL,
- CFURLRef expectedConfigurationURL) __OSX_AVAILABLE_STARTING(__MAC_10_10,__IPHONE_8_0);
+ CFURLRef expectedConfigurationURL) API_AVAILABLE(macos(10.10), ios(8.0));
/*!
@function _SCNetworkConfigurationCopyMigrationRemovePaths
CFArrayRef // of CFURLRef's
_SCNetworkConfigurationCopyMigrationRemovePaths (CFArrayRef targetPaths,
- CFURLRef targetDir) __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0);
+ CFURLRef targetDir) API_AVAILABLE(macos(10.10), ios(8.0));
__END_DECLS
+
#endif /* _SCNETWORKCONFIGURATIONPRIVATE_H */
/*
- * Copyright (c) 2003-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2003-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
//#define DEBUG_MACH_PORT_ALLOCATIONS
-#include <Availability.h>
+#include <os/availability.h>
#include <TargetConditionals.h>
#include <sys/cdefs.h>
#include <dispatch/dispatch.h>
/* Flow Divert support info */
CFDictionaryRef flow_divert_token_params;
-#if !TARGET_OS_SIMULATOR
+#if !TARGET_OS_SIMULATOR
/* NetworkExtension data structures */
ne_session_t ne_session;
-#endif /* !TARGET_OS_SIMULATOR */
+#endif /* !TARGET_OS_SIMULATOR */
} SCNetworkConnectionPrivate, *SCNetworkConnectionPrivateRef;
__private_extern__ os_log_t
-__log_SCNetworkConnection()
+__log_SCNetworkConnection(void)
{
static os_log_t log = NULL;
}
-#if !TARGET_OS_SIMULATOR
-Boolean
+#if !TARGET_OS_SIMULATOR
+static Boolean
__SCNetworkConnectionUseNetworkExtension(SCNetworkConnectionPrivateRef connectionPrivate)
{
Boolean result = FALSE;
return result;
}
-#endif /* !TARGET_OS_SIMULATOR */
+#endif /* !TARGET_OS_SIMULATOR */
-Boolean
+static Boolean
__SCNetworkConnectionUsingNetworkExtension(SCNetworkConnectionPrivateRef connectionPrivate)
{
-#if !TARGET_OS_SIMULATOR
+#if !TARGET_OS_SIMULATOR
return (connectionPrivate->ne_session != NULL);
#else
#pragma unused(connectionPrivate)
return FALSE;
-#endif /* !TARGET_OS_SIMULATOR */
+#endif /* !TARGET_OS_SIMULATOR */
}
CFRelease(connectionPrivate->flow_divert_token_params);
}
-#if !TARGET_OS_SIMULATOR
+#if !TARGET_OS_SIMULATOR
if (connectionPrivate->ne_session != NULL) {
ne_session_set_event_handler(connectionPrivate->ne_session, NULL, NULL);
ne_session_release(connectionPrivate->ne_session);
}
-#endif /* !TARGET_OS_SIMULATOR */
+#endif /* !TARGET_OS_SIMULATOR */
return;
}
context_release = NULL;
}
-#if !TARGET_OS_SIMULATOR
+#if !TARGET_OS_SIMULATOR
if (__SCNetworkConnectionUsingNetworkExtension(connectionPrivate)) {
pthread_mutex_unlock(&connectionPrivate->lock);
CFRelease(connection); /* This releases the reference that we took in the NESessionEventStatusChanged event handler */
return;
}
-#endif /* !TARGET_OS_SIMULATOR */
+#endif /* !TARGET_OS_SIMULATOR */
// Do we need to spin a new thread? (either we are running on the main
// dispatch queue or main runloop)
}
connectionPrivate->type = kSCNetworkConnectionTypeUnknown;
-#if !TARGET_OS_SIMULATOR
+#if !TARGET_OS_SIMULATOR
if (__SCNetworkConnectionUseNetworkExtension(connectionPrivate)) {
CFStringRef serviceID = SCNetworkServiceGetServiceID(connectionPrivate->service);
if (serviceID != NULL) {
goto fail;
}
}
-#endif /* !TARGET_OS_SIMULATOR */
+#endif /* !TARGET_OS_SIMULATOR */
/* success, return the connection reference */
return connectionPrivate;
pthread_mutex_lock(&connectionPrivate->lock);
-#if !TARGET_OS_SIMULATOR
+#if !TARGET_OS_SIMULATOR
if (__SCNetworkConnectionUsingNetworkExtension(connectionPrivate)) {
__block xpc_object_t xstats = NULL;
ne_session_t ne_session = connectionPrivate->ne_session;
return statistics;
}
-#endif /* !TARGET_OS_SIMULATOR */
+#endif /* !TARGET_OS_SIMULATOR */
retry :
pthread_mutex_lock(&connectionPrivate->lock);
-#if !TARGET_OS_SIMULATOR
+#if !TARGET_OS_SIMULATOR
if (__SCNetworkConnectionUsingNetworkExtension(connectionPrivate)) {
__block ne_session_status_t ne_status;
ne_session_t ne_session = connectionPrivate->ne_session;
return SCNetworkConnectionGetStatusFromNEStatus(ne_status);
}
-#endif /* !TARGET_OS_SIMULATOR */
+#endif /* !TARGET_OS_SIMULATOR */
retry :
pthread_mutex_lock(&connectionPrivate->lock);
-#if !TARGET_OS_SIMULATOR
+#if !TARGET_OS_SIMULATOR
if (__SCNetworkConnectionUsingNetworkExtension(connectionPrivate)) {
__block CFDictionaryRef statusDictionary = NULL;
ne_session_t ne_session = connectionPrivate->ne_session;
connectionPrivate->flow_divert_token_params = NULL;
}
-#if !TARGET_OS_SIMULATOR
+#if !TARGET_OS_SIMULATOR
if (__SCNetworkConnectionUsingNetworkExtension(connectionPrivate)) {
xpc_object_t xuser_options = NULL;
}
if (connectionPrivate->client_bootstrap_port != MACH_PORT_NULL) {
-#if NE_SESSION_VERSION > 2
+#if NE_SESSION_VERSION > 2
ne_session_start_on_behalf_of(connectionPrivate->ne_session,
xuser_options,
connectionPrivate->client_bootstrap_port,
ok = TRUE;
goto done;
}
-#endif /* !TARGET_OS_SIMULATOR */
+#endif /* !TARGET_OS_SIMULATOR */
if (userOptions && !_SCSerialize(userOptions, &dataref, &data, &datalen)) {
goto done;
pthread_mutex_lock(&connectionPrivate->lock);
-#if !TARGET_OS_SIMULATOR
+#if !TARGET_OS_SIMULATOR
if (__SCNetworkConnectionUsingNetworkExtension(connectionPrivate)) {
ne_session_stop(connectionPrivate->ne_session);
/* make sure the xpc_message goes through */
ok = TRUE;
goto done;
}
-#endif /* !TARGET_OS_SIMULATOR */
+#endif /* !TARGET_OS_SIMULATOR */
retry :
pthread_mutex_lock(&connectionPrivate->lock);
-#if !!TARGET_OS_SIMULATOR
+#if !!TARGET_OS_SIMULATOR
if (__SCNetworkConnectionUsingNetworkExtension(connectionPrivate)) {
/* Suspend only applies to PPPSerial and PPPoE */
ok = TRUE;
goto done;
}
-#endif /* !TARGET_OS_SIMULATOR */
+#endif /* !TARGET_OS_SIMULATOR */
retry :
pthread_mutex_lock(&connectionPrivate->lock);
-#if !TARGET_OS_SIMULATOR
+#if !TARGET_OS_SIMULATOR
if (__SCNetworkConnectionUsingNetworkExtension(connectionPrivate)) {
/* Resume only applies to PPPSerial and PPPoE */
ok = TRUE;
goto done;
}
-#endif /* !TARGET_OS_SIMULATOR */
+#endif /* !TARGET_OS_SIMULATOR */
retry :
pthread_mutex_lock(&connectionPrivate->lock);
-#if !TARGET_OS_SIMULATOR
+#if !TARGET_OS_SIMULATOR
if (__SCNetworkConnectionUsingNetworkExtension(connectionPrivate)) {
__block xpc_object_t config = NULL;
ne_session_t ne_session = connectionPrivate->ne_session;
}
return userOptions;
}
-#endif /* !TARGET_OS_SIMULATOR */
+#endif /* !TARGET_OS_SIMULATOR */
retry :
_SC_schedule(connection, runLoop, runLoopMode, connectionPrivate->rlList);
}
-#if !TARGET_OS_SIMULATOR
+#if !TARGET_OS_SIMULATOR
if (__SCNetworkConnectionUsingNetworkExtension(connectionPrivate)) {
CFRetain(connection);
ne_session_set_event_handler(connectionPrivate->ne_session, __SCNetworkConnectionQueue(), ^(ne_session_event_t event, void *event_data) {
}
});
}
-#endif /* !TARGET_OS_SIMULATOR */
+#endif /* !TARGET_OS_SIMULATOR */
ok = TRUE;
connectionPrivate->scheduled = FALSE;
if (__SCNetworkConnectionUsingNetworkExtension(connectionPrivate)) {
-#if !TARGET_OS_SIMULATOR
+#if !TARGET_OS_SIMULATOR
ne_session_cancel(connectionPrivate->ne_session);
-#endif /* !TARGET_OS_SIMULATOR */
+#endif /* !TARGET_OS_SIMULATOR */
} else {
mach_port_t session_port = __SCNetworkConnectionSessionPort(connectionPrivate);
if (session_port == MACH_PORT_NULL) {
int timeout,
int trafficClass)
{
-#if !TARGET_OS_SIMULATOR
+#if !TARGET_OS_SIMULATOR
__block Boolean triggeredOnDemand = FALSE;
struct proc_uniqidentifierinfo procu;
void *policy_match = NULL;
}
-#if !TARGET_OS_SIMULATOR
+#if !TARGET_OS_SIMULATOR
SCNetworkConnectionStatus
SCNetworkConnectionGetStatusFromNEStatus(ne_session_status_t status)
{
return kSCNetworkConnectionInvalid;
}
-#endif /* !TARGET_OS_SIMULATOR */
+#endif /* !TARGET_OS_SIMULATOR */
#pragma mark -
// Mask is optional in routes dictionary; if not present, whole addresses are matched
-Boolean
+static Boolean
__SCNetworkConnectionIPv4AddressMatchesRoutes (struct sockaddr_in *addr_in, CFDictionaryRef routes)
{
CFIndex count;
}
-void
+static void
__SCNetworkConnectionMaskIPv6Address(struct in6_addr *addr, struct in6_addr *mask)
{
for (size_t i = 0; i < sizeof(struct in6_addr); i++)
// Mask is optional in routes dictionary; if not present, whole addresses are matched
-Boolean
+static Boolean
__SCNetworkConnectionIPv6AddressMatchesRoutes (struct sockaddr_in6 *addr_in6, CFDictionaryRef routes)
{
CFIndex count;
/*
- * Copyright (c) 2003-2006, 2008-2010, 2015 Apple Inc. All rights reserved.
+ * Copyright (c) 2003-2006, 2008-2010, 2015, 2018 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,
* 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 _SCNETWORKCONNECTION_H
-#ifdef USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS
-#include <SystemConfiguration/_SCNetworkConnection.h>
-#else /* USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS */
#define _SCNETWORKCONNECTION_H
-#include <Availability.h>
+#include <os/availability.h>
#include <TargetConditionals.h>
#include <sys/cdefs.h>
#include <dispatch/dispatch.h>
"best" SCNetworkConnection.
*/
#define kSCNetworkConnectionSelectionOptionOnDemandHostName CFSTR("OnDemandHostName") // CFString
- // __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_3_0/*SPI*/)
+ // API_AVAILABLE(macos(4.0))
+ // SPI_AVAILABLE(ios(3.0), tvos(9.0), watchos(1.0), bridgeos(1.0))
/*!
@define kSCNetworkConnectionSelectionOptionOnDemandRetry
already been issued for the specified OnDemand host name.
*/
#define kSCNetworkConnectionSelectionOptionOnDemandRetry CFSTR("OnDemandRetry") // CFBoolean
- // __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_3_0/*SPI*/)
+ // API_AVAILABLE(macos(4.0))
+ // SPI_AVAILABLE(ios(3.0), tvos(9.0), watchos(1.0), bridgeos(1.0))
__BEGIN_DECLS
instances.
*/
CFTypeID
-SCNetworkConnectionGetTypeID (void) __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+SCNetworkConnectionGetTypeID (void) API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
CFDictionaryRef __nullable selectionOptions,
CFStringRef __nonnull * __nullable serviceID,
CFDictionaryRef __nonnull * __nullable userOptions
- ) __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
CFStringRef serviceID,
SCNetworkConnectionCallBack __nullable callout,
SCNetworkConnectionContext * __nullable context
- ) __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
CFStringRef __nullable
SCNetworkConnectionCopyServiceID (
SCNetworkConnectionRef connection
- ) __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
SCNetworkConnectionStatus
SCNetworkConnectionGetStatus (
SCNetworkConnectionRef connection
- ) __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
CFDictionaryRef __nullable
SCNetworkConnectionCopyExtendedStatus (
SCNetworkConnectionRef connection
- ) __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
CFDictionaryRef __nullable
SCNetworkConnectionCopyStatistics (
SCNetworkConnectionRef connection
- ) __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
SCNetworkConnectionRef connection,
CFDictionaryRef __nullable userOptions,
Boolean linger
- ) __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
SCNetworkConnectionStop (
SCNetworkConnectionRef connection,
Boolean forceDisconnect
- ) __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
CFDictionaryRef __nullable
SCNetworkConnectionCopyUserOptions (
SCNetworkConnectionRef connection
- ) __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
SCNetworkConnectionRef connection,
CFRunLoopRef runLoop,
CFStringRef runLoopMode
- ) __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
SCNetworkConnectionRef connection,
CFRunLoopRef runLoop,
CFStringRef runLoopMode
- ) __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
SCNetworkConnectionSetDispatchQueue (
SCNetworkConnectionRef connection,
dispatch_queue_t __nullable queue
- ) __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.6)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
__END_DECLS
CF_ASSUME_NONNULL_END
CF_IMPLICIT_BRIDGING_DISABLED
-#endif /* USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS */
-#endif /* _SCNETWORKCONNECTION_H */
+#endif /* _SCNETWORKCONNECTION_H */
/*
- * Copyright (c) 2012, 2013, 2016 Apple Inc. All rights reserved.
+ * Copyright (c) 2012, 2013, 2016, 2017 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
__BEGIN_DECLS
-os_log_t __log_SCNetworkConnection();
+os_log_t __log_SCNetworkConnection(void);
void __SCNetworkConnectionForceOnDemandConfigurationRefresh(void);
char * __SCNetworkConnectionGetControllerPortName(void);
CFDictionaryRef __SCNetworkConnectionCopyTokenParameters(SCNetworkConnectionRef connection);
/*
- * Copyright (c) 2006, 2008, 2009, 2011-2015 Apple Inc. All rights reserved.
+ * Copyright (c) 2006, 2008, 2009, 2011-2015, 2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#ifndef _SCNETWORKCONNECTIONPRIVATE_H
#define _SCNETWORKCONNECTIONPRIVATE_H
-#include <Availability.h>
+#include <os/availability.h>
#include <TargetConditionals.h>
#include <sys/cdefs.h>
-#if !TARGET_OS_SIMULATOR
+#if !TARGET_OS_SIMULATOR
#include <ne_session.h>
-#endif
+#endif // !TARGET_OS_SIMULATOR
#include <CoreFoundation/CoreFoundation.h>
#include <SystemConfiguration/SystemConfiguration.h>
#include <SystemConfiguration/SCNetworkConfigurationPrivate.h>
#pragma mark SCNetworkConnection SPIs
CFArrayRef /* of SCNetworkServiceRef's */
-SCNetworkConnectionCopyAvailableServices (SCNetworkSetRef set) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+SCNetworkConnectionCopyAvailableServices (SCNetworkSetRef set) API_AVAILABLE(macos(10.5), ios(2.0));
SCNetworkConnectionRef
SCNetworkConnectionCreateWithService (CFAllocatorRef allocator,
SCNetworkServiceRef service,
SCNetworkConnectionCallBack callout,
- SCNetworkConnectionContext *context) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+ SCNetworkConnectionContext *context) API_AVAILABLE(macos(10.5), ios(2.0));
SCNetworkServiceRef
-SCNetworkConnectionGetService (SCNetworkConnectionRef connection) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+SCNetworkConnectionGetService (SCNetworkConnectionRef connection) API_AVAILABLE(macos(10.5), ios(2.0));
CFArrayRef /* of SCUserPreferencesRef's */
-SCNetworkConnectionCopyAllUserPreferences (SCNetworkConnectionRef connection) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+SCNetworkConnectionCopyAllUserPreferences (SCNetworkConnectionRef connection) API_AVAILABLE(macos(10.5), ios(2.0));
SCUserPreferencesRef
-SCNetworkConnectionCopyCurrentUserPreferences (SCNetworkConnectionRef connection) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+SCNetworkConnectionCopyCurrentUserPreferences (SCNetworkConnectionRef connection) API_AVAILABLE(macos(10.5), ios(2.0));
SCUserPreferencesRef
-SCNetworkConnectionCreateUserPreferences (SCNetworkConnectionRef connection) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+SCNetworkConnectionCreateUserPreferences (SCNetworkConnectionRef connection) API_AVAILABLE(macos(10.5), ios(2.0));
Boolean
-SCNetworkConnectionSuspend (SCNetworkConnectionRef connection) __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0);
+SCNetworkConnectionSuspend (SCNetworkConnectionRef connection) API_AVAILABLE(macos(10.3), ios(2.0));
Boolean
-SCNetworkConnectionResume (SCNetworkConnectionRef connection) __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0);
+SCNetworkConnectionResume (SCNetworkConnectionRef connection) API_AVAILABLE(macos(10.3), ios(2.0));
+#if !TARGET_OS_SIMULATOR
Boolean
-SCNetworkConnectionRefreshOnDemandState (SCNetworkConnectionRef connection) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
+SCNetworkConnectionRefreshOnDemandState (SCNetworkConnectionRef connection) API_AVAILABLE(macos(10.9), ios(7.0));
+#endif // !TARGET_OS_SIMULATOR
Boolean
SCNetworkConnectionSetClientInfo (SCNetworkConnectionRef connection,
mach_port_t client_audit_session,
uid_t client_uid,
gid_t client_gid,
- pid_t client_pid) __OSX_AVAILABLE_STARTING(__MAC_10_8,__IPHONE_5_0);
+ pid_t client_pid) API_AVAILABLE(macos(10.8), ios(5.0));
/*!
@function SCNetworkConnectionCreate
SCNetworkConnectionRef
SCNetworkConnectionCreate (CFAllocatorRef allocator,
SCNetworkConnectionCallBack callout,
- SCNetworkConnectionContext *context) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
+ SCNetworkConnectionContext *context) API_AVAILABLE(macos(10.9), ios(7.0));
/*!
@function SCNetworkConnectionSetClientAuditInfo
mach_port_t bootstrap_port,
pid_t pid,
const uuid_t uuid,
- const char *bundle_id) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
+ const char *bundle_id) API_AVAILABLE(macos(10.9), ios(7.0));
/*!
@defined kSCNetworkConnectionSelectionOptionNoUserPrefs
@abstract The traffic class that is attempting to trigger OnDemand.
*/
#define kSCNetworkConnectionSelectionOptionOnDemandTrafficClass CFSTR("OnDemandTrafficClass") // CFNumber
- // __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/)
+ // API_AVAILABLE(macos(9.0))
+ // SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0))
+
/*!
@define kSCNetworkConnectionSelectionOptionOnDemandAccountIdentifier
@abstract The account identifier that is attempting to trigger OnDemand.
*/
Boolean
SCNetworkConnectionSelectServiceWithOptions (SCNetworkConnectionRef connection,
- CFDictionaryRef selectionOptions) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
+ CFDictionaryRef selectionOptions) API_AVAILABLE(macos(10.9), ios(7.0));
/*!
@function SCNetworkConnectionOnDemandShouldRetryOnFailure
failure, FALSE otherwise.
*/
Boolean
-SCNetworkConnectionOnDemandShouldRetryOnFailure (SCNetworkConnectionRef connection) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
+SCNetworkConnectionOnDemandShouldRetryOnFailure (SCNetworkConnectionRef connection) API_AVAILABLE(macos(10.9), ios(7.0));
/*!
@function SCNetworkConnectionCanTunnelAddress
Boolean
SCNetworkConnectionCanTunnelAddress (SCNetworkConnectionRef connection,
const struct sockaddr *address,
- Boolean *startImmediately) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
+ Boolean *startImmediately) API_AVAILABLE(macos(10.9), ios(7.0));
/*!
@function SCNetworkConnectionIsOnDemandSuspended
@return TRUE if the On Demand connection is suspended, FALSE otherwise.
*/
Boolean
-SCNetworkConnectionIsOnDemandSuspended (SCNetworkConnectionRef connection) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
+SCNetworkConnectionIsOnDemandSuspended (SCNetworkConnectionRef connection) API_AVAILABLE(macos(10.9), ios(7.0));
/*!
@function SCNetworkConnectionCopyOnDemandInfo
Boolean
SCNetworkConnectionCopyOnDemandInfo (SCNetworkConnectionRef connection,
CFStringRef *onDemandRemoteAddress,
- SCNetworkConnectionStatus *onDemandConnectionStatus) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
+ SCNetworkConnectionStatus *onDemandConnectionStatus) API_AVAILABLE(macos(10.9), ios(7.0));
/*!
@function SCNetworkConnectionTriggerOnDemandIfNeeded
SCNetworkConnectionTriggerOnDemandIfNeeded (CFStringRef hostName,
Boolean afterDNSFail,
int timeout,
- int trafficClass) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
+ int trafficClass) API_AVAILABLE(macos(10.9), ios(7.0));
/*!
@function SCNetworkConnectionGetReachabilityInfo
Boolean
SCNetworkConnectionGetReachabilityInfo (SCNetworkConnectionRef connection,
SCNetworkReachabilityFlags *reach_flags,
- unsigned int *reach_if_index) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
+ unsigned int *reach_if_index) API_AVAILABLE(macos(10.9), ios(7.0));
/*!
@return The type of the network connection.
*/
SCNetworkConnectionType
-SCNetworkConnectionGetType (SCNetworkConnectionRef connection) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
+SCNetworkConnectionGetType (SCNetworkConnectionRef connection) API_AVAILABLE(macos(10.9), ios(7.0));
/*!
@defined kSCNetworkConnectionFlowPropertyHostName
*/
CFDataRef
SCNetworkConnectionCopyFlowDivertToken (SCNetworkConnectionRef connection,
- CFDictionaryRef flowProperties) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
+ CFDictionaryRef flowProperties) API_AVAILABLE(macos(10.9), ios(7.0));
#define kSCNetworkConnectionAppPropertyRuleID CFSTR("RuleID")
#define kSCNetworkConnectionAppPropertyCodeDirHash CFSTR("CodeDirHash")
#define kSCNetworkConnectionAppPropertyUUID CFSTR("UUID")
int
-SCNetworkConnectionGetServiceIdentifier (SCNetworkConnectionRef connection) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
+SCNetworkConnectionGetServiceIdentifier (SCNetworkConnectionRef connection) API_AVAILABLE(macos(10.9), ios(7.0));
#pragma mark -
#pragma mark SCNetworkConnection "VPN on Demand" SPIs
Boolean onDemandRetry,
CFStringRef *connectionServiceID,
SCNetworkConnectionStatus *connectionStatus,
- CFStringRef *vpnRemoteAddress) __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_2_0);
+ CFStringRef *vpnRemoteAddress) API_AVAILABLE(macos(10.6), ios(2.0));
-#if !TARGET_OS_SIMULATOR
+#if !TARGET_OS_SIMULATOR
SCNetworkConnectionStatus
-SCNetworkConnectionGetStatusFromNEStatus (ne_session_status_t status) __OSX_AVAILABLE_STARTING(__MAC_10_10,__IPHONE_8_0);
-#endif /* !TARGET_OS_SIMULATOR */
+SCNetworkConnectionGetStatusFromNEStatus (ne_session_status_t status) API_AVAILABLE(macos(10.10), ios(8.0));
+#endif /* !TARGET_OS_SIMULATOR */
#pragma mark -
#pragma mark SCUserPreferences SPIs
Boolean
-SCUserPreferencesRemove (SCUserPreferencesRef userPreferences) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+SCUserPreferencesRemove (SCUserPreferencesRef userPreferences) API_AVAILABLE(macos(10.5), ios(2.0));
Boolean
-SCUserPreferencesSetCurrent (SCUserPreferencesRef userPreferences) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+SCUserPreferencesSetCurrent (SCUserPreferencesRef userPreferences) API_AVAILABLE(macos(10.5), ios(2.0));
CFStringRef
-SCUserPreferencesCopyName (SCUserPreferencesRef userPreferences) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+SCUserPreferencesCopyName (SCUserPreferencesRef userPreferences) API_AVAILABLE(macos(10.5), ios(2.0));
CFTypeID
-SCUserPreferencesGetTypeID (void) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+SCUserPreferencesGetTypeID (void) API_AVAILABLE(macos(10.5), ios(2.0));
CFStringRef
-SCUserPreferencesGetUniqueID (SCUserPreferencesRef userPreferences) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+SCUserPreferencesGetUniqueID (SCUserPreferencesRef userPreferences) API_AVAILABLE(macos(10.5), ios(2.0));
Boolean
-SCUserPreferencesIsForced (SCUserPreferencesRef userPreferences) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+SCUserPreferencesIsForced (SCUserPreferencesRef userPreferences) API_AVAILABLE(macos(10.5), ios(2.0));
Boolean
SCUserPreferencesSetName (SCUserPreferencesRef userPreferences,
- CFStringRef newName) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+ CFStringRef newName) API_AVAILABLE(macos(10.5), ios(2.0));
Boolean
SCNetworkConnectionStartWithUserPreferences (SCNetworkConnectionRef connection,
SCUserPreferencesRef userPreferences,
- Boolean linger) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+ Boolean linger) API_AVAILABLE(macos(10.5), ios(2.0));
CFDictionaryRef
SCUserPreferencesCopyInterfaceConfiguration (SCUserPreferencesRef userPreferences,
- SCNetworkInterfaceRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+ SCNetworkInterfaceRef interface) API_AVAILABLE(macos(10.5), ios(2.0));
Boolean
SCUserPreferencesSetInterfaceConfiguration (SCUserPreferencesRef userPreferences,
SCNetworkInterfaceRef interface,
- CFDictionaryRef newOptions) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+ CFDictionaryRef newOptions) API_AVAILABLE(macos(10.5), ios(2.0));
CFDictionaryRef
SCUserPreferencesCopyExtendedInterfaceConfiguration
(SCUserPreferencesRef userPreferences,
SCNetworkInterfaceRef interface,
- CFStringRef extendedType) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+ CFStringRef extendedType) API_AVAILABLE(macos(10.5), ios(2.0));
Boolean
SCUserPreferencesSetExtendedInterfaceConfiguration
(SCUserPreferencesRef userPreferences,
SCNetworkInterfaceRef interface,
CFStringRef extendedType,
- CFDictionaryRef newOptions) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+ CFDictionaryRef newOptions) API_AVAILABLE(macos(10.5), ios(2.0));
#pragma mark -
Boolean
SCUserPreferencesCheckInterfacePassword (SCUserPreferencesRef userPreferences,
SCNetworkInterfaceRef interface,
- SCNetworkInterfacePasswordType passwordType) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+ SCNetworkInterfacePasswordType passwordType) API_AVAILABLE(macos(10.5), ios(2.0));
CFDataRef
SCUserPreferencesCopyInterfacePassword (SCUserPreferencesRef userPreferences,
SCNetworkInterfaceRef interface,
- SCNetworkInterfacePasswordType passwordType) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+ SCNetworkInterfacePasswordType passwordType) API_AVAILABLE(macos(10.5), ios(2.0));
Boolean
SCUserPreferencesRemoveInterfacePassword (SCUserPreferencesRef userPreferences,
SCNetworkInterfaceRef interface,
- SCNetworkInterfacePasswordType passwordType) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+ SCNetworkInterfacePasswordType passwordType) API_AVAILABLE(macos(10.5), ios(2.0));
Boolean
SCUserPreferencesSetInterfacePassword (SCUserPreferencesRef userPreferences,
SCNetworkInterfaceRef interface,
SCNetworkInterfacePasswordType passwordType,
CFDataRef password,
- CFDictionaryRef options) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+ CFDictionaryRef options) API_AVAILABLE(macos(10.5), ios(2.0));
__END_DECLS
-#endif /* _SCNETWORKCONNECTIONPRIVATE_H */
+#endif /* _SCNETWORKCONNECTIONPRIVATE_H */
/*
- * Copyright (c) 2004-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2004-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
*/
-#include <Availability.h>
+#include <os/availability.h>
#include <TargetConditionals.h>
#include <CoreFoundation/CoreFoundation.h>
#include <CoreFoundation/CFRuntime.h>
static Boolean __SCNetworkInterfaceEqual (CFTypeRef cf1, CFTypeRef cf2);
static CFHashCode __SCNetworkInterfaceHash (CFTypeRef cf);
static void __SCNetworkInterfaceCacheAdd (CFStringRef bsdName, CFArrayRef matchingInterfaces);
-static Boolean __SCNetworkInterfaceCacheIsOpen ();
+static Boolean __SCNetworkInterfaceCacheIsOpen (void);
static CFArrayRef __SCNetworkInterfaceCacheCopy (CFStringRef bsdName);
if (interfacePrivate->hidden) {
CFStringAppendFormat(result, NULL, CFSTR(", hidden = TRUE"));
}
+#if TARGET_OS_IPHONE
+ if (interfacePrivate->trustRequired) {
+ CFStringAppendFormat(result, NULL, CFSTR(", trust required = TRUE"));
+ }
+#endif // TARGET_OS_IPHONE
if (interfacePrivate->location != NULL) {
CFStringAppendFormat(result, NULL, CFSTR(", location = %@"), interfacePrivate->location);
}
interfacePrivate->hidden = TRUE;
CFRelease(val);
}
+
+#if TARGET_OS_IPHONE
+ // get TrustRequired preference
+ val = IORegistryEntrySearchCFProperty(interface,
+ kIOServicePlane,
+ kSCNetworkInterfaceTrustRequiredKey,
+ NULL,
+ kIORegistryIterateRecursively | kIORegistryIterateParents);
+ if (val != NULL) {
+ if (isA_CFBoolean(val)) {
+ interfacePrivate->trustRequired = CFBooleanGetValue(val);
+ }
+ CFRelease(val);
+ }
+#endif // TARGET_OS_IPHONE
} else {
CFRelease(interfacePrivate);
interfacePrivate = NULL;
kSCNetworkInterfaceHiddenConfigurationKey,
kCFBooleanTrue);
}
+#if TARGET_OS_IPHONE
+ if (interfacePrivate->trustRequired) {
+ CFDictionarySetValue(entity,
+ kSCNetworkInterfaceTrustRequiredKey,
+ kCFBooleanTrue);
+ }
+#endif // TARGET_OS_IPHONE
// match the "hardware" with the lowest layer
while (TRUE) {
}
+__private_extern__
void
-_SCNetworkInterfaceCacheOpen()
+_SCNetworkInterfaceCacheOpen(void)
{
if (!__SCNetworkInterfaceCacheIsOpen()) {
S_interface_cache = CFDictionaryCreateMutable(NULL,
}
+__private_extern__
void
-_SCNetworkInterfaceCacheClose()
+_SCNetworkInterfaceCacheClose(void)
{
if (__SCNetworkInterfaceCacheIsOpen()) {
SC_log(LOG_DEBUG, "SCNetworkInterface cache (%p): close", S_interface_cache);
static inline Boolean
-__SCNetworkInterfaceCacheIsOpen()
+__SCNetworkInterfaceCacheIsOpen(void)
{
return (S_interface_cache != NULL);
}
(((virtualInterface = findBridgeInterface(servicePref, ifDevice)) != NULL) ||
#if !TARGET_OS_IPHONE
((virtualInterface = findBondInterface(servicePref, ifDevice)) != NULL) ||
-#endif
+#endif // !TARGET_OS_IPHONE
((virtualInterface = findVLANInterface(servicePref, ifDevice)) != NULL))) {
CFRelease(interfacePrivate);
interfacePrivate = (SCNetworkInterfacePrivateRef)virtualInterface;
if (CFDictionaryContainsKey(interface_entity, kSCNetworkInterfaceHiddenConfigurationKey)) {
interfacePrivate->hidden = TRUE;
}
+#if TARGET_OS_IPHONE
+ if (CFDictionaryContainsKey(interface_entity, kSCNetworkInterfaceTrustRequiredKey)) {
+ interfacePrivate->trustRequired = TRUE;
+ }
+#endif // TARGET_OS_IPHONE
}
if (service != NULL) {
parentPrivate->hidden = childPrivate->hidden;
+#if TARGET_OS_IPHONE
+ parentPrivate->trustRequired = childPrivate->trustRequired;
+#endif // TARGET_OS_IPHONE
+
if (childPrivate->overrides != NULL) {
parentPrivate->overrides = CFDictionaryCreateMutableCopy(NULL, 0, childPrivate->overrides);
}
knownStrKey,
localized);
-#if TARGET_OS_IPHONE
+#if TARGET_OS_IPHONE
/* ...and we want to know about it! */
_SC_crash("Failed to retrieve interface string", NULL, NULL);
-#endif //TARGET_OS_IPHONE
+#endif //TARGET_OS_IPHONE
reported = TRUE;
}
}
+#if !TARGET_OS_IPHONE
Boolean
SCNetworkInterfaceRefreshConfiguration(CFStringRef ifName)
{
return _SCNetworkInterfaceForceConfigurationRefresh(ifName);
}
+#endif // !TARGET_OS_IPHONE
#pragma mark -
return ok;
}
+#pragma mark -
+#pragma mark SCNetworkInterface [Advisory] SPIs
+#if TARGET_OS_SIMULATOR
+Boolean
+SCNetworkInterfaceSetAdvisory(SCNetworkInterfaceRef interface,
+ SCNetworkInterfaceAdvisory advisory,
+ CFStringRef reason)
+{
+#pragma unused(interface, advisory, reason)
+ return (FALSE);
+}
+
+Boolean
+SCNetworkInterfaceAdvisoryIsSet(SCNetworkInterfaceRef interface)
+{
+#pragma unused(interface)
+ return (FALSE);
+}
+
+CFStringRef
+SCNetworkInterfaceCopyAdvisoryNotificationKey(SCNetworkInterfaceRef interface)
+{
+#pragma unused(interface)
+ return (NULL);
+}
+
+#else /* TARGET_OS_SIMULATOR */
+Boolean
+SCNetworkInterfaceSetAdvisory(SCNetworkInterfaceRef interface,
+ SCNetworkInterfaceAdvisory advisory,
+ CFStringRef reason)
+{
+ IPMonitorControlRef control;
+ SCNetworkInterfacePrivateRef interfacePrivate =
+ (SCNetworkInterfacePrivateRef)interface;
+ CFStringRef ifName;
+
+ ifName = SCNetworkInterfaceGetBSDName(interface);
+ if (ifName == NULL) {
+ _SCErrorSet(kSCStatusInvalidArgument);
+ return (FALSE);
+ }
+ control = interfacePrivate->IPMonitorControl;
+ if (control == NULL) {
+ control = IPMonitorControlCreate();
+ if (control == NULL) {
+ _SCErrorSet(kSCStatusFailed);
+ return (FALSE);
+ }
+ interfacePrivate->IPMonitorControl = control;
+ }
+ return IPMonitorControlSetInterfaceAdvisory(control,
+ ifName,
+ advisory,
+ reason);
+}
+
+Boolean
+SCNetworkInterfaceAdvisoryIsSet(SCNetworkInterfaceRef interface)
+{
+ IPMonitorControlRef control;
+ SCNetworkInterfacePrivateRef interfacePrivate =
+ (SCNetworkInterfacePrivateRef)interface;
+ CFStringRef ifName;
+
+ ifName = SCNetworkInterfaceGetBSDName(interface);
+ if (ifName == NULL) {
+ _SCErrorSet(kSCStatusInvalidArgument);
+ return (FALSE);
+ }
+ control = interfacePrivate->IPMonitorControl;
+ if (control == NULL) {
+ control = IPMonitorControlCreate();
+ if (control == NULL) {
+ _SCErrorSet(kSCStatusFailed);
+ return (FALSE);
+ }
+ interfacePrivate->IPMonitorControl = control;
+ }
+ return IPMonitorControlInterfaceAdvisoryIsSet(control, ifName);
+}
+
+CFStringRef
+SCNetworkInterfaceCopyAdvisoryNotificationKey(SCNetworkInterfaceRef interface)
+{
+ CFStringRef ifName;
+
+ ifName = SCNetworkInterfaceGetBSDName(interface);
+ if (ifName == NULL) {
+ _SCErrorSet(kSCStatusInvalidArgument);
+ return (NULL);
+ }
+ return IPMonitorControlCopyInterfaceAdvisoryNotificationKey(ifName);
+}
+#endif /* TARGET_OS_SIMULATOR */
#pragma mark -
#pragma mark SCNetworkInterface [InterfaceNamer] SPIs
}
+Boolean
+_SCNetworkInterfaceIsTrustRequired(SCNetworkInterfaceRef interface)
+{
+ SCNetworkInterfacePrivateRef interfacePrivate = (SCNetworkInterfacePrivateRef)interface;
+
+ return interfacePrivate->trustRequired;
+}
+
+
#pragma mark -
#pragma mark SCNetworkInterface SPIs
-#if !TARGET_OS_EMBEDDED
+#if TARGET_OS_OSX
SCNetworkInterfaceRef
_SCNetworkInterfaceCopyBTPANInterface(void)
return interface;
}
-#endif // !TARGET_OS_EMBEDDED
+#endif // TARGET_OS_OSX
CFStringRef
newPrivate->configurationAction = CFRetain(oldPrivate->configurationAction);
}
newPrivate->hidden = oldPrivate->hidden;
+#if TARGET_OS_IPHONE
+ newPrivate->trustRequired = oldPrivate->trustRequired;
+#endif // TARGET_OS_IPHONE
if (oldPrivate->location != NULL) {
newPrivate->location = CFRetain(oldPrivate->location);
}
--- /dev/null
+/*
+ * Copyright (c) 2018 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@
+ */
+
+/*
+ * Modification History
+ *
+ * January 17, 2018 Dieter Siegmund (dieter@apple.com)
+ * - initial revision
+ */
+
+/*
+ * SCNetworkInterfaceProvider.c
+ */
+
+#include <CoreFoundation/CoreFoundation.h>
+#include <CoreFoundation/CFRuntime.h>
+#include <libkern/OSAtomic.h>
+#include "SCNetworkConfigurationPrivate.h"
+#include "SCNetworkConfigurationInternal.h"
+#include "SCNetworkInterfaceProvider.h"
+
+static void
+my_CFRelease(void * t)
+{
+ void * * obj = (void * *)t;
+ if (obj && *obj) {
+ CFRelease(*obj);
+ *obj = NULL;
+ }
+ return;
+}
+
+/**
+ ** ObjectWrapper
+ **/
+
+typedef struct {
+ const void * obj;
+ int32_t retain_count;
+} ObjectWrapper, * ObjectWrapperRef;
+
+static const void *
+ObjectWrapperRetain(const void * info)
+{
+ ObjectWrapperRef wrapper = (ObjectWrapperRef)info;
+
+ (void)OSAtomicIncrement32(&wrapper->retain_count);
+ return (info);
+}
+
+static ObjectWrapperRef
+ObjectWrapperAllocate(const void * obj)
+{
+ ObjectWrapperRef wrapper;
+
+ wrapper = (ObjectWrapperRef)malloc(sizeof(*wrapper));
+ wrapper->obj = obj;
+ wrapper->retain_count = 1;
+ return (wrapper);
+}
+
+static void
+ObjectWrapperRelease(const void * info)
+{
+ int32_t new_val;
+ ObjectWrapperRef wrapper = (ObjectWrapperRef)info;
+
+ new_val = OSAtomicDecrement32(&wrapper->retain_count);
+ if (new_val == 0) {
+ free(wrapper);
+ }
+ else {
+ assert(new_val > 0);
+ }
+ return;
+}
+
+static void
+ObjectWrapperSetObject(ObjectWrapperRef wrapper, const void * obj)
+{
+ wrapper->obj = obj;
+}
+
+static const void *
+ObjectWrapperGetObject(ObjectWrapperRef wrapper)
+{
+ return (wrapper->obj);
+}
+
+static SCDynamicStoreRef
+StoreObjectWrapperAllocate(const void * obj,
+ CFStringRef name,
+ SCDynamicStoreCallBack handler,
+ CFArrayRef keys,
+ CFArrayRef patterns,
+ dispatch_queue_t queue,
+ ObjectWrapperRef * ret_wrapper)
+{
+ SCDynamicStoreContext context = {
+ .version = 0,
+ .info = NULL,
+ .retain = ObjectWrapperRetain,
+ .release = ObjectWrapperRelease,
+ .copyDescription = NULL
+ };
+ SCDynamicStoreRef store;
+ ObjectWrapperRef wrapper;
+
+ wrapper = ObjectWrapperAllocate(obj);
+ context.info = wrapper;
+ store = SCDynamicStoreCreate(NULL, name, handler, &context);
+ if (store == NULL) {
+ SC_log(LOG_NOTICE,
+ "%@: SCDynamicStoreCreate failed", name);
+ }
+ else if (!SCDynamicStoreSetNotificationKeys(store, keys, patterns)) {
+ SC_log(LOG_NOTICE,
+ "%@: SCDynamicStoreSetNoticationKeys failed", name);
+ CFRelease(store);
+ store = NULL;
+ }
+ else if (queue != NULL
+ && !SCDynamicStoreSetDispatchQueue(store, queue)) {
+ SC_log(LOG_NOTICE,
+ "%@: SCDynamicStoreSetDispatchQueue failed", name);
+ CFRelease(store);
+ store = NULL;
+ }
+ if (store == NULL) {
+ ObjectWrapperRelease(wrapper);
+ wrapper = NULL;
+ }
+ *ret_wrapper = wrapper;
+ return (store);
+}
+
+/**
+ ** CF object glue code
+ **/
+static CFStringRef __SCNetworkInterfaceProviderCopyDebugDesc(CFTypeRef cf);
+static void __SCNetworkInterfaceProviderDeallocate(CFTypeRef cf);
+
+static CFTypeID __kSCNetworkInterfaceProviderTypeID = _kCFRuntimeNotATypeID;
+
+static const CFRuntimeClass __SCNetworkInterfaceProviderClass = {
+ 0, /* version */
+ "SCNetworkInterfaceProvider", /* className */
+ NULL, /* init */
+ NULL, /* copy */
+ __SCNetworkInterfaceProviderDeallocate, /* deallocate */
+ NULL, /* equal */
+ NULL, /* hash */
+ NULL, /* copyFormattingDesc */
+ __SCNetworkInterfaceProviderCopyDebugDesc /* copyDebugDesc */
+};
+
+struct __SCNetworkInterfaceProvider {
+ CFRuntimeBase cf_base;
+
+ IPMonitorControlRef control;
+ SCDynamicStoreRef store;
+ ObjectWrapperRef wrapper;
+ dispatch_queue_t queue;
+
+ SCNetworkInterfaceProviderEventHandler handler;
+ CFStringRef if_name;
+ SCNetworkInterfaceRef if_type;
+ Boolean enabled;
+ Boolean needed;
+};
+
+
+static CFStringRef
+__SCNetworkInterfaceProviderCopyDebugDesc(CFTypeRef cf)
+{
+ CFAllocatorRef allocator = CFGetAllocator(cf);
+ SCNetworkInterfaceProviderRef provider = (SCNetworkInterfaceProviderRef)cf;
+ CFMutableStringRef result;
+
+ result = CFStringCreateMutable(allocator, 0);
+ CFStringAppendFormat(result, NULL,
+ CFSTR("<SCNetworkInterfaceProvider %@ %@ <%p>"),
+ provider->if_type, provider->if_name, cf);
+ return (result);
+}
+
+static void
+SCNetworkInterfaceProviderDeallocate(SCNetworkInterfaceProviderRef provider)
+{
+ provider->enabled = FALSE;
+ my_CFRelease(&provider->control);
+ if (provider->wrapper != NULL) {
+ ObjectWrapperSetObject(provider->wrapper, NULL);
+ ObjectWrapperRelease(provider->wrapper);
+ provider->wrapper = NULL;
+ }
+ if (provider->store != NULL) {
+ SCDynamicStoreSetDispatchQueue(provider->store, NULL);
+ my_CFRelease(&provider->store);
+ }
+ if (provider->queue != NULL) {
+ dispatch_release(provider->queue);
+ provider->queue = NULL;
+ }
+ if (provider->handler != NULL) {
+ Block_release(provider->handler);
+ provider->handler = NULL;
+ }
+ my_CFRelease(&provider->if_name);
+ my_CFRelease(&provider->if_type);
+}
+
+static void
+__SCNetworkInterfaceProviderDeallocate(CFTypeRef cf)
+{
+ SCNetworkInterfaceProviderRef provider = (SCNetworkInterfaceProviderRef)cf;
+
+ if (provider->queue != NULL) {
+ dispatch_sync(provider->queue, ^{
+ SCNetworkInterfaceProviderDeallocate(provider);
+ });
+ }
+ else {
+ SCNetworkInterfaceProviderDeallocate(provider);
+ }
+ return;
+}
+
+/**
+ ** Supporting Functions
+ **/
+static void
+__SCNetworkInterfaceProviderRegisterClass(void)
+{
+ static dispatch_once_t once;
+ dispatch_block_t once_block;
+
+ once_block = ^{
+ __kSCNetworkInterfaceProviderTypeID
+ = _CFRuntimeRegisterClass(&__SCNetworkInterfaceProviderClass);
+ };
+ dispatch_once(&once, once_block);
+ return;
+}
+
+static SCNetworkInterfaceProviderRef
+__SCNetworkInterfaceProviderAllocate(CFAllocatorRef allocator)
+{
+ SCNetworkInterfaceProviderRef provider;
+ int size;
+
+ __SCNetworkInterfaceProviderRegisterClass();
+ size = sizeof(*provider) - sizeof(CFRuntimeBase);
+ provider = (SCNetworkInterfaceProviderRef)
+ _CFRuntimeCreateInstance(allocator,
+ __kSCNetworkInterfaceProviderTypeID,
+ size, NULL);
+ memset(((void *)provider) + sizeof(CFRuntimeBase), 0, size);
+ return (provider);
+}
+
+static void
+SCNetworkInterfaceProviderCheck(SCNetworkInterfaceProviderRef provider)
+{
+ Boolean advisory_set;
+
+ if (!provider->enabled || provider->handler == NULL) {
+ return;
+ }
+ advisory_set
+ = IPMonitorControlAnyInterfaceAdvisoryIsSet(provider->control);
+ if (provider->needed != advisory_set) {
+ SCNetworkInterfaceProviderEvent event;
+
+ event = advisory_set
+ ? kSCNetworkInterfaceProviderEventActivationRequested
+ : kSCNetworkInterfaceProviderEventActivationNoLongerRequested;
+ (provider->handler)(event, NULL);
+ provider->needed = advisory_set;
+ }
+ return;
+}
+
+static void
+StoreHandleChanges(SCDynamicStoreRef store, CFArrayRef changes, void * info)
+{
+#pragma unused(store)
+#pragma unused(changes)
+ SCNetworkInterfaceProviderRef provider;
+ ObjectWrapperRef wrapper = (ObjectWrapperRef)info;
+
+ provider = (SCNetworkInterfaceProviderRef)ObjectWrapperGetObject(wrapper);
+ if (provider == NULL) {
+ /* provider has been deallocated */
+ return;
+ }
+ SCNetworkInterfaceProviderCheck(provider);
+ return;
+}
+
+
+/**
+ ** SCNetworkInterfaceProvider SPI
+ **/
+SCNetworkInterfaceProviderRef
+SCNetworkInterfaceProviderCreate(CFStringRef type,
+ CFStringRef ifname,
+ CFDictionaryRef options)
+{
+ IPMonitorControlRef control;
+ CFStringRef pattern;
+ CFArrayRef patterns;
+ SCNetworkInterfaceProviderRef provider;
+ dispatch_queue_t queue;
+ SCDynamicStoreRef store = NULL;
+ ObjectWrapperRef wrapper = NULL;
+
+ if (options != NULL || ifname == NULL || type == NULL) {
+ _SCErrorSet(kSCStatusInvalidArgument);
+ return (NULL);
+ }
+ control = IPMonitorControlCreate();
+ if (control == NULL) {
+ _SCErrorSet(kSCStatusFailed);
+ return (NULL);
+ }
+ pattern
+ = IPMonitorControlCopyInterfaceAdvisoryNotificationKey(kSCCompAnyRegex);
+ patterns = CFArrayCreate(NULL, (const void * *)&pattern, 1,
+ &kCFTypeArrayCallBacks);
+ CFRelease(pattern);
+#define OUR_NAME "SCNetworkInterfaceProvider"
+ queue = dispatch_queue_create(OUR_NAME, NULL);
+ provider = __SCNetworkInterfaceProviderAllocate(NULL);
+ store = StoreObjectWrapperAllocate(provider,
+ CFSTR(OUR_NAME),
+ StoreHandleChanges,
+ NULL,
+ patterns,
+ queue,
+ &wrapper);
+ CFRelease(patterns);
+ if (store == NULL) {
+ dispatch_release(queue);
+ CFRelease(provider);
+ provider = NULL;
+ CFRelease(control);
+ }
+ else {
+ provider->control = control;
+ provider->store = store;
+ provider->wrapper = wrapper;
+ provider->queue = queue;
+ provider->if_name = CFRetain(ifname);
+ provider->if_type = CFRetain(type);
+ }
+ return (provider);
+}
+
+void
+SCNetworkInterfaceProviderSetEventHandler(SCNetworkInterfaceProviderRef provider,
+ SCNetworkInterfaceProviderEventHandler handler)
+{
+ if (handler == NULL) {
+ /* can't clear handler once set */
+ return;
+ }
+ dispatch_sync(provider->queue, ^{
+ if (provider->enabled) {
+ /* enabling before setting the handler isn't allowed */
+ SC_log(LOG_NOTICE,
+ "%s: call SCNetworkInterfaceSetEventHandler before "
+ " SCNetworkInterfaceProviderResume", __FUNCTION__);
+ return;
+ }
+ if (provider->handler != NULL) {
+ /* can't change the handler once set */
+ SC_log(LOG_NOTICE,
+ "%s: ignoring second invocation of "
+ "SCNetworkInterfaceSetEventHandler", __FUNCTION__);
+ return;
+ }
+ provider->handler = Block_copy(handler);
+ });
+ return;
+}
+
+void
+SCNetworkInterfaceProviderResume(SCNetworkInterfaceProviderRef provider)
+{
+ dispatch_async(provider->queue, ^{
+ if (!provider->enabled) {
+ provider->enabled = TRUE;
+ SCNetworkInterfaceProviderCheck(provider);
+ }
+ });
+ return;
+}
+
+#if TEST_SCNetworkInterfaceProvider
+
+/*
+ xcrun -sdk iphoneos.internal cc -o scnip SCNetworkInterfaceProvider.c -DTEST_SCNetworkInterfaceProvider -framework CoreFoundation -framework SystemConfiguration -arch arm64 -I ../IPMonitorControl ../IPMonitorControl/IPMonitorControl.c -DSC_LOG_HANDLE=__log_SCNetworkInterfaceProvider
+*/
+
+__private_extern__ os_log_t
+__log_SCNetworkInterfaceProvider(void)
+{
+ static os_log_t log = NULL;
+
+ if (log == NULL) {
+ log = os_log_create("com.apple.SystemConfiguration", "SCNetworkConfiguration");
+ }
+
+ return log;
+}
+
+static void
+event_handler(SCNetworkInterfaceProviderRef provider,
+ SCNetworkInterfaceProviderEvent event,
+ CFDictionaryRef event_data)
+{
+ printf("<%p> event %d\n", provider, event);
+}
+
+int
+main(int argc, char * argv[])
+{
+ SCNetworkInterfaceProviderEventHandler handler;
+ SCNetworkInterfaceProviderRef provider;
+
+ provider
+ = SCNetworkInterfaceProviderCreate(kSCNetworkInterfaceTypeWWAN,
+ CFSTR("pdp_ip10"),
+ NULL);
+ if (provider == NULL) {
+ fprintf(stderr, "SCNetworkInterfaceProviderCreate failed\n");
+ exit(1);
+ }
+ handler = ^(SCNetworkInterfaceProviderEvent event,
+ CFDictionaryRef event_data) {
+ event_handler(provider, event, event_data);
+ };
+ SCNetworkInterfaceProviderSetEventHandler(provider, handler);
+ SCNetworkInterfaceProviderResume(provider);
+ dispatch_main();
+ exit(0);
+ return (0);
+}
+#endif
--- /dev/null
+/*
+ * Copyright (c) 2018 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 _SCNETWORKINTERFACEPROVIDER_H
+#define _SCNETWORKINTERFACEPROVIDER_H
+
+/*
+ * Modification History
+ *
+ * January 17, 2018 Dieter Siegmund (dieter@apple.com)
+ * - initial revision
+ */
+
+/*
+ * SCNetworkInterfaceProvider.h
+ */
+
+
+#include <os/availability.h>
+#include <CoreFoundation/CoreFoundation.h>
+#include <SystemConfiguration/SCNetworkConfiguration.h>
+
+__BEGIN_DECLS
+
+typedef CF_ENUM(uint32_t, SCNetworkInterfaceProviderEvent) {
+ kSCNetworkInterfaceProviderEventActivationRequested = 1,
+ kSCNetworkInterfaceProviderEventActivationNoLongerRequested = 2,
+};
+
+typedef struct CF_BRIDGED_TYPE(id) __SCNetworkInterfaceProvider *
+SCNetworkInterfaceProviderRef;
+
+/*!
+ @typedef SCNetworkInterfaceProviderEventHandler
+ @discussion Event handler callback to process SCNetworkInterfaceProvider
+ events.
+ @param event The event to handle.
+ @param event_data The event data, always NULL currently.
+ */
+typedef void
+(^SCNetworkInterfaceProviderEventHandler)(SCNetworkInterfaceProviderEvent event,
+ CFDictionaryRef event_data);
+
+/*!
+ @function SCNetworkInterfaceProviderCreate
+ @discussion Create an interface provider for a single network
+ interface. The interface provider processes the events on the
+ interface and takes actions based on the specific event.
+ After calling this function, activate the event handler by calling
+ SCNetworkInterfaceProviderSetEventHandler() followed by
+ SCNetworkInterfaceProviderResume().
+ Calling CFRelease() will free resources and deactivate the
+ SCNetworkInterfaceProvider callback.
+ @param interfaceType The kSCNetworkInterfaceType that the interface
+ provider handles e.g. kSCNetworkInterfaceTypeCellular.
+ @param interfaceName The name of the network interface, e.g. "pdp_ip0".
+ @param options NULL for now.
+ @result A non-NULL SCNetworkInterfaceProviderRef if the interface
+ provider was successfully registered, NULL otherwise.
+ */
+SCNetworkInterfaceProviderRef
+SCNetworkInterfaceProviderCreate(CFStringRef interfaceType,
+ CFStringRef interfaceName,
+ CFDictionaryRef options)
+ API_AVAILABLE(macos(10.14), ios(12.0));
+
+/*!
+ @function SCNetworkInterfaceProviderSetEventHandler
+ @discussion Set the event handler to process events for the
+ SCNetworkInterfaceProvider object.
+ @param provider The SCNetworkInterfaceProvider to set the callback for.
+ @param handler The event handler to process events. Invoking this
+ function more than once or with a NULL handler is not valid.
+ */
+void
+SCNetworkInterfaceProviderSetEventHandler(SCNetworkInterfaceProviderRef provider,
+ SCNetworkInterfaceProviderEventHandler handler)
+ API_AVAILABLE(macos(10.14), ios(12.0));
+
+/*!
+ @function SCNetworkInterfaceProviderResume
+ @discussion Activate the interface provider so that its event handler
+ will get called.
+ @param provider The provider object to enable events on.
+ */
+void
+SCNetworkInterfaceProviderResume(SCNetworkInterfaceProviderRef provider)
+ API_AVAILABLE(macos(10.14), ios(12.0));
+
+__END_DECLS
+#endif /* _SCNETWORKINTERFACEPROVIDER_H */
/*
- * Copyright (c) 2014-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2014-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
const CFStringRef kSCNetworkConfigurationMigrationActionKey = CFSTR("MigrationActionKey");
const CFStringRef kSCNetworkConfigurationRepair = CFSTR("ConfigurationRepair");
+
#if !TARGET_OS_IPHONE
static CFDictionaryRef
_SCNetworkMigrationCopyMappingBSDNameToBridgeServices(SCPreferencesRef prefs);
static CFDictionaryRef
_SCNetworkMigrationCopyMappingBSDNameToVLANServices(SCPreferencesRef prefs);
-#endif
+#endif // !TARGET_OS_IPHONE
+
static Boolean
_SCNetworkConfigurationIsInterfaceNamerMappable(SCNetworkInterfaceRef interface1, SCNetworkInterfaceRef interface2, Boolean bypassActive);
}
CFRelease(memberInterfacesMutable);
}
-#endif
+#endif // !TARGET_OS_IPHONE
static void
validate_vlan(const void *value, void *context)
bsdNameToBridgeServices = _SCNetworkMigrationCopyMappingBSDNameToBridgeServices(prefs);
bsdNameToBondServices = _SCNetworkMigrationCopyMappingBSDNameToBondServices(prefs);
bsdNameToVLANServices = _SCNetworkMigrationCopyMappingBSDNameToVLANServices(prefs);
-#endif
+#endif // !TARGET_OS_IPHONE
}
context.interfaceMapping = mappingBSDNameToInterface;
context.isValid = &isValid;
CFArrayApplyFunction(bonds, CFRangeMake(0, CFArrayGetCount(bonds)), validate_bond, (void*)ni_prefs);
CFRelease(bonds);
}
-#endif
+#endif // !TARGET_OS_IPHONE
CFArrayRef vlans = SCVLANInterfaceCopyAll(prefs);
if (vlans != NULL) {
CFArrayApplyFunction(vlans, CFRangeMake(0, CFArrayGetCount(vlans)), validate_vlan, (void*)ni_prefs);
if (bsdNameToVLANServices != NULL) {
CFRelease(bsdNameToVLANServices);
}
-#endif
+#endif // !TARGET_OS_IPHONE
if (setServices != NULL) {
CFRelease(setServices);
}
}
return TRUE;
}
-#endif
+#endif // !TARGET_OS_IPHONE
typedef struct {
SCPreferencesRef prefs;
bsdNameMapping, setMapping, sourceServiceSetMapping)) {
SC_log(LOG_INFO, "_SCNetworkMigrationDoVirtualNetworkInterfaceMigration: failed to complete successfully");
}
-#endif
+#endif // !TARGET_OS_IPHONE
// Migrate Service Order
if (!_SCNetworkMigrationDoServiceOrderMigration(sourcePrefs, targetPrefs, setMapping)) {
SC_log(LOG_INFO, "_SCNetworkMigrationDoServiceOrderMigration: failed to complete successfully");
/*
- * Copyright (c) 2003-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2003-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
* - add advanced reachability APIs
*/
-#include <Availability.h>
+#include <os/availability.h>
#include <TargetConditionals.h>
#include <sys/cdefs.h>
#include <dispatch/dispatch.h>
+#if __has_include(<nw/private.h>)
+#include <nw/private.h>
+#else // __has_include(<nw/private.h>)
#include <network/private.h>
+#endif // __has_include(<nw/private.h>)
#define DEBUG_REACHABILITY_TYPE_NAME "create w/name"
#define DEBUG_REACHABILITY_TYPE_NAME_OPTIONS " + options"
}
static os_log_t
-__log_SCNetworkReachability()
+__log_SCNetworkReachability(void)
{
static os_log_t log = NULL;
return (isA_CFType(obj, SCNetworkReachabilityGetTypeID()));
}
-CFStringRef
+static CFStringRef
_SCNetworkReachabilityCopyTargetDescription(SCNetworkReachabilityRef target)
{
CFAllocatorRef allocator = CFGetAllocator(target);
}
-CFStringRef
-_SCNetworkReachabilityCopyTargetFlags(SCNetworkReachabilityRef target)
+static CFStringRef
+__SCNetworkReachabilityCopyTargetFlags(SCNetworkReachabilityRef target)
{
CFAllocatorRef allocator = CFGetAllocator(target);
CFStringRef str;
// add flags
if (targetPrivate->scheduled) {
- str = _SCNetworkReachabilityCopyTargetFlags(target);
+ str = __SCNetworkReachabilityCopyTargetFlags(target);
CFStringAppendFormat(result, NULL, CFSTR(", %@"), str);
CFRelease(str);
}
__block bool checkDNSFlags = TRUE;
flags = kSCNetworkReachabilityFlagsReachable;
why = "nw_path_status_satisfied";
-#if TARGET_OS_IPHONE && !TARGET_OS_SIMULATOR
+#if TARGET_OS_IPHONE && !TARGET_OS_SIMULATOR
if (nw_path_uses_interface_type(path, nw_interface_type_cellular)) {
flags |= (kSCNetworkReachabilityFlagsTransientConnection | kSCNetworkReachabilityFlagsIsWWAN);
why = "nw_path_status_satisfied, cellular";
}
-#endif
+#endif // TARGET_OS_IPHONE && !TARGET_OS_SIMULATOR
xpc_object_t agent_dictionary = nw_path_copy_netagent_dictionary(path);
if (agent_dictionary != NULL) {
if (xpc_dictionary_get_count(agent_dictionary) > 0) {
} else if (status == nw_path_status_unsatisfied) {
flags = 0;
why = "nw_path_status_unsatisfied";
-#if TARGET_OS_IPHONE && !TARGET_OS_SIMULATOR
+#if TARGET_OS_IPHONE && !TARGET_OS_SIMULATOR
if (nw_path_uses_interface_type(path, nw_interface_type_cellular)) {
flags |= kSCNetworkReachabilityFlagsIsWWAN;
why = "nw_path_status_unsatisfied, WWAN";
}
-#endif
+#endif // TARGET_OS_IPHONE && !TARGET_OS_SIMULATOR
} else if (status == nw_path_status_satisfiable) {
flags = (kSCNetworkReachabilityFlagsReachable | kSCNetworkReachabilityFlagsConnectionRequired | kSCNetworkReachabilityFlagsTransientConnection);
why = "nw_path_status_satisfiable";
flags |= kSCNetworkReachabilityFlagsConnectionOnDemand;
why = "nw_path_status_satisfiable, OnDemand";
}
-#if TARGET_OS_IPHONE && !TARGET_OS_SIMULATOR
+#if TARGET_OS_IPHONE && !TARGET_OS_SIMULATOR
else if (nw_path_uses_interface_type(path, nw_interface_type_cellular)) {
flags |= kSCNetworkReachabilityFlagsIsWWAN;
why = "nw_path_status_satisfiable, WWAN";
}
-#endif
+#endif // TARGET_OS_IPHONE && !TARGET_OS_SIMULATOR
}
}
SC_log(LOG_DEBUG, "__SCNetworkReachabilityGetFlagsFromPath, flags = 0x%08x, %s", flags, why);
struct sockaddr_in6 synthesizedAddress = {
.sin6_len = sizeof(struct sockaddr_in6),
.sin6_family = AF_INET6,
+#if defined(NW_PORT_HOST_BYTE_ORDER) && NW_PORT_HOST_BYTE_ORDER
+ .sin6_port = htons(nw_endpoint_get_port(endpoint)),
+#else
.sin6_port = nw_endpoint_get_port(endpoint),
+#endif
.sin6_flowinfo = 0,
.sin6_scope_id = 0
};
/*
- * Copyright (c) 2003-2005, 2008-2010, 2015-2016 Apple Inc. All rights reserved.
+ * Copyright (c) 2003-2005, 2008-2010, 2015-2016, 2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#ifndef _SCNETWORKREACHABILITY_H
#define _SCNETWORKREACHABILITY_H
-#include <Availability.h>
+#include <os/availability.h>
#include <TargetConditionals.h>
#include <sys/cdefs.h>
#include <sys/types.h>
computer.
Note that reachability does <i>not</i> guarantee that the data
packet will actually be received by the host.
-
+
When reachability is used without scheduling updates on a runloop
or dispatch queue, the system will not generate DNS traffic and
will be optimistic about its reply - it will assume that the target
needed to learn the address. When scheduled, the first callback
will behave like an unscheduled call but subsequent calls will
leverage DNS results.
-
+
When used on IPv6-only (NAT64+DNS64) networks, reachability checks
for IPv4 address literals (either a struct sockaddr_in * or textual
representations such as "192.0.2.1") will automatically give the
This flag indicates that network traffic to the specified
nodename or address will not go through a gateway, but is
routed directly to one of the interfaces in the system.
-#if TARGET_OS_IPHONE
@constant kSCNetworkReachabilityFlagsIsWWAN
This flag indicates that the specified nodename or address can
be reached via an EDGE, GPRS, or other "cell" connection.
-#endif // TARGET_OS_IPHONE
*/
typedef CF_OPTIONS(uint32_t, SCNetworkReachabilityFlags) {
- kSCNetworkReachabilityFlagsTransientConnection = 1<<0,
- kSCNetworkReachabilityFlagsReachable = 1<<1,
- kSCNetworkReachabilityFlagsConnectionRequired = 1<<2,
- kSCNetworkReachabilityFlagsConnectionOnTraffic = 1<<3,
- kSCNetworkReachabilityFlagsInterventionRequired = 1<<4,
- kSCNetworkReachabilityFlagsConnectionOnDemand = 1<<5, // __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_3_0)
- kSCNetworkReachabilityFlagsIsLocalAddress = 1<<16,
- kSCNetworkReachabilityFlagsIsDirect = 1<<17,
-#if TARGET_OS_IPHONE
- kSCNetworkReachabilityFlagsIsWWAN = 1<<18,
-#endif // TARGET_OS_IPHONE
+ kSCNetworkReachabilityFlagsTransientConnection = 1<<0,
+ kSCNetworkReachabilityFlagsReachable = 1<<1,
+ kSCNetworkReachabilityFlagsConnectionRequired = 1<<2,
+ kSCNetworkReachabilityFlagsConnectionOnTraffic = 1<<3,
+ kSCNetworkReachabilityFlagsInterventionRequired = 1<<4,
+ kSCNetworkReachabilityFlagsConnectionOnDemand
+ API_AVAILABLE(macos(6.0),ios(3.0)) = 1<<5,
+ kSCNetworkReachabilityFlagsIsLocalAddress = 1<<16,
+ kSCNetworkReachabilityFlagsIsDirect = 1<<17,
+ kSCNetworkReachabilityFlagsIsWWAN
+ API_UNAVAILABLE(macos) API_AVAILABLE(ios(2.0)) = 1<<18,
kSCNetworkReachabilityFlagsConnectionAutomatic = kSCNetworkReachabilityFlagsConnectionOnTraffic
};
SCNetworkReachabilityCreateWithAddress (
CFAllocatorRef __nullable allocator,
const struct sockaddr *address
- ) __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0);
+ ) API_AVAILABLE(macos(10.3), ios(2.0));
/*!
@function SCNetworkReachabilityCreateWithAddressPair
CFAllocatorRef __nullable allocator,
const struct sockaddr * __nullable localAddress,
const struct sockaddr * __nullable remoteAddress
- ) __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0);
+ ) API_AVAILABLE(macos(10.3), ios(2.0));
/*!
@function SCNetworkReachabilityCreateWithName
SCNetworkReachabilityCreateWithName (
CFAllocatorRef __nullable allocator,
const char *nodename
- ) __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0);
+ ) API_AVAILABLE(macos(10.3), ios(2.0));
/*!
@function SCNetworkReachabilityGetTypeID
instances.
*/
CFTypeID
-SCNetworkReachabilityGetTypeID (void) __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0);
+SCNetworkReachabilityGetTypeID (void) API_AVAILABLE(macos(10.3), ios(2.0));
/*!
SCNetworkReachabilityGetFlags (
SCNetworkReachabilityRef target,
SCNetworkReachabilityFlags *flags
- ) __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0);
+ ) API_AVAILABLE(macos(10.3), ios(2.0));
/*!
@function SCNetworkReachabilitySetCallback
SCNetworkReachabilityRef target,
SCNetworkReachabilityCallBack __nullable callout,
SCNetworkReachabilityContext * __nullable context
- ) __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0);
+ ) API_AVAILABLE(macos(10.3), ios(2.0));
/*!
@function SCNetworkReachabilityScheduleWithRunLoop
SCNetworkReachabilityRef target,
CFRunLoopRef runLoop,
CFStringRef runLoopMode
- ) __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0);
+ ) API_AVAILABLE(macos(10.3), ios(2.0));
/*!
@function SCNetworkReachabilityUnscheduleFromRunLoop
SCNetworkReachabilityRef target,
CFRunLoopRef runLoop,
CFStringRef runLoopMode
- ) __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0);
+ ) API_AVAILABLE(macos(10.3), ios(2.0));
/*!
@function SCNetworkReachabilitySetDispatchQueue
dispatch queue.
@param target The address or name that is set up for asynchronous
notifications. Must be non-NULL.
- @param queue A libdispatch queue to run the callback on.
+ @param queue A libdispatch queue to run the callback on.
Pass NULL to unschedule callbacks.
@result Returns TRUE if the target is scheduled or unscheduled successfully;
FALSE otherwise.
SCNetworkReachabilitySetDispatchQueue (
SCNetworkReachabilityRef target,
dispatch_queue_t __nullable queue
- ) __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0);
+ ) API_AVAILABLE(macos(10.6), ios(4.0));
__END_DECLS
CF_ASSUME_NONNULL_END
CF_IMPLICIT_BRIDGING_DISABLED
-#endif /* _SCNETWORKREACHABILITY_H */
+#endif /* _SCNETWORKREACHABILITY_H */
/*
- * Copyright (c) 2003-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2003-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#ifndef _SCNETWORKREACHABILITYINTERNAL_H
#define _SCNETWORKREACHABILITYINTERNAL_H
-#include <Availability.h>
+#include <os/availability.h>
#include <TargetConditionals.h>
#include <sys/cdefs.h>
#include <CoreFoundation/CoreFoundation.h>
#include <net/if.h>
#include <xpc/xpc.h>
+#if __has_include(<nw/private.h>)
+#include <nw/private.h>
+#else // __has_include(<nw/private.h>)
#include <network/private.h>
+#endif // __has_include(<nw/private.h>)
#pragma mark -
#pragma mark SCNetworkReachability
__BEGIN_DECLS
-CFStringRef
-_SCNetworkReachabilityCopyTargetDescription (SCNetworkReachabilityRef target);
-
-
static __inline__ ReachabilityRankType
__SCNetworkReachabilityRank(SCNetworkReachabilityFlags flags)
{
/*
- * Copyright (c) 2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2017, 2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#ifndef _SCNETWORKREACHABILITYLOGGING_H
#define _SCNETWORKREACHABILITYLOGGING_H
-#include <Availability.h>
+#include <os/availability.h>
#include <TargetConditionals.h>
#include <assert.h>
#include <sys/cdefs.h>
/*
- * Copyright (c) 2006, 2008, 2009, 2011-2015, 2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2006, 2008, 2009, 2011-2015, 2017, 2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#include <sys/types.h>
#include <sys/socket.h>
#include <net/if.h>
+#if __has_include(<nw/private.h>)
+#include <nw/private.h>
+#else // __has_include(<nw/private.h>)
#include <network/conninfo.h>
+#endif // __has_include(<nw/private.h>)
#pragma mark SCNetworkSignature Supporting APIs
/*
- * Copyright (c) 2006, 2008, 2011, 2012, 2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2006, 2008, 2011, 2012, 2017, 2018 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,
* 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 _SCNETWORKSIGNATURE_H
#define _SCNETWORKSIGNATURE_H
-#include <Availability.h>
+#include <os/availability.h>
#include <sys/cdefs.h>
#include <CoreFoundation/CFString.h>
#include <CoreFoundation/CFArray.h>
NULL if no networks are currently active.
*/
CFArrayRef /* of CFStringRef's */
-SCNetworkSignatureCopyActiveIdentifiers(CFAllocatorRef alloc) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+SCNetworkSignatureCopyActiveIdentifiers(CFAllocatorRef alloc) API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkSignatureCopyActiveIdentifierForAddress
*/
CFStringRef
SCNetworkSignatureCopyActiveIdentifierForAddress(CFAllocatorRef alloc,
- const struct sockaddr * addr) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+ const struct sockaddr * addr) API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCNetworkSignatureCopyIdentifierForConnectedSocket
*/
CFStringRef
SCNetworkSignatureCopyIdentifierForConnectedSocket(CFAllocatorRef alloc,
- int sock_fd) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0/*SPI*/);
+ int sock_fd) API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(5.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
__END_DECLS
/*
- * Copyright (c) 2000-2008, 2010-2013, 2015-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2000-2008, 2010-2013, 2015-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
int fd;
CFDataRef newPrefs;
CFIndex pathLen;
-#if TARGET_OS_EMBEDDED
CFStringRef protectionClass;
-#endif // TARGET_OS_EMBEDDED
char * thePath;
if (stat(prefsPrivate->path, &statBuf) == -1) {
thePath = CFAllocatorAllocate(NULL, pathLen, 0);
snprintf(thePath, pathLen, "%s-new", path);
-#if TARGET_OS_EMBEDDED
if ((prefsPrivate->options != NULL) &&
CFDictionaryGetValueIfPresent(prefsPrivate->options,
kSCPreferencesOptionProtectionClass,
pc = str[0] - 'A' + 1; // PROTECTION_CLASS_[ABCDEF]
fd = open_dprotected_np(thePath, O_WRONLY|O_CREAT, pc, 0, statBuf.st_mode);
- } else
-#endif // TARGET_OS_EMBEDDED
+ } else {
fd = open(thePath, O_WRONLY|O_CREAT, statBuf.st_mode);
+ }
if (fd == -1) {
_SCErrorSet(errno);
/*
- * Copyright (c) 2000-2010, 2013, 2015-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2000-2010, 2013, 2015-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
/*
- * Copyright(c) 2000-2017 Apple Inc. All rights reserved.
+ * Copyright(c) 2000-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
* - initial revision
*/
-#include <Availability.h>
+#include <os/availability.h>
#include <TargetConditionals.h>
#include <fcntl.h>
#include <pthread.h>
__private_extern__ os_log_t
-__log_SCPreferences()
+__log_SCPreferences(void)
{
static os_log_t log = NULL;
result = CFStringCreateMutable(allocator, 0);
CFStringAppendFormat(result, NULL, CFSTR("<SCPreferences %p [%p]> {"), cf, allocator);
CFStringAppendFormat(result, NULL, CFSTR("name = %@"), prefsPrivate->name);
- CFStringAppendFormat(result, NULL, CFSTR(", id = %@"), prefsPrivate->prefsID);
+ CFStringAppendFormat(result, NULL, CFSTR(", id = %@"),
+ prefsPrivate->prefsID != NULL ? prefsPrivate->prefsID : CFSTR("[default]"));
CFStringAppendFormat(result, NULL, CFSTR(", path = %s"),
- prefsPrivate->newPath ? prefsPrivate->newPath : prefsPrivate->path);
+ prefsPrivate->newPath != NULL ? prefsPrivate->newPath : prefsPrivate->path);
if (prefsPrivate->accessed) {
CFStringAppendFormat(result, NULL, CFSTR(", accessed"));
}
data);
CFRelease(data);
}
-#endif
+#endif // !TARGET_OS_IPHONE
/* get the application/executable/bundle name */
bundle = CFBundleGetMainBundle();
CFStringRef key;
key = CFArrayGetValueAtIndex(changedKeys, i);
+
+ // check if "commit"
if (CFEqual(key, prefsPrivate->sessionKeyCommit)) {
// if preferences have been saved
notify |= kSCPreferencesNotificationCommit;
+ continue;
}
+
+ // check if "apply"
if (CFEqual(key, prefsPrivate->sessionKeyApply)) {
// if stored preferences should be applied to current configuration
notify |= kSCPreferencesNotificationApply;
+ continue;
}
}
SC_log(LOG_DEBUG, "exec SCPreferences callout: %s%s%s",
((notify & kSCPreferencesNotificationCommit) != 0) ? "commit" : "",
(((notify & kSCPreferencesNotificationCommit) != 0) &&
- ((notify & kSCPreferencesNotificationApply ) != 0)) ? ", " : "",
+ ((notify & kSCPreferencesNotificationApply ) != 0)) ? ", " : "",
((notify & kSCPreferencesNotificationApply) != 0) ? "apply" : "");
(*rlsFunction)(prefs, notify, context_info);
}
/*
- * Copyright (c) 2000, 2001, 2004, 2005, 2007-2010, 2015 Apple Inc. All rights reserved.
+ * Copyright (c) 2000, 2001, 2004, 2005, 2007-2010, 2015, 2018 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,
* 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 _SCPREFERENCES_H
-#ifdef USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS
-#include <SystemConfiguration/_SCPreferences.h>
-#else /* USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS */
#define _SCPREFERENCES_H
-#include <Availability.h>
+#include <os/availability.h>
#include <TargetConditionals.h>
#include <sys/cdefs.h>
#include <dispatch/dispatch.h>
preferences to the active system configuration.
*/
typedef CF_OPTIONS(uint32_t, SCPreferencesNotification) {
- kSCPreferencesNotificationCommit = 1<<0, // __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/)
- kSCPreferencesNotificationApply = 1<<1 // __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/)
+ kSCPreferencesNotificationCommit
+ API_AVAILABLE(macos(4.0))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0)) = 1<<0,
+ kSCPreferencesNotificationApply
+ API_AVAILABLE(macos(4.0))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0)) = 1<<1
};
/*!
@discussion Returns the type identifier of all SCPreferences instances.
*/
CFTypeID
-SCPreferencesGetTypeID (void) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+SCPreferencesGetTypeID (void) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCPreferencesCreate
CFAllocatorRef __nullable allocator,
CFStringRef name,
CFStringRef __nullable prefsID
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
CFStringRef name,
CFStringRef __nullable prefsID,
AuthorizationRef __nullable authorization
- ) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCPreferencesLock
SCPreferencesLock (
SCPreferencesRef prefs,
Boolean wait
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCPreferencesCommitChanges
Boolean
SCPreferencesCommitChanges (
SCPreferencesRef prefs
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCPreferencesApplyChanges
Boolean
SCPreferencesApplyChanges (
SCPreferencesRef prefs
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCPreferencesUnlock
Boolean
SCPreferencesUnlock (
SCPreferencesRef prefs
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCPreferencesGetSignature
CFDataRef __nullable
SCPreferencesGetSignature (
SCPreferencesRef prefs
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCPreferencesCopyKeyList
CFArrayRef __nullable
SCPreferencesCopyKeyList (
SCPreferencesRef prefs
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCPreferencesGetValue
SCPreferencesGetValue (
SCPreferencesRef prefs,
CFStringRef key
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCPreferencesAddValue
SCPreferencesRef prefs,
CFStringRef key,
CFPropertyListRef value
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCPreferencesSetValue
SCPreferencesRef prefs,
CFStringRef key,
CFPropertyListRef value
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCPreferencesRemoveValue
SCPreferencesRemoveValue (
SCPreferencesRef prefs,
CFStringRef key
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCPreferencesSetCallback
SCPreferencesRef prefs,
SCPreferencesCallBack __nullable callout,
SCPreferencesContext * __nullable context
- ) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.4)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCPreferencesScheduleWithRunLoop
SCPreferencesRef prefs,
CFRunLoopRef runLoop,
CFStringRef runLoopMode
- ) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.4)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCPreferencesUnscheduleFromRunLoop
SCPreferencesRef prefs,
CFRunLoopRef runLoop,
CFStringRef runLoopMode
- ) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.4)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCPreferencesSetDispatchQueue
SCPreferencesSetDispatchQueue (
SCPreferencesRef prefs,
dispatch_queue_t __nullable queue
- ) __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.6)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCPreferencesSynchronize
void
SCPreferencesSynchronize (
SCPreferencesRef prefs
- ) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.4)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
__END_DECLS
CF_ASSUME_NONNULL_END
CF_IMPLICIT_BRIDGING_DISABLED
-#endif /* USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS */
-#endif /* _SCPREFERENCES_H */
+#endif /* _SCPREFERENCES_H */
__BEGIN_DECLS
os_log_t
-__log_SCPreferences ();
+__log_SCPreferences (void);
Boolean
__SCPreferencesCreate_helper (SCPreferencesRef prefs);
/*
- * Copyright (c) 2006, 2007, 2010, 2014, 2016, 2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2006, 2007, 2010, 2014, 2016-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
* - created (for EAP)
*/
-#include <Availability.h>
+#include <os/availability.h>
#include <TargetConditionals.h>
#include <sys/param.h>
#include <CoreFoundation/CoreFoundation.h>
/*
- * Copyright (c) 2006, 2008 Apple Inc. All rights reserved.
+ * Copyright (c) 2006, 2008, 2018 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,
* 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@
*/
* - routines to deal with keychain passwords
*/
-#include <Availability.h>
+#include <os/availability.h>
#include <TargetConditionals.h>
#include <sys/cdefs.h>
#include <CoreFoundation/CoreFoundation.h>
#if !TARGET_OS_IPHONE
#include <Security/Security.h>
#else // !TARGET_OS_IPHONE
-typedef struct OpaqueSecKeychainRef *SecKeychainRef;
+typedef struct CF_BRIDGED_TYPE(id) __SecKeychain *SecKeychainRef;
#endif // !TARGET_OS_IPHONE
#pragma mark -
__BEGIN_DECLS
SecKeychainRef
-_SCSecKeychainCopySystemKeychain (void) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+_SCSecKeychainCopySystemKeychain (void) API_AVAILABLE(macos(10.5), ios(2.0));
CFDataRef
_SCSecKeychainPasswordItemCopy (SecKeychainRef keychain,
- CFStringRef unique_id) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+ CFStringRef unique_id) API_AVAILABLE(macos(10.5), ios(2.0));
Boolean
_SCSecKeychainPasswordItemExists (SecKeychainRef keychain,
- CFStringRef unique_id) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+ CFStringRef unique_id) API_AVAILABLE(macos(10.5), ios(2.0));
Boolean
_SCSecKeychainPasswordItemRemove (SecKeychainRef keychain,
- CFStringRef unique_id) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+ CFStringRef unique_id) API_AVAILABLE(macos(10.5), ios(2.0));
Boolean
_SCSecKeychainPasswordItemSet (SecKeychainRef keychain,
CFStringRef description,
CFStringRef account,
CFDataRef password,
- CFDictionaryRef options) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+ CFDictionaryRef options) API_AVAILABLE(macos(10.5), ios(2.0));
#pragma mark -
CFDataRef
_SCPreferencesSystemKeychainPasswordItemCopy (SCPreferencesRef prefs,
- CFStringRef unique_id) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+ CFStringRef unique_id) API_AVAILABLE(macos(10.5), ios(2.0));
Boolean
_SCPreferencesSystemKeychainPasswordItemExists (SCPreferencesRef prefs,
- CFStringRef unique_id) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+ CFStringRef unique_id) API_AVAILABLE(macos(10.5), ios(2.0));
Boolean
_SCPreferencesSystemKeychainPasswordItemRemove (SCPreferencesRef prefs,
- CFStringRef unique_id) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+ CFStringRef unique_id) API_AVAILABLE(macos(10.5), ios(2.0));
Boolean
_SCPreferencesSystemKeychainPasswordItemSet (SCPreferencesRef prefs,
CFStringRef description,
CFStringRef account,
CFDataRef password,
- CFDictionaryRef options) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+ CFDictionaryRef options) API_AVAILABLE(macos(10.5), ios(2.0));
__END_DECLS
#endif // _SCPREFERENCESKEYCHAINPRIVATE_H
-
/*
- * Copyright (c) 2000, 2001, 2004, 2005, 2008, 2015 Apple Inc. All rights reserved.
+ * Copyright (c) 2000, 2001, 2004, 2005, 2008, 2015, 2018 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,
* 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 _SCPREFERENCESPATH_H
-#ifdef USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS
-#include <SystemConfiguration/_SCPreferencesPath.h>
-#else /* USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS */
#define _SCPREFERENCESPATH_H
-#include <Availability.h>
+#include <os/availability.h>
#include <sys/cdefs.h>
#include <CoreFoundation/CoreFoundation.h>
#include <SystemConfiguration/SCPreferences.h>
SCPreferencesPathCreateUniqueChild (
SCPreferencesRef prefs,
CFStringRef prefix
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCPreferencesPathGetValue
SCPreferencesPathGetValue (
SCPreferencesRef prefs,
CFStringRef path
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCPreferencesPathGetLink
SCPreferencesPathGetLink (
SCPreferencesRef prefs,
CFStringRef path
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCPreferencesPathSetValue
SCPreferencesRef prefs,
CFStringRef path,
CFDictionaryRef value
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCPreferencesPathSetLink
SCPreferencesRef prefs,
CFStringRef path,
CFStringRef link
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCPreferencesPathRemoveValue
SCPreferencesPathRemoveValue (
SCPreferencesRef prefs,
CFStringRef path
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
__END_DECLS
CF_ASSUME_NONNULL_END
CF_IMPLICIT_BRIDGING_DISABLED
-#endif /* USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS */
-#endif /* _SCPREFERENCESPATH_H */
+#endif /* _SCPREFERENCESPATH_H */
#include <stdarg.h>
-__private_extern__ CFStringRef
+CFStringRef
SCPreferencesPathKeyCreate(CFAllocatorRef allocator,
CFStringRef fmt,
...)
}
-__private_extern__ CFStringRef
+CFStringRef
SCPreferencesPathKeyCreateNetworkServices(CFAllocatorRef allocator)
{
/*
}
-__private_extern__ CFStringRef
+CFStringRef
SCPreferencesPathKeyCreateNetworkServiceEntity(CFAllocatorRef allocator,
CFStringRef service,
CFStringRef entity)
}
-__private_extern__ CFStringRef
+CFStringRef
SCPreferencesPathKeyCreateSets(CFAllocatorRef allocator)
{
/*
}
-__private_extern__ CFStringRef
+CFStringRef
SCPreferencesPathKeyCreateSet(CFAllocatorRef allocator,
CFStringRef set)
{
}
-__private_extern__ CFStringRef
+CFStringRef
SCPreferencesPathKeyCreateSetNetworkGlobalEntity(CFAllocatorRef allocator,
CFStringRef set,
CFStringRef entity)
}
-__private_extern__ CFStringRef
+CFStringRef
SCPreferencesPathKeyCreateSetNetworkInterfaceEntity(CFAllocatorRef allocator,
CFStringRef set,
CFStringRef ifname,
}
-__private_extern__ CFStringRef
+CFStringRef
SCPreferencesPathKeyCreateSetNetworkService(CFAllocatorRef allocator,
CFStringRef set,
CFStringRef service)
}
-__private_extern__ CFStringRef
+CFStringRef
SCPreferencesPathKeyCreateSetNetworkServiceEntity(CFAllocatorRef allocator,
CFStringRef set,
CFStringRef service,
/*
- * Copyright (c) 2004, 2005, 2008 Apple Inc. All rights reserved.
+ * Copyright (c) 2004, 2005, 2008, 2018 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,
* 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 _SCPREFERENCESPATHKEY_H
#define _SCPREFERENCESPATHKEY_H
-#include <Availability.h>
+#include <os/availability.h>
#include <sys/cdefs.h>
#include <CoreFoundation/CoreFoundation.h>
CFAllocatorRef allocator,
CFStringRef fmt,
...
- ) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0);
+ ) API_AVAILABLE(macos(10.4), ios(2.0));
/*!
@function SCPreferencesPathKeyCreateNetworkServices
CFStringRef
SCPreferencesPathKeyCreateNetworkServices (
CFAllocatorRef allocator
- ) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0);
+ ) API_AVAILABLE(macos(10.4), ios(2.0));
/*!
@function SCPreferencesPathKeyCreateNetworkServiceEntity
CFAllocatorRef allocator,
CFStringRef service,
CFStringRef entity
- ) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0);
+ ) API_AVAILABLE(macos(10.4), ios(2.0));
/*!
@function SCPreferencesPathKeyCreateSets
CFStringRef
SCPreferencesPathKeyCreateSets (
CFAllocatorRef allocator
- ) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0);
+ ) API_AVAILABLE(macos(10.4), ios(2.0));
/*!
@function SCPreferencesPathKeyCreateSet
SCPreferencesPathKeyCreateSet (
CFAllocatorRef allocator,
CFStringRef set
- ) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0);
+ ) API_AVAILABLE(macos(10.4), ios(2.0));
/*!
@function SCPreferencesPathKeyCreateSetNetworkInterfaceEntity
CFStringRef set,
CFStringRef ifname,
CFStringRef entity
- ) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0);
+ ) API_AVAILABLE(macos(10.4), ios(2.0));
/*!
@function SCPreferencesPathKeyCreateSetNetworkGlobalEntity
CFAllocatorRef allocator,
CFStringRef set,
CFStringRef entity
- ) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0);
+ ) API_AVAILABLE(macos(10.4), ios(2.0));
/*!
@function SCPreferencesPathKeyCreateSetNetworkService
CFAllocatorRef allocator,
CFStringRef set,
CFStringRef service
- ) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0);
+ ) API_AVAILABLE(macos(10.4), ios(2.0));
/*!
@function SCPreferencesPathKeyCreateSetNetworkServiceEntity
CFStringRef set,
CFStringRef service,
CFStringRef entity
- ) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0);
+ ) API_AVAILABLE(macos(10.4), ios(2.0));
__END_DECLS
-#endif /* _SCPREFERENCESPATHKEY_H */
+#endif /* _SCPREFERENCESPATHKEY_H */
/*
- * Copyright (c) 2000-2005, 2007-2009, 2011, 2012, 2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2000-2005, 2007-2009, 2011, 2012, 2017, 2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#define _SCPREFERENCESPRIVATE_H
-#include <Availability.h>
+#include <os/availability.h>
#include <TargetConditionals.h>
#include <sys/cdefs.h>
#include <CoreFoundation/CoreFoundation.h>
*/
#define kSCPreferencesOptionChangeNetworkSet CFSTR("change-network-set") // CFBooleanRef
-#if TARGET_OS_EMBEDDED
/*!
@defined kSCPreferencesOptionProtectionClass
@abstract The SCPreferences "option" used to indicate the file
protection class of the .plist.
*/
#define kSCPreferencesOptionProtectionClass CFSTR("ProtectionClass") // CFStringRef["A"-"F"]
-#endif // TARGET_OS_EMBEDDED
/*!
@defined kSCPreferencesOptionRemoveWhenEmpty
CFAllocatorRef allocator,
CFStringRef prefsID,
SCPreferencesKeyType keyType
- ) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_4,__IPHONE_2_0,__IPHONE_2_0);
+ ) API_DEPRECATED("No longer supported", macos(10.1,10.4), ios(2.0,2.0));
/*!
@function SCPreferencesCreateWithOptions
CFStringRef prefsID,
AuthorizationRef authorization,
CFDictionaryRef options
- ) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(5.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCPreferencesRemoveAllValues
Boolean
SCPreferencesRemoveAllValues (
SCPreferencesRef prefs
- ) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(5.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
__END_DECLS
-#endif /* _SCPREFERENCESPRIVATE_H */
+#endif /* _SCPREFERENCESPRIVATE_H */
/*
- * Copyright (c) 2000-2002, 2004, 2005, 2008, 2015 Apple Inc. All rights reserved.
+ * Copyright (c) 2000-2002, 2004, 2005, 2008, 2015, 2018 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,
* 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 _SCPREFERENCESSETSPECIFIC_H
-#ifdef USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS
-#include <SystemConfiguration/_SCPreferencesSetSpecific.h>
-#else /* USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS */
#define _SCPREFERENCESSETSPECIFIC_H
-#include <Availability.h>
+#include <os/availability.h>
#include <sys/cdefs.h>
#include <CoreFoundation/CoreFoundation.h>
#include <SystemConfiguration/SCPreferences.h>
SCPreferencesRef prefs,
CFStringRef __nullable name,
CFStringEncoding nameEncoding
- ) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
/*!
@function SCPreferencesSetLocalHostName
SCPreferencesSetLocalHostName (
SCPreferencesRef prefs,
CFStringRef __nullable name
- ) __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_2_0/*SPI*/);
+ ) API_AVAILABLE(macos(10.2)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
__END_DECLS
CF_ASSUME_NONNULL_END
CF_IMPLICIT_BRIDGING_DISABLED
-#endif /* USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS */
-#endif /* _SCPREFERENCESSETSPECIFIC_H */
+#endif /* _SCPREFERENCESSETSPECIFIC_H */
/*
- * Copyright (c) 2000-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2000-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
/* get-network-info script path */
-#if !TARGET_OS_EMBEDDED
+#if TARGET_OS_OSX
#define SYSTEMCONFIGURATION_GET_NETWORK_INFO_PATH SYSTEMCONFIGURATION_FRAMEWORK_PATH "/Resources/get-network-info"
#else
#define SYSTEMCONFIGURATION_GET_NETWORK_INFO_PATH SYSTEMCONFIGURATION_FRAMEWORK_PATH "/get-network-info"
/* crash report(s) directory path */
-#if !TARGET_OS_EMBEDDED
+#if TARGET_OS_OSX
#define _SC_CRASH_DIR "/Library/Logs/DiagnosticReports"
#else
#define _SC_CRASH_DIR "/Library/Logs/CrashReporter"
used for [SystemConfiguration] logging.
@result The os_log_t object
*/
-os_log_t _SC_LOG_DEFAULT ();
+os_log_t _SC_LOG_DEFAULT (void);
/*!
CFArrayRef
SCNetworkProxiesCopyMatching (CFDictionaryRef globalConfiguration,
CFStringRef server,
- CFStringRef interface) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0/*SPI*/);
+ CFStringRef interface) API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(5.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCProxiesMatchServer CFSTR("Server") /* CFString */
#define kSCProxiesMatchInterface CFSTR("Interface") /* CFString */
*/
CFArrayRef
SCNetworkProxiesCopyMatchingWithOptions (CFDictionaryRef globalConfiguration,
- CFDictionaryRef options) __OSX_AVAILABLE_STARTING(__MAC_10_10,__IPHONE_8_0/*SPI*/);
+ CFDictionaryRef options) API_AVAILABLE(macos(10.10)) SPI_AVAILABLE(ios(8.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
extern const CFStringRef kSCProxiesNoGlobal;
You must release the returned value.
*/
CFDataRef
-SCNetworkProxiesCreateProxyAgentData(CFDictionaryRef proxyConfig) __OSX_AVAILABLE_STARTING(__MAC_10_12,__IPHONE_10_0/*SPI*/);
+SCNetworkProxiesCreateProxyAgentData (CFDictionaryRef proxyConfig) API_AVAILABLE(macos(10.12)) SPI_AVAILABLE(ios(10.0), tvos(10.0), watchos(3.0), bridgeos(3.0));
/*!
@function SCDynamicStoreCopyProxiesWithOptions
You must release the returned value.
*/
CFDictionaryRef
-SCDynamicStoreCopyProxiesWithOptions(SCDynamicStoreRef store, CFDictionaryRef options) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+SCDynamicStoreCopyProxiesWithOptions (SCDynamicStoreRef store,
+ CFDictionaryRef options) API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#pragma mark -
#pragma mark Reachability
* DO NOT EDIT!
*/
-#include <Availability.h>
+#include <os/availability.h>
#include <TargetConditionals.h>
#include <CoreFoundation/CFString.h>
const CFStringRef kSCEntNetLinkIssues = CFSTR("LinkIssues");
const CFStringRef kSCEntNetLinkQuality = CFSTR("LinkQuality");
const CFStringRef kSCEntNetLoopback = CFSTR("Loopback");
+const CFStringRef kSCEntNetNAT64 = CFSTR("NAT64");
const CFStringRef kSCEntNetNAT64PrefixRequest = CFSTR("NAT64PrefixRequest");
const CFStringRef kSCEntNetOnDemand = CFSTR("OnDemand");
const CFStringRef kSCEntNetQoSMarkingPolicy = CFSTR("QoSMarkingPolicy");
const CFStringRef kSCValNetIPv4ConfigMethodManual = CFSTR("Manual");
const CFStringRef kSCValNetIPv4ConfigMethodPPP = CFSTR("PPP");
const CFStringRef kSCPropNetIPv4AdditionalRoutes = CFSTR("AdditionalRoutes");
+const CFStringRef kSCPropNetIPv4CLAT46 = CFSTR("CLAT46");
const CFStringRef kSCPropNetIPv4ExcludedRoutes = CFSTR("ExcludedRoutes");
const CFStringRef kSCPropNetIPv4IncludedRoutes = CFSTR("IncludedRoutes");
const CFStringRef kSCValNetIPv4ConfigMethodFailover = CFSTR("Failover");
const CFStringRef kSCPropNetIPv6EnableCGA = CFSTR("EnableCGA");
const CFStringRef kSCPropNetIPv6ExcludedRoutes = CFSTR("ExcludedRoutes");
const CFStringRef kSCPropNetIPv6IncludedRoutes = CFSTR("IncludedRoutes");
+const CFStringRef kSCPropNetIPv6PerformPLATDiscovery = CFSTR("PerformPLATDiscovery");
const CFStringRef kSCPropNetIPv6RouteDestinationAddress = CFSTR("DestinationAddress");
const CFStringRef kSCPropNetIPv6RoutePrefixLength = CFSTR("PrefixLength");
const CFStringRef kSCPropNetIPv6RouteGatewayAddress = CFSTR("GatewayAddress");
const CFStringRef kSCValNetL2TPIPSecSharedSecretEncryptionKeychain = CFSTR("Keychain");
const CFStringRef kSCValNetL2TPTransportIP = CFSTR("IP");
const CFStringRef kSCValNetL2TPTransportIPSec = CFSTR("IPSec");
+const CFStringRef kSCPropNetNAT64PrefixList = CFSTR("PrefixList");
+const CFStringRef kSCPropNetNAT64PLATDiscoveryStartTime = CFSTR("PLATDiscoveryStartTime");
+const CFStringRef kSCPropNetNAT64PLATDiscoveryCompletionTime = CFSTR("PLATDiscoveryCompletionTime");
const CFStringRef kSCPropNetProxiesExceptionsList = CFSTR("ExceptionsList");
const CFStringRef kSCPropNetProxiesExcludeSimpleHostnames = CFSTR("ExcludeSimpleHostnames");
const CFStringRef kSCPropNetProxiesFTPEnable = CFSTR("FTPEnable");
/*
- * Copyright (c) 2000-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2000-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#ifndef _SCSCHEMADEFINITIONS_H
-#ifdef USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS
-#include <SystemConfiguration/_SCSchemaDefinitions.h>
-#else /* USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS */
#define _SCSCHEMADEFINITIONS_H
-#include <Availability.h>
+#include <os/availability.h>
#include <TargetConditionals.h>
#include <CoreFoundation/CFString.h>
* @header SCSchemaDefinitions
*/
-#define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_FUTURE __AVAILABILITY_INTERNAL__IPHONE_2_0/*SPI*/
CF_ASSUME_NONNULL_BEGIN
@const kSCResvLink
@discussion Value is a CFString
*/
-extern const CFStringRef kSCResvLink __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCResvLink API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCResvLink kSCResvLink
/*!
@const kSCResvInactive
*/
-extern const CFStringRef kSCResvInactive __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCResvInactive API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCResvInactive kSCResvInactive
/*!
@const kSCPropInterfaceName
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropInterfaceName __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropInterfaceName API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropInterfaceName kSCPropInterfaceName
/*!
@const kSCPropMACAddress
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropMACAddress __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropMACAddress API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropMACAddress kSCPropMACAddress
/*!
@const kSCPropUserDefinedName
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropUserDefinedName __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropUserDefinedName API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropUserDefinedName kSCPropUserDefinedName
/*!
@const kSCPropVersion
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropVersion __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropVersion API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropVersion kSCPropVersion
/*!
@const kSCPrefCurrentSet
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPrefCurrentSet __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPrefCurrentSet API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPrefCurrentSet kSCPrefCurrentSet
/*!
@const kSCPrefNetworkServices
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCPrefNetworkServices __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPrefNetworkServices API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPrefNetworkServices kSCPrefNetworkServices
/*!
@const kSCPrefSets
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCPrefSets __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPrefSets API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPrefSets kSCPrefSets
/*!
@const kSCPrefSystem
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCPrefSystem __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPrefSystem API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPrefSystem kSCPrefSystem
/*!
/*!
@const kSCCompNetwork
*/
-extern const CFStringRef kSCCompNetwork __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCCompNetwork API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCCompNetwork kSCCompNetwork
/*!
@const kSCCompService
*/
-extern const CFStringRef kSCCompService __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCCompService API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCCompService kSCCompService
/*!
@const kSCCompGlobal
*/
-extern const CFStringRef kSCCompGlobal __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCCompGlobal API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCCompGlobal kSCCompGlobal
/*!
@const kSCCompHostNames
*/
-extern const CFStringRef kSCCompHostNames __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCCompHostNames API_AVAILABLE(macos(10.2)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCCompHostNames kSCCompHostNames
/*!
@const kSCCompInterface
*/
-extern const CFStringRef kSCCompInterface __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCCompInterface API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCCompInterface kSCCompInterface
/*!
@const kSCCompSystem
*/
-extern const CFStringRef kSCCompSystem __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCCompSystem API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCCompSystem kSCCompSystem
/*!
@const kSCCompUsers
*/
-extern const CFStringRef kSCCompUsers __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCCompUsers API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCCompUsers kSCCompUsers
/*!
@const kSCCompAnyRegex
*/
-extern const CFStringRef kSCCompAnyRegex __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCCompAnyRegex API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCCompAnyRegex kSCCompAnyRegex
/*!
@const kSCEntNetAirPort
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCEntNetAirPort __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCEntNetAirPort API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCEntNetAirPort kSCEntNetAirPort
/*!
@const kSCEntNetDHCP
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCEntNetDHCP __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCEntNetDHCP API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCEntNetDHCP kSCEntNetDHCP
/*!
@const kSCEntNetDNS
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCEntNetDNS __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCEntNetDNS API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCEntNetDNS kSCEntNetDNS
/*!
@const kSCEntNetEthernet
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCEntNetEthernet __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCEntNetEthernet API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCEntNetEthernet kSCEntNetEthernet
/*!
@const kSCEntNetFireWire
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCEntNetFireWire __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCEntNetFireWire API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCEntNetFireWire kSCEntNetFireWire
/*!
@const kSCEntNetInterface
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCEntNetInterface __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCEntNetInterface API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCEntNetInterface kSCEntNetInterface
/*!
@const kSCEntNetIPSec
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCEntNetIPSec __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCEntNetIPSec API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCEntNetIPSec kSCEntNetIPSec
/*!
@const kSCEntNetIPv4
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCEntNetIPv4 __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCEntNetIPv4 API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCEntNetIPv4 kSCEntNetIPv4
/*!
@const kSCEntNetIPv6
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCEntNetIPv6 __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCEntNetIPv6 API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCEntNetIPv6 kSCEntNetIPv6
/*!
@const kSCEntNetL2TP
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCEntNetL2TP __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCEntNetL2TP API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCEntNetL2TP kSCEntNetL2TP
/*!
@const kSCEntNetLink
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCEntNetLink __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCEntNetLink API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCEntNetLink kSCEntNetLink
/*!
@const kSCEntNetModem
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCEntNetModem __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCEntNetModem API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCEntNetModem kSCEntNetModem
/*!
@const kSCEntNetPPP
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCEntNetPPP __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCEntNetPPP API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCEntNetPPP kSCEntNetPPP
/*!
@const kSCEntNetPPPoE
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCEntNetPPPoE __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCEntNetPPPoE API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCEntNetPPPoE kSCEntNetPPPoE
/*!
@const kSCEntNetPPPSerial
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCEntNetPPPSerial __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCEntNetPPPSerial API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCEntNetPPPSerial kSCEntNetPPPSerial
/*!
@const kSCEntNetPPTP
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCEntNetPPTP __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3,__MAC_10_12,__IPHONE_2_0/*SPI*/,__IPHONE_10_0/*SPI*/);
+extern const CFStringRef kSCEntNetPPTP API_DEPRECATED("No longer supported", macos(10.3,10.12)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCEntNetPPTP kSCEntNetPPTP
/*!
@const kSCEntNetProxies
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCEntNetProxies __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCEntNetProxies API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCEntNetProxies kSCEntNetProxies
/*!
@const kSCEntNetSMB
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCEntNetSMB __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCEntNetSMB API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
#define kSCEntNetSMB kSCEntNetSMB
/*!
@const kSCEntNet6to4
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCEntNet6to4 __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCEntNet6to4 API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCEntNet6to4 kSCEntNet6to4
/*!
@const kSCPropNetOverridePrimary
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetOverridePrimary __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetOverridePrimary API_AVAILABLE(macos(10.2)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetOverridePrimary kSCPropNetOverridePrimary
/*!
@const kSCPropNetServiceOrder
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetServiceOrder __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetServiceOrder API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetServiceOrder kSCPropNetServiceOrder
/*!
@const kSCPropNetPPPOverridePrimary
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetPPPOverridePrimary __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPOverridePrimary API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPOverridePrimary kSCPropNetPPPOverridePrimary
/*!
@const kSCPropNetInterfaces
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetInterfaces __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetInterfaces API_AVAILABLE(macos(10.2)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetInterfaces kSCPropNetInterfaces
/*!
@const kSCPropNetLocalHostName
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetLocalHostName __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetLocalHostName API_AVAILABLE(macos(10.2)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetLocalHostName kSCPropNetLocalHostName
/*!
@const kSCPropNetAirPortAllowNetCreation
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetAirPortAllowNetCreation __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2,__MAC_10_9,__IPHONE_2_0/*SPI*/,__IPHONE_FUTURE/*SPI*/);
+extern const CFStringRef kSCPropNetAirPortAllowNetCreation API_DEPRECATED("No longer supported", macos(10.2,10.9)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetAirPortAllowNetCreation kSCPropNetAirPortAllowNetCreation
/*!
@const kSCPropNetAirPortAuthPassword
@discussion Value is a CFData
*/
-extern const CFStringRef kSCPropNetAirPortAuthPassword __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_9,__IPHONE_2_0/*SPI*/,__IPHONE_FUTURE/*SPI*/);
+extern const CFStringRef kSCPropNetAirPortAuthPassword API_DEPRECATED("No longer supported", macos(10.1,10.9)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetAirPortAuthPassword kSCPropNetAirPortAuthPassword
/*!
@const kSCPropNetAirPortAuthPasswordEncryption
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetAirPortAuthPasswordEncryption __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_9,__IPHONE_2_0/*SPI*/,__IPHONE_FUTURE/*SPI*/);
+extern const CFStringRef kSCPropNetAirPortAuthPasswordEncryption API_DEPRECATED("No longer supported", macos(10.1,10.9)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetAirPortAuthPasswordEncryption kSCPropNetAirPortAuthPasswordEncryption
/*!
@const kSCPropNetAirPortJoinMode
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetAirPortJoinMode __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2,__MAC_10_9,__IPHONE_2_0/*SPI*/,__IPHONE_FUTURE/*SPI*/);
+extern const CFStringRef kSCPropNetAirPortJoinMode API_DEPRECATED("No longer supported", macos(10.2,10.9)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetAirPortJoinMode kSCPropNetAirPortJoinMode
/*!
@const kSCPropNetAirPortPowerEnabled
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetAirPortPowerEnabled __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_9,__IPHONE_2_0/*SPI*/,__IPHONE_FUTURE/*SPI*/);
+extern const CFStringRef kSCPropNetAirPortPowerEnabled API_DEPRECATED("No longer supported", macos(10.1,10.9)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetAirPortPowerEnabled kSCPropNetAirPortPowerEnabled
/*!
@const kSCPropNetAirPortPreferredNetwork
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetAirPortPreferredNetwork __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_9,__IPHONE_2_0/*SPI*/,__IPHONE_FUTURE/*SPI*/);
+extern const CFStringRef kSCPropNetAirPortPreferredNetwork API_DEPRECATED("No longer supported", macos(10.1,10.9)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetAirPortPreferredNetwork kSCPropNetAirPortPreferredNetwork
/*!
@const kSCPropNetAirPortSavePasswords
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetAirPortSavePasswords __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2,__MAC_10_9,__IPHONE_2_0/*SPI*/,__IPHONE_FUTURE/*SPI*/);
+extern const CFStringRef kSCPropNetAirPortSavePasswords API_DEPRECATED("No longer supported", macos(10.2,10.9)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetAirPortSavePasswords kSCPropNetAirPortSavePasswords
/*!
@const kSCValNetAirPortJoinModeAutomatic
*/
-extern const CFStringRef kSCValNetAirPortJoinModeAutomatic __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3,__MAC_10_9,__IPHONE_2_0/*SPI*/,__IPHONE_FUTURE/*SPI*/);
+extern const CFStringRef kSCValNetAirPortJoinModeAutomatic API_DEPRECATED("No longer supported", macos(10.3,10.9)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetAirPortJoinModeAutomatic kSCValNetAirPortJoinModeAutomatic
/*!
@const kSCValNetAirPortJoinModePreferred
*/
-extern const CFStringRef kSCValNetAirPortJoinModePreferred __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2,__MAC_10_9,__IPHONE_2_0/*SPI*/,__IPHONE_FUTURE/*SPI*/);
+extern const CFStringRef kSCValNetAirPortJoinModePreferred API_DEPRECATED("No longer supported", macos(10.2,10.9)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetAirPortJoinModePreferred kSCValNetAirPortJoinModePreferred
/*!
@const kSCValNetAirPortJoinModeRanked
*/
-extern const CFStringRef kSCValNetAirPortJoinModeRanked __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4,__MAC_10_9,__IPHONE_2_0/*SPI*/,__IPHONE_FUTURE/*SPI*/);
+extern const CFStringRef kSCValNetAirPortJoinModeRanked API_DEPRECATED("No longer supported", macos(10.4,10.9)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetAirPortJoinModeRanked kSCValNetAirPortJoinModeRanked
/*!
@const kSCValNetAirPortJoinModeRecent
*/
-extern const CFStringRef kSCValNetAirPortJoinModeRecent __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2,__MAC_10_9,__IPHONE_2_0/*SPI*/,__IPHONE_FUTURE/*SPI*/);
+extern const CFStringRef kSCValNetAirPortJoinModeRecent API_DEPRECATED("No longer supported", macos(10.2,10.9)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetAirPortJoinModeRecent kSCValNetAirPortJoinModeRecent
/*!
@const kSCValNetAirPortJoinModeStrongest
*/
-extern const CFStringRef kSCValNetAirPortJoinModeStrongest __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2,__MAC_10_9,__IPHONE_2_0/*SPI*/,__IPHONE_FUTURE/*SPI*/);
+extern const CFStringRef kSCValNetAirPortJoinModeStrongest API_DEPRECATED("No longer supported", macos(10.2,10.9)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetAirPortJoinModeStrongest kSCValNetAirPortJoinModeStrongest
/*!
@const kSCValNetAirPortAuthPasswordEncryptionKeychain
*/
-extern const CFStringRef kSCValNetAirPortAuthPasswordEncryptionKeychain __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3,__MAC_10_9,__IPHONE_2_0/*SPI*/,__IPHONE_FUTURE/*SPI*/);
+extern const CFStringRef kSCValNetAirPortAuthPasswordEncryptionKeychain API_DEPRECATED("No longer supported", macos(10.3,10.9)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetAirPortAuthPasswordEncryptionKeychain kSCValNetAirPortAuthPasswordEncryptionKeychain
/*!
@const kSCPropNetDNSDomainName
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetDNSDomainName __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetDNSDomainName API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetDNSDomainName kSCPropNetDNSDomainName
/*!
@const kSCPropNetDNSOptions
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetDNSOptions __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetDNSOptions API_AVAILABLE(macos(10.4)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetDNSOptions kSCPropNetDNSOptions
/*!
@const kSCPropNetDNSSearchDomains
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetDNSSearchDomains __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetDNSSearchDomains API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetDNSSearchDomains kSCPropNetDNSSearchDomains
/*!
@const kSCPropNetDNSSearchOrder
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetDNSSearchOrder __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetDNSSearchOrder API_AVAILABLE(macos(10.4)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetDNSSearchOrder kSCPropNetDNSSearchOrder
/*!
@const kSCPropNetDNSServerAddresses
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetDNSServerAddresses __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetDNSServerAddresses API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetDNSServerAddresses kSCPropNetDNSServerAddresses
/*!
@const kSCPropNetDNSServerPort
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetDNSServerPort __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetDNSServerPort API_AVAILABLE(macos(10.4)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetDNSServerPort kSCPropNetDNSServerPort
/*!
@const kSCPropNetDNSServerTimeout
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetDNSServerTimeout __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetDNSServerTimeout API_AVAILABLE(macos(10.4)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetDNSServerTimeout kSCPropNetDNSServerTimeout
/*!
@const kSCPropNetDNSSortList
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetDNSSortList __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetDNSSortList API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetDNSSortList kSCPropNetDNSSortList
/*!
@const kSCPropNetDNSSupplementalMatchDomains
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetDNSSupplementalMatchDomains __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetDNSSupplementalMatchDomains API_AVAILABLE(macos(10.4)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetDNSSupplementalMatchDomains kSCPropNetDNSSupplementalMatchDomains
/*!
@const kSCPropNetDNSSupplementalMatchOrders
@discussion Value is a CFArray[CFNumber]
*/
-extern const CFStringRef kSCPropNetDNSSupplementalMatchOrders __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetDNSSupplementalMatchOrders API_AVAILABLE(macos(10.4)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetDNSSupplementalMatchOrders kSCPropNetDNSSupplementalMatchOrders
/*!
@const kSCPropNetEthernetMediaSubType
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetEthernetMediaSubType __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetEthernetMediaSubType API_AVAILABLE(macos(10.2)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetEthernetMediaSubType kSCPropNetEthernetMediaSubType
/*!
@const kSCPropNetEthernetMediaOptions
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetEthernetMediaOptions __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetEthernetMediaOptions API_AVAILABLE(macos(10.2)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetEthernetMediaOptions kSCPropNetEthernetMediaOptions
/*!
@const kSCPropNetEthernetMTU
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetEthernetMTU __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetEthernetMTU API_AVAILABLE(macos(10.2)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetEthernetMTU kSCPropNetEthernetMTU
/*!
@const kSCPropNetInterfaceDeviceName
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetInterfaceDeviceName __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetInterfaceDeviceName API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetInterfaceDeviceName kSCPropNetInterfaceDeviceName
/*!
@const kSCPropNetInterfaceHardware
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetInterfaceHardware __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetInterfaceHardware API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetInterfaceHardware kSCPropNetInterfaceHardware
/*!
@const kSCPropNetInterfaceType
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetInterfaceType __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetInterfaceType API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetInterfaceType kSCPropNetInterfaceType
/*!
@const kSCPropNetInterfaceSubType
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetInterfaceSubType __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetInterfaceSubType API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetInterfaceSubType kSCPropNetInterfaceSubType
/*!
@const kSCPropNetInterfaceSupportsModemOnHold
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetInterfaceSupportsModemOnHold __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2,__MAC_10_13,__IPHONE_2_0/*SPI*/,__IPHONE_FUTURE/*SPI*/);
+extern const CFStringRef kSCPropNetInterfaceSupportsModemOnHold API_DEPRECATED("No longer supported", macos(10.2,10.13)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetInterfaceSupportsModemOnHold kSCPropNetInterfaceSupportsModemOnHold
/*!
@const kSCValNetInterfaceTypeEthernet
*/
-extern const CFStringRef kSCValNetInterfaceTypeEthernet __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetInterfaceTypeEthernet API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetInterfaceTypeEthernet kSCValNetInterfaceTypeEthernet
/*!
@const kSCValNetInterfaceTypeFireWire
*/
-extern const CFStringRef kSCValNetInterfaceTypeFireWire __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetInterfaceTypeFireWire API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetInterfaceTypeFireWire kSCValNetInterfaceTypeFireWire
/*!
@const kSCValNetInterfaceTypePPP
*/
-extern const CFStringRef kSCValNetInterfaceTypePPP __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetInterfaceTypePPP API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetInterfaceTypePPP kSCValNetInterfaceTypePPP
/*!
@const kSCValNetInterfaceType6to4
*/
-extern const CFStringRef kSCValNetInterfaceType6to4 __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetInterfaceType6to4 API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetInterfaceType6to4 kSCValNetInterfaceType6to4
/*!
@const kSCValNetInterfaceTypeIPSec
*/
-extern const CFStringRef kSCValNetInterfaceTypeIPSec __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetInterfaceTypeIPSec API_AVAILABLE(macos(10.6)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetInterfaceTypeIPSec kSCValNetInterfaceTypeIPSec
/*!
@const kSCValNetInterfaceSubTypePPPoE
*/
-extern const CFStringRef kSCValNetInterfaceSubTypePPPoE __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetInterfaceSubTypePPPoE API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetInterfaceSubTypePPPoE kSCValNetInterfaceSubTypePPPoE
/*!
@const kSCValNetInterfaceSubTypePPPSerial
*/
-extern const CFStringRef kSCValNetInterfaceSubTypePPPSerial __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetInterfaceSubTypePPPSerial API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetInterfaceSubTypePPPSerial kSCValNetInterfaceSubTypePPPSerial
/*!
@const kSCValNetInterfaceSubTypePPTP
*/
-extern const CFStringRef kSCValNetInterfaceSubTypePPTP __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2,__MAC_10_12,__IPHONE_2_0/*SPI*/,__IPHONE_10_0/*SPI*/);
+extern const CFStringRef kSCValNetInterfaceSubTypePPTP API_DEPRECATED("No longer supported", macos(10.2,10.12)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetInterfaceSubTypePPTP kSCValNetInterfaceSubTypePPTP
/*!
@const kSCValNetInterfaceSubTypeL2TP
*/
-extern const CFStringRef kSCValNetInterfaceSubTypeL2TP __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetInterfaceSubTypeL2TP API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetInterfaceSubTypeL2TP kSCValNetInterfaceSubTypeL2TP
/*!
@const kSCPropNetIPSecAuthenticationMethod
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetIPSecAuthenticationMethod __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPSecAuthenticationMethod API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPSecAuthenticationMethod kSCPropNetIPSecAuthenticationMethod
/*!
@const kSCPropNetIPSecLocalCertificate
@discussion Value is a CFData
*/
-extern const CFStringRef kSCPropNetIPSecLocalCertificate __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPSecLocalCertificate API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPSecLocalCertificate kSCPropNetIPSecLocalCertificate
/*!
@const kSCPropNetIPSecLocalIdentifier
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetIPSecLocalIdentifier __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPSecLocalIdentifier API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPSecLocalIdentifier kSCPropNetIPSecLocalIdentifier
/*!
@const kSCPropNetIPSecLocalIdentifierType
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetIPSecLocalIdentifierType __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPSecLocalIdentifierType API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPSecLocalIdentifierType kSCPropNetIPSecLocalIdentifierType
/*!
@const kSCPropNetIPSecSharedSecret
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetIPSecSharedSecret __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPSecSharedSecret API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPSecSharedSecret kSCPropNetIPSecSharedSecret
/*!
@const kSCPropNetIPSecSharedSecretEncryption
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetIPSecSharedSecretEncryption __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPSecSharedSecretEncryption API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPSecSharedSecretEncryption kSCPropNetIPSecSharedSecretEncryption
/*!
@const kSCPropNetIPSecConnectTime
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetIPSecConnectTime __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPSecConnectTime API_AVAILABLE(macos(10.6)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPSecConnectTime kSCPropNetIPSecConnectTime
/*!
@const kSCPropNetIPSecRemoteAddress
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetIPSecRemoteAddress __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPSecRemoteAddress API_AVAILABLE(macos(10.6)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPSecRemoteAddress kSCPropNetIPSecRemoteAddress
/*!
@const kSCPropNetIPSecStatus
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetIPSecStatus __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPSecStatus API_AVAILABLE(macos(10.6)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPSecStatus kSCPropNetIPSecStatus
/*!
@const kSCPropNetIPSecXAuthEnabled
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetIPSecXAuthEnabled __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPSecXAuthEnabled API_AVAILABLE(macos(10.6)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPSecXAuthEnabled kSCPropNetIPSecXAuthEnabled
/*!
@const kSCPropNetIPSecXAuthName
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetIPSecXAuthName __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPSecXAuthName API_AVAILABLE(macos(10.6)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPSecXAuthName kSCPropNetIPSecXAuthName
/*!
@const kSCPropNetIPSecXAuthPassword
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetIPSecXAuthPassword __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPSecXAuthPassword API_AVAILABLE(macos(10.6)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPSecXAuthPassword kSCPropNetIPSecXAuthPassword
/*!
@const kSCPropNetIPSecXAuthPasswordEncryption
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetIPSecXAuthPasswordEncryption __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPSecXAuthPasswordEncryption API_AVAILABLE(macos(10.6)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPSecXAuthPasswordEncryption kSCPropNetIPSecXAuthPasswordEncryption
/*!
@const kSCValNetIPSecAuthenticationMethodSharedSecret
*/
-extern const CFStringRef kSCValNetIPSecAuthenticationMethodSharedSecret __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetIPSecAuthenticationMethodSharedSecret API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetIPSecAuthenticationMethodSharedSecret kSCValNetIPSecAuthenticationMethodSharedSecret
/*!
@const kSCValNetIPSecAuthenticationMethodCertificate
*/
-extern const CFStringRef kSCValNetIPSecAuthenticationMethodCertificate __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetIPSecAuthenticationMethodCertificate API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetIPSecAuthenticationMethodCertificate kSCValNetIPSecAuthenticationMethodCertificate
/*!
@const kSCValNetIPSecAuthenticationMethodHybrid
*/
-extern const CFStringRef kSCValNetIPSecAuthenticationMethodHybrid __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetIPSecAuthenticationMethodHybrid API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetIPSecAuthenticationMethodHybrid kSCValNetIPSecAuthenticationMethodHybrid
/*!
@const kSCValNetIPSecLocalIdentifierTypeKeyID
*/
-extern const CFStringRef kSCValNetIPSecLocalIdentifierTypeKeyID __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetIPSecLocalIdentifierTypeKeyID API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetIPSecLocalIdentifierTypeKeyID kSCValNetIPSecLocalIdentifierTypeKeyID
/*!
@const kSCValNetIPSecSharedSecretEncryptionKeychain
*/
-extern const CFStringRef kSCValNetIPSecSharedSecretEncryptionKeychain __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetIPSecSharedSecretEncryptionKeychain API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetIPSecSharedSecretEncryptionKeychain kSCValNetIPSecSharedSecretEncryptionKeychain
/*!
@const kSCValNetIPSecXAuthPasswordEncryptionKeychain
*/
-extern const CFStringRef kSCValNetIPSecXAuthPasswordEncryptionKeychain __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetIPSecXAuthPasswordEncryptionKeychain API_AVAILABLE(macos(10.6)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetIPSecXAuthPasswordEncryptionKeychain kSCValNetIPSecXAuthPasswordEncryptionKeychain
/*!
@const kSCValNetIPSecXAuthPasswordEncryptionPrompt
*/
-extern const CFStringRef kSCValNetIPSecXAuthPasswordEncryptionPrompt __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_3_0/*SPI*/);
+extern const CFStringRef kSCValNetIPSecXAuthPasswordEncryptionPrompt API_AVAILABLE(macos(10.6)) SPI_AVAILABLE(ios(3.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetIPSecXAuthPasswordEncryptionPrompt kSCValNetIPSecXAuthPasswordEncryptionPrompt
/*!
@const kSCPropNetIPv4Addresses
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetIPv4Addresses __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPv4Addresses API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPv4Addresses kSCPropNetIPv4Addresses
/*!
@const kSCPropNetIPv4ConfigMethod
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetIPv4ConfigMethod __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPv4ConfigMethod API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPv4ConfigMethod kSCPropNetIPv4ConfigMethod
/*!
@const kSCPropNetIPv4DHCPClientID
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetIPv4DHCPClientID __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPv4DHCPClientID API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPv4DHCPClientID kSCPropNetIPv4DHCPClientID
/*!
@const kSCPropNetIPv4Router
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetIPv4Router __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPv4Router API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPv4Router kSCPropNetIPv4Router
/*!
@const kSCPropNetIPv4SubnetMasks
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetIPv4SubnetMasks __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPv4SubnetMasks API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPv4SubnetMasks kSCPropNetIPv4SubnetMasks
/*!
@const kSCPropNetIPv4DestAddresses
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetIPv4DestAddresses __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPv4DestAddresses API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPv4DestAddresses kSCPropNetIPv4DestAddresses
/*!
@const kSCPropNetIPv4BroadcastAddresses
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetIPv4BroadcastAddresses __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPv4BroadcastAddresses API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPv4BroadcastAddresses kSCPropNetIPv4BroadcastAddresses
/*!
@const kSCValNetIPv4ConfigMethodAutomatic
*/
-extern const CFStringRef kSCValNetIPv4ConfigMethodAutomatic __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetIPv4ConfigMethodAutomatic API_AVAILABLE(macos(10.6)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetIPv4ConfigMethodAutomatic kSCValNetIPv4ConfigMethodAutomatic
/*!
@const kSCValNetIPv4ConfigMethodBOOTP
*/
-extern const CFStringRef kSCValNetIPv4ConfigMethodBOOTP __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetIPv4ConfigMethodBOOTP API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetIPv4ConfigMethodBOOTP kSCValNetIPv4ConfigMethodBOOTP
/*!
@const kSCValNetIPv4ConfigMethodDHCP
*/
-extern const CFStringRef kSCValNetIPv4ConfigMethodDHCP __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetIPv4ConfigMethodDHCP API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetIPv4ConfigMethodDHCP kSCValNetIPv4ConfigMethodDHCP
/*!
@const kSCValNetIPv4ConfigMethodINFORM
*/
-extern const CFStringRef kSCValNetIPv4ConfigMethodINFORM __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetIPv4ConfigMethodINFORM API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetIPv4ConfigMethodINFORM kSCValNetIPv4ConfigMethodINFORM
/*!
@const kSCValNetIPv4ConfigMethodLinkLocal
*/
-extern const CFStringRef kSCValNetIPv4ConfigMethodLinkLocal __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetIPv4ConfigMethodLinkLocal API_AVAILABLE(macos(10.2)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetIPv4ConfigMethodLinkLocal kSCValNetIPv4ConfigMethodLinkLocal
/*!
@const kSCValNetIPv4ConfigMethodManual
*/
-extern const CFStringRef kSCValNetIPv4ConfigMethodManual __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetIPv4ConfigMethodManual API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetIPv4ConfigMethodManual kSCValNetIPv4ConfigMethodManual
/*!
@const kSCValNetIPv4ConfigMethodPPP
*/
-extern const CFStringRef kSCValNetIPv4ConfigMethodPPP __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetIPv4ConfigMethodPPP API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetIPv4ConfigMethodPPP kSCValNetIPv4ConfigMethodPPP
/*!
@const kSCPropNetIPv6Addresses
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetIPv6Addresses __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPv6Addresses API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPv6Addresses kSCPropNetIPv6Addresses
/*!
@const kSCPropNetIPv6ConfigMethod
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetIPv6ConfigMethod __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPv6ConfigMethod API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPv6ConfigMethod kSCPropNetIPv6ConfigMethod
/*!
@const kSCPropNetIPv6DestAddresses
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetIPv6DestAddresses __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPv6DestAddresses API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPv6DestAddresses kSCPropNetIPv6DestAddresses
/*!
@const kSCPropNetIPv6Flags
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetIPv6Flags __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPv6Flags API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPv6Flags kSCPropNetIPv6Flags
/*!
@const kSCPropNetIPv6PrefixLength
@discussion Value is a CFArray[CFNumber]
*/
-extern const CFStringRef kSCPropNetIPv6PrefixLength __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPv6PrefixLength API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPv6PrefixLength kSCPropNetIPv6PrefixLength
/*!
@const kSCPropNetIPv6Router
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetIPv6Router __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPv6Router API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPv6Router kSCPropNetIPv6Router
/*!
@const kSCValNetIPv6ConfigMethodAutomatic
*/
-extern const CFStringRef kSCValNetIPv6ConfigMethodAutomatic __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetIPv6ConfigMethodAutomatic API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetIPv6ConfigMethodAutomatic kSCValNetIPv6ConfigMethodAutomatic
/*!
@const kSCValNetIPv6ConfigMethodLinkLocal
*/
-extern const CFStringRef kSCValNetIPv6ConfigMethodLinkLocal __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCValNetIPv6ConfigMethodLinkLocal API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetIPv6ConfigMethodLinkLocal kSCValNetIPv6ConfigMethodLinkLocal
/*!
@const kSCValNetIPv6ConfigMethodManual
*/
-extern const CFStringRef kSCValNetIPv6ConfigMethodManual __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetIPv6ConfigMethodManual API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetIPv6ConfigMethodManual kSCValNetIPv6ConfigMethodManual
/*!
@const kSCValNetIPv6ConfigMethodRouterAdvertisement
*/
-extern const CFStringRef kSCValNetIPv6ConfigMethodRouterAdvertisement __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetIPv6ConfigMethodRouterAdvertisement API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetIPv6ConfigMethodRouterAdvertisement kSCValNetIPv6ConfigMethodRouterAdvertisement
/*!
@const kSCValNetIPv6ConfigMethod6to4
*/
-extern const CFStringRef kSCValNetIPv6ConfigMethod6to4 __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetIPv6ConfigMethod6to4 API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetIPv6ConfigMethod6to4 kSCValNetIPv6ConfigMethod6to4
/*!
@const kSCPropNet6to4Relay
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNet6to4Relay __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNet6to4Relay API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNet6to4Relay kSCPropNet6to4Relay
/*!
@const kSCPropNetLinkActive
@discussion Value is a CFBoolean
*/
-extern const CFStringRef kSCPropNetLinkActive __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetLinkActive API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetLinkActive kSCPropNetLinkActive
/*!
@const kSCPropNetLinkDetaching
@discussion Value is a CFBoolean
*/
-extern const CFStringRef kSCPropNetLinkDetaching __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetLinkDetaching API_AVAILABLE(macos(10.2)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetLinkDetaching kSCPropNetLinkDetaching
/*!
@const kSCPropNetModemAccessPointName
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetModemAccessPointName __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetModemAccessPointName API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetModemAccessPointName kSCPropNetModemAccessPointName
/*!
@const kSCPropNetModemConnectionPersonality
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetModemConnectionPersonality __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetModemConnectionPersonality API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetModemConnectionPersonality kSCPropNetModemConnectionPersonality
/*!
@const kSCPropNetModemConnectionScript
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetModemConnectionScript __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetModemConnectionScript API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetModemConnectionScript kSCPropNetModemConnectionScript
/*!
@const kSCPropNetModemConnectSpeed
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetModemConnectSpeed __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetModemConnectSpeed API_AVAILABLE(macos(10.2)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetModemConnectSpeed kSCPropNetModemConnectSpeed
/*!
@const kSCPropNetModemDataCompression
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetModemDataCompression __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetModemDataCompression API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetModemDataCompression kSCPropNetModemDataCompression
/*!
@const kSCPropNetModemDeviceContextID
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetModemDeviceContextID __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetModemDeviceContextID API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetModemDeviceContextID kSCPropNetModemDeviceContextID
/*!
@const kSCPropNetModemDeviceModel
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetModemDeviceModel __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetModemDeviceModel API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetModemDeviceModel kSCPropNetModemDeviceModel
/*!
@const kSCPropNetModemDeviceVendor
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetModemDeviceVendor __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetModemDeviceVendor API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetModemDeviceVendor kSCPropNetModemDeviceVendor
/*!
@const kSCPropNetModemDialMode
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetModemDialMode __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetModemDialMode API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetModemDialMode kSCPropNetModemDialMode
/*!
@const kSCPropNetModemErrorCorrection
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetModemErrorCorrection __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetModemErrorCorrection API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetModemErrorCorrection kSCPropNetModemErrorCorrection
/*!
@const kSCPropNetModemHoldCallWaitingAudibleAlert
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetModemHoldCallWaitingAudibleAlert __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetModemHoldCallWaitingAudibleAlert API_AVAILABLE(macos(10.2)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetModemHoldCallWaitingAudibleAlert kSCPropNetModemHoldCallWaitingAudibleAlert
/*!
@const kSCPropNetModemHoldDisconnectOnAnswer
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetModemHoldDisconnectOnAnswer __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetModemHoldDisconnectOnAnswer API_AVAILABLE(macos(10.2)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetModemHoldDisconnectOnAnswer kSCPropNetModemHoldDisconnectOnAnswer
/*!
@const kSCPropNetModemHoldEnabled
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetModemHoldEnabled __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetModemHoldEnabled API_AVAILABLE(macos(10.2)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetModemHoldEnabled kSCPropNetModemHoldEnabled
/*!
@const kSCPropNetModemHoldReminder
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetModemHoldReminder __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetModemHoldReminder API_AVAILABLE(macos(10.2)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetModemHoldReminder kSCPropNetModemHoldReminder
/*!
@const kSCPropNetModemHoldReminderTime
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetModemHoldReminderTime __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetModemHoldReminderTime API_AVAILABLE(macos(10.2)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetModemHoldReminderTime kSCPropNetModemHoldReminderTime
/*!
@const kSCPropNetModemNote
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetModemNote __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetModemNote API_AVAILABLE(macos(10.2)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetModemNote kSCPropNetModemNote
/*!
@const kSCPropNetModemPulseDial
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetModemPulseDial __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetModemPulseDial API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetModemPulseDial kSCPropNetModemPulseDial
/*!
@const kSCPropNetModemSpeaker
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetModemSpeaker __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetModemSpeaker API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetModemSpeaker kSCPropNetModemSpeaker
/*!
@const kSCPropNetModemSpeed
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetModemSpeed __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetModemSpeed API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetModemSpeed kSCPropNetModemSpeed
/*!
@const kSCValNetModemDialModeIgnoreDialTone
*/
-extern const CFStringRef kSCValNetModemDialModeIgnoreDialTone __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetModemDialModeIgnoreDialTone API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetModemDialModeIgnoreDialTone kSCValNetModemDialModeIgnoreDialTone
/*!
@const kSCValNetModemDialModeManual
*/
-extern const CFStringRef kSCValNetModemDialModeManual __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetModemDialModeManual API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetModemDialModeManual kSCValNetModemDialModeManual
/*!
@const kSCValNetModemDialModeWaitForDialTone
*/
-extern const CFStringRef kSCValNetModemDialModeWaitForDialTone __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetModemDialModeWaitForDialTone API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetModemDialModeWaitForDialTone kSCValNetModemDialModeWaitForDialTone
/*!
@const kSCPropNetPPPACSPEnabled
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetPPPACSPEnabled __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPACSPEnabled API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPACSPEnabled kSCPropNetPPPACSPEnabled
/*!
@const kSCPropNetPPPConnectTime
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetPPPConnectTime __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPConnectTime API_AVAILABLE(macos(10.2)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPConnectTime kSCPropNetPPPConnectTime
/*!
@const kSCPropNetPPPDeviceLastCause
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetPPPDeviceLastCause __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPDeviceLastCause API_AVAILABLE(macos(10.2)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPDeviceLastCause kSCPropNetPPPDeviceLastCause
/*!
@const kSCPropNetPPPDialOnDemand
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetPPPDialOnDemand __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPDialOnDemand API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPDialOnDemand kSCPropNetPPPDialOnDemand
/*!
@const kSCPropNetPPPDisconnectOnFastUserSwitch
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetPPPDisconnectOnFastUserSwitch __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPDisconnectOnFastUserSwitch API_AVAILABLE(macos(10.4)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPDisconnectOnFastUserSwitch kSCPropNetPPPDisconnectOnFastUserSwitch
/*!
@const kSCPropNetPPPDisconnectOnIdle
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetPPPDisconnectOnIdle __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPDisconnectOnIdle API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPDisconnectOnIdle kSCPropNetPPPDisconnectOnIdle
/*!
@const kSCPropNetPPPDisconnectOnIdleTimer
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetPPPDisconnectOnIdleTimer __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPDisconnectOnIdleTimer API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPDisconnectOnIdleTimer kSCPropNetPPPDisconnectOnIdleTimer
/*!
@const kSCPropNetPPPDisconnectOnLogout
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetPPPDisconnectOnLogout __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPDisconnectOnLogout API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPDisconnectOnLogout kSCPropNetPPPDisconnectOnLogout
/*!
@const kSCPropNetPPPDisconnectOnSleep
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetPPPDisconnectOnSleep __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPDisconnectOnSleep API_AVAILABLE(macos(10.2)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPDisconnectOnSleep kSCPropNetPPPDisconnectOnSleep
/*!
@const kSCPropNetPPPDisconnectTime
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetPPPDisconnectTime __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPDisconnectTime API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPDisconnectTime kSCPropNetPPPDisconnectTime
/*!
@const kSCPropNetPPPIdleReminderTimer
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetPPPIdleReminderTimer __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPIdleReminderTimer API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPIdleReminderTimer kSCPropNetPPPIdleReminderTimer
/*!
@const kSCPropNetPPPIdleReminder
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetPPPIdleReminder __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPIdleReminder API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPIdleReminder kSCPropNetPPPIdleReminder
/*!
@const kSCPropNetPPPLastCause
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetPPPLastCause __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPLastCause API_AVAILABLE(macos(10.2)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPLastCause kSCPropNetPPPLastCause
/*!
@const kSCPropNetPPPLogfile
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetPPPLogfile __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPLogfile API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPLogfile kSCPropNetPPPLogfile
/*!
@const kSCPropNetPPPPlugins
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetPPPPlugins __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPPlugins API_AVAILABLE(macos(10.2)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPPlugins kSCPropNetPPPPlugins
/*!
@const kSCPropNetPPPRetryConnectTime
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetPPPRetryConnectTime __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPRetryConnectTime API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPRetryConnectTime kSCPropNetPPPRetryConnectTime
/*!
@const kSCPropNetPPPSessionTimer
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetPPPSessionTimer __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPSessionTimer API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPSessionTimer kSCPropNetPPPSessionTimer
/*!
@const kSCPropNetPPPStatus
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetPPPStatus __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPStatus API_AVAILABLE(macos(10.2)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPStatus kSCPropNetPPPStatus
/*!
@const kSCPropNetPPPUseSessionTimer
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetPPPUseSessionTimer __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPUseSessionTimer API_AVAILABLE(macos(10.2)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPUseSessionTimer kSCPropNetPPPUseSessionTimer
/*!
@const kSCPropNetPPPVerboseLogging
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetPPPVerboseLogging __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPVerboseLogging API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPVerboseLogging kSCPropNetPPPVerboseLogging
/*!
@const kSCPropNetPPPAuthEAPPlugins
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetPPPAuthEAPPlugins __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPAuthEAPPlugins API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPAuthEAPPlugins kSCPropNetPPPAuthEAPPlugins
/*!
@const kSCPropNetPPPAuthName
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetPPPAuthName __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPAuthName API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPAuthName kSCPropNetPPPAuthName
/*!
@const kSCPropNetPPPAuthPassword
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetPPPAuthPassword __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPAuthPassword API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPAuthPassword kSCPropNetPPPAuthPassword
/*!
@const kSCPropNetPPPAuthPasswordEncryption
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetPPPAuthPasswordEncryption __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPAuthPasswordEncryption API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPAuthPasswordEncryption kSCPropNetPPPAuthPasswordEncryption
/*!
@const kSCPropNetPPPAuthPrompt
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetPPPAuthPrompt __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPAuthPrompt API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPAuthPrompt kSCPropNetPPPAuthPrompt
/*!
@const kSCPropNetPPPAuthProtocol
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetPPPAuthProtocol __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPAuthProtocol API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPAuthProtocol kSCPropNetPPPAuthProtocol
/*!
@const kSCValNetPPPAuthPasswordEncryptionKeychain
*/
-extern const CFStringRef kSCValNetPPPAuthPasswordEncryptionKeychain __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetPPPAuthPasswordEncryptionKeychain API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetPPPAuthPasswordEncryptionKeychain kSCValNetPPPAuthPasswordEncryptionKeychain
/*!
@const kSCValNetPPPAuthPasswordEncryptionToken
*/
-extern const CFStringRef kSCValNetPPPAuthPasswordEncryptionToken __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetPPPAuthPasswordEncryptionToken API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetPPPAuthPasswordEncryptionToken kSCValNetPPPAuthPasswordEncryptionToken
/*!
@const kSCValNetPPPAuthPromptBefore
@discussion Value is a CFString
*/
-extern const CFStringRef kSCValNetPPPAuthPromptBefore __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetPPPAuthPromptBefore API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetPPPAuthPromptBefore kSCValNetPPPAuthPromptBefore
/*!
@const kSCValNetPPPAuthPromptAfter
@discussion Value is a CFString
*/
-extern const CFStringRef kSCValNetPPPAuthPromptAfter __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetPPPAuthPromptAfter API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetPPPAuthPromptAfter kSCValNetPPPAuthPromptAfter
/*!
@const kSCValNetPPPAuthProtocolCHAP
@discussion Value is a CFString
*/
-extern const CFStringRef kSCValNetPPPAuthProtocolCHAP __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetPPPAuthProtocolCHAP API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetPPPAuthProtocolCHAP kSCValNetPPPAuthProtocolCHAP
/*!
@const kSCValNetPPPAuthProtocolEAP
@discussion Value is a CFString
*/
-extern const CFStringRef kSCValNetPPPAuthProtocolEAP __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetPPPAuthProtocolEAP API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetPPPAuthProtocolEAP kSCValNetPPPAuthProtocolEAP
/*!
@const kSCValNetPPPAuthProtocolMSCHAP1
@discussion Value is a CFString
*/
-extern const CFStringRef kSCValNetPPPAuthProtocolMSCHAP1 __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetPPPAuthProtocolMSCHAP1 API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetPPPAuthProtocolMSCHAP1 kSCValNetPPPAuthProtocolMSCHAP1
/*!
@const kSCValNetPPPAuthProtocolMSCHAP2
@discussion Value is a CFString
*/
-extern const CFStringRef kSCValNetPPPAuthProtocolMSCHAP2 __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetPPPAuthProtocolMSCHAP2 API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetPPPAuthProtocolMSCHAP2 kSCValNetPPPAuthProtocolMSCHAP2
/*!
@const kSCValNetPPPAuthProtocolPAP
@discussion Value is a CFString
*/
-extern const CFStringRef kSCValNetPPPAuthProtocolPAP __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetPPPAuthProtocolPAP API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetPPPAuthProtocolPAP kSCValNetPPPAuthProtocolPAP
/*!
@const kSCPropNetPPPCommAlternateRemoteAddress
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetPPPCommAlternateRemoteAddress __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPCommAlternateRemoteAddress API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPCommAlternateRemoteAddress kSCPropNetPPPCommAlternateRemoteAddress
/*!
@const kSCPropNetPPPCommConnectDelay
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetPPPCommConnectDelay __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPCommConnectDelay API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPCommConnectDelay kSCPropNetPPPCommConnectDelay
/*!
@const kSCPropNetPPPCommDisplayTerminalWindow
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetPPPCommDisplayTerminalWindow __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPCommDisplayTerminalWindow API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPCommDisplayTerminalWindow kSCPropNetPPPCommDisplayTerminalWindow
/*!
@const kSCPropNetPPPCommRedialCount
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetPPPCommRedialCount __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPCommRedialCount API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPCommRedialCount kSCPropNetPPPCommRedialCount
/*!
@const kSCPropNetPPPCommRedialEnabled
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetPPPCommRedialEnabled __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPCommRedialEnabled API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPCommRedialEnabled kSCPropNetPPPCommRedialEnabled
/*!
@const kSCPropNetPPPCommRedialInterval
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetPPPCommRedialInterval __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPCommRedialInterval API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPCommRedialInterval kSCPropNetPPPCommRedialInterval
/*!
@const kSCPropNetPPPCommRemoteAddress
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetPPPCommRemoteAddress __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPCommRemoteAddress API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPCommRemoteAddress kSCPropNetPPPCommRemoteAddress
/*!
@const kSCPropNetPPPCommTerminalScript
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetPPPCommTerminalScript __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPCommTerminalScript API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPCommTerminalScript kSCPropNetPPPCommTerminalScript
/*!
@const kSCPropNetPPPCommUseTerminalScript
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetPPPCommUseTerminalScript __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPCommUseTerminalScript API_AVAILABLE(macos(10.2)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPCommUseTerminalScript kSCPropNetPPPCommUseTerminalScript
/*!
@const kSCPropNetPPPCCPEnabled
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetPPPCCPEnabled __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPCCPEnabled API_AVAILABLE(macos(10.2)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPCCPEnabled kSCPropNetPPPCCPEnabled
/*!
@const kSCPropNetPPPCCPMPPE40Enabled
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetPPPCCPMPPE40Enabled __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPCCPMPPE40Enabled API_AVAILABLE(macos(10.4)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPCCPMPPE40Enabled kSCPropNetPPPCCPMPPE40Enabled
/*!
@const kSCPropNetPPPCCPMPPE128Enabled
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetPPPCCPMPPE128Enabled __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPCCPMPPE128Enabled API_AVAILABLE(macos(10.4)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPCCPMPPE128Enabled kSCPropNetPPPCCPMPPE128Enabled
/*!
@const kSCPropNetPPPIPCPCompressionVJ
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetPPPIPCPCompressionVJ __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPIPCPCompressionVJ API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPIPCPCompressionVJ kSCPropNetPPPIPCPCompressionVJ
/*!
@const kSCPropNetPPPIPCPUsePeerDNS
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetPPPIPCPUsePeerDNS __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPIPCPUsePeerDNS API_AVAILABLE(macos(10.4)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPIPCPUsePeerDNS kSCPropNetPPPIPCPUsePeerDNS
/*!
@const kSCPropNetPPPLCPEchoEnabled
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetPPPLCPEchoEnabled __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPLCPEchoEnabled API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPLCPEchoEnabled kSCPropNetPPPLCPEchoEnabled
/*!
@const kSCPropNetPPPLCPEchoFailure
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetPPPLCPEchoFailure __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPLCPEchoFailure API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPLCPEchoFailure kSCPropNetPPPLCPEchoFailure
/*!
@const kSCPropNetPPPLCPEchoInterval
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetPPPLCPEchoInterval __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPLCPEchoInterval API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPLCPEchoInterval kSCPropNetPPPLCPEchoInterval
/*!
@const kSCPropNetPPPLCPCompressionACField
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetPPPLCPCompressionACField __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPLCPCompressionACField API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPLCPCompressionACField kSCPropNetPPPLCPCompressionACField
/*!
@const kSCPropNetPPPLCPCompressionPField
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetPPPLCPCompressionPField __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPLCPCompressionPField API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPLCPCompressionPField kSCPropNetPPPLCPCompressionPField
/*!
@const kSCPropNetPPPLCPMRU
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetPPPLCPMRU __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPLCPMRU API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPLCPMRU kSCPropNetPPPLCPMRU
/*!
@const kSCPropNetPPPLCPMTU
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetPPPLCPMTU __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPLCPMTU API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPLCPMTU kSCPropNetPPPLCPMTU
/*!
@const kSCPropNetPPPLCPReceiveACCM
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetPPPLCPReceiveACCM __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPLCPReceiveACCM API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPLCPReceiveACCM kSCPropNetPPPLCPReceiveACCM
/*!
@const kSCPropNetPPPLCPTransmitACCM
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetPPPLCPTransmitACCM __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPLCPTransmitACCM API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPLCPTransmitACCM kSCPropNetPPPLCPTransmitACCM
/*!
@const kSCPropNetL2TPIPSecSharedSecret
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetL2TPIPSecSharedSecret __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetL2TPIPSecSharedSecret API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetL2TPIPSecSharedSecret kSCPropNetL2TPIPSecSharedSecret
/*!
@const kSCPropNetL2TPIPSecSharedSecretEncryption
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetL2TPIPSecSharedSecretEncryption __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetL2TPIPSecSharedSecretEncryption API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetL2TPIPSecSharedSecretEncryption kSCPropNetL2TPIPSecSharedSecretEncryption
/*!
@const kSCPropNetL2TPTransport
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetL2TPTransport __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetL2TPTransport API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetL2TPTransport kSCPropNetL2TPTransport
/*!
@const kSCValNetL2TPIPSecSharedSecretEncryptionKeychain
*/
-extern const CFStringRef kSCValNetL2TPIPSecSharedSecretEncryptionKeychain __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetL2TPIPSecSharedSecretEncryptionKeychain API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetL2TPIPSecSharedSecretEncryptionKeychain kSCValNetL2TPIPSecSharedSecretEncryptionKeychain
/*!
@const kSCValNetL2TPTransportIP
*/
-extern const CFStringRef kSCValNetL2TPTransportIP __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetL2TPTransportIP API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetL2TPTransportIP kSCValNetL2TPTransportIP
/*!
@const kSCValNetL2TPTransportIPSec
*/
-extern const CFStringRef kSCValNetL2TPTransportIPSec __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetL2TPTransportIPSec API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetL2TPTransportIPSec kSCValNetL2TPTransportIPSec
/*!
@const kSCPropNetProxiesExceptionsList
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetProxiesExceptionsList __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetProxiesExceptionsList API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetProxiesExceptionsList kSCPropNetProxiesExceptionsList
/*!
@const kSCPropNetProxiesExcludeSimpleHostnames
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetProxiesExcludeSimpleHostnames __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetProxiesExcludeSimpleHostnames API_AVAILABLE(macos(10.4)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetProxiesExcludeSimpleHostnames kSCPropNetProxiesExcludeSimpleHostnames
/*!
@const kSCPropNetProxiesFTPEnable
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetProxiesFTPEnable __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetProxiesFTPEnable API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetProxiesFTPEnable kSCPropNetProxiesFTPEnable
/*!
@const kSCPropNetProxiesFTPPassive
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetProxiesFTPPassive __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetProxiesFTPPassive API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetProxiesFTPPassive kSCPropNetProxiesFTPPassive
/*!
@const kSCPropNetProxiesFTPPort
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetProxiesFTPPort __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetProxiesFTPPort API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetProxiesFTPPort kSCPropNetProxiesFTPPort
/*!
@const kSCPropNetProxiesFTPProxy
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetProxiesFTPProxy __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetProxiesFTPProxy API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetProxiesFTPProxy kSCPropNetProxiesFTPProxy
/*!
@const kSCPropNetProxiesGopherEnable
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetProxiesGopherEnable __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetProxiesGopherEnable API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetProxiesGopherEnable kSCPropNetProxiesGopherEnable
/*!
@const kSCPropNetProxiesGopherPort
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetProxiesGopherPort __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetProxiesGopherPort API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetProxiesGopherPort kSCPropNetProxiesGopherPort
/*!
@const kSCPropNetProxiesGopherProxy
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetProxiesGopherProxy __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetProxiesGopherProxy API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetProxiesGopherProxy kSCPropNetProxiesGopherProxy
/*!
@const kSCPropNetProxiesHTTPEnable
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetProxiesHTTPEnable __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetProxiesHTTPEnable API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetProxiesHTTPEnable kSCPropNetProxiesHTTPEnable
/*!
@const kSCPropNetProxiesHTTPPort
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetProxiesHTTPPort __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetProxiesHTTPPort API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetProxiesHTTPPort kSCPropNetProxiesHTTPPort
/*!
@const kSCPropNetProxiesHTTPProxy
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetProxiesHTTPProxy __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetProxiesHTTPProxy API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetProxiesHTTPProxy kSCPropNetProxiesHTTPProxy
/*!
@const kSCPropNetProxiesHTTPSEnable
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetProxiesHTTPSEnable __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetProxiesHTTPSEnable API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetProxiesHTTPSEnable kSCPropNetProxiesHTTPSEnable
/*!
@const kSCPropNetProxiesHTTPSPort
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetProxiesHTTPSPort __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetProxiesHTTPSPort API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetProxiesHTTPSPort kSCPropNetProxiesHTTPSPort
/*!
@const kSCPropNetProxiesHTTPSProxy
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetProxiesHTTPSProxy __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetProxiesHTTPSProxy API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetProxiesHTTPSProxy kSCPropNetProxiesHTTPSProxy
/*!
@const kSCPropNetProxiesRTSPEnable
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetProxiesRTSPEnable __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetProxiesRTSPEnable API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetProxiesRTSPEnable kSCPropNetProxiesRTSPEnable
/*!
@const kSCPropNetProxiesRTSPPort
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetProxiesRTSPPort __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetProxiesRTSPPort API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetProxiesRTSPPort kSCPropNetProxiesRTSPPort
/*!
@const kSCPropNetProxiesRTSPProxy
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetProxiesRTSPProxy __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetProxiesRTSPProxy API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetProxiesRTSPProxy kSCPropNetProxiesRTSPProxy
/*!
@const kSCPropNetProxiesSOCKSEnable
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetProxiesSOCKSEnable __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetProxiesSOCKSEnable API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetProxiesSOCKSEnable kSCPropNetProxiesSOCKSEnable
/*!
@const kSCPropNetProxiesSOCKSPort
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetProxiesSOCKSPort __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetProxiesSOCKSPort API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetProxiesSOCKSPort kSCPropNetProxiesSOCKSPort
/*!
@const kSCPropNetProxiesSOCKSProxy
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetProxiesSOCKSProxy __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetProxiesSOCKSProxy API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetProxiesSOCKSProxy kSCPropNetProxiesSOCKSProxy
/*!
@const kSCPropNetProxiesProxyAutoConfigEnable
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetProxiesProxyAutoConfigEnable __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetProxiesProxyAutoConfigEnable API_AVAILABLE(macos(10.4)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetProxiesProxyAutoConfigEnable kSCPropNetProxiesProxyAutoConfigEnable
/*!
@const kSCPropNetProxiesProxyAutoConfigJavaScript
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetProxiesProxyAutoConfigJavaScript __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCPropNetProxiesProxyAutoConfigJavaScript API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetProxiesProxyAutoConfigJavaScript kSCPropNetProxiesProxyAutoConfigJavaScript
/*!
@const kSCPropNetProxiesProxyAutoConfigURLString
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetProxiesProxyAutoConfigURLString __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetProxiesProxyAutoConfigURLString API_AVAILABLE(macos(10.4)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetProxiesProxyAutoConfigURLString kSCPropNetProxiesProxyAutoConfigURLString
/*!
@const kSCPropNetProxiesProxyAutoDiscoveryEnable
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetProxiesProxyAutoDiscoveryEnable __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetProxiesProxyAutoDiscoveryEnable API_AVAILABLE(macos(10.4)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetProxiesProxyAutoDiscoveryEnable kSCPropNetProxiesProxyAutoDiscoveryEnable
/*!
@const kSCPropNetSMBNetBIOSName
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetSMBNetBIOSName __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetSMBNetBIOSName API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
#define kSCPropNetSMBNetBIOSName kSCPropNetSMBNetBIOSName
/*!
@const kSCPropNetSMBNetBIOSNodeType
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetSMBNetBIOSNodeType __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetSMBNetBIOSNodeType API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
#define kSCPropNetSMBNetBIOSNodeType kSCPropNetSMBNetBIOSNodeType
/*!
@const kSCPropNetSMBNetBIOSScope
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetSMBNetBIOSScope __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5,__MAC_10_7,__IPHONE_NA,__IPHONE_NA);
+extern const CFStringRef kSCPropNetSMBNetBIOSScope API_DEPRECATED("No longer supported", macos(10.5,10.7)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
#define kSCPropNetSMBNetBIOSScope kSCPropNetSMBNetBIOSScope
/*!
@const kSCPropNetSMBWINSAddresses
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetSMBWINSAddresses __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetSMBWINSAddresses API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
#define kSCPropNetSMBWINSAddresses kSCPropNetSMBWINSAddresses
/*!
@const kSCPropNetSMBWorkgroup
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetSMBWorkgroup __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetSMBWorkgroup API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
#define kSCPropNetSMBWorkgroup kSCPropNetSMBWorkgroup
/*!
@const kSCValNetSMBNetBIOSNodeTypeBroadcast
*/
-extern const CFStringRef kSCValNetSMBNetBIOSNodeTypeBroadcast __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetSMBNetBIOSNodeTypeBroadcast API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
#define kSCValNetSMBNetBIOSNodeTypeBroadcast kSCValNetSMBNetBIOSNodeTypeBroadcast
/*!
@const kSCValNetSMBNetBIOSNodeTypePeer
*/
-extern const CFStringRef kSCValNetSMBNetBIOSNodeTypePeer __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetSMBNetBIOSNodeTypePeer API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
#define kSCValNetSMBNetBIOSNodeTypePeer kSCValNetSMBNetBIOSNodeTypePeer
/*!
@const kSCValNetSMBNetBIOSNodeTypeMixed
*/
-extern const CFStringRef kSCValNetSMBNetBIOSNodeTypeMixed __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetSMBNetBIOSNodeTypeMixed API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
#define kSCValNetSMBNetBIOSNodeTypeMixed kSCValNetSMBNetBIOSNodeTypeMixed
/*!
@const kSCValNetSMBNetBIOSNodeTypeHybrid
*/
-extern const CFStringRef kSCValNetSMBNetBIOSNodeTypeHybrid __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetSMBNetBIOSNodeTypeHybrid API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
#define kSCValNetSMBNetBIOSNodeTypeHybrid kSCValNetSMBNetBIOSNodeTypeHybrid
/*!
/*!
@const kSCEntUsersConsoleUser
*/
-extern const CFStringRef kSCEntUsersConsoleUser __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCEntUsersConsoleUser API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
#define kSCEntUsersConsoleUser kSCEntUsersConsoleUser
/*!
@const kSCPropSystemComputerName
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropSystemComputerName __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropSystemComputerName API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropSystemComputerName kSCPropSystemComputerName
/*!
@const kSCPropSystemComputerNameEncoding
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropSystemComputerNameEncoding __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropSystemComputerNameEncoding API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropSystemComputerNameEncoding kSCPropSystemComputerNameEncoding
/*!
/*!
@const kSCDynamicStoreDomainFile
*/
-extern const CFStringRef kSCDynamicStoreDomainFile __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCDynamicStoreDomainFile API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCDynamicStoreDomainFile kSCDynamicStoreDomainFile
/*!
@const kSCDynamicStoreDomainPlugin
*/
-extern const CFStringRef kSCDynamicStoreDomainPlugin __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCDynamicStoreDomainPlugin API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCDynamicStoreDomainPlugin kSCDynamicStoreDomainPlugin
/*!
@const kSCDynamicStoreDomainSetup
*/
-extern const CFStringRef kSCDynamicStoreDomainSetup __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCDynamicStoreDomainSetup API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCDynamicStoreDomainSetup kSCDynamicStoreDomainSetup
/*!
@const kSCDynamicStoreDomainState
*/
-extern const CFStringRef kSCDynamicStoreDomainState __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCDynamicStoreDomainState API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCDynamicStoreDomainState kSCDynamicStoreDomainState
/*!
@const kSCDynamicStoreDomainPrefs
*/
-extern const CFStringRef kSCDynamicStoreDomainPrefs __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCDynamicStoreDomainPrefs API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCDynamicStoreDomainPrefs kSCDynamicStoreDomainPrefs
/*!
@const kSCDynamicStorePropSetupCurrentSet
@discussion Value is a CFString
*/
-extern const CFStringRef kSCDynamicStorePropSetupCurrentSet __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCDynamicStorePropSetupCurrentSet API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCDynamicStorePropSetupCurrentSet kSCDynamicStorePropSetupCurrentSet
/*!
@const kSCDynamicStorePropSetupLastUpdated
*/
-extern const CFStringRef kSCDynamicStorePropSetupLastUpdated __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCDynamicStorePropSetupLastUpdated API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCDynamicStorePropSetupLastUpdated kSCDynamicStorePropSetupLastUpdated
/*!
@const kSCDynamicStorePropNetInterfaces
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCDynamicStorePropNetInterfaces __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCDynamicStorePropNetInterfaces API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCDynamicStorePropNetInterfaces kSCDynamicStorePropNetInterfaces
/*!
@const kSCDynamicStorePropNetPrimaryInterface
@discussion Value is a CFString
*/
-extern const CFStringRef kSCDynamicStorePropNetPrimaryInterface __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCDynamicStorePropNetPrimaryInterface API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCDynamicStorePropNetPrimaryInterface kSCDynamicStorePropNetPrimaryInterface
/*!
@const kSCDynamicStorePropNetPrimaryService
@discussion Value is a CFString
*/
-extern const CFStringRef kSCDynamicStorePropNetPrimaryService __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCDynamicStorePropNetPrimaryService API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCDynamicStorePropNetPrimaryService kSCDynamicStorePropNetPrimaryService
/*!
@const kSCDynamicStorePropNetServiceIDs
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCDynamicStorePropNetServiceIDs __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCDynamicStorePropNetServiceIDs API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCDynamicStorePropNetServiceIDs kSCDynamicStorePropNetServiceIDs
/*!
@const kSCPropUsersConsoleUserName
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropUsersConsoleUserName __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_4,__IPHONE_NA,__IPHONE_NA);
+extern const CFStringRef kSCPropUsersConsoleUserName API_DEPRECATED("No longer supported", macos(10.1,10.4)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
#define kSCPropUsersConsoleUserName kSCPropUsersConsoleUserName
/*!
@const kSCPropUsersConsoleUserUID
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropUsersConsoleUserUID __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_4,__IPHONE_NA,__IPHONE_NA);
+extern const CFStringRef kSCPropUsersConsoleUserUID API_DEPRECATED("No longer supported", macos(10.1,10.4)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
#define kSCPropUsersConsoleUserUID kSCPropUsersConsoleUserUID
/*!
@const kSCPropUsersConsoleUserGID
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropUsersConsoleUserGID __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_4,__IPHONE_NA,__IPHONE_NA);
+extern const CFStringRef kSCPropUsersConsoleUserGID API_DEPRECATED("No longer supported", macos(10.1,10.4)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
#define kSCPropUsersConsoleUserGID kSCPropUsersConsoleUserGID
CF_ASSUME_NONNULL_END
-#endif /* USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS */
#endif /* _SCSCHEMADEFINITIONS_H */
/*
- * Copyright (c) 2000-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2000-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
* kSCEntNetLinkIssues "LinkIssues" CFDictionary
* kSCEntNetLinkQuality "LinkQuality" CFDictionary
* kSCEntNetLoopback "Loopback" CFDictionary
+ * kSCEntNetNAT64 "NAT64" CFDictionary
* kSCEntNetNAT64PrefixRequest "NAT64PrefixRequest"
* kSCEntNetOnDemand "OnDemand" CFDictionary
* kSCEntNetQoSMarkingPolicy "QoSMarkingPolicy" CFDictionary
* kSCEntNetIPv4 Entity Keys
*
* kSCPropNetIPv4AdditionalRoutes "AdditionalRoutes" CFArray[CFDictionary]
+ * kSCPropNetIPv4CLAT46 "CLAT46" CFBoolean
* kSCPropNetIPv4ExcludedRoutes "ExcludedRoutes" CFArray[CFDictionary]
* kSCPropNetIPv4IncludedRoutes "IncludedRoutes" CFArray[CFDictionary]
*
* kSCPropNetIPv6EnableCGA "EnableCGA" CFNumber (0 or 1)
* kSCPropNetIPv6ExcludedRoutes "ExcludedRoutes" CFArray[CFDictionary]
* kSCPropNetIPv6IncludedRoutes "IncludedRoutes" CFArray[CFDictionary]
+ * kSCPropNetIPv6PerformPLATDiscovery "PerformPLATDiscovery" CFBoolean
*
* --- kSCPropNetIPv6AdditionalRoutes, kSCPropNetIPv6IncludedRoutes, kSCPropNetIPv6ExcludedRoutes [CFDictionary] keys ---
* kSCPropNetIPv6RouteDestinationAddress "DestinationAddress" CFString
* kSCValNetPPPOnDemandPriorityHigh "High"
* kSCValNetPPPOnDemandPriorityLow "Low"
*
+ * kSCEntNetNAT64 Entity Keys
+ *
+ * kSCPropNetNAT64PrefixList "PrefixList" CFArray[CFString]
+ * kSCPropNetNAT64PLATDiscoveryStartTime "PLATDiscoveryStartTime" CFDate
+ * kSCPropNetNAT64PLATDiscoveryCompletionTime "PLATDiscoveryCompletionTime" CFDate
+ *
* kSCEntNetProxies Entity Keys
*
* kSCPropNetProxiesBypassAllowed "BypassAllowed" CFNumber (0 or 1)
@const kSCPropNetIgnoreLinkStatus
@discussion Value is a CFBoolean
*/
-extern const CFStringRef kSCPropNetIgnoreLinkStatus __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetIgnoreLinkStatus API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIgnoreLinkStatus kSCPropNetIgnoreLinkStatus
/*!
@const kSCPropConfirmedInterfaceName
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropConfirmedInterfaceName __OSX_AVAILABLE_STARTING(__MAC_10_10,__IPHONE_8_0/*SPI*/);
+extern const CFStringRef kSCPropConfirmedInterfaceName API_AVAILABLE(macos(10.10)) SPI_AVAILABLE(ios(8.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropConfirmedInterfaceName kSCPropConfirmedInterfaceName
/*!
@const kSCPropDisableUntilNeeded
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropDisableUntilNeeded __OSX_AVAILABLE_STARTING(__MAC_10_11,__IPHONE_9_0/*SPI*/);
+extern const CFStringRef kSCPropDisableUntilNeeded API_AVAILABLE(macos(10.11)) SPI_AVAILABLE(ios(9.0), tvos(9.0), watchos(2.0), bridgeos(2.0));
#define kSCPropDisableUntilNeeded kSCPropDisableUntilNeeded
/*!
@const kSCPrefVirtualNetworkInterfaces
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCPrefVirtualNetworkInterfaces __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPrefVirtualNetworkInterfaces API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPrefVirtualNetworkInterfaces kSCPrefVirtualNetworkInterfaces
/*!
@const kSCEntNetActiveDuringSleepRequested
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCEntNetActiveDuringSleepRequested __OSX_AVAILABLE_STARTING(__MAC_10_10,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCEntNetActiveDuringSleepRequested API_AVAILABLE(macos(10.10)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCEntNetActiveDuringSleepRequested kSCEntNetActiveDuringSleepRequested
/*!
@const kSCEntNetActiveDuringSleepSupported
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCEntNetActiveDuringSleepSupported __OSX_AVAILABLE_STARTING(__MAC_10_10,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCEntNetActiveDuringSleepSupported API_AVAILABLE(macos(10.10)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCEntNetActiveDuringSleepSupported kSCEntNetActiveDuringSleepSupported
/*!
@const kSCEntNetAppLayer
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCEntNetAppLayer __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCEntNetAppLayer API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCEntNetAppLayer kSCEntNetAppLayer
/*!
@const kSCEntNetCommCenter
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCEntNetCommCenter __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCEntNetCommCenter SPI_AVAILABLE(macos(10.6), ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCEntNetCommCenter kSCEntNetCommCenter
/*!
@const kSCEntNetEAPOL
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCEntNetEAPOL __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCEntNetEAPOL API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCEntNetEAPOL kSCEntNetEAPOL
/*!
@const kSCEntNetIPv4RouterARPFailure
*/
-extern const CFStringRef kSCEntNetIPv4RouterARPFailure __OSX_AVAILABLE_STARTING(__MAC_10_10,__IPHONE_8_0/*SPI*/);
+extern const CFStringRef kSCEntNetIPv4RouterARPFailure API_AVAILABLE(macos(10.10)) SPI_AVAILABLE(ios(8.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCEntNetIPv4RouterARPFailure kSCEntNetIPv4RouterARPFailure
/*!
@const kSCEntNetIPv4RouterARPAlive
*/
-extern const CFStringRef kSCEntNetIPv4RouterARPAlive __OSX_AVAILABLE_STARTING(__MAC_10_10,__IPHONE_8_0/*SPI*/);
+extern const CFStringRef kSCEntNetIPv4RouterARPAlive API_AVAILABLE(macos(10.10)) SPI_AVAILABLE(ios(8.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCEntNetIPv4RouterARPAlive kSCEntNetIPv4RouterARPAlive
/*!
@const kSCEntNetIPv6RouterExpired
*/
-extern const CFStringRef kSCEntNetIPv6RouterExpired __OSX_AVAILABLE_STARTING(__MAC_10_13,__IPHONE_11_0/*SPI*/);
+extern const CFStringRef kSCEntNetIPv6RouterExpired API_AVAILABLE(macos(10.13)) SPI_AVAILABLE(ios(11.0), tvos(11.0), watchos(4.0), bridgeos(4.0));
#define kSCEntNetIPv6RouterExpired kSCEntNetIPv6RouterExpired
/*!
@const kSCEntNetLinkIssues
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCEntNetLinkIssues __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCEntNetLinkIssues API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCEntNetLinkIssues kSCEntNetLinkIssues
/*!
@const kSCEntNetLinkQuality
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCEntNetLinkQuality __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0/*SPI*/);
+extern const CFStringRef kSCEntNetLinkQuality API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(5.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCEntNetLinkQuality kSCEntNetLinkQuality
/*!
@const kSCEntNetLoopback
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCEntNetLoopback __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCEntNetLoopback API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCEntNetLoopback kSCEntNetLoopback
+/*!
+ @const kSCEntNetNAT64
+ @discussion Value is a CFDictionary
+ */
+extern const CFStringRef kSCEntNetNAT64 API_AVAILABLE(macos(10.14)) SPI_AVAILABLE(ios(12.0), tvos(12.0), watchos(5.0), bridgeos(5.0));
+#define kSCEntNetNAT64 kSCEntNetNAT64
+
/*!
@const kSCEntNetNAT64PrefixRequest
*/
-extern const CFStringRef kSCEntNetNAT64PrefixRequest __OSX_AVAILABLE_STARTING(__MAC_10_13,__IPHONE_11_0/*SPI*/);
+extern const CFStringRef kSCEntNetNAT64PrefixRequest API_AVAILABLE(macos(10.13)) SPI_AVAILABLE(ios(11.0), tvos(11.0), watchos(4.0), bridgeos(4.0));
#define kSCEntNetNAT64PrefixRequest kSCEntNetNAT64PrefixRequest
/*!
@const kSCEntNetOnDemand
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCEntNetOnDemand __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_3_0/*SPI*/);
+extern const CFStringRef kSCEntNetOnDemand API_AVAILABLE(macos(10.6)) SPI_AVAILABLE(ios(3.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCEntNetOnDemand kSCEntNetOnDemand
/*!
@const kSCEntNetQoSMarkingPolicy
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCEntNetQoSMarkingPolicy __OSX_AVAILABLE_STARTING(__MAC_10_13,__IPHONE_10_0/*SPI*/);
+extern const CFStringRef kSCEntNetQoSMarkingPolicy API_AVAILABLE(macos(10.13)) SPI_AVAILABLE(ios(10.0), tvos(10.0), watchos(3.0), bridgeos(3.0));
#define kSCEntNetQoSMarkingPolicy kSCEntNetQoSMarkingPolicy
/*!
@const kSCEntNetService
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCEntNetService __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCEntNetService API_AVAILABLE(macos(10.6)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCEntNetService kSCEntNetService
/*!
@const kSCEntNetVPN
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCEntNetVPN __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCEntNetVPN API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCEntNetVPN kSCEntNetVPN
/*!
@const kSCPropNetCommCenterAllowNetworkAccess
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetCommCenterAllowNetworkAccess __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetCommCenterAllowNetworkAccess SPI_AVAILABLE(macos(10.6), ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetCommCenterAllowNetworkAccess kSCPropNetCommCenterAllowNetworkAccess
/*!
@const kSCPropNetCommCenterAvailable
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetCommCenterAvailable __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetCommCenterAvailable SPI_AVAILABLE(macos(10.6), ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetCommCenterAvailable kSCPropNetCommCenterAvailable
/*!
@const kSCPropNetDNSConfirmedServiceID
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetDNSConfirmedServiceID __OSX_AVAILABLE_STARTING(__MAC_10_11,__IPHONE_9_0/*SPI*/);
+extern const CFStringRef kSCPropNetDNSConfirmedServiceID API_AVAILABLE(macos(10.11)) SPI_AVAILABLE(ios(9.0), tvos(9.0), watchos(2.0), bridgeos(2.0));
#define kSCPropNetDNSConfirmedServiceID kSCPropNetDNSConfirmedServiceID
/*!
@const kSCPropNetDNSServiceIdentifier
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetDNSServiceIdentifier __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCPropNetDNSServiceIdentifier API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetDNSServiceIdentifier kSCPropNetDNSServiceIdentifier
/*!
@const kSCPropNetDNSSupplementalMatchDomainsNoSearch
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetDNSSupplementalMatchDomainsNoSearch __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCPropNetDNSSupplementalMatchDomainsNoSearch API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetDNSSupplementalMatchDomainsNoSearch kSCPropNetDNSSupplementalMatchDomainsNoSearch
/*!
@const kSCPropNetEthernetCapabilityAV
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetEthernetCapabilityAV __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0/*SPI*/);
+extern const CFStringRef kSCPropNetEthernetCapabilityAV API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(5.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetEthernetCapabilityAV kSCPropNetEthernetCapabilityAV
/*!
@const kSCPropNetEthernetCapabilityJUMBO_MTU
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetEthernetCapabilityJUMBO_MTU __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0/*SPI*/);
+extern const CFStringRef kSCPropNetEthernetCapabilityJUMBO_MTU API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(5.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetEthernetCapabilityJUMBO_MTU kSCPropNetEthernetCapabilityJUMBO_MTU
/*!
@const kSCPropNetEthernetCapabilityLRO
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetEthernetCapabilityLRO __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0/*SPI*/);
+extern const CFStringRef kSCPropNetEthernetCapabilityLRO API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(5.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetEthernetCapabilityLRO kSCPropNetEthernetCapabilityLRO
/*!
@const kSCPropNetEthernetCapabilityRXCSUM
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetEthernetCapabilityRXCSUM __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0/*SPI*/);
+extern const CFStringRef kSCPropNetEthernetCapabilityRXCSUM API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(5.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetEthernetCapabilityRXCSUM kSCPropNetEthernetCapabilityRXCSUM
/*!
@const kSCPropNetEthernetCapabilityTSO
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetEthernetCapabilityTSO __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0/*SPI*/);
+extern const CFStringRef kSCPropNetEthernetCapabilityTSO API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(5.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetEthernetCapabilityTSO kSCPropNetEthernetCapabilityTSO
/*!
@const kSCPropNetEthernetCapabilityTSO4
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetEthernetCapabilityTSO4 __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0/*SPI*/);
+extern const CFStringRef kSCPropNetEthernetCapabilityTSO4 API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(5.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetEthernetCapabilityTSO4 kSCPropNetEthernetCapabilityTSO4
/*!
@const kSCPropNetEthernetCapabilityTSO6
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetEthernetCapabilityTSO6 __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0/*SPI*/);
+extern const CFStringRef kSCPropNetEthernetCapabilityTSO6 API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(5.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetEthernetCapabilityTSO6 kSCPropNetEthernetCapabilityTSO6
/*!
@const kSCPropNetEthernetCapabilityTXCSUM
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetEthernetCapabilityTXCSUM __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0/*SPI*/);
+extern const CFStringRef kSCPropNetEthernetCapabilityTXCSUM API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(5.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetEthernetCapabilityTXCSUM kSCPropNetEthernetCapabilityTXCSUM
/*!
@const kSCPropNetEthernetCapabilityVLAN_HWTAGGING
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetEthernetCapabilityVLAN_HWTAGGING __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0/*SPI*/);
+extern const CFStringRef kSCPropNetEthernetCapabilityVLAN_HWTAGGING API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(5.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetEthernetCapabilityVLAN_HWTAGGING kSCPropNetEthernetCapabilityVLAN_HWTAGGING
/*!
@const kSCPropNetEthernetCapabilityVLAN_MTU
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetEthernetCapabilityVLAN_MTU __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0/*SPI*/);
+extern const CFStringRef kSCPropNetEthernetCapabilityVLAN_MTU API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(5.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetEthernetCapabilityVLAN_MTU kSCPropNetEthernetCapabilityVLAN_MTU
/*!
/*!
@const kSCValNetInterfaceTypeCellular
*/
-extern const CFStringRef kSCValNetInterfaceTypeCellular __OSX_AVAILABLE_STARTING(__MAC_10_10,__IPHONE_8_0/*SPI*/);
+extern const CFStringRef kSCValNetInterfaceTypeCellular SPI_AVAILABLE(macos(10.0), ios(8.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetInterfaceTypeCellular kSCValNetInterfaceTypeCellular
/*!
@const kSCValNetInterfaceTypeLoopback
*/
-extern const CFStringRef kSCValNetInterfaceTypeLoopback __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCValNetInterfaceTypeLoopback API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetInterfaceTypeLoopback kSCValNetInterfaceTypeLoopback
/*!
@const kSCValNetInterfaceTypeVPN
*/
-extern const CFStringRef kSCValNetInterfaceTypeVPN __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCValNetInterfaceTypeVPN API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetInterfaceTypeVPN kSCValNetInterfaceTypeVPN
/*!
@const kSCPropNetIPSecDisconnectOnWake
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetIPSecDisconnectOnWake __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPSecDisconnectOnWake API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPSecDisconnectOnWake kSCPropNetIPSecDisconnectOnWake
/*!
@const kSCPropNetIPSecDisconnectOnWakeTimer
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetIPSecDisconnectOnWakeTimer __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPSecDisconnectOnWakeTimer API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPSecDisconnectOnWakeTimer kSCPropNetIPSecDisconnectOnWakeTimer
/*!
@const kSCPropNetIPSecLastCause
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetIPSecLastCause __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_3_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPSecLastCause API_AVAILABLE(macos(10.6)) SPI_AVAILABLE(ios(3.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPSecLastCause kSCPropNetIPSecLastCause
/*!
@const kSCPropNetIPSecOnDemandEnabled
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetIPSecOnDemandEnabled __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_3_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPSecOnDemandEnabled API_AVAILABLE(macos(10.6)) SPI_AVAILABLE(ios(3.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPSecOnDemandEnabled kSCPropNetIPSecOnDemandEnabled
/*!
@const kSCPropNetIPSecOnDemandMatchDomainsAlways
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetIPSecOnDemandMatchDomainsAlways __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_3_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPSecOnDemandMatchDomainsAlways API_AVAILABLE(macos(10.6)) SPI_AVAILABLE(ios(3.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPSecOnDemandMatchDomainsAlways kSCPropNetIPSecOnDemandMatchDomainsAlways
/*!
@const kSCPropNetIPSecOnDemandMatchDomainsOnRetry
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetIPSecOnDemandMatchDomainsOnRetry __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_3_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPSecOnDemandMatchDomainsOnRetry API_AVAILABLE(macos(10.6)) SPI_AVAILABLE(ios(3.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPSecOnDemandMatchDomainsOnRetry kSCPropNetIPSecOnDemandMatchDomainsOnRetry
/*!
@const kSCPropNetIPSecOnDemandMatchDomainsNever
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetIPSecOnDemandMatchDomainsNever __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_3_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPSecOnDemandMatchDomainsNever API_AVAILABLE(macos(10.6)) SPI_AVAILABLE(ios(3.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPSecOnDemandMatchDomainsNever kSCPropNetIPSecOnDemandMatchDomainsNever
/*!
@const kSCPropNetIPv4AdditionalRoutes
@discussion Value is a CFArray[CFDictionary]
*/
-extern const CFStringRef kSCPropNetIPv4AdditionalRoutes __OSX_AVAILABLE_STARTING(__MAC_10_10,__IPHONE_8_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPv4AdditionalRoutes API_AVAILABLE(macos(10.10)) SPI_AVAILABLE(ios(8.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPv4AdditionalRoutes kSCPropNetIPv4AdditionalRoutes
+/*!
+ @const kSCPropNetIPv4CLAT46
+ @discussion Value is a CFBoolean
+ */
+extern const CFStringRef kSCPropNetIPv4CLAT46 API_AVAILABLE(macos(10.14)) SPI_AVAILABLE(ios(12.0), tvos(12.0), watchos(5.0), bridgeos(5.0));
+#define kSCPropNetIPv4CLAT46 kSCPropNetIPv4CLAT46
+
/*!
@const kSCPropNetIPv4ExcludedRoutes
@discussion Value is a CFArray[CFDictionary]
*/
-extern const CFStringRef kSCPropNetIPv4ExcludedRoutes __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPv4ExcludedRoutes API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPv4ExcludedRoutes kSCPropNetIPv4ExcludedRoutes
/*!
@const kSCPropNetIPv4IncludedRoutes
@discussion Value is a CFArray[CFDictionary]
*/
-extern const CFStringRef kSCPropNetIPv4IncludedRoutes __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPv4IncludedRoutes API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPv4IncludedRoutes kSCPropNetIPv4IncludedRoutes
/*!
@const kSCValNetIPv4ConfigMethodFailover
*/
-extern const CFStringRef kSCValNetIPv4ConfigMethodFailover __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetIPv4ConfigMethodFailover API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetIPv4ConfigMethodFailover kSCValNetIPv4ConfigMethodFailover
/*!
@const kSCPropNetIPv4RouteDestinationAddress
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetIPv4RouteDestinationAddress __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPv4RouteDestinationAddress API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPv4RouteDestinationAddress kSCPropNetIPv4RouteDestinationAddress
/*!
@const kSCPropNetIPv4RouteSubnetMask
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetIPv4RouteSubnetMask __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPv4RouteSubnetMask API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPv4RouteSubnetMask kSCPropNetIPv4RouteSubnetMask
/*!
@const kSCPropNetIPv4RouteGatewayAddress
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetIPv4RouteGatewayAddress __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPv4RouteGatewayAddress API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPv4RouteGatewayAddress kSCPropNetIPv4RouteGatewayAddress
/*!
@const kSCPropNetIPv4RouteInterfaceName
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetIPv4RouteInterfaceName __OSX_AVAILABLE_STARTING(__MAC_10_10,__IPHONE_8_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPv4RouteInterfaceName API_AVAILABLE(macos(10.10)) SPI_AVAILABLE(ios(8.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPv4RouteInterfaceName kSCPropNetIPv4RouteInterfaceName
/*!
@const kSCPropNetIPv4ARPResolvedHardwareAddress
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetIPv4ARPResolvedHardwareAddress __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPv4ARPResolvedHardwareAddress API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(5.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPv4ARPResolvedHardwareAddress kSCPropNetIPv4ARPResolvedHardwareAddress
/*!
@const kSCPropNetIPv4ARPResolvedIPAddress
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetIPv4ARPResolvedIPAddress __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPv4ARPResolvedIPAddress API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(5.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPv4ARPResolvedIPAddress kSCPropNetIPv4ARPResolvedIPAddress
/*!
@const kSCPropNetIPv6AdditionalRoutes
@discussion Value is a CFArray[CFDictionary]
*/
-extern const CFStringRef kSCPropNetIPv6AdditionalRoutes __OSX_AVAILABLE_STARTING(__MAC_10_10,__IPHONE_8_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPv6AdditionalRoutes API_AVAILABLE(macos(10.10)) SPI_AVAILABLE(ios(8.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPv6AdditionalRoutes kSCPropNetIPv6AdditionalRoutes
/*!
@const kSCPropNetIPv6EnableCGA
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetIPv6EnableCGA __OSX_AVAILABLE_STARTING(__MAC_10_12,__IPHONE_10_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPv6EnableCGA API_AVAILABLE(macos(10.12)) SPI_AVAILABLE(ios(10.0), tvos(10.0), watchos(3.0), bridgeos(3.0));
#define kSCPropNetIPv6EnableCGA kSCPropNetIPv6EnableCGA
/*!
@const kSCPropNetIPv6ExcludedRoutes
@discussion Value is a CFArray[CFDictionary]
*/
-extern const CFStringRef kSCPropNetIPv6ExcludedRoutes __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPv6ExcludedRoutes API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPv6ExcludedRoutes kSCPropNetIPv6ExcludedRoutes
/*!
@const kSCPropNetIPv6IncludedRoutes
@discussion Value is a CFArray[CFDictionary]
*/
-extern const CFStringRef kSCPropNetIPv6IncludedRoutes __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPv6IncludedRoutes API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPv6IncludedRoutes kSCPropNetIPv6IncludedRoutes
+/*!
+ @const kSCPropNetIPv6PerformPLATDiscovery
+ @discussion Value is a CFBoolean
+ */
+extern const CFStringRef kSCPropNetIPv6PerformPLATDiscovery API_AVAILABLE(macos(10.14)) SPI_AVAILABLE(ios(12.0), tvos(12.0), watchos(5.0), bridgeos(5.0));
+#define kSCPropNetIPv6PerformPLATDiscovery kSCPropNetIPv6PerformPLATDiscovery
+
/*!
@const kSCPropNetIPv6RouteDestinationAddress
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetIPv6RouteDestinationAddress __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPv6RouteDestinationAddress API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPv6RouteDestinationAddress kSCPropNetIPv6RouteDestinationAddress
/*!
@const kSCPropNetIPv6RoutePrefixLength
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetIPv6RoutePrefixLength __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPv6RoutePrefixLength API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPv6RoutePrefixLength kSCPropNetIPv6RoutePrefixLength
/*!
@const kSCPropNetIPv6RouteGatewayAddress
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetIPv6RouteGatewayAddress __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPv6RouteGatewayAddress API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPv6RouteGatewayAddress kSCPropNetIPv6RouteGatewayAddress
/*!
@const kSCPropNetIPv6RouteInterfaceName
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetIPv6RouteInterfaceName __OSX_AVAILABLE_STARTING(__MAC_10_10,__IPHONE_8_0/*SPI*/);
+extern const CFStringRef kSCPropNetIPv6RouteInterfaceName API_AVAILABLE(macos(10.10)) SPI_AVAILABLE(ios(8.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetIPv6RouteInterfaceName kSCPropNetIPv6RouteInterfaceName
/*!
@const kSCPropNetLinkExpensive
@discussion Value is a CFBoolean
*/
-extern const CFStringRef kSCPropNetLinkExpensive __OSX_AVAILABLE_STARTING(__MAC_10_10,__IPHONE_8_0/*SPI*/);
+extern const CFStringRef kSCPropNetLinkExpensive API_AVAILABLE(macos(10.10)) SPI_AVAILABLE(ios(8.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetLinkExpensive kSCPropNetLinkExpensive
/*!
@const kSCPropNetLinkIssuesModuleID
@discussion Value is a CFData
*/
-extern const CFStringRef kSCPropNetLinkIssuesModuleID __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCPropNetLinkIssuesModuleID API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetLinkIssuesModuleID kSCPropNetLinkIssuesModuleID
/*!
@const kSCPropNetLinkIssuesInfo
@discussion Value is a CFData
*/
-extern const CFStringRef kSCPropNetLinkIssuesInfo __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCPropNetLinkIssuesInfo API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetLinkIssuesInfo kSCPropNetLinkIssuesInfo
/*!
@const kSCPropNetLinkIssuesTimeStamp
@discussion Value is a CFDate
*/
-extern const CFStringRef kSCPropNetLinkIssuesTimeStamp __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCPropNetLinkIssuesTimeStamp API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetLinkIssuesTimeStamp kSCPropNetLinkIssuesTimeStamp
/*!
@const kSCPropNetLinkQuality
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetLinkQuality __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0/*SPI*/);
+extern const CFStringRef kSCPropNetLinkQuality API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(5.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetLinkQuality kSCPropNetLinkQuality
/*!
@const kSCPropNetPPPDisconnectOnWake
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetPPPDisconnectOnWake __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPDisconnectOnWake API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPDisconnectOnWake kSCPropNetPPPDisconnectOnWake
/*!
@const kSCPropNetPPPDisconnectOnWakeTimer
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetPPPDisconnectOnWakeTimer __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPDisconnectOnWakeTimer API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPDisconnectOnWakeTimer kSCPropNetPPPDisconnectOnWakeTimer
/*!
@const kSCPropNetPPPOnDemandDomains
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetPPPOnDemandDomains __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPOnDemandDomains API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPOnDemandDomains kSCPropNetPPPOnDemandDomains
/*!
@const kSCPropNetPPPOnDemandEnabled
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetPPPOnDemandEnabled __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPOnDemandEnabled API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPOnDemandEnabled kSCPropNetPPPOnDemandEnabled
/*!
@const kSCPropNetPPPOnDemandHostName
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetPPPOnDemandHostName __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPOnDemandHostName API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPOnDemandHostName kSCPropNetPPPOnDemandHostName
/*!
@const kSCPropNetPPPOnDemandMatchDomainsAlways
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetPPPOnDemandMatchDomainsAlways __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPOnDemandMatchDomainsAlways API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(5.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPOnDemandMatchDomainsAlways kSCPropNetPPPOnDemandMatchDomainsAlways
/*!
@const kSCPropNetPPPOnDemandMatchDomainsOnRetry
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetPPPOnDemandMatchDomainsOnRetry __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPOnDemandMatchDomainsOnRetry API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(5.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPOnDemandMatchDomainsOnRetry kSCPropNetPPPOnDemandMatchDomainsOnRetry
/*!
@const kSCPropNetPPPOnDemandMatchDomainsNever
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetPPPOnDemandMatchDomainsNever __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPOnDemandMatchDomainsNever API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(5.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPOnDemandMatchDomainsNever kSCPropNetPPPOnDemandMatchDomainsNever
/*!
@const kSCPropNetPPPOnDemandMode
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetPPPOnDemandMode __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPOnDemandMode API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPOnDemandMode kSCPropNetPPPOnDemandMode
/*!
@const kSCPropNetPPPOnDemandPriority
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetPPPOnDemandPriority __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetPPPOnDemandPriority API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetPPPOnDemandPriority kSCPropNetPPPOnDemandPriority
/*!
@const kSCValNetPPPOnDemandModeAggressive
*/
-extern const CFStringRef kSCValNetPPPOnDemandModeAggressive __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetPPPOnDemandModeAggressive API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetPPPOnDemandModeAggressive kSCValNetPPPOnDemandModeAggressive
/*!
@const kSCValNetPPPOnDemandModeConservative
*/
-extern const CFStringRef kSCValNetPPPOnDemandModeConservative __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetPPPOnDemandModeConservative API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetPPPOnDemandModeConservative kSCValNetPPPOnDemandModeConservative
/*!
@const kSCValNetPPPOnDemandModeCompatible
*/
-extern const CFStringRef kSCValNetPPPOnDemandModeCompatible __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetPPPOnDemandModeCompatible API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetPPPOnDemandModeCompatible kSCValNetPPPOnDemandModeCompatible
/*!
@const kSCValNetPPPOnDemandPriorityDefault
*/
-extern const CFStringRef kSCValNetPPPOnDemandPriorityDefault __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetPPPOnDemandPriorityDefault API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetPPPOnDemandPriorityDefault kSCValNetPPPOnDemandPriorityDefault
/*!
@const kSCValNetPPPOnDemandPriorityHigh
*/
-extern const CFStringRef kSCValNetPPPOnDemandPriorityHigh __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetPPPOnDemandPriorityHigh API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetPPPOnDemandPriorityHigh kSCValNetPPPOnDemandPriorityHigh
/*!
@const kSCValNetPPPOnDemandPriorityLow
*/
-extern const CFStringRef kSCValNetPPPOnDemandPriorityLow __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetPPPOnDemandPriorityLow API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetPPPOnDemandPriorityLow kSCValNetPPPOnDemandPriorityLow
+/*!
+ @group kSCEntNetNAT64 Entity Keys
+ */
+
+/*!
+ @const kSCPropNetNAT64PrefixList
+ @discussion Value is a CFArray[CFString]
+ */
+extern const CFStringRef kSCPropNetNAT64PrefixList API_AVAILABLE(macos(10.14)) SPI_AVAILABLE(ios(12.0), tvos(12.0), watchos(5.0), bridgeos(5.0));
+#define kSCPropNetNAT64PrefixList kSCPropNetNAT64PrefixList
+
+/*!
+ @const kSCPropNetNAT64PLATDiscoveryStartTime
+ @discussion Value is a CFDate
+ */
+extern const CFStringRef kSCPropNetNAT64PLATDiscoveryStartTime API_AVAILABLE(macos(10.14)) SPI_AVAILABLE(ios(12.0), tvos(12.0), watchos(5.0), bridgeos(5.0));
+#define kSCPropNetNAT64PLATDiscoveryStartTime kSCPropNetNAT64PLATDiscoveryStartTime
+
+/*!
+ @const kSCPropNetNAT64PLATDiscoveryCompletionTime
+ @discussion Value is a CFDate
+ */
+extern const CFStringRef kSCPropNetNAT64PLATDiscoveryCompletionTime API_AVAILABLE(macos(10.14)) SPI_AVAILABLE(ios(12.0), tvos(12.0), watchos(5.0), bridgeos(5.0));
+#define kSCPropNetNAT64PLATDiscoveryCompletionTime kSCPropNetNAT64PLATDiscoveryCompletionTime
+
/*!
@group kSCEntNetProxies Entity Keys
*/
@const kSCPropNetProxiesBypassAllowed
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetProxiesBypassAllowed __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCPropNetProxiesBypassAllowed API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetProxiesBypassAllowed kSCPropNetProxiesBypassAllowed
/*!
@const kSCPropNetProxiesFallBackAllowed
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetProxiesFallBackAllowed __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_6_0/*SPI*/);
+extern const CFStringRef kSCPropNetProxiesFallBackAllowed API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(6.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetProxiesFallBackAllowed kSCPropNetProxiesFallBackAllowed
/*!
@const kSCPropNetProxiesSupplementalMatchDomains
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetProxiesSupplementalMatchDomains __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0/*SPI*/);
+extern const CFStringRef kSCPropNetProxiesSupplementalMatchDomains API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(5.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetProxiesSupplementalMatchDomains kSCPropNetProxiesSupplementalMatchDomains
/*!
@const kSCPropNetProxiesSupplementalMatchOrders
@discussion Value is a CFArray[CFNumber]
*/
-extern const CFStringRef kSCPropNetProxiesSupplementalMatchOrders __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0/*SPI*/);
+extern const CFStringRef kSCPropNetProxiesSupplementalMatchOrders API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(5.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetProxiesSupplementalMatchOrders kSCPropNetProxiesSupplementalMatchOrders
/*!
@const kSCPropNetProxiesServiceSpecific
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetProxiesServiceSpecific __OSX_AVAILABLE_STARTING(__MAC_10_11,__IPHONE_9_0/*SPI*/);
+extern const CFStringRef kSCPropNetProxiesServiceSpecific API_AVAILABLE(macos(10.11)) SPI_AVAILABLE(ios(9.0), tvos(9.0), watchos(2.0), bridgeos(2.0));
#define kSCPropNetProxiesServiceSpecific kSCPropNetProxiesServiceSpecific
/*!
@const kSCPropNetProxiesScoped
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCPropNetProxiesScoped __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0/*SPI*/);
+extern const CFStringRef kSCPropNetProxiesScoped API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(5.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetProxiesScoped kSCPropNetProxiesScoped
/*!
@const kSCPropNetProxiesServices
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCPropNetProxiesServices __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCPropNetProxiesServices API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetProxiesServices kSCPropNetProxiesServices
/*!
@const kSCPropNetProxiesSupplemental
@discussion Value is a CFArray[CFDictionary]
*/
-extern const CFStringRef kSCPropNetProxiesSupplemental __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0/*SPI*/);
+extern const CFStringRef kSCPropNetProxiesSupplemental API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(5.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetProxiesSupplemental kSCPropNetProxiesSupplemental
/*!
@const kSCPropNetProxiesSupplementalMatchDomain
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetProxiesSupplementalMatchDomain __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0/*SPI*/);
+extern const CFStringRef kSCPropNetProxiesSupplementalMatchDomain API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(5.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetProxiesSupplementalMatchDomain kSCPropNetProxiesSupplementalMatchDomain
/*!
@const kSCPropNetQoSMarkingAppleAudioVideoCalls
@discussion Value is a CFBoolean
*/
-extern const CFStringRef kSCPropNetQoSMarkingAppleAudioVideoCalls __OSX_AVAILABLE_STARTING(__MAC_10_13,__IPHONE_10_0/*SPI*/);
+extern const CFStringRef kSCPropNetQoSMarkingAppleAudioVideoCalls API_AVAILABLE(macos(10.13)) SPI_AVAILABLE(ios(10.0), tvos(10.0), watchos(3.0), bridgeos(3.0));
#define kSCPropNetQoSMarkingAppleAudioVideoCalls kSCPropNetQoSMarkingAppleAudioVideoCalls
/*!
@const kSCPropNetQoSMarkingEnabled
@discussion Value is a CFBoolean
*/
-extern const CFStringRef kSCPropNetQoSMarkingEnabled __OSX_AVAILABLE_STARTING(__MAC_10_13,__IPHONE_10_0/*SPI*/);
+extern const CFStringRef kSCPropNetQoSMarkingEnabled API_AVAILABLE(macos(10.13)) SPI_AVAILABLE(ios(10.0), tvos(10.0), watchos(3.0), bridgeos(3.0));
#define kSCPropNetQoSMarkingEnabled kSCPropNetQoSMarkingEnabled
/*!
@const kSCPropNetQoSMarkingWhitelistedAppIdentifiers
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetQoSMarkingWhitelistedAppIdentifiers __OSX_AVAILABLE_STARTING(__MAC_10_13,__IPHONE_10_0/*SPI*/);
+extern const CFStringRef kSCPropNetQoSMarkingWhitelistedAppIdentifiers API_AVAILABLE(macos(10.13)) SPI_AVAILABLE(ios(10.0), tvos(10.0), watchos(3.0), bridgeos(3.0));
#define kSCPropNetQoSMarkingWhitelistedAppIdentifiers kSCPropNetQoSMarkingWhitelistedAppIdentifiers
/*!
@const kSCPropNetServicePrimaryRank
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetServicePrimaryRank __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetServicePrimaryRank API_AVAILABLE(macos(10.6)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetServicePrimaryRank kSCPropNetServicePrimaryRank
/*!
@const kSCPropNetServiceServiceIndex
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetServiceServiceIndex __OSX_AVAILABLE_STARTING(__MAC_10_12,__IPHONE_10_0/*SPI*/);
+extern const CFStringRef kSCPropNetServiceServiceIndex API_AVAILABLE(macos(10.12)) SPI_AVAILABLE(ios(10.0), tvos(10.0), watchos(3.0), bridgeos(3.0));
#define kSCPropNetServiceServiceIndex kSCPropNetServiceServiceIndex
/*!
@const kSCPropNetServiceUserDefinedName
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetServiceUserDefinedName __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropNetServiceUserDefinedName API_AVAILABLE(macos(10.6)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetServiceUserDefinedName kSCPropNetServiceUserDefinedName
/*!
@const kSCValNetServicePrimaryRankFirst
*/
-extern const CFStringRef kSCValNetServicePrimaryRankFirst __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetServicePrimaryRankFirst API_AVAILABLE(macos(10.6)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetServicePrimaryRankFirst kSCValNetServicePrimaryRankFirst
/*!
@const kSCValNetServicePrimaryRankLast
*/
-extern const CFStringRef kSCValNetServicePrimaryRankLast __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetServicePrimaryRankLast API_AVAILABLE(macos(10.6)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetServicePrimaryRankLast kSCValNetServicePrimaryRankLast
/*!
@const kSCValNetServicePrimaryRankNever
*/
-extern const CFStringRef kSCValNetServicePrimaryRankNever __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCValNetServicePrimaryRankNever API_AVAILABLE(macos(10.6)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetServicePrimaryRankNever kSCValNetServicePrimaryRankNever
/*!
@const kSCValNetServicePrimaryRankScoped
*/
-extern const CFStringRef kSCValNetServicePrimaryRankScoped __OSX_AVAILABLE_STARTING(__MAC_10_10,__IPHONE_8_0/*SPI*/);
+extern const CFStringRef kSCValNetServicePrimaryRankScoped API_AVAILABLE(macos(10.10)) SPI_AVAILABLE(ios(8.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetServicePrimaryRankScoped kSCValNetServicePrimaryRankScoped
/*!
@const kSCPropNetVPNAppRules
@discussion Value is a CFArray[CFDictionary]
*/
-extern const CFStringRef kSCPropNetVPNAppRules __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNAppRules API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNAppRules kSCPropNetVPNAppRules
/*!
@const kSCPropNetVPNAuthCredentialPassword
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetVPNAuthCredentialPassword __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNAuthCredentialPassword API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNAuthCredentialPassword kSCPropNetVPNAuthCredentialPassword
/*!
@const kSCPropNetVPNAuthName
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetVPNAuthName __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNAuthName API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNAuthName kSCPropNetVPNAuthName
/*!
@const kSCPropNetVPNAuthPassword
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetVPNAuthPassword __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNAuthPassword API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNAuthPassword kSCPropNetVPNAuthPassword
/*!
@const kSCPropNetVPNAuthPasswordEncryption
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetVPNAuthPasswordEncryption __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNAuthPasswordEncryption API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNAuthPasswordEncryption kSCPropNetVPNAuthPasswordEncryption
/*!
@const kSCPropNetVPNAuthPasswordPluginType
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetVPNAuthPasswordPluginType __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNAuthPasswordPluginType API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNAuthPasswordPluginType kSCPropNetVPNAuthPasswordPluginType
/*!
@const kSCPropNetVPNAuthenticationMethod
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetVPNAuthenticationMethod __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNAuthenticationMethod API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNAuthenticationMethod kSCPropNetVPNAuthenticationMethod
/*!
@const kSCPropNetVPNConnectTime
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetVPNConnectTime __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNConnectTime API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNConnectTime kSCPropNetVPNConnectTime
/*!
@const kSCPropNetVPNDisconnectOnFastUserSwitch
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetVPNDisconnectOnFastUserSwitch __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNDisconnectOnFastUserSwitch API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNDisconnectOnFastUserSwitch kSCPropNetVPNDisconnectOnFastUserSwitch
/*!
@const kSCPropNetVPNDisconnectOnIdle
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetVPNDisconnectOnIdle __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNDisconnectOnIdle API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNDisconnectOnIdle kSCPropNetVPNDisconnectOnIdle
/*!
@const kSCPropNetVPNDisconnectOnIdleTimer
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetVPNDisconnectOnIdleTimer __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNDisconnectOnIdleTimer API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNDisconnectOnIdleTimer kSCPropNetVPNDisconnectOnIdleTimer
/*!
@const kSCPropNetVPNDisconnectOnLogout
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetVPNDisconnectOnLogout __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNDisconnectOnLogout API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNDisconnectOnLogout kSCPropNetVPNDisconnectOnLogout
/*!
@const kSCPropNetVPNDisconnectOnSleep
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetVPNDisconnectOnSleep __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNDisconnectOnSleep API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNDisconnectOnSleep kSCPropNetVPNDisconnectOnSleep
/*!
@const kSCPropNetVPNDisconnectOnWake
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetVPNDisconnectOnWake __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNDisconnectOnWake API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNDisconnectOnWake kSCPropNetVPNDisconnectOnWake
/*!
@const kSCPropNetVPNDisconnectOnWakeTimer
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetVPNDisconnectOnWakeTimer __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNDisconnectOnWakeTimer API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNDisconnectOnWakeTimer kSCPropNetVPNDisconnectOnWakeTimer
/*!
@const kSCPropNetVPNLocalCertificate
@discussion Value is a CFData
*/
-extern const CFStringRef kSCPropNetVPNLocalCertificate __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNLocalCertificate API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNLocalCertificate kSCPropNetVPNLocalCertificate
/*!
@const kSCPropNetVPNLogfile
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetVPNLogfile __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNLogfile API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNLogfile kSCPropNetVPNLogfile
/*!
@const kSCPropNetVPNMTU
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetVPNMTU __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNMTU API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNMTU kSCPropNetVPNMTU
/*!
@const kSCPropNetVPNOnDemandEnabled
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetVPNOnDemandEnabled __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNOnDemandEnabled API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNOnDemandEnabled kSCPropNetVPNOnDemandEnabled
/*!
@const kSCPropNetVPNOnDemandMatchAppEnabled
@discussion Value is a CFBoolean
*/
-extern const CFStringRef kSCPropNetVPNOnDemandMatchAppEnabled __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNOnDemandMatchAppEnabled API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNOnDemandMatchAppEnabled kSCPropNetVPNOnDemandMatchAppEnabled
/*!
@const kSCPropNetVPNOnDemandMatchDomainsAlways
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetVPNOnDemandMatchDomainsAlways __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNOnDemandMatchDomainsAlways API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNOnDemandMatchDomainsAlways kSCPropNetVPNOnDemandMatchDomainsAlways
/*!
@const kSCPropNetVPNOnDemandMatchDomainsOnRetry
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetVPNOnDemandMatchDomainsOnRetry __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNOnDemandMatchDomainsOnRetry API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNOnDemandMatchDomainsOnRetry kSCPropNetVPNOnDemandMatchDomainsOnRetry
/*!
@const kSCPropNetVPNOnDemandMatchDomainsNever
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetVPNOnDemandMatchDomainsNever __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNOnDemandMatchDomainsNever API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNOnDemandMatchDomainsNever kSCPropNetVPNOnDemandMatchDomainsNever
/*!
@const kSCPropNetVPNOnDemandRules
@discussion Value is a CFArray[CFDictionary]
*/
-extern const CFStringRef kSCPropNetVPNOnDemandRules __OSX_AVAILABLE_STARTING(__MAC_10_8,__IPHONE_6_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNOnDemandRules API_AVAILABLE(macos(10.8)) SPI_AVAILABLE(ios(6.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNOnDemandRules kSCPropNetVPNOnDemandRules
/*!
@const kSCPropNetVPNOnDemandSuspended
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetVPNOnDemandSuspended __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNOnDemandSuspended API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNOnDemandSuspended kSCPropNetVPNOnDemandSuspended
/*!
@const kSCPropNetVPNPluginCapability
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetVPNPluginCapability __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNPluginCapability API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNPluginCapability kSCPropNetVPNPluginCapability
/*!
@const kSCPropNetVPNRemoteAddress
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetVPNRemoteAddress __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNRemoteAddress API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNRemoteAddress kSCPropNetVPNRemoteAddress
/*!
@const kSCPropNetVPNStatus
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropNetVPNStatus __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNStatus API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNStatus kSCPropNetVPNStatus
/*!
@const kSCPropNetVPNVerboseLogging
@discussion Value is a CFNumber (0 or 1)
*/
-extern const CFStringRef kSCPropNetVPNVerboseLogging __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNVerboseLogging API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNVerboseLogging kSCPropNetVPNVerboseLogging
/*!
@const kSCValNetVPNAppRuleAccountIdentifierMatch
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCValNetVPNAppRuleAccountIdentifierMatch __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCValNetVPNAppRuleAccountIdentifierMatch API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetVPNAppRuleAccountIdentifierMatch kSCValNetVPNAppRuleAccountIdentifierMatch
/*!
@const kSCValNetVPNAppRuleDNSDomainMatch
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCValNetVPNAppRuleDNSDomainMatch __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCValNetVPNAppRuleDNSDomainMatch API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetVPNAppRuleDNSDomainMatch kSCValNetVPNAppRuleDNSDomainMatch
/*!
@const kSCValNetVPNAppRuleExecutableMatch
@discussion Value is a CFArray[CFDictionary]
*/
-extern const CFStringRef kSCValNetVPNAppRuleExecutableMatch __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCValNetVPNAppRuleExecutableMatch API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetVPNAppRuleExecutableMatch kSCValNetVPNAppRuleExecutableMatch
/*!
@const kSCValNetVPNAppRuleIdentifier
@discussion Value is a CFString
*/
-extern const CFStringRef kSCValNetVPNAppRuleIdentifier __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCValNetVPNAppRuleIdentifier API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetVPNAppRuleIdentifier kSCValNetVPNAppRuleIdentifier
/*!
@const kSCValNetVPNAppRuleExecutableDesignatedRequirement
@discussion Value is a CFString
*/
-extern const CFStringRef kSCValNetVPNAppRuleExecutableDesignatedRequirement __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCValNetVPNAppRuleExecutableDesignatedRequirement API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetVPNAppRuleExecutableDesignatedRequirement kSCValNetVPNAppRuleExecutableDesignatedRequirement
/*!
@const kSCValNetVPNAppRuleExecutableSigningIdentifier
@discussion Value is a CFString
*/
-extern const CFStringRef kSCValNetVPNAppRuleExecutableSigningIdentifier __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCValNetVPNAppRuleExecutableSigningIdentifier API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetVPNAppRuleExecutableSigningIdentifier kSCValNetVPNAppRuleExecutableSigningIdentifier
/*!
@const kSCValNetVPNAppRuleExecutableUUID
@discussion Value is a CFString
*/
-extern const CFStringRef kSCValNetVPNAppRuleExecutableUUID __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCValNetVPNAppRuleExecutableUUID API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetVPNAppRuleExecutableUUID kSCValNetVPNAppRuleExecutableUUID
/*!
@const kSCValNetVPNAuthenticationMethodPassword
*/
-extern const CFStringRef kSCValNetVPNAuthenticationMethodPassword __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCValNetVPNAuthenticationMethodPassword API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetVPNAuthenticationMethodPassword kSCValNetVPNAuthenticationMethodPassword
/*!
@const kSCValNetVPNAuthenticationMethodCertificate
*/
-extern const CFStringRef kSCValNetVPNAuthenticationMethodCertificate __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCValNetVPNAuthenticationMethodCertificate API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetVPNAuthenticationMethodCertificate kSCValNetVPNAuthenticationMethodCertificate
/*!
@const kSCValNetVPNAuthPasswordEncryptionExternal
*/
-extern const CFStringRef kSCValNetVPNAuthPasswordEncryptionExternal __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCValNetVPNAuthPasswordEncryptionExternal API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetVPNAuthPasswordEncryptionExternal kSCValNetVPNAuthPasswordEncryptionExternal
/*!
@const kSCValNetVPNAuthPasswordEncryptionKeychain
*/
-extern const CFStringRef kSCValNetVPNAuthPasswordEncryptionKeychain __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCValNetVPNAuthPasswordEncryptionKeychain API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetVPNAuthPasswordEncryptionKeychain kSCValNetVPNAuthPasswordEncryptionKeychain
/*!
@const kSCValNetVPNAuthPasswordEncryptionPrompt
*/
-extern const CFStringRef kSCValNetVPNAuthPasswordEncryptionPrompt __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCValNetVPNAuthPasswordEncryptionPrompt API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetVPNAuthPasswordEncryptionPrompt kSCValNetVPNAuthPasswordEncryptionPrompt
/*!
@const kSCPropNetVPNOnDemandRuleAction
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetVPNOnDemandRuleAction __OSX_AVAILABLE_STARTING(__MAC_10_8,__IPHONE_6_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNOnDemandRuleAction API_AVAILABLE(macos(10.8)) SPI_AVAILABLE(ios(6.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNOnDemandRuleAction kSCPropNetVPNOnDemandRuleAction
/*!
@const kSCPropNetVPNOnDemandRuleActionParameters
@discussion Value is a CFArray[CFDictionary]
*/
-extern const CFStringRef kSCPropNetVPNOnDemandRuleActionParameters __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNOnDemandRuleActionParameters API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNOnDemandRuleActionParameters kSCPropNetVPNOnDemandRuleActionParameters
/*!
@const kSCPropNetVPNOnDemandRuleDNSDomainMatch
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetVPNOnDemandRuleDNSDomainMatch __OSX_AVAILABLE_STARTING(__MAC_10_8,__IPHONE_6_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNOnDemandRuleDNSDomainMatch API_AVAILABLE(macos(10.8)) SPI_AVAILABLE(ios(6.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNOnDemandRuleDNSDomainMatch kSCPropNetVPNOnDemandRuleDNSDomainMatch
/*!
@const kSCPropNetVPNOnDemandRuleDNSServerAddressMatch
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetVPNOnDemandRuleDNSServerAddressMatch __OSX_AVAILABLE_STARTING(__MAC_10_8,__IPHONE_6_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNOnDemandRuleDNSServerAddressMatch API_AVAILABLE(macos(10.8)) SPI_AVAILABLE(ios(6.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNOnDemandRuleDNSServerAddressMatch kSCPropNetVPNOnDemandRuleDNSServerAddressMatch
/*!
@const kSCPropNetVPNOnDemandRuleSSIDMatch
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetVPNOnDemandRuleSSIDMatch __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNOnDemandRuleSSIDMatch API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNOnDemandRuleSSIDMatch kSCPropNetVPNOnDemandRuleSSIDMatch
/*!
@const kSCPropNetVPNOnDemandRuleInterfaceTypeMatch
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetVPNOnDemandRuleInterfaceTypeMatch __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNOnDemandRuleInterfaceTypeMatch API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNOnDemandRuleInterfaceTypeMatch kSCPropNetVPNOnDemandRuleInterfaceTypeMatch
/*!
@const kSCPropNetVPNOnDemandRuleURLStringProbe
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetVPNOnDemandRuleURLStringProbe __OSX_AVAILABLE_STARTING(__MAC_10_8,__IPHONE_6_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNOnDemandRuleURLStringProbe API_AVAILABLE(macos(10.8)) SPI_AVAILABLE(ios(6.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNOnDemandRuleURLStringProbe kSCPropNetVPNOnDemandRuleURLStringProbe
/*!
@const kSCValNetVPNOnDemandRuleActionAllow
*/
-extern const CFStringRef kSCValNetVPNOnDemandRuleActionAllow __OSX_AVAILABLE_STARTING(__MAC_10_8,__IPHONE_6_0/*SPI*/);
+extern const CFStringRef kSCValNetVPNOnDemandRuleActionAllow API_AVAILABLE(macos(10.8)) SPI_AVAILABLE(ios(6.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetVPNOnDemandRuleActionAllow kSCValNetVPNOnDemandRuleActionAllow
/*!
@const kSCValNetVPNOnDemandRuleActionIgnore
*/
-extern const CFStringRef kSCValNetVPNOnDemandRuleActionIgnore __OSX_AVAILABLE_STARTING(__MAC_10_8,__IPHONE_6_0/*SPI*/);
+extern const CFStringRef kSCValNetVPNOnDemandRuleActionIgnore API_AVAILABLE(macos(10.8)) SPI_AVAILABLE(ios(6.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetVPNOnDemandRuleActionIgnore kSCValNetVPNOnDemandRuleActionIgnore
/*!
@const kSCValNetVPNOnDemandRuleActionConnect
*/
-extern const CFStringRef kSCValNetVPNOnDemandRuleActionConnect __OSX_AVAILABLE_STARTING(__MAC_10_8,__IPHONE_6_0/*SPI*/);
+extern const CFStringRef kSCValNetVPNOnDemandRuleActionConnect API_AVAILABLE(macos(10.8)) SPI_AVAILABLE(ios(6.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetVPNOnDemandRuleActionConnect kSCValNetVPNOnDemandRuleActionConnect
/*!
@const kSCValNetVPNOnDemandRuleActionDisconnect
*/
-extern const CFStringRef kSCValNetVPNOnDemandRuleActionDisconnect __OSX_AVAILABLE_STARTING(__MAC_10_8,__IPHONE_6_0/*SPI*/);
+extern const CFStringRef kSCValNetVPNOnDemandRuleActionDisconnect API_AVAILABLE(macos(10.8)) SPI_AVAILABLE(ios(6.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetVPNOnDemandRuleActionDisconnect kSCValNetVPNOnDemandRuleActionDisconnect
/*!
@const kSCValNetVPNOnDemandRuleActionEvaluateConnection
*/
-extern const CFStringRef kSCValNetVPNOnDemandRuleActionEvaluateConnection __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCValNetVPNOnDemandRuleActionEvaluateConnection API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetVPNOnDemandRuleActionEvaluateConnection kSCValNetVPNOnDemandRuleActionEvaluateConnection
/*!
@const kSCPropNetVPNOnDemandRuleActionParametersDomainAction
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetVPNOnDemandRuleActionParametersDomainAction __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNOnDemandRuleActionParametersDomainAction API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNOnDemandRuleActionParametersDomainAction kSCPropNetVPNOnDemandRuleActionParametersDomainAction
/*!
@const kSCPropNetVPNOnDemandRuleActionParametersDomains
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetVPNOnDemandRuleActionParametersDomains __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNOnDemandRuleActionParametersDomains API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNOnDemandRuleActionParametersDomains kSCPropNetVPNOnDemandRuleActionParametersDomains
/*!
@const kSCPropNetVPNOnDemandRuleActionParametersRequiredDNSServers
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropNetVPNOnDemandRuleActionParametersRequiredDNSServers __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNOnDemandRuleActionParametersRequiredDNSServers API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNOnDemandRuleActionParametersRequiredDNSServers kSCPropNetVPNOnDemandRuleActionParametersRequiredDNSServers
/*!
@const kSCPropNetVPNOnDemandRuleActionParametersRequiredURLStringProbe
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropNetVPNOnDemandRuleActionParametersRequiredURLStringProbe __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCPropNetVPNOnDemandRuleActionParametersRequiredURLStringProbe API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropNetVPNOnDemandRuleActionParametersRequiredURLStringProbe kSCPropNetVPNOnDemandRuleActionParametersRequiredURLStringProbe
/*!
@const kSCValNetVPNOnDemandRuleActionParametersDomainActionConnectIfNeeded
*/
-extern const CFStringRef kSCValNetVPNOnDemandRuleActionParametersDomainActionConnectIfNeeded __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCValNetVPNOnDemandRuleActionParametersDomainActionConnectIfNeeded API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetVPNOnDemandRuleActionParametersDomainActionConnectIfNeeded kSCValNetVPNOnDemandRuleActionParametersDomainActionConnectIfNeeded
/*!
@const kSCValNetVPNOnDemandRuleActionParametersDomainActionNeverConnect
*/
-extern const CFStringRef kSCValNetVPNOnDemandRuleActionParametersDomainActionNeverConnect __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCValNetVPNOnDemandRuleActionParametersDomainActionNeverConnect API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetVPNOnDemandRuleActionParametersDomainActionNeverConnect kSCValNetVPNOnDemandRuleActionParametersDomainActionNeverConnect
/*!
@const kSCValNetVPNOnDemandRuleInterfaceTypeMatchCellular
*/
-extern const CFStringRef kSCValNetVPNOnDemandRuleInterfaceTypeMatchCellular __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCValNetVPNOnDemandRuleInterfaceTypeMatchCellular SPI_AVAILABLE(macos(9.0), ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetVPNOnDemandRuleInterfaceTypeMatchCellular kSCValNetVPNOnDemandRuleInterfaceTypeMatchCellular
/*!
@const kSCValNetVPNOnDemandRuleInterfaceTypeMatchEthernet
*/
-extern const CFStringRef kSCValNetVPNOnDemandRuleInterfaceTypeMatchEthernet __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCValNetVPNOnDemandRuleInterfaceTypeMatchEthernet API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetVPNOnDemandRuleInterfaceTypeMatchEthernet kSCValNetVPNOnDemandRuleInterfaceTypeMatchEthernet
/*!
@const kSCValNetVPNOnDemandRuleInterfaceTypeMatchWiFi
*/
-extern const CFStringRef kSCValNetVPNOnDemandRuleInterfaceTypeMatchWiFi __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCValNetVPNOnDemandRuleInterfaceTypeMatchWiFi API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetVPNOnDemandRuleInterfaceTypeMatchWiFi kSCValNetVPNOnDemandRuleInterfaceTypeMatchWiFi
/*!
@const kSCValNetVPNPluginCapabilityAuth
*/
-extern const CFStringRef kSCValNetVPNPluginCapabilityAuth __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCValNetVPNPluginCapabilityAuth API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetVPNPluginCapabilityAuth kSCValNetVPNPluginCapabilityAuth
/*!
@const kSCValNetVPNPluginCapabilityConnect
*/
-extern const CFStringRef kSCValNetVPNPluginCapabilityConnect __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);
+extern const CFStringRef kSCValNetVPNPluginCapabilityConnect API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCValNetVPNPluginCapabilityConnect kSCValNetVPNPluginCapabilityConnect
/*!
@const kSCPropSystemComputerNameRegion
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropSystemComputerNameRegion __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropSystemComputerNameRegion API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropSystemComputerNameRegion kSCPropSystemComputerNameRegion
/*!
@const kSCPropSystemHostName
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropSystemHostName __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropSystemHostName API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropSystemHostName kSCPropSystemHostName
/*!
@const kSCPropVirtualNetworkInterfacesBondInterfaces
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropVirtualNetworkInterfacesBondInterfaces __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropVirtualNetworkInterfacesBondInterfaces API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropVirtualNetworkInterfacesBondInterfaces kSCPropVirtualNetworkInterfacesBondInterfaces
/*!
@const kSCPropVirtualNetworkInterfacesBondMode
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropVirtualNetworkInterfacesBondMode __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropVirtualNetworkInterfacesBondMode API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropVirtualNetworkInterfacesBondMode kSCPropVirtualNetworkInterfacesBondMode
/*!
@const kSCPropVirtualNetworkInterfacesBondOptions
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCPropVirtualNetworkInterfacesBondOptions __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropVirtualNetworkInterfacesBondOptions API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropVirtualNetworkInterfacesBondOptions kSCPropVirtualNetworkInterfacesBondOptions
/*!
@const kSCPropVirtualNetworkInterfacesBridgeInterfaces
@discussion Value is a CFArray[CFString]
*/
-extern const CFStringRef kSCPropVirtualNetworkInterfacesBridgeInterfaces __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCPropVirtualNetworkInterfacesBridgeInterfaces API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropVirtualNetworkInterfacesBridgeInterfaces kSCPropVirtualNetworkInterfacesBridgeInterfaces
/*!
@const kSCPropVirtualNetworkInterfacesBridgeOptions
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCPropVirtualNetworkInterfacesBridgeOptions __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);
+extern const CFStringRef kSCPropVirtualNetworkInterfacesBridgeOptions API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropVirtualNetworkInterfacesBridgeOptions kSCPropVirtualNetworkInterfacesBridgeOptions
/*!
@const kSCPropVirtualNetworkInterfacesVLANInterface
@discussion Value is a CFString
*/
-extern const CFStringRef kSCPropVirtualNetworkInterfacesVLANInterface __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropVirtualNetworkInterfacesVLANInterface API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropVirtualNetworkInterfacesVLANInterface kSCPropVirtualNetworkInterfacesVLANInterface
/*!
@const kSCPropVirtualNetworkInterfacesVLANTag
@discussion Value is a CFNumber
*/
-extern const CFStringRef kSCPropVirtualNetworkInterfacesVLANTag __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropVirtualNetworkInterfacesVLANTag API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropVirtualNetworkInterfacesVLANTag kSCPropVirtualNetworkInterfacesVLANTag
/*!
@const kSCPropVirtualNetworkInterfacesVLANOptions
@discussion Value is a CFDictionary
*/
-extern const CFStringRef kSCPropVirtualNetworkInterfacesVLANOptions __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);
+extern const CFStringRef kSCPropVirtualNetworkInterfacesVLANOptions API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));
#define kSCPropVirtualNetworkInterfacesVLANOptions kSCPropVirtualNetworkInterfacesVLANOptions
/*
- * Copyright (c) 2000-2004, 2006, 2008-2010, 2012, 2015 Apple Inc. All rights reserved.
+ * Copyright (c) 2000-2004, 2006, 2008-2010, 2012, 2015, 2018 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,
* 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 _SYSTEMCONFIGURATION_H
#define _SYSTEMCONFIGURATION_H
-#include <Availability.h>
+#include <os/availability.h>
#include <sys/cdefs.h>
#include <CoreFoundation/CoreFoundation.h>
/*
* SCNetworkConnection error codes
*/
- kSCStatusConnectionNoService = 5001, /* Network service for connection not available
- __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_2_0)
- */
- kSCStatusConnectionIgnore = 5002, /* Network connection information not available at this time
- __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_6_0)
- */
+ kSCStatusConnectionNoService
+ API_AVAILABLE(macos(6.0))
+ SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0))
+ = 5001, /* Network service for connection not available */
+ kSCStatusConnectionIgnore
+ API_AVAILABLE(macos(9.0))
+ SPI_AVAILABLE(ios(6.0), tvos(9.0), watchos(1.0), bridgeos(1.0))
+ = 5002, /* Network connection information not available at this time */
};
@discussion CFError domain associated with errors reported by
the SystemConfiguration.framework.
*/
-extern const CFStringRef kCFErrorDomainSystemConfiguration __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+extern const CFStringRef kCFErrorDomainSystemConfiguration API_AVAILABLE(macos(10.5), ios(2.0));
__BEGIN_DECLS
as the result of calling a System Configuration framework API.
@result Returns the last error encountered.
*/
-CFErrorRef SCCopyLastError (void) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
+CFErrorRef SCCopyLastError (void) API_AVAILABLE(macos(10.5), ios(2.0));
/*!
@function SCError
as the result of calling a System Configuration framework API.
@result Returns the last error encountered.
*/
-int SCError (void) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0);
+int SCError (void) API_AVAILABLE(macos(10.1), ios(2.0));
/*!
@function SCErrorString
@param status The SCDynamicStoreStatus to be returned.
@result Returns a pointer to the error message string.
*/
-const char * SCErrorString (int status) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0);
+const char * SCErrorString (int status) API_AVAILABLE(macos(10.1), ios(2.0));
__END_DECLS
CF_ASSUME_NONNULL_END
CF_IMPLICIT_BRIDGING_DISABLED
-#endif /* _SYSTEMCONFIGURATION_H */
+#endif /* _SYSTEMCONFIGURATION_H */
--- /dev/null
+/*
+ * Copyright (c) 2018 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 _SYSTEMCONFIGURATIONINTERNAL_H
+#define _SYSTEMCONFIGURATIONINTERNAL_H
+
+#include <os/availability.h>
+#include <TargetConditionals.h>
+#include <sys/cdefs.h>
+
+#include "SCDynamicStoreInternal.h"
+
+extern const unsigned char * SystemConfigurationVersionString;
+extern const double SystemConfigurationVersionNumber;
+
+#if !TARGET_OS_IPHONE
+extern const CFStringRef kSCEntNetAppleTalk;
+extern const CFStringRef kSCEntNetNetInfo;
+extern const CFStringRef kSCPropNetAppleTalkConfigMethod;
+extern const CFStringRef kSCPropNetAppleTalkDefaultZone;
+extern const CFStringRef kSCPropNetAppleTalkNetworkID;
+extern const CFStringRef kSCPropNetAppleTalkNodeID;
+extern const CFStringRef kSCValNetAppleTalkConfigMethodNode;
+#endif // !TARGET_OS_IPHONE
+
+__BEGIN_DECLS
+
+void
+_SCDPluginExecInit (void);
+
+__END_DECLS
+
+#endif // _SYSTEMCONFIGURATIONINTERNAL_H
/*
- * Copyright (c) 2003-2013, 2015-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2003-2013, 2015-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
/*
- * Copyright (c) 2012-2015 Apple Inc.
+ * Copyright (c) 2012-2015, 2018 Apple Inc.
* All rights reserved.
*/
/*
- * Copyright (c) 2009-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2009-2018 Apple Inc. All rights reserved.
*/
/*
- * Copyright (c) 2009-2011, 2013-2015 Apple Inc. All rights reserved.
+ * Copyright (c) 2009-2011, 2013-2015, 2017, 2018 Apple Inc. All rights reserved.
*/
/*
- * Copyright (c) 2012-2015, 2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2012-2015, 2017, 2018 Apple Inc. All rights reserved.
*/
/*
- * Copyright (c) 2009-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2009-2018 Apple Inc. All rights reserved.
*/
/*
- * Copyright (c) 2009-2011, 2014 Apple Inc. All rights reserved.
+ * Copyright (c) 2009-2011, 2014, 2018 Apple Inc. All rights reserved.
*/
/*
- * Copyright (c) 2009-2013 Apple Inc. All rights reserved.
+ * Copyright (c) 2009-2013, 2018 Apple Inc. All rights reserved.
*/
/*
- * Copyright (c) 2009-2013, 2015 Apple Inc. All rights reserved.
+ * Copyright (c) 2009-2013, 2015, 2018 Apple Inc. All rights reserved.
*/
/*
- * Copyright (c) 2000, 2001, 2003, 2005, 2007, 2013, 2015 Apple Inc. All rights reserved.
+ * Copyright (c) 2000, 2001, 2003, 2005, 2007, 2013, 2015, 2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
/*
* Mach server port name
*/
-#if !TARGET_OS_SIMULATOR
+#if !TARGET_OS_SIMULATOR || TARGET_OS_IOSMAC
#define SCD_SERVER "com.apple.SystemConfiguration.configd"
-#else // !TARGET_OS_SIMULATOR
+#else // !TARGET_OS_SIMULATOR || TARGET_OS_IOSMAC
#define SCD_SERVER_HOST "com.apple.SystemConfiguration.configd"
#define SCD_SERVER "com.apple.SystemConfiguration.configd_sim"
-#endif // !TARGET_OS_SIMULATOR
+#endif // !TARGET_OS_SIMULATOR || TARGET_OS_IOSMAC
/*
* Input arguments: serialized key's, list delimiters, ...
*/
typedef char * xmlDataOut_t;
-#endif /* !_CONFIG_TYPES_H */
+#endif /* !_CONFIG_TYPES_H */
/*
- * Copyright (c) 2002-2008, 2010-2015 Apple Inc. All rights reserved.
+ * Copyright (c) 2002-2008, 2010-2015, 2017 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#define SECURITY_FRAMEWORK_EXTERN(t, s) \
__private_extern__ t \
- _ ## s() \
+ _ ## s(void) \
{ \
static t *dysym = NULL; \
if (!dysym) { \
/*
- * Copyright (c) 2002-2008, 2010-2015 Apple Inc. All rights reserved.
+ * Copyright (c) 2002-2008, 2010-2015, 2017, 2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#ifndef _DY_FRAMEWORK_H
#define _DY_FRAMEWORK_H
-#include <Availability.h>
+#include <os/availability.h>
#include <TargetConditionals.h>
#include <sys/cdefs.h>
#include <mach/mach.h>
#if !TARGET_OS_IPHONE
-CFTypeRef _kSecAttrService();
+CFTypeRef _kSecAttrService(void);
#define kSecAttrService _kSecAttrService()
-CFTypeRef _kSecClass();
+CFTypeRef _kSecClass(void);
#define kSecClass _kSecClass()
-CFTypeRef _kSecClassGenericPassword();
+CFTypeRef _kSecClassGenericPassword(void);
#define kSecClassGenericPassword _kSecClassGenericPassword()
-CFTypeRef _kSecMatchLimit();
+CFTypeRef _kSecMatchLimit(void);
#define kSecMatchLimit _kSecMatchLimit()
-CFTypeRef _kSecMatchLimitAll();
+CFTypeRef _kSecMatchLimitAll(void);
#define kSecMatchLimitAll _kSecMatchLimitAll()
-CFTypeRef _kSecMatchSearchList();
+CFTypeRef _kSecMatchSearchList(void);
#define kSecMatchSearchList _kSecMatchSearchList()
-CFTypeRef _kSecReturnRef();
+CFTypeRef _kSecReturnRef(void);
#define kSecReturnRef _kSecReturnRef()
-CFTypeRef _kSecGuestAttributePid();
+CFTypeRef _kSecGuestAttributePid(void);
#define kSecGuestAttributePid _kSecGuestAttributePid()
-CFTypeRef _kSecCodeInfoIdentifier();
+CFTypeRef _kSecCodeInfoIdentifier(void);
#define kSecCodeInfoIdentifier _kSecCodeInfoIdentifier()
-CFTypeRef _kSecCodeInfoUnique();
+CFTypeRef _kSecCodeInfoUnique(void);
#define kSecCodeInfoUnique _kSecCodeInfoUnique()
OSStatus
#else // TARGET_OS_IPHONE
-CFStringRef _kSecPropertyKeyValue();
+CFStringRef _kSecPropertyKeyValue(void);
#define kSecPropertyKeyValue _kSecPropertyKeyValue()
-CFStringRef _kSecPropertyKeyLabel();
+CFStringRef _kSecPropertyKeyLabel(void);
#define kSecPropertyKeyLabel _kSecPropertyKeyLabel()
CFArrayRef
/*
- * Copyright (c) 2000-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2000-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
char copyright_string[] =
"/*\n"
-" * Copyright (c) 2000-2017 Apple Inc. All rights reserved.\n"
+" * Copyright (c) 2000-2018 Apple Inc. All rights reserved.\n"
" *\n"
" * @APPLE_LICENSE_HEADER_START@\n"
" *\n"
COMMENT,
GROUP,
SC_10_1,
+ SC_10_1_IPHONE_NA,
SC_10_2,
SC_10_3,
SC_10_1_10_4, // deprecated in 10.4
SC_10_4,
SC_10_5,
- SC_10_5_10_7, // deprecated in 10.7
+ SC_10_5_IPHONE_NA,
+ SC_10_5_10_7_IPHONE_NA, // deprecated in 10.7
SC_10_1_10_9, // deprecated in 10.9
SC_10_2_10_9, // deprecated in 10.9
SC_10_2_10_13, // deprecated in 10.13
SC_10_12_IPHONE_10_0_PRIVATE,
SC_10_13_IPHONE_10_0_PRIVATE,
SC_10_13_IPHONE_11_0_PRIVATE,
+ SC_10_14_IPHONE_12_0_PRIVATE,
SC_IPHONE_2_0_PRIVATE,
+ SC_IPHONE_7_0_PRIVATE,
+ SC_IPHONE_8_0_PRIVATE,
COMMENT_DEPRECATED,
GROUP_DEPRECATED,
COMMENT_DEPRECATED_NO_HEADER,
#define CERTIFICATE "Certificate"
#define CGA "CGA"
#define CHAP "CHAP"
+#define CLAT46 "CLAT46"
#define COMM "Comm"
#define COMPATIBLE "Compatible"
#define COMPRESSIONACFIELD "CompressionACField"
#define COMPRESSIONPFIELD "CompressionPField"
#define COMPRESSIONVJ "CompressionVJ"
#define COMPUTERNAME "ComputerName"
+#define COMPLETIONTIME "CompletionTime"
#define CONFIGMETHOD "ConfigMethod"
#define CONFIRMED "Confirmed"
#define CONNECT "Connect"
#define DISCONNECTONWAKE "DisconnectOnWake"
#define DISCONNECTONWAKETIMER "DisconnectOnWakeTimer"
#define DISCONNECTTIME "DisconnectTime"
+#define DISCOVERY "Discovery"
#define DISPLAYTERMINALWINDOW "DisplayTerminalWindow"
#define DNS "DNS"
#define DOMAIN "Domain"
#define PASSIVE "Passive"
#define PASSWORD "Password"
#define PEER "Peer"
+#define PERFORM "Perform"
#define PERSONALITY "Personality"
+#define PLAT "PLAT"
#define PLUGIN "Plugin"
#define PLUGINS "Plugins"
#define POLICY "Policy"
#define PREFERRED "Preferred"
#define PREFIX "Prefix"
#define PREFIXLENGTH "PrefixLength"
+#define PREFIXLIST "PrefixList"
#define PREFS "Prefs"
#define PRIMARYINTERFACE "PrimaryInterface"
#define PRIMARYRANK "PrimaryRank"
#define SPECIFIC "Specific"
#define SPEED "Speed"
#define SSID "SSID"
+#define STARTTIME "StartTime"
#define STATE "State"
#define STATUS "Status"
#define STF "6to4"
{ SC_10_3_10_12_IPHONE_2_0_10_0, NETENT, PPTP, NULL, CFDICTIONARY },
{ SC_10_1, NETENT, PROXIES, NULL, CFDICTIONARY },
{ DEFINE, "#if", "!TARGET_OS_IPHONE", NULL, NULL },
- { SC_10_5, NETENT, SMB, NULL, CFDICTIONARY },
+ { SC_10_5_IPHONE_NA, NETENT, SMB, NULL, CFDICTIONARY },
{ DEFINE, "#endif", "// !TARGET_OS_IPHONE", NULL, NULL },
{ SC_10_3, NETENT, STF, NULL, CFDICTIONARY },
{ COMMENT, "", NULL, NULL, NULL },
{ SC_10_9_IPHONE_7_0_PRIVATE, NETENT, LINKISSUES, NULL, CFDICTIONARY},
{ SC_10_7_IPHONE_5_0_PRIVATE, NETENT, LINKQUALITY, NULL, CFDICTIONARY},
{ SC_10_7_IPHONE_4_0_PRIVATE, NETENT, LOOPBACK, NULL, CFDICTIONARY },
+ { SC_10_14_IPHONE_12_0_PRIVATE, NETENT, NAT64, NULL, CFDICTIONARY },
{ SC_10_13_IPHONE_11_0_PRIVATE, NETENT, NAT64 PREFIX REQUEST, NULL, NULL},
{ SC_10_6_IPHONE_3_0_PRIVATE, NETENT, ONDEMAND, NULL, CFDICTIONARY },
{ SC_10_13_IPHONE_10_0_PRIVATE, NETENT, QOSMARKING POLICY, NULL, CFDICTIONARY },
{ GROUP_PRIVATE, NETPROP IPV4, KEY_PREFIX NETENT IPV4 " Entity Keys", NULL, NULL },
{ SC_10_10_IPHONE_8_0_PRIVATE, NETPROP IPV4, ADDITIONAL ROUTES, NULL, CFARRAY_CFDICTIONARY },
+ { SC_10_14_IPHONE_12_0_PRIVATE, NETPROP IPV4, CLAT46, NULL, CFBOOLEAN },
{ SC_10_7_IPHONE_4_0_PRIVATE, NETPROP IPV4, EXCLUDED ROUTES, NULL, CFARRAY_CFDICTIONARY },
{ SC_10_7_IPHONE_4_0_PRIVATE, NETPROP IPV4, INCLUDED ROUTES, NULL, CFARRAY_CFDICTIONARY },
{ COMMENT_PRIVATE, "", NULL, NULL, NULL },
{ SC_10_12_IPHONE_10_0_PRIVATE, NETPROP IPV6, ENABLE CGA, NULL, CFNUMBER_BOOL },
{ SC_10_7_IPHONE_4_0_PRIVATE, NETPROP IPV6, EXCLUDED ROUTES, NULL, CFARRAY_CFDICTIONARY },
{ SC_10_7_IPHONE_4_0_PRIVATE, NETPROP IPV6, INCLUDED ROUTES, NULL, CFARRAY_CFDICTIONARY },
+ { SC_10_14_IPHONE_12_0_PRIVATE, NETPROP IPV6, PERFORM PLAT DISCOVERY, NULL, CFBOOLEAN },
{ COMMENT_PRIVATE, "", NULL, NULL, NULL },
{ COMMENT_PRIVATE,
"--- "
{ SC_10_3, NETVAL L2TP TRANSPORT, IPSEC, NULL, NULL },
{ COMMENT, "", NULL, NULL, NULL },
+ { GROUP_PRIVATE, NETPROP LINK, KEY_PREFIX NETENT NAT64 " Entity Keys", NULL, NULL },
+
+ { SC_10_14_IPHONE_12_0_PRIVATE, NETPROP NAT64, PREFIXLIST, NULL, CFARRAY_CFSTRING },
+ { SC_10_14_IPHONE_12_0_PRIVATE, NETPROP NAT64, PLAT DISCOVERY STARTTIME, NULL, CFDATE },
+ { SC_10_14_IPHONE_12_0_PRIVATE, NETPROP NAT64, PLAT DISCOVERY COMPLETIONTIME, NULL, CFDATE },
+ { COMMENT_PRIVATE, "", NULL, NULL, NULL },
+
{ GROUP, NETPROP PROXIES, KEY_PREFIX NETENT PROXIES " Entity Keys", NULL, NULL },
{ SC_10_1, NETPROP PROXIES, EXCEPTIONSLIST, NULL, CFARRAY_CFSTRING },
{ GROUP, NETPROP SMB, KEY_PREFIX NETENT SMB " Entity Keys", NULL, NULL },
{ DEFINE, "#if", "!TARGET_OS_IPHONE", NULL, NULL },
- { SC_10_5, NETPROP SMB, NETBIOS NAME, NULL, CFSTRING },
- { SC_10_5, NETPROP SMB, NETBIOS NODE TYPE, NULL, CFSTRING },
- { SC_10_5_10_7, NETPROP SMB, NETBIOS SCOPE, NULL, CFSTRING },
- { SC_10_5, NETPROP SMB, WINS ADDRESSES, NULL, CFARRAY_CFSTRING },
- { SC_10_5, NETPROP SMB, WORKGROUP, NULL, CFSTRING },
+ { SC_10_5_IPHONE_NA, NETPROP SMB, NETBIOS NAME, NULL, CFSTRING },
+ { SC_10_5_IPHONE_NA, NETPROP SMB, NETBIOS NODE TYPE, NULL, CFSTRING },
+ { SC_10_5_10_7_IPHONE_NA, NETPROP SMB, NETBIOS SCOPE, NULL, CFSTRING },
+ { SC_10_5_IPHONE_NA, NETPROP SMB, WINS ADDRESSES, NULL, CFARRAY_CFSTRING },
+ { SC_10_5_IPHONE_NA, NETPROP SMB, WORKGROUP, NULL, CFSTRING },
{ COMMENT, "", NULL, NULL, NULL },
{ COMMENT, "--- " KEY_PREFIX NETPROP SMB NETBIOS NODE TYPE " values ---", NULL, NULL, NULL },
- { SC_10_5, NETVAL SMB NETBIOS NODE TYPE, BROADCAST, NULL },
- { SC_10_5, NETVAL SMB NETBIOS NODE TYPE, PEER, NULL },
- { SC_10_5, NETVAL SMB NETBIOS NODE TYPE, MIXED, NULL },
- { SC_10_5, NETVAL SMB NETBIOS NODE TYPE, HYBRID, NULL },
+ { SC_10_5_IPHONE_NA, NETVAL SMB NETBIOS NODE TYPE, BROADCAST, NULL },
+ { SC_10_5_IPHONE_NA, NETVAL SMB NETBIOS NODE TYPE, PEER, NULL },
+ { SC_10_5_IPHONE_NA, NETVAL SMB NETBIOS NODE TYPE, MIXED, NULL },
+ { SC_10_5_IPHONE_NA, NETVAL SMB NETBIOS NODE TYPE, HYBRID, NULL },
{ DEFINE, "#endif", "// !TARGET_OS_IPHONE", NULL, NULL },
{ COMMENT, "", NULL, NULL, NULL },
{ GROUP, USERSENT CONSOLEUSER, KEY_PREFIX COMP USERS " Entity Keys", NULL, NULL },
{ DEFINE, "#if", "!TARGET_OS_IPHONE", NULL, NULL },
- { SC_10_1, USERSENT, CONSOLEUSER, NULL, NULL },
+ { SC_10_1_IPHONE_NA, USERSENT, CONSOLEUSER, NULL, NULL },
{ DEFINE, "#endif", "// !TARGET_OS_IPHONE", NULL, NULL },
{ COMMENT, "", NULL, NULL, NULL },
printf("extern const CFStringRef %-49s", kbuf);
switch (def->control) {
case SC_10_1:
- printf(" __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_2_0/*SPI*/);\n");
+ printf(" API_AVAILABLE(macos(10.1)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));\n");
+ break;
+ case SC_10_1_IPHONE_NA:
+ printf(" API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);\n");
break;
case SC_10_2:
- printf(" __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_2_0/*SPI*/);\n");
+ printf(" API_AVAILABLE(macos(10.2)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));\n");
break;
case SC_10_3:
- printf(" __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_2_0/*SPI*/);\n");
+ printf(" API_AVAILABLE(macos(10.3)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));\n");
break;
case SC_10_1_10_4:
- printf(" __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_4,__IPHONE_NA,__IPHONE_NA);\n");
+ printf(" API_DEPRECATED(\"No longer supported\", macos(10.1,10.4)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);\n");
break;
case SC_10_4:
- printf(" __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0/*SPI*/);\n");
+ printf(" API_AVAILABLE(macos(10.4)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));\n");
break;
case SC_10_5:
- printf(" __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);\n");
+ printf(" API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));\n");
+ break;
+ case SC_10_5_IPHONE_NA:
+ printf(" API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);\n");
break;
- case SC_10_5_10_7:
- printf(" __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5,__MAC_10_7,__IPHONE_NA,__IPHONE_NA);\n");
+ case SC_10_5_10_7_IPHONE_NA:
+ printf(" API_DEPRECATED(\"No longer supported\", macos(10.5,10.7)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);\n");
break;
case SC_10_5_PRIVATE:
- printf(" __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0/*SPI*/);\n");
+ printf(" API_AVAILABLE(macos(10.5)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));\n");
break;
case SC_10_1_10_9:
- printf(" __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_9,__IPHONE_2_0/*SPI*/,__IPHONE_FUTURE/*SPI*/);\n");
+ printf(" API_DEPRECATED(\"No longer supported\", macos(10.1,10.9)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));\n");
break;
case SC_10_2_10_9:
- printf(" __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2,__MAC_10_9,__IPHONE_2_0/*SPI*/,__IPHONE_FUTURE/*SPI*/);\n");
+ printf(" API_DEPRECATED(\"No longer supported\", macos(10.2,10.9)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));\n");
break;
case SC_10_2_10_13:
- printf(" __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2,__MAC_10_13,__IPHONE_2_0/*SPI*/,__IPHONE_FUTURE/*SPI*/);\n");
+ printf(" API_DEPRECATED(\"No longer supported\", macos(10.2,10.13)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));\n");
break;
case SC_10_3_10_9:
- printf(" __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3,__MAC_10_9,__IPHONE_2_0/*SPI*/,__IPHONE_FUTURE/*SPI*/);\n");
+ printf(" API_DEPRECATED(\"No longer supported\", macos(10.3,10.9)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));\n");
break;
case SC_10_4_10_9:
- printf(" __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4,__MAC_10_9,__IPHONE_2_0/*SPI*/,__IPHONE_FUTURE/*SPI*/);\n");
+ printf(" API_DEPRECATED(\"No longer supported\", macos(10.4,10.9)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));\n");
break;
case SC_10_2_10_12_IPHONE_2_0_10_0:
- printf(" __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2,__MAC_10_12,__IPHONE_2_0/*SPI*/,__IPHONE_10_0/*SPI*/);\n");
+ printf(" "
+ " API_DEPRECATED(\"No longer supported\", macos(10.2,10.12))"
+ " SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));\n"); // Note: really want SPI_DEPRECATED
break;
case SC_10_3_10_12_IPHONE_2_0_10_0:
- printf(" __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3,__MAC_10_12,__IPHONE_2_0/*SPI*/,__IPHONE_10_0/*SPI*/);\n");
+ printf(" "
+ " API_DEPRECATED(\"No longer supported\", macos(10.3,10.12))"
+ " SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));\n"); // Note: really want SPI_DEPRECATED
break;
case SC_10_6_IPHONE_2_0:
case SC_10_6_IPHONE_2_0_PRIVATE:
- printf(" __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_2_0/*SPI*/);\n");
+ printf(" API_AVAILABLE(macos(10.6)) SPI_AVAILABLE(ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));\n");
break;
case SC_10_6_IPHONE_3_0:
case SC_10_6_IPHONE_3_0_PRIVATE:
- printf(" __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_3_0/*SPI*/);\n");
+ printf(" API_AVAILABLE(macos(10.6)) SPI_AVAILABLE(ios(3.0), tvos(9.0), watchos(1.0), bridgeos(1.0));\n");
break;
case SC_10_7_IPHONE_4_0:
case SC_10_7_IPHONE_4_0_PRIVATE:
- printf(" __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0/*SPI*/);\n");
+ printf(" API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(4.0), tvos(9.0), watchos(1.0), bridgeos(1.0));\n");
break;
case SC_10_7_IPHONE_5_0_PRIVATE:
- printf(" __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0/*SPI*/);\n");
+ printf(" API_AVAILABLE(macos(10.7)) SPI_AVAILABLE(ios(5.0), tvos(9.0), watchos(1.0), bridgeos(1.0));\n");
break;
case SC_10_8_IPHONE_6_0_PRIVATE:
- printf(" __OSX_AVAILABLE_STARTING(__MAC_10_8,__IPHONE_6_0/*SPI*/);\n");
+ printf(" API_AVAILABLE(macos(10.8)) SPI_AVAILABLE(ios(6.0), tvos(9.0), watchos(1.0), bridgeos(1.0));\n");
break;
case SC_10_9_IPHONE_6_0_PRIVATE:
- printf(" __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_6_0/*SPI*/);\n");
+ printf(" API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(6.0), tvos(9.0), watchos(1.0), bridgeos(1.0));\n");
break;
case SC_10_9_IPHONE_7_0_PRIVATE:
- printf(" __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0/*SPI*/);\n");
+ printf(" API_AVAILABLE(macos(10.9)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));\n");
break;
case SC_10_10_IPHONE_7_0_PRIVATE:
- printf(" __OSX_AVAILABLE_STARTING(__MAC_10_10,__IPHONE_7_0/*SPI*/);\n");
+ printf(" API_AVAILABLE(macos(10.10)) SPI_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));\n");
break;
case SC_10_10_IPHONE_8_0_PRIVATE:
- printf(" __OSX_AVAILABLE_STARTING(__MAC_10_10,__IPHONE_8_0/*SPI*/);\n");
+ printf(" API_AVAILABLE(macos(10.10)) SPI_AVAILABLE(ios(8.0), tvos(9.0), watchos(1.0), bridgeos(1.0));\n");
break;
case SC_10_11_IPHONE_9_0_PRIVATE:
- printf(" __OSX_AVAILABLE_STARTING(__MAC_10_11,__IPHONE_9_0/*SPI*/);\n");
+ printf(" API_AVAILABLE(macos(10.11)) SPI_AVAILABLE(ios(9.0), tvos(9.0), watchos(2.0), bridgeos(2.0));\n");
break;
case SC_10_12_IPHONE_10_0_PRIVATE:
- printf(" __OSX_AVAILABLE_STARTING(__MAC_10_12,__IPHONE_10_0/*SPI*/);\n");
+ printf(" API_AVAILABLE(macos(10.12)) SPI_AVAILABLE(ios(10.0), tvos(10.0), watchos(3.0), bridgeos(3.0));\n");
break;
case SC_10_13_IPHONE_10_0_PRIVATE:
- printf(" __OSX_AVAILABLE_STARTING(__MAC_10_13,__IPHONE_10_0/*SPI*/);\n");
+ printf(" API_AVAILABLE(macos(10.13)) SPI_AVAILABLE(ios(10.0), tvos(10.0), watchos(3.0), bridgeos(3.0));\n");
break;
case SC_10_13_IPHONE_11_0_PRIVATE:
- printf(" __OSX_AVAILABLE_STARTING(__MAC_10_13,__IPHONE_11_0/*SPI*/);\n");
+ printf(" API_AVAILABLE(macos(10.13)) SPI_AVAILABLE(ios(11.0), tvos(11.0), watchos(4.0), bridgeos(4.0));\n");
+ break;
+ case SC_10_14_IPHONE_12_0_PRIVATE:
+ printf(" API_AVAILABLE(macos(10.14)) SPI_AVAILABLE(ios(12.0), tvos(12.0), watchos(5.0), bridgeos(5.0));\n");
break;
case SC_IPHONE_2_0_PRIVATE:
- printf(" __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_2_0/*SPI*/);\n");
+ printf(" SPI_AVAILABLE(macos(10.6), ios(2.0), tvos(9.0), watchos(1.0), bridgeos(1.0));\n");
+ break;
+ case SC_IPHONE_7_0_PRIVATE:
+ printf(" SPI_AVAILABLE(macos(9.0), ios(7.0), tvos(9.0), watchos(1.0), bridgeos(1.0));\n");
+ break;
+ case SC_IPHONE_8_0_PRIVATE:
+ printf(" SPI_AVAILABLE(macos(10.0), ios(8.0), tvos(9.0), watchos(1.0), bridgeos(1.0));\n");
break;
default:
printf("\n");
case SC_10_12_IPHONE_10_0_PRIVATE:
case SC_10_13_IPHONE_10_0_PRIVATE:
case SC_10_13_IPHONE_11_0_PRIVATE:
+ case SC_10_14_IPHONE_12_0_PRIVATE:
case SC_IPHONE_2_0_PRIVATE:
+ case SC_IPHONE_7_0_PRIVATE:
+ case SC_IPHONE_8_0_PRIVATE:
// don't report private definitions
break;
default:
case SC_10_12_IPHONE_10_0_PRIVATE:
case SC_10_13_IPHONE_10_0_PRIVATE:
case SC_10_13_IPHONE_11_0_PRIVATE:
+ case SC_10_14_IPHONE_12_0_PRIVATE:
case SC_IPHONE_2_0_PRIVATE:
+ case SC_IPHONE_7_0_PRIVATE:
+ case SC_IPHONE_8_0_PRIVATE:
print_comment(&names[i]);
break;
default:
case SC_10_12_IPHONE_10_0_PRIVATE:
case SC_10_13_IPHONE_10_0_PRIVATE:
case SC_10_13_IPHONE_11_0_PRIVATE:
+ case SC_10_14_IPHONE_12_0_PRIVATE:
case SC_IPHONE_2_0_PRIVATE:
+ case SC_IPHONE_7_0_PRIVATE:
+ case SC_IPHONE_8_0_PRIVATE:
// don't report private definitions
break;
default:
case SC_10_12_IPHONE_10_0_PRIVATE:
case SC_10_13_IPHONE_10_0_PRIVATE:
case SC_10_13_IPHONE_11_0_PRIVATE:
+ case SC_10_14_IPHONE_12_0_PRIVATE:
case SC_IPHONE_2_0_PRIVATE:
+ case SC_IPHONE_7_0_PRIVATE:
+ case SC_IPHONE_8_0_PRIVATE:
print_headerdoc(&names[i]);
break;
default:
printf(" */\n\n\n");
printf("#ifndef\t_SCSCHEMADEFINITIONS_H\n");
- printf("#ifdef\tUSE_SYSTEMCONFIGURATION_PRIVATE_HEADERS\n");
- printf("#include <SystemConfiguration/_SCSchemaDefinitions.h>\n");
- printf("#else\t/* USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS */\n");
printf("#define\t_SCSCHEMADEFINITIONS_H\n");
printf("\n");
- printf("#include <Availability.h>\n");
+ printf("#include <os/availability.h>\n");
printf("#include <TargetConditionals.h>\n");
printf("#include <CoreFoundation/CFString.h>\n");
printf("\n");
printf(" *\t@header SCSchemaDefinitions\n");
printf(" */\n\n");
-
printf("\n");
printf("CF_ASSUME_NONNULL_BEGIN\n");
printf("CF_ASSUME_NONNULL_END");
printf("\n\n");
- printf("#endif\t/* USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS */\n");
printf("#endif\t/* _SCSCHEMADEFINITIONS_H */\n");
}
else if (strcmp(type, "private") == 0) {
printf(" * DO NOT EDIT!\n");
printf(" */\n");
printf("\n");
- printf("#include <Availability.h>\n");
+ printf("#include <os/availability.h>\n");
printf("#include <TargetConditionals.h>\n");
printf("#include <CoreFoundation/CFString.h>\n");
printf("\n");
/*
- * Copyright (c) 2005-2008, 2010, 2011, 2013, 2015, 2016 Apple Inc. All rights reserved.
+ * Copyright (c) 2005-2008, 2010, 2011, 2013, 2015, 2016, 2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
}
+__private_extern__
Boolean
_SCHelperExec(mach_port_t port, uint32_t msgID, CFDataRef data, uint32_t *status, CFDataRef *reply)
{
/*
- * Copyright (c) 2005-2007, 2010, 2011 Apple Inc. All rights reserved.
+ * Copyright (c) 2005-2007, 2010, 2011, 2018 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,
* 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@
*/
#define _SCHELPER_CLIENT_H
#include <sys/cdefs.h>
-#include <Availability.h>
+#include <os/availability.h>
#include <TargetConditionals.h>
#include <CoreFoundation/CoreFoundation.h>
__END_DECLS
-#endif /* _SCHELPER_CLIENT_H */
+#endif /* _SCHELPER_CLIENT_H */
/*
- * Copyright (c) 2005-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2005-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
static os_log_t
-__log_SCHelper()
+__log_SCHelper(void)
{
static os_log_t log = NULL;
if (CFDataGetLength(authorizationData) == sizeof(extForm.bytes)) {
OSStatus status;
- bcopy(CFDataGetBytePtr(authorizationData), extForm.bytes, sizeof(extForm.bytes));
+ memcpy(extForm.bytes, CFDataGetBytePtr(authorizationData), sizeof(extForm.bytes));
status = AuthorizationCreateFromExternalForm(&extForm,
&sessionPrivate->authorization);
if (status != errAuthorizationSuccess) {
CFDictionaryRef authorizationDict;
#if !TARGET_OS_IPHONE
CFDataRef authorizationData = NULL;
-#endif
+#endif // !TARGET_OS_IPHONE
Boolean ok = FALSE;
if (!_SCUnserialize((CFPropertyListRef*)&authorizationDict, data, NULL, 0)) {
if (authorizationData != NULL && isA_CFData(authorizationData)) {
ok = __SCHelperSessionSetAuthorization(session, authorizationData);
} else
-#endif
+#endif // !TARGET_OS_IPHONE
{
CFStringRef authorizationInfo;
pthread_attr_init(&tattr);
pthread_attr_setscope(&tattr, PTHREAD_SCOPE_SYSTEM);
pthread_attr_setdetachstate(&tattr, PTHREAD_CREATE_DETACHED);
- pthread_attr_setstacksize(&tattr, 96 * 1024); // each thread gets a 96K stack
+// pthread_attr_setstacksize(&tattr, 96 * 1024); // each thread gets a 96K stack
pthread_create(&tid, &tattr, newHelper, (void *)session);
pthread_attr_destroy(&tattr);
--- /dev/null
+#!/bin/sh
+
+if [ -z "${INSTALL_DIR}" -o -z "${PRIVATE_HEADERS_FOLDER_PATH}" ]; then
+ echo "Cannot update headers, missing ENV vars"
+ exit 1
+fi
+
+SPI_BASE="${INSTALL_DIR}/${PRIVATE_HEADERS_FOLDER_PATH}"
+
+for H in \
+ DHCPClientPreferences.h \
+ SCDynamicStore.h \
+ SCDynamicStoreCopyDHCPInfo.h \
+ SCDynamicStoreCopySpecific.h \
+ SCDynamicStoreKey.h \
+ SCNetworkConfiguration.h \
+ SCNetworkConnection.h \
+ SCPreferences.h \
+ SCPreferencesPath.h \
+ SCPreferencesSetSpecific.h \
+ SCSchemaDefinitions.h \
+ SystemConfiguration.h \
+
+do
+ HACK=$(echo "_DO_NOT_INCLUDE_${H}" | tr '[:lower:]' '[:upper:]' | sed -e 's/\./_/')
+ cat <<_END_OF_INPUT > "${SPI_BASE}/_${H}"
+#ifndef ${HACK}
+#define ${HACK}
+
+/*
+ * WARNING WARNING WARNING WARNING WARNING
+ *
+ * This is a PRIVATE/INTERNAL header file that is on the to-be-removed soon
+ * list. Please update your project to use :
+ * #include <SystemConfiguration/${H}>
+ * or :
+ * #include <SystemConfiguration/SystemConfiguration.h>
+ *
+ * WARNING WARNING WARNING WARNING WARNING
+ */
+#ifndef NO_TAPI_WARNINGS
+#warning "Please #include <SystemConfiguration/${H}>, NOT <SystemConfiguration/_${H}>. See rdar://41937689 for details"
+#endif // NO_TAPI_WARNINGS
+
+#endif // ${HACK}
+
+#include <SystemConfiguration/${H}>
+_END_OF_INPUT
+done
+
+exit
/*
- * Copyright (c) 2012, 2013, 2015-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2012, 2013, 2015-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
/*
- * Copyright (c) 2012-2014, 2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2012-2014, 2017, 2018 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,
* 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 _SCPREFS_OBSERVER_H
#define _SCPREFS_OBSERVER_H
-#include <Availability.h>
+#include <os/availability.h>
#include <TargetConditionals.h>
#include <sys/cdefs.h>
#include <dispatch/dispatch.h>
__END_DECLS
-#endif /* _SCPREFS_OBSERVER_H */
+#endif /* _SCPREFS_OBSERVER_H */
+++ /dev/null
-#!/usr/bin/perl
-
-if (!$ENV{"INSTALL_DIR"} or !$ENV{"PUBLIC_HEADERS_FOLDER_PATH"} or !$ENV{"PRIVATE_HEADERS_FOLDER_PATH"}) {
- die "Cannot update headers, missing ENV vars\n";
-}
-
-$DO_SPLIT = ($#ARGV >= 0 and $ARGV[0] eq "split");
-
-$USING_PRIVATE_SYSTEMCONFIGURATION_FRAMEWORK = $ENV{"USING_PRIVATE_SYSTEMCONFIGURATION_FRAMEWORK"} eq "YES";
-
-$API_BASE = $ENV{"INSTALL_DIR"} . "/" . $ENV{"PUBLIC_HEADERS_FOLDER_PATH"};
-$SPI_BASE = $ENV{"INSTALL_DIR"} . "/" . $ENV{"PRIVATE_HEADERS_FOLDER_PATH"};
-
-sub clean_INC {
- my ($inc) = @_;
-
- $inc =~ s/#ifdef\s+USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS\s*.*?\n#include\s+<SystemConfiguration\/.*?>.*?\n#else.*?\n//;
- $inc =~ s/#endif\s+.*?USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS.*?\n//;
-
- return $inc;
-}
-
-sub clean_API {
- my ($api) = @_;
- my ($api_new);
-
- $api_new = $DO_SPLIT ? $api : clean_INC($api);
- $api_new =~ s/(__MAC)_\w+\/\*SPI\*\//\1_NA/g;
- $api_new =~ s/#define\t__AVAILABILITY_INTERNAL__.*FUTURE.*\/\*SPI\*\/\n//;
- $api_new =~ s/(__IPHONE)_\w+\/\*SPI\*\//\1_NA/g;
-
- return $api_new;
-}
-
-sub clean_SPI {
- my ($spi) = @_;
- my ($spi_new);
-
- $spi_new = clean_INC($spi);
- $spi_new =~ s/(__MAC_\w+)\/\*SPI\*\//\1/g;
- $spi_new =~ s/(#define\t__AVAILABILITY_INTERNAL__.*FUTURE.*)\/\*SPI\*\//\1/;
- $spi_new =~ s/(__IPHONE_\w+)\/\*SPI\*\//\1/g;
-
- return $spi_new;
-}
-
-sub create_STUB {
- my ($api_header) = @_;
- my ($stub_new);
-
- $stub_new = "
-#warning \"Please #include <SystemConfiguration/PUBLIC.h> instead of this file directly.\"
-#include <SystemConfiguration/PUBLIC.h>
-";
- $stub_new =~ s/PUBLIC.h/$api_header/g;
-
- return $stub_new;
-}
-
-#
-# Update .../PrivateHeaders
-#
-
-opendir(HEADERS, $SPI_BASE);
-@headers = readdir(HEADERS);
-closedir(HEADERS);
-
-undef $/;
-for (@headers) {
- next if ($_ eq '.');
- next if ($_ eq '..');
-
- $spi_header = $_;
- $spi_path = $SPI_BASE . "/" . $spi_header;
- next if (! -f $spi_path);
-
- open(SPI, "<", $spi_path);
- $spi = <SPI>;
- close(SPI);
-
- $spi_new = clean_SPI($spi);
- if ($spi ne $spi_new) {
- printf "cleaning .../PrivateHeaders/%s\n", $spi_header;
- open(SPI, ">", $spi_path);
- print SPI $spi_new;
- close(SPI);
- }
-}
-$/ = "\n";
-
-#
-# Update .../Headers
-#
-
-opendir(HEADERS, $API_BASE);
-@headers = readdir(HEADERS);
-closedir(HEADERS);
-
-undef $/;
-for (@headers) {
- next if ($_ eq '.');
- next if ($_ eq '..');
-
- $api_header = $_;
- $api_path = $API_BASE . "/" . $api_header;
- next if (! -f $api_path);
-
- open(API, "<", $api_path);
- $api = <API>;
- close(API);
-
- $api_new = clean_API($api);
- next if ($api eq $api_new); # if no tweaks needed
-
- if (!$USING_PRIVATE_SYSTEMCONFIGURATION_FRAMEWORK) {
- printf "cleaning .../Headers/%s\n", $api_header;
- open(API, ">", $api_path);
- print API $api_new;
- close(API);
-
- if ($DO_SPLIT) {
- $spi_new = clean_SPI($api);
- if ($api_new ne $spi_new) {
- if ((($spi_header) = ($api =~ /#ifdef\s+USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS\s*.*?\n#include\s+<SystemConfiguration\/(.*?\.h)>\s*.*?\n/))) {
- if ($api_header eq $spi_header) {
- die "API & SPI header not unique: $api_header\n";
- }
- } else {
- die "Header missing #ifdef/#else/#endif: $api_header\n";
-# $spi_header = $api_header;
-# $spi_header =~ s/\.h$/PRIVATE.h/;
- }
-
- printf " adding .../PrivateHeaders/%s\n", $spi_header;
- $spi_path = $SPI_BASE . "/" . $spi_header;
- open(SPI, ">", $spi_path);
- print SPI $spi_new;
- close(SPI);
- }
- }
- } else {
- $spi_new = clean_SPI($api);
- if ($api_new ne $spi_new) {
- if ((($stub_header) = ($api =~ /#ifdef\s+USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS\s*.*?\n#include\s+<SystemConfiguration\/(.*?\.h)>\s*.*?\n/))) {
- if ($api_header eq $stub_header) {
- die "API & STUB header not unique: $api_header\n";
- }
- } else {
- die "Header missing #ifdef/#else/#endif: $api_header\n";
- }
-
- printf "updating .../Headers/%s\n", $api_header;
- open(API, ">", $api_path);
- print API $spi_new;
- close(API);
-
- printf " adding .../PrivateHeaders/%s (stub)\n", $stub_header;
- $stub_path = $SPI_BASE . "/" . $stub_header;
- $stub_new = create_STUB($api_header);
- open(STUB, ">", $stub_path);
- print STUB $stub_new;
- close(STUB);
- }
- }
-}
-$/ = "\n";
-
-exit 0;
/*
- * Copyright (c) 2015, 2016 Apple Inc. All rights reserved.
+ * Copyright (c) 2015, 2016, 2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#define kConfigAgentTypeProxy "ProxyAgent"
#define kConfigAgentTypeDNS "DNSAgent"
-/*
+/*
Returns true for agent with type DNSAgent and domain SystemConfig
*/
boolean_t
-is_config_agent_type_dns (const struct netagent *agent) __OSX_AVAILABLE_STARTING(__MAC_10_12, __IPHONE_10_0);
+is_config_agent_type_dns (const struct netagent *agent) API_AVAILABLE(macos(10.12), ios(10.0));
/*
Returns true for agent with type ProxyAgent and domain SystemConfig
*/
boolean_t
-is_config_agent_type_proxy (const struct netagent *agent) __OSX_AVAILABLE_STARTING(__MAC_10_12, __IPHONE_10_0);
+is_config_agent_type_proxy (const struct netagent *agent) API_AVAILABLE(macos(10.12), ios(10.0));
/*
Returns xpc_object_t corresponding to the raw DNSAgent data
NULL if the agent is NOT a DNSAgent
*/
xpc_object_t
-config_agent_copy_dns_information (const struct netagent *agentStruct) __OSX_AVAILABLE_STARTING(__MAC_10_12, __IPHONE_10_0);
+config_agent_copy_dns_information (const struct netagent *agentStruct) API_AVAILABLE(macos(10.12), ios(10.0));
/*
Returns xpc_object_t (XPC_TYPE_ARRAY) corresponding to the DNS nameservers
NULL if the agent is NOT a DNSAgent
*/
xpc_object_t
-config_agent_get_dns_nameservers (xpc_object_t resolver) __OSX_AVAILABLE_STARTING(__MAC_10_12, __IPHONE_10_0);
+config_agent_get_dns_nameservers (xpc_object_t resolver) API_AVAILABLE(macos(10.12), ios(10.0));
/*
Returns xpc_object_t (XPC_TYPE_ARRAY) corresponding to the DNS search domains
NULL if the agent is NOT a DNSAgent
*/
xpc_object_t
-config_agent_get_dns_searchdomains (xpc_object_t resolver) __OSX_AVAILABLE_STARTING(__MAC_10_12, __IPHONE_10_0);
+config_agent_get_dns_searchdomains (xpc_object_t resolver) API_AVAILABLE(macos(10.12), ios(10.0));
/*
Frees the xpc_object_t returned by config_agent_copy_dns_information()
*/
void
-config_agent_free_dns_information (xpc_object_t resolver) __OSX_AVAILABLE_STARTING(__MAC_10_12, __IPHONE_10_0);
+config_agent_free_dns_information (xpc_object_t resolver) API_AVAILABLE(macos(10.12), ios(10.0));
/*
Returns xpc_object_t corresponding to the raw ProxyAgent data
NULL if the agent is NOT a ProxyAgent
*/
xpc_object_t
-config_agent_copy_proxy_information (const struct netagent *agentStruct) __OSX_AVAILABLE_STARTING(__MAC_10_12, __IPHONE_10_0);
+config_agent_copy_proxy_information (const struct netagent *agentStruct) API_AVAILABLE(macos(10.12), ios(10.0));
/*
- Updates the proxy config with PAC, if applicable. The proxyConfig MUST be
+ Updates the proxy config with PAC, if applicable. The proxyConfig MUST be
of type XPC_TYPE_ARRAY containing a XPC_TYPE_DICTIONARY. This format is
returned by config_agent_copy_proxy_information()
-
+
Returns xpc_object_t to be freed by the caller.
NULL if the the provided configuration does not need any update.
*/
xpc_object_t
-config_agent_update_proxy_information (xpc_object_t proxyConfig) __OSX_AVAILABLE_STARTING(__MAC_10_12, __IPHONE_10_0);
+config_agent_update_proxy_information (xpc_object_t proxyConfig) API_AVAILABLE(macos(10.12), ios(10.0));
/*
Frees the xpc_object_t returned by config_agent_copy_proxy_information()
*/
void
-config_agent_free_proxy_information (xpc_object_t proxyConfig) __OSX_AVAILABLE_STARTING(__MAC_10_12, __IPHONE_10_0);
+config_agent_free_proxy_information (xpc_object_t proxyConfig) API_AVAILABLE(macos(10.12), ios(10.0));
__END_DECLS
-#endif /* CONFIG_AGENT_INFO_H */
+#endif /* CONFIG_AGENT_INFO_H */
__private_extern__
void
-pushNotifications()
+pushNotifications(void)
{
CFIndex notifyCnt;
int server;
CFStringRef watchedKey);
void
-pushNotifications ();
+pushNotifications (void);
__END_DECLS
/*
- * Copyright (c) 2000-2006, 2009-2011, 2015, 2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2000-2006, 2009-2011, 2015, 2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
/*
- * Copyright (c) 2000, 2001, 2003, 2006, 2007, 2011, 2013, 2016 Apple Inc. All rights reserved.
+ * Copyright (c) 2000, 2001, 2003, 2006, 2007, 2011, 2013, 2016, 2017 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
__BEGIN_DECLS
os_log_t
-__configd_SCDynamicStore ();
+__configd_SCDynamicStore (void);
__END_DECLS
#include "configd_server.h"
#include "plugin_support.h"
-#if TARGET_OS_EMBEDDED && !defined(DO_NOT_INFORM)
+#if TARGET_OS_IPHONE && !TARGET_OS_SIMULATOR && !defined(DO_NOT_INFORM)
#include <CoreFoundation/CFUserNotification.h>
-#endif // TARGET_OS_EMBEDDED && !defined(DO_NOT_INFORM)
+#endif // TARGET_OS_IPHONE && !TARGET_OS_SIMULATOR && !defined(DO_NOT_INFORM)
__private_extern__
Boolean _configd_verbose = FALSE; /* TRUE if verbose logging enabled */
/* check if we have been started by launchd */
vproc_swap_integer(NULL, VPROC_GSK_IS_MANAGED, NULL, &is_launchd_job);
-#if TARGET_OS_EMBEDDED && !defined(DO_NOT_INFORM)
+#if TARGET_OS_IPHONE && !TARGET_OS_SIMULATOR && !defined(DO_NOT_INFORM)
// if launchd job, check to see if we have been restarted
if (is_launchd_job) {
int64_t status = 0;
}
}
}
-#endif // TARGET_OS_EMBEDDED && !defined(DO_NOT_INFORM)
+#endif // TARGET_OS_IPHONE && !TARGET_OS_SIMULATOR && !defined(DO_NOT_INFORM)
/* ensure that forked plugins behave */
if (testBundle != NULL) {
<true/>
<key>com.apple.private.usbdevice.setdescription</key>
<true/>
+ <key>com.apple.carousel.modalappservice</key>
+ <true/>
+ <key>com.apple.private.lockdown.finegrained-get</key>
+ <array>
+ <string>NULL/TrustedHostAttached</string>
+ </array>
</dict>
</plist>
/*
- * Copyright (c) 2000-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2000-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#include "configd.h"
#include "configd_server.h"
#include <SystemConfiguration/SCDPlugin.h>
-void _SCDPluginExecInit();
+#include "SystemConfigurationInternal.h"
/*
Boolean enabled;
Boolean forced;
Boolean verbose;
- SCDynamicStoreBundleLoadFunction load;
- SCDynamicStoreBundleStartFunction start;
- SCDynamicStoreBundlePrimeFunction prime;
- SCDynamicStoreBundleStopFunction stop;
+ SCDynamicStoreBundleLoadFunction *load;
+ SCDynamicStoreBundleStartFunction *start;
+ SCDynamicStoreBundlePrimeFunction *prime;
+ SCDynamicStoreBundleStopFunction *stop;
} *bundleInfoRef;
typedef struct {
- const CFStringRef bundleID;
- const void *load; // SCDynamicStoreBundleLoadFunction
- const void *start; // SCDynamicStoreBundleStartFunction
- const void *prime; // SCDynamicStoreBundlePrimeFunction
- const void *stop; // SCDynamicStoreBundleStopFunction
+ const CFStringRef bundleID;
+ SCDynamicStoreBundleLoadFunction *load;
+ SCDynamicStoreBundleStartFunction *start;
+ SCDynamicStoreBundlePrimeFunction *prime;
+ SCDynamicStoreBundleStopFunction *stop;
} builtin, *builtinRef;
static const builtin builtin_plugins[] = {
{
CFSTR("com.apple.SystemConfiguration.IPMonitor"),
- &load_IPMonitor,
+ load_IPMonitor,
NULL,
- &prime_IPMonitor,
+ prime_IPMonitor,
NULL
},
#if !TARGET_OS_SIMULATOR
{
CFSTR("com.apple.SystemConfiguration.InterfaceNamer"),
- &load_InterfaceNamer,
+ load_InterfaceNamer,
NULL,
NULL,
NULL
},
{
CFSTR("com.apple.SystemConfiguration.KernelEventMonitor"),
- &load_KernelEventMonitor,
+ load_KernelEventMonitor,
NULL,
- &prime_KernelEventMonitor,
+ prime_KernelEventMonitor,
NULL
},
{
CFSTR("com.apple.SystemConfiguration.LinkConfiguration"),
- &load_LinkConfiguration,
+ load_LinkConfiguration,
NULL,
NULL,
NULL
},
{
CFSTR("com.apple.SystemConfiguration.PreferencesMonitor"),
- &load_PreferencesMonitor,
+ load_PreferencesMonitor,
NULL,
- &prime_PreferencesMonitor,
+ prime_PreferencesMonitor,
NULL
},
{
CFSTR("com.apple.SystemConfiguration.QoSMarking"),
- &load_QoSMarking,
+ load_QoSMarking,
NULL,
NULL,
NULL
CFArrayRef bundles;
CFURLRef url;
-#if TARGET_OS_SIMULATOR
+#if TARGET_OS_SIMULATOR && !TARGET_OS_IOSMAC
const char *path_sim_prefix;
path_sim_prefix = getenv("IPHONE_SIMULATOR_ROOT");
} else {
path[0] = '\0';
}
-#endif // TARGET_OS_SIMULATOR
+#endif // TARGET_OS_SIMULATOR && !TARGET_OS_IOSMAC
/* load any available bundle */
strlcat(path, BUNDLE_DIRECTORY, sizeof(path));
/*
- * Copyright (c) 2000, 2001, 2003-2005, 2007-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2000, 2001, 2003-2005, 2007-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
/*
- * Copyright (c) 2000, 2001, 2005-2007, 2009-2012, 2014, 2016, 2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2000, 2001, 2005-2007, 2009-2012, 2014, 2016-2018 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,
* 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@
*/
#define _S_SESSION_H
#include <sys/cdefs.h>
-#include <Availability.h>
+#include <os/availability.h>
#include <TargetConditionals.h>
__END_DECLS
-#endif /* !_S_SESSION_H */
+#endif /* !_S_SESSION_H */
D6DDAC3D147A24BC00A2E902 /* PBXTargetDependency */,
150ECB300D0042DA0065E94D /* PBXTargetDependency */,
72C12CB11D6EA2CA000EE61C /* PBXTargetDependency */,
+ C453EED22086992B00BF504E /* PBXTargetDependency */,
);
name = configd_executables;
productName = configd_executables;
152439E8180399D800D91708 /* CoreWLAN.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 152439E7180399D800D91708 /* CoreWLAN.framework */; };
152439E91805CC6C00D91708 /* ev_extra.h in Headers */ = {isa = PBXBuildFile; fileRef = 152439E318038E5B00D91708 /* ev_extra.h */; };
152439EA1805CC8400D91708 /* ev_extra.m in Sources */ = {isa = PBXBuildFile; fileRef = 152439E418038E5B00D91708 /* ev_extra.m */; };
- 152439EC180716ED00D91708 /* MobileWiFi.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 152439EB180716ED00D91708 /* MobileWiFi.framework */; };
152691DB1129EEA6006BD2D5 /* BridgeConfiguration.c in Sources */ = {isa = PBXBuildFile; fileRef = 15FD7B3B101E439200C56621 /* BridgeConfiguration.c */; };
152691DC1129EEAD006BD2D5 /* BridgeConfiguration.c in Sources */ = {isa = PBXBuildFile; fileRef = 15FD7B3B101E439200C56621 /* BridgeConfiguration.c */; };
152691DE1129EEC2006BD2D5 /* VLANConfiguration.c in Sources */ = {isa = PBXBuildFile; fileRef = 15CB69B605C0722B0099E85F /* VLANConfiguration.c */; };
155D223D0AF13A7300D52ED0 /* smb-configuration.h in Headers */ = {isa = PBXBuildFile; fileRef = 155D223A0AF13A7300D52ED0 /* smb-configuration.h */; };
155F49A61C864FFC00E47D08 /* qos-marking.m in Sources */ = {isa = PBXBuildFile; fileRef = 155F49A51C864FE500E47D08 /* qos-marking.m */; };
155F49A71C86500100E47D08 /* qos-marking.m in Sources */ = {isa = PBXBuildFile; fileRef = 155F49A51C864FE500E47D08 /* qos-marking.m */; };
+ 1562569120856CCC00FCD61E /* liblockdown.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 1562569020856CCC00FCD61E /* liblockdown.dylib */; };
1565D85018B847590097062B /* SCNetworkMigration.c in Sources */ = {isa = PBXBuildFile; fileRef = 55A3DB9D183C2A8200ED3DB7 /* SCNetworkMigration.c */; };
1565D85118B847F20097062B /* SCNetworkMigration.c in Sources */ = {isa = PBXBuildFile; fileRef = 55A3DB9D183C2A8200ED3DB7 /* SCNetworkMigration.c */; };
156BD6BC07E0DFA9008698FF /* SCPreferencesSetSpecificPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 156BD6BB07E0DFA9008698FF /* SCPreferencesSetSpecificPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
1572C5040CFB55B400E2776E /* SCPPath.c in Sources */ = {isa = PBXBuildFile; fileRef = 15CB699A05C0722B0099E85F /* SCPPath.c */; settings = {ATTRIBUTES = (); }; };
1572C5060CFB55B400E2776E /* SCDHostName.c in Sources */ = {isa = PBXBuildFile; fileRef = 15CB699E05C0722B0099E85F /* SCDHostName.c */; settings = {ATTRIBUTES = (); }; };
1572C5070CFB55B400E2776E /* SCLocation.c in Sources */ = {isa = PBXBuildFile; fileRef = 15CB69A005C0722B0099E85F /* SCLocation.c */; settings = {ATTRIBUTES = (); }; };
- 1572C5080CFB55B400E2776E /* SCNetwork.c in Sources */ = {isa = PBXBuildFile; fileRef = 15CB69A205C0722B0099E85F /* SCNetwork.c */; settings = {ATTRIBUTES = (); }; };
1572C5090CFB55B400E2776E /* pppcontroller.defs in Sources */ = {isa = PBXBuildFile; fileRef = 23C1E2B8062DD45900835B54 /* pppcontroller.defs */; settings = {ATTRIBUTES = (Client, ); }; };
1572C50A0CFB55B400E2776E /* SCNetworkConnection.c in Sources */ = {isa = PBXBuildFile; fileRef = 15CB69A405C0722B0099E85F /* SCNetworkConnection.c */; settings = {ATTRIBUTES = (); }; };
1572C50B0CFB55B400E2776E /* SCNetworkConnectionPrivate.c in Sources */ = {isa = PBXBuildFile; fileRef = 15A2972D0A13C08C009879B3 /* SCNetworkConnectionPrivate.c */; };
158E595E1107CAE40062081E /* helper.defs in Sources */ = {isa = PBXBuildFile; fileRef = 152E0E7E10FE820E00E402F2 /* helper.defs */; };
158E595F1107CAE80062081E /* helper.defs in Sources */ = {isa = PBXBuildFile; fileRef = 152E0E7E10FE820E00E402F2 /* helper.defs */; };
158E59611107CAF40062081E /* helper.defs in Sources */ = {isa = PBXBuildFile; fileRef = 152E0E7E10FE820E00E402F2 /* helper.defs */; };
+ 158FC7781FDA31E000B2493C /* network_config_agent_info_priv.h in Headers */ = {isa = PBXBuildFile; fileRef = 720985431C580D9F00966D30 /* network_config_agent_info_priv.h */; };
+ 158FC7791FDA31EA00B2493C /* network_config_agent_info_priv.h in Headers */ = {isa = PBXBuildFile; fileRef = 720985431C580D9F00966D30 /* network_config_agent_info_priv.h */; };
+ 158FC77B1FDADA5400B2493C /* libSystemConfiguration_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 158FC77A1FDAD9BC00B2493C /* libSystemConfiguration_internal.h */; };
+ 158FC77C1FDADA5A00B2493C /* libSystemConfiguration_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 158FC77A1FDAD9BC00B2493C /* libSystemConfiguration_internal.h */; };
+ 158FC77D1FDADA5E00B2493C /* libSystemConfiguration_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 158FC77A1FDAD9BC00B2493C /* libSystemConfiguration_internal.h */; };
+ 158FC77F1FDAE32600B2493C /* SystemConfigurationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 158FC77E1FDAE27900B2493C /* SystemConfigurationInternal.h */; };
+ 158FC7801FDAE32A00B2493C /* SystemConfigurationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 158FC77E1FDAE27900B2493C /* SystemConfigurationInternal.h */; };
+ 158FC7811FDAE32E00B2493C /* SystemConfigurationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 158FC77E1FDAE27900B2493C /* SystemConfigurationInternal.h */; };
+ 158FC7851FDAEF6600B2493C /* network_state_information_priv.h in Headers */ = {isa = PBXBuildFile; fileRef = D6986A761368911E0091C931 /* network_state_information_priv.h */; };
+ 158FC7861FDAEF7400B2493C /* network_state_information_priv.h in Headers */ = {isa = PBXBuildFile; fileRef = D6986A761368911E0091C931 /* network_state_information_priv.h */; };
+ 158FC7871FDAEF7900B2493C /* network_state_information_priv.h in Headers */ = {isa = PBXBuildFile; fileRef = D6986A761368911E0091C931 /* network_state_information_priv.h */; };
+ 158FC7891FDB186100B2493C /* network_information_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 158FC7881FDB184D00B2493C /* network_information_internal.h */; };
+ 158FC78A1FDB186600B2493C /* network_information_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 158FC7881FDB184D00B2493C /* network_information_internal.h */; };
+ 158FC78B1FDB187A00B2493C /* network_information_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 158FC7881FDB184D00B2493C /* network_information_internal.h */; };
+ 158FC78D1FDB566D00B2493C /* liblog_SystemConfiguration_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 158FC78C1FDB566300B2493C /* liblog_SystemConfiguration_internal.h */; };
+ 158FC78E1FDB567500B2493C /* liblog_SystemConfiguration_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 158FC78C1FDB566300B2493C /* liblog_SystemConfiguration_internal.h */; };
+ 158FC78F1FDB567900B2493C /* liblog_SystemConfiguration_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 158FC78C1FDB566300B2493C /* liblog_SystemConfiguration_internal.h */; };
+ 158FC7931FE08B3900B2493C /* libCrashReporterClient.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 15FBB54B17D6834C0035D752 /* libCrashReporterClient.a */; };
+ 158FC7951FE08CC000B2493C /* libCrashReporterClient.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 15FBB54B17D6834C0035D752 /* libCrashReporterClient.a */; };
1596A7B114EDB73D00798C39 /* libSystemConfiguration_server.c in Sources */ = {isa = PBXBuildFile; fileRef = 1596A7AF14EDB73D00798C39 /* libSystemConfiguration_server.c */; };
1596A7B214EDB73D00798C39 /* libSystemConfiguration_server.c in Sources */ = {isa = PBXBuildFile; fileRef = 1596A7AF14EDB73D00798C39 /* libSystemConfiguration_server.c */; };
1596A7B414EDB73D00798C39 /* libSystemConfiguration_server.h in Headers */ = {isa = PBXBuildFile; fileRef = 1596A7B014EDB73D00798C39 /* libSystemConfiguration_server.h */; };
15A5A2430D5B94190087BDA0 /* SCPPath.c in Sources */ = {isa = PBXBuildFile; fileRef = 15CB699A05C0722B0099E85F /* SCPPath.c */; settings = {ATTRIBUTES = (); }; };
15A5A2450D5B94190087BDA0 /* SCDHostName.c in Sources */ = {isa = PBXBuildFile; fileRef = 15CB699E05C0722B0099E85F /* SCDHostName.c */; settings = {ATTRIBUTES = (); }; };
15A5A2460D5B94190087BDA0 /* SCLocation.c in Sources */ = {isa = PBXBuildFile; fileRef = 15CB69A005C0722B0099E85F /* SCLocation.c */; settings = {ATTRIBUTES = (); }; };
- 15A5A2470D5B94190087BDA0 /* SCNetwork.c in Sources */ = {isa = PBXBuildFile; fileRef = 15CB69A205C0722B0099E85F /* SCNetwork.c */; settings = {ATTRIBUTES = (); }; };
15A5A2480D5B94190087BDA0 /* pppcontroller.defs in Sources */ = {isa = PBXBuildFile; fileRef = 23C1E2B8062DD45900835B54 /* pppcontroller.defs */; settings = {ATTRIBUTES = (Client, ); }; };
15A5A2490D5B94190087BDA0 /* SCNetworkConnection.c in Sources */ = {isa = PBXBuildFile; fileRef = 15CB69A405C0722B0099E85F /* SCNetworkConnection.c */; settings = {ATTRIBUTES = (); }; };
15A5A24A0D5B94190087BDA0 /* SCNetworkConnectionPrivate.c in Sources */ = {isa = PBXBuildFile; fileRef = 15A2972D0A13C08C009879B3 /* SCNetworkConnectionPrivate.c */; };
15D8B22A1450D8450090CECF /* SCD.h in Headers */ = {isa = PBXBuildFile; fileRef = 15D8B2291450D8450090CECF /* SCD.h */; };
15D8B22B1450D8450090CECF /* SCD.h in Headers */ = {isa = PBXBuildFile; fileRef = 15D8B2291450D8450090CECF /* SCD.h */; };
15D8B22C1450D8450090CECF /* SCD.h in Headers */ = {isa = PBXBuildFile; fileRef = 15D8B2291450D8450090CECF /* SCD.h */; };
+ 15D92B9E1FFC61F400DF2632 /* libnetwork.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 15D92B9D1FFC61F400DF2632 /* libnetwork.tbd */; };
+ 15D92B9F1FFC640200DF2632 /* libnetwork.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 15D92B9D1FFC61F400DF2632 /* libnetwork.tbd */; };
+ 15D92BA11FFC641500DF2632 /* libnetwork.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 15D92BA01FFC641500DF2632 /* libnetwork.tbd */; };
+ 15D92BA21FFC646600DF2632 /* libnetwork.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 15D92BA01FFC641500DF2632 /* libnetwork.tbd */; };
+ 15D92BA31FFC647800DF2632 /* libnetwork.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 15D92BA01FFC641500DF2632 /* libnetwork.tbd */; };
+ 15D92BA41FFC648900DF2632 /* libnetwork.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 15D92B9D1FFC61F400DF2632 /* libnetwork.tbd */; };
+ 15D92BA51FFC64DB00DF2632 /* libnetwork.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 15D92BA01FFC641500DF2632 /* libnetwork.tbd */; };
+ 15D92BA71FFC669100DF2632 /* MobileWiFi.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15D92BA61FFC669000DF2632 /* MobileWiFi.framework */; };
15D9DCFB10DD90A1004E545D /* AppWorkaround.plist in AppWorkaround.plist */ = {isa = PBXBuildFile; fileRef = 15D9DCFA10DD90A1004E545D /* AppWorkaround.plist */; };
15DAD5E1075913CE0084A6ED /* dnsinfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 15B73F0905FD1B670096477F /* dnsinfo.h */; settings = {ATTRIBUTES = (Public, ); }; };
15DAD5E2075913CE0084A6ED /* dnsinfo_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 15B73F0C05FD1B670096477F /* dnsinfo_private.h */; };
15DAF2E108466D4900D1B2BD /* SCHelper_server.c in Sources */ = {isa = PBXBuildFile; fileRef = 15DAF2D908466D4900D1B2BD /* SCHelper_server.c */; };
15E1B04316EBAE3C00E5F06F /* dns-configuration.h in Headers */ = {isa = PBXBuildFile; fileRef = 155D22380AF13A7300D52ED0 /* dns-configuration.h */; };
15E1B04416EBAE3C00E5F06F /* dnsinfo_create.h in Headers */ = {isa = PBXBuildFile; fileRef = 1532629006281C9D00B1C10C /* dnsinfo_create.h */; };
- 15E1B04516EBAE3C00E5F06F /* network_state_information_priv.h in Headers */ = {isa = PBXBuildFile; fileRef = D6986A761368911E0091C931 /* network_state_information_priv.h */; };
15E1B04616EBAE3C00E5F06F /* proxy-configuration.h in Headers */ = {isa = PBXBuildFile; fileRef = 1575FD2612CD15C60003D86E /* proxy-configuration.h */; };
15E1B04816EBAE3C00E5F06F /* network_information_server.h in Headers */ = {isa = PBXBuildFile; fileRef = 153ACCA714E322D5005029A5 /* network_information_server.h */; };
15E1B04916EBAE3C00E5F06F /* libSystemConfiguration_server.h in Headers */ = {isa = PBXBuildFile; fileRef = 1596A7B014EDB73D00798C39 /* libSystemConfiguration_server.h */; };
15FEE81F0CD03E75001312F9 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 15FEE8180CD03CBB001312F9 /* Localizable.strings */; };
15FF5C370CDF776200EEC8AA /* com.apple.SCHelper.plist in CopyFiles */ = {isa = PBXBuildFile; fileRef = 15FF5C290CDF770500EEC8AA /* com.apple.SCHelper.plist */; };
55A3DB9E183C2AD900ED3DB7 /* SCNetworkMigration.c in Sources */ = {isa = PBXBuildFile; fileRef = 55A3DB9D183C2A8200ED3DB7 /* SCNetworkMigration.c */; };
- 720985441C580D9F00966D30 /* network_config_agent_info_priv.h in Headers */ = {isa = PBXBuildFile; fileRef = 720985431C580D9F00966D30 /* network_config_agent_info_priv.h */; };
- 720985451C580D9F00966D30 /* network_config_agent_info_priv.h in Headers */ = {isa = PBXBuildFile; fileRef = 720985431C580D9F00966D30 /* network_config_agent_info_priv.h */; };
720985471C5835DB00966D30 /* agent-monitor.h in Headers */ = {isa = PBXBuildFile; fileRef = 728015931BE1697E009F4F60 /* agent-monitor.h */; };
720A4C0A1C585C7D007436B8 /* configAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 728015781BE16833009F4F60 /* configAgent.h */; };
720A4C0B1C585C93007436B8 /* controller.h in Headers */ = {isa = PBXBuildFile; fileRef = 7280157A1BE16833009F4F60 /* controller.h */; };
72573D401D67B2BE004975AD /* SCTestUnitTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 72573D3F1D67B2BE004975AD /* SCTestUnitTest.m */; };
72573D421D6B798A004975AD /* SCTestConfigAgents.m in Sources */ = {isa = PBXBuildFile; fileRef = 72573D411D6B7989004975AD /* SCTestConfigAgents.m */; };
72573D441D6BA051004975AD /* Network.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 728015951BE16B6C009F4F60 /* Network.framework */; };
- 72573D451D6BA976004975AD /* libnetwork.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 90507AAF1CE2F55B0067D16B /* libnetwork.dylib */; };
725CB7551BF439C6000C05A8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 725CB7541BF439C6000C05A8 /* Foundation.framework */; };
725CB7561BF439D2000C05A8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 725CB7541BF439C6000C05A8 /* Foundation.framework */; };
725CB7581BF514F2000C05A8 /* configAgentDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 725CB7571BF51476000C05A8 /* configAgentDefines.h */; };
7271EA241D76600B0055B1AA /* SCTestConfigAgents.m in Sources */ = {isa = PBXBuildFile; fileRef = 72573D411D6B7989004975AD /* SCTestConfigAgents.m */; };
7271EA251D76600B0055B1AA /* SCTestPreferences.m in Sources */ = {isa = PBXBuildFile; fileRef = 72573D3D1D669AA6004975AD /* SCTestPreferences.m */; };
7271EA261D76600B0055B1AA /* SCTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 72573D2D1D6673B6004975AD /* SCTest.m */; };
- 7271EA281D76600B0055B1AA /* libnetwork.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 90507AAF1CE2F55B0067D16B /* libnetwork.dylib */; };
7271EA291D76600B0055B1AA /* Network.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 728015951BE16B6C009F4F60 /* Network.framework */; };
7271EA2A1D76600B0055B1AA /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 72573D331D66800C004975AD /* SystemConfiguration.framework */; };
7271EA2B1D76600B0055B1AA /* NetworkExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 728015961BE16B6C009F4F60 /* NetworkExtension.framework */; };
7271EA2D1D76600B0055B1AA /* npt_configd.plist in npt_configd.plist */ = {isa = PBXBuildFile; fileRef = 72C12CAA1D6E9ED4000EE61C /* npt_configd.plist */; };
- 727AF25419138699009AB153 /* VPNAppLayerPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = B0A88CA616397A1200A60B3A /* VPNAppLayerPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 727AF25419138699009AB153 /* VPNAppLayerPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = B0A88CA616397A1200A60B3A /* VPNAppLayerPrivate.h */; };
727AF255191386A0009AB153 /* VPNFlow.h in Headers */ = {isa = PBXBuildFile; fileRef = C4CDB8111631933400819B44 /* VPNFlow.h */; settings = {ATTRIBUTES = (Private, ); }; };
727AF257191386DA009AB153 /* VPNTunnel.h in Headers */ = {isa = PBXBuildFile; fileRef = 15AAA7F2108E310700C2A607 /* VPNTunnel.h */; settings = {ATTRIBUTES = (Private, ); }; };
727AF258191386E3009AB153 /* VPNTunnelPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 15AAA7F1108E310700C2A607 /* VPNTunnelPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
72C12CAB1D6E9F45000EE61C /* npt_configd.plist in npt_configd.plist */ = {isa = PBXBuildFile; fileRef = 72C12CAA1D6E9ED4000EE61C /* npt_configd.plist */; };
72D3E6611AE6EA3A00DB4C69 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 72D3E6601AE6EA3A00DB4C69 /* main.swift */; };
72D3E66C1AE6EAF600DB4C69 /* test-objC.m in Sources */ = {isa = PBXBuildFile; fileRef = 72D3E66B1AE6EAF600DB4C69 /* test-objC.m */; };
- 90507AB01CE2F55B0067D16B /* libnetwork.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 90507AAF1CE2F55B0067D16B /* libnetwork.dylib */; };
- 90507AB21CE2F5720067D16B /* libnetwork.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 90507AB11CE2F5720067D16B /* libnetwork.dylib */; };
- 90507AB31CE2F58A0067D16B /* libnetwork.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 90507AB11CE2F5720067D16B /* libnetwork.dylib */; };
+ 78C951FE1F797B44000EA36B /* libnetwork.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 78C951FD1F797B43000EA36B /* libnetwork.tbd */; };
B03FEFB616376D2800A1B88F /* VPNAppLayer.c in Sources */ = {isa = PBXBuildFile; fileRef = B03FEFB516376D2800A1B88F /* VPNAppLayer.c */; };
B03FEFB716376D2800A1B88F /* VPNAppLayer.c in Sources */ = {isa = PBXBuildFile; fileRef = B03FEFB516376D2800A1B88F /* VPNAppLayer.c */; };
B03FEFBA16382C0700A1B88F /* libbsm.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 15BAA32207F0699A00D9EC95 /* libbsm.dylib */; };
B03FEFBB16382C1300A1B88F /* libbsm.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 15BAA32207F0699A00D9EC95 /* libbsm.dylib */; };
B084710F16385121006C92A3 /* SCNetworkConnectionInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = B084710E16385121006C92A3 /* SCNetworkConnectionInternal.h */; };
B084711016385121006C92A3 /* SCNetworkConnectionInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = B084710E16385121006C92A3 /* SCNetworkConnectionInternal.h */; };
- B0A88CA716397A1200A60B3A /* VPNAppLayerPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = B0A88CA616397A1200A60B3A /* VPNAppLayerPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
- B0A88CA816397A1200A60B3A /* VPNAppLayerPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = B0A88CA616397A1200A60B3A /* VPNAppLayerPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ B0A88CA716397A1200A60B3A /* VPNAppLayerPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = B0A88CA616397A1200A60B3A /* VPNAppLayerPrivate.h */; };
+ B0A88CA816397A1200A60B3A /* VPNAppLayerPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = B0A88CA616397A1200A60B3A /* VPNAppLayerPrivate.h */; };
B0C967F817441F0E00889853 /* SNHelperPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = B0C967F717441F0E00889853 /* SNHelperPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
B0C9689C174426C600889853 /* SNHelper.c in Sources */ = {isa = PBXBuildFile; fileRef = B0C9689B174426C200889853 /* SNHelper.c */; };
B0C9689D174426D100889853 /* SNHelper.c in Sources */ = {isa = PBXBuildFile; fileRef = B0C9689B174426C200889853 /* SNHelper.c */; };
B0FEF41A164406F400174B99 /* libbsm.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 15BAA32207F0699A00D9EC95 /* libbsm.dylib */; };
B0FEF41B1644089200174B99 /* VPNAppLayer.c in Sources */ = {isa = PBXBuildFile; fileRef = B03FEFB516376D2800A1B88F /* VPNAppLayer.c */; };
C42633891A9E4991009F7AE4 /* VPNFlow.c in Sources */ = {isa = PBXBuildFile; fileRef = C4CDB8141631935700819B44 /* VPNFlow.c */; };
+ C4666C72206ED01800247AB6 /* EventFactory.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15FA0F74203A390E00C7702F /* EventFactory.framework */; };
+ C4666C7A206ED27800247AB6 /* EventFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = 1597A9A41FBCECCD000FAA86 /* EventFactory.m */; };
C4CDB8151631935700819B44 /* VPNFlow.c in Sources */ = {isa = PBXBuildFile; fileRef = C4CDB8141631935700819B44 /* VPNFlow.c */; };
C4CDB8161631935700819B44 /* VPNFlow.c in Sources */ = {isa = PBXBuildFile; fileRef = C4CDB8141631935700819B44 /* VPNFlow.c */; };
C4CDB8171631938000819B44 /* VPNFlow.h in Headers */ = {isa = PBXBuildFile; fileRef = C4CDB8111631933400819B44 /* VPNFlow.h */; settings = {ATTRIBUTES = (Private, ); }; };
D6986A79136891650091C931 /* network_information.c in Sources */ = {isa = PBXBuildFile; fileRef = D6986A77136891300091C931 /* network_information.c */; };
E49173E1137C4E4F0000089F /* network_state_information_priv.c in Sources */ = {isa = PBXBuildFile; fileRef = D6986A75136891120091C931 /* network_state_information_priv.c */; };
E4F211D3137B0AB900BBB915 /* network_state_information_priv.c in Sources */ = {isa = PBXBuildFile; fileRef = D6986A75136891120091C931 /* network_state_information_priv.c */; };
- E4F211D4137B0ABD00BBB915 /* network_state_information_priv.h in Headers */ = {isa = PBXBuildFile; fileRef = D6986A761368911E0091C931 /* network_state_information_priv.h */; };
- E4F211D7137B0AF200BBB915 /* network_state_information_priv.h in Headers */ = {isa = PBXBuildFile; fileRef = D6986A761368911E0091C931 /* network_state_information_priv.h */; };
F9347FF7187C796E003D4178 /* IPMonitorControl.c in Sources */ = {isa = PBXBuildFile; fileRef = F9B7AE5C1862116500C78D18 /* IPMonitorControl.c */; };
F9347FF8187C7993003D4178 /* IPMonitorControl.h in Headers */ = {isa = PBXBuildFile; fileRef = F9B7AE5D1862116500C78D18 /* IPMonitorControl.h */; };
F9347FF9187C7993003D4178 /* IPMonitorControlPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = F9B7AE5E1862116500C78D18 /* IPMonitorControlPrivate.h */; };
F95B8A430B03E07A00993BA3 /* SCNetworkSignature.c in Sources */ = {isa = PBXBuildFile; fileRef = F95B8A420B03E07A00993BA3 /* SCNetworkSignature.c */; };
F95B8A460B03E09300993BA3 /* SCNetworkSignature.h in Headers */ = {isa = PBXBuildFile; fileRef = F95B8A440B03E09300993BA3 /* SCNetworkSignature.h */; settings = {ATTRIBUTES = (Private, ); }; };
F95B8A470B03E09300993BA3 /* SCNetworkSignaturePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = F95B8A450B03E09300993BA3 /* SCNetworkSignaturePrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ F97F9FC7202CBD5A0040BD50 /* SCNetworkInterfaceProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = F97F9FC5202CBD130040BD50 /* SCNetworkInterfaceProvider.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ F97F9FC8202CBD600040BD50 /* SCNetworkInterfaceProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = F97F9FC5202CBD130040BD50 /* SCNetworkInterfaceProvider.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ F97F9FC9202CBD710040BD50 /* SCNetworkInterfaceProvider.c in Sources */ = {isa = PBXBuildFile; fileRef = F97F9FC6202CBD230040BD50 /* SCNetworkInterfaceProvider.c */; };
+ F999388920FE54DB005EE20D /* AwdMetadata-0x81-IPMonitor.bin in CopyFiles */ = {isa = PBXBuildFile; fileRef = F999388820FE54CB005EE20D /* AwdMetadata-0x81-IPMonitor.bin */; };
F9A3781016A4847700C57CDC /* IPMonitorControlPrefs.c in Sources */ = {isa = PBXBuildFile; fileRef = F9A3780E16A4846E00C57CDC /* IPMonitorControlPrefs.c */; };
F9A3781116A4849100C57CDC /* IPMonitorControlPrefs.c in Sources */ = {isa = PBXBuildFile; fileRef = F9A3780E16A4846E00C57CDC /* IPMonitorControlPrefs.c */; };
+ F9AF76C1202CCD86008D3BEB /* SCNetworkInterfaceProvider.c in Sources */ = {isa = PBXBuildFile; fileRef = F97F9FC6202CBD230040BD50 /* SCNetworkInterfaceProvider.c */; };
F9B50FF316A4CBB200CA274E /* IPMonitorControlPrefs.c in Sources */ = {isa = PBXBuildFile; fileRef = F9A3780E16A4846E00C57CDC /* IPMonitorControlPrefs.c */; };
F9B50FF416A4CBB800CA274E /* IPMonitorControlPrefs.c in Sources */ = {isa = PBXBuildFile; fileRef = F9A3780E16A4846E00C57CDC /* IPMonitorControlPrefs.c */; };
F9B7AE641862119300C78D18 /* IPMonitorControl.c in Sources */ = {isa = PBXBuildFile; fileRef = F9B7AE5C1862116500C78D18 /* IPMonitorControl.c */; };
F9B7AE6D186211EA00C78D18 /* symbol_scope.h in Headers */ = {isa = PBXBuildFile; fileRef = F9B7AE631862116500C78D18 /* symbol_scope.h */; };
F9B7AE6E186211F000C78D18 /* symbol_scope.h in Headers */ = {isa = PBXBuildFile; fileRef = F9B7AE631862116500C78D18 /* symbol_scope.h */; };
F9B7AE6F186211F600C78D18 /* symbol_scope.h in Headers */ = {isa = PBXBuildFile; fileRef = F9B7AE631862116500C78D18 /* symbol_scope.h */; };
+ F9D7304B20DDBE9900521181 /* AWDIPMonitorInterfaceAdvisoryReport.m in Sources */ = {isa = PBXBuildFile; fileRef = F9D7304920DD89C600521181 /* AWDIPMonitorInterfaceAdvisoryReport.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ F9D7304C20DDBEAB00521181 /* IPMonitorAWDReport.m in Sources */ = {isa = PBXBuildFile; fileRef = F9D7303D20DD894C00521181 /* IPMonitorAWDReport.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ F9D7304F20E41D9C00521181 /* ProtocolBuffer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F9D7304E20E41D9C00521181 /* ProtocolBuffer.framework */; };
+ F9D7305120E41DD500521181 /* WirelessDiagnostics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F9D7305020E41DD500521181 /* WirelessDiagnostics.framework */; settings = {ATTRIBUTES = (Required, ); }; };
+ F9D7305220E4211900521181 /* AWDIPMonitorInterfaceAdvisoryReport.m in Sources */ = {isa = PBXBuildFile; fileRef = F9D7304920DD89C600521181 /* AWDIPMonitorInterfaceAdvisoryReport.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ F9D7305320E4211900521181 /* IPMonitorAWDReport.m in Sources */ = {isa = PBXBuildFile; fileRef = F9D7303D20DD894C00521181 /* IPMonitorAWDReport.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ F9D7305420E4387A00521181 /* ProtocolBuffer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F9D7304E20E41D9C00521181 /* ProtocolBuffer.framework */; };
+ F9D7305520E4389700521181 /* WirelessDiagnostics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F9D7305020E41DD500521181 /* WirelessDiagnostics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
remoteGlobalIDString = 155847430754FDCD0046C2E9;
remoteInfo = scutil;
};
+ C453EED12086992B00BF504E /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 15CB6A7705C0722B0099E85F /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = C4666C70206ED01800247AB6;
+ remoteInfo = SystemConfigurationEventFactory;
+ };
D6DDAC3C147A24BC00A2E902 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 15CB6A7705C0722B0099E85F /* Project object */;
);
runOnlyForDeploymentPostprocessing = 1;
};
+ F999388720FE546D005EE20D /* CopyFiles */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 8;
+ dstPath = /System/Library/AWD/Metadata;
+ dstSubfolderSpec = 0;
+ files = (
+ F999388920FE54DB005EE20D /* AwdMetadata-0x81-IPMonitor.bin in CopyFiles */,
+ );
+ runOnlyForDeploymentPostprocessing = 1;
+ };
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
152439E318038E5B00D91708 /* ev_extra.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ev_extra.h; sourceTree = "<group>"; };
152439E418038E5B00D91708 /* ev_extra.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ev_extra.m; sourceTree = "<group>"; };
152439E7180399D800D91708 /* CoreWLAN.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreWLAN.framework; path = /System/Library/Frameworks/CoreWLAN.framework; sourceTree = "<absolute>"; };
- 152439EB180716ED00D91708 /* MobileWiFi.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileWiFi.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.Internal.sdk/System/Library/PrivateFrameworks/MobileWiFi.framework; sourceTree = DEVELOPER_DIR; };
+ 152439EB180716ED00D91708 /* MobileWiFi.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileWiFi.framework; path = System/Library/PrivateFrameworks/MobileWiFi.framework; sourceTree = SDKROOT; };
+ 1524FE1920619BAF0010091E /* Info-Embedded.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "Info-Embedded.plist"; path = "Plugins/QoSMarking/Info-Embedded.plist"; sourceTree = "<group>"; };
1528922C1EDE41ED00FCFE71 /* network_state_information_logging.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = network_state_information_logging.h; path = nwi/network_state_information_logging.h; sourceTree = "<group>"; };
1528922D1EDE41ED00FCFE71 /* dnsinfo_logging.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = dnsinfo_logging.h; path = dnsinfo/dnsinfo_logging.h; sourceTree = "<group>"; };
152CEED0070CF6640050F23C /* libedit.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libedit.dylib; path = /usr/lib/libedit.2.dylib; sourceTree = "<absolute>"; };
1532629006281C9D00B1C10C /* dnsinfo_create.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = dnsinfo_create.h; path = dnsinfo/dnsinfo_create.h; sourceTree = "<group>"; };
153338BA14BE7978004FCE22 /* libSystemConfiguration_client.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = libSystemConfiguration_client.c; path = libSystemConfiguration/libSystemConfiguration_client.c; sourceTree = "<group>"; };
153338BB14BE7978004FCE22 /* libSystemConfiguration_client.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = libSystemConfiguration_client.h; path = libSystemConfiguration/libSystemConfiguration_client.h; sourceTree = "<group>"; };
- 153393E20D34994100FE74E7 /* update-headers */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.perl; path = "update-headers"; sourceTree = "<group>"; };
+ 153393E20D34994100FE74E7 /* restore-temporary-headers */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.perl; path = "restore-temporary-headers"; sourceTree = "<group>"; };
153ACCA614E322D5005029A5 /* network_information_server.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; lineEnding = 0; name = network_information_server.c; path = nwi/network_information_server.c; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.c; };
153ACCA714E322D5005029A5 /* network_information_server.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = network_information_server.h; path = nwi/network_information_server.h; sourceTree = "<group>"; };
1540E3600987DA9500157C07 /* com.apple.configd.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.xml; path = com.apple.configd.plist; sourceTree = "<group>"; };
155F49A21C864F5400E47D08 /* QoSMarking.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = QoSMarking.bundle; sourceTree = BUILT_PRODUCTS_DIR; };
155F49A41C864FE500E47D08 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Plugins/QoSMarking/Info.plist; sourceTree = "<group>"; };
155F49A51C864FE500E47D08 /* qos-marking.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "qos-marking.m"; path = "Plugins/QoSMarking/qos-marking.m"; sourceTree = "<group>"; };
+ 1562569020856CCC00FCD61E /* liblockdown.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = liblockdown.dylib; path = /usr/lib/liblockdown.dylib; sourceTree = "<absolute>"; };
1567333E0DD1FD6500145179 /* entitlements-ios.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "entitlements-ios.plist"; sourceTree = "<group>"; };
156BD6BB07E0DFA9008698FF /* SCPreferencesSetSpecificPrivate.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SCPreferencesSetSpecificPrivate.h; sourceTree = "<group>"; };
1572AA8B1D8234500021E093 /* plugin_shared.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = plugin_shared.h; sourceTree = "<group>"; };
158AD8C00754E3EF00124717 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
158AD9100754E40E00124717 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
158D6D871C974DBA00A08E78 /* com.apple.SystemConfiguration.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = com.apple.SystemConfiguration.plist; sourceTree = "<group>"; };
+ 158FC77A1FDAD9BC00B2493C /* libSystemConfiguration_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = libSystemConfiguration_internal.h; path = libSystemConfiguration/libSystemConfiguration_internal.h; sourceTree = "<group>"; };
+ 158FC77E1FDAE27900B2493C /* SystemConfigurationInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SystemConfigurationInternal.h; sourceTree = "<group>"; };
+ 158FC7881FDB184D00B2493C /* network_information_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = network_information_internal.h; path = nwi/network_information_internal.h; sourceTree = "<group>"; };
+ 158FC78C1FDB566300B2493C /* liblog_SystemConfiguration_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = liblog_SystemConfiguration_internal.h; path = logging/liblog_SystemConfiguration_internal.h; sourceTree = "<group>"; };
1596A7AF14EDB73D00798C39 /* libSystemConfiguration_server.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; lineEnding = 0; name = libSystemConfiguration_server.c; path = libSystemConfiguration/libSystemConfiguration_server.c; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.c; };
1596A7B014EDB73D00798C39 /* libSystemConfiguration_server.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = libSystemConfiguration_server.h; path = libSystemConfiguration/libSystemConfiguration_server.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
+ 1597A9A31FBCECCD000FAA86 /* EventFactory.h */ = {isa = PBXFileReference; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = EventFactory.h; sourceTree = "<group>"; tabWidth = 4; };
+ 1597A9A41FBCECCD000FAA86 /* EventFactory.m */ = {isa = PBXFileReference; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = EventFactory.m; sourceTree = "<group>"; tabWidth = 4; };
159A7513107FEAA400A57EAB /* VPNPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VPNPrivate.h; sourceTree = "<group>"; };
159A7515107FEAA400A57EAB /* VPNConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VPNConfiguration.h; sourceTree = "<group>"; };
159A7517107FEAA400A57EAB /* VPNPrivate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = VPNPrivate.c; sourceTree = "<group>"; };
159A7519107FEAA400A57EAB /* VPNConfiguration.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = VPNConfiguration.c; sourceTree = "<group>"; };
159C9A8D17399609003DDA1D /* dnsinfo_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dnsinfo_internal.h; path = dnsinfo/dnsinfo_internal.h; sourceTree = "<group>"; };
- 159D53A707528B36004F8947 /* ip_plugin.c */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.c; path = ip_plugin.c; sourceTree = "<group>"; };
+ 159D53A707528B36004F8947 /* ip_plugin.c */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 8; lastKnownFileType = sourcecode.c.c; path = ip_plugin.c; sourceTree = "<group>"; tabWidth = 8; };
159D53AA07528B36004F8947 /* dns-configuration.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = "dns-configuration.c"; sourceTree = "<group>"; };
159D53AB07528B36004F8947 /* set-hostname.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = "set-hostname.c"; sourceTree = "<group>"; };
159D53AE07528B36004F8947 /* ifnamer.c */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.c; path = ifnamer.c; sourceTree = "<group>"; };
15D3083816F3EB8600014F82 /* simulator_support.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = simulator_support.c; path = Plugins/SimulatorSupport/simulator_support.c; sourceTree = "<group>"; };
15D3083A16F4E6D900014F82 /* com.apple.configd_sim.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = com.apple.configd_sim.plist; sourceTree = "<group>"; };
15D8B2291450D8450090CECF /* SCD.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SCD.h; sourceTree = "<group>"; };
+ 15D92B9A1FFC5FA500DF2632 /* libnetwork.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libnetwork.tbd; path = usr/lib/libnetwork.tbd; sourceTree = SDKROOT; };
+ 15D92B9D1FFC61F400DF2632 /* libnetwork.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libnetwork.tbd; path = usr/lib/libnetwork.tbd; sourceTree = SDKROOT; };
+ 15D92BA01FFC641500DF2632 /* libnetwork.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libnetwork.tbd; path = usr/lib/libnetwork.tbd; sourceTree = SDKROOT; };
+ 15D92BA61FFC669000DF2632 /* MobileWiFi.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileWiFi.framework; path = System/Library/PrivateFrameworks/MobileWiFi.framework; sourceTree = SDKROOT; };
15D9DCFA10DD90A1004E545D /* AppWorkaround.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = AppWorkaround.plist; sourceTree = "<group>"; };
15DAD5EE075913CE0084A6ED /* libsystem_configuration.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libsystem_configuration.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
15DAF2D808466D4900D1B2BD /* SCHelper_client.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = SCHelper_client.c; path = helper/SCHelper_client.c; sourceTree = "<group>"; };
15E1B06116EBAE7800E5F06F /* IPMonitor.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = IPMonitor.bundle; sourceTree = BUILT_PRODUCTS_DIR; };
15F742E41EC6370000DA2E7A /* liblog_SystemConfiguration.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = liblog_SystemConfiguration.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
15F742F11EC638D100DA2E7A /* liblog_SystemConfiguration.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = liblog_SystemConfiguration.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
+ 15FA0F73203A379600C7702F /* EventFactory.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = EventFactory.framework; sourceTree = "<group>"; };
+ 15FA0F74203A390E00C7702F /* EventFactory.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = EventFactory.framework; path = System/Library/PrivateFrameworks/EventFactory.framework; sourceTree = SDKROOT; };
15FB1F881E27E9A000B4F809 /* InterfaceNamerControlPrefs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = InterfaceNamerControlPrefs.c; sourceTree = "<group>"; };
15FB1F891E27E9A000B4F809 /* InterfaceNamerControlPrefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InterfaceNamerControlPrefs.h; sourceTree = "<group>"; };
15FBB54B17D6834C0035D752 /* libCrashReporterClient.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libCrashReporterClient.a; path = /usr/local/lib/libCrashReporterClient.a; sourceTree = "<absolute>"; };
72D3E6601AE6EA3A00DB4C69 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = "<group>"; };
72D3E6691AE6EAF600DB4C69 /* SCTest-ObjC */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "SCTest-ObjC"; sourceTree = BUILT_PRODUCTS_DIR; };
72D3E66B1AE6EAF600DB4C69 /* test-objC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "test-objC.m"; sourceTree = "<group>"; };
- 90507AAF1CE2F55B0067D16B /* libnetwork.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libnetwork.dylib; path = usr/lib/libnetwork.dylib; sourceTree = SDKROOT; };
- 90507AB11CE2F5720067D16B /* libnetwork.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libnetwork.dylib; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.Internal.sdk/usr/lib/libnetwork.dylib; sourceTree = DEVELOPER_DIR; };
+ 78C951FD1F797B43000EA36B /* libnetwork.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libnetwork.tbd; path = usr/lib/libnetwork.tbd; sourceTree = SDKROOT; };
9EE943F306AF409B00772EB5 /* BondConfiguration.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = BondConfiguration.c; sourceTree = "<group>"; };
B03FEFB516376D2800A1B88F /* VPNAppLayer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = VPNAppLayer.c; sourceTree = "<group>"; };
B084710E16385121006C92A3 /* SCNetworkConnectionInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SCNetworkConnectionInternal.h; sourceTree = "<group>"; };
B0A88CA616397A1200A60B3A /* VPNAppLayerPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = VPNAppLayerPrivate.h; sourceTree = "<group>"; tabWidth = 4; };
B0C967F717441F0E00889853 /* SNHelperPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SNHelperPrivate.h; sourceTree = "<group>"; };
B0C9689B174426C200889853 /* SNHelper.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SNHelper.c; sourceTree = "<group>"; };
+ C4666C71206ED01800247AB6 /* SystemConfigurationEventFactory.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SystemConfigurationEventFactory.bundle; sourceTree = BUILT_PRODUCTS_DIR; };
+ C4666C74206ED01800247AB6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
C4CDB8111631933400819B44 /* VPNFlow.h */ = {isa = PBXFileReference; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = VPNFlow.h; sourceTree = "<group>"; tabWidth = 4; };
C4CDB8141631935700819B44 /* VPNFlow.c */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.c; path = VPNFlow.c; sourceTree = "<group>"; tabWidth = 4; };
C4F1847F16237AFC00D97043 /* VPNService.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = VPNService.c; sourceTree = "<group>"; };
F95B8A420B03E07A00993BA3 /* SCNetworkSignature.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = SCNetworkSignature.c; sourceTree = "<group>"; };
F95B8A440B03E09300993BA3 /* SCNetworkSignature.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SCNetworkSignature.h; sourceTree = "<group>"; };
F95B8A450B03E09300993BA3 /* SCNetworkSignaturePrivate.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SCNetworkSignaturePrivate.h; sourceTree = "<group>"; };
+ F97F9FC5202CBD130040BD50 /* SCNetworkInterfaceProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SCNetworkInterfaceProvider.h; sourceTree = "<group>"; };
+ F97F9FC6202CBD230040BD50 /* SCNetworkInterfaceProvider.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SCNetworkInterfaceProvider.c; sourceTree = "<group>"; };
+ F999388820FE54CB005EE20D /* AwdMetadata-0x81-IPMonitor.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "AwdMetadata-0x81-IPMonitor.bin"; sourceTree = "<group>"; };
F9A3780E16A4846E00C57CDC /* IPMonitorControlPrefs.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = IPMonitorControlPrefs.c; sourceTree = "<group>"; };
F9A3780F16A4846E00C57CDC /* IPMonitorControlPrefs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IPMonitorControlPrefs.h; sourceTree = "<group>"; };
F9B7AE5C1862116500C78D18 /* IPMonitorControl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = IPMonitorControl.c; sourceTree = "<group>"; };
F9B7AE611862116500C78D18 /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = "<group>"; };
F9B7AE621862116500C78D18 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
F9B7AE631862116500C78D18 /* symbol_scope.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = symbol_scope.h; sourceTree = "<group>"; };
+ F9D7303C20DD894C00521181 /* IPMonitorAWDReport.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IPMonitorAWDReport.h; sourceTree = "<group>"; };
+ F9D7303D20DD894C00521181 /* IPMonitorAWDReport.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = IPMonitorAWDReport.m; sourceTree = "<group>"; };
+ F9D7304620DD89C600521181 /* AWDIPMonitorInterfaceAdvisoryReport.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AWDIPMonitorInterfaceAdvisoryReport.h; sourceTree = "<group>"; };
+ F9D7304720DD89C600521181 /* AWDIPMonitorGlobalEnums.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AWDIPMonitorGlobalEnums.h; sourceTree = "<group>"; };
+ F9D7304820DD89C600521181 /* AWDMetricIds_IPMonitor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AWDMetricIds_IPMonitor.h; sourceTree = "<group>"; };
+ F9D7304920DD89C600521181 /* AWDIPMonitorInterfaceAdvisoryReport.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AWDIPMonitorInterfaceAdvisoryReport.m; sourceTree = "<group>"; };
+ F9D7304A20DDA59600521181 /* awdgen.yaml */ = {isa = PBXFileReference; lastKnownFileType = text; path = awdgen.yaml; sourceTree = "<group>"; };
+ F9D7304E20E41D9C00521181 /* ProtocolBuffer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ProtocolBuffer.framework; path = ../../../../../../../../SDKs/Peace16A315/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/PrivateFrameworks/ProtocolBuffer.framework; sourceTree = "<group>"; };
+ F9D7305020E41DD500521181 /* WirelessDiagnostics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WirelessDiagnostics.framework; path = ../../../../../../../../SDKs/Peace16A315/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/PrivateFrameworks/WirelessDiagnostics.framework; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 90507AB21CE2F5720067D16B /* libnetwork.dylib in Frameworks */,
1572C5240CFB55B400E2776E /* CoreFoundation.framework in Frameworks */,
B03FEFBB16382C1300A1B88F /* libbsm.dylib in Frameworks */,
+ 15D92BA31FFC647800DF2632 /* libnetwork.tbd in Frameworks */,
+ 158FC7951FE08CC000B2493C /* libCrashReporterClient.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
15732A9E16EA503200F3AC4C /* IOKit.framework in Frameworks */,
15732A9F16EA503200F3AC4C /* Security.framework in Frameworks */,
15732AA016EA503200F3AC4C /* libbsm.dylib in Frameworks */,
+ 15D92B9E1FFC61F400DF2632 /* libnetwork.tbd in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ F9D7305120E41DD500521181 /* WirelessDiagnostics.framework in Frameworks */,
+ F9D7304F20E41D9C00521181 /* ProtocolBuffer.framework in Frameworks */,
725CB7561BF439D2000C05A8 /* Foundation.framework in Frameworks */,
7214BCE31BEB392000A8F056 /* Network.framework in Frameworks */,
7214BCE41BEB392300A8F056 /* NetworkExtension.framework in Frameworks */,
1583174C0CFB80A1006F62B9 /* CoreFoundation.framework in Frameworks */,
154707350D1F70C80075C28D /* SystemConfiguration.framework in Frameworks */,
1583174E0CFB80A1006F62B9 /* IOKit.framework in Frameworks */,
- 152439EC180716ED00D91708 /* MobileWiFi.framework in Frameworks */,
+ 15D92BA71FFC669100DF2632 /* MobileWiFi.framework in Frameworks */,
159C32B60F583724008A72EE /* Security.framework in Frameworks */,
158317500CFB80A1006F62B9 /* libbsm.dylib in Frameworks */,
+ 1562569120856CCC00FCD61E /* liblockdown.dylib in Frameworks */,
+ 15D92BA51FFC64DB00DF2632 /* libnetwork.tbd in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ F9D7305520E4389700521181 /* WirelessDiagnostics.framework in Frameworks */,
+ F9D7305420E4387A00521181 /* ProtocolBuffer.framework in Frameworks */,
725CB7551BF439C6000C05A8 /* Foundation.framework in Frameworks */,
728015971BE16B6C009F4F60 /* Network.framework in Frameworks */,
728015981BE16B6C009F4F60 /* NetworkExtension.framework in Frameworks */,
1543636B0752D03C00A8EC6C /* IOKit.framework in Frameworks */,
D6623873120B2AA7007F8E95 /* Security.framework in Frameworks */,
15BAA32307F0699A00D9EC95 /* libbsm.dylib in Frameworks */,
+ 78C951FE1F797B44000EA36B /* libnetwork.tbd in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 90507AB31CE2F58A0067D16B /* libnetwork.dylib in Frameworks */,
15A5A2630D5B94190087BDA0 /* CoreFoundation.framework in Frameworks */,
B0FEF41A164406F400174B99 /* libbsm.dylib in Frameworks */,
+ 15D92BA21FFC646600DF2632 /* libnetwork.tbd in Frameworks */,
+ 158FC7931FE08B3900B2493C /* libCrashReporterClient.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 90507AB01CE2F55B0067D16B /* libnetwork.dylib in Frameworks */,
15DAD6AE07591A1A0084A6ED /* CoreFoundation.framework in Frameworks */,
B03FEFBA16382C0700A1B88F /* libbsm.dylib in Frameworks */,
+ 15D92BA41FFC648900DF2632 /* libnetwork.tbd in Frameworks */,
15FBB54C17D6834C0035D752 /* libCrashReporterClient.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 72573D451D6BA976004975AD /* libnetwork.dylib in Frameworks */,
72573D441D6BA051004975AD /* Network.framework in Frameworks */,
72573D351D6680AA004975AD /* SystemConfiguration.framework in Frameworks */,
728E0E971D70348D00E0613A /* NetworkExtension.framework in Frameworks */,
+ 15D92B9F1FFC640200DF2632 /* libnetwork.tbd in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 7271EA281D76600B0055B1AA /* libnetwork.dylib in Frameworks */,
7271EA291D76600B0055B1AA /* Network.framework in Frameworks */,
7271EA2A1D76600B0055B1AA /* SystemConfiguration.framework in Frameworks */,
7271EA2B1D76600B0055B1AA /* NetworkExtension.framework in Frameworks */,
+ 15D92BA11FFC641500DF2632 /* libnetwork.tbd in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
);
runOnlyForDeploymentPostprocessing = 0;
};
+ C4666C6E206ED01800247AB6 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ C4666C72206ED01800247AB6 /* EventFactory.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
151D060C1EC14C3900E02E48 /* Logging */ = {
isa = PBXGroup;
children = (
+ 158FC78C1FDB566300B2493C /* liblog_SystemConfiguration_internal.h */,
151D060D1EC14C6700E02E48 /* liblog_SystemConfiguration.m */,
);
name = Logging;
children = (
155F49A51C864FE500E47D08 /* qos-marking.m */,
155F49A41C864FE500E47D08 /* Info.plist */,
+ 1524FE1920619BAF0010091E /* Info-Embedded.plist */,
);
name = QoSMarking;
sourceTree = "<group>";
15B534AD14BE778800EA6522 /* libsystem_configuration */ = {
isa = PBXGroup;
children = (
+ 158FC77A1FDAD9BC00B2493C /* libSystemConfiguration_internal.h */,
153338BB14BE7978004FCE22 /* libSystemConfiguration_client.h */,
153338BA14BE7978004FCE22 /* libSystemConfiguration_client.c */,
1596A7B014EDB73D00798C39 /* libSystemConfiguration_server.h */,
158D6D871C974DBA00A08E78 /* com.apple.SystemConfiguration.plist */,
15CFC229068B222F00123568 /* get-mobility-info */,
72499BA31AC9B7AB0090C49F /* get-network-info */,
- 153393E20D34994100FE74E7 /* update-headers */,
+ 153393E20D34994100FE74E7 /* restore-temporary-headers */,
);
name = "Supporting Files";
sourceTree = "<group>";
72D3E65F1AE6EA3A00DB4C69 /* SCTest-Swift */,
72D3E66A1AE6EAF600DB4C69 /* SCTest-ObjC */,
72573D271D667372004975AD /* sctest */,
+ C4666C73206ED01800247AB6 /* EventFactory */,
15CB690F05C0722B0099E85F /* Products */,
90507AAE1CE2F55B0067D16B /* Frameworks */,
);
1547002E084561B4006787CE /* SCHelper */,
15C330DB134B9B8B0028E36B /* SCNetworkConfiguration */,
15C330DE134B9C290028E36B /* SCNetworkConnection */,
+ F97F9FC2202CBCA00040BD50 /* SCNetworkInterfaceProvider */,
15C330B4134B91930028E36B /* SCNetworkReachability */,
15C330E1134B9C8E0028E36B /* VPN */,
15CB691205C0722B0099E85F /* Other Headers */,
151D060B1EC1491600E02E48 /* liblog_SystemConfiguration.dylib */,
15F742E41EC6370000DA2E7A /* liblog_SystemConfiguration.dylib */,
15F742F11EC638D100DA2E7A /* liblog_SystemConfiguration.dylib */,
+ C4666C71206ED01800247AB6 /* SystemConfigurationEventFactory.bundle */,
);
name = Products;
sourceTree = "<group>";
15CB691205C0722B0099E85F /* Other Headers */ = {
isa = PBXGroup;
children = (
+ 158FC77E1FDAE27900B2493C /* SystemConfigurationInternal.h */,
15D8B2291450D8450090CECF /* SCD.h */,
15CB691305C0722B0099E85F /* SystemConfiguration.h */,
150607DE075A00A300B147BA /* SCSchemaDefinitions.h */,
15FEE80D0CCFD341001312F9 /* ApplicationServices.framework */,
15CB6A6F05C0722B0099E85F /* CoreFoundation.framework */,
152439E7180399D800D91708 /* CoreWLAN.framework */,
+ 15FA0F73203A379600C7702F /* EventFactory.framework */,
1543636A0752D03C00A8EC6C /* IOKit.framework */,
152439EB180716ED00D91708 /* MobileWiFi.framework */,
1520A3DE0846B2DC0010B584 /* Security.framework */,
90507AAE1CE2F55B0067D16B /* Frameworks */ = {
isa = PBXGroup;
children = (
+ F9D7305020E41DD500521181 /* WirelessDiagnostics.framework */,
+ F9D7304E20E41D9C00521181 /* ProtocolBuffer.framework */,
+ 1562569020856CCC00FCD61E /* liblockdown.dylib */,
+ 15FA0F74203A390E00C7702F /* EventFactory.framework */,
+ 15D92BA61FFC669000DF2632 /* MobileWiFi.framework */,
72573D331D66800C004975AD /* SystemConfiguration.framework */,
- 90507AB11CE2F5720067D16B /* libnetwork.dylib */,
- 90507AAF1CE2F55B0067D16B /* libnetwork.dylib */,
+ 78C951FD1F797B43000EA36B /* libnetwork.tbd */,
+ 15D92B9A1FFC5FA500DF2632 /* libnetwork.tbd */,
+ 15D92B9D1FFC61F400DF2632 /* libnetwork.tbd */,
+ 15D92BA01FFC641500DF2632 /* libnetwork.tbd */,
);
name = Frameworks;
sourceTree = "<group>";
};
+ C4666C73206ED01800247AB6 /* EventFactory */ = {
+ isa = PBXGroup;
+ children = (
+ 1597A9A31FBCECCD000FAA86 /* EventFactory.h */,
+ 1597A9A41FBCECCD000FAA86 /* EventFactory.m */,
+ C4666C74206ED01800247AB6 /* Info.plist */,
+ );
+ path = EventFactory;
+ sourceTree = "<group>";
+ };
D6986A70136890B60091C931 /* NetworkInformation */ = {
isa = PBXGroup;
children = (
isa = PBXGroup;
children = (
D6986A781368913C0091C931 /* network_information.h */,
+ 158FC7881FDB184D00B2493C /* network_information_internal.h */,
1528922C1EDE41ED00FCFE71 /* network_state_information_logging.h */,
D6986A761368911E0091C931 /* network_state_information_priv.h */,
720985431C580D9F00966D30 /* network_config_agent_info_priv.h */,
name = Sources;
sourceTree = "<group>";
};
+ F97F9FC2202CBCA00040BD50 /* SCNetworkInterfaceProvider */ = {
+ isa = PBXGroup;
+ children = (
+ F97F9FC4202CBCF50040BD50 /* Headers */,
+ F97F9FC3202CBCF10040BD50 /* Source */,
+ );
+ name = SCNetworkInterfaceProvider;
+ sourceTree = "<group>";
+ };
+ F97F9FC3202CBCF10040BD50 /* Source */ = {
+ isa = PBXGroup;
+ children = (
+ F97F9FC6202CBD230040BD50 /* SCNetworkInterfaceProvider.c */,
+ );
+ name = Source;
+ sourceTree = "<group>";
+ };
+ F97F9FC4202CBCF50040BD50 /* Headers */ = {
+ isa = PBXGroup;
+ children = (
+ F97F9FC5202CBD130040BD50 /* SCNetworkInterfaceProvider.h */,
+ );
+ name = Headers;
+ sourceTree = "<group>";
+ };
F9B7AE5B1862116500C78D18 /* IPMonitorControl */ = {
isa = PBXGroup;
children = (
+ F9D7304A20DDA59600521181 /* awdgen.yaml */,
+ F9D7304420DD89C600521181 /* AWD */,
+ F9D7303C20DD894C00521181 /* IPMonitorAWDReport.h */,
+ F9D7303D20DD894C00521181 /* IPMonitorAWDReport.m */,
F9B7AE5C1862116500C78D18 /* IPMonitorControl.c */,
F9B7AE5D1862116500C78D18 /* IPMonitorControl.h */,
F9B7AE5E1862116500C78D18 /* IPMonitorControlPrivate.h */,
path = IPMonitorControl;
sourceTree = "<group>";
};
+ F9D7304420DD89C600521181 /* AWD */ = {
+ isa = PBXGroup;
+ children = (
+ F999388820FE54CB005EE20D /* AwdMetadata-0x81-IPMonitor.bin */,
+ F9D7304620DD89C600521181 /* AWDIPMonitorInterfaceAdvisoryReport.h */,
+ F9D7304720DD89C600521181 /* AWDIPMonitorGlobalEnums.h */,
+ F9D7304820DD89C600521181 /* AWDMetricIds_IPMonitor.h */,
+ F9D7304920DD89C600521181 /* AWDIPMonitorInterfaceAdvisoryReport.m */,
+ );
+ path = AWD;
+ sourceTree = "<group>";
+ };
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
+ 158FC78D1FDB566D00B2493C /* liblog_SystemConfiguration_internal.h in Headers */,
15CB8F7A1EE4DD3E00726685 /* dnsinfo_logging.h in Headers */,
15CB8F721EE4DD0400726685 /* network_state_information_logging.h in Headers */,
15CB8F841EE4DE2600726685 /* SCNetworkReachabilityLogging.h in Headers */,
+ 158FC78A1FDB186600B2493C /* network_information_internal.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
1572C4B90CFB55B400E2776E /* SCNetworkConfiguration.h in Headers */,
1572C4BA0CFB55B400E2776E /* SCNetworkConfigurationInternal.h in Headers */,
D61AAEB61522C9E60066B003 /* scprefs_observer.h in Headers */,
+ F97F9FC8202CBD600040BD50 /* SCNetworkInterfaceProvider.h in Headers */,
1572C4BB0CFB55B400E2776E /* SCNetwork.h in Headers */,
1572C4BC0CFB55B400E2776E /* SCNetworkConnection.h in Headers */,
1572C4BD0CFB55B400E2776E /* SCNetworkReachability.h in Headers */,
1572C4C00CFB55B400E2776E /* SCDynamicStoreCopyDHCPInfo.h in Headers */,
1572C4C50CFB55B400E2776E /* dy_framework.h in Headers */,
1572C4C70CFB55B400E2776E /* SCPreferencesPathKey.h in Headers */,
+ 158FC7801FDAE32A00B2493C /* SystemConfigurationInternal.h in Headers */,
1572C4CE0CFB55B400E2776E /* SCPreferencesSetSpecificPrivate.h in Headers */,
C4CDB819163193AA00819B44 /* VPNFlow.h in Headers */,
1572C4CF0CFB55B400E2776E /* SCPreferencesGetSpecificPrivate.h in Headers */,
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
+ 158FC77D1FDADA5E00B2493C /* libSystemConfiguration_internal.h in Headers */,
15732AD816EA6B6700F3AC4C /* dnsinfo.h in Headers */,
15732AD916EA6B6700F3AC4C /* network_information.h in Headers */,
+ 158FC78B1FDB187A00B2493C /* network_information_internal.h in Headers */,
15732ADA16EA6B6700F3AC4C /* dnsinfo_private.h in Headers */,
15732ADB16EA6B6700F3AC4C /* libSystemConfiguration_client.h in Headers */,
);
buildActionMask = 2147483647;
files = (
157A84DA0D56C63900B6F1A0 /* dnsinfo.h in Headers */,
+ 158FC77C1FDADA5A00B2493C /* libSystemConfiguration_internal.h in Headers */,
D661C2F21368BB720030B977 /* network_information.h in Headers */,
+ 158FC7791FDA31EA00B2493C /* network_config_agent_info_priv.h in Headers */,
157A84DB0D56C63900B6F1A0 /* dnsinfo_private.h in Headers */,
153338C014BE7978004FCE22 /* libSystemConfiguration_client.h in Headers */,
726DB2F61BEA80E5001B2C6C /* config_agent_info.h in Headers */,
15CB8F7C1EE4DD4300726685 /* dnsinfo_logging.h in Headers */,
157A84F60D56C7E800B6F1A0 /* dns-configuration.h in Headers */,
1596A7B514EDB73D00798C39 /* libSystemConfiguration_server.h in Headers */,
- 720985451C580D9F00966D30 /* network_config_agent_info_priv.h in Headers */,
153ACCAC14E322D5005029A5 /* network_information_server.h in Headers */,
15CB8F731EE4DD0B00726685 /* network_state_information_logging.h in Headers */,
- E4F211D4137B0ABD00BBB915 /* network_state_information_priv.h in Headers */,
+ 158FC7861FDAEF7400B2493C /* network_state_information_priv.h in Headers */,
720A4C0D1C585C9F007436B8 /* proxyAgent.h in Headers */,
1575FD2812CD15C60003D86E /* proxy-configuration.h in Headers */,
157A84F70D56C7E800B6F1A0 /* set-hostname.h in Headers */,
7280159C1BE1812B009F4F60 /* controller.h in Headers */,
7280159B1BE1812B009F4F60 /* configAgent.h in Headers */,
725CB7581BF514F2000C05A8 /* configAgentDefines.h in Headers */,
+ 158FC7851FDAEF6600B2493C /* network_state_information_priv.h in Headers */,
15D48EC00F67061700B4711E /* dnsinfo_create.h in Headers */,
15CB8F791EE4DD3B00726685 /* dnsinfo_logging.h in Headers */,
7280159D1BE1812B009F4F60 /* dnsAgent.h in Headers */,
155D223B0AF13A7300D52ED0 /* dns-configuration.h in Headers */,
1596A7B414EDB73D00798C39 /* libSystemConfiguration_server.h in Headers */,
- 720985441C580D9F00966D30 /* network_config_agent_info_priv.h in Headers */,
153ACCAB14E322D5005029A5 /* network_information_server.h in Headers */,
15CB8F701EE4DCFC00726685 /* network_state_information_logging.h in Headers */,
- E4F211D7137B0AF200BBB915 /* network_state_information_priv.h in Headers */,
7280159E1BE1812B009F4F60 /* proxyAgent.h in Headers */,
1575FD2A12CD15C60003D86E /* proxy-configuration.h in Headers */,
155D223C0AF13A7300D52ED0 /* set-hostname.h in Headers */,
15A5A1FD0D5B94190087BDA0 /* DHCPClientPreferences.h in Headers */,
D61AAEB71522C9EF0066B003 /* scprefs_observer.h in Headers */,
15A5A1FE0D5B94190087BDA0 /* SCDynamicStoreCopyDHCPInfo.h in Headers */,
+ 158FC7811FDAE32E00B2493C /* SystemConfigurationInternal.h in Headers */,
727AF258191386E3009AB153 /* VPNTunnelPrivate.h in Headers */,
15A5A2030D5B94190087BDA0 /* dy_framework.h in Headers */,
15A5A2050D5B94190087BDA0 /* SCPreferencesPathKey.h in Headers */,
buildActionMask = 2147483647;
files = (
15DAD5E1075913CE0084A6ED /* dnsinfo.h in Headers */,
+ 158FC77B1FDADA5400B2493C /* libSystemConfiguration_internal.h in Headers */,
D661C2EF1368BB280030B977 /* network_information.h in Headers */,
+ 158FC7781FDA31E000B2493C /* network_config_agent_info_priv.h in Headers */,
15DAD5E2075913CE0084A6ED /* dnsinfo_private.h in Headers */,
153338BF14BE7978004FCE22 /* libSystemConfiguration_client.h in Headers */,
728CEB001BEA993100F13F92 /* config_agent_info.h in Headers */,
+ 158FC7891FDB186100B2493C /* network_information_internal.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
15DAD65107591A1A0084A6ED /* SCPreferencesSetSpecific.h in Headers */,
15DAD65207591A1A0084A6ED /* SCNetworkConfiguration.h in Headers */,
D61AAEB51522C9D00066B003 /* scprefs_observer.h in Headers */,
+ F97F9FC7202CBD5A0040BD50 /* SCNetworkInterfaceProvider.h in Headers */,
15DAD65307591A1A0084A6ED /* SCNetworkConfigurationInternal.h in Headers */,
F9B7AE66186211BE00C78D18 /* IPMonitorControlPrivate.h in Headers */,
15DAD65407591A1A0084A6ED /* SCNetwork.h in Headers */,
15DAD65607591A1A0084A6ED /* SCNetworkReachability.h in Headers */,
F9B7AE6D186211EA00C78D18 /* symbol_scope.h in Headers */,
15DAD65707591A1A0084A6ED /* SCValidation.h in Headers */,
+ 158FC77F1FDAE32600B2493C /* SystemConfigurationInternal.h in Headers */,
15DAD65807591A1A0084A6ED /* DHCPClientPreferences.h in Headers */,
15DAD65907591A1A0084A6ED /* SCDynamicStoreCopyDHCPInfo.h in Headers */,
15DAD65E07591A1A0084A6ED /* dy_framework.h in Headers */,
15CB8F7F1EE4DD4B00726685 /* dnsinfo_logging.h in Headers */,
15E1B04316EBAE3C00E5F06F /* dns-configuration.h in Headers */,
15E1B04916EBAE3C00E5F06F /* libSystemConfiguration_server.h in Headers */,
+ 158FC7871FDAEF7900B2493C /* network_state_information_priv.h in Headers */,
15E1B04816EBAE3C00E5F06F /* network_information_server.h in Headers */,
15CB8F761EE4DD1600726685 /* network_state_information_logging.h in Headers */,
- 15E1B04516EBAE3C00E5F06F /* network_state_information_priv.h in Headers */,
15E1B04616EBAE3C00E5F06F /* proxy-configuration.h in Headers */,
1581BCD81E2867BA00F69B1E /* IPMonitorControlPrefs.h in Headers */,
153E16A71EE5008F0027698E /* SCNetworkReachabilityInternal.h in Headers */,
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
+ 158FC78E1FDB567500B2493C /* liblog_SystemConfiguration_internal.h in Headers */,
15CB8F7D1EE4DD4600726685 /* dnsinfo_logging.h in Headers */,
15CB8F741EE4DD1000726685 /* network_state_information_logging.h in Headers */,
15CB8F871EE4DE3000726685 /* SCNetworkReachabilityLogging.h in Headers */,
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
+ 158FC78F1FDB567900B2493C /* liblog_SystemConfiguration_internal.h in Headers */,
15CB8F801EE4DD4D00726685 /* dnsinfo_logging.h in Headers */,
15CB8F781EE4DD1B00726685 /* network_state_information_logging.h in Headers */,
15CB8F891EE4DE3600726685 /* SCNetworkReachabilityLogging.h in Headers */,
buildConfigurationList = 1572C5290CFB55B400E2776E /* Build configuration list for PBXNativeTarget "SystemConfiguration.framework-Embedded" */;
buildPhases = (
1572C4A80CFB55B400E2776E /* Headers */,
- 153393E40D34999D00FE74E7 /* Update Headers */,
+ 153393E40D34999D00FE74E7 /* Restore temporary headers */,
1572C4DE0CFB55B400E2776E /* Sources */,
1572C5230CFB55B400E2776E /* Frameworks */,
1513C35C1F186BF90022398F /* Update "install_path" for address|thread sanitizers */,
buildPhases = (
157A84F50D56C7E800B6F1A0 /* Headers */,
157A84F90D56C7E800B6F1A0 /* Sources */,
+ F999388720FE546D005EE20D /* CopyFiles */,
);
buildRules = (
);
1583379F0CFB6B9E0033AB93 /* Frameworks */,
1513C35D1F186C0B0022398F /* Update "install_path" for address|thread sanitizers */,
158337A40CFB6B9E0033AB93 /* CopyFiles */,
- 1595B4B81B0C02FA0087944E /* Update SCHelper launchd .plist */,
+ 1595B4B81B0C02FA0087944E /* Rename/update SCHelper launchd .plist */,
);
buildRules = (
);
buildConfigurationList = 15A5A2660D5B94190087BDA0 /* Build configuration list for PBXNativeTarget "SystemConfiguration.framework-EmbeddedSimulator" */;
buildPhases = (
15A5A1E60D5B94190087BDA0 /* Headers */,
- 15A5A2170D5B94190087BDA0 /* Update Headers */,
+ 15A5A2170D5B94190087BDA0 /* Restore temporary headers */,
15A5A21D0D5B94190087BDA0 /* Sources */,
15A5A2620D5B94190087BDA0 /* Frameworks */,
15A5A2180D5B94190087BDA0 /* Resources */,
buildPhases = (
15DAD6AC07591A1A0084A6ED /* SystemConfiguration.order */,
15DAD64107591A1A0084A6ED /* Headers */,
- 15AC82480D376E2400A579D0 /* Update Headers */,
15DAD66C07591A1A0084A6ED /* Sources */,
15DAD6AD07591A1A0084A6ED /* Frameworks */,
15A66BB11F18177100F7253B /* Update "install_path" for address|thread sanitizers */,
productReference = 72D3E6691AE6EAF600DB4C69 /* SCTest-ObjC */;
productType = "com.apple.product-type.tool";
};
+ C4666C70206ED01800247AB6 /* SystemConfigurationEventFactory */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = C4666C77206ED01800247AB6 /* Build configuration list for PBXNativeTarget "SystemConfigurationEventFactory" */;
+ buildPhases = (
+ C4666C6D206ED01800247AB6 /* Sources */,
+ C4666C6E206ED01800247AB6 /* Frameworks */,
+ C4666C6F206ED01800247AB6 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = SystemConfigurationEventFactory;
+ productName = SCEventFactory;
+ productReference = C4666C71206ED01800247AB6 /* SystemConfigurationEventFactory.bundle */;
+ productType = "com.apple.product-type.bundle";
+ };
/* End PBXNativeTarget section */
/* Begin PBXProject section */
15CB6A7705C0722B0099E85F /* Project object */ = {
isa = PBXProject;
attributes = {
- LastUpgradeCheck = 0900;
+ LastUpgradeCheck = 0930;
TargetAttributes = {
72573D251D667372004975AD = {
CreatedOnToolsVersion = 8.0;
72D3E6681AE6EAF600DB4C69 = {
CreatedOnToolsVersion = 7.0;
};
+ C4666C70206ED01800247AB6 = {
+ CreatedOnToolsVersion = 10.0;
+ ProvisioningStyle = Automatic;
+ };
};
};
buildConfigurationList = 156EB63E0905594A00EEF749 /* Build configuration list for PBXProject "configd" */;
155847430754FDCD0046C2E9 /* scutil */,
72573D251D667372004975AD /* sctest */,
151F5D990CCE98E50093AC3B /* SCMonitor */,
+ C4666C70206ED01800247AB6 /* SystemConfigurationEventFactory */,
151C1CC60CFB487000C5AFD6 /* All-Embedded */,
15C64A280F684C6B00D78394 /* configd_libSystem-Embedded */,
157A84D80D56C63900B6F1A0 /* libsystem_configuration-Embedded */,
);
runOnlyForDeploymentPostprocessing = 0;
};
+ C4666C6F206ED01800247AB6 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
shellPath = /bin/sh;
shellScript = "echo ${BUILT_PRODUCTS_DIR}\ncc -o ${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME} ${SRCROOT}/SystemConfiguration.fproj/genSCPreferences.c || exit 1\n${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME} header > ${BUILT_PRODUCTS_DIR}/SCSchemaDefinitions.h || exit 1\n${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME} private > ${BUILT_PRODUCTS_DIR}/SCSchemaDefinitionsPrivate.h || exit 1\n${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME} cfile > ${BUILT_PRODUCTS_DIR}/SCSchemaDefinitions.c || exit 1\nexit 0";
};
- 153393E40D34999D00FE74E7 /* Update Headers */ = {
+ 153393E40D34999D00FE74E7 /* Restore temporary headers */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
- "$(SRCROOT)/SystemConfiguration.fproj/update-headers",
+ "$(SRCROOT)/SystemConfiguration.fproj/restore-temporary-headers",
);
- name = "Update Headers";
+ name = "Restore temporary headers";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "if [ -x ${SCRIPT_INPUT_FILE_0} ]; then\n\t${SCRIPT_INPUT_FILE_0} split\nfi";
+ shellScript = "if [ -x ${SCRIPT_INPUT_FILE_0} ]; then\n ${SCRIPT_INPUT_FILE_0}\nfi\n";
showEnvVarsInLog = 0;
};
1535FEDC1B0FDDCD00B2A3AD /* Add framework symlink (TEMPORARY) */ = {
shellScript = "mkdir -p \"${DSTROOT}/usr/local/bin\"\nln -fs \"${INSTALL_PATH}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/get-mobility-info\" \"${DSTROOT}/usr/local/bin/\"\n";
showEnvVarsInLog = 0;
};
- 1595B4B81B0C02FA0087944E /* Update SCHelper launchd .plist */ = {
+ 1595B4B81B0C02FA0087944E /* Rename/update SCHelper launchd .plist */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 8;
files = (
);
inputPaths = (
);
- name = "Update SCHelper launchd .plist";
+ name = "Rename/update SCHelper launchd .plist";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 1;
shellPath = /bin/sh;
- shellScript = "SCHELPER_LAUNCHD_PLIST=\"${DSTROOT}/System/Library/LaunchDaemons/com.apple.SCHelper-embedded.plist\"\n\nif [ -e \"${SCHELPER_LAUNCHD_PLIST}\" ]; then\n /usr/bin/plutil -replace Program -string \"${INSTALL_PATH}/SCHelper\" \"${SCHELPER_LAUNCHD_PLIST}\"\n /usr/bin/plutil -convert binary1 \"${SCHELPER_LAUNCHD_PLIST}\"\nfi";
+ shellScript = "SCHELPER_LAUNCHD_PLIST_EMBEDDED=\"${DSTROOT}/System/Library/LaunchDaemons/com.apple.SCHelper-embedded.plist\"\nSCHELPER_LAUNCHD_PLIST=\"${DSTROOT}/System/Library/LaunchDaemons/com.apple.SCHelper.plist\"\n\nif [ -e \"${SCHELPER_LAUNCHD_PLIST_EMBEDDED}\" ]; then\n mv \"${SCHELPER_LAUNCHD_PLIST_EMBEDDED}\" \"${SCHELPER_LAUNCHD_PLIST}\"\nfi\n\nif [ -e \"${SCHELPER_LAUNCHD_PLIST}\" ]; then\n /usr/bin/plutil -replace Program -string \"${INSTALL_PATH}/SCHelper\" \"${SCHELPER_LAUNCHD_PLIST}\"\n /usr/bin/plutil -convert binary1 \"${SCHELPER_LAUNCHD_PLIST}\"\nfi";
showEnvVarsInLog = 0;
};
- 15A5A2170D5B94190087BDA0 /* Update Headers */ = {
+ 15A5A2170D5B94190087BDA0 /* Restore temporary headers */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
- "$(SRCROOT)/SystemConfiguration.fproj/update-headers",
+ "$(SRCROOT)/SystemConfiguration.fproj/restore-temporary-headers",
);
- name = "Update Headers";
+ name = "Restore temporary headers";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "if [ -x ${SCRIPT_INPUT_FILE_0} ]; then\n\t${SCRIPT_INPUT_FILE_0} split\nfi";
+ shellScript = "if [ -x ${SCRIPT_INPUT_FILE_0} ]; then\n ${SCRIPT_INPUT_FILE_0}\nfi\n";
showEnvVarsInLog = 0;
};
15A66BB11F18177100F7253B /* Update "install_path" for address|thread sanitizers */ = {
shellScript = "${SRCROOT}/update-sanitizer-dylib-references";
showEnvVarsInLog = 0;
};
- 15AC82480D376E2400A579D0 /* Update Headers */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputPaths = (
- "$(SRCROOT)/SystemConfiguration.fproj/update-headers",
- );
- name = "Update Headers";
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "if [ -x ${SCRIPT_INPUT_FILE_0} ]; then\n\t${SCRIPT_INPUT_FILE_0} clean\nfi\n";
- showEnvVarsInLog = 0;
- };
15AC9A4C1BE3ED87003071BD /* Move libsystem_configuration_(asan|tsan).dylib */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 8;
1572C5000CFB55B400E2776E /* SCPSet.c in Sources */,
1572C5010CFB55B400E2776E /* SCPRemove.c in Sources */,
1572C5020CFB55B400E2776E /* SCPCommit.c in Sources */,
+ F97F9FC9202CBD710040BD50 /* SCNetworkInterfaceProvider.c in Sources */,
1572C5040CFB55B400E2776E /* SCPPath.c in Sources */,
1572C5030CFB55B400E2776E /* SCPApply.c in Sources */,
1572C5060CFB55B400E2776E /* SCDHostName.c in Sources */,
1572C5070CFB55B400E2776E /* SCLocation.c in Sources */,
- 1572C5080CFB55B400E2776E /* SCNetwork.c in Sources */,
1572C50A0CFB55B400E2776E /* SCNetworkConnection.c in Sources */,
1572C50B0CFB55B400E2776E /* SCNetworkConnectionPrivate.c in Sources */,
1572C50C0CFB55B400E2776E /* SCNetworkReachability.c in Sources */,
1596A7B214EDB73D00798C39 /* libSystemConfiguration_server.c in Sources */,
D61AAEB11522C99C0066B003 /* scprefs_observer.c in Sources */,
F9A3781116A4849100C57CDC /* IPMonitorControlPrefs.c in Sources */,
+ F9D7304C20DDBEAB00521181 /* IPMonitorAWDReport.m in Sources */,
+ F9D7304B20DDBE9900521181 /* AWDIPMonitorInterfaceAdvisoryReport.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
D61AAEAF1522C99C0066B003 /* scprefs_observer.c in Sources */,
F9A3781016A4847700C57CDC /* IPMonitorControlPrefs.c in Sources */,
F9B7AE6A186211D300C78D18 /* IPMonitorControlServer.c in Sources */,
+ F9D7305320E4211900521181 /* IPMonitorAWDReport.m in Sources */,
+ F9D7305220E4211900521181 /* AWDIPMonitorInterfaceAdvisoryReport.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
15A5A2430D5B94190087BDA0 /* SCPPath.c in Sources */,
15A5A2450D5B94190087BDA0 /* SCDHostName.c in Sources */,
15A5A2460D5B94190087BDA0 /* SCLocation.c in Sources */,
- 15A5A2470D5B94190087BDA0 /* SCNetwork.c in Sources */,
15A5A2490D5B94190087BDA0 /* SCNetworkConnection.c in Sources */,
15A5A24A0D5B94190087BDA0 /* SCNetworkConnectionPrivate.c in Sources */,
15A5A24B0D5B94190087BDA0 /* SCNetworkReachability.c in Sources */,
15DAD6A707591A1A0084A6ED /* SCNetworkInterface.c in Sources */,
15DAD6A807591A1A0084A6ED /* SCNetworkProtocol.c in Sources */,
15DAD6A907591A1A0084A6ED /* SCNetworkService.c in Sources */,
+ F9AF76C1202CCD86008D3BEB /* SCNetworkInterfaceProvider.c in Sources */,
15DAD6AA07591A1A0084A6ED /* SCNetworkSet.c in Sources */,
55A3DB9E183C2AD900ED3DB7 /* SCNetworkMigration.c in Sources */,
15DAD6AB07591A1A0084A6ED /* BondConfiguration.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
+ C4666C6D206ED01800247AB6 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ C4666C7A206ED27800247AB6 /* EventFactory.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
target = 155847430754FDCD0046C2E9 /* scutil */;
targetProxy = 72C4A47F1BE44D19009D570E /* PBXContainerItemProxy */;
};
+ C453EED22086992B00BF504E /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = C4666C70206ED01800247AB6 /* SystemConfigurationEventFactory */;
+ targetProxy = C453EED12086992B00BF504E /* PBXContainerItemProxy */;
+ };
D6DDAC3D147A24BC00A2E902 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 1547001808455B98006787CE /* SCHelper */;
GENERATE_PROFILING_CODE_profile = YES;
INSTALLHDRS_COPY_PHASE = YES;
INSTALL_PATH = /usr/lib/log;
+ IS_ZIPPERED = YES;
OTHER_CFLAGS_debug = "-O0";
+ OTHER_TAPI_FLAGS = "$(inherited) --extra-private-header=$(PROJECT_DIR)/logging/liblog_SystemConfiguration_internal.h";
PRODUCT_NAME = SystemConfiguration;
STRIP_INSTALLED_PRODUCT_asan = NO;
STRIP_INSTALLED_PRODUCT_debug = NO;
STRIP_INSTALLED_PRODUCT_normal = YES;
STRIP_INSTALLED_PRODUCT_profile = NO;
STRIP_INSTALLED_PRODUCT_tsan = NO;
+ VERSION_INFO_PREFIX = liblog_;
};
name = Debug;
};
GENERATE_PROFILING_CODE_profile = YES;
INSTALLHDRS_COPY_PHASE = YES;
INSTALL_PATH = /usr/lib/log;
+ IS_ZIPPERED = YES;
OTHER_CFLAGS_debug = "-O0";
+ OTHER_TAPI_FLAGS = "$(inherited) --extra-private-header=$(PROJECT_DIR)/logging/liblog_SystemConfiguration_internal.h";
PRODUCT_NAME = SystemConfiguration;
STRIP_INSTALLED_PRODUCT_asan = NO;
STRIP_INSTALLED_PRODUCT_debug = NO;
STRIP_INSTALLED_PRODUCT_normal = YES;
STRIP_INSTALLED_PRODUCT_profile = NO;
STRIP_INSTALLED_PRODUCT_tsan = NO;
+ VERSION_INFO_PREFIX = liblog_;
};
name = Release;
};
155F49A01C864F5400E47D08 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- INFOPLIST_FILE = Plugins/QoSMarking/Info.plist;
+ INFOPLIST_FILE = "Plugins/QoSMarking/Info-Embedded.plist";
INSTALL_PATH = "$(SYSTEM_LIBRARY_DIR)/SystemConfiguration";
PRODUCT_BUNDLE_IDENTIFIER = com.apple.SystemConfiguration.QoSMarking;
PRODUCT_NAME = QoSMarking;
155F49A11C864F5400E47D08 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- INFOPLIST_FILE = Plugins/QoSMarking/Info.plist;
+ INFOPLIST_FILE = "Plugins/QoSMarking/Info-Embedded.plist";
INSTALL_PATH = "$(SYSTEM_LIBRARY_DIR)/SystemConfiguration";
PRODUCT_BUNDLE_IDENTIFIER = com.apple.SystemConfiguration.QoSMarking;
PRODUCT_NAME = QoSMarking;
HEADER_SEARCH_PATHS = "$(SDKROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks/System.framework/PrivateHeaders";
INSTALLHDRS_COPY_PHASE = YES;
INSTALL_PATH = /usr/lib/system;
+ IS_ZIPPERED = YES;
LINK_WITH_STANDARD_LIBRARIES = NO;
OTHER_CFLAGS_debug = "-O0";
OTHER_LDFLAGS = (
"OTHER_LDFLAGS_tsan[sdk=tvossimulator*]" = "$(inherited) -L/usr/local/lib/sanitizers -lclang_rt.tsan_tvosossim_dynamic";
"OTHER_LDFLAGS_tsan[sdk=watchos*]" = "$(inherited) -L/usr/local/lib/sanitizers -lclang_rt.tsan_watchos_dynamic";
"OTHER_LDFLAGS_tsan[sdk=watchsimulator*]" = "$(inherited) -L/usr/local/lib/sanitizers -lclang_rt.tsan_watchossim_dynamic";
+ OTHER_TAPI_FLAGS = "$(inherited) -umbrella System --extra-private-header=$(PROJECT_DIR)/libSystemConfiguration/libSystemConfiguration_internal.h --extra-private-header=$(PROJECT_DIR)/nwi/network_information_internal.h --extra-private-header=$(PROJECT_DIR)/nwi/network_config_agent_info_priv.h";
PRODUCT_NAME = libsystem_configuration;
STRIP_INSTALLED_PRODUCT_asan = NO;
STRIP_INSTALLED_PRODUCT_debug = NO;
HEADER_SEARCH_PATHS = "$(SDKROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks/System.framework/PrivateHeaders";
INSTALLHDRS_COPY_PHASE = YES;
INSTALL_PATH = /usr/lib/system;
+ IS_ZIPPERED = YES;
LINK_WITH_STANDARD_LIBRARIES = NO;
OTHER_CFLAGS_debug = "-O0";
OTHER_LDFLAGS = (
"OTHER_LDFLAGS_tsan[sdk=tvossimulator*]" = "$(inherited) -L/usr/local/lib/sanitizers -lclang_rt.tsan_tvosossim_dynamic";
"OTHER_LDFLAGS_tsan[sdk=watchos*]" = "$(inherited) -L/usr/local/lib/sanitizers -lclang_rt.tsan_watchos_dynamic";
"OTHER_LDFLAGS_tsan[sdk=watchsimulator*]" = "$(inherited) -L/usr/local/lib/sanitizers -lclang_rt.tsan_watchossim_dynamic";
+ OTHER_TAPI_FLAGS = "$(inherited) -umbrella System --extra-private-header=$(PROJECT_DIR)/libSystemConfiguration/libSystemConfiguration_internal.h --extra-private-header=$(PROJECT_DIR)/nwi/network_information_internal.h --extra-private-header=$(PROJECT_DIR)/nwi/network_config_agent_info_priv.h";
PRODUCT_NAME = libsystem_configuration;
STRIP_INSTALLED_PRODUCT_asan = NO;
STRIP_INSTALLED_PRODUCT_debug = NO;
INFOPLIST_FILE = SystemConfiguration.fproj/Info.plist;
INSTALLHDRS_SCRIPT_PHASE = YES;
INSTALL_PATH = "$(SYSTEM_LIBRARY_DIR)/Frameworks";
- LIBRARY_SEARCH_PATHS = "$(SYMROOT)";
+ IS_ZIPPERED = YES;
+ LIBRARY_SEARCH_PATHS = (
+ "$(SYMROOT)",
+ "$(SDKROOT)/usr/local/lib",
+ );
MODULEMAP_FILE = SystemConfiguration.fproj/Modules/sc_modules.modulemap;
OTHER_CFLAGS = (
"$(inherited)",
"-DSC_LOG_OR_PRINT",
);
OTHER_CFLAGS_debug = "-O0";
+ OTHER_TAPI_FLAGS = "$(inherited) -DEXCLUDE_VPN_TUNNEL_PLUGIN_FUNCTIONS -I$(SDKROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks/System.framework/PrivateHeaders --extra-private-header=$(PROJECT_DIR)/SystemConfiguration.fproj/SystemConfigurationInternal.h --extra-private-header=$(PROJECT_DIR)/SystemConfiguration.fproj/SCDynamicStoreInternal.h";
PRODUCT_BUNDLE_IDENTIFIER = com.apple.SystemConfiguration;
PRODUCT_NAME = SystemConfiguration;
WRAPPER_EXTENSION = framework;
INFOPLIST_FILE = SystemConfiguration.fproj/Info.plist;
INSTALLHDRS_SCRIPT_PHASE = YES;
INSTALL_PATH = "$(SYSTEM_LIBRARY_DIR)/Frameworks";
- LIBRARY_SEARCH_PATHS = "$(SYMROOT)";
+ IS_ZIPPERED = YES;
+ LIBRARY_SEARCH_PATHS = (
+ "$(SYMROOT)",
+ "$(SDKROOT)/usr/local/lib",
+ );
MODULEMAP_FILE = SystemConfiguration.fproj/Modules/sc_modules.modulemap;
OTHER_CFLAGS = (
"$(inherited)",
"-DSC_LOG_OR_PRINT",
);
OTHER_CFLAGS_debug = "-O0";
+ OTHER_TAPI_FLAGS = "$(inherited) -DEXCLUDE_VPN_TUNNEL_PLUGIN_FUNCTIONS -I$(SDKROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks/System.framework/PrivateHeaders --extra-private-header=$(PROJECT_DIR)/SystemConfiguration.fproj/SystemConfigurationInternal.h --extra-private-header=$(PROJECT_DIR)/SystemConfiguration.fproj/SCDynamicStoreInternal.h";
PRODUCT_BUNDLE_IDENTIFIER = com.apple.SystemConfiguration;
PRODUCT_NAME = SystemConfiguration;
SECTORDER_FLAGS = (
"${EXTRA_BUILD_VARIANT}",
);
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
"$(inherited)",
"DEBUG=1",
);
+ GCC_TREAT_WARNINGS_AS_ERRORS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNDECLARED_SELECTOR = YES;
RUN_CLANG_STATIC_ANALYZER = YES;
SDKROOT = macosx.internal;
SUPPORTED_PLATFORMS = macosx;
+ SUPPORTS_TEXT_BASED_API = YES;
+ TAPI_VERIFY_MODE = ErrorsAndWarnings;
VERSIONING_SYSTEM = "apple-generic";
WARNING_CFLAGS = (
"-Wall",
"${EXTRA_BUILD_VARIANT}",
);
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
PLIST_FILE_OUTPUT_FORMAT = binary;
SDKROOT = macosx.internal;
SUPPORTED_PLATFORMS = macosx;
+ SUPPORTS_TEXT_BASED_API = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
+ TAPI_VERIFY_MODE = ErrorsAndWarnings;
VERSIONING_SYSTEM = "apple-generic";
WARNING_CFLAGS = (
"-Wall",
"INSTALL_PATH[sdk=appletv*]" = "$(SYSTEM_LIBRARY_DIR)/Frameworks";
"INSTALL_PATH[sdk=iphone*]" = "$(SYSTEM_LIBRARY_DIR)/Frameworks";
"INSTALL_PATH[sdk=watch*]" = "$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks";
- LIBRARY_SEARCH_PATHS = "$(SYMROOT)";
+ IS_ZIPPERED = YES;
+ LIBRARY_SEARCH_PATHS = (
+ "$(SYMROOT)",
+ "$(SDKROOT)/usr/local/lib",
+ );
MODULEMAP_FILE = SystemConfiguration.fproj/Modules/sc_modules.modulemap;
OTHER_CFLAGS = (
"$(inherited)",
"-DSC_LOG_OR_PRINT",
);
+ OTHER_TAPI_FLAGS = "$(inherited) -DEXCLUDE_VPN_TUNNEL_PLUGIN_FUNCTIONS --extra-private-header=$(PROJECT_DIR)/SystemConfiguration.fproj/SystemConfigurationInternal.h --extra-private-header=$(PROJECT_DIR)/SystemConfiguration.fproj/SCDynamicStoreInternal.h -DNO_TAPI_WARNINGS";
PRODUCT_BUNDLE_IDENTIFIER = com.apple.SystemConfiguration;
PRODUCT_NAME = SystemConfiguration;
SDKROOT = iphoneos.internal;
SUPPORTED_PLATFORMS = "iphoneos tvos watchos bridgeos";
"USING_PRIVATE_SYSTEMCONFIGURATION_FRAMEWORK[sdk=appletv*]" = NO;
+ "USING_PRIVATE_SYSTEMCONFIGURATION_FRAMEWORK[sdk=bridge*]" = NO;
"USING_PRIVATE_SYSTEMCONFIGURATION_FRAMEWORK[sdk=iphone*]" = NO;
"USING_PRIVATE_SYSTEMCONFIGURATION_FRAMEWORK[sdk=watch*]" = YES;
WRAPPER_EXTENSION = framework;
"INSTALL_PATH[sdk=appletv*]" = "$(SYSTEM_LIBRARY_DIR)/Frameworks";
"INSTALL_PATH[sdk=iphone*]" = "$(SYSTEM_LIBRARY_DIR)/Frameworks";
"INSTALL_PATH[sdk=watch*]" = "$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks";
- LIBRARY_SEARCH_PATHS = "$(SYMROOT)";
+ IS_ZIPPERED = YES;
+ LIBRARY_SEARCH_PATHS = (
+ "$(SYMROOT)",
+ "$(SDKROOT)/usr/local/lib",
+ );
MODULEMAP_FILE = SystemConfiguration.fproj/Modules/sc_modules.modulemap;
OTHER_CFLAGS = (
"$(inherited)",
"-DSC_LOG_OR_PRINT",
);
+ OTHER_TAPI_FLAGS = "$(inherited) -DEXCLUDE_VPN_TUNNEL_PLUGIN_FUNCTIONS --extra-private-header=$(PROJECT_DIR)/SystemConfiguration.fproj/SystemConfigurationInternal.h --extra-private-header=$(PROJECT_DIR)/SystemConfiguration.fproj/SCDynamicStoreInternal.h -DNO_TAPI_WARNINGS";
PRODUCT_BUNDLE_IDENTIFIER = com.apple.SystemConfiguration;
PRODUCT_NAME = SystemConfiguration;
SDKROOT = iphoneos.internal;
SUPPORTED_PLATFORMS = "iphoneos tvos watchos bridgeos";
"USING_PRIVATE_SYSTEMCONFIGURATION_FRAMEWORK[sdk=appletv*]" = NO;
+ "USING_PRIVATE_SYSTEMCONFIGURATION_FRAMEWORK[sdk=bridge*]" = NO;
"USING_PRIVATE_SYSTEMCONFIGURATION_FRAMEWORK[sdk=iphone*]" = NO;
"USING_PRIVATE_SYSTEMCONFIGURATION_FRAMEWORK[sdk=watch*]" = YES;
WRAPPER_EXTENSION = framework;
GENERATE_PROFILING_CODE_profile = YES;
INSTALLHDRS_COPY_PHASE = YES;
INSTALL_PATH = /usr/lib/system;
+ IS_ZIPPERED = YES;
LINK_WITH_STANDARD_LIBRARIES = NO;
OTHER_LDFLAGS = (
"-Wl,-umbrella,System",
"-lsystem_trace",
"-lxpc",
);
+ OTHER_TAPI_FLAGS = "$(inherited) -umbrella System --extra-private-header=$(PROJECT_DIR)/libSystemConfiguration/libSystemConfiguration_internal.h --extra-private-header=$(PROJECT_DIR)/nwi/network_information_internal.h";
PRIVATE_HEADERS_FOLDER_PATH = /usr/local/include;
PRODUCT_NAME = libsystem_configuration;
PUBLIC_HEADERS_FOLDER_PATH = /usr/local/include;
GENERATE_PROFILING_CODE_profile = YES;
INSTALLHDRS_COPY_PHASE = YES;
INSTALL_PATH = /usr/lib/system;
+ IS_ZIPPERED = YES;
LINK_WITH_STANDARD_LIBRARIES = NO;
OTHER_LDFLAGS = (
"-Wl,-umbrella,System",
"-lsystem_trace",
"-lxpc",
);
+ OTHER_TAPI_FLAGS = "$(inherited) -umbrella System --extra-private-header=$(PROJECT_DIR)/libSystemConfiguration/libSystemConfiguration_internal.h --extra-private-header=$(PROJECT_DIR)/nwi/network_information_internal.h";
PRIVATE_HEADERS_FOLDER_PATH = /usr/local/include;
PRODUCT_NAME = libsystem_configuration;
PUBLIC_HEADERS_FOLDER_PATH = /usr/local/include;
INSTALL_PATH = /usr/lib/system;
INSTALL_PATH_asan = /usr/local/lib;
INSTALL_PATH_tsan = /usr/local/lib;
+ IS_ZIPPERED = YES;
LINK_WITH_STANDARD_LIBRARIES = NO;
OTHER_LDFLAGS = (
"-Wl,-umbrella,System",
"OTHER_LDFLAGS_tsan[sdk=tvossimulator*]" = "$(inherited) -L/usr/local/lib/sanitizers -lclang_rt.tsan_tvosossim_dynamic";
"OTHER_LDFLAGS_tsan[sdk=watchos*]" = "$(inherited) -L/usr/local/lib/sanitizers -lclang_rt.tsan_watchos_dynamic";
"OTHER_LDFLAGS_tsan[sdk=watchsimulator*]" = "$(inherited) -L/usr/local/lib/sanitizers -lclang_rt.tsan_watchossim_dynamic";
+ OTHER_TAPI_FLAGS = "$(inherited) -umbrella System --extra-private-header=$(PROJECT_DIR)/libSystemConfiguration/libSystemConfiguration_internal.h --extra-private-header=$(PROJECT_DIR)/nwi/network_information_internal.h --extra-private-header=$(PROJECT_DIR)/nwi/network_config_agent_info_priv.h";
PRODUCT_NAME = libsystem_configuration;
SDKROOT = iphoneos.internal;
STRIP_INSTALLED_PRODUCT_asan = NO;
INSTALL_PATH = /usr/lib/system;
INSTALL_PATH_asan = /usr/local/lib;
INSTALL_PATH_tsan = /usr/local/lib;
+ IS_ZIPPERED = YES;
LINK_WITH_STANDARD_LIBRARIES = NO;
OTHER_LDFLAGS = (
"-Wl,-umbrella,System",
"OTHER_LDFLAGS_tsan[sdk=tvossimulator*]" = "$(inherited) -L/usr/local/lib/sanitizers -lclang_rt.tsan_tvosossim_dynamic";
"OTHER_LDFLAGS_tsan[sdk=watchos*]" = "$(inherited) -L/usr/local/lib/sanitizers -lclang_rt.tsan_watchos_dynamic";
"OTHER_LDFLAGS_tsan[sdk=watchsimulator*]" = "$(inherited) -L/usr/local/lib/sanitizers -lclang_rt.tsan_watchossim_dynamic";
+ OTHER_TAPI_FLAGS = "$(inherited) -umbrella System --extra-private-header=$(PROJECT_DIR)/libSystemConfiguration/libSystemConfiguration_internal.h --extra-private-header=$(PROJECT_DIR)/nwi/network_information_internal.h --extra-private-header=$(PROJECT_DIR)/nwi/network_config_agent_info_priv.h";
PRODUCT_NAME = libsystem_configuration;
SDKROOT = iphoneos.internal;
STRIP_INSTALLED_PRODUCT_asan = NO;
"INSTALL_PATH[sdk=appletv*]" = "$(SYSTEM_LIBRARY_DIR)/Frameworks";
"INSTALL_PATH[sdk=iphone*]" = "$(SYSTEM_LIBRARY_DIR)/Frameworks";
"INSTALL_PATH[sdk=watch*]" = "$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks";
- LIBRARY_SEARCH_PATHS = "$(SYMROOT)";
+ IS_ZIPPERED = YES;
+ LIBRARY_SEARCH_PATHS = (
+ "$(SYMROOT)",
+ "$(SDKROOT)/usr/local/lib",
+ );
MODULEMAP_FILE = SystemConfiguration.fproj/Modules/sc_modules.modulemap;
OTHER_CFLAGS = (
"$(inherited)",
"$(SYSTEM_LIBRARY_DIR)/Frameworks/System.framework/PrivateHeaders",
"-DSC_LOG_OR_PRINT",
);
+ OTHER_TAPI_FLAGS = "$(inherited) -DEXCLUDE_VPN_TUNNEL_PLUGIN_FUNCTIONS --extra-private-header=$(PROJECT_DIR)/SystemConfiguration.fproj/SystemConfigurationInternal.h --extra-private-header=$(PROJECT_DIR)/SystemConfiguration.fproj/SCDynamicStoreInternal.h -DNO_TAPI_WARNINGS";
PRODUCT_BUNDLE_IDENTIFIER = com.apple.SystemConfiguration;
PRODUCT_NAME = SystemConfiguration;
SDKROOT = iphoneos.internal;
SUPPORTED_PLATFORMS = "iphonesimulator tvossimulator watchsimulator bridgesimulator";
"USING_PRIVATE_SYSTEMCONFIGURATION_FRAMEWORK[sdk=appletv*]" = NO;
+ "USING_PRIVATE_SYSTEMCONFIGURATION_FRAMEWORK[sdk=bridge*]" = NO;
"USING_PRIVATE_SYSTEMCONFIGURATION_FRAMEWORK[sdk=iphone*]" = NO;
"USING_PRIVATE_SYSTEMCONFIGURATION_FRAMEWORK[sdk=watch*]" = YES;
WRAPPER_EXTENSION = framework;
"INSTALL_PATH[sdk=appletv*]" = "$(SYSTEM_LIBRARY_DIR)/Frameworks";
"INSTALL_PATH[sdk=iphone*]" = "$(SYSTEM_LIBRARY_DIR)/Frameworks";
"INSTALL_PATH[sdk=watch*]" = "$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks";
- LIBRARY_SEARCH_PATHS = "$(SYMROOT)";
+ IS_ZIPPERED = YES;
+ LIBRARY_SEARCH_PATHS = (
+ "$(SYMROOT)",
+ "$(SDKROOT)/usr/local/lib",
+ );
MODULEMAP_FILE = SystemConfiguration.fproj/Modules/sc_modules.modulemap;
OTHER_CFLAGS = (
"$(inherited)",
"$(SYSTEM_LIBRARY_DIR)/Frameworks/System.framework/PrivateHeaders",
"-DSC_LOG_OR_PRINT",
);
+ OTHER_TAPI_FLAGS = "$(inherited) -DEXCLUDE_VPN_TUNNEL_PLUGIN_FUNCTIONS --extra-private-header=$(PROJECT_DIR)/SystemConfiguration.fproj/SystemConfigurationInternal.h --extra-private-header=$(PROJECT_DIR)/SystemConfiguration.fproj/SCDynamicStoreInternal.h -DNO_TAPI_WARNINGS";
PRODUCT_BUNDLE_IDENTIFIER = com.apple.SystemConfiguration;
PRODUCT_NAME = SystemConfiguration;
SDKROOT = iphoneos.internal;
SUPPORTED_PLATFORMS = "iphonesimulator tvossimulator watchsimulator bridgesimulator";
"USING_PRIVATE_SYSTEMCONFIGURATION_FRAMEWORK[sdk=appletv*]" = NO;
+ "USING_PRIVATE_SYSTEMCONFIGURATION_FRAMEWORK[sdk=bridge*]" = NO;
"USING_PRIVATE_SYSTEMCONFIGURATION_FRAMEWORK[sdk=iphone*]" = NO;
"USING_PRIVATE_SYSTEMCONFIGURATION_FRAMEWORK[sdk=watch*]" = YES;
WRAPPER_EXTENSION = framework;
GENERATE_PROFILING_CODE_profile = YES;
INSTALLHDRS_COPY_PHASE = YES;
INSTALL_PATH = /usr/lib/log;
+ IS_ZIPPERED = YES;
OTHER_CFLAGS_debug = "-O0";
+ OTHER_TAPI_FLAGS = "$(inherited) --extra-private-header=$(PROJECT_DIR)/logging/liblog_SystemConfiguration_internal.h";
PRODUCT_NAME = SystemConfiguration;
SDKROOT = iphoneos.internal;
STRIP_INSTALLED_PRODUCT_asan = NO;
STRIP_INSTALLED_PRODUCT_profile = NO;
STRIP_INSTALLED_PRODUCT_tsan = NO;
SUPPORTED_PLATFORMS = "iphoneos tvos watchos bridgeos";
+ VERSION_INFO_PREFIX = liblog_;
};
name = Debug;
};
GENERATE_PROFILING_CODE_profile = YES;
INSTALLHDRS_COPY_PHASE = YES;
INSTALL_PATH = /usr/lib/log;
+ IS_ZIPPERED = YES;
OTHER_CFLAGS_debug = "-O0";
+ OTHER_TAPI_FLAGS = "$(inherited) --extra-private-header=$(PROJECT_DIR)/logging/liblog_SystemConfiguration_internal.h";
PRODUCT_NAME = SystemConfiguration;
SDKROOT = iphoneos.internal;
STRIP_INSTALLED_PRODUCT_asan = NO;
STRIP_INSTALLED_PRODUCT_profile = NO;
STRIP_INSTALLED_PRODUCT_tsan = NO;
SUPPORTED_PLATFORMS = "iphoneos tvos watchos bridgeos";
+ VERSION_INFO_PREFIX = liblog_;
};
name = Release;
};
GENERATE_PROFILING_CODE_profile = YES;
INSTALLHDRS_COPY_PHASE = YES;
INSTALL_PATH = /usr/lib/log;
+ IS_ZIPPERED = YES;
OTHER_CFLAGS_debug = "-O0";
+ OTHER_TAPI_FLAGS = "$(inherited) --extra-private-header=$(PROJECT_DIR)/logging/liblog_SystemConfiguration_internal.h";
PRODUCT_NAME = SystemConfiguration;
SDKROOT = iphoneos.internal;
STRIP_INSTALLED_PRODUCT_asan = NO;
STRIP_INSTALLED_PRODUCT_profile = NO;
STRIP_INSTALLED_PRODUCT_tsan = NO;
SUPPORTED_PLATFORMS = "iphonesimulator tvossimulator watchsimulator bridgesimulator";
+ VERSION_INFO_PREFIX = liblog_;
};
name = Debug;
};
GENERATE_PROFILING_CODE_profile = YES;
INSTALLHDRS_COPY_PHASE = YES;
INSTALL_PATH = /usr/lib/log;
+ IS_ZIPPERED = YES;
OTHER_CFLAGS_debug = "-O0";
+ OTHER_TAPI_FLAGS = "$(inherited) --extra-private-header=$(PROJECT_DIR)/logging/liblog_SystemConfiguration_internal.h";
PRODUCT_NAME = SystemConfiguration;
SDKROOT = iphoneos.internal;
STRIP_INSTALLED_PRODUCT_asan = NO;
STRIP_INSTALLED_PRODUCT_profile = NO;
STRIP_INSTALLED_PRODUCT_tsan = NO;
SUPPORTED_PLATFORMS = "iphonesimulator tvossimulator watchsimulator bridgesimulator";
+ VERSION_INFO_PREFIX = liblog_;
};
name = Release;
};
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- MACOSX_DEPLOYMENT_TARGET = 10.11;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- MACOSX_DEPLOYMENT_TARGET = 10.11;
MTL_ENABLE_DEBUG_INFO = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = macosx;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- MACOSX_DEPLOYMENT_TARGET = 10.11;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- MACOSX_DEPLOYMENT_TARGET = 10.11;
MTL_ENABLE_DEBUG_INFO = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = macosx;
};
name = Release;
};
+ C4666C75206ED01800247AB6 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_IDENTITY = "-";
+ CODE_SIGN_STYLE = Automatic;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(SDKROOT)$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks",
+ "$(SDKROOT)$(APPLE_INTERNAL_LIBRARY_DIR)/Frameworks",
+ );
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ INFOPLIST_FILE = EventFactory/Info.plist;
+ INSTALL_PATH = "$(APPLE_INTERNAL_LIBRARY_DIR)/Frameworks/EventFactory.framework/PlugIns";
+ MACOSX_DEPLOYMENT_TARGET = 10.14;
+ MTL_ENABLE_DEBUG_INFO = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = "com.apple.$(TARGET_NAME)";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = macosx.internal;
+ SKIP_INSTALL = NO;
+ };
+ name = Debug;
+ };
+ C4666C76206ED01800247AB6 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_IDENTITY = "-";
+ CODE_SIGN_STYLE = Automatic;
+ COPY_PHASE_STRIP = NO;
+ ENABLE_NS_ASSERTIONS = NO;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(SDKROOT)$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks",
+ "$(SDKROOT)$(APPLE_INTERNAL_LIBRARY_DIR)/Frameworks",
+ );
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ INFOPLIST_FILE = EventFactory/Info.plist;
+ INSTALL_PATH = "$(APPLE_INTERNAL_LIBRARY_DIR)/Frameworks/EventFactory.framework/PlugIns";
+ MACOSX_DEPLOYMENT_TARGET = 10.14;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ PRODUCT_BUNDLE_IDENTIFIER = "com.apple.$(TARGET_NAME)";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = macosx.internal;
+ SKIP_INSTALL = NO;
+ };
+ name = Release;
+ };
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
+ C4666C77206ED01800247AB6 /* Build configuration list for PBXNativeTarget "SystemConfigurationEventFactory" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ C4666C75206ED01800247AB6 /* Debug */,
+ C4666C76206ED01800247AB6 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
/* End XCConfigurationList section */
};
rootObject = 15CB6A7705C0722B0099E85F /* Project object */;
/*
- * Copyright (c) 2004-2006, 2008, 2009, 2011-2013, 2015-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2004-2006, 2008, 2009, 2011-2013, 2015-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
* These routines provide access to the systems DNS configuration
*/
-#include <Availability.h>
+#include <os/availability.h>
#include <sys/cdefs.h>
#include <stdint.h>
#include <sys/types.h>
* DNS configuration access APIs
*/
const char *
-dns_configuration_notify_key () __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0);
+dns_configuration_notify_key (void) API_AVAILABLE(macos(10.4), ios(2.0));
dns_config_t *
-dns_configuration_copy () __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0);
+dns_configuration_copy (void) API_AVAILABLE(macos(10.4), ios(2.0));
void
-dns_configuration_free (dns_config_t *config) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0);
+dns_configuration_free (dns_config_t *config) API_AVAILABLE(macos(10.4), ios(2.0));
void
_dns_configuration_ack (dns_config_t *config,
- const char *bundle_id) __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0);
+ const char *bundle_id) API_AVAILABLE(macos(10.8), ios(6.0));
__END_DECLS
/*
- * Copyright (c) 2004-2006, 2009, 2011-2013, 2015-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2004-2006, 2009, 2011-2013, 2015-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
/*
- * Copyright (c) 2004-2006, 2008, 2009, 2011-2013, 2015, 2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2004-2006, 2008, 2009, 2011-2013, 2015, 2017, 2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
*/
#include <TargetConditionals.h>
-#include <Availability.h>
+#include <os/availability.h>
#include <sys/cdefs.h>
#include <stdint.h>
#include <sys/types.h>
* DNS configuration creation APIs
*/
dns_create_config_t
-_dns_configuration_create (void) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0);
+_dns_configuration_create (void) API_AVAILABLE(macos(10.4), ios(2.0));
void
_dns_configuration_add_resolver (dns_create_config_t *_config,
- dns_create_resolver_t _resolver) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0);
+ dns_create_resolver_t _resolver) API_AVAILABLE(macos(10.4), ios(2.0));
void
_dns_configuration_signature (dns_create_config_t *_config,
unsigned char *signature,
- size_t signature_len) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0); // signature_len >= CC_SHA1_DIGEST_LENGTH
+ size_t signature_len) API_AVAILABLE(macos(10.7), ios(5.0)); // signature_len >= CC_SHA1_DIGEST_LENGTH
void
-_dns_configuration_free (dns_create_config_t *_config) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0);
+_dns_configuration_free (dns_create_config_t *_config) API_AVAILABLE(macos(10.4), ios(2.0));
/*
* DNS [resolver] configuration creation APIs
*/
dns_create_resolver_t
-_dns_resolver_create (void) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0);
+_dns_resolver_create (void) API_AVAILABLE(macos(10.4), ios(2.0));
void
_dns_resolver_set_domain (dns_create_resolver_t *_resolver,
- const char *domain) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0);
+ const char *domain) API_AVAILABLE(macos(10.4), ios(2.0));
void
_dns_resolver_add_nameserver (dns_create_resolver_t *_resolver,
- struct sockaddr *nameserver) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0);
+ struct sockaddr *nameserver) API_AVAILABLE(macos(10.4), ios(2.0));
void
_dns_resolver_add_search (dns_create_resolver_t *_resolver,
- const char *search) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0);
+ const char *search) API_AVAILABLE(macos(10.4), ios(2.0));
void
_dns_resolver_add_sortaddr (dns_create_resolver_t *_resolver,
- dns_sortaddr_t *sortaddr) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0);
+ dns_sortaddr_t *sortaddr) API_AVAILABLE(macos(10.4), ios(2.0));
void
_dns_resolver_set_configuration_identifier
(dns_create_resolver_t *_resolver,
- const char *config_identifier) __OSX_AVAILABLE_STARTING(__MAC_10_11,__IPHONE_9_0);
+ const char *config_identifier) API_AVAILABLE(macos(10.11), ios(9.0));
void
_dns_resolver_set_flags (dns_create_resolver_t *_resolver,
- uint32_t flags) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0);
+ uint32_t flags) API_AVAILABLE(macos(10.7), ios(4.0));
void
_dns_resolver_set_if_index (dns_create_resolver_t *_resolver,
uint32_t if_index,
- const char *if_name) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0);
+ const char *if_name) API_AVAILABLE(macos(10.7), ios(4.0));
void
_dns_resolver_set_options (dns_create_resolver_t *_resolver,
- const char *options) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0);
+ const char *options) API_AVAILABLE(macos(10.4), ios(2.0));
void
_dns_resolver_set_order (dns_create_resolver_t *_resolver,
- uint32_t order) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0);
+ uint32_t order) API_AVAILABLE(macos(10.4), ios(2.0));
void
_dns_resolver_set_port (dns_create_resolver_t *_resolver,
- uint16_t port) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0); // host byte order
+ uint16_t port) API_AVAILABLE(macos(10.4), ios(2.0)); // host byte order
void
_dns_resolver_set_timeout (dns_create_resolver_t *_resolver,
- uint32_t timeout) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0);
+ uint32_t timeout) API_AVAILABLE(macos(10.4), ios(2.0));
void
_dns_resolver_set_service_identifier
(dns_create_resolver_t *_resolver,
- uint32_t service_identifier) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
+ uint32_t service_identifier) API_AVAILABLE(macos(10.9), ios(7.0));
void
-_dns_resolver_free (dns_create_resolver_t *_resolver) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0);
+_dns_resolver_free (dns_create_resolver_t *_resolver) API_AVAILABLE(macos(10.4), ios(2.0));
#if !TARGET_OS_IPHONE
/*
* DNS [resolver] flat-file configuration creation APIs
*/
void
-_dnsinfo_flatfile_add_resolvers (dns_create_config_t *config) __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA);
+_dnsinfo_flatfile_add_resolvers (dns_create_config_t *config) API_AVAILABLE(macos(10.6)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
void
-_dnsinfo_flatfile_set_flags (uint32_t flags) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_NA);
+_dnsinfo_flatfile_set_flags (uint32_t flags) API_AVAILABLE(macos(10.9)) API_UNAVAILABLE(ios, tvos, watchos, bridgeos);
#endif // !TARGET_OS_IPHONE
__END_DECLS
/*
- * Copyright (c) 2013, 2015-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2013, 2015-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#ifndef _S_DNSINFO_INTERNAL_H
#define _S_DNSINFO_INTERNAL_H
-#include <Availability.h>
+#include <os/availability.h>
#include <TargetConditionals.h>
#include <sys/cdefs.h>
-#include <SystemConfiguration/SystemConfiguration.h>
-#include <SystemConfiguration/SCPrivate.h>
+#include <SystemConfiguration/SCPrivate.h> // for SC_log
#include <arpa/inet.h>
#include <dnsinfo.h>
/*
- * Copyright (c) 2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2017, 2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#ifndef _S_DNSINFO_LOGGING_H
#define _S_DNSINFO_LOGGING_H
-#include <Availability.h>
+#include <os/availability.h>
#include <TargetConditionals.h>
#include <sys/cdefs.h>
#include <CoreFoundation/CoreFoundation.h>
/*
- * Copyright (c) 2004-2006, 2008, 2009, 2012, 2013, 2015, 2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2004-2006, 2008, 2009, 2012, 2013, 2015, 2017, 2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#define __DNSINFO_PRIVATE_H__
-#include <Availability.h>
+#include <os/availability.h>
#include <sys/cdefs.h>
#include <stdint.h>
#include <sys/types.h>
# get-network-info
#
if [ -x /System/Library/Frameworks/SystemConfiguration.framework/Resources/get-network-info ]; then
- /System/Library/Frameworks/SystemConfiguration.framework/Resources/get-network-info -s -c -P "${WORKDIR}"
+ /bin/sh /System/Library/Frameworks/SystemConfiguration.framework/Resources/get-network-info -s -c -P "${WORKDIR}"
elif [ -x /System/Library/Frameworks/SystemConfiguration.framework/get-network-info ]; then
- /System/Library/Frameworks/SystemConfiguration.framework/get-network-info -s -c -P "${WORKDIR}"
+ /bin/sh /System/Library/Frameworks/SystemConfiguration.framework/get-network-info -s -c -P "${WORKDIR}"
elif [ -x /System/Library/PrivateFrameworks/SystemConfiguration.framework/get-network-info ]; then
- /System/Library/PrivateFrameworks/SystemConfiguration.framework/get-network-info -s -c -P "${WORKDIR}"
+ /bin/sh /System/Library/PrivateFrameworks/SystemConfiguration.framework/get-network-info -s -c -P "${WORKDIR}"
fi
#
/Library/Preferences/com.apple.networkextension.control.plist \
/Library/Preferences/com.apple.networkextension.necp.plist \
/Library/Preferences/com.apple.networkextension.cache.plist \
+ /Library/Preferences/com.apple.networkextension.uuidcache.plist \
/Library/Preferences/SystemConfiguration/com.apple.nat.plist \
/Library/Preferences/SystemConfiguration/com.apple.RemoteAccessServers.plist \
/Library/Preferences/SystemConfiguration/com.apple.smb.server.plist \
/*
- * Copyright (c) 2012, 2013, 2015, 2016 Apple Inc. All rights reserved.
+ * Copyright (c) 2012, 2013, 2015, 2016, 2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
* @APPLE_LICENSE_HEADER_END@
*/
-#include <Availability.h>
+#include <os/availability.h>
#include <TargetConditionals.h>
#include <dispatch/dispatch.h>
#include <dispatch/private.h>
#include <xpc/xpc.h>
#include "libSystemConfiguration_client.h"
+#include "libSystemConfiguration_internal.h"
#pragma mark -
{
xpc_connection_t c;
libSC_info_client_t *client;
-#if !TARGET_OS_SIMULATOR
+#if !TARGET_OS_SIMULATOR || TARGET_OS_IOSMAC
const uint64_t flags = XPC_CONNECTION_MACH_SERVICE_PRIVILEGED;
-#else // !TARGET_OS_SIMULATOR
+#else // !TARGET_OS_SIMULATOR || TARGET_OS_IOSMAC
const uint64_t flags = 0;
-#endif // !TARGET_OS_SIMULATOR
+#endif // !TARGET_OS_SIMULATOR || TARGET_OS_IOSMAC
if (!_available) {
return NULL;
/*
- * Copyright (c) 2012, 2013, 2015, 2016 Apple Inc. All rights reserved.
+ * Copyright (c) 2012, 2013, 2015-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#ifndef _LIBSYSTEMCONFIGURATION_CLIENT_H
#define _LIBSYSTEMCONFIGURATION_CLIENT_H
-#include <Availability.h>
+#include <os/availability.h>
#include <TargetConditionals.h>
#include <sys/cdefs.h>
#include <dispatch/dispatch.h>
#define DNSINFO_SERVER_VERSION 20130408
-#if !TARGET_OS_SIMULATOR
+#if !TARGET_OS_SIMULATOR || TARGET_OS_IOSMAC
#define DNSINFO_SERVICE_NAME "com.apple.SystemConfiguration.DNSConfiguration"
-#else // !TARGET_OS_SIMULATOR
+#else // !TARGET_OS_SIMULATOR || TARGET_OS_IOSMAC
#define DNSINFO_SERVICE_NAME "com.apple.SystemConfiguration.DNSConfiguration_sim"
-#endif // !TARGET_OS_SIMULATOR
+#endif // !TARGET_OS_SIMULATOR || TARGET_OS_IOSMAC
#define DNSINFO_PROC_NAME "proc_name" // string
#define NWI_SERVER_VERSION 20130408
-#if !TARGET_OS_SIMULATOR
+#if !TARGET_OS_SIMULATOR || TARGET_OS_IOSMAC
#define NWI_SERVICE_NAME "com.apple.SystemConfiguration.NetworkInformation"
-#else // !TARGET_OS_SIMULATOR
+#else // !TARGET_OS_SIMULATOR || TARGET_OS_IOSMAC
#define NWI_SERVICE_NAME "com.apple.SystemConfiguration.NetworkInformation_sim"
-#endif // !TARGET_OS_SIMULATOR
+#endif // !TARGET_OS_SIMULATOR || TARGET_OS_IOSMAC
#define NWI_PROC_NAME "proc_name" // string
NWI_STATE_REQUEST_COPY = 0x20001,
NWI_STATE_REQUEST_ACKNOWLEDGE,
-#if !TARGET_OS_SIMULATOR
+#if !TARGET_OS_SIMULATOR || TARGET_OS_IOSMAC
/* NWI config agent requests */
NWI_CONFIG_AGENT_REQUEST_COPY
-#endif // !TARGET_OS_SIMULATOR
+#endif // !TARGET_OS_SIMULATOR || TARGET_OS_IOSMAC
};
#define NWI_CONFIGURATION "configuration" // data
__BEGIN_DECLS
_Bool
-libSC_info_available ();
+libSC_info_available (void);
libSC_info_client_t *
libSC_info_client_create (
__END_DECLS
-#endif // _LIBSYSTEMCONFIGURATION_CLIENT_H
+#endif // _LIBSYSTEMCONFIGURATION_CLIENT_H
--- /dev/null
+/*
+ * Copyright (c) 2018 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 _LIBSYSTEMCONFIGURATION_INTERNAL_H
+#define _LIBSYSTEMCONFIGURATION_INTERNAL_H
+
+#include <os/availability.h>
+#include <TargetConditionals.h>
+#include <sys/cdefs.h>
+
+extern const unsigned char * libsystem_configurationVersionString;
+extern const double libsystem_configurationVersionNumber;
+
+__BEGIN_DECLS
+
+void
+_libSC_info_fork_prepare (void);
+
+void
+_libSC_info_fork_parent (void);
+
+void
+_libSC_info_fork_child (void);
+
+__END_DECLS
+
+#endif // _LIBSYSTEMCONFIGURATION_INTERNAL_H
/*
- * Copyright (c) 2012-2016 Apple Inc. All rights reserved.
+ * Copyright (c) 2012-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
* @APPLE_LICENSE_HEADER_END@
*/
-#include <Availability.h>
+#include <os/availability.h>
#include <TargetConditionals.h>
#include <dispatch/dispatch.h>
#include <vproc.h>
/*
- * Copyright (c) 2012 Apple Inc. All rights reserved.
+ * Copyright (c) 2012, 2018 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,
* 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 _LIBSYSTEMCONFIGURATION_SERVER_H
#define _LIBSYSTEMCONFIGURATION_SERVER_H
-#include <Availability.h>
+#include <os/availability.h>
#include <TargetConditionals.h>
#include <sys/cdefs.h>
#include <dispatch/dispatch.h>
__END_DECLS
-#endif // _LIBSYSTEMCONFIGURATION_SERVER_H
+#endif // _LIBSYSTEMCONFIGURATION_SERVER_H
--- /dev/null
+/*
+ * Copyright (c) 2018 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 _LIBLOG_SYSTEMCONFIGURATION_INTERNAL_H
+#define _LIBLOG_SYSTEMCONFIGURATION_INTERNAL_H
+
+#include <os/availability.h>
+#include <TargetConditionals.h>
+#include <sys/cdefs.h>
+#include <os/log_private.h>
+#include <os/state_private.h>
+
+extern const unsigned char * liblog_SystemConfigurationVersionString;
+extern const double liblog_SystemConfigurationVersionNumber;
+
+// <os/log_private.h>
+#ifdef __OBJC__
+#import <Foundation/NSObjCRuntime.h>
+#import <Foundation/NSAttributedString.h>
+typedef NSAttributedString *(*os_log_copy_formatted_fn_t)(const char *type,
+ id value, os_log_type_info_t info);
+OS_EXPORT NS_RETURNS_RETAINED
+NSAttributedString *
+OSLogCopyFormattedString(const char *type, id value, os_log_type_info_t info);
+#endif
+
+// <os/state_private.h>
+#ifdef __OBJC__
+#import <Foundation/NSString.h>
+typedef NSString *
+(*os_state_create_string_fn_t)(const char *data_type,
+ uint32_t data_size, void *data);
+OS_EXPORT NS_RETURNS_RETAINED
+NSString *
+OSStateCreateStringWithData(const char *data_type, uint32_t data_size, void *data);
+#endif
+
+__BEGIN_DECLS
+
+__END_DECLS
+
+#endif // _LIBLOG_SYSTEMCONFIGURATION_INTERNAL_H
/*
- * Copyright (c) 2011-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2011-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
flags |= flags_from_af(ifstate->af);
if ((ifstate->flags & NWI_IFSTATE_FLAGS_HAS_DNS) != 0) {
flags |= NWI_IFSTATE_FLAGS_HAS_DNS;
-
+ }
+ if ((ifstate->flags & NWI_IFSTATE_FLAGS_HAS_CLAT46) != 0) {
+ flags |= NWI_IFSTATE_FLAGS_HAS_CLAT46;
}
if (alias != NULL) {
flags |= flags_from_af(alias->af);
if ((alias->flags & NWI_IFSTATE_FLAGS_HAS_DNS) != 0) {
flags |= NWI_IFSTATE_FLAGS_HAS_DNS;
}
+ if ((alias->flags & NWI_IFSTATE_FLAGS_HAS_CLAT46) != 0) {
+ flags |= NWI_IFSTATE_FLAGS_HAS_CLAT46;
+ }
}
return flags;
}
sizeof(vpn_ntopbuf));
}
diff_str = nwi_ifstate_get_diff_str(ifstate);
- printf("%s%s%s%s rank 0x%x iaddr %s%s%s reach_flags 0x%x\n",
+ printf("%s%s%s%s%s rank 0x%x iaddr %s%s%s reach_flags 0x%x\n",
ifstate->ifname,
diff_str,
(ifstate->flags & NWI_IFSTATE_FLAGS_HAS_DNS) != 0
- ? " dns" : "",
+ ? " dns" : "",
+ (ifstate->flags & NWI_IFSTATE_FLAGS_HAS_CLAT46) != 0
+ ? " clat46" : "",
(ifstate->flags & NWI_IFSTATE_FLAGS_NOT_IN_LIST) != 0
- ? " never" : "",
+ ? " never" : "",
ifstate->rank,
addr_str,
(vpn_addr_str != NULL) ? " vpn_server_addr: " : "",
/*
- * Copyright (c) 2011-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2011-2018 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,
* 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 _NETWORK_INFORMATION_H_
#define _NETWORK_INFORMATION_H_
+#include <os/availability.h>
#include <stdint.h>
#include <sys/cdefs.h>
-#include <Availability.h>
typedef struct _nwi_state * nwi_state_t;
typedef struct _nwi_ifstate * nwi_ifstate_t;
*/
void
_nwi_state_ack(nwi_state_t state, const char *bundle_id)
- __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0);
+ API_AVAILABLE(macos(10.8), ios(6.0));
/*
* Function: nwi_state_get_reachability_flags
*/
unsigned int
nwi_state_get_interface_names(nwi_state_t state,
- const char * names[],
+ const char * names[],
unsigned int names_count);
/*
--- /dev/null
+/*
+ * Copyright (c) 2018 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 _NETWORK_INFORMATION_INTERNAL_H
+#define _NETWORK_INFORMATION_INTERNAL_H
+
+#include <os/availability.h>
+#include <TargetConditionals.h>
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
+void
+_nwi_state_force_refresh (void);
+
+__END_DECLS
+
+#endif // _NETWORK_INFORMATION_INTERNAL_H
/*
- * Copyright (c) 2012-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2012-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#include "libSystemConfiguration_server.h"
#include <network_information.h>
-#include "network_state_information_priv.h"
+#include "network_information_internal.h"
#include "network_information_server.h"
+#include "network_state_information_priv.h"
-#if !TARGET_OS_SIMULATOR
+#if !TARGET_OS_SIMULATOR
#include "agent-monitor.h"
#include "configAgentDefines.h"
#include "network_config_agent_info_priv.h"
-#endif // !TARGET_OS_SIMULATOR
+#endif // !TARGET_OS_SIMULATOR
#ifdef SC_LOG_HANDLE
#include <os/log.h>
return;
}
-#if !TARGET_OS_SIMULATOR
+#if !TARGET_OS_SIMULATOR
/*
* _nwi_config_agent_copy
*
return;
}
-#endif // !TARGET_OS_SIMULATOR
+#endif // !TARGET_OS_SIMULATOR
static void
_nwi_state_acknowledge(connection, request);
break;
-#if !TARGET_OS_SIMULATOR
+#if !TARGET_OS_SIMULATOR
case NWI_CONFIG_AGENT_REQUEST_COPY :
/*
* Return the agent information
_nwi_config_agent_copy(connection, request);
break;
-#endif // !TARGET_OS_SIMULATOR
+#endif // !TARGET_OS_SIMULATOR
default :
SC_log(LOG_ERR, "<%p> unknown request : %lld",
connection,
return 0;
}
-#endif /* MAIN */
+#endif /* MAIN */
/*
- * Copyright (c) 2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2017, 2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#ifndef _NETWORK_STATE_INFORMATION_LOGGING_H
#define _NETWORK_STATE_INFORMATION_LOGGING_H
-#include <Availability.h>
+#include <os/availability.h>
#include <TargetConditionals.h>
#include <sys/cdefs.h>
#include <CoreFoundation/CoreFoundation.h>
remaining &= ~NWI_IFSTATE_FLAGS_HAS_DNS;
}
+ if ((remaining & NWI_IFSTATE_FLAGS_HAS_CLAT46) &&
+ (n < len) && ((len - n) > sizeof("CLAT46,"))) {
+ n = strlcat(str, "CLAT46,", len);
+ remaining &= ~NWI_IFSTATE_FLAGS_HAS_CLAT46;
+ }
+
if ((remaining & NWI_IFSTATE_FLAGS_NOT_IN_LIST) &&
(n < len) && ((len - n) > sizeof("NOT-IN-LIST,"))) {
n = strlcat(str, "NOT-IN-LIST,", len);
__END_DECLS
-#endif // _NETWORK_STATE_INFORMATION_LOGGING_H
+#endif // _NETWORK_STATE_INFORMATION_LOGGING_H
/*
- * Copyright (c) 2011-2015, 2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2011-2015, 2017, 2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
/*
- * Copyright (c) 2011-2013, 2016, 2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2011-2013, 2016-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#define NWI_IFSTATE_FLAGS_NOT_IN_LIST 0x0008
#define NWI_IFSTATE_FLAGS_HAS_SIGNATURE 0x0010
#define NWI_IFSTATE_FLAGS_NOT_IN_IFLIST 0x0020
+#define NWI_IFSTATE_FLAGS_HAS_CLAT46 0x0040 /* has CLAT46 configured */
/*
* NWI_IFSTATE_FLAGS_MASK
void
_nwi_state_update_interface_generations(nwi_state_t old_state, nwi_state_t state, nwi_state_t changes);
-void
-_nwi_state_force_refresh();
-
void
_nwi_state_compute_sha1_hash(nwi_state_t state,
unsigned char hash[CC_SHA1_DIGEST_LENGTH]);
/*
- * Copyright (c) 2016 Apple Inc. All rights reserved.
+ * Copyright (c) 2016, 2017 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
void cpuEnd(CPUUsageInfo *);
NSString * createUsageStringForCPU(CPUUsageInfo *cpu);
-NSArray<NSString *> *getTestClasses();
+NSArray<NSString *> *getTestClasses(void);
NSArray<NSString *> *getUnitTestListForClass(Class base);
NSDictionary *getOptionsDictionary(int argc, const char **argv);
/*
- * Copyright (c) 2000, 2001, 2011 Apple Inc. All rights reserved.
+ * Copyright (c) 2000, 2001, 2011, 2018 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,
* 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 _CACHE_H
#define _CACHE_H
-#include <Availability.h>
+#include <os/availability.h>
#include <TargetConditionals.h>
#include <sys/cdefs.h>
__END_DECLS
-#endif /* !_CACHE_H */
+#endif /* !_CACHE_H */
/*
- * Copyright (c) 2010-2015, 2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2010-2015, 2017, 2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
exit(0);
}
-#endif
+#endif // !TARGET_OS_IPHONE
/* -----------------------------------------------------------------------------
----------------------------------------------------------------------------- */
nc_set_application_url(vendorType, argument);
my_CFRelease(&argument);
}
-#endif
+#endif // !TARGET_OS_IPHONE
}
exit_code = 0;
Boolean isStale = FALSE;
char *path = NULL;
CFIndex path_len = 0;
-#endif
+#endif // !TARGET_OS_IPHONE
service = nc_copy_service_from_arguments(argc, argv, NULL);
if (service == NULL) {
SCPrint(TRUE, stdout, CFSTR("ApplicationURL: %@\n"), directory);
skipURL:
-#endif
+#endif // !TARGET_OS_IPHONE
store = SCDynamicStoreCreate(NULL, CFSTR("scutil --nc"), NULL, NULL);
if (store == NULL) {
SCPrint(TRUE, stderr, CFSTR("Unable to enable service: %s\n"), SCErrorString(SCError()));
goto done;
}
-#else
+#else // !TARGET_OS_IPHONE
status = SCNetworkSetSetSelectedVPNService(current_set, service);
if (!status) {
SCPrint(TRUE, stderr, CFSTR("Unable to select service: %s\n"), SCErrorString(SCError()));
goto done;
}
-#endif
+#endif // !TARGET_OS_IPHONE
_prefs_save();
exit_code = 0;
SCPrint(TRUE, stderr, CFSTR("\tenablevpn <service or vpn type> [path]\n"));
SCPrint(TRUE, stderr, CFSTR("\t\tEnables the given VPN application type. Takes either a service or VPN type. Pass a path to set ApplicationURL\n"));
SCPrint(TRUE, stderr, CFSTR("\n"));
-#else
+#else // !TARGET_OS_IPHONE
SCPrint(TRUE, stderr, CFSTR("\tenablevpn <service or vpn type>\n"));
SCPrint(TRUE, stderr, CFSTR("\t\tEnables the given VPN application type. Takes either a service or VPN type\n"));
SCPrint(TRUE, stderr, CFSTR("\n"));
-#endif
+#endif // !TARGET_OS_IPHONE
SCPrint(TRUE, stderr, CFSTR("\tdisablevpn <service or vpn type>\n"));
SCPrint(TRUE, stderr, CFSTR("\t\tDisables the given VPN application type. Takes either a service or VPN type\n"));
SCPrint(TRUE, stderr, CFSTR("\n"));
/*
- * Copyright (c) 2000-2005, 2008-2015, 2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2000-2005, 2008-2015, 2017, 2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
Boolean
_prefs_open(CFStringRef name, CFStringRef prefsID)
{
-#if TARGET_OS_EMBEDDED
char *env = NULL;
-#endif // TARGET_OS_EMBEDDED
CFMutableDictionaryRef options = NULL;
Boolean useHelper = FALSE;
Boolean useOptions = FALSE;
CFDictionarySetValue(options, kSCPreferencesOptionRemoveWhenEmpty, kCFBooleanTrue);
}
-#if TARGET_OS_EMBEDDED
env = getenv("SCPREFERENCES_PROTECTION_CLASS");
if (env != NULL) {
CFStringRef str;
CFDictionarySetValue(options, kSCPreferencesOptionProtectionClass, str);
CFRelease(str);
}
-#endif // TARGET_OS_EMBEDDED
if (!useHelper && !useOptions) {
// if no helper/options needed
/*
- * Copyright (c) 2000-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2000-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
{ "password", required_argument, NULL, 0 },
{ "secret", required_argument, NULL, 0 },
{ "log", required_argument, NULL, 0 },
+ { "advisory", required_argument, NULL, 0 },
#if !TARGET_OS_IPHONE
{ "allow-new-interfaces", no_argument, NULL, 0 },
#endif // !TARGET_OS_IPHONE
Boolean allowNewInterfaces = FALSE;
#endif // !TARGET_OS_IPHONE
Boolean disableUntilNeeded = FALSE;
+ const char * advisoryInterface = NULL;
+ Boolean doAdvisory = FALSE;
Boolean doDNS = FALSE;
Boolean doNet = FALSE;
Boolean doNWI = FALSE;
password = CFStringCreateWithCString(NULL, optarg, kCFStringEncodingUTF8);
} else if (strcmp(longopts[opti].name, "secret") == 0) {
sharedsecret = CFStringCreateWithCString(NULL, optarg, kCFStringEncodingUTF8);
+ } else if (strcmp(longopts[opti].name, "advisory") == 0) {
+ doAdvisory = TRUE;
+ advisoryInterface = optarg;
+ xStore++;
}
break;
case '?':
exit(0);
}
+ if (doAdvisory) {
+ do_advisory(advisoryInterface, watch, argc, (char**)argv);
+ /* NOT REACHED */
+ }
+
/* are we translating error #'s to descriptive text */
if (error != NULL) {
int sc_status = atoi(error);
/*
- * Copyright (c) 2000-2005, 2009, 2012, 2016 Apple Inc. All rights reserved.
+ * Copyright (c) 2000-2005, 2009, 2012, 2016, 2017 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
/*
- * Copyright (c) 2000, 2001, 2003-2017 Apple Inc. All rights reserved.
+ * Copyright (c) 2000, 2001, 2003-2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
CFRunLoopRun();
}
+/**
+ ** "scutil --advisory <ifname> [ set | -W ]"
+ **/
+void
+timestamp_fprintf(FILE * f, const char * message, ...)
+{
+ struct timeval tv;
+ struct tm tm;
+ time_t t;
+ va_list ap;
+
+ (void)gettimeofday(&tv, NULL);
+ t = tv.tv_sec;
+ (void)localtime_r(&t, &tm);
+
+ va_start(ap, message);
+ fprintf(f, "%04d/%02d/%02d %2d:%02d:%02d.%06d ",
+ tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday,
+ tm.tm_hour, tm.tm_min, tm.tm_sec,
+ tv.tv_usec);
+ vfprintf(f, message, ap);
+ va_end(ap);
+}
+
+static void
+advisoryCheck(SCNetworkInterfaceRef interface, Boolean show_timestamp)
+{
+ if (show_timestamp) {
+ timestamp_fprintf(stdout, "");
+ }
+ printf("%sset\n",
+ SCNetworkInterfaceAdvisoryIsSet(interface) ? "" : "not ");
+}
+
+static void
+advisoryChanged(SCDynamicStoreRef session, CFArrayRef changes,
+ void * info)
+{
+#pragma unused(session, changes)
+ SCNetworkInterfaceRef interface = (SCNetworkInterfaceRef)info;
+
+ advisoryCheck(interface, TRUE);
+ return;
+}
+
+static void
+advisoryWatch(SCNetworkInterfaceRef interface)
+{
+ SCDynamicStoreContext context = {
+ .info = (void *)interface,
+ };
+ CFStringRef key;
+ CFMutableArrayRef keys;
+ Boolean ok;
+
+ store = SCDynamicStoreCreate(NULL, CFSTR("scutil (advisory)"), advisoryChanged, &context);
+ if (store == NULL) {
+ SCPrint(TRUE, stderr,
+ CFSTR("SCDynamicStoreCreate() failed: %s\n"), SCErrorString(SCError()));
+ exit(1);
+ }
+ key = SCNetworkInterfaceCopyAdvisoryNotificationKey(interface);
+ keys = CFArrayCreateMutable(NULL, 0, &kCFTypeArrayCallBacks);
+ CFArrayAppendValue(keys, key);
+ CFRelease(key);
+ ok = SCDynamicStoreSetNotificationKeys(store, keys, NULL);
+ CFRelease(keys);
+ if (!ok) {
+ SCPrint(TRUE, stderr,
+ CFSTR("SCDynamicStoreSetNotificationKeys() failed: %s\n"), SCErrorString(SCError()));
+ exit(1);
+ }
+ notifyRls = SCDynamicStoreCreateRunLoopSource(NULL, store, 0);
+ if (!notifyRls) {
+ SCPrint(TRUE, stderr,
+ CFSTR("SCDynamicStoreCreateRunLoopSource() failed: %s\n"), SCErrorString(SCError()));
+ exit(1);
+ }
+ CFRunLoopAddSource(CFRunLoopGetCurrent(), notifyRls, kCFRunLoopDefaultMode);
+}
+
+__private_extern__
+void
+do_advisory(const char * ifname, Boolean watch, int argc, char **argv)
+{
+ CFStringRef ifname_cf;
+ SCNetworkInterfaceRef interface;
+
+ ifname_cf = CFStringCreateWithCString(NULL, ifname, kCFStringEncodingUTF8);
+ interface = _SCNetworkInterfaceCreateWithBSDName(NULL, ifname_cf, kIncludeAllVirtualInterfaces);
+ CFRelease(ifname_cf);
+ if (interface == NULL) {
+ fprintf(stderr, "Failed to instantiate SCNetworkInterfaceRef\n");
+ exit(1);
+ }
+ if (argc >= 1) {
+ SCNetworkInterfaceAdvisory advisory = kSCNetworkInterfaceAdvisoryUplinkIssue;
+
+ if (strcasecmp(argv[0], "set") != 0) {
+ fprintf(stderr,
+ "usage: scutil --advisory <ifname> "
+ "[ set [ linklayer | uplink ] | -W ]\n");
+ exit(1);
+ }
+ if (argc >= 2) {
+ if (strcasecmp(argv[1], "uplink") == 0) {
+ advisory = kSCNetworkInterfaceAdvisoryUplinkIssue;
+ } else if (strcasecmp(argv[1], "linklayer") == 0) {
+ advisory = kSCNetworkInterfaceAdvisoryLinkLayerIssue;
+ } else {
+ fprintf(stderr,
+ "Bad advisory '%s', must be either 'uplink' or 'linklayer'\n",
+ argv[1]);
+ exit(1);
+ }
+ }
+ SCNetworkInterfaceSetAdvisory(interface, advisory, CFSTR("Because"));
+ CFRunLoopRun();
+ } else {
+ advisoryCheck(interface, watch);
+ if (watch) {
+ advisoryWatch(interface);
+ CFRunLoopRun();
+ }
+ }
+ exit(0);
+}
+
+
#ifdef TEST_DNS_CONFIGURATION
Boolean doDispatch = FALSE;
/*
- * Copyright (c) 2000, 2001, 2004, 2007, 2011, 2012, 2014 Apple Inc. All rights reserved.
+ * Copyright (c) 2000, 2001, 2004, 2007, 2011, 2012, 2014, 2018 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
void do_wait (char *waitKey, int timeout);
void do_showNWI (int argc, char **argv);
void do_watchNWI (int argc, char **argv);
+void do_advisory (const char * interface, Boolean watch, int argc, char **argv);
__END_DECLS
if (flags & kSCNetworkReachabilityFlagsIsDirect) {
printf("[%s] direct\n", source);
}
-#if TARGET_OS_EMBEDDED
+#if TARGET_OS_IPHONE
if (flags & kSCNetworkReachabilityFlagsIsWWAN) {
printf("[%s] wwan\n", source);
}
TSAN_DYLIB="clang_rt.tsan_watchossim_dynamic.dylib"
;;
* )
+ echo ""
+ echo "*** Unexpected PLATFORM_NAME \"${PLATFORM_NAME}\", using \"$(RC_PROJECT_COMPILATION_PLATFORM)\""
+ echo ""
ASAN_DYLIB="clang_rt.asan_$(RC_PROJECT_COMPILATION_PLATFORM)_dynamic.dylib"
TSAN_DYLIB="clang_rt.tsan_$(RC_PROJECT_COMPILATION_PLATFORM)_dynamic.dylib"
;;