AnyConnect Secure Mobility Client 4.8.02045

include/api.h

Go to the documentation of this file.
00001 #ifndef _APISTDHEADER_
00002 #define _APISTDHEADER_
00003 
00004 /**
00005  * @file
00006  * This file contains some basic compiler definitions as well as common enums.
00007  */
00008 
00009 //Not compatible with MIDL
00010 #if !defined(__midl)
00011 #ifdef _WIN32
00012     #pragma warning(disable:4251 4786)
00013 
00014     #ifndef UNICODE
00015         #define UNICODE
00016     #endif // UNICODE
00017 
00018     #ifndef _UNICODE
00019         #define _UNICODE
00020     #endif // _UNICODE
00021 
00022     #ifndef tstring
00023 /** std::wstring */
00024         #define tstring std::wstring    /**< my wstring description */
00025     #endif // tstring
00026 
00027 #else // non-windows
00028 
00029     #ifndef tstring
00030         #define tstring std::string
00031     #endif // tstring
00032 
00033 #endif // _WIN32
00034 
00035 #ifdef _UNICODE
00036     #define tostream std::wostream
00037 #else
00038     #define tostream std::ostream
00039 #endif /* UNICODE */
00040 
00041 
00042 //used when including implementation files directly in an EXE.
00043 #ifdef _NOEXPORTDLL
00044     #define VPN_VPNAPI
00045 #else
00046     #ifdef _WIN32
00047         #ifdef VPN_APIEXPORTS //api
00048             #define VPN_VPNAPI __declspec(dllexport)
00049         #else
00050             #define VPN_VPNAPI __declspec(dllimport)
00051         #endif
00052     #else    
00053         #ifdef VPN_APIEXPORTS
00054             #define VPN_VPNAPI  __attribute__((visibility("default")))
00055         #else
00056             #define VPN_VPNAPI
00057         #endif
00058     #endif //_WIN32
00059 #endif //NOEXPORTDLL
00060 
00061 #ifndef OUT
00062 #define OUT
00063 #endif
00064 
00065 #ifdef __cplusplus //only include if C++ is being used, 
00066                    //C code also includes api.h for COM proxy of enumerators.
00067 #include <string>
00068 #include <map>
00069 #include <list>
00070 
00071 typedef std::map<tstring, tstring> ApiStringMap;
00072 typedef std::map<tstring, std::list<tstring> > ApiStringListMap;
00073 
00074 #endif //__cplusplus
00075 #endif //#if !defined(__midl)
00076 
00077 
00078 /***** PUT ONLY SHARED ENUMS EXPOSED TO USERS OF API FROM THIS POINT UNTIL END *****\
00079 ********* make sure to add the [v1_enum] inside a __midl define to new enums ********
00080 \******************** This is also compiled with IDL compiler **********************/
00081 
00082 #include "GlobalEnums.h"
00083 /**
00084  * MessageType
00085  * presents a level of severity associated with messages that are
00086  * sent to the API.  The severity can be useful for deciding how a message is
00087  * to be shown.  A UI might decide based on type to show a message as
00088  * a modal dialog versus a message written to the status area for an existing UI.
00089  */
00090 #if defined(__midl)
00091 [v1_enum] /*serialize as 32 bits*/
00092 #endif
00093 enum MessageType
00094 {
00095     MsgType_Error,      /**< Issue usually requiring user to acknowledge */
00096     MsgType_Alert,      /**< Warning message that needs to be shown to user. */
00097     MsgType_Warn,       /**< Less severe, not required to be shown to user */
00098     MsgType_Info,       /**< General message providing status, progress, etc. */
00099     MsgType_Status      /**< Can be used to indicate unexpected tunnel status change. */
00100 };
00101 
00102 
00103 /**
00104  * Identifies the type of token that was used successfully when SDI
00105  * Authentication is in use.
00106  */
00107 #if defined(__midl)
00108 [v1_enum] /*serialize as 32 bits*/
00109 #endif
00110 enum SDITokenType 
00111 { 
00112     SDITT_NONE, 
00113     SDITT_HARDWARE, 
00114     SDITT_SOFTWARE 
00115 };
00116 
00117 /**
00118  * Provides the current state of the VPN tunnel.
00119  */
00120 #if defined(__midl)
00121 [v1_enum] /*serialize as 32 bits*/
00122 #endif
00123 enum VPNState
00124 {
00125     CONNECTED     = STATE_CONNECTED,        /**< VPN is active */
00126     DISCONNECTED  = STATE_DISCONNECTED,     /**< VPN is inactive */
00127     CONNECTING    = STATE_CONNECTING,       /**< VPN is being established */
00128     DISCONNECTING = STATE_DISCONNECTING,    /**< VPN is being terminated */
00129     RECONNECTING  = STATE_RECONNECTING,     /**< VPN is being re-connected.  This state 
00130                                                  can occur due to network or other
00131                                                  temporary problems.  The state
00132                                                  indicates that the VPN is temporarily
00133                                                  unavailable and indicates the
00134                                                  connection is being re-established. */
00135     PAUSING       = STATE_PAUSING,          /**< VPN is being paused. */
00136     PAUSED        = STATE_PAUSED,           /**< VPN is paused. */
00137     SSOPOLLING    = STATE_SSOPOLLING,       /**< API is doing auth-poll, VPN is disconnected. */
00138     UNKNOWN       = ~0
00139 };
00140 
00141 /**
00142  * Provides the current sub-state of the VPN tunnel.
00143  */
00144 #if defined(__midl)
00145 [v1_enum] /*serialize as 32 bits*/
00146 #endif
00147 enum VPNSubState
00148 {
00149     VPNSS_NORMAL                            = VCSS_NORMAL,
00150     VPNSS_INDEFINITE_DELAY                  = VCSS_INDEFINITE_DELAY,
00151     VPNSS_SESSION_EXPIRING                  = VCSS_SESSION_EXPIRING,
00152     VPNSS_MT_DISCONNECTED_DISABLED          = VCSS_MT_DISCONNECTED_DISABLED,
00153     VPNSS_MT_DISCONNECTED_TRUSTED_NW        = VCSS_MT_DISCONNECTED_TRUSTED_NW,
00154     VPNSS_MT_DISCONNECTED_USER_TUNNEL_ACTIVE= VCSS_MT_DISCONNECTED_USER_TUNNEL_ACTIVE,
00155     VPNSS_MT_DISCONNECTED_LAUNCH_FAILED     = VCSS_MT_DISCONNECTED_LAUNCH_FAILED,
00156     VPNSS_MT_DISCONNECTED_CONNECT_FAILED    = VCSS_MT_DISCONNECTED_CONNECT_FAILED,
00157     VPNSS_MT_DISCONNECTED_BAD_VPN_CONFIG    = VCSS_MT_DISCONNECTED_BAD_VPN_CONFIG,
00158     VPNSS_MT_DISCONNECTED_SW_UP_PENDING     = VCSS_MT_DISCONNECTED_SW_UP_PENDING
00159 };
00160 
00161 /**
00162  * WMHint
00163  * provides a hint for the GUI to either minimize or un-minimize.
00164  */
00165 #if defined(__midl)
00166 [v1_enum] /*serialize as 32 bits*/
00167 #endif
00168 enum WMHint
00169 {
00170     MINIMIZE,       /**< hint to minimize GUI */
00171     OPEN,           /**< hint to un-minimize GUI */
00172     QUIT,           /**< hint that GUI should close.  @see WMHintReason */
00173     REFRESHHOSTNAMES,/**< hint to refresh the list of secure gateways */
00174     REFRESHPREFS,   /**< hint to refresh the preferences */
00175     SHOWCONNECTING,  /**< hint to display "connecting" status */
00176     CLOSECREDENTIALPOPUP, /**< hint to close the credentials popup */
00177 };
00178 
00179 
00180 /**
00181  * WMHintReason
00182  * provides a reason indicator for the #WMHint
00183  */
00184 #if defined(__midl)
00185 [v1_enum] /*serialize as 32 bits*/
00186 #endif
00187 enum WMHintReason
00188 {
00189     SECONDGUISTART, /**< Indicates a second GUI has been launched.  This
00190                          indicator is used to suggest that the GUI
00191                          already running be OPENed and that the first one
00192                          should exit. */
00193     PROXYREQUEST,   /**< Proxy credential request can be for web-launch or
00194                          standalone-initiated connections. */
00195     SERVICEFAILURE, /**< This tag is used when the VPN service
00196                          is no longer available. */
00197     DISCONNECT,     /**< Any disconnect notices should be seen by the user. */
00198     SERVICESTOPPED, /**< This tag will be used in cases where the VPN service
00199                          has been stopped. */
00200     CONNECT,        /**< Tag indicating an action to be taken due to connect,
00201                          for example a request to minimize the UI. */
00202     REASONUNKNOWN   /**< */
00203 };
00204 
00205 /**
00206  * provides an indication of the type of credential data being requested.
00207  */
00208 #if defined(__midl)
00209 [v1_enum] /*serialize as 32 bits*/
00210 #endif
00211 enum ConnectPromptType
00212 {
00213     CERTIFICATE,    /**< Indicates a certificate-only type of connection and
00214                          would not normally be sent to client unless a
00215                          post-authentication banner is to be displayed. */
00216     CREDENTIALS,    /**< Indicates that the user is to be prompted for authentication
00217                          credentials */
00218     PROXY,          /**< Indicates that the user is to be prompted for
00219                          proxy-authentication credentials */
00220     MANUAL_PKCS12_IMPORT, /**< Indicates that the user is to be prompted for passwords related
00221                               to PKCS12 import*/
00222     STATUS,         /**< Indicates that status messages are to be displayed to
00223                          the user*/
00224     SINGLESIGNON,   /**< Indicates an embedded browser based single sign-on authentication method is requested. */
00225     SINGLELOGOUT,   /**< Indicates an embedded browser based single sign-on authentication logout is requested. */
00226     LEGACY_SINGLESIGNON,   /**< (deprecated) Indicates a browser based single sign-on authentication method is requested. */
00227 };
00228 
00229 
00230 /**
00231  * Indicates the prompt or credential type.
00232  */
00233 #if defined(__midl)
00234 [v1_enum] /*serialize as 32 bits*/
00235 #endif
00236 enum PromptType { Prompt_Input,     /**< label and value. */
00237                   Prompt_Password,  /**< label and value, indicates user
00238                                          response should be masked. */
00239                   Prompt_Banner,    /**< value (the banner) with no label set. */
00240                   Prompt_Combo,     /**< list with choices options. */
00241                   Prompt_Header,    /**< label intended as header and with
00242                                          value. */
00243                   Prompt_Hidden,    /**< hidden value, should be ignored and
00244                                          left unchanged in response. */
00245                   Prompt_CheckBox,  /**< label and value (contrained to true or false) */
00246                   Prompt_SSO        /**< single sign-on authentication token prompt */
00247 };
00248 
00249 #if defined(__midl)
00250 [v1_enum] /*serialize as 32 bits*/
00251 #endif
00252 
00253 /* 
00254  * ***************** !!! ATTENTION !!! ***********************************
00255  * *
00256  * * When updating this preference enum, you must ensure that the enum in
00257  * * vpn/Api/jni/java/Preference.java is also updated.
00258  * *
00259  * ***************** !!! ATTENTION !!! ***********************************
00260  */
00261 enum PreferenceId 
00262 {
00263     ServiceDisable,             /**< This preference disable the VPN service.  
00264                                  If more than one profile exists and any one
00265                                  profile has VPN enabled, then it will be
00266                                  enabled.  False is the default. */
00267     CertificateStoreOverride,/**< This preference will trigger an alternate 
00268                                  authentication sequence in the API. The 
00269                                  preference is only settable by an 
00270                                  administrator. */
00271     CertificateStore,       /**< This preference indicates which Windows certificate 
00272                                  store AnyConnect should look in for    
00273                                  certificates. The options are All, Machine 
00274                                  and User with a default of All. The preference 
00275                                  is only settable by an administrator. */
00276     CertificateStoreMac,       /**< This preference indicates which macOS keychain
00277                                 AnyConnect should look in for certificates. 
00278                                 The options are All, System and Login with a default of All. 
00279                                 The preference is only settable by an administrator. */
00280     ShowPreConnectMessage,  /**< The ShowPreConnectMessage preference gives the
00281                                  administrator the ability to display an AnyConnect 
00282                                  startup banner message. The message will appear 
00283                                  only once per AnyConnect program start. The  
00284                                  preference is only settable by an 
00285                                  administrator. */
00286     AutoConnectOnStart,     /**< This preference allows the user to select 
00287                                  whether to establish a connection automatically
00288                                  on startup or not. */
00289     MinimizeOnConnect,      /**< This preference allows the user to select if
00290                                  the GUI should minimize when the connection is
00291                                  established */
00292     LocalLanAccess,         /**< This preference will provide a mechanism where 
00293                                  the user can disable access to their Local LAN. */
00294     DisableCaptivePortalDetection, /**<This preference will provide a mechanism where
00295                                    the user can disable captive portal detection.*/
00296     AutoReconnect,          /**< First control of the reconnect behavior. If the 
00297                                  client becomes disconnected for any reason, a 
00298                                  reconnect attempt is made.   */
00299     AutoReconnectBehavior,  /**< Second control of the reconnect behavior. When
00300                                  coming out of suspend/hibernate/standby mode. 
00301                                  Options are disconnect on suspend and reconnect 
00302                                  after suspend. */
00303     SuspendOnConnectedStandby,  /**< This setting allows to control whether the VPN tunnel
00304                                      is suspended when the system enters the Connected Standby 
00305                                      mode. It applies only to Windows 8 and above. */
00306     UseStartBeforeLogon,    /**< This preference allows an administrator to 
00307                                  control the use of the Start Before Logon 
00308                                  feature. The preference can be set to true (on) 
00309                                  or false (off). */
00310     AutoUpdate,             /**< Once the Downloader has loaded the profile, it 
00311                                  can check the AutoUpdate preference to see if 
00312                                  updates are either disabled or enabled */
00313     RSASecurIDIntegration,  /**< This preference will enable the administrator 
00314                                  and possibly end user to select the preferred 
00315                                  method of managing their SDI PIN and PASSCODE 
00316                                  interactions. Options are Automatic (default), 
00317                                  SoftwareTokens and HardwareTokens. */
00318     WindowsLogonEnforcement,/**< This preference allows an administrator to
00319                                  control if more than one user may be logged into
00320                                  the client PC during the VPN connection (Windows
00321                                  only). */
00322     WindowsVPNEstablishment,/**< This preference allows an administrator to
00323                                  control whether or not remote users may initiate
00324                                  a VPN connection (Windows only). */
00325     LinuxLogonEnforcement,  /**< This preference allows an administrator to
00326                                  control if more than one user may be logged into
00327                                  the client PC during the VPN connection (Linux 
00328                                  only). */
00329     LinuxVPNEstablishment,  /**< This preference allows an administrator to
00330                                  control whether or not remote users may initiate
00331                                  a VPN connection (Linux only). */
00332     ProxySettings,          /**< This preference allows an administrator to
00333                                  control how user's proxy setups are handled.*/
00334     AllowLocalProxyConnections, /**< This preference allows the administrator to control
00335                                  whether to allow establishing a connection through
00336                                  a local proxy. */
00337     PPPExclusion,           /**< This preference allows an administrator to control
00338                                  the policy used to exclude routes to
00339                                  PPP servers when connecting over L2TP or PPTP.
00340                                  Options are Automatic (default), Disable,
00341                                  and Override. */
00342     PPPExclusionServerIP,   /**< When PPPExclusion is set to Manual,
00343                                  the value of this preference allows an
00344                                  end user to specify the address of a
00345                                  PPP server that should be excluded
00346                                  from tunnel traffic. */
00347     AutomaticVPNPolicy,     /**< This preference allows an administrator to 
00348                                  define a policy to automatically manage when a 
00349                                  VPN connection should be started or stopped. */
00350     TrustedNetworkPolicy,   /**< This preference allows an administrator to 
00351                                  define a policy for users in trusted networks.
00352                                  The options are: Disconnect or DoNothing. */
00353     UntrustedNetworkPolicy, /**< This preference allows an administrator to 
00354                                  define a policy for users in untrusted networks.
00355                                  The options are: Connect or DoNothing. */
00356     TrustedDNSDomains,      /**< This preference defines a list of comma 
00357                                  separated DNS suffixes that a network interface
00358                                  in a trusted network might have. */
00359     TrustedDNSServers,      /**< This preference defines a list of comma 
00360                                  separated DNS servers that a network interface
00361                                  in a trusted network might have. */
00362     TrustedHttpsServerList,  /**< This preference defines a list of comma separated
00363                                   https servers reachable only via a trusted network.*/
00364     AlwaysOn,               /**< This preference governs VPN reestablishment after
00365                                  interruptions */
00366     ConnectFailurePolicy,   /**< This preference gives the network administrator 
00367                                  the ability to dictate the network access allowed
00368                                  by the client endpoint device following a VPN
00369                                  connection establishment failure. It is a component
00370                                  of AlwaysOn */
00371     AllowCaptivePortalRemediation, /**< This preference gives the network administrator
00372                                     the ability to dictate the network access 
00373                                     allowed by the client endpoint device following
00374                                     a VPN connection establishment failure it is a
00375                                     component of AlwaysOn */
00376     CaptivePortalRemediationTimeout, /**< This preference allows the network administrator
00377                                      the ability to impose a time limit for captive portal 
00378                                      remediation when the ConnectFailurePolicy value is Closed
00379                                      It is a component of AlwaysOn */
00380     ApplyLastVPNLocalResourceRules, /**< This preference gives the network administrator 
00381                                        the ability to allow split routes and firewall rules 
00382                                        to be applied following a VPN connection establishment
00383                                        failure when the ConnectFailurePolicy value is Closed
00384                                        It is a component of AlwaysOn */
00385     AllowVPNDisconnect,     /**< During Always On, this specifies that the user is allowed to
00386                                  disconnect the VPN session. */
00387     EnableScripting,        /**< This preference allows an administrator to 
00388                                  enable scripting (on connect or on
00389                                  disconnect). */
00390     TerminateScriptOnNextEvent,   /**< This preference dictates whether or not
00391                                        AnyConnect will terminate a running script
00392                                        process if a transition to another
00393                                        scriptable event occurs. */
00394     EnablePostSBLOnConnectScript, /**< This preference is used to control whether
00395                                        or not the OnConnect script will be launched
00396                                        from the desktop GUI when a tunnel has been
00397                                        established via SBL. */
00398     AutomaticCertSelection,   /**< This preference dictates whether or not to disable
00399                                    the default automatic certificate selection for user
00400                                    certificates. If disabled, a certificate selection dialog is
00401                                    displayed. This only applies if the GUI is enabled
00402                                    and not SBL. This only applies to Windows (not WinMobile). */
00403     RetainVpnOnLogoff,        /**< First control of the logoff behavior. This preference allows
00404                                    an administrator to control if the VPN is terminated or retained
00405                                    after user logs off.*/
00406     UserEnforcement,          /**< Second control of the logoff behavior. When the VPN connection has
00407                                    been retained after user logged off. Controls what user can log in 
00408                                    and keep the VPN connection. Options are same user only and any user. */
00409     DeviceLockRequired,           /**< This preference indicates whether or not 
00410                                        a Windows Mobile device must be configured
00411                                        with a password or PIN prior to establishing
00412                                        a VPN connection. This configuration is 
00413                                        only valid on Windows Mobile devices that
00414                                        use the Microsoft Default Local 
00415                                        Authentication Provider (LAP). */
00416     DeviceLockMaximumTimeoutMinutes,   /**< When set to a non-negative number, 
00417                                             this preference specifies the maximum
00418                                             number of minutes a device can be 
00419                                             inactive before device lock takes 
00420                                             into effect. (WM5/WM5AKU2+) */
00421     DeviceLockMinimumPasswordLength,   /**< When set to a non-negative number, 
00422                                             this preference specifies that any 
00423                                             PIN/password used for device lock 
00424                                             must be equal to or longer than
00425                                             the specified value, in characters.
00426                                             This setting must be pushed down to
00427                                             the mobile device by syncing with 
00428                                             an Exchange server before it can be 
00429                                             enforced. (WM5AKU2+) */
00430     DeviceLockPasswordComplexity,      /**< This preference checks whether or 
00431                                             not the password belongs to one of
00432                                             three subtypes: alpha, pin, strong */
00433     EnableAutomaticServerSelection,    /**< Automatic server selection will 
00434                                             automatically select the optimal 
00435                                             secure gateway for the endpoint */
00436     AutoServerSelectionImprovement,    /**< During a reconnection attempt after
00437                                             a system resume, this setting 
00438                                             specifies the minimum  estimated
00439                                             performance improvement required to
00440                                             justify transitioning a user to a new server 
00441                                             This value represents percentage in 0..100 */
00442     AutoServerSelectionSuspendTime,    /**< During a reconnection attempt after
00443                                             a system resume, this specifies the
00444                                             minimum time a user must have been 
00445                                             suspended in order to justify a new
00446                                             server selection calculation. Unit is hours */
00447     AuthenticationTimeout,             /**< Time, in seconds, that the client waits
00448                                             for authentication to be completed.*/
00449     SafeWordSofTokenIntegration,  /**< This preference will enable the administrator and possibly
00450                                        the end user to enable SafeWord SofToken integration.
00451                                        Options are Enabled (true) and Disabled (false - default). */
00452     AllowIPsecOverSSL,                      /**< if 'true' then tunneling of IPSEC over SSL
00453                                             is made possible with help from the ASA.
00454                                         */
00455     ClearSmartcardPin,                 /**< This preference controls whether the smartcard pin
00456                                             will be cleared on a successful connection*/
00457     IPProtocolSupport,                 /**< This preference controls which protocol(s) will be 
00458                                             allowed for the connection*/
00459     CaptivePortalRemediationBrowserFailover, /**< This preference is applicable to enhanced captive portal 
00460                                                   remediation and specifies whether the user is allowed to
00461                                                   opt for an external browser for remediation, as opposed to 
00462                                                   the AnyConnect browser. */
00463     AllowManualHostInput,              /**< This preference specifies whether the user
00464                                             is allowed to type a new hostname in the VPN
00465                                             edit box. */
00466     BlockUntrustedServers,             /**< This preference specifies whether the user wants
00467                                             to allow for connections to secure gateways with
00468                                             certificate errors. */
00469     PublicProxyServerAddress,          /**< This preference specifies the public proxy server
00470                                             address to be used. This number is in the format
00471                                             ServerAddr:ServerPort (ex. 101.89.85.444:8080)
00472                                             or just the FQDN. */
00473     CertificatePinning,                /**< This preference specifies whether Certificate Pinning
00474                                             check should be performed during server certificate
00475                                             verification. */
00476     UnknownPreference
00477 }; 
00478 
00479 
00480 /** 
00481  * Indicates the scope of the preferences contained in a PreferenceInfo object 
00482  */
00483 #if defined(__midl)
00484 [v1_enum] /*serialize as 32 bits*/
00485 #endif
00486 enum PreferenceScope    
00487 {
00488     User,               /**< Indicates that the preferences were set by a user */
00489     Global,             /**< Indicates that the preferences are global */
00490     UserAndGlobal       /**< Indicates that we have both user and global preferences */
00491 };
00492 
00493 /** 
00494  * Indicates the client mode of operation. Unlike tunneling mode or other 
00495  * mutually exclusive modes, client operating modes are independent settings,
00496  * several of which can be turned on simultaneously.  
00497  */
00498 #if defined(__midl)
00499 [v1_enum] /*serialize as 32 bits*/
00500 #endif
00501 enum OperatingMode
00502 {
00503     FIPS                     = (1 << 0), /**< Indicates that the client is 
00504                                               running in FIPS mode. */
00505     StartBeforeLogon         = (1 << 1), /**< Indicates that the client is 
00506                                               running in Start Before Login 
00507                                               mode. */
00508     GUI                      = (1 << 2), /**< Indicates that the client is 
00509                                               a GUI client. */
00510     TrustedNetworkDetection  = (1 << 3), /**< Indicates that a Trusted Network
00511                                               Detection policy is enabled for
00512                                               the client. */
00513     AlwaysOnVpn              = (1 << 4), /**< Indicates that the Always On 
00514                                               policy is enabled for the client. */
00515     NetworkIssue             = (1 << 5), /**< For user notifications only.
00516                                               Indication by API to the UI that
00517                                               there is a network condition. */
00518     Quarantined              = (1 << 6), /**< Indicates that the VPN session is being 
00519                                               Quarantined by the secure gateway. */
00520     AutomaticHeadendSelection= (1 << 7), /**< Indicates that Automatic Headend
00521                                               is enabled. */
00522     DisconnectAllowed        = (1 << 8), /**< Indicates that the user is allowed
00523                                               to disconnect the VPN based on 
00524                                               policy. */
00525     VPNDisabled              = (1 << 9), /**< Indicates that the VPN service is
00526                                               to be marked as disabled. */
00527     SCEPMode                 = (1 << 10), /**< Indicates that the client is
00528                                                performing a SCEP cert enrollment. */
00529     OnTrustedNetwork         = (1 << 11), /**< Indicates that at last check, the
00530                                                client detected that it was on
00531                                                a trusted network. */
00532     ManualHostInputAllowed   = (1 << 12), /**< Indicates that the user is allowed
00533                                                to add a new host by typing its name
00534                                                in the VPN edit box. */
00535     ErrorSuppressed          = (1 << 13), /**< Indicates a connection error has
00536                                                been returned fronm the agent, but
00537                                                was suppressed to warning to 
00538                                                prevent popup dialog in the UI. */
00539     StrictMode               = (1 << 14), /**< Indicates that the client is 
00540                                                running in strict certificate trust mode. */
00541     CLI                      = (1 << 15), /**< Indicates that the client is
00542                                                a CLI client. */
00543     Management               = (1 << 16)  /**< Indicates that the client is strictly
00544                                                used for initiating a management tunnel. */
00545 };
00546 
00547 /**
00548  * Indicates the last error seen by the API in this connection attempt.
00549  */
00550 #if defined(__midl)
00551 [v1_enum] /*serialize as 32 bits*/
00552 #endif
00553 enum VPNError
00554 {
00555     VPNSuccess = 0,                      /**< No error has occurred. */
00556     VPNError_Generic_FatalError = 1,     /**< An error of unknown type has
00557                                               occured */
00558 
00559     VPNError_Connection_Error = 100,     /**< An unknown connection error has
00560                                               occured, such as bad hostname, bad
00561                                               group, etc. */
00562     VPNError_Connection_InvalidGroupURL, /**< Invalid Group URL specified in the 
00563                                               server address */
00564 
00565     VPNError_Network_Error = 200,        /**< An unknown network error has
00566                                               occured, such as DNS resolution
00567                                               error, unable to open socket,
00568                                               routing error, captive portal,
00569                                               etc. */
00570 
00571     VPNError_Authentication_Error = 300, /**< An unknown user authenication
00572                                               error has occured. */
00573 
00574     VPNError_Authentication_DAP_Terminate, /**< Access Denied: Your system does 
00575                                                 not meet policy requirements (DAP). */
00576 
00577     VPNError_ClientCertificate_UnknownError = 400, /**< An unknown client
00578                                                         certificate error has
00579                                                         occured. */
00580     VPNError_ClientCertificate_Missing,  /**< A client certificate is required
00581                                               but no client certificate has been
00582                                               found on the system. */
00583     VPNError_ClientCertificate_Expired,  /**< The client certificate has expired */
00584     VPNError_ClientCertificate_NotYetValid, /**< The client certificate is not
00585                                                  yet valid. */
00586 
00587     VPNError_ServerCertificate_UnknownError = 500, /**< An unknown error has
00588                                                         occured when validating
00589                                                         the server certificate. */
00590     VPNError_ServerCertificate_Expired,    /**< The server certificate has
00591                                                 expired. */
00592     VPNError_ServerCertificate_NotYetValid /**< The server certificate is not
00593                                                 yet valid. */
00594 };
00595 
00596 enum CertAuthMode
00597 {
00598     CertAuth_Automatic, /**< Will try each available certificate in succession
00599                              until authentication is obtained or we run out of 
00600                              available certificates */
00601     CertAuth_Disabled,  /**< Will disable Certificate Based Authentication */
00602     CertAuth_Manual     /**< Will only use preconfigured certificate to attempt
00603                              Certificate Based Authentication */
00604 };
00605 
00606 enum CertificateType
00607 {
00608     CertificateType_Client,
00609     CertificateType_SystemTrusted,
00610     CertificateType_Server
00611 };
00612 
00613 enum CertConfirmReason
00614 {
00615     CertConfirmReason_Unspecified,
00616     CertConfirmReason_NameMismatch,
00617     CertConfirmReason_Expired,
00618     CertConfirmReason_NotValidYet,
00619     CertConfirmReason_UntrustedSource,
00620     CertConfirmReason_InvalidUse,
00621     CertConfirmReason_Revoked,
00622     CertConfirmReason_Malformed,
00623     CertConfirmReason_NotFipsCompliant,
00624     CertConfirmReason_InvalidateDate,
00625     CertConfirmReason_SignatureAlgorithm,
00626     CertConfirmReason_KeySize
00627 };
00628 
00629 enum UserResponseError
00630 {
00631     UserResponseError_None,
00632     UserResponseError_Unspecified,
00633     UserResponseError_BadServerCert,
00634     UserResponseError_SsoNavigation,
00635     UserResponseError_SsoGettingCookie,
00636     UserResponseError_SsoTimeout,
00637     UserResponseError_SsoMissingDependency,
00638     UserResponseError_SsoClientCertRequest
00639 };
00640 
00641 #if defined(__midl)
00642 [v1_enum] /*serialize as 32 bits*/
00643 #endif
00644 enum ClientType
00645 {
00646     ClientType_GUI,
00647     ClientType_GUI_SBL,
00648     ClientType_CLI,
00649     ClientType_MGMT
00650 };
00651 
00652 #endif // _APISTDHEADER_