2023-02-26 08:31:03 +07:00

3310 lines
140 KiB
Diff

diff --git a/make/autoconf/build-aux/config.sub b/make/autoconf/build-aux/config.sub
index 8f5a5cf52..0226bc5be 100644
--- a/make/autoconf/build-aux/config.sub
+++ b/make/autoconf/build-aux/config.sub
@@ -59,7 +59,7 @@ while test $# -gt 0 ; do
-- ) # Stop option processing
shift; break ;;
aarch64-* )
- config=`echo $1 | sed 's/^aarch64-/arm-/'`
+ config=`echo $1 | sed 's/^aarch64-/arm-/' | sed 's/-ios/-darwin/g'`
sub_args="$sub_args $config"
shift; ;;
- ) # Use stdin as input.
@@ -74,7 +74,7 @@ done
result=`. $DIR/autoconf-config.sub $sub_args "$@"`
exitcode=$?
-result=`echo $result | sed "s/^arm-/aarch64-/"`
+result=`echo $result | sed "s/^arm-/aarch64-/" | sed "s/-darwin/-ios/g"`
echo $result
exit $exitcode
diff --git a/make/autoconf/buildjdk-spec.gmk.in b/make/autoconf/buildjdk-spec.gmk.in
index 524f35f41..2fe2c57dc 100644
--- a/make/autoconf/buildjdk-spec.gmk.in
+++ b/make/autoconf/buildjdk-spec.gmk.in
@@ -103,3 +103,6 @@ JVM_FEATURES_server := cds compiler1 compiler2 g1gc serialgc
override EXTRA_CFLAGS :=
override EXTRA_CXXFLAGS :=
override EXTRA_LDFLAGS :=
+
+# Add a check to determine whether to insert -mmacosx-version-min
+JVM_BUILDJDK := true
diff --git a/make/autoconf/flags-cflags.m4 b/make/autoconf/flags-cflags.m4
index dbde7880a..740b624df 100644
--- a/make/autoconf/flags-cflags.m4
+++ b/make/autoconf/flags-cflags.m4
@@ -584,7 +584,7 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_HELPER],
# Set some additional per-OS defines.
# Additional macosx handling
- if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ if test "x$OPENJDK_TARGET_OS" = xmacosx && "$JVM_BUILDJDK" = true; then
OS_CFLAGS="-DMAC_OS_X_VERSION_MIN_REQUIRED=$MACOSX_VERSION_MIN_NODOTS \
-mmacosx-version-min=$MACOSX_VERSION_MIN"
diff --git a/make/autoconf/flags-ldflags.m4 b/make/autoconf/flags-ldflags.m4
index 23bb33e87..7d082104f 100644
--- a/make/autoconf/flags-ldflags.m4
+++ b/make/autoconf/flags-ldflags.m4
@@ -102,11 +102,11 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_HELPER],
# Setup OS-dependent LDFLAGS
if test "x$TOOLCHAIN_TYPE" = xclang || test "x$TOOLCHAIN_TYPE" = xgcc; then
- if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ if test "x$OPENJDK_TARGET_OS" = xmacosx && test "$JVM_BUILDJDK" = true; then
# Assume clang or gcc.
# FIXME: We should really generalize SET_SHARED_LIBRARY_ORIGIN instead.
OS_LDFLAGS_JVM_ONLY="-Wl,-rpath,@loader_path/. -Wl,-rpath,@loader_path/.."
- OS_LDFLAGS="-mmacosx-version-min=$MACOSX_VERSION_MIN"
+ #OS_LDFLAGS="-mmacosx-version-min=$MACOSX_VERSION_MIN"
fi
fi
diff --git a/make/autoconf/flags-other.m4 b/make/autoconf/flags-other.m4
index 0a0429c35..694726ba2 100644
--- a/make/autoconf/flags-other.m4
+++ b/make/autoconf/flags-other.m4
@@ -89,8 +89,10 @@ AC_DEFUN([FLAGS_SETUP_ASFLAGS],
# Fix linker warning.
# Code taken from make/autoconf/flags-cflags.m4 and adapted.
+ if test "$JVM_BUILDJDK" = true; then
JVM_BASIC_ASFLAGS+=" -DMAC_OS_X_VERSION_MIN_REQUIRED=$MACOSX_VERSION_MIN_NODOTS \
-mmacosx-version-min=$MACOSX_VERSION_MIN"
+ fi
if test -n "$MACOSX_VERSION_MAX"; then
JVM_BASIC_ASFLAGS+=" $OS_CFLAGS \
diff --git a/make/autoconf/platform.m4 b/make/autoconf/platform.m4
index 9e9e9454f..915159ca6 100644
--- a/make/autoconf/platform.m4
+++ b/make/autoconf/platform.m4
@@ -200,6 +200,10 @@ AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_OS],
VAR_OS=macosx
VAR_OS_TYPE=unix
;;
+ *ios*)
+ VAR_OS=macosx
+ VAR_OS_TYPE=unix
+ ;;
*bsd*)
VAR_OS=bsd
VAR_OS_TYPE=unix
diff --git a/make/common/MakeBase.gmk b/make/common/MakeBase.gmk
index a9d806da0..5d0e0a785 100644
--- a/make/common/MakeBase.gmk
+++ b/make/common/MakeBase.gmk
@@ -75,7 +75,6 @@ ifeq (4.0, $(firstword $(sort 4.0 $(MAKE_VERSION))))
RWILDCARD_WORKS := true
endif
-
# For convenience, MakeBase.gmk continues to include these separate files, at
# least for now.
diff --git a/make/common/modules/LauncherCommon.gmk b/make/common/modules/LauncherCommon.gmk
index 4a4ccdb23..b38f877f1 100644
--- a/make/common/modules/LauncherCommon.gmk
+++ b/make/common/modules/LauncherCommon.gmk
@@ -162,8 +162,7 @@ define SetupBuildLauncherBody
LDFLAGS_aix := -L$(SUPPORT_OUTPUTDIR)/native/java.base, \
LIBS := $(JDKEXE_LIBS) $$($1_LIBS), \
LIBS_linux := -ljli -lpthread $(LIBDL), \
- LIBS_macosx := -ljli -framework Cocoa -framework Security \
- -framework ApplicationServices, \
+ LIBS_macosx := -ljli -framework Foundation -framework Security, \
LIBS_aix := -ljli_static, \
LIBS_windows := $$($1_WINDOWS_JLI_LIB) \
$(SUPPORT_OUTPUTDIR)/native/java.base/libjava/java.lib, \
diff --git a/make/modules/java.base/Lib.gmk b/make/modules/java.base/Lib.gmk
index 5658ff342..85230903a 100644
--- a/make/modules/java.base/Lib.gmk
+++ b/make/modules/java.base/Lib.gmk
@@ -55,7 +55,7 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBNET, \
LIBS_aix := $(LIBDL),\
LIBS_windows := ws2_32.lib jvm.lib secur32.lib iphlpapi.lib winhttp.lib \
delayimp.lib $(WIN_JAVA_LIB) advapi32.lib, \
- LIBS_macosx := -framework CoreFoundation -framework CoreServices, \
+ LIBS_macosx := -framework CoreFoundation -framework CoreServices -framework CFNetwork, \
))
$(BUILD_LIBNET): $(BUILD_LIBJAVA)
@@ -95,7 +95,7 @@ $(BUILD_LIBNIO): $(BUILD_LIBNET)
################################################################################
# Create the macosx security library
-ifeq ($(call isTargetOs, macosx), true)
+ifeq ($(call isTargetOs, macosx_NOTIOS), true)
$(eval $(call SetupJdkLibrary, BUILD_LIBOSXSECURITY, \
NAME := osxsecurity, \
diff --git a/make/modules/java.base/lib/CoreLibraries.gmk b/make/modules/java.base/lib/CoreLibraries.gmk
index e7188218d..0ae986887 100644
--- a/make/modules/java.base/lib/CoreLibraries.gmk
+++ b/make/modules/java.base/lib/CoreLibraries.gmk
@@ -210,7 +210,7 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBJLI, \
LIBS_unix := $(LIBZ_LIBS), \
LIBS_linux := $(LIBDL) -lpthread, \
LIBS_aix := $(LIBDL),\
- LIBS_macosx := -framework Cocoa -framework Security -framework ApplicationServices, \
+ LIBS_macosx := -framework Foundation -framework Security, \
LIBS_windows := advapi32.lib comctl32.lib user32.lib, \
))
diff --git a/make/modules/java.desktop/Gensrc.gmk b/make/modules/java.desktop/Gensrc.gmk
index 1fc36f005..f414759ba 100644
--- a/make/modules/java.desktop/Gensrc.gmk
+++ b/make/modules/java.desktop/Gensrc.gmk
@@ -32,7 +32,7 @@ ifeq ($(call isTargetOs, windows), false)
include gensrc/GensrcIcons.gmk
endif
-ifeq ($(call isTargetOs, linux aix), true)
+ifeq ($(call isTargetOs, linux macosx aix), true)
include gensrc/GensrcX11Wrappers.gmk
endif
@@ -52,7 +52,7 @@ PROP_SRC_DIRS := \
$(TOPDIR)/src/java.desktop/share/classes/sun/print/resources \
#
-ifeq ($(call isTargetOs, macosx), true)
+ifeq ($(call isTargetOs, macosx_NOTIOS), true)
PROP_SRC_DIRS += \
$(TOPDIR)/src/java.desktop/macosx/classes/com/apple/laf/resources \
$(TOPDIR)/src/java.desktop/macosx/classes/sun/awt/resources \
diff --git a/make/modules/java.desktop/Java.gmk b/make/modules/java.desktop/Java.gmk
index 4b1c14a11..b39ea914c 100644
--- a/make/modules/java.desktop/Java.gmk
+++ b/make/modules/java.desktop/Java.gmk
@@ -64,7 +64,7 @@ EXCLUDE_FILES += \
.template \
#
-ifeq ($(call isTargetOs, macosx), true)
+ifeq ($(call isTargetOs, macosx_NOTIOS), true)
# exclude all X11 on Mac.
EXCLUDES += \
sun/awt/X11 \
@@ -80,6 +80,12 @@ ifeq ($(call isTargetOs, macosx), true)
$(wildcard $(TOPDIR)/src/java.desktop/unix/classes/sun/font/*.java) \
#
else
+ # exclude some strange files that did not compile due to missing classes
+ EXCLUDE_FILES += \
+ $(TOPDIR)/src/java.desktop/unix/classes/sun/font/X11GB2312.java \
+ $(TOPDIR)/src/java.desktop/unix/classes/sun/font/X11GBK.java \
+ $(TOPDIR)/src/java.desktop/unix/classes/sun/font/X11KSC5601.java \
+ #
# TBD: figure out how to eliminate this long list
EXCLUDE_FILES += \
sun/awt/X11/ScreenFormat.java \
@@ -130,7 +136,7 @@ ifeq ($(call isTargetOs, windows), true)
EXCLUDES += com/sun/java/swing/plaf/gtk
endif
-ifeq ($(call isTargetOs, windows macosx), false)
+ifeq ($(call isTargetOs, windows macosx_NOTIOS), false)
EXCLUDE_FILES += sun/awt/AWTCharset.java
endif
diff --git a/make/modules/java.desktop/Lib.gmk b/make/modules/java.desktop/Lib.gmk
index 22b07289a..c505e7e08 100644
--- a/make/modules/java.desktop/Lib.gmk
+++ b/make/modules/java.desktop/Lib.gmk
@@ -69,7 +70,7 @@ ifeq ($(call isTargetOs, aix), false)
LIBS_unix := -ljava -ljvm, \
LIBS_linux := $(ALSA_LIBS), \
LIBS_macosx := -framework CoreAudio -framework CoreFoundation \
- -framework CoreServices -framework AudioUnit \
+ -framework CoreServices -framework AVFoundation \
-framework CoreMIDI -framework AudioToolbox $(LIBCXX), \
LIBS_windows := $(WIN_JAVA_LIB) advapi32.lib dsound.lib winmm.lib user32.lib ole32.lib, \
))
@@ -83,7 +84,7 @@ endif
################################################################################
# Create the macosx specific osxapp and osx libraries
-ifeq ($(call isTargetOs, macosx), true)
+ifeq ($(call isTargetOs, macosx_NOTIOS), true)
$(eval $(call SetupJdkLibrary, BUILD_LIBOSXAPP, \
NAME := osxapp, \
diff --git a/make/modules/java.desktop/gensrc/GensrcIcons.gmk b/make/modules/java.desktop/gensrc/GensrcIcons.gmk
index e0a6c107e..f844ec1d6 100644
--- a/make/modules/java.desktop/gensrc/GensrcIcons.gmk
+++ b/make/modules/java.desktop/gensrc/GensrcIcons.gmk
@@ -106,7 +106,7 @@ TARGETS += $(GENSRC_AWT_ICONS)
################################################################################
-ifeq ($(call isTargetOs, macosx), true)
+ifeq ($(call isTargetOs, macosx_NOTIOS), true)
GENSRC_OSX_ICONS_DST := $(SUPPORT_OUTPUTDIR)/headers/java.desktop
GENSRC_OSX_ICONS := $(GENSRC_OSX_ICONS_DST)/AWTIconData.h
diff --git a/make/modules/java.desktop/lib/Awt2dLibraries.gmk b/make/modules/java.desktop/lib/Awt2dLibraries.gmk
index 96273fd0a..cb4e06a39 100644
--- a/make/modules/java.desktop/lib/Awt2dLibraries.gmk
+++ b/make/modules/java.desktop/lib/Awt2dLibraries.gmk
@@ -80,7 +80,7 @@ ifeq ($(call isTargetOs, linux macosx aix), true)
LIBAWT_EXFILES += awt_Font.c CUPSfuncs.c fontpath.c X11Color.c
endif
-ifeq ($(call isTargetOs, macosx), true)
+ifeq ($(call isTargetOs, macosx_NOTIOS), true)
LIBAWT_EXFILES += initIDs.c awt/image/cvutils/img_colors.c
endif
@@ -157,7 +157,7 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBAWT, \
LIBS_unix := -ljvm -ljava $(LIBM), \
LIBS_linux := $(LIBDL), \
LIBS_aix := $(LIBDL),\
- LIBS_macosx := -lmlib_image \
+ LIBS_macosx_NOTIOS := -lmlib_image \
-framework Cocoa \
-framework OpenGL \
-framework Metal \
@@ -353,7 +353,7 @@ TARGETS += $(BUILD_LIBJAVAJPEG)
################################################################################
# Mac and Windows only use the native AWT lib, do not build libawt_headless
-ifeq ($(call isTargetOs, windows macosx), false)
+ifeq ($(call isTargetOs, windows macosx_NOTIOS), false)
LIBAWT_HEADLESS_EXTRA_SRC := \
common/font \
@@ -496,7 +496,7 @@ ifeq ($(call isTargetOs, windows), true)
LIBFONTMANAGER_EXCLUDE_FILES += X11FontScaler.c \
X11TextRenderer.c
LIBFONTMANAGER_OPTIMIZATION := HIGHEST
-else ifeq ($(call isTargetOs, macosx), true)
+else ifeq ($(call isTargetOs, macosx_NOTIOS), true)
LIBFONTMANAGER_EXCLUDE_FILES += X11FontScaler.c \
X11TextRenderer.c \
fontpath.c \
@@ -535,7 +535,7 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBFONTMANAGER, \
LDFLAGS_aix := -Wl$(COMMA)-berok, \
LIBS := $(BUILD_LIBFONTMANAGER_FONTLIB), \
LIBS_unix := -lawt -ljava -ljvm $(LIBM) $(LIBCXX), \
- LIBS_macosx := -lawt_lwawt -framework CoreText -framework CoreFoundation -framework CoreGraphics, \
+ LIBS_macosx := -lawt_headless -framework CoreText -framework CoreFoundation -framework CoreGraphics, \
LIBS_windows := $(WIN_JAVA_LIB) advapi32.lib user32.lib gdi32.lib \
$(WIN_AWT_LIB), \
))
@@ -543,7 +543,8 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBFONTMANAGER, \
$(BUILD_LIBFONTMANAGER): $(BUILD_LIBAWT)
ifeq ($(call isTargetOs, macosx), true)
- $(BUILD_LIBFONTMANAGER): $(call FindLib, $(MODULE), awt_lwawt)
+ $(BUILD_LIBFONTMANAGER): $(call FindLib, $(MODULE), awt_headless)
+ # awt_lwawt
endif
ifeq ($(FREETYPE_TO_USE), bundled)
@@ -598,10 +599,11 @@ else # not windows
ifeq ($(call isTargetOs, macosx), true)
# libjawt on macosx do not use the unix code
- LIBJAWT_EXCLUDE_SRC_PATTERNS := /unix/
+ # libjawt on iOS do not use the macosx code
+ LIBJAWT_EXCLUDE_SRC_PATTERNS := /macosx/
endif
- ifeq ($(call isTargetOs, macosx), true)
+ ifeq ($(call isTargetOs, macosx_NOTIOS), true)
JAWT_LIBS := -lawt_lwawt
else
JAWT_LIBS := -lawt
@@ -609,7 +611,7 @@ else # not windows
JAWT_LIBS += -lawt_xawt
else
JAWT_LIBS += -lawt_headless
- ifeq ($(call isTargetOs, linux), true)
+ ifeq ($(call isTargetOs, linux macosx), true)
JAWT_CFLAGS += -DHEADLESS
endif
endif
@@ -631,7 +633,7 @@ else # not windows
LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
LDFLAGS_macosx := -Wl$(COMMA)-rpath$(COMMA)@loader_path, \
LIBS_unix := $(JAWT_LIBS) $(JDKLIB_LIBS), \
- LIBS_macosx := -framework Cocoa, \
+ LIBS_macosx_NOTIOS := -framework Cocoa, \
))
ifeq ($(ENABLE_HEADLESS_ONLY), false)
@@ -640,7 +642,7 @@ else # not windows
$(BUILD_LIBJAWT): $(call FindLib, $(MODULE), awt_headless)
endif
- ifeq ($(call isTargetOs, macosx), true)
+ ifeq ($(call isTargetOs, macosx_NOTIOS), true)
$(BUILD_LIBJAWT): $(call FindLib, $(MODULE), awt_lwawt)
endif
@@ -771,7 +773,7 @@ endif
################################################################################
-ifeq ($(call isTargetOs, macosx), true)
+ifeq ($(call isTargetOs, macosx_NOTIOS), true)
LIBAWT_LWAWT_EXTRA_SRC := \
$(TOPDIR)/src/$(MODULE)/unix/native/common/awt \
@@ -855,7 +857,7 @@ else
MACOSX_METAL_VERSION_MIN=10.14.0
endif
-ifeq ($(call isTargetOs, macosx), true)
+ifeq ($(call isTargetOs, macosx_NOTIOS), true)
SHADERS_SRC := $(TOPDIR)/src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/shaders.metal
SHADERS_SUPPORT_DIR := $(SUPPORT_OUTPUTDIR)/native/java.desktop/libosxui
SHADERS_AIR := $(SHADERS_SUPPORT_DIR)/shaders.air
diff --git a/make/modules/java.instrument/Lib.gmk b/make/modules/java.instrument/Lib.gmk
index 3996ad213..1a8ed0db9 100644
--- a/make/modules/java.instrument/Lib.gmk
+++ b/make/modules/java.instrument/Lib.gmk
@@ -51,8 +51,7 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBINSTRUMENT, \
LIBS_unix := -ljava -ljvm $(LIBZ_LIBS), \
LIBS_linux := -ljli $(LIBDL), \
LIBS_aix := -liconv -ljli_static $(LIBDL), \
- LIBS_macosx := -ljli -liconv -framework Cocoa -framework Security \
- -framework ApplicationServices, \
+ LIBS_macosx := -ljli -liconv -framework Foundation -framework Security, \
LIBS_windows := jvm.lib $(WIN_JAVA_LIB) advapi32.lib \
$(WINDOWS_JLI_LIB), \
))
diff --git a/make/modules/java.security.jgss/Lib.gmk b/make/modules/java.security.jgss/Lib.gmk
index 93acd8f87..571a36f01 100644
--- a/make/modules/java.security.jgss/Lib.gmk
+++ b/make/modules/java.security.jgss/Lib.gmk
@@ -70,7 +70,8 @@ ifneq ($(BUILD_CRYPTO), false)
TARGETS += $(BUILD_LIBW2K_LSA_AUTH)
endif
- ifeq ($(call isTargetOs, macosx), true)
+ #ifeq ($(call isTargetOs, macosx), true)
+ ifeq (false, true)
# libosxkrb5 needs to call deprecated krb5 APIs so that java
# can use the native credentials cache.
$(eval $(call SetupJdkLibrary, BUILD_LIBOSXKRB5, \
diff --git a/make/modules/jdk.hotspot.agent/Gensrc.gmk b/make/modules/jdk.hotspot.agent/Gensrc.gmk
index aee268eb3..01b38ca7f 100644
--- a/make/modules/jdk.hotspot.agent/Gensrc.gmk
+++ b/make/modules/jdk.hotspot.agent/Gensrc.gmk
@@ -43,11 +43,12 @@ ifeq ($(call isTargetOs, macosx), true)
MACH_EXC_USER := $(MIG_OUTPUT_DIR)/mach_excUser.c
MACH_EXC_SERVER := $(MIG_OUTPUT_DIR)/mach_excServer.c
- $(MACH_EXC_SERVER): $(SDKROOT)/usr/include/mach/mach_exc.defs
+ $(MACH_EXC_SERVER): ${themacsysroot}/usr/include/mach/mach_exc.defs
$(call MakeTargetDir)
$(MIG) $(if $(SDKROOT), -isysroot $(SDKROOT)) \
+ -arch arm64 -isysroot ${themacsysroot} \
-server $@ -user $(MACH_EXC_USER) \
- -header $(MACH_EXC_HEADER) $(SDKROOT)/usr/include/mach/mach_exc.defs
+ -header $(MACH_EXC_HEADER) ${themacsysroot}/usr/include/mach/mach_exc.defs
TARGETS += $(MACH_EXC_SERVER)
endif
diff --git a/make/modules/jdk.hotspot.agent/Lib.gmk b/make/modules/jdk.hotspot.agent/Lib.gmk
index 59b24d0e4..ef8e36a18 100644
--- a/make/modules/jdk.hotspot.agent/Lib.gmk
+++ b/make/modules/jdk.hotspot.agent/Lib.gmk
@@ -74,6 +74,6 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBSA, \
LIBS_windows := dbgeng.lib $(WIN_JAVA_LIB), \
))
-TARGETS += $(BUILD_LIBSA)
+#TARGETS += $(BUILD_LIBSA)
################################################################################
diff --git a/make/modules/jdk.jpackage/Lib.gmk b/make/modules/jdk.jpackage/Lib.gmk
index 1c0a0f9a8..16bbb0322 100644
--- a/make/modules/jdk.jpackage/Lib.gmk
+++ b/make/modules/jdk.jpackage/Lib.gmk
@@ -73,7 +73,7 @@ $(eval $(call SetupJdkExecutable, BUILD_JPACKAGE_APPLAUNCHEREXE, \
CXXFLAGS_windows := $(JPACKAGE_CXXFLAGS_windows), \
CFLAGS_windows := $(JPACKAGE_CFLAGS_windows), \
LDFLAGS := $(LDFLAGS_JDKEXE), \
- LIBS_macosx := $(LIBCXX) -framework Cocoa, \
+ LIBS_macosx := $(LIBCXX) -framework Foundation, \
LIBS_windows := $(LIBCXX), \
LIBS_linux := -ldl, \
MANIFEST := $(JAVA_MANIFEST), \
diff --git a/src/hotspot/cpu/aarch64/nativeInst_aarch64.cpp b/src/hotspot/cpu/aarch64/nativeInst_aarch64.cpp
index d808e4b5b..7c802d8f1 100644
--- a/src/hotspot/cpu/aarch64/nativeInst_aarch64.cpp
+++ b/src/hotspot/cpu/aarch64/nativeInst_aarch64.cpp
@@ -40,6 +40,8 @@
#include "c1/c1_Runtime1.hpp"
#endif
+#include <sys/mman.h>
+
void NativeCall::verify() {
assert(NativeCall::is_call_at((address)this), "unexpected code at call site");
}
diff --git a/src/hotspot/os/bsd/gc/z/zPhysicalMemoryBacking_bsd.cpp b/src/hotspot/os/bsd/gc/z/zPhysicalMemoryBacking_bsd.cpp
index ea9a54bcb..2edbdb89b 100644
--- a/src/hotspot/os/bsd/gc/z/zPhysicalMemoryBacking_bsd.cpp
+++ b/src/hotspot/os/bsd/gc/z/zPhysicalMemoryBacking_bsd.cpp
@@ -34,8 +34,23 @@
#include "utilities/align.hpp"
#include "utilities/debug.hpp"
+#include <TargetConditionals.h>
#include <mach/mach.h>
+#if TARGET_OS_IPHONE
+extern "C" kern_return_t mach_vm_remap(vm_map_t target_task,
+ mach_vm_address_t *target_address,
+ mach_vm_size_t size,
+ mach_vm_offset_t mask,
+ int flags,
+ vm_map_t src_task,
+ mach_vm_address_t src_address,
+ boolean_t copy,
+ vm_prot_t *cur_protection,
+ vm_prot_t *max_protection,
+ vm_inherit_t inheritance);
+#else
#include <mach/mach_vm.h>
+#endif
#include <sys/mman.h>
#include <sys/types.h>
diff --git a/src/hotspot/os/bsd/os_bsd.cpp b/src/hotspot/os/bsd/os_bsd.cpp
index 243c12ce3..879f28df3 100644
--- a/src/hotspot/os/bsd/os_bsd.cpp
+++ b/src/hotspot/os/bsd/os_bsd.cpp
@@ -793,6 +793,26 @@ void os::Bsd::clock_init() {
+#ifdef __APPLE__
+static bool rwxChecked, rwxAvailable;
+#endif
+bool os::Bsd::isRWXJITAvailable() {
+#ifdef __APPLE__
+ if (!rwxChecked) {
+ rwxChecked = true;
+ const int flags = MAP_PRIVATE | MAP_NORESERVE | MAP_ANONYMOUS | MAP_JIT;
+ char* addr = (char*)::mmap(0, getpagesize(), PROT_NONE, flags, -1, 0);
+ rwxAvailable = addr != MAP_FAILED;
+ if (rwxAvailable) {
+ ::munmap(addr, getpagesize());
+ }
+ }
+ return rwxAvailable;
+#else
+ return true;
+#endif
+}
+
#ifdef __APPLE__
jlong os::javaTimeNanos() {
@@ -1579,7 +1599,7 @@ static void warn_fail_commit_memory(char* addr, size_t size, bool exec,
// left at the time of mmap(). This could be a potential
// problem.
bool os::pd_commit_memory(char* addr, size_t size, bool exec) {
- int prot = exec ? PROT_READ|PROT_WRITE|PROT_EXEC : PROT_READ|PROT_WRITE;
+ int prot = exec&&os::Bsd::isRWXJITAvailable() ? PROT_READ|PROT_WRITE|PROT_EXEC : PROT_READ|PROT_WRITE;
#if defined(__OpenBSD__)
// XXX: Work-around mmap/MAP_FIXED bug temporarily on OpenBSD
Events::log(NULL, "Protecting memory [" INTPTR_FORMAT "," INTPTR_FORMAT "] with protection modes %x", p2i(addr), p2i(addr+size), prot);
@@ -1720,7 +1740,7 @@ bool os::remove_stack_guard_pages(char* addr, size_t size) {
static char* anon_mmap(char* requested_addr, size_t bytes, bool exec) {
// MAP_FIXED is intentionally left out, to leave existing mappings intact.
const int flags = MAP_PRIVATE | MAP_NORESERVE | MAP_ANONYMOUS
- MACOS_ONLY(| (exec ? MAP_JIT : 0));
+ MACOS_ONLY(| (exec && os::Bsd::isRWXJITAvailable() ? MAP_JIT : 0));
// Map reserved/uncommitted pages PROT_NONE so we fail early if we
// touch an uncommitted page. Otherwise, the read/write might
diff --git a/src/hotspot/os/bsd/os_bsd.hpp b/src/hotspot/os/bsd/os_bsd.hpp
index e61469290..b3423fd81 100644
--- a/src/hotspot/os/bsd/os_bsd.hpp
+++ b/src/hotspot/os/bsd/os_bsd.hpp
@@ -58,6 +58,7 @@ class Bsd {
public:
+ static bool isRWXJITAvailable();
static void init_thread_fpu_state();
static pthread_t main_thread(void) { return _main_thread; }
diff --git a/src/hotspot/os/posix/signals_posix.cpp b/src/hotspot/os/posix/signals_posix.cpp
index 895c3cc09..b77c925ba 100644
--- a/src/hotspot/os/posix/signals_posix.cpp
+++ b/src/hotspot/os/posix/signals_posix.cpp
@@ -40,6 +40,9 @@
#include "utilities/ostream.hpp"
#include "utilities/vmError.hpp"
+#include "code/codeCache.hpp"
+#include <sys/mman.h>
+
#ifdef ZERO
// See stubGenerator_zero.cpp
#include <setjmp.h>
@@ -584,6 +587,26 @@ int JVM_HANDLE_XXX_SIGNAL(int sig, siginfo_t* info,
ucontext_t* const uc = (ucontext_t*) ucVoid;
Thread* const t = Thread::current_or_null_safe();
+ // Hopefully placing W^X handing here is safe enough, maybe check repeat?
+ if (!os::Bsd::isRWXJITAvailable() && sig == SIGBUS) {
+ address pc = (address) os::Posix::ucontext_get_pc(uc);
+ //static address last_pc, last_si_addr;
+ if (pc == info->si_addr) { //(pc >= CodeCache::low_bound() && pc < CodeCache::high_bound()) {
+ //(CodeCache::contains(pc) || thread->thread_state() == _thread_in_Java) {
+ //if (last_pc != pc) {
+ // last_pc = pc;
+ bool handled = !mprotect((address) ((uintptr_t)pc & -PAGE_SIZE), PAGE_SIZE, PROT_READ | PROT_EXEC);
+ if (handled) return true;
+ //}
+ } else if (info->si_addr >= CodeCache::low_bound() && info->si_addr < CodeCache::high_bound()) {
+ //(CodeCache::contains(info->si_addr)) { // && last_si_addr != info->si_addr) {
+ //last_si_addr = (address) info->si_addr;
+ bool handled = !mprotect((address) ((uintptr_t)info->si_addr & -PAGE_SIZE), PAGE_SIZE, PROT_READ | PROT_WRITE);
+ if (handled) return true;
+ }
+ }
+
+
// Handle JFR thread crash protection.
// Note: this may cause us to longjmp away. Do not use any code before this
// point which really needs any form of epilogue code running, eg RAII objects.
diff --git a/src/hotspot/os_cpu/bsd_aarch64/icache_bsd_aarch64.hpp b/src/hotspot/os_cpu/bsd_aarch64/icache_bsd_aarch64.hpp
index 7e9ca43ef..9374ac999 100644
--- a/src/hotspot/os_cpu/bsd_aarch64/icache_bsd_aarch64.hpp
+++ b/src/hotspot/os_cpu/bsd_aarch64/icache_bsd_aarch64.hpp
@@ -27,6 +27,8 @@
#ifndef OS_CPU_BSD_AARCH64_ICACHE_AARCH64_HPP
#define OS_CPU_BSD_AARCH64_ICACHE_AARCH64_HPP
+#include <libkern/OSCacheControl.h>
+
// Interface for updating the instruction cache. Whenever the VM
// modifies code, part of the processor instruction cache potentially
// has to be flushed.
@@ -34,11 +36,14 @@
class ICache : public AbstractICache {
public:
static void initialize();
+ static void __clear_cache_(void *start, void *end) {
+ sys_icache_invalidate(start, (char *)end-(char *)start);
+ }
static void invalidate_word(address addr) {
- __clear_cache((char *)addr, (char *)(addr + 4));
+ __clear_cache_((char *)addr, (char *)(addr + 4));
}
static void invalidate_range(address start, int nbytes) {
- __clear_cache((char *)start, (char *)(start + nbytes));
+ __clear_cache_((char *)start, (char *)(start + nbytes));
}
};
diff --git a/src/hotspot/os_cpu/bsd_aarch64/os_bsd_aarch64.cpp b/src/hotspot/os_cpu/bsd_aarch64/os_bsd_aarch64.cpp
index d9a54bf69..af3ceb494 100644
--- a/src/hotspot/os_cpu/bsd_aarch64/os_bsd_aarch64.cpp
+++ b/src/hotspot/os_cpu/bsd_aarch64/os_bsd_aarch64.cpp
@@ -54,6 +54,7 @@
#include "utilities/align.hpp"
#include "utilities/events.hpp"
#include "utilities/vmError.hpp"
+#include "tcg-apple-jit.h"
// put OS-includes here
# include <sys/types.h>
@@ -540,7 +541,9 @@ int os::extra_bang_size_in_bytes() {
}
void os::current_thread_enable_wx(WXMode mode) {
- pthread_jit_write_protect_np(mode == WXExec);
+ if (os::Bsd::isRWXJITAvailable()) {
+ jit_write_protect(mode == WXExec);
+ }
}
extern "C" {
diff --git a/src/hotspot/os_cpu/bsd_aarch64/tcg-apple-jit.h b/src/hotspot/os_cpu/bsd_aarch64/tcg-apple-jit.h
new file mode 100644
index 000000000..c7143a769
--- /dev/null
+++ b/src/hotspot/os_cpu/bsd_aarch64/tcg-apple-jit.h
@@ -0,0 +1,85 @@
+/*
+ * Apple Silicon APRR functions for JIT handling
+ *
+ * Copyright (c) 2020 osy
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * Credits to: https://siguza.github.io/APRR/
+ * Reversed from /usr/lib/system/libsystem_pthread.dylib
+ */
+
+#ifndef TCG_APPLE_JIT_H
+#define TCG_APPLE_JIT_H
+
+#if defined(__aarch64__) && defined(__APPLE__)
+
+#define _COMM_PAGE_START_ADDRESS (0x0000000FFFFFC000ULL) /* In TTBR0 */
+#define _COMM_PAGE_APRR_SUPPORT (_COMM_PAGE_START_ADDRESS + 0x10C)
+#define _COMM_PAGE_APPR_WRITE_ENABLE (_COMM_PAGE_START_ADDRESS + 0x110)
+#define _COMM_PAGE_APRR_WRITE_DISABLE (_COMM_PAGE_START_ADDRESS + 0x118)
+
+static __attribute__((__always_inline__)) bool jit_write_protect_supported(void)
+{
+ /* Access shared kernel page at fixed memory location. */
+ uint8_t aprr_support = *(volatile uint8_t *)_COMM_PAGE_APRR_SUPPORT;
+ return aprr_support > 0;
+}
+
+/* write protect enable = write disable */
+static __attribute__((__always_inline__)) void jit_write_protect(int enabled)
+{
+ /* Access shared kernel page at fixed memory location. */
+ uint8_t aprr_support = *(volatile uint8_t *)_COMM_PAGE_APRR_SUPPORT;
+ if (aprr_support == 0 || aprr_support > 3) {
+ return;
+ } else if (aprr_support == 1) {
+ __asm__ __volatile__ (
+ "mov x0, %0\n"
+ "ldr x0, [x0]\n"
+ "msr S3_4_c15_c2_7, x0\n"
+ "isb sy\n"
+ :: "r" (enabled ? _COMM_PAGE_APRR_WRITE_DISABLE
+ : _COMM_PAGE_APPR_WRITE_ENABLE)
+ : "memory", "x0"
+ );
+ } else {
+ __asm__ __volatile__ (
+ "mov x0, %0\n"
+ "ldr x0, [x0]\n"
+ "msr S3_6_c15_c1_5, x0\n"
+ "isb sy\n"
+ :: "r" (enabled ? _COMM_PAGE_APRR_WRITE_DISABLE
+ : _COMM_PAGE_APPR_WRITE_ENABLE)
+ : "memory", "x0"
+ );
+ }
+}
+
+#else /* defined(__aarch64__) && defined(__APPLE__) */
+
+static __attribute__((__always_inline__)) bool jit_write_protect_supported(void)
+{
+ return false;
+}
+
+static __attribute__((__always_inline__)) void jit_write_protect(int enabled)
+{
+}
+
+#endif
+
+#endif /* define TCG_APPLE_JIT_H */
diff --git a/src/java.base/macosx/native/libjava/OSXSCSchemaDefinitions.h b/src/java.base/macosx/native/libjava/OSXSCSchemaDefinitions.h
new file mode 100644
index 000000000..122df59ec
--- /dev/null
+++ b/src/java.base/macosx/native/libjava/OSXSCSchemaDefinitions.h
@@ -0,0 +1,2347 @@
+/*
+ * Copyright (c) 2000-2020 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@
+ */
+
+/*
+ * This file is automatically generated
+ * DO NOT EDIT!
+ */
+
+/*
+ * Reserved Keys
+ *
+ * kSCResvLink "__LINK__" CFString
+ * kSCResvInactive "__INACTIVE__"
+ *
+ * Generic Keys
+ *
+ * kSCPropInterfaceName "InterfaceName" CFString
+ * kSCPropMACAddress "MACAddress" CFString
+ * kSCPropUserDefinedName "UserDefinedName" CFString
+ * kSCPropVersion "Version" CFString
+ *
+ * Preference Keys
+ *
+ * kSCPrefCurrentSet "CurrentSet" CFString
+ * kSCPrefNetworkServices "NetworkServices" CFDictionary
+ * kSCPrefSets "Sets" CFDictionary
+ * kSCPrefSystem "System" CFDictionary
+ *
+ * Component Keys
+ *
+ * kSCCompNetwork "Network"
+ * kSCCompService "Service"
+ * kSCCompGlobal "Global"
+ * kSCCompHostNames "HostNames"
+ * kSCCompInterface "Interface"
+ * kSCCompSystem "System"
+ * kSCCompUsers "Users"
+ *
+ * --- Regex pattern which matches any component ---
+ * kSCCompAnyRegex "[^/]+"
+ *
+ * Network Entity Keys
+ *
+ * kSCEntNetAirPort "AirPort" CFDictionary
+ * kSCEntNetDHCP "DHCP" CFDictionary
+ * kSCEntNetDNS "DNS" CFDictionary
+ * kSCEntNetEthernet "Ethernet" CFDictionary
+ * kSCEntNetFireWire "FireWire" CFDictionary
+ * kSCEntNetInterface "Interface" CFDictionary
+ * kSCEntNetIPSec "IPSec" CFDictionary
+ * kSCEntNetIPv4 "IPv4" CFDictionary
+ * kSCEntNetIPv6 "IPv6" CFDictionary
+ * kSCEntNetL2TP "L2TP" CFDictionary
+ * kSCEntNetLink "Link" CFDictionary
+ * kSCEntNetModem "Modem" CFDictionary
+ * kSCEntNetPPP "PPP" CFDictionary
+ * kSCEntNetPPPoE "PPPoE" CFDictionary
+ * kSCEntNetPPPSerial "PPPSerial" CFDictionary
+ * kSCEntNetPPTP "PPTP" CFDictionary
+ * kSCEntNetProxies "Proxies" CFDictionary
+ * kSCEntNetSMB "SMB" CFDictionary
+ * kSCEntNet6to4 "6to4" CFDictionary
+ *
+ * kSCCompNetwork Properties
+ *
+ * kSCPropNetOverridePrimary "OverridePrimary" CFNumber (0 or 1)
+ * kSCPropNetServiceOrder "ServiceOrder" CFArray[CFString]
+ * kSCPropNetPPPOverridePrimary "PPPOverridePrimary" CFNumber (0 or 1)
+ *
+ * kSCCompNetworkInterface Properties
+ *
+ * kSCPropNetInterfaces "Interfaces" CFArray[CFString]
+ *
+ * kSCCompNetworkHostNames Properties
+ *
+ * kSCPropNetLocalHostName "LocalHostName" CFString
+ *
+ * kSCEntNetDNS Entity Keys
+ *
+ * kSCPropNetDNSDomainName "DomainName" CFString
+ * kSCPropNetDNSOptions "Options" CFString
+ * kSCPropNetDNSSearchDomains "SearchDomains" CFArray[CFString]
+ * kSCPropNetDNSSearchOrder "SearchOrder" CFNumber
+ * kSCPropNetDNSServerAddresses "ServerAddresses" CFArray[CFString]
+ * kSCPropNetDNSServerPort "ServerPort" CFNumber
+ * kSCPropNetDNSServerTimeout "ServerTimeout" CFNumber
+ * kSCPropNetDNSSortList "SortList" CFArray[CFString]
+ * kSCPropNetDNSSupplementalMatchDomains "SupplementalMatchDomains" CFArray[CFString]
+ * kSCPropNetDNSSupplementalMatchOrders "SupplementalMatchOrders" CFArray[CFNumber]
+ *
+ * kSCEntNetEthernet (Hardware) Entity Keys
+ *
+ * kSCPropNetEthernetMediaSubType "MediaSubType" CFString
+ * kSCPropNetEthernetMediaOptions "MediaOptions" CFArray[CFString]
+ * kSCPropNetEthernetMTU "MTU" CFNumber
+ *
+ * kSCEntNetFireWire (Hardware) Entity Keys
+ *
+ * * RESERVED FOR FUTURE USE *
+ *
+ * kSCEntNetInterface Entity Keys
+ *
+ * kSCPropNetInterfaceDeviceName "DeviceName" CFString
+ * kSCPropNetInterfaceHardware "Hardware" CFString
+ * kSCPropNetInterfaceType "Type" CFString
+ * kSCPropNetInterfaceSubType "SubType" CFString
+ *
+ * --- kSCPropNetInterfaceType values ---
+ * kSCValNetInterfaceTypeEthernet "Ethernet"
+ * kSCValNetInterfaceTypeFireWire "FireWire"
+ * kSCValNetInterfaceTypePPP "PPP"
+ * kSCValNetInterfaceType6to4 "6to4"
+ * kSCValNetInterfaceTypeIPSec "IPSec"
+ *
+ * --- kSCPropNetServiceSubType values (for PPP) ---
+ * kSCValNetInterfaceSubTypePPPoE "PPPoE"
+ * kSCValNetInterfaceSubTypePPPSerial "PPPSerial"
+ * kSCValNetInterfaceSubTypePPTP "PPTP"
+ * kSCValNetInterfaceSubTypeL2TP "L2TP"
+ *
+ * kSCEntNetIPSec Entity Keys
+ *
+ * kSCPropNetIPSecAuthenticationMethod "AuthenticationMethod" CFString
+ * kSCPropNetIPSecLocalCertificate "LocalCertificate" CFData
+ * kSCPropNetIPSecLocalIdentifier "LocalIdentifier" CFString
+ * kSCPropNetIPSecLocalIdentifierType "LocalIdentifierType" CFString
+ * kSCPropNetIPSecSharedSecret "SharedSecret" CFString
+ * kSCPropNetIPSecSharedSecretEncryption "SharedSecretEncryption" CFString
+ * kSCPropNetIPSecConnectTime "ConnectTime" CFNumber
+ * kSCPropNetIPSecRemoteAddress "RemoteAddress" CFString
+ * kSCPropNetIPSecStatus "Status" CFNumber
+ * kSCPropNetIPSecXAuthEnabled "XAuthEnabled" CFNumber (0 or 1)
+ * kSCPropNetIPSecXAuthName "XAuthName" CFString
+ * kSCPropNetIPSecXAuthPassword "XAuthPassword" CFString
+ * kSCPropNetIPSecXAuthPasswordEncryption "XAuthPasswordEncryption" CFString
+ *
+ * --- kSCPropNetIPSecAuthenticationMethod values ---
+ * kSCValNetIPSecAuthenticationMethodSharedSecret "SharedSecret"
+ * kSCValNetIPSecAuthenticationMethodCertificate "Certificate"
+ * kSCValNetIPSecAuthenticationMethodHybrid "Hybrid"
+ *
+ * --- kSCPropNetIPSecLocalIdentifierType values ---
+ * kSCValNetIPSecLocalIdentifierTypeKeyID "KeyID"
+ *
+ * --- kSCPropNetIPSecSharedSecretEncryption values ---
+ * kSCValNetIPSecSharedSecretEncryptionKeychain "Keychain"
+ *
+ * --- kSCPropNetIPSecXAuthPasswordEncryption values ---
+ * kSCValNetIPSecXAuthPasswordEncryptionKeychain "Keychain"
+ * kSCValNetIPSecXAuthPasswordEncryptionPrompt "Prompt"
+ *
+ * kSCEntNetIPv4 Entity Keys
+ *
+ * kSCPropNetIPv4Addresses "Addresses" CFArray[CFString]
+ * kSCPropNetIPv4ConfigMethod "ConfigMethod" CFString
+ * kSCPropNetIPv4DHCPClientID "DHCPClientID" CFString
+ * kSCPropNetIPv4Router "Router" CFString
+ * kSCPropNetIPv4SubnetMasks "SubnetMasks" CFArray[CFString]
+ * kSCPropNetIPv4DestAddresses "DestAddresses" CFArray[CFString]
+ * kSCPropNetIPv4BroadcastAddresses "BroadcastAddresses" CFArray[CFString]
+ *
+ * --- kSCPropNetIPv4ConfigMethod values ---
+ * kSCValNetIPv4ConfigMethodAutomatic "Automatic"
+ * kSCValNetIPv4ConfigMethodBOOTP "BOOTP"
+ * kSCValNetIPv4ConfigMethodDHCP "DHCP"
+ * kSCValNetIPv4ConfigMethodINFORM "INFORM"
+ * kSCValNetIPv4ConfigMethodLinkLocal "LinkLocal"
+ * kSCValNetIPv4ConfigMethodManual "Manual"
+ * kSCValNetIPv4ConfigMethodPPP "PPP"
+ *
+ * kSCEntNetIPv6 Entity Keys
+ *
+ * kSCPropNetIPv6Addresses "Addresses" CFArray[CFString]
+ * kSCPropNetIPv6ConfigMethod "ConfigMethod" CFString
+ * kSCPropNetIPv6DestAddresses "DestAddresses" CFArray[CFString]
+ * kSCPropNetIPv6Flags "Flags" CFArray[CFNumber]
+ * kSCPropNetIPv6PrefixLength "PrefixLength" CFArray[CFNumber]
+ * kSCPropNetIPv6Router "Router" CFString
+ *
+ * --- kSCPropNetIPv6ConfigMethod values ---
+ * kSCValNetIPv6ConfigMethodAutomatic "Automatic"
+ * kSCValNetIPv6ConfigMethodLinkLocal "LinkLocal"
+ * kSCValNetIPv6ConfigMethodManual "Manual"
+ * kSCValNetIPv6ConfigMethodRouterAdvertisement "RouterAdvertisement"
+ * kSCValNetIPv6ConfigMethod6to4 "6to4"
+ *
+ * kSCEntNet6to4 Entity Keys
+ *
+ * kSCPropNet6to4Relay "Relay" CFString
+ *
+ * kSCEntNetLink Entity Keys
+ *
+ * kSCPropNetLinkActive "Active" CFBoolean
+ * kSCPropNetLinkDetaching "Detaching" CFBoolean
+ *
+ * kSCEntNetModem (Hardware) Entity Keys
+ *
+ * kSCPropNetModemAccessPointName "AccessPointName" CFString
+ * kSCPropNetModemConnectionPersonality "ConnectionPersonality" CFString
+ * kSCPropNetModemConnectionScript "ConnectionScript" CFString
+ * kSCPropNetModemConnectSpeed "ConnectSpeed" CFNumber
+ * kSCPropNetModemDataCompression "DataCompression" CFNumber (0 or 1)
+ * kSCPropNetModemDeviceContextID "DeviceContextID" CFString
+ * kSCPropNetModemDeviceModel "DeviceModel" CFString
+ * kSCPropNetModemDeviceVendor "DeviceVendor" CFString
+ * kSCPropNetModemDialMode "DialMode" CFString
+ * kSCPropNetModemErrorCorrection "ErrorCorrection" CFNumber (0 or 1)
+ * kSCPropNetModemHoldCallWaitingAudibleAlert "HoldCallWaitingAudibleAlert" CFNumber (0 or 1)
+ * kSCPropNetModemHoldDisconnectOnAnswer "HoldDisconnectOnAnswer" CFNumber (0 or 1)
+ * kSCPropNetModemHoldEnabled "HoldEnabled" CFNumber (0 or 1)
+ * kSCPropNetModemHoldReminder "HoldReminder" CFNumber (0 or 1)
+ * kSCPropNetModemHoldReminderTime "HoldReminderTime" CFNumber
+ * kSCPropNetModemNote "Note" CFString
+ * kSCPropNetModemPulseDial "PulseDial" CFNumber (0 or 1)
+ * kSCPropNetModemSpeaker "Speaker" CFNumber (0 or 1)
+ * kSCPropNetModemSpeed "Speed" CFNumber
+ *
+ * --- kSCPropNetModemDialMode values ---
+ * kSCValNetModemDialModeIgnoreDialTone "IgnoreDialTone"
+ * kSCValNetModemDialModeManual "Manual"
+ * kSCValNetModemDialModeWaitForDialTone "WaitForDialTone"
+ *
+ * kSCEntNetPPP Entity Keys
+ *
+ * kSCPropNetPPPACSPEnabled "ACSPEnabled" CFNumber (0 or 1)
+ * kSCPropNetPPPConnectTime "ConnectTime" CFNumber
+ * kSCPropNetPPPDeviceLastCause "DeviceLastCause" CFNumber
+ * kSCPropNetPPPDialOnDemand "DialOnDemand" CFNumber (0 or 1)
+ * kSCPropNetPPPDisconnectOnFastUserSwitch "DisconnectOnFastUserSwitch" CFNumber (0 or 1)
+ * kSCPropNetPPPDisconnectOnIdle "DisconnectOnIdle" CFNumber (0 or 1)
+ * kSCPropNetPPPDisconnectOnIdleTimer "DisconnectOnIdleTimer" CFNumber
+ * kSCPropNetPPPDisconnectOnLogout "DisconnectOnLogout" CFNumber (0 or 1)
+ * kSCPropNetPPPDisconnectOnSleep "DisconnectOnSleep" CFNumber (0 or 1)
+ * kSCPropNetPPPDisconnectTime "DisconnectTime" CFNumber
+ * kSCPropNetPPPIdleReminder "IdleReminder" CFNumber (0 or 1)
+ * kSCPropNetPPPIdleReminderTimer "IdleReminderTimer" CFNumber
+ * kSCPropNetPPPLastCause "LastCause" CFNumber
+ * kSCPropNetPPPLogfile "Logfile" CFString
+ * kSCPropNetPPPRetryConnectTime "RetryConnectTime" CFNumber
+ * kSCPropNetPPPSessionTimer "SessionTimer" CFNumber
+ * kSCPropNetPPPStatus "Status" CFNumber
+ * kSCPropNetPPPUseSessionTimer "UseSessionTimer" CFNumber (0 or 1)
+ * kSCPropNetPPPVerboseLogging "VerboseLogging" CFNumber (0 or 1)
+ *
+ * --- Auth: ---
+ * kSCPropNetPPPAuthName "AuthName" CFString
+ * kSCPropNetPPPAuthPassword "AuthPassword" CFString
+ * kSCPropNetPPPAuthPasswordEncryption "AuthPasswordEncryption" CFString
+ * kSCPropNetPPPAuthPrompt "AuthPrompt" CFString
+ * kSCPropNetPPPAuthProtocol "AuthProtocol" CFArray[CFString]
+ *
+ * --- kSCPropNetPPPAuthPasswordEncryption values ---
+ * kSCValNetPPPAuthPasswordEncryptionKeychain "Keychain"
+ * kSCValNetPPPAuthPasswordEncryptionToken "Token"
+ *
+ * --- kSCPropNetPPPAuthPrompt values ---
+ * kSCValNetPPPAuthPromptBefore "Before" CFString
+ * kSCValNetPPPAuthPromptAfter "After" CFString
+ *
+ * --- kSCPropNetPPPAuthProtocol values ---
+ * kSCValNetPPPAuthProtocolCHAP "CHAP" CFString
+ * kSCValNetPPPAuthProtocolEAP "EAP" CFString
+ * kSCValNetPPPAuthProtocolMSCHAP1 "MSCHAP1" CFString
+ * kSCValNetPPPAuthProtocolMSCHAP2 "MSCHAP2" CFString
+ * kSCValNetPPPAuthProtocolPAP "PAP" CFString
+ *
+ * --- Comm: ---
+ * kSCPropNetPPPCommAlternateRemoteAddress "CommAlternateRemoteAddress" CFString
+ * kSCPropNetPPPCommConnectDelay "CommConnectDelay" CFNumber
+ * kSCPropNetPPPCommDisplayTerminalWindow "CommDisplayTerminalWindow" CFNumber (0 or 1)
+ * kSCPropNetPPPCommRedialCount "CommRedialCount" CFNumber
+ * kSCPropNetPPPCommRedialEnabled "CommRedialEnabled" CFNumber (0 or 1)
+ * kSCPropNetPPPCommRedialInterval "CommRedialInterval" CFNumber
+ * kSCPropNetPPPCommRemoteAddress "CommRemoteAddress" CFString
+ * kSCPropNetPPPCommTerminalScript "CommTerminalScript" CFString
+ * kSCPropNetPPPCommUseTerminalScript "CommUseTerminalScript" CFNumber (0 or 1)
+ *
+ * --- CCP: ---
+ * kSCPropNetPPPCCPEnabled "CCPEnabled" CFNumber (0 or 1)
+ * kSCPropNetPPPCCPMPPE40Enabled "CCPMPPE40Enabled" CFNumber (0 or 1)
+ * kSCPropNetPPPCCPMPPE128Enabled "CCPMPPE128Enabled" CFNumber (0 or 1)
+ *
+ * --- IPCP: ---
+ * kSCPropNetPPPIPCPCompressionVJ "IPCPCompressionVJ" CFNumber (0 or 1)
+ * kSCPropNetPPPIPCPUsePeerDNS "IPCPUsePeerDNS" CFNumber (0 or 1)
+ *
+ * --- LCP: ---
+ * kSCPropNetPPPLCPEchoEnabled "LCPEchoEnabled" CFNumber (0 or 1)
+ * kSCPropNetPPPLCPEchoFailure "LCPEchoFailure" CFNumber
+ * kSCPropNetPPPLCPEchoInterval "LCPEchoInterval" CFNumber
+ * kSCPropNetPPPLCPCompressionACField "LCPCompressionACField" CFNumber (0 or 1)
+ * kSCPropNetPPPLCPCompressionPField "LCPCompressionPField" CFNumber (0 or 1)
+ * kSCPropNetPPPLCPMRU "LCPMRU" CFNumber
+ * kSCPropNetPPPLCPMTU "LCPMTU" CFNumber
+ * kSCPropNetPPPLCPReceiveACCM "LCPReceiveACCM" CFNumber
+ * kSCPropNetPPPLCPTransmitACCM "LCPTransmitACCM" CFNumber
+ *
+ * kSCEntNetPPPoE Entity Keys
+ *
+ * * RESERVED FOR FUTURE USE *
+ *
+ * kSCEntNetPPPSerial Entity Keys
+ *
+ * * RESERVED FOR FUTURE USE *
+ *
+ * kSCEntNetL2TP Entity Keys
+ *
+ * kSCPropNetL2TPIPSecSharedSecret "IPSecSharedSecret" CFString
+ * kSCPropNetL2TPIPSecSharedSecretEncryption "IPSecSharedSecretEncryption" CFString
+ * kSCPropNetL2TPTransport "Transport" CFString
+ *
+ * --- kSCPropNetL2TPIPSecSharedSecretEncryption values ---
+ * kSCValNetL2TPIPSecSharedSecretEncryptionKeychain "Keychain"
+ *
+ * --- kSCPropNetL2TPTransport values ---
+ * kSCValNetL2TPTransportIP "IP"
+ * kSCValNetL2TPTransportIPSec "IPSec"
+ *
+ * kSCEntNetProxies Entity Keys
+ *
+ * kSCPropNetProxiesExceptionsList "ExceptionsList" CFArray[CFString]
+ * kSCPropNetProxiesExcludeSimpleHostnames "ExcludeSimpleHostnames" CFNumber (0 or 1)
+ * kSCPropNetProxiesFTPEnable "FTPEnable" CFNumber (0 or 1)
+ * kSCPropNetProxiesFTPPassive "FTPPassive" CFNumber (0 or 1)
+ * kSCPropNetProxiesFTPPort "FTPPort" CFNumber
+ * kSCPropNetProxiesFTPProxy "FTPProxy" CFString
+ * kSCPropNetProxiesGopherEnable "GopherEnable" CFNumber (0 or 1)
+ * kSCPropNetProxiesGopherPort "GopherPort" CFNumber
+ * kSCPropNetProxiesGopherProxy "GopherProxy" CFString
+ * kSCPropNetProxiesHTTPEnable "HTTPEnable" CFNumber (0 or 1)
+ * kSCPropNetProxiesHTTPPort "HTTPPort" CFNumber
+ * kSCPropNetProxiesHTTPProxy "HTTPProxy" CFString
+ * kSCPropNetProxiesHTTPSEnable "HTTPSEnable" CFNumber (0 or 1)
+ * kSCPropNetProxiesHTTPSPort "HTTPSPort" CFNumber
+ * kSCPropNetProxiesHTTPSProxy "HTTPSProxy" CFString
+ * kSCPropNetProxiesRTSPEnable "RTSPEnable" CFNumber (0 or 1)
+ * kSCPropNetProxiesRTSPPort "RTSPPort" CFNumber
+ * kSCPropNetProxiesRTSPProxy "RTSPProxy" CFString
+ * kSCPropNetProxiesSOCKSEnable "SOCKSEnable" CFNumber (0 or 1)
+ * kSCPropNetProxiesSOCKSPort "SOCKSPort" CFNumber
+ * kSCPropNetProxiesSOCKSProxy "SOCKSProxy" CFString
+ * kSCPropNetProxiesProxyAutoConfigEnable "ProxyAutoConfigEnable" CFNumber (0 or 1)
+ * kSCPropNetProxiesProxyAutoConfigJavaScript "ProxyAutoConfigJavaScript" CFString
+ * kSCPropNetProxiesProxyAutoConfigURLString "ProxyAutoConfigURLString" CFString
+ * kSCPropNetProxiesProxyAutoDiscoveryEnable "ProxyAutoDiscoveryEnable" CFNumber (0 or 1)
+ *
+ * kSCEntNetSMB Entity Keys
+ *
+ * kSCPropNetSMBNetBIOSName "NetBIOSName" CFString
+ * kSCPropNetSMBNetBIOSNodeType "NetBIOSNodeType" CFString
+ * kSCPropNetSMBNetBIOSScope "NetBIOSScope" CFString
+ * kSCPropNetSMBWINSAddresses "WINSAddresses" CFArray[CFString]
+ * kSCPropNetSMBWorkgroup "Workgroup" CFString
+ *
+ * --- kSCPropNetSMBNetBIOSNodeType values ---
+ * kSCValNetSMBNetBIOSNodeTypeBroadcast "Broadcast"
+ * kSCValNetSMBNetBIOSNodeTypePeer "Peer"
+ * kSCValNetSMBNetBIOSNodeTypeMixed "Mixed"
+ * kSCValNetSMBNetBIOSNodeTypeHybrid "Hybrid"
+ *
+ * kSCCompUsers Entity Keys
+ *
+ * kSCEntUsersConsoleUser "ConsoleUser"
+ *
+ * kSCCompSystem Properties
+ *
+ * kSCPropSystemComputerName "ComputerName" CFString
+ * kSCPropSystemComputerNameEncoding "ComputerNameEncoding" CFNumber
+ *
+ * SCDynamicStore "domain" prefixes
+ *
+ * kSCDynamicStoreDomainFile "File:"
+ * kSCDynamicStoreDomainPlugin "Plugin:"
+ * kSCDynamicStoreDomainSetup "Setup:"
+ * kSCDynamicStoreDomainState "State:"
+ * kSCDynamicStoreDomainPrefs "Prefs:"
+ *
+ * Preference ("location") Keys
+ *
+ * kSCDynamicStorePropSetupCurrentSet "CurrentSet" CFString
+ * kSCDynamicStorePropSetupLastUpdated "LastUpdated"
+ *
+ * Common/shared Keys
+ *
+ * kSCDynamicStorePropNetInterfaces "Interfaces" CFArray[CFString]
+ * kSCDynamicStorePropNetPrimaryInterface "PrimaryInterface" CFString
+ * kSCDynamicStorePropNetPrimaryService "PrimaryService" CFString
+ * kSCDynamicStorePropNetServiceIDs "ServiceIDs" CFArray[CFString]
+ */
+
+
+#ifndef _SCSCHEMADEFINITIONS_H
+#define _SCSCHEMADEFINITIONS_H
+
+#include <os/availability.h>
+#include <TargetConditionals.h>
+#include <CoreFoundation/CFString.h>
+
+/*!
+ * @header SCSchemaDefinitions
+ */
+
+
+CF_ASSUME_NONNULL_BEGIN
+
+/*!
+ @const kSCResvLink
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCResvLink ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCResvLink kSCResvLink
+
+/*!
+ @const kSCResvInactive
+ */
+extern const CFStringRef kSCResvInactive ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCResvInactive kSCResvInactive
+
+/*!
+ @const kSCPropInterfaceName
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropInterfaceName ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropInterfaceName kSCPropInterfaceName
+
+/*!
+ @const kSCPropMACAddress
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropMACAddress ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropMACAddress kSCPropMACAddress
+
+/*!
+ @const kSCPropUserDefinedName
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropUserDefinedName ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropUserDefinedName kSCPropUserDefinedName
+
+/*!
+ @const kSCPropVersion
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropVersion ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropVersion kSCPropVersion
+
+/*!
+ @group Preference Keys
+ */
+
+/*!
+ @const kSCPrefCurrentSet
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPrefCurrentSet ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPrefCurrentSet kSCPrefCurrentSet
+
+/*!
+ @const kSCPrefNetworkServices
+ @discussion Value is a CFDictionary
+ */
+extern const CFStringRef kSCPrefNetworkServices ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPrefNetworkServices kSCPrefNetworkServices
+
+/*!
+ @const kSCPrefSets
+ @discussion Value is a CFDictionary
+ */
+extern const CFStringRef kSCPrefSets ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPrefSets kSCPrefSets
+
+/*!
+ @const kSCPrefSystem
+ @discussion Value is a CFDictionary
+ */
+extern const CFStringRef kSCPrefSystem ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPrefSystem kSCPrefSystem
+
+/*!
+ @group Component Keys
+ */
+
+/*!
+ @const kSCCompNetwork
+ */
+extern const CFStringRef kSCCompNetwork ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCCompNetwork kSCCompNetwork
+
+/*!
+ @const kSCCompService
+ */
+extern const CFStringRef kSCCompService ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCCompService kSCCompService
+
+/*!
+ @const kSCCompGlobal
+ */
+extern const CFStringRef kSCCompGlobal ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCCompGlobal kSCCompGlobal
+
+/*!
+ @const kSCCompHostNames
+ */
+extern const CFStringRef kSCCompHostNames ; // API_AVAILABLE(macos(10.2)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCCompHostNames kSCCompHostNames
+
+/*!
+ @const kSCCompInterface
+ */
+extern const CFStringRef kSCCompInterface ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCCompInterface kSCCompInterface
+
+/*!
+ @const kSCCompSystem
+ */
+extern const CFStringRef kSCCompSystem ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCCompSystem kSCCompSystem
+
+/*!
+ @const kSCCompUsers
+ */
+extern const CFStringRef kSCCompUsers ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCCompUsers kSCCompUsers
+
+/*!
+ @const kSCCompAnyRegex
+ */
+extern const CFStringRef kSCCompAnyRegex ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCCompAnyRegex kSCCompAnyRegex
+
+/*!
+ @group Network Entity Keys
+ */
+
+/*!
+ @const kSCEntNetAirPort
+ @discussion Value is a CFDictionary
+ */
+extern const CFStringRef kSCEntNetAirPort ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCEntNetAirPort kSCEntNetAirPort
+
+/*!
+ @const kSCEntNetDHCP
+ @discussion Value is a CFDictionary
+ */
+extern const CFStringRef kSCEntNetDHCP ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCEntNetDHCP kSCEntNetDHCP
+
+/*!
+ @const kSCEntNetDNS
+ @discussion Value is a CFDictionary
+ */
+extern const CFStringRef kSCEntNetDNS ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCEntNetDNS kSCEntNetDNS
+
+/*!
+ @const kSCEntNetEthernet
+ @discussion Value is a CFDictionary
+ */
+extern const CFStringRef kSCEntNetEthernet ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCEntNetEthernet kSCEntNetEthernet
+
+/*!
+ @const kSCEntNetFireWire
+ @discussion Value is a CFDictionary
+ */
+extern const CFStringRef kSCEntNetFireWire ; // API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCEntNetFireWire kSCEntNetFireWire
+
+/*!
+ @const kSCEntNetInterface
+ @discussion Value is a CFDictionary
+ */
+extern const CFStringRef kSCEntNetInterface ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCEntNetInterface kSCEntNetInterface
+
+/*!
+ @const kSCEntNetIPSec
+ @discussion Value is a CFDictionary
+ */
+extern const CFStringRef kSCEntNetIPSec ; // API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCEntNetIPSec kSCEntNetIPSec
+
+/*!
+ @const kSCEntNetIPv4
+ @discussion Value is a CFDictionary
+ */
+extern const CFStringRef kSCEntNetIPv4 ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCEntNetIPv4 kSCEntNetIPv4
+
+/*!
+ @const kSCEntNetIPv6
+ @discussion Value is a CFDictionary
+ */
+extern const CFStringRef kSCEntNetIPv6 ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCEntNetIPv6 kSCEntNetIPv6
+
+/*!
+ @const kSCEntNetL2TP
+ @discussion Value is a CFDictionary
+ */
+extern const CFStringRef kSCEntNetL2TP ; // API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCEntNetL2TP kSCEntNetL2TP
+
+/*!
+ @const kSCEntNetLink
+ @discussion Value is a CFDictionary
+ */
+extern const CFStringRef kSCEntNetLink ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCEntNetLink kSCEntNetLink
+
+/*!
+ @const kSCEntNetModem
+ @discussion Value is a CFDictionary
+ */
+extern const CFStringRef kSCEntNetModem ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCEntNetModem kSCEntNetModem
+
+/*!
+ @const kSCEntNetPPP
+ @discussion Value is a CFDictionary
+ */
+extern const CFStringRef kSCEntNetPPP ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCEntNetPPP kSCEntNetPPP
+
+/*!
+ @const kSCEntNetPPPoE
+ @discussion Value is a CFDictionary
+ */
+extern const CFStringRef kSCEntNetPPPoE ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCEntNetPPPoE kSCEntNetPPPoE
+
+/*!
+ @const kSCEntNetPPPSerial
+ @discussion Value is a CFDictionary
+ */
+extern const CFStringRef kSCEntNetPPPSerial ; // API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCEntNetPPPSerial kSCEntNetPPPSerial
+
+/*!
+ @const kSCEntNetPPTP
+ @discussion Value is a CFDictionary
+ */
+extern const CFStringRef kSCEntNetPPTP API_DEPRECATED("No longer supported", macos(10.3,10.12)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCEntNetPPTP kSCEntNetPPTP
+
+/*!
+ @const kSCEntNetProxies
+ @discussion Value is a CFDictionary
+ */
+extern const CFStringRef kSCEntNetProxies ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCEntNetProxies kSCEntNetProxies
+
+/*!
+ @const kSCEntNetSMB
+ @discussion Value is a CFDictionary
+ */
+extern const CFStringRef kSCEntNetSMB ; // API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCEntNetSMB kSCEntNetSMB
+
+/*!
+ @const kSCEntNet6to4
+ @discussion Value is a CFDictionary
+ */
+extern const CFStringRef kSCEntNet6to4 ; // API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCEntNet6to4 kSCEntNet6to4
+
+/*!
+ @group kSCCompNetwork Properties
+ */
+
+/*!
+ @const kSCPropNetOverridePrimary
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetOverridePrimary ; // API_AVAILABLE(macos(10.2)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetOverridePrimary kSCPropNetOverridePrimary
+
+/*!
+ @const kSCPropNetServiceOrder
+ @discussion Value is a CFArray[CFString]
+ */
+extern const CFStringRef kSCPropNetServiceOrder ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetServiceOrder kSCPropNetServiceOrder
+
+/*!
+ @const kSCPropNetPPPOverridePrimary
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetPPPOverridePrimary ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPOverridePrimary kSCPropNetPPPOverridePrimary
+
+/*!
+ @group kSCCompNetworkInterface Properties
+ */
+
+/*!
+ @const kSCPropNetInterfaces
+ @discussion Value is a CFArray[CFString]
+ */
+extern const CFStringRef kSCPropNetInterfaces ; // API_AVAILABLE(macos(10.2)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetInterfaces kSCPropNetInterfaces
+
+/*!
+ @group kSCCompNetworkHostNames Properties
+ */
+
+/*!
+ @const kSCPropNetLocalHostName
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetLocalHostName ; // API_AVAILABLE(macos(10.2)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetLocalHostName kSCPropNetLocalHostName
+
+/*!
+ @group kSCEntNetAirPort (Hardware) Entity Keys
+ */
+
+/*!
+ @const kSCPropNetAirPortAllowNetCreation
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetAirPortAllowNetCreation API_DEPRECATED("No longer supported", macos(10.2,10.9)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetAirPortAllowNetCreation kSCPropNetAirPortAllowNetCreation
+
+/*!
+ @const kSCPropNetAirPortAuthPassword
+ @discussion Value is a CFData
+ */
+extern const CFStringRef kSCPropNetAirPortAuthPassword API_DEPRECATED("No longer supported", macos(10.1,10.9)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetAirPortAuthPassword kSCPropNetAirPortAuthPassword
+
+/*!
+ @const kSCPropNetAirPortAuthPasswordEncryption
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetAirPortAuthPasswordEncryption API_DEPRECATED("No longer supported", macos(10.1,10.9)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetAirPortAuthPasswordEncryption kSCPropNetAirPortAuthPasswordEncryption
+
+/*!
+ @const kSCPropNetAirPortJoinMode
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetAirPortJoinMode API_DEPRECATED("No longer supported", macos(10.2,10.9)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetAirPortJoinMode kSCPropNetAirPortJoinMode
+
+/*!
+ @const kSCPropNetAirPortPowerEnabled
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetAirPortPowerEnabled API_DEPRECATED("No longer supported", macos(10.1,10.9)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetAirPortPowerEnabled kSCPropNetAirPortPowerEnabled
+
+/*!
+ @const kSCPropNetAirPortPreferredNetwork
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetAirPortPreferredNetwork API_DEPRECATED("No longer supported", macos(10.1,10.9)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetAirPortPreferredNetwork kSCPropNetAirPortPreferredNetwork
+
+/*!
+ @const kSCPropNetAirPortSavePasswords
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetAirPortSavePasswords API_DEPRECATED("No longer supported", macos(10.2,10.9)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetAirPortSavePasswords kSCPropNetAirPortSavePasswords
+
+/*!
+ @const kSCValNetAirPortJoinModeAutomatic
+ */
+extern const CFStringRef kSCValNetAirPortJoinModeAutomatic API_DEPRECATED("No longer supported", macos(10.3,10.9)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetAirPortJoinModeAutomatic kSCValNetAirPortJoinModeAutomatic
+
+/*!
+ @const kSCValNetAirPortJoinModePreferred
+ */
+extern const CFStringRef kSCValNetAirPortJoinModePreferred API_DEPRECATED("No longer supported", macos(10.2,10.9)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetAirPortJoinModePreferred kSCValNetAirPortJoinModePreferred
+
+/*!
+ @const kSCValNetAirPortJoinModeRanked
+ */
+extern const CFStringRef kSCValNetAirPortJoinModeRanked API_DEPRECATED("No longer supported", macos(10.4,10.9)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetAirPortJoinModeRanked kSCValNetAirPortJoinModeRanked
+
+/*!
+ @const kSCValNetAirPortJoinModeRecent
+ */
+extern const CFStringRef kSCValNetAirPortJoinModeRecent API_DEPRECATED("No longer supported", macos(10.2,10.9)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetAirPortJoinModeRecent kSCValNetAirPortJoinModeRecent
+
+/*!
+ @const kSCValNetAirPortJoinModeStrongest
+ */
+extern const CFStringRef kSCValNetAirPortJoinModeStrongest API_DEPRECATED("No longer supported", macos(10.2,10.9)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetAirPortJoinModeStrongest kSCValNetAirPortJoinModeStrongest
+
+/*!
+ @const kSCValNetAirPortAuthPasswordEncryptionKeychain
+ */
+extern const CFStringRef kSCValNetAirPortAuthPasswordEncryptionKeychain API_DEPRECATED("No longer supported", macos(10.3,10.9)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetAirPortAuthPasswordEncryptionKeychain kSCValNetAirPortAuthPasswordEncryptionKeychain
+
+/*!
+ @group kSCEntNetDNS Entity Keys
+ */
+
+/*!
+ @const kSCPropNetDNSDomainName
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetDNSDomainName ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetDNSDomainName kSCPropNetDNSDomainName
+
+/*!
+ @const kSCPropNetDNSOptions
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetDNSOptions ; // API_AVAILABLE(macos(10.4)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetDNSOptions kSCPropNetDNSOptions
+
+/*!
+ @const kSCPropNetDNSSearchDomains
+ @discussion Value is a CFArray[CFString]
+ */
+extern const CFStringRef kSCPropNetDNSSearchDomains ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetDNSSearchDomains kSCPropNetDNSSearchDomains
+
+/*!
+ @const kSCPropNetDNSSearchOrder
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropNetDNSSearchOrder ; // API_AVAILABLE(macos(10.4)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetDNSSearchOrder kSCPropNetDNSSearchOrder
+
+/*!
+ @const kSCPropNetDNSServerAddresses
+ @discussion Value is a CFArray[CFString]
+ */
+extern const CFStringRef kSCPropNetDNSServerAddresses ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetDNSServerAddresses kSCPropNetDNSServerAddresses
+
+/*!
+ @const kSCPropNetDNSServerPort
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropNetDNSServerPort ; // API_AVAILABLE(macos(10.4)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetDNSServerPort kSCPropNetDNSServerPort
+
+/*!
+ @const kSCPropNetDNSServerTimeout
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropNetDNSServerTimeout ; // API_AVAILABLE(macos(10.4)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetDNSServerTimeout kSCPropNetDNSServerTimeout
+
+/*!
+ @const kSCPropNetDNSSortList
+ @discussion Value is a CFArray[CFString]
+ */
+extern const CFStringRef kSCPropNetDNSSortList ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetDNSSortList kSCPropNetDNSSortList
+
+/*!
+ @const kSCPropNetDNSSupplementalMatchDomains
+ @discussion Value is a CFArray[CFString]
+ */
+extern const CFStringRef kSCPropNetDNSSupplementalMatchDomains ; // API_AVAILABLE(macos(10.4)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetDNSSupplementalMatchDomains kSCPropNetDNSSupplementalMatchDomains
+
+/*!
+ @const kSCPropNetDNSSupplementalMatchOrders
+ @discussion Value is a CFArray[CFNumber]
+ */
+extern const CFStringRef kSCPropNetDNSSupplementalMatchOrders ; // API_AVAILABLE(macos(10.4)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetDNSSupplementalMatchOrders kSCPropNetDNSSupplementalMatchOrders
+
+/*!
+ @group kSCEntNetEthernet (Hardware) Entity Keys
+ */
+
+/*!
+ @const kSCPropNetEthernetMediaSubType
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetEthernetMediaSubType ; // API_AVAILABLE(macos(10.2)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetEthernetMediaSubType kSCPropNetEthernetMediaSubType
+
+/*!
+ @const kSCPropNetEthernetMediaOptions
+ @discussion Value is a CFArray[CFString]
+ */
+extern const CFStringRef kSCPropNetEthernetMediaOptions ; // API_AVAILABLE(macos(10.2)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetEthernetMediaOptions kSCPropNetEthernetMediaOptions
+
+/*!
+ @const kSCPropNetEthernetMTU
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropNetEthernetMTU ; // API_AVAILABLE(macos(10.2)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetEthernetMTU kSCPropNetEthernetMTU
+
+/*!
+ @group kSCEntNetFireWire (Hardware) Entity Keys
+ */
+
+/*!
+ @group kSCEntNetInterface Entity Keys
+ */
+
+/*!
+ @const kSCPropNetInterfaceDeviceName
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetInterfaceDeviceName ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetInterfaceDeviceName kSCPropNetInterfaceDeviceName
+
+/*!
+ @const kSCPropNetInterfaceHardware
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetInterfaceHardware ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetInterfaceHardware kSCPropNetInterfaceHardware
+
+/*!
+ @const kSCPropNetInterfaceType
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetInterfaceType ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetInterfaceType kSCPropNetInterfaceType
+
+/*!
+ @const kSCPropNetInterfaceSubType
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetInterfaceSubType ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetInterfaceSubType kSCPropNetInterfaceSubType
+
+/*!
+ @const kSCPropNetInterfaceSupportsModemOnHold
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetInterfaceSupportsModemOnHold API_DEPRECATED("No longer supported", macos(10.2,10.13)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetInterfaceSupportsModemOnHold kSCPropNetInterfaceSupportsModemOnHold
+
+/*!
+ @const kSCValNetInterfaceTypeEthernet
+ */
+extern const CFStringRef kSCValNetInterfaceTypeEthernet ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetInterfaceTypeEthernet kSCValNetInterfaceTypeEthernet
+
+/*!
+ @const kSCValNetInterfaceTypeFireWire
+ */
+extern const CFStringRef kSCValNetInterfaceTypeFireWire ; // API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetInterfaceTypeFireWire kSCValNetInterfaceTypeFireWire
+
+/*!
+ @const kSCValNetInterfaceTypePPP
+ */
+extern const CFStringRef kSCValNetInterfaceTypePPP ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetInterfaceTypePPP kSCValNetInterfaceTypePPP
+
+/*!
+ @const kSCValNetInterfaceType6to4
+ */
+extern const CFStringRef kSCValNetInterfaceType6to4 ; // API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetInterfaceType6to4 kSCValNetInterfaceType6to4
+
+/*!
+ @const kSCValNetInterfaceTypeIPSec
+ */
+extern const CFStringRef kSCValNetInterfaceTypeIPSec ; // API_AVAILABLE(macos(10.6)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetInterfaceTypeIPSec kSCValNetInterfaceTypeIPSec
+
+/*!
+ @const kSCValNetInterfaceSubTypePPPoE
+ */
+extern const CFStringRef kSCValNetInterfaceSubTypePPPoE ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetInterfaceSubTypePPPoE kSCValNetInterfaceSubTypePPPoE
+
+/*!
+ @const kSCValNetInterfaceSubTypePPPSerial
+ */
+extern const CFStringRef kSCValNetInterfaceSubTypePPPSerial ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetInterfaceSubTypePPPSerial kSCValNetInterfaceSubTypePPPSerial
+
+/*!
+ @const kSCValNetInterfaceSubTypePPTP
+ */
+extern const CFStringRef kSCValNetInterfaceSubTypePPTP API_DEPRECATED("No longer supported", macos(10.2,10.12)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetInterfaceSubTypePPTP kSCValNetInterfaceSubTypePPTP
+
+/*!
+ @const kSCValNetInterfaceSubTypeL2TP
+ */
+extern const CFStringRef kSCValNetInterfaceSubTypeL2TP ; // API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetInterfaceSubTypeL2TP kSCValNetInterfaceSubTypeL2TP
+
+/*!
+ @group kSCEntNetIPSec Entity Keys
+ */
+
+/*!
+ @const kSCPropNetIPSecAuthenticationMethod
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetIPSecAuthenticationMethod ; // API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetIPSecAuthenticationMethod kSCPropNetIPSecAuthenticationMethod
+
+/*!
+ @const kSCPropNetIPSecLocalCertificate
+ @discussion Value is a CFData
+ */
+extern const CFStringRef kSCPropNetIPSecLocalCertificate ; // API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetIPSecLocalCertificate kSCPropNetIPSecLocalCertificate
+
+/*!
+ @const kSCPropNetIPSecLocalIdentifier
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetIPSecLocalIdentifier ; // API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetIPSecLocalIdentifier kSCPropNetIPSecLocalIdentifier
+
+/*!
+ @const kSCPropNetIPSecLocalIdentifierType
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetIPSecLocalIdentifierType ; // API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetIPSecLocalIdentifierType kSCPropNetIPSecLocalIdentifierType
+
+/*!
+ @const kSCPropNetIPSecSharedSecret
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetIPSecSharedSecret ; // API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetIPSecSharedSecret kSCPropNetIPSecSharedSecret
+
+/*!
+ @const kSCPropNetIPSecSharedSecretEncryption
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetIPSecSharedSecretEncryption ; // API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetIPSecSharedSecretEncryption kSCPropNetIPSecSharedSecretEncryption
+
+/*!
+ @const kSCPropNetIPSecConnectTime
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropNetIPSecConnectTime ; // API_AVAILABLE(macos(10.6)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetIPSecConnectTime kSCPropNetIPSecConnectTime
+
+/*!
+ @const kSCPropNetIPSecRemoteAddress
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetIPSecRemoteAddress ; // API_AVAILABLE(macos(10.6)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetIPSecRemoteAddress kSCPropNetIPSecRemoteAddress
+
+/*!
+ @const kSCPropNetIPSecStatus
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropNetIPSecStatus ; // API_AVAILABLE(macos(10.6)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetIPSecStatus kSCPropNetIPSecStatus
+
+/*!
+ @const kSCPropNetIPSecXAuthEnabled
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetIPSecXAuthEnabled ; // API_AVAILABLE(macos(10.6)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetIPSecXAuthEnabled kSCPropNetIPSecXAuthEnabled
+
+/*!
+ @const kSCPropNetIPSecXAuthName
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetIPSecXAuthName ; // API_AVAILABLE(macos(10.6)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetIPSecXAuthName kSCPropNetIPSecXAuthName
+
+/*!
+ @const kSCPropNetIPSecXAuthPassword
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetIPSecXAuthPassword ; // API_AVAILABLE(macos(10.6)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetIPSecXAuthPassword kSCPropNetIPSecXAuthPassword
+
+/*!
+ @const kSCPropNetIPSecXAuthPasswordEncryption
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetIPSecXAuthPasswordEncryption ; // API_AVAILABLE(macos(10.6)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetIPSecXAuthPasswordEncryption kSCPropNetIPSecXAuthPasswordEncryption
+
+/*!
+ @const kSCValNetIPSecAuthenticationMethodSharedSecret
+ */
+extern const CFStringRef kSCValNetIPSecAuthenticationMethodSharedSecret ; // API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetIPSecAuthenticationMethodSharedSecret kSCValNetIPSecAuthenticationMethodSharedSecret
+
+/*!
+ @const kSCValNetIPSecAuthenticationMethodCertificate
+ */
+extern const CFStringRef kSCValNetIPSecAuthenticationMethodCertificate ; // API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetIPSecAuthenticationMethodCertificate kSCValNetIPSecAuthenticationMethodCertificate
+
+/*!
+ @const kSCValNetIPSecAuthenticationMethodHybrid
+ */
+extern const CFStringRef kSCValNetIPSecAuthenticationMethodHybrid ; // API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetIPSecAuthenticationMethodHybrid kSCValNetIPSecAuthenticationMethodHybrid
+
+/*!
+ @const kSCValNetIPSecLocalIdentifierTypeKeyID
+ */
+extern const CFStringRef kSCValNetIPSecLocalIdentifierTypeKeyID ; // API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetIPSecLocalIdentifierTypeKeyID kSCValNetIPSecLocalIdentifierTypeKeyID
+
+/*!
+ @const kSCValNetIPSecSharedSecretEncryptionKeychain
+ */
+extern const CFStringRef kSCValNetIPSecSharedSecretEncryptionKeychain ; // API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetIPSecSharedSecretEncryptionKeychain kSCValNetIPSecSharedSecretEncryptionKeychain
+
+/*!
+ @const kSCValNetIPSecXAuthPasswordEncryptionKeychain
+ */
+extern const CFStringRef kSCValNetIPSecXAuthPasswordEncryptionKeychain ; // API_AVAILABLE(macos(10.6)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetIPSecXAuthPasswordEncryptionKeychain kSCValNetIPSecXAuthPasswordEncryptionKeychain
+
+/*!
+ @const kSCValNetIPSecXAuthPasswordEncryptionPrompt
+ */
+extern const CFStringRef kSCValNetIPSecXAuthPasswordEncryptionPrompt ; // API_AVAILABLE(macos(10.6)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetIPSecXAuthPasswordEncryptionPrompt kSCValNetIPSecXAuthPasswordEncryptionPrompt
+
+/*!
+ @group kSCEntNetIPv4 Entity Keys
+ */
+
+/*!
+ @const kSCPropNetIPv4Addresses
+ @discussion Value is a CFArray[CFString]
+ */
+extern const CFStringRef kSCPropNetIPv4Addresses ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetIPv4Addresses kSCPropNetIPv4Addresses
+
+/*!
+ @const kSCPropNetIPv4ConfigMethod
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetIPv4ConfigMethod ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetIPv4ConfigMethod kSCPropNetIPv4ConfigMethod
+
+/*!
+ @const kSCPropNetIPv4DHCPClientID
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetIPv4DHCPClientID ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetIPv4DHCPClientID kSCPropNetIPv4DHCPClientID
+
+/*!
+ @const kSCPropNetIPv4Router
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetIPv4Router ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetIPv4Router kSCPropNetIPv4Router
+
+/*!
+ @const kSCPropNetIPv4SubnetMasks
+ @discussion Value is a CFArray[CFString]
+ */
+extern const CFStringRef kSCPropNetIPv4SubnetMasks ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetIPv4SubnetMasks kSCPropNetIPv4SubnetMasks
+
+/*!
+ @const kSCPropNetIPv4DestAddresses
+ @discussion Value is a CFArray[CFString]
+ */
+extern const CFStringRef kSCPropNetIPv4DestAddresses ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetIPv4DestAddresses kSCPropNetIPv4DestAddresses
+
+/*!
+ @const kSCPropNetIPv4BroadcastAddresses
+ @discussion Value is a CFArray[CFString]
+ */
+extern const CFStringRef kSCPropNetIPv4BroadcastAddresses ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetIPv4BroadcastAddresses kSCPropNetIPv4BroadcastAddresses
+
+/*!
+ @const kSCValNetIPv4ConfigMethodAutomatic
+ */
+extern const CFStringRef kSCValNetIPv4ConfigMethodAutomatic ; // API_AVAILABLE(macos(10.6)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetIPv4ConfigMethodAutomatic kSCValNetIPv4ConfigMethodAutomatic
+
+/*!
+ @const kSCValNetIPv4ConfigMethodBOOTP
+ */
+extern const CFStringRef kSCValNetIPv4ConfigMethodBOOTP ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetIPv4ConfigMethodBOOTP kSCValNetIPv4ConfigMethodBOOTP
+
+/*!
+ @const kSCValNetIPv4ConfigMethodDHCP
+ */
+extern const CFStringRef kSCValNetIPv4ConfigMethodDHCP ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetIPv4ConfigMethodDHCP kSCValNetIPv4ConfigMethodDHCP
+
+/*!
+ @const kSCValNetIPv4ConfigMethodINFORM
+ */
+extern const CFStringRef kSCValNetIPv4ConfigMethodINFORM ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetIPv4ConfigMethodINFORM kSCValNetIPv4ConfigMethodINFORM
+
+/*!
+ @const kSCValNetIPv4ConfigMethodLinkLocal
+ */
+extern const CFStringRef kSCValNetIPv4ConfigMethodLinkLocal ; // API_AVAILABLE(macos(10.2)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetIPv4ConfigMethodLinkLocal kSCValNetIPv4ConfigMethodLinkLocal
+
+/*!
+ @const kSCValNetIPv4ConfigMethodManual
+ */
+extern const CFStringRef kSCValNetIPv4ConfigMethodManual ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetIPv4ConfigMethodManual kSCValNetIPv4ConfigMethodManual
+
+/*!
+ @const kSCValNetIPv4ConfigMethodPPP
+ */
+extern const CFStringRef kSCValNetIPv4ConfigMethodPPP ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetIPv4ConfigMethodPPP kSCValNetIPv4ConfigMethodPPP
+
+/*!
+ @group kSCEntNetIPv6 Entity Keys
+ */
+
+/*!
+ @const kSCPropNetIPv6Addresses
+ @discussion Value is a CFArray[CFString]
+ */
+extern const CFStringRef kSCPropNetIPv6Addresses ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetIPv6Addresses kSCPropNetIPv6Addresses
+
+/*!
+ @const kSCPropNetIPv6ConfigMethod
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetIPv6ConfigMethod ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetIPv6ConfigMethod kSCPropNetIPv6ConfigMethod
+
+/*!
+ @const kSCPropNetIPv6DestAddresses
+ @discussion Value is a CFArray[CFString]
+ */
+extern const CFStringRef kSCPropNetIPv6DestAddresses ; // API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetIPv6DestAddresses kSCPropNetIPv6DestAddresses
+
+/*!
+ @const kSCPropNetIPv6Flags
+ @discussion Value is a CFArray[CFNumber]
+ */
+extern const CFStringRef kSCPropNetIPv6Flags ; // API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetIPv6Flags kSCPropNetIPv6Flags
+
+/*!
+ @const kSCPropNetIPv6PrefixLength
+ @discussion Value is a CFArray[CFNumber]
+ */
+extern const CFStringRef kSCPropNetIPv6PrefixLength ; // API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetIPv6PrefixLength kSCPropNetIPv6PrefixLength
+
+/*!
+ @const kSCPropNetIPv6Router
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetIPv6Router ; // API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetIPv6Router kSCPropNetIPv6Router
+
+/*!
+ @const kSCValNetIPv6ConfigMethodAutomatic
+ */
+extern const CFStringRef kSCValNetIPv6ConfigMethodAutomatic ; // API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetIPv6ConfigMethodAutomatic kSCValNetIPv6ConfigMethodAutomatic
+
+/*!
+ @const kSCValNetIPv6ConfigMethodLinkLocal
+ */
+extern const CFStringRef kSCValNetIPv6ConfigMethodLinkLocal ; // API_AVAILABLE(macos(10.7)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetIPv6ConfigMethodLinkLocal kSCValNetIPv6ConfigMethodLinkLocal
+
+/*!
+ @const kSCValNetIPv6ConfigMethodManual
+ */
+extern const CFStringRef kSCValNetIPv6ConfigMethodManual ; // API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetIPv6ConfigMethodManual kSCValNetIPv6ConfigMethodManual
+
+/*!
+ @const kSCValNetIPv6ConfigMethodRouterAdvertisement
+ */
+extern const CFStringRef kSCValNetIPv6ConfigMethodRouterAdvertisement ; // API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetIPv6ConfigMethodRouterAdvertisement kSCValNetIPv6ConfigMethodRouterAdvertisement
+
+/*!
+ @const kSCValNetIPv6ConfigMethod6to4
+ */
+extern const CFStringRef kSCValNetIPv6ConfigMethod6to4 ; // API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetIPv6ConfigMethod6to4 kSCValNetIPv6ConfigMethod6to4
+
+/*!
+ @group kSCEntNet6to4 Entity Keys
+ */
+
+/*!
+ @const kSCPropNet6to4Relay
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNet6to4Relay ; // API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNet6to4Relay kSCPropNet6to4Relay
+
+/*!
+ @group kSCEntNetLink Entity Keys
+ */
+
+/*!
+ @const kSCPropNetLinkActive
+ @discussion Value is a CFBoolean
+ */
+extern const CFStringRef kSCPropNetLinkActive ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetLinkActive kSCPropNetLinkActive
+
+/*!
+ @const kSCPropNetLinkDetaching
+ @discussion Value is a CFBoolean
+ */
+extern const CFStringRef kSCPropNetLinkDetaching ; // API_AVAILABLE(macos(10.2)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetLinkDetaching kSCPropNetLinkDetaching
+
+/*!
+ @group kSCEntNetModem (Hardware) Entity Keys
+ */
+
+/*!
+ @const kSCPropNetModemAccessPointName
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetModemAccessPointName ; // API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetModemAccessPointName kSCPropNetModemAccessPointName
+
+/*!
+ @const kSCPropNetModemConnectionPersonality
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetModemConnectionPersonality ; // API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetModemConnectionPersonality kSCPropNetModemConnectionPersonality
+
+/*!
+ @const kSCPropNetModemConnectionScript
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetModemConnectionScript ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetModemConnectionScript kSCPropNetModemConnectionScript
+
+/*!
+ @const kSCPropNetModemConnectSpeed
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropNetModemConnectSpeed ; // API_AVAILABLE(macos(10.2)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetModemConnectSpeed kSCPropNetModemConnectSpeed
+
+/*!
+ @const kSCPropNetModemDataCompression
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetModemDataCompression ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetModemDataCompression kSCPropNetModemDataCompression
+
+/*!
+ @const kSCPropNetModemDeviceContextID
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetModemDeviceContextID ; // API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetModemDeviceContextID kSCPropNetModemDeviceContextID
+
+/*!
+ @const kSCPropNetModemDeviceModel
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetModemDeviceModel ; // API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetModemDeviceModel kSCPropNetModemDeviceModel
+
+/*!
+ @const kSCPropNetModemDeviceVendor
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetModemDeviceVendor ; // API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetModemDeviceVendor kSCPropNetModemDeviceVendor
+
+/*!
+ @const kSCPropNetModemDialMode
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetModemDialMode ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetModemDialMode kSCPropNetModemDialMode
+
+/*!
+ @const kSCPropNetModemErrorCorrection
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetModemErrorCorrection ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetModemErrorCorrection kSCPropNetModemErrorCorrection
+
+/*!
+ @const kSCPropNetModemHoldCallWaitingAudibleAlert
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetModemHoldCallWaitingAudibleAlert ; // API_AVAILABLE(macos(10.2)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetModemHoldCallWaitingAudibleAlert kSCPropNetModemHoldCallWaitingAudibleAlert
+
+/*!
+ @const kSCPropNetModemHoldDisconnectOnAnswer
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetModemHoldDisconnectOnAnswer ; // API_AVAILABLE(macos(10.2)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetModemHoldDisconnectOnAnswer kSCPropNetModemHoldDisconnectOnAnswer
+
+/*!
+ @const kSCPropNetModemHoldEnabled
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetModemHoldEnabled ; // API_AVAILABLE(macos(10.2)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetModemHoldEnabled kSCPropNetModemHoldEnabled
+
+/*!
+ @const kSCPropNetModemHoldReminder
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetModemHoldReminder ; // API_AVAILABLE(macos(10.2)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetModemHoldReminder kSCPropNetModemHoldReminder
+
+/*!
+ @const kSCPropNetModemHoldReminderTime
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropNetModemHoldReminderTime ; // API_AVAILABLE(macos(10.2)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetModemHoldReminderTime kSCPropNetModemHoldReminderTime
+
+/*!
+ @const kSCPropNetModemNote
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetModemNote ; // API_AVAILABLE(macos(10.2)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetModemNote kSCPropNetModemNote
+
+/*!
+ @const kSCPropNetModemPulseDial
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetModemPulseDial ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetModemPulseDial kSCPropNetModemPulseDial
+
+/*!
+ @const kSCPropNetModemSpeaker
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetModemSpeaker ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetModemSpeaker kSCPropNetModemSpeaker
+
+/*!
+ @const kSCPropNetModemSpeed
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropNetModemSpeed ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetModemSpeed kSCPropNetModemSpeed
+
+/*!
+ @const kSCValNetModemDialModeIgnoreDialTone
+ */
+extern const CFStringRef kSCValNetModemDialModeIgnoreDialTone ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetModemDialModeIgnoreDialTone kSCValNetModemDialModeIgnoreDialTone
+
+/*!
+ @const kSCValNetModemDialModeManual
+ */
+extern const CFStringRef kSCValNetModemDialModeManual ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetModemDialModeManual kSCValNetModemDialModeManual
+
+/*!
+ @const kSCValNetModemDialModeWaitForDialTone
+ */
+extern const CFStringRef kSCValNetModemDialModeWaitForDialTone ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetModemDialModeWaitForDialTone kSCValNetModemDialModeWaitForDialTone
+
+/*!
+ @group kSCEntNetPPP Entity Keys
+ */
+
+/*!
+ @const kSCPropNetPPPACSPEnabled
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetPPPACSPEnabled ; // API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPACSPEnabled kSCPropNetPPPACSPEnabled
+
+/*!
+ @const kSCPropNetPPPConnectTime
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropNetPPPConnectTime ; // API_AVAILABLE(macos(10.2)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPConnectTime kSCPropNetPPPConnectTime
+
+/*!
+ @const kSCPropNetPPPDeviceLastCause
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropNetPPPDeviceLastCause ; // API_AVAILABLE(macos(10.2)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPDeviceLastCause kSCPropNetPPPDeviceLastCause
+
+/*!
+ @const kSCPropNetPPPDialOnDemand
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetPPPDialOnDemand ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPDialOnDemand kSCPropNetPPPDialOnDemand
+
+/*!
+ @const kSCPropNetPPPDisconnectOnFastUserSwitch
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetPPPDisconnectOnFastUserSwitch ; // API_AVAILABLE(macos(10.4)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPDisconnectOnFastUserSwitch kSCPropNetPPPDisconnectOnFastUserSwitch
+
+/*!
+ @const kSCPropNetPPPDisconnectOnIdle
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetPPPDisconnectOnIdle ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPDisconnectOnIdle kSCPropNetPPPDisconnectOnIdle
+
+/*!
+ @const kSCPropNetPPPDisconnectOnIdleTimer
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropNetPPPDisconnectOnIdleTimer ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPDisconnectOnIdleTimer kSCPropNetPPPDisconnectOnIdleTimer
+
+/*!
+ @const kSCPropNetPPPDisconnectOnLogout
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetPPPDisconnectOnLogout ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPDisconnectOnLogout kSCPropNetPPPDisconnectOnLogout
+
+/*!
+ @const kSCPropNetPPPDisconnectOnSleep
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetPPPDisconnectOnSleep ; // API_AVAILABLE(macos(10.2)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPDisconnectOnSleep kSCPropNetPPPDisconnectOnSleep
+
+/*!
+ @const kSCPropNetPPPDisconnectTime
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropNetPPPDisconnectTime ; // API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPDisconnectTime kSCPropNetPPPDisconnectTime
+
+/*!
+ @const kSCPropNetPPPIdleReminder
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetPPPIdleReminder ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPIdleReminder kSCPropNetPPPIdleReminder
+
+/*!
+ @const kSCPropNetPPPIdleReminderTimer
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropNetPPPIdleReminderTimer ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPIdleReminderTimer kSCPropNetPPPIdleReminderTimer
+
+/*!
+ @const kSCPropNetPPPLastCause
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropNetPPPLastCause ; // API_AVAILABLE(macos(10.2)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPLastCause kSCPropNetPPPLastCause
+
+/*!
+ @const kSCPropNetPPPLogfile
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetPPPLogfile ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPLogfile kSCPropNetPPPLogfile
+
+/*!
+ @const kSCPropNetPPPPlugins
+ @discussion Value is a CFArray[CFString]
+ */
+extern const CFStringRef kSCPropNetPPPPlugins API_DEPRECATED("No longer supported", macos(10.2,10.15)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPPlugins kSCPropNetPPPPlugins
+
+/*!
+ @const kSCPropNetPPPRetryConnectTime
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropNetPPPRetryConnectTime ; // API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPRetryConnectTime kSCPropNetPPPRetryConnectTime
+
+/*!
+ @const kSCPropNetPPPSessionTimer
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropNetPPPSessionTimer ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPSessionTimer kSCPropNetPPPSessionTimer
+
+/*!
+ @const kSCPropNetPPPStatus
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropNetPPPStatus ; // API_AVAILABLE(macos(10.2)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPStatus kSCPropNetPPPStatus
+
+/*!
+ @const kSCPropNetPPPUseSessionTimer
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetPPPUseSessionTimer ; // API_AVAILABLE(macos(10.2)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPUseSessionTimer kSCPropNetPPPUseSessionTimer
+
+/*!
+ @const kSCPropNetPPPVerboseLogging
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetPPPVerboseLogging ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPVerboseLogging kSCPropNetPPPVerboseLogging
+
+/*!
+ @const kSCPropNetPPPAuthEAPPlugins
+ @discussion Value is a CFArray[CFString]
+ */
+extern const CFStringRef kSCPropNetPPPAuthEAPPlugins API_DEPRECATED("No longer supported", macos(10.3,10.15)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPAuthEAPPlugins kSCPropNetPPPAuthEAPPlugins
+
+/*!
+ @const kSCPropNetPPPAuthName
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetPPPAuthName ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPAuthName kSCPropNetPPPAuthName
+
+/*!
+ @const kSCPropNetPPPAuthPassword
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetPPPAuthPassword ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPAuthPassword kSCPropNetPPPAuthPassword
+
+/*!
+ @const kSCPropNetPPPAuthPasswordEncryption
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetPPPAuthPasswordEncryption ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPAuthPasswordEncryption kSCPropNetPPPAuthPasswordEncryption
+
+/*!
+ @const kSCPropNetPPPAuthPrompt
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetPPPAuthPrompt ; // API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPAuthPrompt kSCPropNetPPPAuthPrompt
+
+/*!
+ @const kSCPropNetPPPAuthProtocol
+ @discussion Value is a CFArray[CFString]
+ */
+extern const CFStringRef kSCPropNetPPPAuthProtocol ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPAuthProtocol kSCPropNetPPPAuthProtocol
+
+/*!
+ @const kSCValNetPPPAuthPasswordEncryptionKeychain
+ */
+extern const CFStringRef kSCValNetPPPAuthPasswordEncryptionKeychain ; // API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetPPPAuthPasswordEncryptionKeychain kSCValNetPPPAuthPasswordEncryptionKeychain
+
+/*!
+ @const kSCValNetPPPAuthPasswordEncryptionToken
+ */
+extern const CFStringRef kSCValNetPPPAuthPasswordEncryptionToken ; // API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetPPPAuthPasswordEncryptionToken kSCValNetPPPAuthPasswordEncryptionToken
+
+/*!
+ @const kSCValNetPPPAuthPromptBefore
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCValNetPPPAuthPromptBefore ; // API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetPPPAuthPromptBefore kSCValNetPPPAuthPromptBefore
+
+/*!
+ @const kSCValNetPPPAuthPromptAfter
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCValNetPPPAuthPromptAfter ; // API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetPPPAuthPromptAfter kSCValNetPPPAuthPromptAfter
+
+/*!
+ @const kSCValNetPPPAuthProtocolCHAP
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCValNetPPPAuthProtocolCHAP ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetPPPAuthProtocolCHAP kSCValNetPPPAuthProtocolCHAP
+
+/*!
+ @const kSCValNetPPPAuthProtocolEAP
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCValNetPPPAuthProtocolEAP ; // API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetPPPAuthProtocolEAP kSCValNetPPPAuthProtocolEAP
+
+/*!
+ @const kSCValNetPPPAuthProtocolMSCHAP1
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCValNetPPPAuthProtocolMSCHAP1 ; // API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetPPPAuthProtocolMSCHAP1 kSCValNetPPPAuthProtocolMSCHAP1
+
+/*!
+ @const kSCValNetPPPAuthProtocolMSCHAP2
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCValNetPPPAuthProtocolMSCHAP2 ; // API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetPPPAuthProtocolMSCHAP2 kSCValNetPPPAuthProtocolMSCHAP2
+
+/*!
+ @const kSCValNetPPPAuthProtocolPAP
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCValNetPPPAuthProtocolPAP ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetPPPAuthProtocolPAP kSCValNetPPPAuthProtocolPAP
+
+/*!
+ @const kSCPropNetPPPCommAlternateRemoteAddress
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetPPPCommAlternateRemoteAddress ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPCommAlternateRemoteAddress kSCPropNetPPPCommAlternateRemoteAddress
+
+/*!
+ @const kSCPropNetPPPCommConnectDelay
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropNetPPPCommConnectDelay ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPCommConnectDelay kSCPropNetPPPCommConnectDelay
+
+/*!
+ @const kSCPropNetPPPCommDisplayTerminalWindow
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetPPPCommDisplayTerminalWindow ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPCommDisplayTerminalWindow kSCPropNetPPPCommDisplayTerminalWindow
+
+/*!
+ @const kSCPropNetPPPCommRedialCount
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropNetPPPCommRedialCount ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPCommRedialCount kSCPropNetPPPCommRedialCount
+
+/*!
+ @const kSCPropNetPPPCommRedialEnabled
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetPPPCommRedialEnabled ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPCommRedialEnabled kSCPropNetPPPCommRedialEnabled
+
+/*!
+ @const kSCPropNetPPPCommRedialInterval
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropNetPPPCommRedialInterval ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPCommRedialInterval kSCPropNetPPPCommRedialInterval
+
+/*!
+ @const kSCPropNetPPPCommRemoteAddress
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetPPPCommRemoteAddress ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPCommRemoteAddress kSCPropNetPPPCommRemoteAddress
+
+/*!
+ @const kSCPropNetPPPCommTerminalScript
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetPPPCommTerminalScript ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPCommTerminalScript kSCPropNetPPPCommTerminalScript
+
+/*!
+ @const kSCPropNetPPPCommUseTerminalScript
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetPPPCommUseTerminalScript ; // API_AVAILABLE(macos(10.2)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPCommUseTerminalScript kSCPropNetPPPCommUseTerminalScript
+
+/*!
+ @const kSCPropNetPPPCCPEnabled
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetPPPCCPEnabled ; // API_AVAILABLE(macos(10.2)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPCCPEnabled kSCPropNetPPPCCPEnabled
+
+/*!
+ @const kSCPropNetPPPCCPMPPE40Enabled
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetPPPCCPMPPE40Enabled ; // API_AVAILABLE(macos(10.4)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPCCPMPPE40Enabled kSCPropNetPPPCCPMPPE40Enabled
+
+/*!
+ @const kSCPropNetPPPCCPMPPE128Enabled
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetPPPCCPMPPE128Enabled ; // API_AVAILABLE(macos(10.4)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPCCPMPPE128Enabled kSCPropNetPPPCCPMPPE128Enabled
+
+/*!
+ @const kSCPropNetPPPIPCPCompressionVJ
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetPPPIPCPCompressionVJ ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPIPCPCompressionVJ kSCPropNetPPPIPCPCompressionVJ
+
+/*!
+ @const kSCPropNetPPPIPCPUsePeerDNS
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetPPPIPCPUsePeerDNS ; // API_AVAILABLE(macos(10.4)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPIPCPUsePeerDNS kSCPropNetPPPIPCPUsePeerDNS
+
+/*!
+ @const kSCPropNetPPPLCPEchoEnabled
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetPPPLCPEchoEnabled ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPLCPEchoEnabled kSCPropNetPPPLCPEchoEnabled
+
+/*!
+ @const kSCPropNetPPPLCPEchoFailure
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropNetPPPLCPEchoFailure ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPLCPEchoFailure kSCPropNetPPPLCPEchoFailure
+
+/*!
+ @const kSCPropNetPPPLCPEchoInterval
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropNetPPPLCPEchoInterval ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPLCPEchoInterval kSCPropNetPPPLCPEchoInterval
+
+/*!
+ @const kSCPropNetPPPLCPCompressionACField
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetPPPLCPCompressionACField ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPLCPCompressionACField kSCPropNetPPPLCPCompressionACField
+
+/*!
+ @const kSCPropNetPPPLCPCompressionPField
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetPPPLCPCompressionPField ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPLCPCompressionPField kSCPropNetPPPLCPCompressionPField
+
+/*!
+ @const kSCPropNetPPPLCPMRU
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropNetPPPLCPMRU ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPLCPMRU kSCPropNetPPPLCPMRU
+
+/*!
+ @const kSCPropNetPPPLCPMTU
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropNetPPPLCPMTU ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPLCPMTU kSCPropNetPPPLCPMTU
+
+/*!
+ @const kSCPropNetPPPLCPReceiveACCM
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropNetPPPLCPReceiveACCM ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPLCPReceiveACCM kSCPropNetPPPLCPReceiveACCM
+
+/*!
+ @const kSCPropNetPPPLCPTransmitACCM
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropNetPPPLCPTransmitACCM ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetPPPLCPTransmitACCM kSCPropNetPPPLCPTransmitACCM
+
+/*!
+ @group kSCEntNetPPPoE Entity Keys
+ */
+
+/*!
+ @group kSCEntNetPPPSerial Entity Keys
+ */
+
+/*!
+ @group kSCEntNetL2TP Entity Keys
+ */
+
+/*!
+ @const kSCPropNetL2TPIPSecSharedSecret
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetL2TPIPSecSharedSecret ; // API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetL2TPIPSecSharedSecret kSCPropNetL2TPIPSecSharedSecret
+
+/*!
+ @const kSCPropNetL2TPIPSecSharedSecretEncryption
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetL2TPIPSecSharedSecretEncryption ; // API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetL2TPIPSecSharedSecretEncryption kSCPropNetL2TPIPSecSharedSecretEncryption
+
+/*!
+ @const kSCPropNetL2TPTransport
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetL2TPTransport ; // API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetL2TPTransport kSCPropNetL2TPTransport
+
+/*!
+ @const kSCValNetL2TPIPSecSharedSecretEncryptionKeychain
+ */
+extern const CFStringRef kSCValNetL2TPIPSecSharedSecretEncryptionKeychain ; // API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetL2TPIPSecSharedSecretEncryptionKeychain kSCValNetL2TPIPSecSharedSecretEncryptionKeychain
+
+/*!
+ @const kSCValNetL2TPTransportIP
+ */
+extern const CFStringRef kSCValNetL2TPTransportIP ; // API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetL2TPTransportIP kSCValNetL2TPTransportIP
+
+/*!
+ @const kSCValNetL2TPTransportIPSec
+ */
+extern const CFStringRef kSCValNetL2TPTransportIPSec ; // API_AVAILABLE(macos(10.3)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetL2TPTransportIPSec kSCValNetL2TPTransportIPSec
+
+/*!
+ @group kSCEntNetProxies Entity Keys
+ */
+
+/*!
+ @const kSCPropNetProxiesExceptionsList
+ @discussion Value is a CFArray[CFString]
+ */
+extern const CFStringRef kSCPropNetProxiesExceptionsList ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetProxiesExceptionsList kSCPropNetProxiesExceptionsList
+
+/*!
+ @const kSCPropNetProxiesExcludeSimpleHostnames
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetProxiesExcludeSimpleHostnames ; // API_AVAILABLE(macos(10.4)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetProxiesExcludeSimpleHostnames kSCPropNetProxiesExcludeSimpleHostnames
+
+/*!
+ @const kSCPropNetProxiesFTPEnable
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetProxiesFTPEnable ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetProxiesFTPEnable kSCPropNetProxiesFTPEnable
+
+/*!
+ @const kSCPropNetProxiesFTPPassive
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetProxiesFTPPassive ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetProxiesFTPPassive kSCPropNetProxiesFTPPassive
+
+/*!
+ @const kSCPropNetProxiesFTPPort
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropNetProxiesFTPPort ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetProxiesFTPPort kSCPropNetProxiesFTPPort
+
+/*!
+ @const kSCPropNetProxiesFTPProxy
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetProxiesFTPProxy ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetProxiesFTPProxy kSCPropNetProxiesFTPProxy
+
+/*!
+ @const kSCPropNetProxiesGopherEnable
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetProxiesGopherEnable ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetProxiesGopherEnable kSCPropNetProxiesGopherEnable
+
+/*!
+ @const kSCPropNetProxiesGopherPort
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropNetProxiesGopherPort ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetProxiesGopherPort kSCPropNetProxiesGopherPort
+
+/*!
+ @const kSCPropNetProxiesGopherProxy
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetProxiesGopherProxy ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetProxiesGopherProxy kSCPropNetProxiesGopherProxy
+
+/*!
+ @const kSCPropNetProxiesHTTPEnable
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetProxiesHTTPEnable ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetProxiesHTTPEnable kSCPropNetProxiesHTTPEnable
+
+/*!
+ @const kSCPropNetProxiesHTTPPort
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropNetProxiesHTTPPort ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetProxiesHTTPPort kSCPropNetProxiesHTTPPort
+
+/*!
+ @const kSCPropNetProxiesHTTPProxy
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetProxiesHTTPProxy ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetProxiesHTTPProxy kSCPropNetProxiesHTTPProxy
+
+/*!
+ @const kSCPropNetProxiesHTTPSEnable
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetProxiesHTTPSEnable ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetProxiesHTTPSEnable kSCPropNetProxiesHTTPSEnable
+
+/*!
+ @const kSCPropNetProxiesHTTPSPort
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropNetProxiesHTTPSPort ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetProxiesHTTPSPort kSCPropNetProxiesHTTPSPort
+
+/*!
+ @const kSCPropNetProxiesHTTPSProxy
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetProxiesHTTPSProxy ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetProxiesHTTPSProxy kSCPropNetProxiesHTTPSProxy
+
+/*!
+ @const kSCPropNetProxiesRTSPEnable
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetProxiesRTSPEnable ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetProxiesRTSPEnable kSCPropNetProxiesRTSPEnable
+
+/*!
+ @const kSCPropNetProxiesRTSPPort
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropNetProxiesRTSPPort ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetProxiesRTSPPort kSCPropNetProxiesRTSPPort
+
+/*!
+ @const kSCPropNetProxiesRTSPProxy
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetProxiesRTSPProxy ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetProxiesRTSPProxy kSCPropNetProxiesRTSPProxy
+
+/*!
+ @const kSCPropNetProxiesSOCKSEnable
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetProxiesSOCKSEnable ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetProxiesSOCKSEnable kSCPropNetProxiesSOCKSEnable
+
+/*!
+ @const kSCPropNetProxiesSOCKSPort
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropNetProxiesSOCKSPort ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetProxiesSOCKSPort kSCPropNetProxiesSOCKSPort
+
+/*!
+ @const kSCPropNetProxiesSOCKSProxy
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetProxiesSOCKSProxy ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetProxiesSOCKSProxy kSCPropNetProxiesSOCKSProxy
+
+/*!
+ @const kSCPropNetProxiesProxyAutoConfigEnable
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetProxiesProxyAutoConfigEnable ; // API_AVAILABLE(macos(10.4)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetProxiesProxyAutoConfigEnable kSCPropNetProxiesProxyAutoConfigEnable
+
+/*!
+ @const kSCPropNetProxiesProxyAutoConfigJavaScript
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetProxiesProxyAutoConfigJavaScript ; // API_AVAILABLE(macos(10.7)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetProxiesProxyAutoConfigJavaScript kSCPropNetProxiesProxyAutoConfigJavaScript
+
+/*!
+ @const kSCPropNetProxiesProxyAutoConfigURLString
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetProxiesProxyAutoConfigURLString ; // API_AVAILABLE(macos(10.4)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetProxiesProxyAutoConfigURLString kSCPropNetProxiesProxyAutoConfigURLString
+
+/*!
+ @const kSCPropNetProxiesProxyAutoDiscoveryEnable
+ @discussion Value is a CFNumber (0 or 1)
+ */
+extern const CFStringRef kSCPropNetProxiesProxyAutoDiscoveryEnable ; // API_AVAILABLE(macos(10.4)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetProxiesProxyAutoDiscoveryEnable kSCPropNetProxiesProxyAutoDiscoveryEnable
+
+/*!
+ @group kSCEntNetSMB Entity Keys
+ */
+
+/*!
+ @const kSCPropNetSMBNetBIOSName
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetSMBNetBIOSName ; // API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetSMBNetBIOSName kSCPropNetSMBNetBIOSName
+
+/*!
+ @const kSCPropNetSMBNetBIOSNodeType
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetSMBNetBIOSNodeType ; // API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetSMBNetBIOSNodeType kSCPropNetSMBNetBIOSNodeType
+
+/*!
+ @const kSCPropNetSMBNetBIOSScope
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetSMBNetBIOSScope API_DEPRECATED("No longer supported", macos(10.5,10.7)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetSMBNetBIOSScope kSCPropNetSMBNetBIOSScope
+
+/*!
+ @const kSCPropNetSMBWINSAddresses
+ @discussion Value is a CFArray[CFString]
+ */
+extern const CFStringRef kSCPropNetSMBWINSAddresses ; // API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetSMBWINSAddresses kSCPropNetSMBWINSAddresses
+
+/*!
+ @const kSCPropNetSMBWorkgroup
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropNetSMBWorkgroup ; // API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropNetSMBWorkgroup kSCPropNetSMBWorkgroup
+
+/*!
+ @const kSCValNetSMBNetBIOSNodeTypeBroadcast
+ */
+extern const CFStringRef kSCValNetSMBNetBIOSNodeTypeBroadcast ; // API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetSMBNetBIOSNodeTypeBroadcast kSCValNetSMBNetBIOSNodeTypeBroadcast
+
+/*!
+ @const kSCValNetSMBNetBIOSNodeTypePeer
+ */
+extern const CFStringRef kSCValNetSMBNetBIOSNodeTypePeer ; // API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetSMBNetBIOSNodeTypePeer kSCValNetSMBNetBIOSNodeTypePeer
+
+/*!
+ @const kSCValNetSMBNetBIOSNodeTypeMixed
+ */
+extern const CFStringRef kSCValNetSMBNetBIOSNodeTypeMixed ; // API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetSMBNetBIOSNodeTypeMixed kSCValNetSMBNetBIOSNodeTypeMixed
+
+/*!
+ @const kSCValNetSMBNetBIOSNodeTypeHybrid
+ */
+extern const CFStringRef kSCValNetSMBNetBIOSNodeTypeHybrid ; // API_AVAILABLE(macos(10.5)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCValNetSMBNetBIOSNodeTypeHybrid kSCValNetSMBNetBIOSNodeTypeHybrid
+
+/*!
+ @group kSCCompUsers Entity Keys
+ */
+
+/*!
+ @const kSCEntUsersConsoleUser
+ */
+extern const CFStringRef kSCEntUsersConsoleUser ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCEntUsersConsoleUser kSCEntUsersConsoleUser
+
+/*!
+ @group kSCCompSystem Properties
+ */
+
+/*!
+ @const kSCPropSystemComputerName
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropSystemComputerName ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropSystemComputerName kSCPropSystemComputerName
+
+/*!
+ @const kSCPropSystemComputerNameEncoding
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropSystemComputerNameEncoding ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropSystemComputerNameEncoding kSCPropSystemComputerNameEncoding
+
+/*!
+ @group SCDynamicStore "domain" prefixes
+ */
+
+/*!
+ @const kSCDynamicStoreDomainFile
+ */
+extern const CFStringRef kSCDynamicStoreDomainFile ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCDynamicStoreDomainFile kSCDynamicStoreDomainFile
+
+/*!
+ @const kSCDynamicStoreDomainPlugin
+ */
+extern const CFStringRef kSCDynamicStoreDomainPlugin ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCDynamicStoreDomainPlugin kSCDynamicStoreDomainPlugin
+
+/*!
+ @const kSCDynamicStoreDomainSetup
+ */
+extern const CFStringRef kSCDynamicStoreDomainSetup ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCDynamicStoreDomainSetup kSCDynamicStoreDomainSetup
+
+/*!
+ @const kSCDynamicStoreDomainState
+ */
+extern const CFStringRef kSCDynamicStoreDomainState ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCDynamicStoreDomainState kSCDynamicStoreDomainState
+
+/*!
+ @const kSCDynamicStoreDomainPrefs
+ */
+extern const CFStringRef kSCDynamicStoreDomainPrefs ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCDynamicStoreDomainPrefs kSCDynamicStoreDomainPrefs
+
+/*!
+ @group Preference ("location") Keys
+ */
+
+/*!
+ @const kSCDynamicStorePropSetupCurrentSet
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCDynamicStorePropSetupCurrentSet ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCDynamicStorePropSetupCurrentSet kSCDynamicStorePropSetupCurrentSet
+
+/*!
+ @const kSCDynamicStorePropSetupLastUpdated
+ */
+extern const CFStringRef kSCDynamicStorePropSetupLastUpdated ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCDynamicStorePropSetupLastUpdated kSCDynamicStorePropSetupLastUpdated
+
+/*!
+ @group Common/shared Keys
+ */
+
+/*!
+ @const kSCDynamicStorePropNetInterfaces
+ @discussion Value is a CFArray[CFString]
+ */
+extern const CFStringRef kSCDynamicStorePropNetInterfaces ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCDynamicStorePropNetInterfaces kSCDynamicStorePropNetInterfaces
+
+/*!
+ @const kSCDynamicStorePropNetPrimaryInterface
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCDynamicStorePropNetPrimaryInterface ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCDynamicStorePropNetPrimaryInterface kSCDynamicStorePropNetPrimaryInterface
+
+/*!
+ @const kSCDynamicStorePropNetPrimaryService
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCDynamicStorePropNetPrimaryService ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCDynamicStorePropNetPrimaryService kSCDynamicStorePropNetPrimaryService
+
+/*!
+ @const kSCDynamicStorePropNetServiceIDs
+ @discussion Value is a CFArray[CFString]
+ */
+extern const CFStringRef kSCDynamicStorePropNetServiceIDs ; // API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCDynamicStorePropNetServiceIDs kSCDynamicStorePropNetServiceIDs
+
+/*!
+ @const kSCPropUsersConsoleUserName
+ @discussion Value is a CFString
+ */
+extern const CFStringRef kSCPropUsersConsoleUserName API_DEPRECATED("No longer supported", macos(10.1,10.4)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropUsersConsoleUserName kSCPropUsersConsoleUserName
+
+/*!
+ @const kSCPropUsersConsoleUserUID
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropUsersConsoleUserUID API_DEPRECATED("No longer supported", macos(10.1,10.4)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropUsersConsoleUserUID kSCPropUsersConsoleUserUID
+
+/*!
+ @const kSCPropUsersConsoleUserGID
+ @discussion Value is a CFNumber
+ */
+extern const CFStringRef kSCPropUsersConsoleUserGID API_DEPRECATED("No longer supported", macos(10.1,10.4)) API_UNAVAILABLE(ios, tvos, watchos);
+#define kSCPropUsersConsoleUserGID kSCPropUsersConsoleUserGID
+
+CF_ASSUME_NONNULL_END
+
+#endif /* _SCSCHEMADEFINITIONS_H */
diff --git a/src/java.base/macosx/native/libjava/java_props_macosx.c b/src/java.base/macosx/native/libjava/java_props_macosx.c
index 1935c202f..390843cc6 100644
--- a/src/java.base/macosx/native/libjava/java_props_macosx.c
+++ b/src/java.base/macosx/native/libjava/java_props_macosx.c
@@ -29,7 +29,13 @@
#include <objc/objc-runtime.h>
#include <CoreFoundation/CoreFoundation.h>
+#ifndef TARGET_OS_IOS
#include <SystemConfiguration/SystemConfiguration.h>
+#else
+#include "OSXSCSchemaDefinitions.h"
+#include <SystemConfiguration/SCDynamicStore.h>
+CFDictionaryRef SCDynamicStoreCopyProxies(SCDynamicStoreRef store);
+#endif
#include <Foundation/Foundation.h>
#include "java_props_macosx.h"
diff --git a/src/java.base/macosx/native/libnet/DefaultProxySelector.c b/src/java.base/macosx/native/libnet/DefaultProxySelector.c
index aa91f3012..1310cf2e4 100644
--- a/src/java.base/macosx/native/libnet/DefaultProxySelector.c
+++ b/src/java.base/macosx/native/libnet/DefaultProxySelector.c
@@ -27,6 +27,9 @@
#include <string.h>
#include <CoreFoundation/CoreFoundation.h>
#include <CoreServices/CoreServices.h>
+#ifdef TARGET_OS_IOS
+#include <CFNetwork/CFNetwork.h>
+#endif
#include "jni.h"
#include "jni_util.h"
diff --git a/src/java.desktop/macosx/native/libjawt/jawt.m b/src/java.desktop/macosx/native/libjawt/jawt.m
index f5dc048a4..1232d94a9 100644
--- a/src/java.desktop/macosx/native/libjawt/jawt.m
+++ b/src/java.desktop/macosx/native/libjawt/jawt.m
@@ -42,6 +42,9 @@ DEF_STATIC_JNI_OnLoad
_JNI_IMPORT_OR_EXPORT_ jboolean JNICALL JAWT_GetAWT
(JNIEnv* env, JAWT* awt)
{
+#if defined(HEADLESS)
+ return JNI_FALSE;
+#else
if (awt == NULL) {
return JNI_FALSE;
}
@@ -67,4 +70,5 @@ _JNI_IMPORT_OR_EXPORT_ jboolean JNICALL JAWT_GetAWT
}
return JNI_TRUE;
+#endif
}
diff --git a/src/java.desktop/macosx/native/libjsound/PLATFORM_API_MacOSX_PCM.cpp b/src/java.desktop/macosx/native/libjsound/PLATFORM_API_MacOSX_PCM.cpp
index 608ee13d7..53fee94c7 100644
--- a/src/java.desktop/macosx/native/libjsound/PLATFORM_API_MacOSX_PCM.cpp
+++ b/src/java.desktop/macosx/native/libjsound/PLATFORM_API_MacOSX_PCM.cpp
@@ -44,6 +44,9 @@
extern "C" {
#include "Utilities.h"
#include "DirectAudio.h"
+#if TARGET_OS_IPHONE
+void DAUDIO_RequestRecordPermission();
+#endif
}
#if USE_DAUDIO == TRUE
@@ -71,6 +74,9 @@ static inline void PrintStreamDesc(const AudioStreamBasicDescription *inDesc) {
static DeviceList deviceCache;
INT32 DAUDIO_GetDirectAudioDeviceCount() {
+#ifdef TARGET_OS_IPHONE
+ DAUDIO_RequestRecordPermission();
+#endif
deviceCache.Refresh();
int count = deviceCache.GetCount();
if (count > 0) {
@@ -635,7 +641,11 @@ static AudioUnit CreateOutputUnit(AudioDeviceID deviceID, int isSource)
AudioComponentDescription desc;
desc.componentType = kAudioUnitType_Output;
+#if !TARGET_OS_IPHONE
desc.componentSubType = (deviceID == 0 && isSource) ? kAudioUnitSubType_DefaultOutput : kAudioUnitSubType_HALOutput;
+#else
+ desc.componentSubType = kAudioUnitSubType_RemoteIO;
+#endif
desc.componentManufacturer = kAudioUnitManufacturer_Apple;
desc.componentFlags = 0;
desc.componentFlagsMask = 0;
diff --git a/src/java.desktop/macosx/native/libjsound/PLATFORM_API_iPhoneOS_Permission.m b/src/java.desktop/macosx/native/libjsound/PLATFORM_API_iPhoneOS_Permission.m
new file mode 100644
index 000000000..4375ef716
--- /dev/null
+++ b/src/java.desktop/macosx/native/libjsound/PLATFORM_API_iPhoneOS_Permission.m
@@ -0,0 +1,15 @@
+#import <AVFAudio/AVFAudio.h>
+
+#if TARGET_OS_IPHONE
+void DAUDIO_RequestRecordPermission() {
+ AVAudioSession *session = AVAudioSession.sharedInstance;
+ if ([session respondsToSelector:@selector(requestRecordPermission:)]) {
+ dispatch_group_t group = dispatch_group_create();
+ dispatch_group_enter(group);
+ [session requestRecordPermission:^(BOOL granted) {
+ dispatch_group_leave(group);
+ }];
+ dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
+ }
+}
+#endif
diff --git a/src/java.desktop/unix/native/common/awt/fontpath.c b/src/java.desktop/unix/native/common/awt/fontpath.c
index df35e78e6..bd4a1ab1b 100644
--- a/src/java.desktop/unix/native/common/awt/fontpath.c
+++ b/src/java.desktop/unix/native/common/awt/fontpath.c
@@ -319,8 +319,9 @@ static char *getPlatformFontPathChars(JNIEnv *env, jboolean noType1, jboolean is
char **fcdirs = NULL, **x11dirs = NULL, **knowndirs = NULL, *path = NULL;
+ // mod: NULL -> FALLBACK
/* As of 1.5 we try to use fontconfig on both Solaris and Linux.
- * If its not available NULL is returned.
+ * If its not available FALLBACK is returned.
*/
fcdirs = getFontConfigLocations();
@@ -533,6 +534,18 @@ typedef FcStrList* (*FcConfigGetCacheDirsFuncType)(FcConfig *config);
typedef FcChar8* (*FcStrListNextFuncType)(FcStrList *list);
typedef FcChar8* (*FcStrListDoneFuncType)(FcStrList *list);
+// mod: fallback directories
+static char **getFallbackFontLocations() {
+
+ char **fontdirs = (char**)calloc(3, sizeof(char*));
+ fontdirs[0] = (char *)calloc(1, 4096);
+ fontdirs[1] = (char *)calloc(1, 40);
+ sprintf(fontdirs[0], "%s/lib/fonts", getenv("JAVA_HOME"));
+ sprintf(fontdirs[1], "%s", "/System/Library/Fonts/UnicodeSupport");
+ return fontdirs;
+
+}
+
static char **getFontConfigLocations() {
char **fontdirs;
@@ -559,7 +572,8 @@ static char **getFontConfigLocations() {
void* libfontconfig = openFontConfig();
if (libfontconfig == NULL) {
- return NULL;
+ return getFallbackFontLocations();
+ // original: NULL
}
FcPatternBuild =
diff --git a/src/java.desktop/unix/native/common/java2d/opengl/sun_java2d_opengl_GLXGraphicsConfig.h b/src/java.desktop/unix/native/common/java2d/opengl/sun_java2d_opengl_GLXGraphicsConfig.h
new file mode 100644
index 000000000..508fdfc1f
--- /dev/null
+++ b/src/java.desktop/unix/native/common/java2d/opengl/sun_java2d_opengl_GLXGraphicsConfig.h
@@ -0,0 +1,37 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class sun_java2d_opengl_GLXGraphicsConfig */
+
+#ifndef _Included_sun_java2d_opengl_GLXGraphicsConfig
+#define _Included_sun_java2d_opengl_GLXGraphicsConfig
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class: sun_java2d_opengl_GLXGraphicsConfig
+ * Method: getGLXConfigInfo
+ * Signature: (II)J
+ */
+JNIEXPORT jlong JNICALL Java_sun_java2d_opengl_GLXGraphicsConfig_getGLXConfigInfo
+ (JNIEnv *, jclass, jint, jint);
+
+/*
+ * Class: sun_java2d_opengl_GLXGraphicsConfig
+ * Method: getOGLCapabilities
+ * Signature: (J)I
+ */
+JNIEXPORT jint JNICALL Java_sun_java2d_opengl_GLXGraphicsConfig_getOGLCapabilities
+ (JNIEnv *, jclass, jlong);
+
+/*
+ * Class: sun_java2d_opengl_GLXGraphicsConfig
+ * Method: initConfig
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_sun_java2d_opengl_GLXGraphicsConfig_initConfig
+ (JNIEnv *, jobject, jlong, jlong);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/src/java.desktop/unix/native/libawt/awt/awt_LoadLibrary.c b/src/java.desktop/unix/native/libawt/awt/awt_LoadLibrary.c
index fbd6ce9d1..20c336074 100644
--- a/src/java.desktop/unix/native/libawt/awt/awt_LoadLibrary.c
+++ b/src/java.desktop/unix/native/libawt/awt/awt_LoadLibrary.c
@@ -39,6 +39,10 @@
#include "porting_aix.h" /* For the 'dladdr' function. */
#endif
+#ifdef __APPLE__
+#include <TargetConditionals.h>
+#endif
+
#ifdef DEBUG
#define VERBOSE_AWT_DEBUG
#endif
@@ -89,6 +93,12 @@ JNIEXPORT jboolean JNICALL AWTIsHeadless() {
* Pathnames to the various awt toolkits
*/
+#ifdef TARGET_OS_IPHONE
+ #undef MACOSX
+ #define XAWT_PATH "/libawt_xawt.dylib"
+ #define DEFAULT_PATH XAWT_PATH
+ #define HEADLESS_PATH "/libawt_headless.dylib"
+#else
#ifdef MACOSX
#define LWAWT_PATH "/libawt_lwawt.dylib"
#define DEFAULT_PATH LWAWT_PATH
@@ -97,6 +107,7 @@ JNIEXPORT jboolean JNICALL AWTIsHeadless() {
#define DEFAULT_PATH XAWT_PATH
#define HEADLESS_PATH "/libawt_headless.so"
#endif
+#endif
jint
AWT_OnLoad(JavaVM *vm, void *reserved)