AnyConnect Secure Mobility Client
4.8.02045
GenDefs.h
1
/**************************************************************************
2
* Copyright (c) 2000, Cisco Systems, All Rights Reserved
3
***************************************************************************
4
*
5
* File: GenDefs.h
6
* Date: 8/23/00
7
*
8
***************************************************************************
9
* NOTE* This file is for PORTABILITY related defines ONLY.
10
***************************************************************************
11
* defines base types to be used by all CVC client components
12
***************************************************************************/
13
#ifndef __GENDEFS_H
14
#define __GENDEFS_H
15
16
#ifndef _WIN32
17
18
#ifndef USES_CONVERSION
19
#define USES_CONVERSION
20
#endif
21
22
#define PRELIM_UNIX_PORT
23
24
#ifdef HAVE_CONFIG_H
25
#include "config.h"
26
#endif
27
28
#ifdef HAVE_STDINT_H
29
#ifndef CNI_LINUX_INTERFACE
30
#include <stdint.h>
31
#endif
32
#elif HAVE_INTTYPES_H
33
#include <inttypes.h>
34
#endif
35
36
#ifdef HAVE_SYS_TYPES_H
37
#ifndef CNI_LINUX_INTERFACE
38
#include <sys/types.h>
39
#else
40
#include <linux/types.h>
41
#undef _UINTPTR_T_DEFINED
42
#undef _INTPTR_T_DEFINED
43
#endif
44
#endif
45
46
#undef FAR
47
#define FAR
48
#undef PASCAL
49
#define PASCAL
50
51
#else //_WIN32
52
#define HAVE_STDINT_H
53
#include <stdint.h>
54
#undef HAVE_CONFIG_H
55
#undef HAVE_SYS_TYPES_H
56
#define WORDS_BIGENDIAN 0
57
#if !defined(DWORD)
58
typedef
unsigned
long
DWORD;
59
#endif // !defined(DWORD)
60
61
#endif //_WIN32
62
63
64
#undef TRUE
65
#define TRUE 1
66
67
#undef FALSE
68
#define FALSE 0
69
70
#ifdef DDKBUILD //building with the DDK as the source.
71
#include <crtdefs.h>
72
#endif
73
74
#if !defined(PLATFORM_WIN_APP)
75
// it'd be nice if we could switch to the C99 standard types at some point...
76
#if defined(HAVE_STDINT_H) || defined(HAVE_INTTYPES_H)
77
typedef
uint8_t bool8;
78
typedef
uint16_t bool16;
79
typedef
uint32_t bool32;
80
81
typedef
int8_t int8;
82
typedef
int16_t int16;
83
84
#if (!defined(CNI_LINUX_INTERFACE) || !defined(CONFIG_ISDN_PPP) || !defined(CONFIG_ISDN_PPP_VJ) || !defined(_SLHC_H)) && !defined(PROTYPES_H)
85
typedef
int32_t int32;
86
#endif
87
88
typedef
uint8_t uint8;
89
typedef
uint16_t uint16;
90
91
#if !defined(CSSMAPI) && !defined(PROTYPES_H)
92
#ifdef _WIN32
93
typedef
unsigned
long
uint32;
94
#else
95
typedef
uint32_t uint32;
96
#endif
97
#endif
98
99
typedef
uint64_t uint64;
100
#else
101
102
typedef
unsigned
char
uint8;
103
typedef
unsigned
short
uint16;
104
#ifndef CSSMAPI
105
typedef
unsigned
long
uint32;
106
#endif
107
typedef
unsigned
char
uint8_t;
108
typedef
unsigned
short
uint16_t;
109
#if defined(_WIN32) && !defined (HS_TYPES_H_)
110
typedef
unsigned
long
uint32_t;
111
#endif
112
113
#ifdef _WIN32
114
typedef
__int64 int64;
115
typedef
unsigned
__int64 uint64;
116
typedef
__int64 int64_t;
117
typedef
unsigned
__int64 uint64_t;
118
#else
119
typedef
long
long
int64;
120
typedef
unsigned
long
long
int
uint64;
121
typedef
long
long
int64_t;
122
typedef
unsigned
long
long
int
uint64_t;
123
#endif
124
#endif
125
126
// Definitions for Windows not available in <stdint.h>
127
#ifdef _WIN32
128
typedef
unsigned
long
bool32_t;
129
typedef
unsigned
char
bool8_t;
130
#endif
131
132
// integer types for doing pointer arithmetic, they should be the
133
// same size as a pointer. Part of the C99 standard, but they aren't
134
// available everywhere yet.
135
// These defs should work with IA32 (x86), ILP32 (sparcv8) and LP64 (sparcv9).
136
// These types are protected with the WIN32 macros (_INTPTR_T_DEFINED), since
137
// some, but not all of the WIN32 SDK's define these types.
138
#ifdef _WIN32
139
#ifndef _INTPTR_T_DEFINED
140
#if defined(_LP64)
141
#warning 64 bit
142
typedef
int64 intptr_t;
143
#else
144
typedef
int32 intptr_t;
145
#endif
146
#define _INTPTR_T_DEFINED
147
#endif
148
149
#ifndef _UINTPTR_T_DEFINED
150
#if defined(_LP64)
151
#warning 64 bit
152
typedef
uint64 uintptr_t;
153
#else
154
typedef
uint32 uintptr_t;
155
#endif
156
#define _UINTPTR_T_DEFINED
157
#endif
158
#endif
159
160
#ifndef __OBJC__
/* Mac OS X defines this in ObjectiveC land... */
161
typedef
int
BOOL;
162
#endif
163
164
#ifndef _WIN32
165
typedef
int
BOOLEAN;
166
#endif
167
168
#ifdef _WIN32
169
typedef
int
mode_t;
170
#endif
171
172
typedef
unsigned
char
uchar;
173
#ifndef HAVE_SYS_TYPES_H
174
typedef
unsigned
int
uint;
175
typedef
unsigned
short
ushort;
176
typedef
unsigned
long
ulong;
177
#endif
178
179
#ifndef PLATFORM_ANDROID
180
typedef
ulong ULONG;
181
typedef
ulong* PULONG;
182
#endif
183
184
#if defined(PLATFORM_ANDROID)
185
typedef
unsigned
long
ulong;
186
typedef
unsigned
short
ushort;
187
#endif
188
189
typedef
uint32 DWORD;
190
typedef
uint32* PDWORD;
191
typedef
long
LONG;
192
typedef
long
* PLONG;
193
typedef
int
INT;
194
typedef
int
* PINT;
195
typedef
uint UINT;
196
typedef
uint* PUINT;
197
typedef
uint16 USHORT;
198
typedef
uint16* PUSHORT;
199
typedef
int16 SHORT;
200
typedef
int16* PSHORT;
201
typedef
uint16 WORD;
202
typedef
uint16* PWORD;
203
typedef
char
CHAR;
204
typedef
uchar UCHAR;
205
typedef
char
* PCHAR;
206
typedef
uint8 BYTE;
207
typedef
uint8* PBYTE;
208
#define VOID void
209
typedef
void
* PVOID;
210
#ifdef _WIN32
211
typedef
void
* HANDLE;
212
#else
213
typedef
int
HANDLE;
214
typedef
int
SOCKET;
215
typedef
const
char
* LPCTSTR;
216
typedef
const
char
* LPCSTR;
217
typedef
const
char
* PCTSTR;
218
typedef
char
* LPTSTR;
219
typedef
void
* LPVOID;
220
typedef
char
* LPSTR;
221
typedef
long
* LPLONG;
222
typedef
DWORD* LPDWORD;
223
typedef
signed
int
INT32;
224
225
226
typedef
struct
__WSABUF
227
{
228
unsigned
long
len;
229
char
*buf;
230
} WSABUF, *LPWSABUF;
231
232
typedef
struct
OVERLAPPED
233
{
234
void
*data;
235
int
fd;
236
} OVERLAPPED,*LPOVERLAPPED;
237
238
typedef
struct
sockaddr_in SOCKADDR_IN;
239
typedef
struct
sockaddr_in6 SOCKADDR_IN6;
240
241
#endif
//!_WIN32
242
243
typedef
HANDLE* PHANDLE;
244
typedef
uint8 KIRQL;
245
#else // PLATFORM_WIN_APP
246
typedef
unsigned
long
bool32;
247
typedef
unsigned
long
bool32_t;
248
typedef
unsigned
long
ulong;
249
typedef
unsigned
char
BYTE;
250
typedef
unsigned
long
uint32;
251
typedef
long
int32;
252
#endif // !defined(PLATFORM_WIN_APP)
253
254
typedef
long
STATUSCODE;
255
256
/* function parameter context */
257
#undef IN
258
#define IN
259
260
#undef OUT
261
#define OUT
262
263
#undef INOUT
264
#define INOUT
265
266
#undef packed
267
#define packed
268
269
#ifndef CLEAR
270
#define CLEAR(a) memset(&a,0,sizeof(a))
271
#endif
272
273
#ifndef POINT_BEYOND
274
#define POINT_BEYOND(a,t) (t) &((&a)[1])
275
#endif
276
277
#ifndef MAX
278
#define MAX(a,b) ((a) > (b) ? (a) : (b))
279
#endif
280
#ifndef MIN
281
#define MIN(a,b) ((a) < (b) ? (a) : (b))
282
#endif
283
284
#ifndef _WIN32
285
#define _ftime ftime
286
#define _timeb timeb
287
#define __cdecl
288
#define __stdcall
289
#ifndef __fastcall
290
#define __fastcall
291
#endif
292
#ifndef WINAPI
293
#define WINAPI
294
#endif
295
#ifndef CALLBACK
296
#define CALLBACK
297
#endif
298
#endif
299
300
#ifndef _WIN32
301
#undef INVALID_SOCKET
302
#define INVALID_SOCKET -1
303
#undef INVALID_FD
304
#define INVALID_FD -1
305
#undef SOCKET_ERROR
306
#define SOCKET_ERROR -1
307
#undef SOCKADDR
308
#define SOCKADDR sockaddr
309
#undef SOCKADDR_IN
310
#define SOCKADDR_IN sockaddr_in
311
#undef SOCKADDR_IN6
312
#define SOCKADDR_IN6 sockaddr_in6
313
314
#if defined(PLATFORM_DARWIN) || defined(PLATFORM_APPLE_SSLVPN) || defined(APPLE_IOS) || defined(PLATFORM_CHROMEBOOK)
315
#define s6_words __u6_addr.__u6_addr16
316
#elif defined(PLATFORM_LINUX)
317
#define s6_words s6_addr16
318
#endif
319
320
#endif
321
322
#ifndef _CRT_SECURE_NO_DEPRECATE
323
#define _CRT_SECURE_NO_DEPRECATE
324
#endif
325
326
327
#if !defined(_WIN32)
328
329
#ifndef ZeroMemory
330
#define ZeroMemory ZEROMEM
331
#ifndef PLATFORM_ANDROID
332
#define ZEROMEM(ptr,cnt) \
333
if ( ptr ) { memset(ptr,0,cnt); }
334
#else
335
// Cius compiler will generate a compilation error for: if( &var )
336
#define ZEROMEM(ptr,cnt) \
337
{ \
338
void *pZero = ptr; \
339
if ( NULL != pZero ) { memset(pZero,0,cnt); } \
340
}
341
#endif
/* !PLATFORM_ANDROID */
342
#endif
/* ZeroMemory */
343
344
#ifndef SecureZeroMemory
345
#define SECUREZEROMEM(ptr, cnt) \
346
do { \
347
size_t size = (size_t)cnt; \
348
volatile char *vptr = (volatile char *)ptr; \
349
while (size) { \
350
*vptr = 0; \
351
vptr++; \
352
size--; \
353
} \
354
} while(0);
355
#define SecureZeroMemory SECUREZEROMEM
356
#endif
/* SecureZeroMemory */
357
#endif
/* Windows */
358
359
360
361
#ifndef _WIN32
362
#define _strnicmp strncasecmp
363
#define _stricmp strcasecmp
364
#endif
365
366
#if !defined(UINT16_MAX)
367
#define UINT16_MAX 0xffffu
368
#endif
369
370
#ifndef ARRAY_SIZE
371
#define ARRAY_SIZE(a) (sizeof(a)/sizeof(a[0]))
372
#endif
373
374
#if !defined(TO_STR) && !defined(TO_TSTR) && !defined(SYMBOL_TO_STR) && !defined(SYMBOL_TO_TSTR)
375
376
// use TO_STR(x)/TO_TSTR(x) to stringize (put double quotes around) x
377
// example:
378
// std::string foo = TO_STR(15);
379
// tstring bar = TO_TSTR(15);
380
// becomes
381
// std::string foo = "15";
382
// tstring bar = _T("15");
383
#define TO_STR(x) #x
384
#define TO_TSTR(x) _T(#x)
385
386
// use SYMBOL_TO_STR(x)/SYMBOL_TO_TSTR(x) to stringize
387
// the definition of symbol x
388
// example:
389
// #define MAX_LEN 15
390
// std::string foo = SYMBOL_TO_STR(MAX_LEN);
391
// tstring bar = SYMBOL_TO_TSTR(MAX_LEN);
392
// becomes
393
// std::string foo = "15";
394
// tstring bar = _T("15");
395
//
396
// Note that TO_STR(MAX_LEN) results in "MAX_LEN". The double macro is required in
397
// order to strinigize the *definition* of a symbol (as opposed to the symbol itself)
398
#define SYMBOL_TO_STR(x) TO_STR(x)
399
#define SYMBOL_TO_TSTR(x) TO_TSTR(x)
400
401
#endif
402
403
#ifdef _WIN32
404
#define systemtime_t __time64_t
405
#define getSystemTimeInSeconds() _time64(NULL)
406
#else
407
#define systemtime_t time_t
408
#define getSystemTimeInSeconds() time(NULL)
409
#endif
410
411
#ifndef _WIN32
412
#ifndef INFINITE
413
#define INFINITE 0xFFFFFFFF
414
#endif
415
#endif
416
417
#ifdef _WIN32
418
#define ANY_PATHNAME_DELIMITER "/\\"
419
#define PATHNAME_DELIMITER '\\'
420
#define PATHNAME_DELIMITER_STR "\\"
421
#else
422
#define ANY_PATHNAME_DELIMITER "/"
423
#define PATHNAME_DELIMITER '/'
424
#define PATHNAME_DELIMITER_STR "/"
425
#endif
426
#define URL_URI_DELIMITER '/'
427
#define URL_URI_DELIMITER_STR "/"
428
429
#ifdef _WIN32
430
#define NEWLINE "\r\n"
431
#else
432
#define NEWLINE "\n"
433
#endif
434
435
#if defined(_WIN32)
436
#define HOSTSFILE_LOCATION _T("drivers\\etc\\hosts")
437
#else
438
#define HOSTSFILE_LOCATION _T("/etc/hosts")
439
#endif
440
441
#ifdef _WIN32
442
#define DebugWriteFile(_handle_,_buffer_,_length_,_refCharsWritten_) \
443
WriteFile((_handle_),(_buffer_),(_length_),(_refCharsWritten_),NULL)
444
#else
445
#ifndef INVALID_HANDLE_VALUE
446
#define INVALID_HANDLE_VALUE NULL
447
#endif
448
#define DebugWriteFile(_handle_,_buffer_,_length_,_refCharsWritten_) \
449
fprintf((_handle_), "%s", (_buffer_)); \
450
fflush((_handle_))
451
#endif
452
453
typedef
uint8_t MAC_ADDR[6];
454
455
#if !defined(_WIN32) || defined(_WIN32_WCE)
456
#ifndef ADDRESS_FAMILY
457
typedef
unsigned
short
ADDRESS_FAMILY;
458
#endif
459
#endif
460
461
#if ((defined(_WIN32) && !defined(_WIN32_WCE) && !defined(PLATFORM_WIN_APP)) || defined(PLATFORM_DARWIN) || defined(PLATFORM_LINUX)) && !defined(ANYCONNECT_USE_SNAK) && !defined(PRODUCT_TYPE_SSA)
462
/*
463
** the FIREWALL_SUPPORTED define is used to track the platforms
464
** where the firewall feature is supported. This is to avoid repeating the
465
** platforms in #ifdef clauses in other files.
466
** Also, when Firewall feature expands to other platforms, they only need to be added in
467
** one place.
468
*/
469
#define FIREWALL_SUPPORTED
470
#endif
471
472
#if !defined(PRODUCT_TYPE_SSA) && ((defined(_WIN32) && !defined(_WIN32_WCE) && !defined(PLATFORM_WIN_APP)) || defined(PLATFORM_DARWIN) || (defined(PLATFORM_LINUX) && !defined(PLATFORM_CHROMEBOOK)))
473
/*
474
** the TRUSTED_NETWORK_DETECTION define is used to track the platforms
475
** where Trusted Network Detection is performed. This is to avoid repeating the
476
** platforms in #ifdef clauses in other files.
477
** Also, when TND support expands to other platforms, they only need to be added in
478
** one place.
479
*/
480
#define TRUSTED_NETWORK_DETECTION
481
482
/*
483
* Android only uses TND to report state to NVM.
484
* Policy-based actions are not supported.
485
*/
486
#if !defined(PLATFORM_ANDROID)
487
#define TND_ACTIONS_SUPPORTED
488
#endif
489
#endif
490
491
#if (defined(_WIN32) || defined(PLATFORM_DARWIN) || defined(PLATFORM_ANDROID) || defined(PLATFORM_LINUX) && !defined(ANYCONNECT_USE_SNAK) && !defined(PLATFORM_WIN_APP))
492
#define INTER_MODULE_STATE_NOTIFY
493
#endif
494
495
#if ((defined(_WIN32) && !defined(_WIN32_WCE)) || defined(PLATFORM_DARWIN) || defined(TRUSTED_NETWORK_DETECTION)) && !defined(PRODUCT_TYPE_SSA) && !defined(PLATFORM_ANDROID)
496
/*
497
** the LOGIN_UTILITIES_SUPPORTED define is used to track the platforms
498
** that support AnyConnect action triggered by user login. This is to avoid
499
** repeating the platforms in #ifdef clauses in other files.
500
** Also, when login support expands to other platforms, they only need to be added in
501
** one place.
502
*/
503
#define LOGIN_UTILITIES_SUPPORTED
504
#endif
505
506
#if (defined(_WIN32) || defined(PLATFORM_DARWIN)) && !defined(PLATFORM_WIN_APP)
507
/*
508
** The DNS_PLUGIN_SUPPORTED define is used to track the platforms where the DNS KDF plugin is
509
** available. This is to avoid repeating the platforms in #ifdef clauses in other files.
510
** Also, when support expands to other platforms, they only need to be added in one place.
511
*/
512
#define DNS_PLUGIN_SUPPORTED
513
#if defined(_WIN32)
514
/*
515
** The DNS_PLUGIN_DNS_REQ_HANDLING_SUPPORTED define is used to track the platforms where the DNS KDF plugin is
516
** available and supports handling of DNS requests during the VPN tunnel (e.g. for split-DNS or tunnel-all-DNS enforcement).
517
**/
518
#define DNS_PLUGIN_DNS_REQ_HANDLING_SUPPORTED
519
#endif // _WIN32
520
#endif // (_WIN32 || PLATFORM_DARWIN) && !PLATFORM_WIN_APP && !PRODUCT_TYPE_SSA
521
522
#if defined(DNS_PLUGIN_SUPPORTED)
523
/*
524
** The DYNAMIC_SPLIT_TUNNELING_SUPPORTED define is used to track the platforms where dynamic split tunneling is supported.
525
**/
526
#define DYNAMIC_SPLIT_TUNNELING_SUPPORTED
527
#endif // DNS_PLUGIN_SUPPORTED
528
529
#if !(defined(PLATFORM_APPLE_SSLVPN) && TARGET_CPU_ARMV6)
530
/*
531
** A bug was discovered in iPhone testing wherein virtual inline functions do
532
** not work correctly on ARMv6 processors. To work around this, virtual inline
533
** function need to be made standard virtual functions on ARMv6. To prevent
534
** differences in runtime behavior, the VIRTUAL_INLINES_SUPPORTED define is used
535
** to define some virtual inlines in the header files, letting the functions be
536
** defined without the inline type in the cpp file for non-supported platforms.
537
*/
538
#define VIRTUAL_INLINES_SUPPORTED
539
#endif
540
541
/*
542
* When changing the SCRIPTING_SUPPORTED definition, you MUST also update the
543
* ClientIfcBase.h! We duplicate this definition there due to the manner in
544
* which we distribute our code to partners; we cannot include this header from
545
* ClientIfcBase.h.
546
*/
547
#if !defined(PLATFORM_APPLE_SSLVPN) && !defined(PLATFORM_ANDROID) && !defined(PLATFORM_WIN_APP)
548
/*
549
** the SCRIPTING_SUPPORTED define is used to enable the script manager for launching
550
** customer provided scripts on events like connection establishment, completion of
551
** disconnect, and captive portal detection.
552
*/
553
#define SCRIPTING_SUPPORTED
554
#endif
555
556
#if defined(PLATFORM_ANDROID)
557
#define DYNAMIC_CHANGE_FIPS
558
#endif // PLATFORM_ANDROID
559
560
#if !defined(PRODUCT_TYPE_SSA) && ((defined(_WIN32) && !defined(_WIN32_WCE) && !defined(PLATFORM_WIN_APP)) || defined(PLATFORM_DARWIN) || (defined(PLATFORM_LINUX) && !defined(ANYCONNECT_USE_SNAK)))
561
/*
562
** the NETWORK_ENVIRONMENT_STATE define is used to track the platforms
563
** where NETWORK_ENVIRONMENT_STATE check is performed. This is to avoid repeating the
564
** platforms in #ifdef clauses in other files.
565
** Also, when NES support expands to other platforms, they only need to be added in
566
** one place.
567
*/
568
#define NETWORK_ENVIRONMENT_STATE
569
#endif
570
571
572
#if (defined(_WIN32) && !defined(_WIN32_WCE) && !defined(PLATFORM_WIN_APP)) || defined(PLATFORM_DARWIN) || (defined(PLATFORM_LINUX) && !defined(ANYCONNECT_USE_SNAK))
573
/*
574
** The AUTOMATIC_HEADEND_SELECTION define is used to track the platforms
575
** where Automatic Headend Selection is performed. This is to avoid repeating the
576
** platforms in #ifdef clauses in other files.
577
** Also, when AHS support expands to other platforms, they only need to be added in
578
** one place.
579
*/
580
#define AUTOMATIC_HEADEND_SELECTION
581
#endif
582
583
#if (defined(_WIN32) && !defined(_WIN32_WCE) && !defined(PLATFORM_WIN_APP)) || defined(PLATFORM_DARWIN)
584
/*
585
** the MUS_HOST_SERVICES define is used to track the platforms
586
** where MUS Host Status check is performed. This is to avoid repeating the
587
** platforms in #ifdef clauses in other files.
588
*/
589
#define MUS_HOST_SERVICES
590
#endif
591
592
// BUGBUG - initially only enable code signing for Windows
593
#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))
594
/*
595
** the CODE_SIGNING_SUPPORTED define is used to track the platforms
596
** where code sign verification is support. This is to avoid repeating the
597
** platforms in #ifdef clauses in other files.
598
**
599
*/
600
#define CODE_SIGNING_SUPPORTED
601
#endif
602
603
#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(PLATFORM_WIN_APP)
604
#define RSA_SECURID_SUPPORTED
605
#endif
606
607
#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(PLATFORM_WIN_APP)
608
#define SAFEWORD_SOFTOKEN_SUPPORTED
609
#endif
610
611
#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) )
612
/*
613
** the IPSEC_SUPPORTED define is used to track the platforms
614
** where the IPSec protocol is supported. This is to avoid repeating the
615
** platforms in #ifdef clauses in other files.
616
*/
617
#define IPSEC_SUPPORTED
618
#endif
619
620
#if (defined(_WIN32) && !defined(_WIN32_WCE)) || defined(PLATFORM_DARWIN) || (defined(PLATFORM_LINUX) && !defined(PLATFORM_CHROMEBOOK)) || defined(PLATFORM_APPLE_SSLVPN) || defined (PLATFORM_ANDROID)
621
/*
622
** The IPV6_SUPPORTED define is used to track the platforms
623
** where full IPv6 capability is supported. This is to avoid repeating the
624
** platforms in #ifdef clauses in other files.
625
** Note that this is further narrowed down by method CIPv6Util::IsIPv6FullCapabilitySupported.
626
*/
627
#define IPV6_SUPPORTED
628
#endif
629
630
#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) )
631
/*
632
** the PLUGIN_PROTOCOL_SUPPORTED define is used to track the platforms
633
** where modular protocol Plugins are supported. This is to avoid repeating the
634
** platforms in #ifdef clauses in other files.
635
*/
636
#define PLUGIN_PROTOCOL_SUPPORTED
637
#endif
638
639
#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(PLATFORM_WIN_APP) && !defined(PRODUCT_TYPE_SSA)
640
/*
641
** The IPSEC_OVER_SSL define is used to track the platforms
642
** where the feature "IPsec tunneling over SSL for Oracle" (EDCS-852737) is supported.
643
** This is to avoid repeating the platforms in #ifdef clauses in other files.
644
** Also, when the support expands to other platforms, they only need to be added in
645
** one place.
646
*/
647
#define IPSEC_OVER_SSL
648
#endif
649
650
#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)
651
/*
652
** the DATA_OBFUSCATING_SUPPORTED define is used to track the platforms
653
** where data obfuscation using key exchanges are supported. This is to
654
** avoid repeating the platforms in #ifdef clauses in other files.
655
*/
656
#define DATA_OBFUSCATING_SUPPORTED
657
#endif
658
659
#if !defined(PLATFORM_APPLE_SSLVPN) && !defined(_WIN32_WCE) && !defined(PLATFORM_WIN_APP) && !defined(PRODUCT_TYPE_SSA) && !defined(PLATFORM_ANDROID) && !defined(PLATFORM_CHROMEBOOK)
660
/*
661
** the HOSTFILE_MODIFICATION_SUPPORTED define is used to track the platforms
662
** where hosts file modification is performed. This is to avoid repeating the
663
** platforms in #ifdef clauses in other files.
664
*/
665
#define HOSTSFILE_MODIFICATION_SUPPORTED
666
#endif
667
668
#if defined(_WIN32) || defined(_WIN32_WCE) || defined(PLATFORM_DARWIN) || defined(PLATFORM_LINUX) || defined(PLATFORM_ANDROID) || defined(PLATFORM_APPLE_SSLVPN)|| defined(PLATFORM_WIN_APP)
669
/*
670
** the SCEP_CERTIFICATE_ENROLLMENT_SUPPORTED define is used to track the platforms
671
** where SCEP enrollment can be performed. This is to avoid repeating the
672
** platforms in #ifdef clauses in other files.
673
*/
674
#define SCEP_CERTIFICATE_ENROLLMENT_SUPPORTED
675
#endif
676
677
#if (defined(_WIN32) && !defined(_WIN32_WCE))
678
/*
679
** these XXX_PROFILE_SUPPORTED defines are used to track the platforms where
680
** Service Profiles for optional modules are supported.
681
** All platforms: VPN
682
** Windows: NAM, Web Security, ISE Posture, FireAMP, NVM and OpenDNS
683
*/
684
#define NAM_PROFILE_SUPPORTED
685
#define WEBSEC_PROFILE_SUPPORTED
686
#define ISEPOSTURE_PROFILE_SUPPORTED
687
#define FIREAMP_PROFILE_SUPPORTED
688
#define NVM_PROFILE_SUPPORTED
689
#define OPENDNS_PROFILE_SUPPORTED
690
#elif defined(PLATFORM_DARWIN)
691
/*
692
** OS X: Web Security, ISE Posture, FireAMP, NVM and OpenDNS
693
*/
694
#define WEBSEC_PROFILE_SUPPORTED
695
#define ISEPOSTURE_PROFILE_SUPPORTED
696
#define FIREAMP_PROFILE_SUPPORTED
697
#define NVM_PROFILE_SUPPORTED
698
#define OPENDNS_PROFILE_SUPPORTED
699
#elif defined(PLATFORM_LINUX)
700
#define NVM_PROFILE_SUPPORTED
701
#endif
702
703
#if defined(_WIN32) || defined(PLATFORM_DARWIN)
704
/*
705
** the CLOUD_UPDATE_SUPPORTED define is used to track the platforms
706
** that support cloud updates (currently from OpenDNS). This is to avoid repeating the
707
** platforms in #ifdef clauses in other files.
708
*/
709
#define CLOUD_UPDATE_SUPPORTED
710
#endif
711
712
/*
713
** The PLATFORM_DESKTOP define is used to track AnyConnect desktop platforms.
714
*/
715
#if (defined(_WIN32) || defined(PLATFORM_DARWIN) || (defined(PLATFORM_LINUX) && !defined(ANYCONNECT_USE_SNAK) && !defined (PLATFORM_ANDROID) && !defined(PLATFORM_CHROMEBOOK))) \
716
&& !defined(PRODUCT_TYPE_SSA) && !defined(PLATFORM_WIN_APP)
717
#define PLATFORM_DESKTOP
718
#endif
719
720
#if defined(PLATFORM_DESKTOP)
721
/*
722
** The exportStats call is only supported on the Desktop Platforms,
723
** it should not be included or supported if it is not a Desktop Plat
724
*/
725
#define EXPORT_STATS_SUPPORTED
726
#endif
727
728
#if defined(_WIN32) || defined(PLATFORM_DARWIN) || defined(PLATFORM_LINUX) || defined(PLATFORM_APPLE_SSLVPN)
729
#define AC_CERTIFICATE_POLICY_SUPPORTED
730
#endif
731
732
#ifndef _TRSTRING
733
#define _tr(String) String
734
#define _TRSTRING
735
#endif
736
737
#ifndef _C_MYASSERT
738
#define C_MYASSERT(e) typedef char __C_MYASSERT__[(e)?1:-1]
739
#define _C_MYASSERT
740
#endif
741
742
#if defined(PLATFORM_APPLE_SSLVPN) || defined(APPLE_IOS)
743
#define NETWORK_ORDER_LOOPBACK_INTF_ADDR htonl(0x7f000001) // 127.0.0.1
744
#endif
745
746
#if !defined(BITS_PER_BYTE)
747
#define BITS_PER_BYTE 8
748
#endif
749
750
#if defined(PLATFORM_DESKTOP) && defined(PLATFORM_LINUX)
751
#define STATIC_THREAD_LOCAL static __thread
752
#else
753
#define STATIC_THREAD_LOCAL thread_local
754
#endif
755
756
#if defined(PLATFORM_APPLE_SSLVPN) || defined(PLATFORM_ANDROID) || defined(PLATFORM_CHROMEBOOK)|| defined(PRODUCT_TYPE_SSA) || defined(PLATFORM_WIN_APP)
757
/*
758
** the MANUAL_PKCS12_IMPORT_SUPPORTED define is used to track the platforms
759
** where the manual import of PKCS12 certificates is supported. This is to avoid repeating the
760
** platforms in #ifdef clauses in other files.
761
*/
762
#define MANUAL_PKCS12_IMPORT_SUPPORTED
763
#endif
764
765
#if defined(PLATFORM_ANDROID) || defined(PLATFORM_APPLE_SSLVPN) || defined(PLATFORM_CHROMEBOOK)
766
// Zlib is statically linked.
767
#define STATIC_ZLIB
768
#endif
769
770
#if (defined(PLATFORM_LINUX) && !defined(PLATFORM_ANDROID)) || defined(PLATFORM_DARWIN)
771
// Use zlib dynamic library on the system.
772
#define USE_SYSTEM_ZLIB
773
#endif
774
775
776
/*
777
* Platforms that support a single profile.
778
*/
779
#if defined(PLATFORM_APPLE_SSLVPN) || defined(PLATFORM_ANDROID) || defined(PLATFORM_CHROMEBOOK)
780
#define USE_SINGLE_PROFILE
781
#endif
782
783
784
/*
785
* Platforms that support ACIDEX.
786
*/
787
#if defined(PLATFORM_ANDROID) || defined(PLATFORM_APPLE_SSLVPN) || defined(_WIN32) || defined(PLATFORM_DARWIN) || defined(PLATFORM_LINUX) || defined(PLATFORM_CHROMEBOOK)
788
#define ACIDEX_SUPPORTED
789
#endif
790
791
/*
792
* Platforms that support PerApp.
793
*/
794
#if defined(PLATFORM_ANDROID) || defined(PLATFORM_APPLE_SSLVPN)
795
#define PERAPP_SUPPORTED
796
#endif
797
798
799
/*
800
* Platforms that support HOSTDATA.
801
*/
802
#if defined(PLATFORM_ANDROID) || defined(PLATFORM_APPLE_SSLVPN) || defined(PLATFORM_CHROMEBOOK)
803
#define HOST_DATA_SUPPORTED
804
#endif
805
806
807
/*
808
* Platforms that support scripting.
809
*
810
* When changing the SCRIPTING_SUPPORTED definition, you MUST also update the
811
* ClientIfcBase.h! We duplicate this definition there due to the manner in
812
* which we distribute our code to partners; we cannot include this header from
813
* ClientIfcBase.h.
814
815
*/
816
#if !defined(PLATFORM_APPLE_SSLVPN) && !defined(PLATFORM_ANDROID) && !defined(PLATFORM_WIN_APP)
817
#define SCRIPTING_SUPPORTED
818
#endif
819
820
#if defined(PLATFORM_ANDROID)
821
// On Android, modifying the default route may break system network services.
822
#define DONT_TOUCH_IPV4_DEFAULT_ROUTE
823
#endif
824
825
#if defined(PLATFORM_APPLE_SSLVPN) || defined(PLATFORM_ANDROID) || defined(PLATFORM_CHROMEBOOK)
826
#define SNAK_NO_ROUTE_TABLE_ACCESS
827
#endif
828
829
#if defined(ANYCONNECT_USE_SNAK) || defined(PLATFORM_APPLE_SSLVPN)
830
#define GLOBAL_SNAK_PLUGIN_VER 2
831
#endif
832
833
#if defined(PLATFORM_ANDROID)
834
#define MEMORY_LOGGING_SUPPORTED
835
#endif
836
837
838
839
#if defined(PLATFORM_ANDROID)
840
// Supports API for integrating program data (e.g. localization and profile).
841
#define PROGRAM_DATA_IMPORT_SUPPORTED
842
#endif
843
844
#if defined(PLATFORM_ANDROID)
845
// Credentials for a connection can be prefilled via uri handling or API calls
846
// if you add a new platform, you need to add it in ClientIfcBase.h and ConnectPromptInfoBase.h
847
#define CREDENTIAL_PREFILL_SUPPORTED
848
#endif
849
850
#if !(defined(_WIN32_WCE) || defined(PLATFORM_APPLE_SSLVPN) || defined(PLATFORM_ANDROID) || defined(PLATFORM_CHROMEBOOK))
851
// support for automatic reconnects
852
#define AUTORECONNECT_SUPPORTED
853
#endif
854
855
#if !defined(_WIN32_WCE) && !defined(PLATFORM_LINUX_EMBEDDED_PPC) && !defined(PLATFORM_WEBOS_ARM) && !defined(PLATFORM_WEBOS_X86) && !defined(APPLE_IOS) && !defined(PLATFORM_WIN_APP)
856
#define FIPS_SUPPORTED
857
#endif
858
859
#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)
860
#define LEAF_SUPPORTED
861
#endif
862
863
#if defined(PLATFORM_DESKTOP) && (defined(_WIN32) || defined(PLATFORM_LINUX))
864
/*
865
** This define is used to track platforms where user logon
866
** related preferences in client profile are supported.
867
*/
868
#define ENFORCE_USER_LOGON_SETTINGS
869
#endif
870
871
#if !defined(PLATFORM_ANDROID) && !defined(PLATFORM_CHROMEBOOK) // More platforms need to be added
872
#define WIDE_CHAR_SUPPORTED
873
#endif
874
875
#if defined(_WIN32) && !defined(PRODUCT_TYPE_SSA) && !defined(PLATFORM_WIN_APP)
876
#define TUNNEL_PROXY_SETTINGS_SUPPORTED
877
#endif
878
879
/*
880
** Public Proxy support is only implemented on Windows, Linux and Mac desktop platforms
881
*/
882
#if defined(PLATFORM_DESKTOP)
883
#define PUBLIC_PROXY_SUPPORTED
884
#endif
885
886
/*
887
** NTLM support is only implemented on Windows desktop platforms
888
*/
889
#if defined(_WIN32) && defined(PUBLIC_PROXY_SUPPORTED)
890
#define PROXYAUTH_NTLM_SUPPORTED
891
#endif
892
893
#if defined(PLATFORM_ANDROID) || defined(PRODUCT_TYPE_SSA) || defined(PLATFORM_APPLE_SSLVPN)
894
#define IMPORT_API_SUPPORTED
895
#endif
896
897
#if defined(PLATFORM_APPLE_SSLVPN) || (defined(PRODUCT_TYPE_SSA) && !(defined(PLATFORM_ANDROID) || defined(APPLE_IOS))) || defined(PLATFORM_CHROMEBOOK)
898
/*
899
** This serves to tell the IPsec plugin interface to explicitly
900
** exclude it's global namespace entry points, leaving the only
901
** plugin interface as a set of static class methods, which the
902
** loading code will look for directly.
903
*/
904
#define IPSEC_AS_INTERNAL_MODULE
905
#endif
906
907
#if defined(PLATFORM_ANDROID) // More platforms need to be added
908
#define dynamic_cast reinterpret_cast
909
#endif
910
911
#if defined(PRODUCT_TYPE_SSA) && defined(APPLE_IOS) && !defined(PLATFORM_APPLE_SSLVPN)
912
#define CONFIGURE_REMOTE_WAKEUP_SUPPORTED
913
#endif
914
915
/*
916
** The SMARTCARD_SUPPORTED define is used to track the platforms where smartcard
917
** certificate authentication is supported. This is to avoid repeating the
918
** platforms in #ifdef clauses in other files.
919
*/
920
#if (defined(_WIN32) && !defined(PLATFORM_WIN_APP)) || defined(PLATFORM_DARWIN)
921
#define SMARTCARD_SUPPORTED
922
/*
923
** The SMARTCARD_REMOVAL_SUPPORTED define is used to track the platforms where smartcard
924
** removal monitoring is supported. This is to avoid repeating the
925
** platforms in #ifdef clauses in other files.
926
*/
927
#if defined(_WIN32)
928
#define SMARTCARD_REMOVAL_SUPPORTED
929
#endif
930
#endif // (_WIN32 && !PLATFORM_WIN_APP) || PLATFORM_DARWIN
931
932
#if (defined(PLATFORM_LINUX) || defined(PLATFORM_DARWIN)) && !defined(ANYCONNECT_USE_SNAK) && !defined(PRODUCT_TYPE_SSA)
933
/*
934
** The CIRCUMVENT_HOST_FILTERING_SUPPORTED define is used to track the platforms
935
** where AnyConnect can control whether or not pre-existing host filtering is
936
** circumvented upon applying AnyConnect filtering (only applicable to split-tunneling).
937
*/
938
#define CIRCUMVENT_HOST_FILTERING_SUPPORTED
939
#endif
940
941
#if defined(_WIN32) && !defined(ANYCONNECT_USE_SNAK) && !defined(PRODUCT_TYPE_SSA)
942
/*
943
** The SKIP_DHCP_SERVER_ROUTE_SUPPORTED define is used to track the platforms
944
** where the admin can control whether or not the public DHCP server route is created
945
** upon establishing the VPN tunnel.
946
*/
947
#define SKIP_DHCP_SERVER_ROUTE_SUPPORTED
948
#endif
949
950
#if defined(PLUGIN_PROTOCOL_SUPPORTED) && !defined(PRODUCT_TYPE_SSA)
951
#if (defined(_WIN32) && !defined(_WIN32_WCE))
952
// support Service Control Plugins if defined
953
#define SERVICE_PLUGIN
954
// support PhoneHome Plugin if defined
955
#define PHONEHOME_PLUGIN
956
#elif defined(PLATFORM_DARWIN)
957
// support Service Control Plugins if defined
958
#define SERVICE_PLUGIN
959
// support PhoneHome Plugin if defined
960
#define PHONEHOME_PLUGIN
961
#elif defined(PLATFORM_LINUX) && !defined(PLATFORM_ANDROID) && !defined(PLATFORM_CHROMEBOOK)
962
#define PHONEHOME_PLUGIN
963
#define SERVICE_PLUGIN
964
#endif
965
#endif
966
967
#if (defined (PLATFORM_DARWIN) || defined (PLATFORM_ANDROID) || defined(PLATFORM_APPLE_SSLVPN) || defined(PLATFORM_CHROMEBOOK) || (defined (PLATFORM_LINUX) && !defined (ANYCONNECT_USE_SNAK)))
968
#define FILE_STORE_SUPPORTED
969
#endif
970
971
#if !defined(PLATFORM_WIN_APP)
972
/*
973
** the INTERPROCESS_COMMUNICATION_SUPPORTED define is used to track the platforms where the
974
** communication between processes is supported. This is to avoid repeating the
975
** platforms in #ifdef clauses in other files.
976
*/
977
#define INTERPROCESS_COMMUNICATION_SUPPORTED
978
#endif
979
#if !defined(PLATFORM_WIN_APP)
980
/*
981
** the THREADS_SUPPORTED define is used to track the platforms where
982
** threads are supported. This is to avoid repeating the
983
** platforms in #ifdef clauses in other files.
984
*/
985
#define THREADS_SUPPORTED
986
#endif
987
988
#if !defined(PLATFORM_WIN_APP)
989
/*
990
** the CAPTIVE_PORTAL_DETECTION_SUPPORTED define is used to track the platforms where
991
** captive portal detection is supported. This is to avoid repeating the
992
** platforms in #ifdef clauses in other files.
993
*/
994
#define CAPTIVE_PORTAL_DETECTION_SUPPORTED
995
#endif
996
997
#if defined(_WIN32) && defined(CAPTIVE_PORTAL_DETECTION_SUPPORTED) && defined(PLATFORM_DESKTOP)
998
/*
999
** the SECURE_CAPTIVE_PORTAL_REMEDIATION_SUPPORTED define is used to track the platforms where
1000
** secure captive portal remediation is supported.
1001
*/
1002
#define SECURE_CAPTIVE_PORTAL_REMEDIATION_SUPPORTED
1003
#endif
1004
1005
#if !defined(PLATFORM_WIN_APP)
1006
/*
1007
** the EVENTS_SUPPORTED define is used to track the platforms where
1008
** events are supported. This is to avoid repeating the
1009
** platforms in #ifdef clauses in other files.
1010
*/
1011
#define EVENTS_SUPPORTED
1012
#endif
1013
1014
#if defined(IPV6_SUPPORTED) && !defined(PLATFORM_WIN_APP) && !defined(PLATFORM_ANDROID) && !defined(PLATFORM_CHROMEBOOK) && !defined(PLATFORM_APPLE_SSLVPN)
1015
/*
1016
** the MODIFY_HOSTSFILE_SUPPORTED define is used to track the platforms where
1017
** modification of the system's hosts file is supported. This is to avoid repeating the
1018
** platforms in #ifdef clauses in other files.
1019
*/
1020
#define MODIFY_HOSTSFILE_SUPPORTED
1021
#endif
1022
1023
#if !defined(PLATFORM_WIN_APP)
1024
/*
1025
** the HOST_CONFIG_MANAGER_SUPPORTED define is used to track the platforms where
1026
** broad control of the host OS is supported. This is to avoid repeating the
1027
** platforms in #ifdef clauses in other files.
1028
*/
1029
#define HOST_CONFIG_MANAGER_SUPPORTED
1030
#endif
1031
1032
#if defined(PRODUCT_TYPE_SSA) || defined(PLATFORM_WIN_APP) || defined(PLATFORM_ANDROID) || defined(PLATFORM_CHROMEBOOK) || defined(PLATFORM_APPLE_SSLVPN)
1033
/*
1034
** the FILE_SYNCHRONIZER_SUPPORTED define is used to track the platforms where
1035
** files downloaded directly by VPN API are supported. This is to avoid repeating the
1036
** platforms in #ifdef clauses in other files.
1037
*/
1038
#define FILE_SYNCHRONIZER_SUPPORTED
1039
#endif
1040
1041
#if defined(_WIN32) || defined(PLATFORM_DARWIN) || (defined(PLATFORM_LINUX) && !defined(PLATFORM_ANDROID) && !defined(PLATFORM_CHROMEBOOK))
1042
/*
1043
** the SAVE_VPNCONFIG_TO_FILE_SUPPORTED define is used to track the platforms where the
1044
** writting of the VPN config to file is supported. This is to avoid repeating the
1045
** platforms in #ifdef clauses in other files.
1046
*/
1047
#define SAVE_VPNCONFIG_TO_FILE_SUPPORTED
1048
#endif
1049
1050
/*
1051
* DSCP preservation is not considered for Downloader. Downloader uses socket transport for IPC.
1052
*/
1053
#if (defined(PLATFORM_ANDROID) || defined(PLATFORM_DARWIN) || defined(_WIN32)) && !defined(_DOWNLOADER) && !defined(PRODUCT_TYPE_SSA) && !defined(PLATFORM_WIN_APP)
1054
// Used to enable preservation of Differentiated Services field in the IP packet header.
1055
#define DIFFSERV_PRESERVATION_SUPPORTED
1056
#endif
1057
1058
#if !defined(PRODUCT_TYPE_SSA) && !defined(PLATFORM_WIN_APP)
1059
/*
1060
** the ROUTE_MANAGER_SUPPORTED define is used to track the platforms
1061
** where RouteMgr is supported. This is to avoid repeating the
1062
** platforms in #ifdef clauses in other files.
1063
*/
1064
#define ROUTE_MANAGER_SUPPORTED
1065
#endif
1066
1067
#if !defined(PRODUCT_TYPE_SSA) && !defined(PLATFORM_WIN_APP)
1068
/*
1069
** the FILTER_MANAGER_SUPPORTED define is used to track the platforms
1070
** where FilterMgr is supported. This is to avoid repeating the
1071
** platforms in #ifdef clauses in other files.
1072
*/
1073
#define FILTER_MANAGER_SUPPORTED
1074
#endif
1075
1076
#if defined(PLATFORM_APPLE_SSLVPN)
1077
// Used to enable the file logging for Apple plugins.
1078
//#define FILE_LOGGING_SUPPORTED
1079
#endif
1080
1081
/*
1082
** Legacy Single sign on authentication.
1083
** Explicitly disabled on mobile platforms due to session fixation vulnerability, as described in CSCvg65072
1084
** To be removed from desktop platforms in some future AnyConnect release (4.7?)
1085
*/
1086
#if defined(PLATFORM_DESKTOP)
1087
#define SSO_V1_SUPPORTED
1088
#endif
1089
1090
/*
1091
** Single sign on authentication (requires embedded browser).
1092
*/
1093
#if !defined(PLATFORM_WIN_APP)
1094
#define SSO_SUPPORTED
1095
#endif
1096
1097
#if !defined(PLATFORM_WIN_APP)
1098
#define MCA_SUPPORTED
1099
#endif
1100
1101
#if !defined(PLATFORM_WIN_APP)
1102
#define TIMERS_SUPPORTED
1103
#endif
1104
1105
#if !defined(PLATFORM_CHROMEBOOK)
1106
#define LOAD_EXTERNAL_MODULES
1107
#endif
1108
1109
#if defined(PLATFORM_ANDROID)
1110
#define SPLIT_DNS_PROXY_SUPPORTED
1111
#endif
1112
1113
#if (defined(_WIN32) || defined(PLATFORM_DARWIN)) && defined(PLATFORM_DESKTOP)
1114
/*
1115
** The MGMT_TUNNEL_SUPPORTED define is used to track the platforms where
1116
** the management tunnel feature is supported.
1117
*/
1118
#define MGMT_TUNNEL_SUPPORTED
1119
#endif
1120
1121
#if (defined(_WIN32) && defined(PLATFORM_DESKTOP)) || defined(MGMT_TUNNEL_SUPPORTED)
1122
// Machine certificate authentication SSL tunnel connections via agent are supported
1123
// on Windows desktop, and also on all platforms supporting the management tunnel feature.
1124
//
1125
#define SSL_CONNECT_VIA_AGENT_SUPPORTED
1126
#endif
1127
1128
/*
1129
** Performance optimization for the tunnel packet processing loop to attempt to process
1130
** multiple packets before calling back into select().
1131
*/
1132
#if !defined(_WIN32)
1133
#define MULTI_TUN_PACKET_PROCESSING_SUPPORTED
1134
#endif
1135
1136
#if (defined(_WIN32) && defined(_M_ARM64)) || defined(X86_FOR_ARM64)
1137
/*
1138
** Disable Hostscan on Windows ARM64 builds (both native ARM64 and the hybrid _WIN32_FOR_ARM64).
1139
*/
1140
#define ANYCONNECT_NO_CSD
1141
#endif
1142
1143
#if defined(_WIN32) && defined(PLATFORM_DESKTOP) && !defined(_M_ARM64) && !defined(X86_FOR_ARM64)
1144
/*
1145
** Connected Standby is supported in Windows desktop but not UWP and not ARM64 (both native ARM64 and the hybrid _WIN32_FOR_ARM64).
1146
*/
1147
#define CONNECTED_STANDBY_SUPPORTED
1148
#endif
1149
1150
1151
#if defined(_WIN32) && defined(PLATFORM_DESKTOP) || defined(PLATFORM_APPLE_SSLVPN)
1152
/*
1153
** This define is used to track platforms where multi-line logs are readable, and hence supported.
1154
*/
1155
#define MULTI_LINE_LOGS_SUPPORTED
1156
#endif
1157
1158
#if defined (PLATFORM_ANDROID)
1159
#define PCAP_VA_SUPPORTED
1160
#endif
1161
1162
/* END OF MACRO HELL */
1163
#endif
/*__GENDEFS_H*/
AnyConnect C++ API Documentation by
Cisco Systems