AnyConnect Secure Mobility Client 4.10.00093

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