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/screencast \ @@ -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/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 #include +#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 +#endif #include #include 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_memprotect(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 @@ -25,6 +25,7 @@ #include "precompiled.hpp" #include "jvm.h" +#include "code/codeCache.hpp" #include "logging/log.hpp" #include "runtime/atomic.hpp" #include "runtime/globals.hpp" @@ -41,6 +42,7 @@ #include "utilities/vmError.hpp" #include +#include static const char* get_signal_name(int sig, char* out, size_t outlen); @@ -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 + // 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 @@ -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 . + */ + +/* + * 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 +#include +#include + +/*! + * @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 #include +#ifndef TARGET_OS_IOS #include +#else +#include "OSXSCSchemaDefinitions.h" +#include +CFDictionaryRef SCDynamicStoreCopyProxies(SCDynamicStoreRef store); +#endif #include #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 #include #include +#ifdef TARGET_OS_IOS +#include +#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 + +#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 +/* 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 +#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)