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