AnyConnect Secure Mobility Client  5.1.5.65
api.h
Go to the documentation of this file.
1 /**************************************************************************
2 * Copyright (c) 2008, 2022-2023 Cisco Systems, Inc.
3 * All Rights Reserved. Cisco Highly Confidential.
4 ***************************************************************************
5 *
6 * File: api.h
7 * Date: 01/2008
8 *
9 ***************************************************************************
10 * VPN GUI API module interface types
11 ***************************************************************************/
12 #ifndef _APISTDHEADER_
13 #define _APISTDHEADER_
14 
15 /**
16  * @file
17  * This file contains some basic compiler definitions as well as common enums.
18  */
19 
20 //Not compatible with MIDL
21 #if !defined(__midl)
22 #ifdef _WIN32
23  #pragma warning(disable:4251 4786)
24 
25  #ifndef UNICODE
26  #define UNICODE
27  #endif // UNICODE
28 
29  #ifndef _UNICODE
30  #define _UNICODE
31  #endif // _UNICODE
32 
33  #ifndef tstring
34 /** std::wstring */
35  #define tstring std::wstring /**< my wstring description */
36  #endif // tstring
37 
38 #else // non-windows
39 
40  #ifndef tstring
41  #define tstring std::string
42  #endif // tstring
43 
44 #endif // _WIN32
45 
46 #ifdef _UNICODE
47  #define tostream std::wostream
48 #else
49  #define tostream std::ostream
50 #endif /* UNICODE */
51 
52 
53 //used when including implementation files directly in an EXE.
54 #ifdef _NOEXPORTDLL
55  #define VPN_VPNAPI
56 #else
57  #ifdef _WIN32
58  #ifdef VPN_APIEXPORTS //api
59  #define VPN_VPNAPI __declspec(dllexport)
60  #else
61  #define VPN_VPNAPI __declspec(dllimport)
62  #endif
63  #else
64  #ifdef VPN_APIEXPORTS
65  #define VPN_VPNAPI __attribute__((visibility("default")))
66  #else
67  #define VPN_VPNAPI
68  #endif
69  #endif //_WIN32
70 #endif //NOEXPORTDLL
71 
72 #ifndef OUT
73 #define OUT
74 #endif
75 
76 #ifndef IN
77 #define IN
78 #endif
79 
80 #ifdef __cplusplus //only include if C++ is being used,
81  //C code also includes api.h for COM proxy of enumerators.
82 #include <string>
83 #include <map>
84 #include <list>
85 
86 typedef std::map<tstring, tstring> ApiStringMap;
87 typedef std::map<tstring, std::list<tstring> > ApiStringListMap;
88 
89 #endif //__cplusplus
90 #endif //#if !defined(__midl)
91 
92 
93 /***** PUT ONLY SHARED ENUMS EXPOSED TO USERS OF API FROM THIS POINT UNTIL END *****\
94 ********* make sure to add the [v1_enum] inside a __midl define to new enums ********
95 \******************** This is also compiled with IDL compiler **********************/
96 
97 #include "GlobalEnums.h"
98 /**
99  * MessageType
100  * presents a level of severity associated with messages that are
101  * sent to the API. The severity can be useful for deciding how a message is
102  * to be shown. A UI might decide based on type to show a message as
103  * a modal dialog versus a message written to the status area for an existing UI.
104  */
105 #if defined(__midl)
106 [v1_enum] /*serialize as 32 bits*/
107 #endif
109 {
110  MsgType_Error, /**< Issue usually requiring user to acknowledge */
111  MsgType_Alert, /**< Warning message that must be shown to user. */
112  MsgType_Warn, /**< Less severe, not required to be shown to user */
113  MsgType_Info, /**< General message providing status, progress, etc. */
114  MsgType_Status, /**< Can be used to indicate unexpected tunnel status change. */
115  MsgType_UrlError, /**< Error message that provides additional information by opening browser. */
116  MsgType_Announcement,/**< Informational message that must be shown to the user.
117  Announcements are currently only supported on desktop platforms. */
118  MsgType_Ephemeral_Alert,/**< Warning message that must be shown to the user, but is closed by
119  the occurrence of an error, announcement, or alert message.
120  Ephemeral Alerts are currently only supported on desktop platforms */
121 };
122 
123 
124 /**
125  * Identifies the type of token that was used successfully when SDI
126  * Authentication is in use.
127  */
128 #if defined(__midl)
129 [v1_enum] /*serialize as 32 bits*/
130 #endif
132 {
133  SDITT_NONE,
134  SDITT_HARDWARE,
135  SDITT_SOFTWARE
136 };
137 
138 /**
139  * Provides the current state of the VPN tunnel.
140  */
141 #if defined(__midl)
142 [v1_enum] /*serialize as 32 bits*/
143 #endif
145 {
146  CONNECTED = STATE_CONNECTED, /**< VPN is active */
147  DISCONNECTED = STATE_DISCONNECTED, /**< VPN is inactive */
148  CONNECTING = STATE_CONNECTING, /**< VPN is being established */
149  DISCONNECTING = STATE_DISCONNECTING, /**< VPN is being terminated */
150  RECONNECTING = STATE_RECONNECTING, /**< VPN is being re-connected. This state
151  can occur due to network or other
152  temporary problems. The state
153  indicates that the VPN is temporarily
154  unavailable and indicates the
155  connection is being re-established. */
156  PAUSING = STATE_PAUSING, /**< VPN is being paused. */
157  PAUSED = STATE_PAUSED, /**< VPN is paused. */
158  SSOPOLLING = STATE_SSOPOLLING, /**< API is doing auth-poll, VPN is disconnected. */
159  UNKNOWN = ~0
160 };
161 
162 /**
163  * Provides the current sub-state of the VPN tunnel.
164  */
165 #if defined(__midl)
166 [v1_enum] /*serialize as 32 bits*/
167 #endif
169 {
170  VPNSS_NORMAL = VCSS_NORMAL,
171  VPNSS_INDEFINITE_DELAY = VCSS_INDEFINITE_DELAY,
172  VPNSS_SESSION_EXPIRING = VCSS_SESSION_EXPIRING,
173  VPNSS_MT_DISCONNECTED_DISABLED = VCSS_MT_DISCONNECTED_DISABLED,
174  VPNSS_MT_DISCONNECTED_TRUSTED_NW = VCSS_MT_DISCONNECTED_TRUSTED_NW,
175  VPNSS_MT_DISCONNECTED_USER_TUNNEL_ACTIVE= VCSS_MT_DISCONNECTED_USER_TUNNEL_ACTIVE,
176  VPNSS_MT_DISCONNECTED_LAUNCH_FAILED = VCSS_MT_DISCONNECTED_LAUNCH_FAILED,
177  VPNSS_MT_DISCONNECTED_CONNECT_FAILED = VCSS_MT_DISCONNECTED_CONNECT_FAILED,
178  VPNSS_MT_DISCONNECTED_BAD_VPN_CONFIG = VCSS_MT_DISCONNECTED_BAD_VPN_CONFIG,
179  VPNSS_MT_DISCONNECTED_SW_UP_PENDING = VCSS_MT_DISCONNECTED_SW_UP_PENDING,
180  VPNSS_MTU_ADJUSTMENT_PENDING = VCSS_MTU_ADJUSTMENT_PENDING
181 };
182 
183 /**
184  * WMHint
185  * provides a hint for the GUI to either minimize or un-minimize.
186  */
187 #if defined(__midl)
188 [v1_enum] /*serialize as 32 bits*/
189 #endif
190 enum WMHint
191 {
192  MINIMIZE, /**< hint to minimize GUI */
193  OPEN, /**< hint to un-minimize GUI */
194  QUIT, /**< hint that GUI should close. @see WMHintReason */
195  REFRESHHOSTNAMES,/**< hint to refresh the list of secure gateways */
196  REFRESHPREFS, /**< hint to refresh the preferences */
197  SHOWCONNECTING, /**< hint to display "connecting" status */
198  CLOSECREDENTIALPOPUP, /**< hint to close the credentials popup */
199 };
200 
201 
202 /**
203  * WMHintReason
204  * provides a reason indicator for the #WMHint
205  */
206 #if defined(__midl)
207 [v1_enum] /*serialize as 32 bits*/
208 #endif
210 {
211  SECONDGUISTART, /**< Indicates a second GUI has been launched. This
212  indicator is used to suggest that the GUI
213  already running be OPENed and that the first one
214  should exit. */
215  PROXYREQUEST, /**< Proxy credential request can be for web-launch or
216  standalone-initiated connections. */
217  SERVICEFAILURE, /**< This tag is used when the VPN service
218  is no longer available. */
219  DISCONNECT, /**< Any disconnect notices should be seen by the user. */
220  SERVICESTOPPED, /**< This tag will be used in cases where the VPN service
221  has been stopped. */
222  CONNECT, /**< Tag indicating an action to be taken due to connect,
223  for example a request to minimize the UI. */
224  REASONUNKNOWN /**< */
225 };
226 
227 /**
228  * provides an indication of the type of credential data being requested.
229  */
230 #if defined(__midl)
231 [v1_enum] /*serialize as 32 bits*/
232 #endif
234 {
235  CERTIFICATE, /**< Indicates a certificate-only type of connection and
236  would not normally be sent to client unless a
237  post-authentication banner is to be displayed. */
238  CREDENTIALS, /**< Indicates that the user is to be prompted for authentication
239  credentials */
240  PROXY, /**< Indicates that the user is to be prompted for
241  proxy-authentication credentials */
242  MANUAL_PKCS12_IMPORT, /**< Indicates that the user is to be prompted for passwords related
243  to PKCS12 import*/
244  STATUS, /**< Indicates that status messages are to be displayed to
245  the user*/
246  SINGLESIGNON, /**< Indicates an embedded browser based single sign-on authentication method is requested. */
247  SINGLELOGOUT, /**< Indicates an embedded browser based single sign-on authentication logout is requested. */
248  LEGACY_SINGLESIGNON, /**< (deprecated) Indicates a browser based single sign-on authentication method is requested. */
249 };
250 
251 
252 /**
253  * Indicates the prompt or credential type.
254  */
255 #if defined(__midl)
256 [v1_enum] /*serialize as 32 bits*/
257 #endif
258 enum PromptType { Prompt_Input, /**< label and value. */
259  Prompt_Password, /**< label and value, indicates user
260  response should be masked. */
261  Prompt_Banner, /**< value (the banner) with no label set. */
262  Prompt_Combo, /**< list with choices options. */
263  Prompt_Header, /**< label intended as header and with
264  value. */
265  Prompt_Hidden, /**< hidden value, should be ignored and
266  left unchanged in response. */
267  Prompt_CheckBox, /**< label and value (contrained to true or false) */
268  Prompt_SSO /**< single sign-on authentication token prompt */
269 };
270 
271 #if defined(__midl)
272 [v1_enum] /*serialize as 32 bits*/
273 #endif
274 
275 /*
276  * ***************** !!! ATTENTION !!! ***********************************
277  * *
278  * * When updating this preference enum, you must ensure that the enum in
279  * * vpn/Api/jni/java/Preference.java is also updated.
280  * *
281  * ***************** !!! ATTENTION !!! ***********************************
282  */
284 {
285  ServiceDisable, /**< This preference disable the VPN service.
286  If more than one profile exists and any one
287  profile has VPN enabled, then it will be
288  enabled. False is the default. */
289  CertificateStoreOverride,/**< This preference will trigger an alternate
290  authentication sequence in the API. The
291  preference is only settable by an
292  administrator. */
293  CertificateStore, /**< This preference indicates which Windows certificate
294  store AnyConnect should look in for client certificates.
295  The options are All, Machine and User with a default of All.
296  The preference is only settable by an administrator. */
297  CertificateStoreMac, /**< This preference indicates which macOS keychain
298  AnyConnect should look in for client certificates.
299  The options are All, System and Login with a default of All.
300  The preference is only settable by an administrator. */
301  CertificateStoreLinux, /**< This preference indicates which Linux certificate
302  store AnyConnect should look in for client certificates.
303  The options are All, Machine and User with a default of All.
304  The preference is only settable by an administrator. */
305  ShowPreConnectMessage, /**< The ShowPreConnectMessage preference gives the
306  administrator the ability to display an AnyConnect
307  startup banner message. The message will appear
308  only once per AnyConnect program start. The
309  preference is only settable by an
310  administrator. */
311  AutoConnectOnStart, /**< This preference allows the user to select
312  whether to establish a connection automatically
313  on startup or not. */
314  MinimizeOnConnect, /**< This preference allows the user to select if
315  the GUI should minimize when the connection is
316  established */
317  LocalLanAccess, /**< This preference will provide a mechanism where
318  the user can disable access to their Local LAN. */
319  DisableCaptivePortalDetection, /**<This preference will provide a mechanism where
320  the user can disable captive portal detection.*/
321  AutoReconnect, /**< First control of the reconnect behavior. If the
322  client becomes disconnected for any reason, a
323  reconnect attempt is made. */
324  AutoReconnectBehavior, /**< Second control of the reconnect behavior. When
325  coming out of suspend/hibernate/standby mode.
326  Options are disconnect on suspend and reconnect
327  after suspend. */
328  SuspendOnConnectedStandby, /**< This setting allows to control whether the VPN tunnel
329  is suspended when the system enters the Connected Standby
330  mode. It applies only to Windows 8 and above. */
331  UseStartBeforeLogon, /**< This preference allows an administrator to
332  control the use of the Start Before Logon
333  feature. The preference can be set to true (on)
334  or false (off). */
335  AutoUpdate, /**< Once the Downloader has loaded the profile, it
336  can check the AutoUpdate preference to see if
337  updates are either disabled or enabled */
338  RSASecurIDIntegration, /**< This preference will enable the administrator
339  and possibly end user to select the preferred
340  method of managing their SDI PIN and PASSCODE
341  interactions. Options are Automatic (default),
342  SoftwareTokens and HardwareTokens. */
343  WindowsLogonEnforcement,/**< This preference allows an administrator to
344  control if more than one user may be logged into
345  the client PC during the VPN connection (Windows
346  only). */
347  WindowsVPNEstablishment,/**< This preference allows an administrator to
348  control whether or not remote users may initiate
349  a VPN connection (Windows only). */
350  LinuxLogonEnforcement, /**< This preference allows an administrator to
351  control if more than one user may be logged into
352  the client PC during the VPN connection (Linux
353  only). */
354  LinuxVPNEstablishment, /**< This preference allows an administrator to
355  control whether or not remote users may initiate
356  a VPN connection (Linux only). */
357  ProxySettings, /**< This preference allows an administrator to
358  control how user's proxy setups are handled.*/
359  AllowLocalProxyConnections, /**< This preference allows the administrator to control
360  whether to allow establishing a connection through
361  a local proxy. */
362  PPPExclusion, /**< This preference allows an administrator to control
363  the policy used to exclude routes to
364  PPP servers when connecting over L2TP or PPTP.
365  Options are Automatic (default), Disable,
366  and Override. */
367  PPPExclusionServerIP, /**< When PPPExclusion is set to Manual,
368  the value of this preference allows an
369  end user to specify the address of a
370  PPP server that should be excluded
371  from tunnel traffic. */
372  AutomaticVPNPolicy, /**< This preference allows an administrator to
373  define a policy to automatically manage when a
374  VPN connection should be started or stopped. */
375  TrustedNetworkPolicy, /**< This preference allows an administrator to
376  define a policy for users in trusted networks.
377  The options are: Disconnect or DoNothing. */
378  UntrustedNetworkPolicy, /**< This preference allows an administrator to
379  define a policy for users in untrusted networks.
380  The options are: Connect or DoNothing. */
381  BypassConnectUponSessionTimeout, /**< This preference allows an administrator
382  the ability to instruct the client to bypass the
383  automatic connection retry after a VPN session timeout. */
384  TrustedDNSDomains, /**< This preference defines a list of comma
385  separated DNS suffixes that a network interface
386  in a trusted network might have. */
387  TrustedDNSServers, /**< This preference defines a list of comma
388  separated DNS servers that a network interface
389  in a trusted network might have. */
390  TrustedHttpsServerList, /**< This preference defines a list of comma separated
391  https servers reachable only via a trusted network.*/
392  DisableUntrustedInterfaces, /**< This preference disables interface without trusted
393  server connectivity while in trusted network
394  when there are multiple network interfaces. */
395  AlwaysOn, /**< This preference governs VPN reestablishment after
396  interruptions */
397  ConnectFailurePolicy, /**< This preference gives the network administrator
398  the ability to dictate the network access allowed
399  by the client endpoint device following a VPN
400  connection establishment failure. It is a component
401  of AlwaysOn */
402  AllowCaptivePortalRemediation, /**< This preference gives the network administrator
403  the ability to dictate the network access
404  allowed by the client endpoint device following
405  a VPN connection establishment failure it is a
406  component of AlwaysOn */
407  CaptivePortalRemediationTimeout, /**< This preference allows the network administrator
408  the ability to impose a time limit for captive portal
409  remediation when the ConnectFailurePolicy value is Closed
410  It is a component of AlwaysOn */
411  ApplyLastVPNLocalResourceRules, /**< This preference gives the network administrator
412  the ability to allow split routes and firewall rules
413  to be applied following a VPN connection establishment
414  failure when the ConnectFailurePolicy value is Closed
415  It is a component of AlwaysOn */
416  AllowVPNDisconnect, /**< During Always On, this specifies that the user is allowed to
417  disconnect the VPN session. */
418  SuppressConnectionRetries, /**< During Always On, this preference gives the network administrator
419  the ability to suppress the VPN connection retry attempts */
420  AllowedHosts, /**< During Always On, user has access to the specified hosts
421  when VPN is disconnected. */
422  EnableScripting, /**< This preference allows an administrator to
423  enable scripting (on connect or on
424  disconnect). */
425  TerminateScriptOnNextEvent, /**< This preference dictates whether or not
426  AnyConnect will terminate a running script
427  process if a transition to another
428  scriptable event occurs. */
429  EnablePostSBLOnConnectScript, /**< This preference is used to control whether
430  or not the OnConnect script will be launched
431  from the desktop GUI when a tunnel has been
432  established via SBL. */
433  AutomaticCertSelection, /**< This preference dictates whether or not to disable
434  the default automatic certificate selection for user
435  certificates. If disabled, a certificate selection dialog is
436  displayed. This only applies if the GUI is enabled
437  and not SBL. This only applies to Windows (not WinMobile). */
438  RetainVpnOnLogoff, /**< First control of the logoff behavior. This preference allows
439  an administrator to control if the VPN is terminated or retained
440  after user logs off.*/
441  UserEnforcement, /**< Second control of the logoff behavior. When the VPN connection has
442  been retained after user logged off. Controls what user can log in
443  and keep the VPN connection. Options are same user only and any user. */
444  DeviceLockRequired, /**< This preference indicates whether or not
445  a Windows Mobile device must be configured
446  with a password or PIN prior to establishing
447  a VPN connection. This configuration is
448  only valid on Windows Mobile devices that
449  use the Microsoft Default Local
450  Authentication Provider (LAP). */
451  DeviceLockMaximumTimeoutMinutes, /**< When set to a non-negative number,
452  this preference specifies the maximum
453  number of minutes a device can be
454  inactive before device lock takes
455  into effect. (WM5/WM5AKU2+) */
456  DeviceLockMinimumPasswordLength, /**< When set to a non-negative number,
457  this preference specifies that any
458  PIN/password used for device lock
459  must be equal to or longer than
460  the specified value, in characters.
461  This setting must be pushed down to
462  the mobile device by syncing with
463  an Exchange server before it can be
464  enforced. (WM5AKU2+) */
465  DeviceLockPasswordComplexity, /**< This preference checks whether or
466  not the password belongs to one of
467  three subtypes: alpha, pin, strong */
468  EnableAutomaticServerSelection, /**< Automatic server selection will
469  automatically select the optimal
470  secure gateway for the endpoint */
471  AutoServerSelectionImprovement, /**< During a reconnection attempt after
472  a system resume, this setting
473  specifies the minimum estimated
474  performance improvement required to
475  justify transitioning a user to a new server
476  This value represents percentage in 0..100 */
477  AutoServerSelectionSuspendTime, /**< During a reconnection attempt after
478  a system resume, this specifies the
479  minimum time a user must have been
480  suspended in order to justify a new
481  server selection calculation. Unit is hours */
482  AuthenticationTimeout, /**< Time, in seconds, that the client waits
483  for authentication to be completed.*/
484  SafeWordSofTokenIntegration, /**< This preference will enable the administrator and possibly
485  the end user to enable SafeWord SofToken integration.
486  Options are Enabled (true) and Disabled (false - default). */
487  AllowIPsecOverSSL, /**< if 'true' then tunneling of IPSEC over SSL
488  is made possible with help from the ASA.
489  */
490  ClearSmartcardPin, /**< This preference controls whether the smartcard pin
491  will be cleared on a successful connection*/
492  IPProtocolSupport, /**< This preference controls which protocol(s) will be
493  allowed for the connection*/
494  CaptivePortalRemediationBrowserFailover, /**< This preference is applicable to enhanced captive portal
495  remediation and specifies whether the user is allowed to
496  opt for an external browser for remediation, as opposed to
497  the AnyConnect browser. */
498  AllowManualHostInput, /**< This preference specifies whether the user
499  is allowed to type a new hostname in the VPN
500  edit box. */
501  BlockUntrustedServers, /**< This preference specifies whether the user wants
502  to allow for connections to secure gateways with
503  certificate errors. */
504  PublicProxyServerAddress, /**< This preference specifies the public proxy server
505  address to be used. This number is in the format
506  ServerAddr:ServerPort (ex. 101.89.85.444:8080)
507  or just the FQDN. */
508  CertificatePinning, /**< This preference specifies whether Certificate Pinning
509  check should be performed during server certificate
510  verification. */
511  UnknownPreference
512 };
513 
514 
515 /**
516  * Indicates the scope of the preferences contained in a PreferenceInfo object
517  */
518 #if defined(__midl)
519 [v1_enum] /*serialize as 32 bits*/
520 #endif
522 {
523  User, /**< Indicates that the preferences were set by a user */
524  Global, /**< Indicates that the preferences are global */
525  UserAndGlobal /**< Indicates that we have both user and global preferences */
526 };
527 
528 /**
529  * Indicates the client mode of operation. Unlike tunneling mode or other
530  * mutually exclusive modes, client operating modes are independent settings,
531  * several of which can be turned on simultaneously.
532  */
533 #if defined(__midl)
534 [v1_enum] /*serialize as 32 bits*/
535 #endif
537 {
538  FIPS = (1 << 0), /**< Indicates that the client is
539  running in FIPS mode. */
540  StartBeforeLogon = (1 << 1), /**< Indicates that the client is
541  running in Start Before Login
542  mode. */
543  GUI = (1 << 2), /**< Indicates that the client is
544  a GUI client. */
545  TrustedNetworkDetection = (1 << 3), /**< Indicates that a Trusted Network
546  Detection policy is enabled for
547  the client. */
548  AlwaysOnVpn = (1 << 4), /**< Indicates that the Always On
549  policy is enabled for the client. */
550  NetworkIssue = (1 << 5), /**< For user notifications only.
551  Indication by API to the UI that
552  there is a network condition. */
553  Quarantined = (1 << 6), /**< Indicates that the VPN session is being
554  Quarantined by the secure gateway. */
555  AutomaticHeadendSelection= (1 << 7), /**< Indicates that Automatic Headend
556  is enabled. */
557  DisconnectAllowed = (1 << 8), /**< Indicates that the user is allowed
558  to disconnect the VPN based on
559  policy. */
560  VPNDisabled = (1 << 9), /**< Indicates that the VPN service is
561  to be marked as disabled. */
562  SCEPMode = (1 << 10), /**< Indicates that the client is
563  performing a SCEP cert enrollment. */
564  OnTrustedNetwork = (1 << 11), /**< Indicates that at last check, the
565  client detected that it was on
566  a trusted network. */
567  ManualHostInputAllowed = (1 << 12), /**< Indicates that the user is allowed
568  to add a new host by typing its name
569  in the VPN edit box. */
570  ErrorSuppressed = (1 << 13), /**< Indicates a connection error has
571  been returned fronm the agent, but
572  was suppressed to warning to
573  prevent popup dialog in the UI. */
574  StrictMode = (1 << 14), /**< Indicates that the client is
575  running in strict certificate trust mode. */
576  CLI = (1 << 15), /**< Indicates that the client is
577  a CLI client. */
578  Management = (1 << 16) /**< Indicates that the client is strictly
579  used for initiating a management tunnel. */
580 };
581 
582 /**
583  * Indicates the last error seen by the API in this connection attempt.
584  */
585 #if defined(__midl)
586 [v1_enum] /*serialize as 32 bits*/
587 #endif
589 {
590  VPNSuccess = 0, /**< No error has occurred. */
591  VPNError_Generic_FatalError = 1, /**< An error of unknown type has
592  occured */
593 
594  VPNError_Connection_Error = 100, /**< An unknown connection error has
595  occured, such as bad hostname, bad
596  group, etc. */
597  VPNError_Connection_InvalidGroupURL, /**< Invalid Group URL specified in the
598  server address */
599 
600  VPNError_Network_Error = 200, /**< An unknown network error has
601  occured, such as DNS resolution
602  error, unable to open socket,
603  routing error, captive portal,
604  etc. */
605 
606  VPNError_Authentication_Error = 300, /**< An unknown user authenication
607  error has occured. */
608 
609  VPNError_Authentication_DAP_Terminate, /**< Access Denied: Your system does
610  not meet policy requirements (DAP). */
611 
612  VPNError_ClientCertificate_UnknownError = 400, /**< An unknown client
613  certificate error has
614  occured. */
615  VPNError_ClientCertificate_Missing, /**< A client certificate is required
616  but no client certificate has been
617  found on the system. */
618  VPNError_ClientCertificate_Expired, /**< The client certificate has expired */
619  VPNError_ClientCertificate_NotYetValid, /**< The client certificate is not
620  yet valid. */
621 
622  VPNError_ServerCertificate_UnknownError = 500, /**< An unknown error has
623  occured when validating
624  the server certificate. */
625  VPNError_ServerCertificate_Expired, /**< The server certificate has
626  expired. */
627  VPNError_ServerCertificate_NotYetValid /**< The server certificate is not
628  yet valid. */
629 };
630 
632 {
633  CertAuth_Automatic, /**< Will try each available certificate in succession
634  until authentication is obtained or we run out of
635  available certificates */
636  CertAuth_Disabled, /**< Will disable Certificate Based Authentication */
637  CertAuth_Manual /**< Will only use preconfigured certificate to attempt
638  Certificate Based Authentication */
639 };
640 
641 enum CertificateType
642 {
643  CertificateType_Client,
644  CertificateType_SystemTrusted,
645  CertificateType_Server
646 };
647 
648 enum CertConfirmReason
649 {
650  CertConfirmReason_Unspecified,
651  CertConfirmReason_NameMismatch,
652  CertConfirmReason_Expired,
653  CertConfirmReason_NotValidYet,
654  CertConfirmReason_UntrustedSource,
655  CertConfirmReason_InvalidUse,
656  CertConfirmReason_Revoked,
657  CertConfirmReason_Malformed,
658  CertConfirmReason_NotFipsCompliant,
659  CertConfirmReason_InvalidateDate,
660  CertConfirmReason_SignatureAlgorithm,
661  CertConfirmReason_KeySize
662 };
663 
664 enum UserResponseError
665 {
666  UserResponseError_None,
667  UserResponseError_Unspecified,
668  UserResponseError_BadServerCert,
669  UserResponseError_SsoNavigation,
670  UserResponseError_SsoGettingCookie,
671  UserResponseError_SsoTimeout,
672  UserResponseError_SsoMissingDependency,
673  UserResponseError_SsoClientCertRequest,
674  UserResponseError_SsoAborted,
675 };
676 
677 #if defined(__midl)
678 [v1_enum] /*serialize as 32 bits*/
679 #endif
680 enum ClientType
681 {
682  ClientType_GUI,
683  ClientType_GUI_SBL,
684  ClientType_CLI,
685  ClientType_MGMT
686 };
687 
688 #endif // _APISTDHEADER_
VPNError_ClientCertificate_NotYetValid
@ VPNError_ClientCertificate_NotYetValid
Definition: api.h:619
CertificateStoreMac
@ CertificateStoreMac
Definition: api.h:297
ConnectFailurePolicy
@ ConnectFailurePolicy
Definition: api.h:397
REFRESHHOSTNAMES
@ REFRESHHOSTNAMES
Definition: api.h:195
Prompt_Hidden
@ Prompt_Hidden
Definition: api.h:265
SuspendOnConnectedStandby
@ SuspendOnConnectedStandby
Definition: api.h:328
VPNError_Connection_Error
@ VPNError_Connection_Error
Definition: api.h:594
WMHintReason
WMHintReason
Definition: api.h:210
AutoConnectOnStart
@ AutoConnectOnStart
Definition: api.h:311
MINIMIZE
@ MINIMIZE
Definition: api.h:192
MsgType_Warn
@ MsgType_Warn
Definition: api.h:112
CREDENTIALS
@ CREDENTIALS
Definition: api.h:238
CertificateStore
@ CertificateStore
Definition: api.h:293
MANUAL_PKCS12_IMPORT
@ MANUAL_PKCS12_IMPORT
Definition: api.h:242
VPNError_Network_Error
@ VPNError_Network_Error
Definition: api.h:600
DeviceLockPasswordComplexity
@ DeviceLockPasswordComplexity
Definition: api.h:465
MsgType_Ephemeral_Alert
@ MsgType_Ephemeral_Alert
Definition: api.h:118
DeviceLockMaximumTimeoutMinutes
@ DeviceLockMaximumTimeoutMinutes
Definition: api.h:451
AutoUpdate
@ AutoUpdate
Definition: api.h:335
ClearSmartcardPin
@ ClearSmartcardPin
Definition: api.h:490
FIPS
@ FIPS
Definition: api.h:538
ErrorSuppressed
@ ErrorSuppressed
Definition: api.h:570
EnablePostSBLOnConnectScript
@ EnablePostSBLOnConnectScript
Definition: api.h:429
DISCONNECT
@ DISCONNECT
Definition: api.h:219
VPNError_ServerCertificate_UnknownError
@ VPNError_ServerCertificate_UnknownError
Definition: api.h:622
WindowsVPNEstablishment
@ WindowsVPNEstablishment
Definition: api.h:347
PAUSING
@ PAUSING
Definition: api.h:156
EnableScripting
@ EnableScripting
Definition: api.h:422
MsgType_Alert
@ MsgType_Alert
Definition: api.h:111
GUI
@ GUI
Definition: api.h:543
PreferenceId
PreferenceId
Definition: api.h:284
SDITokenType
SDITokenType
Definition: api.h:132
DisableCaptivePortalDetection
@ DisableCaptivePortalDetection
Definition: api.h:319
VPNError_Generic_FatalError
@ VPNError_Generic_FatalError
Definition: api.h:591
AutoServerSelectionImprovement
@ AutoServerSelectionImprovement
Definition: api.h:471
AllowedHosts
@ AllowedHosts
Definition: api.h:420
DisconnectAllowed
@ DisconnectAllowed
Definition: api.h:557
Prompt_Header
@ Prompt_Header
Definition: api.h:263
TrustedNetworkPolicy
@ TrustedNetworkPolicy
Definition: api.h:375
Quarantined
@ Quarantined
Definition: api.h:553
Prompt_Banner
@ Prompt_Banner
Definition: api.h:261
PAUSED
@ PAUSED
Definition: api.h:157
AllowIPsecOverSSL
@ AllowIPsecOverSSL
Definition: api.h:487
AutomaticVPNPolicy
@ AutomaticVPNPolicy
Definition: api.h:372
SERVICESTOPPED
@ SERVICESTOPPED
Definition: api.h:220
DeviceLockRequired
@ DeviceLockRequired
Definition: api.h:444
UntrustedNetworkPolicy
@ UntrustedNetworkPolicy
Definition: api.h:378
CLOSECREDENTIALPOPUP
@ CLOSECREDENTIALPOPUP
Definition: api.h:198
MessageType
MessageType
Definition: api.h:109
CertAuthMode
CertAuthMode
Definition: api.h:632
Prompt_Input
@ Prompt_Input
Definition: api.h:258
CONNECT
@ CONNECT
Definition: api.h:222
DISCONNECTED
@ DISCONNECTED
Definition: api.h:147
SSOPOLLING
@ SSOPOLLING
Definition: api.h:158
AutomaticHeadendSelection
@ AutomaticHeadendSelection
Definition: api.h:555
MinimizeOnConnect
@ MinimizeOnConnect
Definition: api.h:314
VPNError_ClientCertificate_Missing
@ VPNError_ClientCertificate_Missing
Definition: api.h:615
WMHint
WMHint
Definition: api.h:191
PublicProxyServerAddress
@ PublicProxyServerAddress
Definition: api.h:504
VPNState
VPNState
Definition: api.h:145
MsgType_UrlError
@ MsgType_UrlError
Definition: api.h:115
DeviceLockMinimumPasswordLength
@ DeviceLockMinimumPasswordLength
Definition: api.h:456
UserAndGlobal
@ UserAndGlobal
Definition: api.h:525
Management
@ Management
Definition: api.h:578
AlwaysOnVpn
@ AlwaysOnVpn
Definition: api.h:548
ProxySettings
@ ProxySettings
Definition: api.h:357
CertAuth_Disabled
@ CertAuth_Disabled
Definition: api.h:636
SuppressConnectionRetries
@ SuppressConnectionRetries
Definition: api.h:418
CertificateStoreOverride
@ CertificateStoreOverride
Definition: api.h:289
WindowsLogonEnforcement
@ WindowsLogonEnforcement
Definition: api.h:343
CertAuth_Automatic
@ CertAuth_Automatic
Definition: api.h:633
VPNError_ClientCertificate_Expired
@ VPNError_ClientCertificate_Expired
Definition: api.h:618
AutomaticCertSelection
@ AutomaticCertSelection
Definition: api.h:433
MsgType_Announcement
@ MsgType_Announcement
Definition: api.h:116
MsgType_Info
@ MsgType_Info
Definition: api.h:113
REFRESHPREFS
@ REFRESHPREFS
Definition: api.h:196
Prompt_Password
@ Prompt_Password
Definition: api.h:259
PPPExclusionServerIP
@ PPPExclusionServerIP
Definition: api.h:367
VPNError
VPNError
Definition: api.h:589
SECONDGUISTART
@ SECONDGUISTART
Definition: api.h:211
CertAuth_Manual
@ CertAuth_Manual
Definition: api.h:637
BlockUntrustedServers
@ BlockUntrustedServers
Definition: api.h:501
Prompt_CheckBox
@ Prompt_CheckBox
Definition: api.h:267
VPNError_Authentication_DAP_Terminate
@ VPNError_Authentication_DAP_Terminate
Definition: api.h:609
PROXY
@ PROXY
Definition: api.h:240
DISCONNECTING
@ DISCONNECTING
Definition: api.h:149
TrustedNetworkDetection
@ TrustedNetworkDetection
Definition: api.h:545
VPNSubState
VPNSubState
Definition: api.h:169
PROXYREQUEST
@ PROXYREQUEST
Definition: api.h:215
SERVICEFAILURE
@ SERVICEFAILURE
Definition: api.h:217
AllowVPNDisconnect
@ AllowVPNDisconnect
Definition: api.h:416
EnableAutomaticServerSelection
@ EnableAutomaticServerSelection
Definition: api.h:468
VPNError_Authentication_Error
@ VPNError_Authentication_Error
Definition: api.h:606
CLI
@ CLI
Definition: api.h:576
ApplyLastVPNLocalResourceRules
@ ApplyLastVPNLocalResourceRules
Definition: api.h:411
SINGLESIGNON
@ SINGLESIGNON
Definition: api.h:246
OperatingMode
OperatingMode
Definition: api.h:537
StrictMode
@ StrictMode
Definition: api.h:574
UseStartBeforeLogon
@ UseStartBeforeLogon
Definition: api.h:331
TrustedDNSServers
@ TrustedDNSServers
Definition: api.h:387
RSASecurIDIntegration
@ RSASecurIDIntegration
Definition: api.h:338
ConnectPromptType
ConnectPromptType
Definition: api.h:234
AllowCaptivePortalRemediation
@ AllowCaptivePortalRemediation
Definition: api.h:402
ManualHostInputAllowed
@ ManualHostInputAllowed
Definition: api.h:567
Prompt_Combo
@ Prompt_Combo
Definition: api.h:262
CONNECTED
@ CONNECTED
Definition: api.h:146
SINGLELOGOUT
@ SINGLELOGOUT
Definition: api.h:247
OPEN
@ OPEN
Definition: api.h:193
SHOWCONNECTING
@ SHOWCONNECTING
Definition: api.h:197
SafeWordSofTokenIntegration
@ SafeWordSofTokenIntegration
Definition: api.h:484
VPNError_ServerCertificate_Expired
@ VPNError_ServerCertificate_Expired
Definition: api.h:625
VPNSuccess
@ VPNSuccess
Definition: api.h:590
VPNError_ClientCertificate_UnknownError
@ VPNError_ClientCertificate_UnknownError
Definition: api.h:612
MsgType_Error
@ MsgType_Error
Definition: api.h:110
User
@ User
Definition: api.h:523
VPNError_Connection_InvalidGroupURL
@ VPNError_Connection_InvalidGroupURL
Definition: api.h:597
PPPExclusion
@ PPPExclusion
Definition: api.h:362
AllowManualHostInput
@ AllowManualHostInput
Definition: api.h:498
STATUS
@ STATUS
Definition: api.h:244
TerminateScriptOnNextEvent
@ TerminateScriptOnNextEvent
Definition: api.h:425
UserEnforcement
@ UserEnforcement
Definition: api.h:441
QUIT
@ QUIT
Definition: api.h:194
CERTIFICATE
@ CERTIFICATE
Definition: api.h:235
AllowLocalProxyConnections
@ AllowLocalProxyConnections
Definition: api.h:359
AutoReconnect
@ AutoReconnect
Definition: api.h:321
AuthenticationTimeout
@ AuthenticationTimeout
Definition: api.h:482
LinuxVPNEstablishment
@ LinuxVPNEstablishment
Definition: api.h:354
VPNError_ServerCertificate_NotYetValid
@ VPNError_ServerCertificate_NotYetValid
Definition: api.h:627
LocalLanAccess
@ LocalLanAccess
Definition: api.h:317
RetainVpnOnLogoff
@ RetainVpnOnLogoff
Definition: api.h:438
IPProtocolSupport
@ IPProtocolSupport
Definition: api.h:492
CertificateStoreLinux
@ CertificateStoreLinux
Definition: api.h:301
StartBeforeLogon
@ StartBeforeLogon
Definition: api.h:540
AutoReconnectBehavior
@ AutoReconnectBehavior
Definition: api.h:324
ShowPreConnectMessage
@ ShowPreConnectMessage
Definition: api.h:305
OnTrustedNetwork
@ OnTrustedNetwork
Definition: api.h:564
NetworkIssue
@ NetworkIssue
Definition: api.h:550
LEGACY_SINGLESIGNON
@ LEGACY_SINGLESIGNON
Definition: api.h:248
CONNECTING
@ CONNECTING
Definition: api.h:148
AlwaysOn
@ AlwaysOn
Definition: api.h:395
RECONNECTING
@ RECONNECTING
Definition: api.h:150
CaptivePortalRemediationTimeout
@ CaptivePortalRemediationTimeout
Definition: api.h:407
Prompt_SSO
@ Prompt_SSO
Definition: api.h:268
LinuxLogonEnforcement
@ LinuxLogonEnforcement
Definition: api.h:350
TrustedDNSDomains
@ TrustedDNSDomains
Definition: api.h:384
SCEPMode
@ SCEPMode
Definition: api.h:562
CaptivePortalRemediationBrowserFailover
@ CaptivePortalRemediationBrowserFailover
Definition: api.h:494
AutoServerSelectionSuspendTime
@ AutoServerSelectionSuspendTime
Definition: api.h:477
CertificatePinning
@ CertificatePinning
Definition: api.h:508
DisableUntrustedInterfaces
@ DisableUntrustedInterfaces
Definition: api.h:392
VPNDisabled
@ VPNDisabled
Definition: api.h:560
PreferenceScope
PreferenceScope
Definition: api.h:522
MsgType_Status
@ MsgType_Status
Definition: api.h:114
BypassConnectUponSessionTimeout
@ BypassConnectUponSessionTimeout
Definition: api.h:381
Global
@ Global
Definition: api.h:524
ServiceDisable
@ ServiceDisable
Definition: api.h:285
PromptType
PromptType
Definition: api.h:258
TrustedHttpsServerList
@ TrustedHttpsServerList
Definition: api.h:390