//////////////////////////////////////////////////////////////////////////////// // // INTEL Corporation Proprietary Information // Copyright (c) 1995 Intel Corporation // // This software is supplied under the terms of a license agreement with INTEL // Corporation and may not be used, copied, nor disclosed except in accordance // with the terms of that agreement. // //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// // // $Workfile: arscli.h $ // $Revision: 1.6 $ // $Modtime: 19 Sep 1996 19:20:44 $ // // DESCRIPTION: // // This header file defines the Address Resolution Service's client // side interface. This interface is meant to be used by applications // who have a need to map to dynamically assigned address information // for a given user (i.e. if the user is connected to the internet via // a ISP who uses DHCP to hand out IP addresses. // // The following exported functions are declared in this file: // // ARCreateRegistration() // ARDestroyRegistration() // ARCreateCallTargetInfo() // ARQueryCallTargetInfo() // ARDestroyCallTargetInfo() // ARGetConfigVal() // ARSetConfigVal() // ARReleaseStringResult() // ARGetHostByAddr() // //////////////////////////////////////////////////////////////////////////////// /**************************************************************************** * * ARS Client Interface 0.005 * ***************************************************************************/ #ifndef ARSCLIENT_H #define ARSCLIENT_H #ifndef DllImport #define DllImport __declspec( dllimport ) #endif // DllImport #ifndef DllExport #define DllExport __declspec( dllexport ) #endif // DllExport // // Error Handling Information // #include #include "apierror.h" typedef enum AR_TAGS { AR_TAG_BADTAG = 0, AR_TAG_IPADDR, AR_TAG_PORTNUM, AR_TAG_APPGUID, AR_TAG_USERNAME, AR_TAG_NAPPS, AR_TAG_QUERYURL, AR_TAG_USERID, AR_NUM_TAGS } ARTag; typedef enum AR_CONFIGTAGS { AR_CONFIG_BADTAG = 0, AR_CONFIG_PROXY, AR_CONFIG_PROXYPORT, AR_CONFIG_SERVERURL, AR_NUM_CONFIGTAGS } ARConfigTag; //This is the base of the server errors, //All HTTP return codes are added to this //base error to create the actual return //value. #define ERROR_SERVER_ERROR_BASE (ERROR_LOCAL_BASE_ID + 0x200) #define AR_OLE_FAIL(x) ((HRESULT)MAKE_HRESULT(SEVERITY_ERROR, \ FACILITY_ARSCLIENT, (x))) #define AR_OLE_SUCCESS(x) ((HRESULT)MAKE_HRESULT(SEVERITY_SUCCESS, \ FACILITY_ARSCLIENT, (x))) #define AR_OK AR_OLE_SUCCESS(ERROR_SUCCESS) #define AR_WINSOCK_STARTUP AR_OLE_FAIL(ERROR_DLL_INIT_FAILED) #define AR_WINSOCK_VERSION AR_OLE_FAIL(ERROR_OLD_WIN_VERSION) #define AR_ADDRLEN AR_OLE_FAIL(ERROR_BAD_LENGTH) #define AR_STRING_INVALID AR_OLE_FAIL(ERROR_INTERNAL_ERROR) #define AR_SOCKERROR AR_OLE_FAIL(ERROR_WRITE_FAULT) #define AR_INVALID_RESPONSE AR_OLE_FAIL(ERROR_INVALID_DATA) #define AR_SERVER_ERROR AR_OLE_FAIL(ERROR_SERVER_ERROR_BASE) #define AR_PEER_UNREACHABLE AR_OLE_FAIL(ERROR_HOST_UNREACHABLE) #define AR_OUTOFMEMORY AR_OLE_FAIL(ERROR_OUTOFMEMORY) #define AR_INVALID_PARAMETER AR_OLE_FAIL(ERROR_INVALID_PARAMETER) #define AR_NOT_IMPLEMENTED AR_OLE_FAIL(ERROR_INVALID_FUNCTION) #define AR_BAD_TARGET AR_OLE_FAIL(ERROR_OPEN_FAILED) #define AR_BADCONTEXT AR_OLE_FAIL(ERROR_INVALID_ADDRESS) // // Local data types // typedef void* ARRegContext; typedef void* ARCallTargetInfoContext; typedef char* ARString; // // Function prototypes // #ifdef __cplusplus extern "C" { // Assume C declarations for C++. #endif // __cplusplus /*---------------------------------------------------------------------------- * ARCreateRegistration * DLL entry point * * Takes server information and registers with that server, creating * a context which must be used to unregister. * * Returns error code indicating success or failure. * * Parameters: * * regContext Pointer to a registration * context to be filled (ARRegContext) * appGUID GUID of application to register * appName Displayable name of application to register * appMIME MIME type for the application * port The application port to register * ipAddress IP address to register * if NULL, will be gathered from registry * userGUID GUID of user to register * if NULL, will be gathered from registry * userName Displayable name of user to register * if NULL, will be gathered from registry * flags ULS-compatible flags * ttl Time to live (time between keep-alives) * * Returns: * AR_OK Success * AR_INVALID_PARAMETER * AR_NOT_IMPLEMENTED This call has not been implemented. * AR_OUTOFMEMORY Could not allocate memory for context * AR_WINSOCK_STARTUP Error initializing WinSock * AR_WINSOCK_VERSION Invalid WinSock version * AR_STRING_INVALID Could not parse URL to find address and port * AR_PEER_UNREACHABLE Could not open TCP socket to server * AR_SOCKERROR Could not send request over socket * AR_INVALID_RESPONSE Server's response was not of the proper form * AR_SERVER_ERROR Server returned an error code * AR_ADDRLEN The IP address exceeds the maximum length *-------------------------------------------------------------------------*/ HRESULT DllExport ARCreateRegistration( const char *appID, // IN const char *appName, // IN const char *appMIME, // IN const LONG port, // IN const char *ipAddress, // IN const char *userID, // IN const char *userName, // IN const LONG flags, // IN const LONG ttl, // IN ARRegContext *regContext); // OUT /*--------------------------------------------------------------------------- * ARDestroyRegistration * DLL entry point * * Removes the registration associated with the given context and * destroys the context. * * Returns error code indicating success or failure. * * Parameters: * * regContext Pointer to the ARRegContext to destroy * * Returns: * AR_OK Success * AR_INVALID_PARAMETER regContext == NULL * AR_NOT_IMPLEMENTED This call has not been implemented. * AR_OUTOFMEMORY Could not allocate memory for context * AR_WINSOCK_STARTUP Error initializing WinSock * AR_WINSOCK_VERSION Invalid WinSock version * AR_STRING_INVALID Could not parse URL to find address and port * AR_PEER_UNREACHABLE Could not open TCP socket to server * AR_SOCKERROR Could not send request over socket * AR_INVALID_RESPONSE Server's response was not of the proper form * AR_SERVER_ERROR Server returned an error code * AR_ADDRLEN The IP address exceeds the maximum length *-------------------------------------------------------------------------*/ HRESULT DllExport ARDestroyRegistration(ARRegContext regContext); // IN /*------------------------------------------------------------------------- * ARCreateCallTargetInfo * DLL entry point * * Given a string, creates a context object which can be used to * query fields within a call target delivered by that string * NOTE: The intention is that a command line be passed, which * can then be interpreted freely by the DLL in an application- * independent manner to indicate the call target. * * Returns error code indicating success or failure. * * Parameters: * * rawTarget String to be used to derive call target information * ctiContext Pointer to a call target information context * to be filled * * Returns: * AR_OK Success * AR_INVALID_PARAMETER (ctiContext || rawTarget) == NULL * AR_BAD_TARGET We could not create the call target info with * the raw target passed in. * AR_NOT_IMPLEMENTED This call has not been implemented. *-------------------------------------------------------------------------*/ HRESULT DllExport ARCreateCallTargetInfo(const char* rawTarget, // IN ARCallTargetInfoContext* ctiContext); // OUT /*--------------------------------------------------------------------------- * ARQueryCallTargetInfo * DLL entry point * * Given a call target information context, will return the value of a * given tag. Tag names are case insensitive. * * Returns error code indicating success or failure. * * Parameters: * * ctiContext A call target information context to query * tagField A tag to get the value for. * * Valid tags: * * AR_TAG_BADTAG = 0 (Place keep for illegal tag value) * AR_TAG_IPADDR * AR_TAG_PORTNUM * AR_TAG_APPGUID * AR_TAG_USERNAME * AR_TAG_NAPPS * AR_TAG_QUERYURL * * value Pointer to location to store value. * Stored as a null-terminated string. * * Returns: * AR_OK Success * AR_INVALID_PARAMETER (ctiContext || value) == NULL * tagField == AR_TAG_BADTAG * AR_INVALID_RESPONSE The call target information is invalid * for the specified tag. * AR_NOT_IMPLEMENTED This call has not been implemented. *-------------------------------------------------------------------------*/ HRESULT DllExport ARQueryCallTargetInfo(ARCallTargetInfoContext ctiContext, // IN ARTag tagField, // IN ARString* value); // OUT /*--------------------------------------------------------------------------- * ARDestroyCallTargetInfo * DLL entry point * * Destroys a call target information context * * Returns error code indicating success or failure. * * Parameters: * * ctiContext The call target information context to destroy * * Returns: * AR_OK Success * AR_INVALID_PARAMETER ctiContext == NULL * AR_NOT_IMPLEMENTED This call has not been implemented. *-------------------------------------------------------------------------*/ HRESULT DllExport ARDestroyCallTargetInfo(ARCallTargetInfoContext ctiContext); // IN /*--------------------------------------------------------------------------- * ARGetConfigVal * DLL entry point * * Obtain specified ARS configuration value * * Returns error code indicating success or failure. * * Parameters: * * tagField A tag to get the value for. * * Valid tags: * * AR_CONFIG_BADTAG = 0 (Place keep for illegal tag value) * AR_CONFIG_PROXY * AR_CONFIG_PROXYPORT * AR_CONFIG_SERVERURL * * value Pointer to location to store pointer to value. * Stored as a null-terminated string; * allocated by DLL * * Returns: * AR_OK Success * AR_INVALID_PARAMETER tagField == AR_TAG_BADTAG * AR_BAD_TARGET Could not open registry for reading * AR_NOT_IMPLEMENTED This call has not been implemented. *-------------------------------------------------------------------------*/ HRESULT DllExport ARGetConfigVal( ARConfigTag tagField, // IN ARString* value); // OUT /*--------------------------------------------------------------------------- * ARSetConfigVal * DLL entry point * * Set specified ARS configuration value * * Returns error code indicating success or failure. * * Parameters: * * tagField A tag to get the value for. * Valid tags are those valid for ARGetConfigVal * value Pointer to location to store pointer to value. * Stored as a null-terminated string; * allocated by DLL * * Returns: * AR_OK Success * AR_INVALID_PARAMETER tagField == AR_TAG_BADTAG * AR_BAD_TARGET Could not open registry for writing * AR_NOT_IMPLEMENTED This call has not been implemented. *-------------------------------------------------------------------------*/ HRESULT DllExport ARSetConfigVal( ARConfigTag tagField, // IN const char *value); // IN /*--------------------------------------------------------------------------- * ARReleaseStringResult * DLL entry point * * Destroys a string allocated by ARGetConfigVal or ARQueryCallTargetInfo * * Returns error code indicating success or failure. * * Parameters: * * value The string to destroy * * Returns: * AR_OK Success * AR_INVALID_PARAMETER value == NULL *-------------------------------------------------------------------------*/ HRESULT DllExport ARReleaseStringResult(ARString value); // IN /*--------------------------------------------------------------------------- * ARGetHostByAddr * DLL entry point * * Converts IP addr in dot notation to a host name. * * Returns error code indicating success or failure. * * Parameters: * * lpszAddr ptr to string containing IP addr in dot notation * pphostName address of ptr to store the host name * * Returns: * AR_OK Success * AR_INVALID_PARAMETER value == NULL *-------------------------------------------------------------------------*/ HRESULT DllExport ARGetHostByAddr(const char* lpszAddr, // IN char** pphostName); // OUT #ifdef __cplusplus } // End of extern "C" { #endif // __cplusplus /**************************************************************************** * * $Log: S:\sturgeon\src\include\vcs\arscli.h_v $ * * Rev 1.6 23 Sep 1996 08:45:14 ENBUSHX * No change. * * Rev 1.5 19 Sep 1996 19:29:52 ENBUSHX * Fubction to translate from IP DOT to domain name. * * Rev 1.4 19 Sep 1996 18:58:34 ENBUSHX * Added a define for user id field in iii file. * * Rev 1.3 11 Jul 1996 18:42:12 rodellx * * Fixed bug where HRESULT ids were in violation of Facility and/or Code * value rules. * * Rev 1.2 10 Jul 1996 18:40:52 rodellx * * Moved definition of arscli facility to apierror.h. * * Rev 1.1 08 Jul 1996 14:50:48 GEHOFFMA * Don't think any changes were made... just to be sure * ***************************************************************************/ #endif // ARSCLIENT_H