![]() |
AnyConnect Secure Mobility Client 4.9.04043
|
00001 /************************************************************************** 00002 * Copyright (c) 2000, Cisco Systems, All Rights Reserved 00003 *************************************************************************** 00004 * 00005 * File: GenDefs.h 00006 * Date: 8/23/00 00007 * 00008 *************************************************************************** 00009 * NOTE* This file is for PORTABILITY related defines ONLY. 00010 *************************************************************************** 00011 * defines base types to be used by all CVC client components 00012 ***************************************************************************/ 00013 #ifndef __GENDEFS_H 00014 #define __GENDEFS_H 00015 00016 #ifndef _WIN32 00017 00018 #ifndef USES_CONVERSION 00019 #define USES_CONVERSION 00020 #endif 00021 00022 #define PRELIM_UNIX_PORT 00023 00024 #ifdef HAVE_CONFIG_H 00025 #include "config.h" 00026 #endif 00027 00028 #ifdef HAVE_STDINT_H 00029 #ifndef CNI_LINUX_INTERFACE 00030 #include <stdint.h> 00031 #endif 00032 #elif HAVE_INTTYPES_H 00033 #include <inttypes.h> 00034 #endif 00035 00036 #ifdef HAVE_SYS_TYPES_H 00037 #ifndef CNI_LINUX_INTERFACE 00038 #include <sys/types.h> 00039 #else 00040 #include <linux/types.h> 00041 #undef _UINTPTR_T_DEFINED 00042 #undef _INTPTR_T_DEFINED 00043 #endif 00044 #endif 00045 00046 #undef FAR 00047 #define FAR 00048 #undef PASCAL 00049 #define PASCAL 00050 00051 #else //_WIN32 00052 #define HAVE_STDINT_H 00053 #include <stdint.h> 00054 #undef HAVE_CONFIG_H 00055 #undef HAVE_SYS_TYPES_H 00056 #define WORDS_BIGENDIAN 0 00057 #if !defined(DWORD) 00058 typedef unsigned long DWORD; 00059 #endif // !defined(DWORD) 00060 00061 #endif //_WIN32 00062 00063 00064 #undef TRUE 00065 #define TRUE 1 00066 00067 #undef FALSE 00068 #define FALSE 0 00069 00070 #ifdef DDKBUILD //building with the DDK as the source. 00071 #include <crtdefs.h> 00072 #endif 00073 00074 #if !defined(PLATFORM_WIN_APP) 00075 // it'd be nice if we could switch to the C99 standard types at some point... 00076 #if defined(HAVE_STDINT_H) || defined(HAVE_INTTYPES_H) 00077 typedef uint8_t bool8; 00078 typedef uint16_t bool16; 00079 typedef uint32_t bool32; 00080 00081 typedef int8_t int8; 00082 typedef int16_t int16; 00083 00084 #if (!defined(CNI_LINUX_INTERFACE) || !defined(CONFIG_ISDN_PPP) || !defined(CONFIG_ISDN_PPP_VJ) || !defined(_SLHC_H)) && !defined(PROTYPES_H) 00085 typedef int32_t int32; 00086 #endif 00087 00088 typedef uint8_t uint8; 00089 typedef uint16_t uint16; 00090 00091 #if !defined(CSSMAPI) && !defined(PROTYPES_H) 00092 #ifdef _WIN32 00093 typedef unsigned long uint32; 00094 #else 00095 typedef uint32_t uint32; 00096 #endif 00097 #endif 00098 00099 typedef uint64_t uint64; 00100 #else 00101 00102 typedef unsigned char uint8; 00103 typedef unsigned short uint16; 00104 #ifndef CSSMAPI 00105 typedef unsigned long uint32; 00106 #endif 00107 typedef unsigned char uint8_t; 00108 typedef unsigned short uint16_t; 00109 #if defined(_WIN32) && !defined (HS_TYPES_H_) 00110 typedef unsigned long uint32_t; 00111 #endif 00112 00113 #ifdef _WIN32 00114 typedef __int64 int64; 00115 typedef unsigned __int64 uint64; 00116 typedef __int64 int64_t; 00117 typedef unsigned __int64 uint64_t; 00118 #else 00119 typedef long long int64; 00120 typedef unsigned long long int uint64; 00121 typedef long long int64_t; 00122 typedef unsigned long long int uint64_t; 00123 #endif 00124 #endif 00125 00126 // Definitions for Windows not available in <stdint.h> 00127 #ifdef _WIN32 00128 typedef unsigned long bool32_t; 00129 typedef unsigned char bool8_t; 00130 #endif 00131 00132 // integer types for doing pointer arithmetic, they should be the 00133 // same size as a pointer. Part of the C99 standard, but they aren't 00134 // available everywhere yet. 00135 // These defs should work with IA32 (x86), ILP32 (sparcv8) and LP64 (sparcv9). 00136 // These types are protected with the WIN32 macros (_INTPTR_T_DEFINED), since 00137 // some, but not all of the WIN32 SDK's define these types. 00138 #ifdef _WIN32 00139 #ifndef _INTPTR_T_DEFINED 00140 #if defined(_LP64) 00141 #warning 64 bit 00142 typedef int64 intptr_t; 00143 #else 00144 typedef int32 intptr_t; 00145 #endif 00146 #define _INTPTR_T_DEFINED 00147 #endif 00148 00149 #ifndef _UINTPTR_T_DEFINED 00150 #if defined(_LP64) 00151 #warning 64 bit 00152 typedef uint64 uintptr_t; 00153 #else 00154 typedef uint32 uintptr_t; 00155 #endif 00156 #define _UINTPTR_T_DEFINED 00157 #endif 00158 #endif 00159 00160 #ifndef __OBJC__ /* Mac OS X defines this in ObjectiveC land... */ 00161 typedef int BOOL; 00162 #endif 00163 00164 #ifndef _WIN32 00165 typedef int BOOLEAN; 00166 #endif 00167 00168 #ifdef _WIN32 00169 typedef int mode_t; 00170 #endif 00171 00172 typedef unsigned char uchar; 00173 #ifndef HAVE_SYS_TYPES_H 00174 typedef unsigned int uint; 00175 typedef unsigned short ushort; 00176 typedef unsigned long ulong; 00177 #endif 00178 00179 #ifndef PLATFORM_ANDROID 00180 typedef ulong ULONG; 00181 typedef ulong* PULONG; 00182 #endif 00183 00184 #if defined(PLATFORM_ANDROID) 00185 typedef unsigned long ulong; 00186 typedef unsigned short ushort; 00187 #endif 00188 00189 typedef uint32 DWORD; 00190 typedef uint32* PDWORD; 00191 typedef long LONG; 00192 typedef long* PLONG; 00193 typedef int INT; 00194 typedef int* PINT; 00195 typedef uint UINT; 00196 typedef uint* PUINT; 00197 typedef uint16 USHORT; 00198 typedef uint16* PUSHORT; 00199 typedef int16 SHORT; 00200 typedef int16* PSHORT; 00201 typedef uint16 WORD; 00202 typedef uint16* PWORD; 00203 typedef char CHAR; 00204 typedef uchar UCHAR; 00205 typedef char* PCHAR; 00206 typedef uint8 BYTE; 00207 typedef uint8* PBYTE; 00208 #define VOID void 00209 typedef void* PVOID; 00210 #ifdef _WIN32 00211 typedef void* HANDLE; 00212 #else 00213 typedef int HANDLE; 00214 typedef int SOCKET; 00215 typedef const char* LPCTSTR; 00216 typedef const char* LPCSTR; 00217 typedef const char* PCTSTR; 00218 typedef char* LPTSTR; 00219 typedef void* LPVOID; 00220 typedef char* LPSTR; 00221 typedef long* LPLONG; 00222 typedef DWORD* LPDWORD; 00223 typedef signed int INT32; 00224 00225 00226 typedef struct __WSABUF 00227 { 00228 unsigned long len; 00229 char *buf; 00230 } WSABUF, *LPWSABUF; 00231 00232 typedef struct OVERLAPPED 00233 { 00234 void *data; 00235 int fd; 00236 } OVERLAPPED,*LPOVERLAPPED; 00237 00238 typedef struct sockaddr_in SOCKADDR_IN; 00239 typedef struct sockaddr_in6 SOCKADDR_IN6; 00240 00241 #endif //!_WIN32 00242 00243 typedef HANDLE* PHANDLE; 00244 typedef uint8 KIRQL; 00245 #else // PLATFORM_WIN_APP 00246 typedef unsigned long bool32; 00247 typedef unsigned long bool32_t; 00248 typedef unsigned long ulong; 00249 typedef unsigned char BYTE; 00250 typedef unsigned long uint32; 00251 typedef long int32; 00252 #endif // !defined(PLATFORM_WIN_APP) 00253 00254 typedef long STATUSCODE; 00255 00256 /* function parameter context */ 00257 #undef IN 00258 #define IN 00259 00260 #undef OUT 00261 #define OUT 00262 00263 #undef INOUT 00264 #define INOUT 00265 00266 #undef packed 00267 #define packed 00268 00269 #ifndef CLEAR 00270 #define CLEAR(a) memset(&a,0,sizeof(a)) 00271 #endif 00272 00273 #ifndef POINT_BEYOND 00274 #define POINT_BEYOND(a,t) (t) &((&a)[1]) 00275 #endif 00276 00277 #ifndef MAX 00278 #define MAX(a,b) ((a) > (b) ? (a) : (b)) 00279 #endif 00280 #ifndef MIN 00281 #define MIN(a,b) ((a) < (b) ? (a) : (b)) 00282 #endif 00283 00284 #ifndef _WIN32 00285 #define _ftime ftime 00286 #define _timeb timeb 00287 #define __cdecl 00288 #define __stdcall 00289 #ifndef __fastcall 00290 #define __fastcall 00291 #endif 00292 #ifndef WINAPI 00293 #define WINAPI 00294 #endif 00295 #ifndef CALLBACK 00296 #define CALLBACK 00297 #endif 00298 #endif 00299 00300 #ifndef _WIN32 00301 #undef INVALID_SOCKET 00302 #define INVALID_SOCKET -1 00303 #undef INVALID_FD 00304 #define INVALID_FD -1 00305 #undef SOCKET_ERROR 00306 #define SOCKET_ERROR -1 00307 #undef SOCKADDR 00308 #define SOCKADDR sockaddr 00309 #undef SOCKADDR_IN 00310 #define SOCKADDR_IN sockaddr_in 00311 #undef SOCKADDR_IN6 00312 #define SOCKADDR_IN6 sockaddr_in6 00313 00314 #if defined(PLATFORM_DARWIN) || defined(PLATFORM_APPLE_SSLVPN) || defined(APPLE_IOS) || defined(PLATFORM_CHROMEBOOK) 00315 #define s6_words __u6_addr.__u6_addr16 00316 #elif defined(PLATFORM_LINUX) 00317 #define s6_words s6_addr16 00318 #endif 00319 00320 #endif 00321 00322 #ifndef _CRT_SECURE_NO_DEPRECATE 00323 #define _CRT_SECURE_NO_DEPRECATE 00324 #endif 00325 00326 00327 #if !defined(_WIN32) 00328 00329 #ifndef ZeroMemory 00330 #define ZeroMemory ZEROMEM 00331 #ifndef PLATFORM_ANDROID 00332 #define ZEROMEM(ptr,cnt) \ 00333 if ( NULL != ptr ) { memset(ptr,0,cnt); } 00334 #else 00335 // Cius compiler will generate a compilation error for: if( &var ) 00336 #define ZEROMEM(ptr,cnt) \ 00337 { \ 00338 void *pZero = ptr; \ 00339 if ( NULL != pZero ) { memset(pZero,0,cnt); } \ 00340 } 00341 #endif /* !PLATFORM_ANDROID */ 00342 #endif /* ZeroMemory */ 00343 00344 #ifndef SecureZeroMemory 00345 #define SECUREZEROMEM(ptr, cnt) \ 00346 do { \ 00347 size_t size = (size_t)cnt; \ 00348 volatile char *vptr = (volatile char *)ptr; \ 00349 while (size) { \ 00350 *vptr = 0; \ 00351 vptr++; \ 00352 size--; \ 00353 } \ 00354 } while(0); 00355 #define SecureZeroMemory SECUREZEROMEM 00356 #endif /* SecureZeroMemory */ 00357 #endif /* Windows */ 00358 00359 00360 00361 #ifndef _WIN32 00362 #define _strnicmp strncasecmp 00363 #define _stricmp strcasecmp 00364 #endif 00365 00366 #if !defined(UINT16_MAX) 00367 #define UINT16_MAX 0xffffu 00368 #endif 00369 00370 #ifndef ARRAY_SIZE 00371 #define ARRAY_SIZE(a) (sizeof(a)/sizeof(a[0])) 00372 #endif 00373 00374 #if !defined(TO_STR) && !defined(TO_TSTR) && !defined(SYMBOL_TO_STR) && !defined(SYMBOL_TO_TSTR) 00375 00376 // use TO_STR(x)/TO_TSTR(x) to stringize (put double quotes around) x 00377 // example: 00378 // std::string foo = TO_STR(15); 00379 // tstring bar = TO_TSTR(15); 00380 // becomes 00381 // std::string foo = "15"; 00382 // tstring bar = _T("15"); 00383 #define TO_STR(x) #x 00384 #define TO_TSTR(x) _T(#x) 00385 00386 // use SYMBOL_TO_STR(x)/SYMBOL_TO_TSTR(x) to stringize 00387 // the definition of symbol x 00388 // example: 00389 // #define MAX_LEN 15 00390 // std::string foo = SYMBOL_TO_STR(MAX_LEN); 00391 // tstring bar = SYMBOL_TO_TSTR(MAX_LEN); 00392 // becomes 00393 // std::string foo = "15"; 00394 // tstring bar = _T("15"); 00395 // 00396 // Note that TO_STR(MAX_LEN) results in "MAX_LEN". The double macro is required in 00397 // order to strinigize the *definition* of a symbol (as opposed to the symbol itself) 00398 #define SYMBOL_TO_STR(x) TO_STR(x) 00399 #define SYMBOL_TO_TSTR(x) TO_TSTR(x) 00400 00401 #endif 00402 00403 #ifdef _WIN32 00404 #define systemtime_t __time64_t 00405 #define getSystemTimeInSeconds() _time64(NULL) 00406 #else 00407 #define systemtime_t time_t 00408 #define getSystemTimeInSeconds() time(NULL) 00409 #endif 00410 00411 #ifndef _WIN32 00412 #ifndef INFINITE 00413 #define INFINITE 0xFFFFFFFF 00414 #endif 00415 #endif 00416 00417 #ifdef _WIN32 00418 #define ANY_PATHNAME_DELIMITER "/\\" 00419 #define PATHNAME_DELIMITER '\\' 00420 #define PATHNAME_DELIMITER_STR "\\" 00421 #else 00422 #define ANY_PATHNAME_DELIMITER "/" 00423 #define PATHNAME_DELIMITER '/' 00424 #define PATHNAME_DELIMITER_STR "/" 00425 #endif 00426 #define URL_URI_DELIMITER '/' 00427 #define URL_URI_DELIMITER_STR "/" 00428 00429 #ifdef _WIN32 00430 #define NEWLINE "\r\n" 00431 #else 00432 #define NEWLINE "\n" 00433 #endif 00434 00435 #if defined(_WIN32) 00436 #define HOSTSFILE_LOCATION _T("drivers\\etc\\hosts") 00437 #else 00438 #define HOSTSFILE_LOCATION _T("/etc/hosts") 00439 #endif 00440 00441 #ifdef _WIN32 00442 #define DebugWriteFile(_handle_,_buffer_,_length_,_refCharsWritten_) \ 00443 WriteFile((_handle_),(_buffer_),(_length_),(_refCharsWritten_),NULL) 00444 #else 00445 #ifndef INVALID_HANDLE_VALUE 00446 #define INVALID_HANDLE_VALUE NULL 00447 #endif 00448 #define DebugWriteFile(_handle_,_buffer_,_length_,_refCharsWritten_) \ 00449 fprintf((_handle_), "%s", (_buffer_)); \ 00450 fflush((_handle_)) 00451 #endif 00452 00453 typedef uint8_t MAC_ADDR[6]; 00454 00455 #if !defined(_WIN32) || defined(_WIN32_WCE) 00456 #ifndef ADDRESS_FAMILY 00457 typedef unsigned short ADDRESS_FAMILY; 00458 #endif 00459 #endif 00460 00461 #if __cplusplus >= 201103L 00462 #define CPP_11_SUPPORTED 00463 #endif 00464 #if __cplusplus >= 201402L 00465 #define CPP_14_SUPPORTED 00466 #endif 00467 #if __cplusplus >= 201703L 00468 #define CPP_17_SUPPORTED 00469 #endif 00470 00471 #if ((defined(_WIN32) && !defined(_WIN32_WCE) && !defined(PLATFORM_WIN_APP)) || defined(PLATFORM_DARWIN) || defined(PLATFORM_LINUX)) && !defined(ANYCONNECT_USE_SNAK) && !defined(PRODUCT_TYPE_SSA) 00472 /* 00473 ** the FIREWALL_SUPPORTED define is used to track the platforms 00474 ** where the firewall feature is supported. This is to avoid repeating the 00475 ** platforms in #ifdef clauses in other files. 00476 ** Also, when Firewall feature expands to other platforms, they only need to be added in 00477 ** one place. 00478 */ 00479 #define FIREWALL_SUPPORTED 00480 #endif 00481 00482 #if !defined(PRODUCT_TYPE_SSA) && ((defined(_WIN32) && !defined(_WIN32_WCE) && !defined(PLATFORM_WIN_APP)) || defined(PLATFORM_DARWIN) || (defined(PLATFORM_LINUX) && !defined(PLATFORM_CHROMEBOOK))) 00483 /* 00484 ** the TRUSTED_NETWORK_DETECTION define is used to track the platforms 00485 ** where Trusted Network Detection is performed. This is to avoid repeating the 00486 ** platforms in #ifdef clauses in other files. 00487 ** Also, when TND support expands to other platforms, they only need to be added in 00488 ** one place. 00489 */ 00490 #define TRUSTED_NETWORK_DETECTION 00491 00492 /* 00493 * Android only uses TND to report state to NVM. 00494 * Policy-based actions are not supported. 00495 */ 00496 #if !defined(PLATFORM_ANDROID) 00497 #define TND_ACTIONS_SUPPORTED 00498 #endif 00499 #endif 00500 00501 #if (defined(_WIN32) || defined(PLATFORM_DARWIN) || defined(PLATFORM_ANDROID) || defined(PLATFORM_LINUX) && !defined(ANYCONNECT_USE_SNAK) && !defined(PLATFORM_WIN_APP)) 00502 #define INTER_MODULE_STATE_NOTIFY 00503 #endif 00504 00505 #if ((defined(_WIN32) && !defined(_WIN32_WCE)) || defined(PLATFORM_DARWIN) || defined(TRUSTED_NETWORK_DETECTION)) && !defined(PRODUCT_TYPE_SSA) && !defined(PLATFORM_ANDROID) 00506 /* 00507 ** the LOGIN_UTILITIES_SUPPORTED define is used to track the platforms 00508 ** that support AnyConnect action triggered by user login. This is to avoid 00509 ** repeating the platforms in #ifdef clauses in other files. 00510 ** Also, when login support expands to other platforms, they only need to be added in 00511 ** one place. 00512 */ 00513 #define LOGIN_UTILITIES_SUPPORTED 00514 #endif 00515 00516 #if (defined(_WIN32) || defined(PLATFORM_DARWIN)) && !defined(PLATFORM_WIN_APP) 00517 /* 00518 ** The DNS_PLUGIN_SUPPORTED define is used to track the platforms where the DNS KDF plugin is 00519 ** available. This is to avoid repeating the platforms in #ifdef clauses in other files. 00520 ** Also, when support expands to other platforms, they only need to be added in one place. 00521 */ 00522 #define DNS_PLUGIN_SUPPORTED 00523 #if defined(_WIN32) 00524 /* 00525 ** The DNS_PLUGIN_DNS_REQ_HANDLING_SUPPORTED define is used to track the platforms where the DNS KDF plugin is 00526 ** available and supports handling of DNS requests during the VPN tunnel (e.g. for split-DNS or tunnel-all-DNS enforcement). 00527 **/ 00528 #define DNS_PLUGIN_DNS_REQ_HANDLING_SUPPORTED 00529 #endif // _WIN32 00530 #endif // (_WIN32 || PLATFORM_DARWIN) && !PLATFORM_WIN_APP && !PRODUCT_TYPE_SSA 00531 00532 #if defined(DNS_PLUGIN_SUPPORTED) 00533 /* 00534 ** The DYNAMIC_SPLIT_TUNNELING_SUPPORTED define is used to track the platforms where dynamic split tunneling is supported. 00535 **/ 00536 #define DYNAMIC_SPLIT_TUNNELING_SUPPORTED 00537 #endif // DNS_PLUGIN_SUPPORTED 00538 00539 #if !(defined(PLATFORM_APPLE_SSLVPN) && TARGET_CPU_ARMV6) 00540 /* 00541 ** A bug was discovered in iPhone testing wherein virtual inline functions do 00542 ** not work correctly on ARMv6 processors. To work around this, virtual inline 00543 ** function need to be made standard virtual functions on ARMv6. To prevent 00544 ** differences in runtime behavior, the VIRTUAL_INLINES_SUPPORTED define is used 00545 ** to define some virtual inlines in the header files, letting the functions be 00546 ** defined without the inline type in the cpp file for non-supported platforms. 00547 */ 00548 #define VIRTUAL_INLINES_SUPPORTED 00549 #endif 00550 00551 /* 00552 * When changing the SCRIPTING_SUPPORTED definition, you MUST also update the 00553 * ClientIfcBase.h! We duplicate this definition there due to the manner in 00554 * which we distribute our code to partners; we cannot include this header from 00555 * ClientIfcBase.h. 00556 */ 00557 #if !defined(PLATFORM_APPLE_SSLVPN) && !defined(PLATFORM_ANDROID) && !defined(PLATFORM_WIN_APP) 00558 /* 00559 ** the SCRIPTING_SUPPORTED define is used to enable the script manager for launching 00560 ** customer provided scripts on events like connection establishment, completion of 00561 ** disconnect, and captive portal detection. 00562 */ 00563 #define SCRIPTING_SUPPORTED 00564 #endif 00565 00566 #if defined(PLATFORM_ANDROID) 00567 #define DYNAMIC_UPDATE_LOCAL_POLICY 00568 #endif // PLATFORM_ANDROID 00569 00570 #if !defined(PRODUCT_TYPE_SSA) && ((defined(_WIN32) && !defined(_WIN32_WCE) && !defined(PLATFORM_WIN_APP)) || defined(PLATFORM_DARWIN) || (defined(PLATFORM_LINUX) && !defined(ANYCONNECT_USE_SNAK))) 00571 /* 00572 ** the NETWORK_ENVIRONMENT_STATE define is used to track the platforms 00573 ** where NETWORK_ENVIRONMENT_STATE check is performed. This is to avoid repeating the 00574 ** platforms in #ifdef clauses in other files. 00575 ** Also, when NES support expands to other platforms, they only need to be added in 00576 ** one place. 00577 */ 00578 #define NETWORK_ENVIRONMENT_STATE 00579 #endif 00580 00581 00582 #if (defined(_WIN32) && !defined(_WIN32_WCE) && !defined(PLATFORM_WIN_APP)) || defined(PLATFORM_DARWIN) || (defined(PLATFORM_LINUX) && !defined(ANYCONNECT_USE_SNAK)) 00583 /* 00584 ** The AUTOMATIC_HEADEND_SELECTION define is used to track the platforms 00585 ** where Automatic Headend Selection is performed. This is to avoid repeating the 00586 ** platforms in #ifdef clauses in other files. 00587 ** Also, when AHS support expands to other platforms, they only need to be added in 00588 ** one place. 00589 */ 00590 #define AUTOMATIC_HEADEND_SELECTION 00591 #endif 00592 00593 #if (defined(_WIN32) && !defined(_WIN32_WCE) && !defined(PLATFORM_WIN_APP)) || defined(PLATFORM_DARWIN) 00594 /* 00595 ** the MUS_HOST_SERVICES define is used to track the platforms 00596 ** where MUS Host Status check is performed. This is to avoid repeating the 00597 ** platforms in #ifdef clauses in other files. 00598 */ 00599 #define MUS_HOST_SERVICES 00600 #endif 00601 00602 // BUGBUG - initially only enable code signing for Windows 00603 #if (defined(_WIN32) && !defined(_WIN32_WCE) && !defined(PLATFORM_WIN_APP)) || defined(PLATFORM_DARWIN) || (defined(PLATFORM_LINUX) && !defined(PLATFORM_LINUX_EMBEDDED_PPC) && !defined(PLATFORM_LINUX_EMBEDDED_ARM) && !defined(PLATFORM_ANDROID) && !defined(PLATFORM_CHROMEBOOK)) 00604 /* 00605 ** the CODE_SIGNING_SUPPORTED define is used to track the platforms 00606 ** where code sign verification is support. This is to avoid repeating the 00607 ** platforms in #ifdef clauses in other files. 00608 ** 00609 */ 00610 #define CODE_SIGNING_SUPPORTED 00611 #endif 00612 00613 #if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(PLATFORM_WIN_APP) 00614 #define RSA_SECURID_SUPPORTED 00615 #endif 00616 00617 #if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(PLATFORM_WIN_APP) 00618 #define SAFEWORD_SOFTOKEN_SUPPORTED 00619 #endif 00620 00621 #if (defined(_WIN32) && !defined(_WIN32_WCE) && !defined(PLATFORM_WIN_APP)) || defined(PLATFORM_DARWIN) || defined(PLATFORM_LINUX) || defined(PLATFORM_APPLE_SSLVPN) || ( defined(PRODUCT_TYPE_SSA) && defined(APPLE_IOS) ) 00622 /* 00623 ** the IPSEC_SUPPORTED define is used to track the platforms 00624 ** where the IPSec protocol is supported. This is to avoid repeating the 00625 ** platforms in #ifdef clauses in other files. 00626 */ 00627 #define IPSEC_SUPPORTED 00628 #endif 00629 00630 #if (defined(_WIN32) && !defined(_WIN32_WCE)) || defined(PLATFORM_DARWIN) || (defined(PLATFORM_LINUX) && !defined(PLATFORM_CHROMEBOOK)) || defined(PLATFORM_APPLE_SSLVPN) || defined (PLATFORM_ANDROID) 00631 /* 00632 ** The IPV6_SUPPORTED define is used to track the platforms 00633 ** where full IPv6 capability is supported. This is to avoid repeating the 00634 ** platforms in #ifdef clauses in other files. 00635 ** Note that this is further narrowed down by method CIPv6Util::IsIPv6FullCapabilitySupported. 00636 */ 00637 #define IPV6_SUPPORTED 00638 #endif 00639 00640 #if (defined(_WIN32) && !defined(_WIN32_WCE) && !defined(PLATFORM_WIN_APP)) || defined(PLATFORM_DARWIN) || defined(PLATFORM_LINUX) || defined(PLATFORM_APPLE_SSLVPN) || ( defined(PRODUCT_TYPE_SSA) && defined(APPLE_IOS) ) 00641 /* 00642 ** the PLUGIN_PROTOCOL_SUPPORTED define is used to track the platforms 00643 ** where modular protocol Plugins are supported. This is to avoid repeating the 00644 ** platforms in #ifdef clauses in other files. 00645 */ 00646 #define PLUGIN_PROTOCOL_SUPPORTED 00647 #endif 00648 00649 #if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(PLATFORM_WIN_APP) && !defined(PRODUCT_TYPE_SSA) 00650 /* 00651 ** The IPSEC_OVER_SSL define is used to track the platforms 00652 ** where the feature "IPsec tunneling over SSL for Oracle" (EDCS-852737) is supported. 00653 ** This is to avoid repeating the platforms in #ifdef clauses in other files. 00654 ** Also, when the support expands to other platforms, they only need to be added in 00655 ** one place. 00656 */ 00657 #define IPSEC_OVER_SSL 00658 #endif 00659 00660 #if (defined(_WIN32) && !defined(_WIN32_WCE) && !defined(PLATFORM_WIN_APP)) || defined(PLATFORM_DARWIN) || (defined(PLATFORM_LINUX) && !defined(PLATFORM_ANDROID) && !defined(PLATFORM_CHROMEBOOK)) || defined(APPLE_IOS) 00661 /* 00662 ** the DATA_OBFUSCATING_SUPPORTED define is used to track the platforms 00663 ** where data obfuscation using key exchanges are supported. This is to 00664 ** avoid repeating the platforms in #ifdef clauses in other files. 00665 */ 00666 #define DATA_OBFUSCATING_SUPPORTED 00667 #endif 00668 00669 #if !defined(PLATFORM_APPLE_SSLVPN) && !defined(_WIN32_WCE) && !defined(PLATFORM_WIN_APP) && !defined(PRODUCT_TYPE_SSA) && !defined(PLATFORM_ANDROID) && !defined(PLATFORM_CHROMEBOOK) 00670 /* 00671 ** the HOSTFILE_MODIFICATION_SUPPORTED define is used to track the platforms 00672 ** where hosts file modification is performed. This is to avoid repeating the 00673 ** platforms in #ifdef clauses in other files. 00674 */ 00675 #define HOSTSFILE_MODIFICATION_SUPPORTED 00676 #endif 00677 00678 #if defined(_WIN32) || defined(_WIN32_WCE) || defined(PLATFORM_DARWIN) || defined(PLATFORM_LINUX) || defined(PLATFORM_ANDROID) || defined(PLATFORM_APPLE_SSLVPN)|| defined(PLATFORM_WIN_APP) 00679 /* 00680 ** the SCEP_CERTIFICATE_ENROLLMENT_SUPPORTED define is used to track the platforms 00681 ** where SCEP enrollment can be performed. This is to avoid repeating the 00682 ** platforms in #ifdef clauses in other files. 00683 */ 00684 #define SCEP_CERTIFICATE_ENROLLMENT_SUPPORTED 00685 #endif 00686 00687 #if (defined(_WIN32) && !defined(_WIN32_WCE)) 00688 /* 00689 ** these XXX_PROFILE_SUPPORTED defines are used to track the platforms where 00690 ** Service Profiles for optional modules are supported. 00691 ** All platforms: VPN 00692 ** Windows: NAM, Web Security, ISE Posture, FireAMP, NVM and OpenDNS 00693 */ 00694 #define NAM_PROFILE_SUPPORTED 00695 #define WEBSEC_PROFILE_SUPPORTED 00696 #define ISEPOSTURE_PROFILE_SUPPORTED 00697 #define FIREAMP_PROFILE_SUPPORTED 00698 #define NVM_PROFILE_SUPPORTED 00699 #define OPENDNS_PROFILE_SUPPORTED 00700 #elif defined(PLATFORM_DARWIN) 00701 /* 00702 ** OS X: Web Security, ISE Posture, FireAMP, NVM and OpenDNS 00703 */ 00704 #define WEBSEC_PROFILE_SUPPORTED 00705 #define ISEPOSTURE_PROFILE_SUPPORTED 00706 #define FIREAMP_PROFILE_SUPPORTED 00707 #define NVM_PROFILE_SUPPORTED 00708 #define OPENDNS_PROFILE_SUPPORTED 00709 #elif defined(PLATFORM_LINUX) 00710 #define NVM_PROFILE_SUPPORTED 00711 #endif 00712 00713 #if defined(_WIN32) || defined(PLATFORM_DARWIN) 00714 /* 00715 ** the CLOUD_UPDATE_SUPPORTED define is used to track the platforms 00716 ** that support cloud updates (currently from OpenDNS). This is to avoid repeating the 00717 ** platforms in #ifdef clauses in other files. 00718 */ 00719 #define CLOUD_UPDATE_SUPPORTED 00720 #endif 00721 00722 /* 00723 ** The PLATFORM_DESKTOP define is used to track AnyConnect desktop platforms. 00724 */ 00725 #if (defined(_WIN32) || defined(PLATFORM_DARWIN) || (defined(PLATFORM_LINUX) && !defined(ANYCONNECT_USE_SNAK) && !defined (PLATFORM_ANDROID) && !defined(PLATFORM_CHROMEBOOK))) \ 00726 && !defined(PRODUCT_TYPE_SSA) && !defined(PLATFORM_WIN_APP) 00727 #define PLATFORM_DESKTOP 00728 #endif 00729 00730 #if defined(PLATFORM_DESKTOP) 00731 /* 00732 ** The exportStats call is only supported on the Desktop Platforms, 00733 ** it should not be included or supported if it is not a Desktop Plat 00734 */ 00735 #define EXPORT_STATS_SUPPORTED 00736 #endif 00737 00738 #if defined(_WIN32) || defined(PLATFORM_DARWIN) || defined(PLATFORM_LINUX) || defined(PLATFORM_APPLE_SSLVPN) 00739 #define AC_CERTIFICATE_POLICY_SUPPORTED 00740 #endif 00741 00742 #ifndef _TRSTRING 00743 #define _tr(String) String 00744 #define _TRSTRING 00745 #endif 00746 00747 #ifndef _C_MYASSERT 00748 #define C_MYASSERT(e) typedef char __C_MYASSERT__[(e)?1:-1] 00749 #define _C_MYASSERT 00750 #endif 00751 00752 #if defined(PLATFORM_APPLE_SSLVPN) || defined(APPLE_IOS) 00753 #define NETWORK_ORDER_LOOPBACK_INTF_ADDR htonl(0x7f000001) // 127.0.0.1 00754 #endif 00755 00756 #if !defined(BITS_PER_BYTE) 00757 #define BITS_PER_BYTE 8 00758 #endif 00759 00760 #if defined(PLATFORM_DESKTOP) && defined(PLATFORM_LINUX) 00761 #define STATIC_THREAD_LOCAL static __thread 00762 #else 00763 #define STATIC_THREAD_LOCAL thread_local 00764 #endif 00765 00766 #if defined(PLATFORM_APPLE_SSLVPN) || defined(PLATFORM_ANDROID) || defined(PLATFORM_CHROMEBOOK)|| defined(PRODUCT_TYPE_SSA) || defined(PLATFORM_WIN_APP) 00767 /* 00768 ** the MANUAL_PKCS12_IMPORT_SUPPORTED define is used to track the platforms 00769 ** where the manual import of PKCS12 certificates is supported. This is to avoid repeating the 00770 ** platforms in #ifdef clauses in other files. 00771 */ 00772 #define MANUAL_PKCS12_IMPORT_SUPPORTED 00773 #endif 00774 00775 #if defined(PLATFORM_ANDROID) || defined(PLATFORM_APPLE_SSLVPN) || defined(PLATFORM_CHROMEBOOK) 00776 // Zlib is statically linked. 00777 #define STATIC_ZLIB 00778 #endif 00779 00780 #if (defined(PLATFORM_LINUX) && !defined(PLATFORM_ANDROID)) || defined(PLATFORM_DARWIN) 00781 // Use zlib dynamic library on the system. 00782 #define USE_SYSTEM_ZLIB 00783 #endif 00784 00785 00786 /* 00787 * Platforms that support a single profile. 00788 */ 00789 #if defined(PLATFORM_APPLE_SSLVPN) || defined(PLATFORM_ANDROID) || defined(PLATFORM_CHROMEBOOK) 00790 #define USE_SINGLE_PROFILE 00791 #endif 00792 00793 00794 /* 00795 * Platforms that support ACIDEX. 00796 */ 00797 #if defined(PLATFORM_ANDROID) || defined(PLATFORM_APPLE_SSLVPN) || defined(_WIN32) || defined(PLATFORM_DARWIN) || defined(PLATFORM_LINUX) || defined(PLATFORM_CHROMEBOOK) 00798 #define ACIDEX_SUPPORTED 00799 #endif 00800 00801 /* 00802 * Platforms that support PerApp. 00803 */ 00804 #if defined(PLATFORM_ANDROID) || defined(PLATFORM_APPLE_SSLVPN) 00805 #define PERAPP_SUPPORTED 00806 #endif 00807 00808 00809 /* 00810 * Platforms that support HOSTDATA. 00811 */ 00812 #if defined(PLATFORM_ANDROID) || defined(PLATFORM_APPLE_SSLVPN) || defined(PLATFORM_CHROMEBOOK) 00813 #define HOST_DATA_SUPPORTED 00814 #endif 00815 00816 00817 /* 00818 * Platforms that support scripting. 00819 * 00820 * When changing the SCRIPTING_SUPPORTED definition, you MUST also update the 00821 * ClientIfcBase.h! We duplicate this definition there due to the manner in 00822 * which we distribute our code to partners; we cannot include this header from 00823 * ClientIfcBase.h. 00824 00825 */ 00826 #if !defined(PLATFORM_APPLE_SSLVPN) && !defined(PLATFORM_ANDROID) && !defined(PLATFORM_WIN_APP) 00827 #define SCRIPTING_SUPPORTED 00828 #endif 00829 00830 #if defined(PLATFORM_ANDROID) 00831 // On Android, modifying the default route may break system network services. 00832 #define DONT_TOUCH_IPV4_DEFAULT_ROUTE 00833 #endif 00834 00835 #if defined(PLATFORM_APPLE_SSLVPN) || defined(PLATFORM_ANDROID) || defined(PLATFORM_CHROMEBOOK) 00836 #define SNAK_NO_ROUTE_TABLE_ACCESS 00837 #endif 00838 00839 #if defined(ANYCONNECT_USE_SNAK) || defined(PLATFORM_APPLE_SSLVPN) 00840 #define GLOBAL_SNAK_PLUGIN_VER 2 00841 #endif 00842 00843 #if defined(PLATFORM_ANDROID) 00844 // Supports API for integrating program data (e.g. localization and profile). 00845 #define PROGRAM_DATA_IMPORT_SUPPORTED 00846 #endif 00847 00848 #if defined(PLATFORM_ANDROID) 00849 // Credentials for a connection can be prefilled via uri handling or API calls 00850 // if you add a new platform, you need to add it in ClientIfcBase.h and ConnectPromptInfoBase.h 00851 #define CREDENTIAL_PREFILL_SUPPORTED 00852 #endif 00853 00854 #if !(defined(_WIN32_WCE) || defined(PLATFORM_APPLE_SSLVPN) || defined(PLATFORM_ANDROID) || defined(PLATFORM_CHROMEBOOK)) 00855 // support for automatic reconnects 00856 #define AUTORECONNECT_SUPPORTED 00857 #endif 00858 00859 #if !defined(_WIN32_WCE) && !defined(PLATFORM_LINUX_EMBEDDED_PPC) && !defined(PLATFORM_WEBOS_ARM) && !defined(PLATFORM_WEBOS_X86) && !defined(APPLE_IOS) && !defined(PLATFORM_WIN_APP) && !defined(_DOWNLOADER) 00860 #define FIPS_SUPPORTED 00861 #endif 00862 00863 #if !defined(_WIN32_WCE) && !defined(PLATFORM_WIN_APP) && !defined(PLATFORM_APPLE_SSLVPN) && !defined(PLATFORM_LINUX_EMBEDDED_PPC) && !defined(PLATFORM_WEBOS_ARM) && !defined(PLATFORM_WEBOS_X86) && !defined(APPLE_IOS) && !defined(PRODUCT_TYPE_SSA) && !defined(PLATFORM_CHROMEBOOK) 00864 #define LEAF_SUPPORTED 00865 #endif 00866 00867 #if defined(PLATFORM_DESKTOP) && (defined(_WIN32) || defined(PLATFORM_LINUX)) 00868 /* 00869 ** This define is used to track platforms where user logon 00870 ** related preferences in client profile are supported. 00871 */ 00872 #define ENFORCE_USER_LOGON_SETTINGS 00873 #endif 00874 00875 #if !defined(PLATFORM_ANDROID) && !defined(PLATFORM_CHROMEBOOK) // More platforms need to be added 00876 #define WIDE_CHAR_SUPPORTED 00877 #endif 00878 00879 #if defined(_WIN32) && !defined(PRODUCT_TYPE_SSA) && !defined(PLATFORM_WIN_APP) 00880 #define TUNNEL_PROXY_SETTINGS_SUPPORTED 00881 #endif 00882 00883 /* 00884 ** Public Proxy support is only implemented on Windows, Linux and Mac desktop platforms 00885 */ 00886 #if defined(PLATFORM_DESKTOP) 00887 #define PUBLIC_PROXY_SUPPORTED 00888 #endif 00889 00890 /* 00891 ** NTLM support is only implemented on Windows desktop platforms 00892 */ 00893 #if defined(_WIN32) && defined(PUBLIC_PROXY_SUPPORTED) 00894 #define PROXYAUTH_NTLM_SUPPORTED 00895 #endif 00896 00897 #if defined(PLATFORM_ANDROID) || defined(PRODUCT_TYPE_SSA) || defined(PLATFORM_APPLE_SSLVPN) 00898 #define IMPORT_API_SUPPORTED 00899 #endif 00900 00901 #if defined(PLATFORM_APPLE_SSLVPN) || (defined(PRODUCT_TYPE_SSA) && !(defined(PLATFORM_ANDROID) || defined(APPLE_IOS))) || defined(PLATFORM_CHROMEBOOK) 00902 /* 00903 ** This serves to tell the IPsec plugin interface to explicitly 00904 ** exclude it's global namespace entry points, leaving the only 00905 ** plugin interface as a set of static class methods, which the 00906 ** loading code will look for directly. 00907 */ 00908 #define IPSEC_AS_INTERNAL_MODULE 00909 #endif 00910 00911 #if defined(PLATFORM_ANDROID) // More platforms need to be added 00912 #define dynamic_cast reinterpret_cast 00913 #endif 00914 00915 #if defined(PRODUCT_TYPE_SSA) && defined(APPLE_IOS) && !defined(PLATFORM_APPLE_SSLVPN) 00916 #define CONFIGURE_REMOTE_WAKEUP_SUPPORTED 00917 #endif 00918 00919 /* 00920 ** The SMARTCARD_SUPPORTED define is used to track the platforms where smartcard 00921 ** certificate authentication is supported. This is to avoid repeating the 00922 ** platforms in #ifdef clauses in other files. 00923 */ 00924 #if (defined(_WIN32) && !defined(PLATFORM_WIN_APP)) || defined(PLATFORM_DARWIN) 00925 #define SMARTCARD_SUPPORTED 00926 /* 00927 ** The SMARTCARD_REMOVAL_SUPPORTED define is used to track the platforms where smartcard 00928 ** removal monitoring is supported. This is to avoid repeating the 00929 ** platforms in #ifdef clauses in other files. 00930 */ 00931 #if defined(_WIN32) 00932 #define SMARTCARD_REMOVAL_SUPPORTED 00933 #endif 00934 #endif // (_WIN32 && !PLATFORM_WIN_APP) || PLATFORM_DARWIN 00935 00936 #if (defined(PLATFORM_LINUX) || defined(PLATFORM_DARWIN)) && !defined(ANYCONNECT_USE_SNAK) && !defined(PRODUCT_TYPE_SSA) 00937 /* 00938 ** The CIRCUMVENT_HOST_FILTERING_SUPPORTED define is used to track the platforms 00939 ** where AnyConnect can control whether or not pre-existing host filtering is 00940 ** circumvented upon applying AnyConnect filtering (only applicable to split-tunneling). 00941 */ 00942 #define CIRCUMVENT_HOST_FILTERING_SUPPORTED 00943 #endif 00944 00945 #if defined(PLATFORM_LINUX) && defined(PLATFORM_DESKTOP) 00946 /* 00947 ** The TUNNEL_FROM_ANY_SOURCE_SUPPORTED define is used to track the platforms 00948 ** where admin can control whether or not to allow packets from any source addresses 00949 ** being tunneled. 00950 */ 00951 #define TUNNEL_FROM_ANY_SOURCE_SUPPORTED 00952 #endif 00953 00954 #if defined(_WIN32) && !defined(ANYCONNECT_USE_SNAK) && !defined(PRODUCT_TYPE_SSA) 00955 /* 00956 ** The SKIP_DHCP_SERVER_ROUTE_SUPPORTED define is used to track the platforms 00957 ** where the admin can control whether or not the public DHCP server route is created 00958 ** upon establishing the VPN tunnel. 00959 */ 00960 #define SKIP_DHCP_SERVER_ROUTE_SUPPORTED 00961 #endif 00962 00963 #if defined(PLUGIN_PROTOCOL_SUPPORTED) && !defined(PRODUCT_TYPE_SSA) 00964 #if (defined(_WIN32) && !defined(_WIN32_WCE)) 00965 // support Service Control Plugins if defined 00966 #define SERVICE_PLUGIN 00967 // support PhoneHome Plugin if defined 00968 #define PHONEHOME_PLUGIN 00969 #elif defined(PLATFORM_DARWIN) 00970 // support Service Control Plugins if defined 00971 #define SERVICE_PLUGIN 00972 // support PhoneHome Plugin if defined 00973 #define PHONEHOME_PLUGIN 00974 #elif defined(PLATFORM_LINUX) && !defined(PLATFORM_ANDROID) && !defined(PLATFORM_CHROMEBOOK) 00975 #define PHONEHOME_PLUGIN 00976 #define SERVICE_PLUGIN 00977 #endif 00978 #endif 00979 00980 #if (defined (PLATFORM_DARWIN) || defined (PLATFORM_ANDROID) || defined(PLATFORM_APPLE_SSLVPN) || defined(PLATFORM_CHROMEBOOK) || (defined (PLATFORM_LINUX) && !defined (ANYCONNECT_USE_SNAK))) 00981 #define FILE_STORE_SUPPORTED 00982 #endif 00983 00984 #if !defined(PLATFORM_WIN_APP) 00985 /* 00986 ** the INTERPROCESS_COMMUNICATION_SUPPORTED define is used to track the platforms where the 00987 ** communication between processes is supported. This is to avoid repeating the 00988 ** platforms in #ifdef clauses in other files. 00989 */ 00990 #define INTERPROCESS_COMMUNICATION_SUPPORTED 00991 #endif 00992 #if !defined(PLATFORM_WIN_APP) 00993 /* 00994 ** the THREADS_SUPPORTED define is used to track the platforms where 00995 ** threads are supported. This is to avoid repeating the 00996 ** platforms in #ifdef clauses in other files. 00997 */ 00998 #define THREADS_SUPPORTED 00999 #endif 01000 01001 #if !defined(PLATFORM_WIN_APP) 01002 /* 01003 ** the CAPTIVE_PORTAL_DETECTION_SUPPORTED define is used to track the platforms where 01004 ** captive portal detection is supported. This is to avoid repeating the 01005 ** platforms in #ifdef clauses in other files. 01006 */ 01007 #define CAPTIVE_PORTAL_DETECTION_SUPPORTED 01008 #endif 01009 01010 #if defined(_WIN32) && defined(CAPTIVE_PORTAL_DETECTION_SUPPORTED) && defined(PLATFORM_DESKTOP) 01011 /* 01012 ** the SECURE_CAPTIVE_PORTAL_REMEDIATION_SUPPORTED define is used to track the platforms where 01013 ** secure captive portal remediation is supported. 01014 */ 01015 #define SECURE_CAPTIVE_PORTAL_REMEDIATION_SUPPORTED 01016 #endif 01017 01018 #if !defined(PLATFORM_WIN_APP) 01019 /* 01020 ** the EVENTS_SUPPORTED define is used to track the platforms where 01021 ** events are supported. This is to avoid repeating the 01022 ** platforms in #ifdef clauses in other files. 01023 */ 01024 #define EVENTS_SUPPORTED 01025 #endif 01026 01027 #if defined(IPV6_SUPPORTED) && !defined(PLATFORM_WIN_APP) && !defined(PLATFORM_ANDROID) && !defined(PLATFORM_CHROMEBOOK) && !defined(PLATFORM_APPLE_SSLVPN) 01028 /* 01029 ** the MODIFY_HOSTSFILE_SUPPORTED define is used to track the platforms where 01030 ** modification of the system's hosts file is supported. This is to avoid repeating the 01031 ** platforms in #ifdef clauses in other files. 01032 */ 01033 #define MODIFY_HOSTSFILE_SUPPORTED 01034 #endif 01035 01036 #if !defined(PLATFORM_WIN_APP) 01037 /* 01038 ** the HOST_CONFIG_MANAGER_SUPPORTED define is used to track the platforms where 01039 ** broad control of the host OS is supported. This is to avoid repeating the 01040 ** platforms in #ifdef clauses in other files. 01041 */ 01042 #define HOST_CONFIG_MANAGER_SUPPORTED 01043 #endif 01044 01045 #if defined(PRODUCT_TYPE_SSA) || defined(PLATFORM_WIN_APP) || defined(PLATFORM_ANDROID) || defined(PLATFORM_CHROMEBOOK) || defined(PLATFORM_APPLE_SSLVPN) 01046 /* 01047 ** the FILE_SYNCHRONIZER_SUPPORTED define is used to track the platforms where 01048 ** files downloaded directly by VPN API are supported. This is to avoid repeating the 01049 ** platforms in #ifdef clauses in other files. 01050 */ 01051 #define FILE_SYNCHRONIZER_SUPPORTED 01052 #endif 01053 01054 #if defined(_WIN32) || defined(PLATFORM_DARWIN) || (defined(PLATFORM_LINUX) && !defined(PLATFORM_ANDROID) && !defined(PLATFORM_CHROMEBOOK)) 01055 /* 01056 ** the SAVE_VPNCONFIG_TO_FILE_SUPPORTED define is used to track the platforms where the 01057 ** writting of the VPN config to file is supported. This is to avoid repeating the 01058 ** platforms in #ifdef clauses in other files. 01059 */ 01060 #define SAVE_VPNCONFIG_TO_FILE_SUPPORTED 01061 #endif 01062 01063 /* 01064 * DSCP preservation is not considered for Downloader. Downloader uses socket transport for IPC. 01065 */ 01066 #if (defined(PLATFORM_ANDROID) || defined(PLATFORM_DARWIN) || defined(_WIN32)) && !defined(_DOWNLOADER) && !defined(PRODUCT_TYPE_SSA) && !defined(PLATFORM_WIN_APP) 01067 // Used to enable preservation of Differentiated Services field in the IP packet header. 01068 #define DIFFSERV_PRESERVATION_SUPPORTED 01069 #endif 01070 01071 #if !defined(PRODUCT_TYPE_SSA) && !defined(PLATFORM_WIN_APP) 01072 /* 01073 ** the ROUTE_MANAGER_SUPPORTED define is used to track the platforms 01074 ** where RouteMgr is supported. This is to avoid repeating the 01075 ** platforms in #ifdef clauses in other files. 01076 */ 01077 #define ROUTE_MANAGER_SUPPORTED 01078 #endif 01079 01080 #if !defined(PRODUCT_TYPE_SSA) && !defined(PLATFORM_WIN_APP) 01081 /* 01082 ** the FILTER_MANAGER_SUPPORTED define is used to track the platforms 01083 ** where FilterMgr is supported. This is to avoid repeating the 01084 ** platforms in #ifdef clauses in other files. 01085 */ 01086 #define FILTER_MANAGER_SUPPORTED 01087 #endif 01088 01089 #if defined(PLATFORM_APPLE_SSLVPN) 01090 // Used to enable the file logging for Apple plugins. 01091 //#define FILE_LOGGING_SUPPORTED 01092 #endif 01093 01094 /* 01095 ** Legacy Single sign on authentication. 01096 ** Explicitly disabled on mobile platforms due to session fixation vulnerability, as described in CSCvg65072 01097 ** To be removed from desktop platforms in some future AnyConnect release (4.7?) 01098 */ 01099 #if defined(PLATFORM_DESKTOP) 01100 #define SSO_V1_SUPPORTED 01101 #endif 01102 01103 /* 01104 ** Single sign on authentication (requires embedded browser). 01105 */ 01106 #if !defined(PLATFORM_WIN_APP) 01107 #define SSO_SUPPORTED 01108 #endif 01109 01110 #if !defined(PLATFORM_WIN_APP) 01111 #define MCA_SUPPORTED 01112 #endif 01113 01114 #if !defined(PLATFORM_WIN_APP) 01115 #define TIMERS_SUPPORTED 01116 #endif 01117 01118 #if !defined(PLATFORM_CHROMEBOOK) 01119 #define LOAD_EXTERNAL_MODULES 01120 #endif 01121 01122 #if defined(PLATFORM_ANDROID) 01123 #define SPLIT_DNS_PROXY_SUPPORTED 01124 #endif 01125 01126 #if (defined(_WIN32) || defined(PLATFORM_DARWIN)) && defined(PLATFORM_DESKTOP) 01127 /* 01128 ** The MGMT_TUNNEL_SUPPORTED define is used to track the platforms where 01129 ** the management tunnel feature is supported. 01130 */ 01131 #define MGMT_TUNNEL_SUPPORTED 01132 #endif 01133 01134 #if (defined(_WIN32) && defined(PLATFORM_DESKTOP)) || defined(MGMT_TUNNEL_SUPPORTED) 01135 // Machine certificate authentication SSL tunnel connections via agent are supported 01136 // on Windows desktop, and also on all platforms supporting the management tunnel feature. 01137 // 01138 #define SSL_CONNECT_VIA_AGENT_SUPPORTED 01139 #endif 01140 01141 /* 01142 ** Performance optimization for the tunnel packet processing loop to attempt to process 01143 ** multiple packets before calling back into select(). 01144 */ 01145 #if !defined(_WIN32) 01146 #define MULTI_TUN_PACKET_PROCESSING_SUPPORTED 01147 #endif 01148 01149 #if (defined(_WIN32) && defined(_M_ARM64)) 01150 /* 01151 ** Disable Hostscan on Windows native ARM64 builds. 01152 */ 01153 #define ANYCONNECT_NO_CSD 01154 #endif 01155 #if defined(_WIN32) && defined(PLATFORM_DESKTOP) && !defined(_M_ARM64) && !defined(X86_FOR_ARM64) 01156 /* 01157 ** Connected Standby is supported in Windows desktop but not UWP and not ARM64 (both native ARM64 and the hybrid _WIN32_FOR_ARM64). 01158 */ 01159 #define CONNECTED_STANDBY_SUPPORTED 01160 #endif 01161 01162 #if defined(_WIN32) && defined(PLATFORM_DESKTOP) || defined(PLATFORM_APPLE_SSLVPN) 01163 /* 01164 ** This define is used to track platforms where multi-line logs are readable, and hence supported. 01165 */ 01166 #define MULTI_LINE_LOGS_SUPPORTED 01167 #endif 01168 01169 #if defined(PLATFORM_ANDROID) 01170 #define PBR_SUPPORTED 01171 #endif 01172 01173 #if (defined(PBR_SUPPORTED) && defined(PLATFORM_APPLE_SSLVPN) && defined(SUBPLATFORM_IPHONE)) 01174 #define USERSPACE_DNS_CACHE_SUPPORTED; 01175 #endif 01176 01177 #if defined (PLATFORM_ANDROID) 01178 #define PCAP_VA_SUPPORTED 01179 #endif 01180 01181 /* 01182 * Platforms that support Unix Domain Socket. 01183 */ 01184 #if defined(PLATFORM_ANDROID) || defined(PLATFORM_APPLE_SSLVPN) 01185 #define UNIX_DOMAIN_SOCKET_SUPPORTED 01186 #endif 01187 01188 /* END OF MACRO HELL */ 01189 #endif /*__GENDEFS_H*/