![]() |
AnyConnect Secure Mobility Client 4.8.02045
|
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 ( 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 ((defined(_WIN32) && !defined(_WIN32_WCE) && !defined(PLATFORM_WIN_APP)) || defined(PLATFORM_DARWIN) || defined(PLATFORM_LINUX)) && !defined(ANYCONNECT_USE_SNAK) && !defined(PRODUCT_TYPE_SSA) 00462 /* 00463 ** the FIREWALL_SUPPORTED define is used to track the platforms 00464 ** where the firewall feature is supported. This is to avoid repeating the 00465 ** platforms in #ifdef clauses in other files. 00466 ** Also, when Firewall feature expands to other platforms, they only need to be added in 00467 ** one place. 00468 */ 00469 #define FIREWALL_SUPPORTED 00470 #endif 00471 00472 #if !defined(PRODUCT_TYPE_SSA) && ((defined(_WIN32) && !defined(_WIN32_WCE) && !defined(PLATFORM_WIN_APP)) || defined(PLATFORM_DARWIN) || (defined(PLATFORM_LINUX) && !defined(PLATFORM_CHROMEBOOK))) 00473 /* 00474 ** the TRUSTED_NETWORK_DETECTION define is used to track the platforms 00475 ** where Trusted Network Detection is performed. This is to avoid repeating the 00476 ** platforms in #ifdef clauses in other files. 00477 ** Also, when TND support expands to other platforms, they only need to be added in 00478 ** one place. 00479 */ 00480 #define TRUSTED_NETWORK_DETECTION 00481 00482 /* 00483 * Android only uses TND to report state to NVM. 00484 * Policy-based actions are not supported. 00485 */ 00486 #if !defined(PLATFORM_ANDROID) 00487 #define TND_ACTIONS_SUPPORTED 00488 #endif 00489 #endif 00490 00491 #if (defined(_WIN32) || defined(PLATFORM_DARWIN) || defined(PLATFORM_ANDROID) || defined(PLATFORM_LINUX) && !defined(ANYCONNECT_USE_SNAK) && !defined(PLATFORM_WIN_APP)) 00492 #define INTER_MODULE_STATE_NOTIFY 00493 #endif 00494 00495 #if ((defined(_WIN32) && !defined(_WIN32_WCE)) || defined(PLATFORM_DARWIN) || defined(TRUSTED_NETWORK_DETECTION)) && !defined(PRODUCT_TYPE_SSA) && !defined(PLATFORM_ANDROID) 00496 /* 00497 ** the LOGIN_UTILITIES_SUPPORTED define is used to track the platforms 00498 ** that support AnyConnect action triggered by user login. This is to avoid 00499 ** repeating the platforms in #ifdef clauses in other files. 00500 ** Also, when login support expands to other platforms, they only need to be added in 00501 ** one place. 00502 */ 00503 #define LOGIN_UTILITIES_SUPPORTED 00504 #endif 00505 00506 #if (defined(_WIN32) || defined(PLATFORM_DARWIN)) && !defined(PLATFORM_WIN_APP) 00507 /* 00508 ** The DNS_PLUGIN_SUPPORTED define is used to track the platforms where the DNS KDF plugin is 00509 ** available. This is to avoid repeating the platforms in #ifdef clauses in other files. 00510 ** Also, when support expands to other platforms, they only need to be added in one place. 00511 */ 00512 #define DNS_PLUGIN_SUPPORTED 00513 #if defined(_WIN32) 00514 /* 00515 ** The DNS_PLUGIN_DNS_REQ_HANDLING_SUPPORTED define is used to track the platforms where the DNS KDF plugin is 00516 ** available and supports handling of DNS requests during the VPN tunnel (e.g. for split-DNS or tunnel-all-DNS enforcement). 00517 **/ 00518 #define DNS_PLUGIN_DNS_REQ_HANDLING_SUPPORTED 00519 #endif // _WIN32 00520 #endif // (_WIN32 || PLATFORM_DARWIN) && !PLATFORM_WIN_APP && !PRODUCT_TYPE_SSA 00521 00522 #if defined(DNS_PLUGIN_SUPPORTED) 00523 /* 00524 ** The DYNAMIC_SPLIT_TUNNELING_SUPPORTED define is used to track the platforms where dynamic split tunneling is supported. 00525 **/ 00526 #define DYNAMIC_SPLIT_TUNNELING_SUPPORTED 00527 #endif // DNS_PLUGIN_SUPPORTED 00528 00529 #if !(defined(PLATFORM_APPLE_SSLVPN) && TARGET_CPU_ARMV6) 00530 /* 00531 ** A bug was discovered in iPhone testing wherein virtual inline functions do 00532 ** not work correctly on ARMv6 processors. To work around this, virtual inline 00533 ** function need to be made standard virtual functions on ARMv6. To prevent 00534 ** differences in runtime behavior, the VIRTUAL_INLINES_SUPPORTED define is used 00535 ** to define some virtual inlines in the header files, letting the functions be 00536 ** defined without the inline type in the cpp file for non-supported platforms. 00537 */ 00538 #define VIRTUAL_INLINES_SUPPORTED 00539 #endif 00540 00541 /* 00542 * When changing the SCRIPTING_SUPPORTED definition, you MUST also update the 00543 * ClientIfcBase.h! We duplicate this definition there due to the manner in 00544 * which we distribute our code to partners; we cannot include this header from 00545 * ClientIfcBase.h. 00546 */ 00547 #if !defined(PLATFORM_APPLE_SSLVPN) && !defined(PLATFORM_ANDROID) && !defined(PLATFORM_WIN_APP) 00548 /* 00549 ** the SCRIPTING_SUPPORTED define is used to enable the script manager for launching 00550 ** customer provided scripts on events like connection establishment, completion of 00551 ** disconnect, and captive portal detection. 00552 */ 00553 #define SCRIPTING_SUPPORTED 00554 #endif 00555 00556 #if defined(PLATFORM_ANDROID) 00557 #define DYNAMIC_CHANGE_FIPS 00558 #endif // PLATFORM_ANDROID 00559 00560 #if !defined(PRODUCT_TYPE_SSA) && ((defined(_WIN32) && !defined(_WIN32_WCE) && !defined(PLATFORM_WIN_APP)) || defined(PLATFORM_DARWIN) || (defined(PLATFORM_LINUX) && !defined(ANYCONNECT_USE_SNAK))) 00561 /* 00562 ** the NETWORK_ENVIRONMENT_STATE define is used to track the platforms 00563 ** where NETWORK_ENVIRONMENT_STATE check is performed. This is to avoid repeating the 00564 ** platforms in #ifdef clauses in other files. 00565 ** Also, when NES support expands to other platforms, they only need to be added in 00566 ** one place. 00567 */ 00568 #define NETWORK_ENVIRONMENT_STATE 00569 #endif 00570 00571 00572 #if (defined(_WIN32) && !defined(_WIN32_WCE) && !defined(PLATFORM_WIN_APP)) || defined(PLATFORM_DARWIN) || (defined(PLATFORM_LINUX) && !defined(ANYCONNECT_USE_SNAK)) 00573 /* 00574 ** The AUTOMATIC_HEADEND_SELECTION define is used to track the platforms 00575 ** where Automatic Headend Selection is performed. This is to avoid repeating the 00576 ** platforms in #ifdef clauses in other files. 00577 ** Also, when AHS support expands to other platforms, they only need to be added in 00578 ** one place. 00579 */ 00580 #define AUTOMATIC_HEADEND_SELECTION 00581 #endif 00582 00583 #if (defined(_WIN32) && !defined(_WIN32_WCE) && !defined(PLATFORM_WIN_APP)) || defined(PLATFORM_DARWIN) 00584 /* 00585 ** the MUS_HOST_SERVICES define is used to track the platforms 00586 ** where MUS Host Status check is performed. This is to avoid repeating the 00587 ** platforms in #ifdef clauses in other files. 00588 */ 00589 #define MUS_HOST_SERVICES 00590 #endif 00591 00592 // BUGBUG - initially only enable code signing for Windows 00593 #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)) 00594 /* 00595 ** the CODE_SIGNING_SUPPORTED define is used to track the platforms 00596 ** where code sign verification is support. This is to avoid repeating the 00597 ** platforms in #ifdef clauses in other files. 00598 ** 00599 */ 00600 #define CODE_SIGNING_SUPPORTED 00601 #endif 00602 00603 #if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(PLATFORM_WIN_APP) 00604 #define RSA_SECURID_SUPPORTED 00605 #endif 00606 00607 #if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(PLATFORM_WIN_APP) 00608 #define SAFEWORD_SOFTOKEN_SUPPORTED 00609 #endif 00610 00611 #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) ) 00612 /* 00613 ** the IPSEC_SUPPORTED define is used to track the platforms 00614 ** where the IPSec protocol is supported. This is to avoid repeating the 00615 ** platforms in #ifdef clauses in other files. 00616 */ 00617 #define IPSEC_SUPPORTED 00618 #endif 00619 00620 #if (defined(_WIN32) && !defined(_WIN32_WCE)) || defined(PLATFORM_DARWIN) || (defined(PLATFORM_LINUX) && !defined(PLATFORM_CHROMEBOOK)) || defined(PLATFORM_APPLE_SSLVPN) || defined (PLATFORM_ANDROID) 00621 /* 00622 ** The IPV6_SUPPORTED define is used to track the platforms 00623 ** where full IPv6 capability is supported. This is to avoid repeating the 00624 ** platforms in #ifdef clauses in other files. 00625 ** Note that this is further narrowed down by method CIPv6Util::IsIPv6FullCapabilitySupported. 00626 */ 00627 #define IPV6_SUPPORTED 00628 #endif 00629 00630 #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) ) 00631 /* 00632 ** the PLUGIN_PROTOCOL_SUPPORTED define is used to track the platforms 00633 ** where modular protocol Plugins are supported. This is to avoid repeating the 00634 ** platforms in #ifdef clauses in other files. 00635 */ 00636 #define PLUGIN_PROTOCOL_SUPPORTED 00637 #endif 00638 00639 #if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(PLATFORM_WIN_APP) && !defined(PRODUCT_TYPE_SSA) 00640 /* 00641 ** The IPSEC_OVER_SSL define is used to track the platforms 00642 ** where the feature "IPsec tunneling over SSL for Oracle" (EDCS-852737) is supported. 00643 ** This is to avoid repeating the platforms in #ifdef clauses in other files. 00644 ** Also, when the support expands to other platforms, they only need to be added in 00645 ** one place. 00646 */ 00647 #define IPSEC_OVER_SSL 00648 #endif 00649 00650 #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) 00651 /* 00652 ** the DATA_OBFUSCATING_SUPPORTED define is used to track the platforms 00653 ** where data obfuscation using key exchanges are supported. This is to 00654 ** avoid repeating the platforms in #ifdef clauses in other files. 00655 */ 00656 #define DATA_OBFUSCATING_SUPPORTED 00657 #endif 00658 00659 #if !defined(PLATFORM_APPLE_SSLVPN) && !defined(_WIN32_WCE) && !defined(PLATFORM_WIN_APP) && !defined(PRODUCT_TYPE_SSA) && !defined(PLATFORM_ANDROID) && !defined(PLATFORM_CHROMEBOOK) 00660 /* 00661 ** the HOSTFILE_MODIFICATION_SUPPORTED define is used to track the platforms 00662 ** where hosts file modification is performed. This is to avoid repeating the 00663 ** platforms in #ifdef clauses in other files. 00664 */ 00665 #define HOSTSFILE_MODIFICATION_SUPPORTED 00666 #endif 00667 00668 #if defined(_WIN32) || defined(_WIN32_WCE) || defined(PLATFORM_DARWIN) || defined(PLATFORM_LINUX) || defined(PLATFORM_ANDROID) || defined(PLATFORM_APPLE_SSLVPN)|| defined(PLATFORM_WIN_APP) 00669 /* 00670 ** the SCEP_CERTIFICATE_ENROLLMENT_SUPPORTED define is used to track the platforms 00671 ** where SCEP enrollment can be performed. This is to avoid repeating the 00672 ** platforms in #ifdef clauses in other files. 00673 */ 00674 #define SCEP_CERTIFICATE_ENROLLMENT_SUPPORTED 00675 #endif 00676 00677 #if (defined(_WIN32) && !defined(_WIN32_WCE)) 00678 /* 00679 ** these XXX_PROFILE_SUPPORTED defines are used to track the platforms where 00680 ** Service Profiles for optional modules are supported. 00681 ** All platforms: VPN 00682 ** Windows: NAM, Web Security, ISE Posture, FireAMP, NVM and OpenDNS 00683 */ 00684 #define NAM_PROFILE_SUPPORTED 00685 #define WEBSEC_PROFILE_SUPPORTED 00686 #define ISEPOSTURE_PROFILE_SUPPORTED 00687 #define FIREAMP_PROFILE_SUPPORTED 00688 #define NVM_PROFILE_SUPPORTED 00689 #define OPENDNS_PROFILE_SUPPORTED 00690 #elif defined(PLATFORM_DARWIN) 00691 /* 00692 ** OS X: Web Security, ISE Posture, FireAMP, NVM and OpenDNS 00693 */ 00694 #define WEBSEC_PROFILE_SUPPORTED 00695 #define ISEPOSTURE_PROFILE_SUPPORTED 00696 #define FIREAMP_PROFILE_SUPPORTED 00697 #define NVM_PROFILE_SUPPORTED 00698 #define OPENDNS_PROFILE_SUPPORTED 00699 #elif defined(PLATFORM_LINUX) 00700 #define NVM_PROFILE_SUPPORTED 00701 #endif 00702 00703 #if defined(_WIN32) || defined(PLATFORM_DARWIN) 00704 /* 00705 ** the CLOUD_UPDATE_SUPPORTED define is used to track the platforms 00706 ** that support cloud updates (currently from OpenDNS). This is to avoid repeating the 00707 ** platforms in #ifdef clauses in other files. 00708 */ 00709 #define CLOUD_UPDATE_SUPPORTED 00710 #endif 00711 00712 /* 00713 ** The PLATFORM_DESKTOP define is used to track AnyConnect desktop platforms. 00714 */ 00715 #if (defined(_WIN32) || defined(PLATFORM_DARWIN) || (defined(PLATFORM_LINUX) && !defined(ANYCONNECT_USE_SNAK) && !defined (PLATFORM_ANDROID) && !defined(PLATFORM_CHROMEBOOK))) \ 00716 && !defined(PRODUCT_TYPE_SSA) && !defined(PLATFORM_WIN_APP) 00717 #define PLATFORM_DESKTOP 00718 #endif 00719 00720 #if defined(PLATFORM_DESKTOP) 00721 /* 00722 ** The exportStats call is only supported on the Desktop Platforms, 00723 ** it should not be included or supported if it is not a Desktop Plat 00724 */ 00725 #define EXPORT_STATS_SUPPORTED 00726 #endif 00727 00728 #if defined(_WIN32) || defined(PLATFORM_DARWIN) || defined(PLATFORM_LINUX) || defined(PLATFORM_APPLE_SSLVPN) 00729 #define AC_CERTIFICATE_POLICY_SUPPORTED 00730 #endif 00731 00732 #ifndef _TRSTRING 00733 #define _tr(String) String 00734 #define _TRSTRING 00735 #endif 00736 00737 #ifndef _C_MYASSERT 00738 #define C_MYASSERT(e) typedef char __C_MYASSERT__[(e)?1:-1] 00739 #define _C_MYASSERT 00740 #endif 00741 00742 #if defined(PLATFORM_APPLE_SSLVPN) || defined(APPLE_IOS) 00743 #define NETWORK_ORDER_LOOPBACK_INTF_ADDR htonl(0x7f000001) // 127.0.0.1 00744 #endif 00745 00746 #if !defined(BITS_PER_BYTE) 00747 #define BITS_PER_BYTE 8 00748 #endif 00749 00750 #if defined(PLATFORM_DESKTOP) && defined(PLATFORM_LINUX) 00751 #define STATIC_THREAD_LOCAL static __thread 00752 #else 00753 #define STATIC_THREAD_LOCAL thread_local 00754 #endif 00755 00756 #if defined(PLATFORM_APPLE_SSLVPN) || defined(PLATFORM_ANDROID) || defined(PLATFORM_CHROMEBOOK)|| defined(PRODUCT_TYPE_SSA) || defined(PLATFORM_WIN_APP) 00757 /* 00758 ** the MANUAL_PKCS12_IMPORT_SUPPORTED define is used to track the platforms 00759 ** where the manual import of PKCS12 certificates is supported. This is to avoid repeating the 00760 ** platforms in #ifdef clauses in other files. 00761 */ 00762 #define MANUAL_PKCS12_IMPORT_SUPPORTED 00763 #endif 00764 00765 #if defined(PLATFORM_ANDROID) || defined(PLATFORM_APPLE_SSLVPN) || defined(PLATFORM_CHROMEBOOK) 00766 // Zlib is statically linked. 00767 #define STATIC_ZLIB 00768 #endif 00769 00770 #if (defined(PLATFORM_LINUX) && !defined(PLATFORM_ANDROID)) || defined(PLATFORM_DARWIN) 00771 // Use zlib dynamic library on the system. 00772 #define USE_SYSTEM_ZLIB 00773 #endif 00774 00775 00776 /* 00777 * Platforms that support a single profile. 00778 */ 00779 #if defined(PLATFORM_APPLE_SSLVPN) || defined(PLATFORM_ANDROID) || defined(PLATFORM_CHROMEBOOK) 00780 #define USE_SINGLE_PROFILE 00781 #endif 00782 00783 00784 /* 00785 * Platforms that support ACIDEX. 00786 */ 00787 #if defined(PLATFORM_ANDROID) || defined(PLATFORM_APPLE_SSLVPN) || defined(_WIN32) || defined(PLATFORM_DARWIN) || defined(PLATFORM_LINUX) || defined(PLATFORM_CHROMEBOOK) 00788 #define ACIDEX_SUPPORTED 00789 #endif 00790 00791 /* 00792 * Platforms that support PerApp. 00793 */ 00794 #if defined(PLATFORM_ANDROID) || defined(PLATFORM_APPLE_SSLVPN) 00795 #define PERAPP_SUPPORTED 00796 #endif 00797 00798 00799 /* 00800 * Platforms that support HOSTDATA. 00801 */ 00802 #if defined(PLATFORM_ANDROID) || defined(PLATFORM_APPLE_SSLVPN) || defined(PLATFORM_CHROMEBOOK) 00803 #define HOST_DATA_SUPPORTED 00804 #endif 00805 00806 00807 /* 00808 * Platforms that support scripting. 00809 * 00810 * When changing the SCRIPTING_SUPPORTED definition, you MUST also update the 00811 * ClientIfcBase.h! We duplicate this definition there due to the manner in 00812 * which we distribute our code to partners; we cannot include this header from 00813 * ClientIfcBase.h. 00814 00815 */ 00816 #if !defined(PLATFORM_APPLE_SSLVPN) && !defined(PLATFORM_ANDROID) && !defined(PLATFORM_WIN_APP) 00817 #define SCRIPTING_SUPPORTED 00818 #endif 00819 00820 #if defined(PLATFORM_ANDROID) 00821 // On Android, modifying the default route may break system network services. 00822 #define DONT_TOUCH_IPV4_DEFAULT_ROUTE 00823 #endif 00824 00825 #if defined(PLATFORM_APPLE_SSLVPN) || defined(PLATFORM_ANDROID) || defined(PLATFORM_CHROMEBOOK) 00826 #define SNAK_NO_ROUTE_TABLE_ACCESS 00827 #endif 00828 00829 #if defined(ANYCONNECT_USE_SNAK) || defined(PLATFORM_APPLE_SSLVPN) 00830 #define GLOBAL_SNAK_PLUGIN_VER 2 00831 #endif 00832 00833 #if defined(PLATFORM_ANDROID) 00834 #define MEMORY_LOGGING_SUPPORTED 00835 #endif 00836 00837 00838 00839 #if defined(PLATFORM_ANDROID) 00840 // Supports API for integrating program data (e.g. localization and profile). 00841 #define PROGRAM_DATA_IMPORT_SUPPORTED 00842 #endif 00843 00844 #if defined(PLATFORM_ANDROID) 00845 // Credentials for a connection can be prefilled via uri handling or API calls 00846 // if you add a new platform, you need to add it in ClientIfcBase.h and ConnectPromptInfoBase.h 00847 #define CREDENTIAL_PREFILL_SUPPORTED 00848 #endif 00849 00850 #if !(defined(_WIN32_WCE) || defined(PLATFORM_APPLE_SSLVPN) || defined(PLATFORM_ANDROID) || defined(PLATFORM_CHROMEBOOK)) 00851 // support for automatic reconnects 00852 #define AUTORECONNECT_SUPPORTED 00853 #endif 00854 00855 #if !defined(_WIN32_WCE) && !defined(PLATFORM_LINUX_EMBEDDED_PPC) && !defined(PLATFORM_WEBOS_ARM) && !defined(PLATFORM_WEBOS_X86) && !defined(APPLE_IOS) && !defined(PLATFORM_WIN_APP) 00856 #define FIPS_SUPPORTED 00857 #endif 00858 00859 #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) 00860 #define LEAF_SUPPORTED 00861 #endif 00862 00863 #if defined(PLATFORM_DESKTOP) && (defined(_WIN32) || defined(PLATFORM_LINUX)) 00864 /* 00865 ** This define is used to track platforms where user logon 00866 ** related preferences in client profile are supported. 00867 */ 00868 #define ENFORCE_USER_LOGON_SETTINGS 00869 #endif 00870 00871 #if !defined(PLATFORM_ANDROID) && !defined(PLATFORM_CHROMEBOOK) // More platforms need to be added 00872 #define WIDE_CHAR_SUPPORTED 00873 #endif 00874 00875 #if defined(_WIN32) && !defined(PRODUCT_TYPE_SSA) && !defined(PLATFORM_WIN_APP) 00876 #define TUNNEL_PROXY_SETTINGS_SUPPORTED 00877 #endif 00878 00879 /* 00880 ** Public Proxy support is only implemented on Windows, Linux and Mac desktop platforms 00881 */ 00882 #if defined(PLATFORM_DESKTOP) 00883 #define PUBLIC_PROXY_SUPPORTED 00884 #endif 00885 00886 /* 00887 ** NTLM support is only implemented on Windows desktop platforms 00888 */ 00889 #if defined(_WIN32) && defined(PUBLIC_PROXY_SUPPORTED) 00890 #define PROXYAUTH_NTLM_SUPPORTED 00891 #endif 00892 00893 #if defined(PLATFORM_ANDROID) || defined(PRODUCT_TYPE_SSA) || defined(PLATFORM_APPLE_SSLVPN) 00894 #define IMPORT_API_SUPPORTED 00895 #endif 00896 00897 #if defined(PLATFORM_APPLE_SSLVPN) || (defined(PRODUCT_TYPE_SSA) && !(defined(PLATFORM_ANDROID) || defined(APPLE_IOS))) || defined(PLATFORM_CHROMEBOOK) 00898 /* 00899 ** This serves to tell the IPsec plugin interface to explicitly 00900 ** exclude it's global namespace entry points, leaving the only 00901 ** plugin interface as a set of static class methods, which the 00902 ** loading code will look for directly. 00903 */ 00904 #define IPSEC_AS_INTERNAL_MODULE 00905 #endif 00906 00907 #if defined(PLATFORM_ANDROID) // More platforms need to be added 00908 #define dynamic_cast reinterpret_cast 00909 #endif 00910 00911 #if defined(PRODUCT_TYPE_SSA) && defined(APPLE_IOS) && !defined(PLATFORM_APPLE_SSLVPN) 00912 #define CONFIGURE_REMOTE_WAKEUP_SUPPORTED 00913 #endif 00914 00915 /* 00916 ** The SMARTCARD_SUPPORTED define is used to track the platforms where smartcard 00917 ** certificate authentication is supported. This is to avoid repeating the 00918 ** platforms in #ifdef clauses in other files. 00919 */ 00920 #if (defined(_WIN32) && !defined(PLATFORM_WIN_APP)) || defined(PLATFORM_DARWIN) 00921 #define SMARTCARD_SUPPORTED 00922 /* 00923 ** The SMARTCARD_REMOVAL_SUPPORTED define is used to track the platforms where smartcard 00924 ** removal monitoring is supported. This is to avoid repeating the 00925 ** platforms in #ifdef clauses in other files. 00926 */ 00927 #if defined(_WIN32) 00928 #define SMARTCARD_REMOVAL_SUPPORTED 00929 #endif 00930 #endif // (_WIN32 && !PLATFORM_WIN_APP) || PLATFORM_DARWIN 00931 00932 #if (defined(PLATFORM_LINUX) || defined(PLATFORM_DARWIN)) && !defined(ANYCONNECT_USE_SNAK) && !defined(PRODUCT_TYPE_SSA) 00933 /* 00934 ** The CIRCUMVENT_HOST_FILTERING_SUPPORTED define is used to track the platforms 00935 ** where AnyConnect can control whether or not pre-existing host filtering is 00936 ** circumvented upon applying AnyConnect filtering (only applicable to split-tunneling). 00937 */ 00938 #define CIRCUMVENT_HOST_FILTERING_SUPPORTED 00939 #endif 00940 00941 #if defined(_WIN32) && !defined(ANYCONNECT_USE_SNAK) && !defined(PRODUCT_TYPE_SSA) 00942 /* 00943 ** The SKIP_DHCP_SERVER_ROUTE_SUPPORTED define is used to track the platforms 00944 ** where the admin can control whether or not the public DHCP server route is created 00945 ** upon establishing the VPN tunnel. 00946 */ 00947 #define SKIP_DHCP_SERVER_ROUTE_SUPPORTED 00948 #endif 00949 00950 #if defined(PLUGIN_PROTOCOL_SUPPORTED) && !defined(PRODUCT_TYPE_SSA) 00951 #if (defined(_WIN32) && !defined(_WIN32_WCE)) 00952 // support Service Control Plugins if defined 00953 #define SERVICE_PLUGIN 00954 // support PhoneHome Plugin if defined 00955 #define PHONEHOME_PLUGIN 00956 #elif defined(PLATFORM_DARWIN) 00957 // support Service Control Plugins if defined 00958 #define SERVICE_PLUGIN 00959 // support PhoneHome Plugin if defined 00960 #define PHONEHOME_PLUGIN 00961 #elif defined(PLATFORM_LINUX) && !defined(PLATFORM_ANDROID) && !defined(PLATFORM_CHROMEBOOK) 00962 #define PHONEHOME_PLUGIN 00963 #define SERVICE_PLUGIN 00964 #endif 00965 #endif 00966 00967 #if (defined (PLATFORM_DARWIN) || defined (PLATFORM_ANDROID) || defined(PLATFORM_APPLE_SSLVPN) || defined(PLATFORM_CHROMEBOOK) || (defined (PLATFORM_LINUX) && !defined (ANYCONNECT_USE_SNAK))) 00968 #define FILE_STORE_SUPPORTED 00969 #endif 00970 00971 #if !defined(PLATFORM_WIN_APP) 00972 /* 00973 ** the INTERPROCESS_COMMUNICATION_SUPPORTED define is used to track the platforms where the 00974 ** communication between processes is supported. This is to avoid repeating the 00975 ** platforms in #ifdef clauses in other files. 00976 */ 00977 #define INTERPROCESS_COMMUNICATION_SUPPORTED 00978 #endif 00979 #if !defined(PLATFORM_WIN_APP) 00980 /* 00981 ** the THREADS_SUPPORTED define is used to track the platforms where 00982 ** threads are supported. This is to avoid repeating the 00983 ** platforms in #ifdef clauses in other files. 00984 */ 00985 #define THREADS_SUPPORTED 00986 #endif 00987 00988 #if !defined(PLATFORM_WIN_APP) 00989 /* 00990 ** the CAPTIVE_PORTAL_DETECTION_SUPPORTED define is used to track the platforms where 00991 ** captive portal detection is supported. This is to avoid repeating the 00992 ** platforms in #ifdef clauses in other files. 00993 */ 00994 #define CAPTIVE_PORTAL_DETECTION_SUPPORTED 00995 #endif 00996 00997 #if defined(_WIN32) && defined(CAPTIVE_PORTAL_DETECTION_SUPPORTED) && defined(PLATFORM_DESKTOP) 00998 /* 00999 ** the SECURE_CAPTIVE_PORTAL_REMEDIATION_SUPPORTED define is used to track the platforms where 01000 ** secure captive portal remediation is supported. 01001 */ 01002 #define SECURE_CAPTIVE_PORTAL_REMEDIATION_SUPPORTED 01003 #endif 01004 01005 #if !defined(PLATFORM_WIN_APP) 01006 /* 01007 ** the EVENTS_SUPPORTED define is used to track the platforms where 01008 ** events are supported. This is to avoid repeating the 01009 ** platforms in #ifdef clauses in other files. 01010 */ 01011 #define EVENTS_SUPPORTED 01012 #endif 01013 01014 #if defined(IPV6_SUPPORTED) && !defined(PLATFORM_WIN_APP) && !defined(PLATFORM_ANDROID) && !defined(PLATFORM_CHROMEBOOK) && !defined(PLATFORM_APPLE_SSLVPN) 01015 /* 01016 ** the MODIFY_HOSTSFILE_SUPPORTED define is used to track the platforms where 01017 ** modification of the system's hosts file is supported. This is to avoid repeating the 01018 ** platforms in #ifdef clauses in other files. 01019 */ 01020 #define MODIFY_HOSTSFILE_SUPPORTED 01021 #endif 01022 01023 #if !defined(PLATFORM_WIN_APP) 01024 /* 01025 ** the HOST_CONFIG_MANAGER_SUPPORTED define is used to track the platforms where 01026 ** broad control of the host OS is supported. This is to avoid repeating the 01027 ** platforms in #ifdef clauses in other files. 01028 */ 01029 #define HOST_CONFIG_MANAGER_SUPPORTED 01030 #endif 01031 01032 #if defined(PRODUCT_TYPE_SSA) || defined(PLATFORM_WIN_APP) || defined(PLATFORM_ANDROID) || defined(PLATFORM_CHROMEBOOK) || defined(PLATFORM_APPLE_SSLVPN) 01033 /* 01034 ** the FILE_SYNCHRONIZER_SUPPORTED define is used to track the platforms where 01035 ** files downloaded directly by VPN API are supported. This is to avoid repeating the 01036 ** platforms in #ifdef clauses in other files. 01037 */ 01038 #define FILE_SYNCHRONIZER_SUPPORTED 01039 #endif 01040 01041 #if defined(_WIN32) || defined(PLATFORM_DARWIN) || (defined(PLATFORM_LINUX) && !defined(PLATFORM_ANDROID) && !defined(PLATFORM_CHROMEBOOK)) 01042 /* 01043 ** the SAVE_VPNCONFIG_TO_FILE_SUPPORTED define is used to track the platforms where the 01044 ** writting of the VPN config to file is supported. This is to avoid repeating the 01045 ** platforms in #ifdef clauses in other files. 01046 */ 01047 #define SAVE_VPNCONFIG_TO_FILE_SUPPORTED 01048 #endif 01049 01050 /* 01051 * DSCP preservation is not considered for Downloader. Downloader uses socket transport for IPC. 01052 */ 01053 #if (defined(PLATFORM_ANDROID) || defined(PLATFORM_DARWIN) || defined(_WIN32)) && !defined(_DOWNLOADER) && !defined(PRODUCT_TYPE_SSA) && !defined(PLATFORM_WIN_APP) 01054 // Used to enable preservation of Differentiated Services field in the IP packet header. 01055 #define DIFFSERV_PRESERVATION_SUPPORTED 01056 #endif 01057 01058 #if !defined(PRODUCT_TYPE_SSA) && !defined(PLATFORM_WIN_APP) 01059 /* 01060 ** the ROUTE_MANAGER_SUPPORTED define is used to track the platforms 01061 ** where RouteMgr is supported. This is to avoid repeating the 01062 ** platforms in #ifdef clauses in other files. 01063 */ 01064 #define ROUTE_MANAGER_SUPPORTED 01065 #endif 01066 01067 #if !defined(PRODUCT_TYPE_SSA) && !defined(PLATFORM_WIN_APP) 01068 /* 01069 ** the FILTER_MANAGER_SUPPORTED define is used to track the platforms 01070 ** where FilterMgr is supported. This is to avoid repeating the 01071 ** platforms in #ifdef clauses in other files. 01072 */ 01073 #define FILTER_MANAGER_SUPPORTED 01074 #endif 01075 01076 #if defined(PLATFORM_APPLE_SSLVPN) 01077 // Used to enable the file logging for Apple plugins. 01078 //#define FILE_LOGGING_SUPPORTED 01079 #endif 01080 01081 /* 01082 ** Legacy Single sign on authentication. 01083 ** Explicitly disabled on mobile platforms due to session fixation vulnerability, as described in CSCvg65072 01084 ** To be removed from desktop platforms in some future AnyConnect release (4.7?) 01085 */ 01086 #if defined(PLATFORM_DESKTOP) 01087 #define SSO_V1_SUPPORTED 01088 #endif 01089 01090 /* 01091 ** Single sign on authentication (requires embedded browser). 01092 */ 01093 #if !defined(PLATFORM_WIN_APP) 01094 #define SSO_SUPPORTED 01095 #endif 01096 01097 #if !defined(PLATFORM_WIN_APP) 01098 #define MCA_SUPPORTED 01099 #endif 01100 01101 #if !defined(PLATFORM_WIN_APP) 01102 #define TIMERS_SUPPORTED 01103 #endif 01104 01105 #if !defined(PLATFORM_CHROMEBOOK) 01106 #define LOAD_EXTERNAL_MODULES 01107 #endif 01108 01109 #if defined(PLATFORM_ANDROID) 01110 #define SPLIT_DNS_PROXY_SUPPORTED 01111 #endif 01112 01113 #if (defined(_WIN32) || defined(PLATFORM_DARWIN)) && defined(PLATFORM_DESKTOP) 01114 /* 01115 ** The MGMT_TUNNEL_SUPPORTED define is used to track the platforms where 01116 ** the management tunnel feature is supported. 01117 */ 01118 #define MGMT_TUNNEL_SUPPORTED 01119 #endif 01120 01121 #if (defined(_WIN32) && defined(PLATFORM_DESKTOP)) || defined(MGMT_TUNNEL_SUPPORTED) 01122 // Machine certificate authentication SSL tunnel connections via agent are supported 01123 // on Windows desktop, and also on all platforms supporting the management tunnel feature. 01124 // 01125 #define SSL_CONNECT_VIA_AGENT_SUPPORTED 01126 #endif 01127 01128 /* 01129 ** Performance optimization for the tunnel packet processing loop to attempt to process 01130 ** multiple packets before calling back into select(). 01131 */ 01132 #if !defined(_WIN32) 01133 #define MULTI_TUN_PACKET_PROCESSING_SUPPORTED 01134 #endif 01135 01136 #if (defined(_WIN32) && defined(_M_ARM64)) || defined(X86_FOR_ARM64) 01137 /* 01138 ** Disable Hostscan on Windows ARM64 builds (both native ARM64 and the hybrid _WIN32_FOR_ARM64). 01139 */ 01140 #define ANYCONNECT_NO_CSD 01141 #endif 01142 01143 #if defined(_WIN32) && defined(PLATFORM_DESKTOP) && !defined(_M_ARM64) && !defined(X86_FOR_ARM64) 01144 /* 01145 ** Connected Standby is supported in Windows desktop but not UWP and not ARM64 (both native ARM64 and the hybrid _WIN32_FOR_ARM64). 01146 */ 01147 #define CONNECTED_STANDBY_SUPPORTED 01148 #endif 01149 01150 01151 #if defined(_WIN32) && defined(PLATFORM_DESKTOP) || defined(PLATFORM_APPLE_SSLVPN) 01152 /* 01153 ** This define is used to track platforms where multi-line logs are readable, and hence supported. 01154 */ 01155 #define MULTI_LINE_LOGS_SUPPORTED 01156 #endif 01157 01158 #if defined (PLATFORM_ANDROID) 01159 #define PCAP_VA_SUPPORTED 01160 #endif 01161 01162 /* END OF MACRO HELL */ 01163 #endif /*__GENDEFS_H*/