this repo has no description
at fixPythonPipStalling 110 lines 3.3 kB view raw
1/* 2 * Copyright (c) 2009, 2010, 2012, 2013, 2015, 2018, 2019 Apple Inc. All rights reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. Please obtain a copy of the License at 10 * http://www.opensource.apple.com/apsl/ and read it before using this 11 * file. 12 * 13 * The Original Code and all software distributed under the License are 14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 18 * Please see the License for the specific language governing rights and 19 * limitations under the License. 20 * 21 * @APPLE_LICENSE_HEADER_END@ 22 */ 23 24 25#include <sys/types.h> 26#include <sys/param.h> 27#include <sys/stat.h> 28#include <dlfcn.h> 29#include <SystemConfiguration/CaptiveNetwork.h> 30#include <SystemConfiguration/SCPrivate.h> 31 32#pragma mark - 33#pragma mark CaptiveNetwork.framework APIs (exported through the SystemConfiguration.framework) 34 35const CFStringRef kCNNetworkInfoKeySSIDData = CFSTR("SSIDDATA"); 36const CFStringRef kCNNetworkInfoKeySSID = CFSTR("SSID"); 37const CFStringRef kCNNetworkInfoKeyBSSID = CFSTR("BSSID"); 38 39static void * 40__loadCaptiveNetwork(void) { 41 static void *image = NULL; 42 static dispatch_once_t once; 43 44 dispatch_once(&once, ^{ 45 image = _SC_dlopen("/System/Library/PrivateFrameworks/CaptiveNetwork.framework/CaptiveNetwork"); 46 }); 47 48 return image; 49} 50 51Boolean 52CNSetSupportedSSIDs(CFArrayRef ssidArray) 53{ 54 static typeof (CNSetSupportedSSIDs) *dyfunc = NULL; 55 if (!dyfunc) { 56 void *image = __loadCaptiveNetwork(); 57 if (image) dyfunc = dlsym(image, "__CNSetSupportedSSIDs"); 58 } 59 return dyfunc ? dyfunc(ssidArray) : FALSE; 60} 61 62Boolean 63CNMarkPortalOnline(CFStringRef interfaceName) 64{ 65 static typeof (CNMarkPortalOnline) *dyfunc = NULL; 66 if (!dyfunc) { 67 void *image = __loadCaptiveNetwork(); 68 if (image) dyfunc = dlsym(image, "__CNMarkPortalOnline"); 69 } 70 return dyfunc ? dyfunc(interfaceName) : FALSE; 71} 72 73Boolean 74CNMarkPortalOffline(CFStringRef interfaceName) 75{ 76 static typeof (CNMarkPortalOffline) *dyfunc = NULL; 77 if (!dyfunc) { 78 void *image = __loadCaptiveNetwork(); 79 if (image) dyfunc = dlsym(image, "__CNMarkPortalOffline"); 80 } 81 return dyfunc ? dyfunc(interfaceName) : FALSE; 82} 83 84CFArrayRef 85CNCopySupportedInterfaces(void) 86{ 87 static typeof (CNCopySupportedInterfaces) *dyfunc = NULL; 88 if (!dyfunc) { 89 void *image = __loadCaptiveNetwork(); 90 if (image) dyfunc = dlsym(image, "__CNCopySupportedInterfaces"); 91 } 92 return dyfunc ? dyfunc() : NULL; 93} 94 95CFDictionaryRef 96CNCopyCurrentNetworkInfo(CFStringRef interfaceName) 97{ 98#if TARGET_OS_IPHONE && !TARGET_OS_IOSMAC 99 static typeof (CNCopyCurrentNetworkInfo) *dyfunc = NULL; 100 if (!dyfunc) { 101 void *image = __loadCaptiveNetwork(); 102 if (image) dyfunc = dlsym(image, "__CNCopyCurrentNetworkInfo"); 103 } 104 return dyfunc ? dyfunc(interfaceName) : NULL; 105#else // TARGET_OS_IPHONE && !TARGET_OS_IOSMAC 106#pragma unused(interfaceName) 107 return NULL; 108#endif // TARGET_OS_IPHONE && !TARGET_OS_IOSMAC 109} 110