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