/*++ Copyright (c) 1999 Microsoft Corporation Module Name: tspmspif.h Abstract: Message interface between H.32X MSP and TSP Author: Michael Vanbuskirk (mikev) 05/12/99 --*/ #ifndef __TSPMSPIF_H_ #define __TSPMSPIF_H_ #include typedef enum tag_TspMspMessageType { SP_MSG_InitiateCall, SP_MSG_AnswerCall, SP_MSG_PrepareToAnswer, SP_MSG_ProceedWithAnswer, SP_MSG_ReadyToInitiate, SP_MSG_ReadyToAnswer, SP_MSG_FastConnectResponse, SP_MSG_StartH245, SP_MSG_ConnectComplete, SP_MSG_H245PDU, SP_MSG_MCLocationIdentify, SP_MSG_Hold, SP_MSG_H245Hold, SP_MSG_ConferenceList, SP_MSG_SendDTMFDigits, SP_MSG_ReleaseCall, SP_MSG_CallShutdown, SP_MSG_H245Terminated, SP_MSG_LegacyDefaultAlias, SP_MSG_RASRegistration, SP_MSG_RASRegistrationEvent, SP_MSG_RASLocationRequest, SP_MSG_RASLocationConfirm, SP_MSG_RASBandwidthRequest, SP_MSG_RASBandwidthConfirm }TspMspMessageType; /* InitiateCall - Handle of TSP's replacement call (if applicable) - Handle of conference call (if applicable) */ typedef struct { HANDLE hTSPReplacementCall; /* replacement call handle of the entity sending the message (MSP's or TSP's handle) */ HANDLE hTSPConferenceCall; SOCKADDR_IN saLocalQ931Addr; } TSPMSP_InitiateCallMessage; // AnswerCall (TSP to MSP). // no parameters /* PrepareToAnswer (TSP to MSP). - Received fastConnect parameters - Received h245Tunneling capability - WaitForConnect flag - Q.931 setup parameters - Handle of replacement call (if applicable) */ typedef struct { HANDLE hReplacementCall; /* replacement call handle of the entity sending the message (either the MSP TSP) */ SOCKADDR_IN saLocalQ931Addr; } TSPMSP_PrepareToAnswerMessage; /* ProceedWithAnswer (MSP to TSP) - Address of MC to deflect the call to */ typedef struct { BOOL fMCAddressPresent; // true if AddrMC contains the MC address // FALSE if simply proceeding SOCKADDR_IN saAddrMC; // address of MC to route call to HANDLE hMSPReplacementCall; /* MSP's replacement call handle (if applicable) */ } TSPMSP_ProceedWithAnswerMessage; /* ReadyToInitiate - Additional callee addresses, callee alias(es) - FastConnect proposal - WaitForConnect flag - Security profile ID(s) - Security token(s) - Handle of MSP's replacement call (if applicable) */ typedef struct { HANDLE hMSPReplacementCall; /* MSP's replacement call handle (if applicable) */ } TSPMSP_ReadyToInitiateMessage; /* ReadyToAnswer (MSP to TSP) - Fast Connect response - Security profile ID(s) - Security token(s) - Handle of MSP's replacement call (if applicable) */ typedef struct { HANDLE hMSPReplacementCall; /* MSP's replacement call handle (if applicable) */ } TSPMSP_ReadyToAnswerMessage; /* FastConnectResponse (TSP to MSP) - Fast Connect response - Security profile ID(s) - Security token(s) - Handle of MSP's replacement call (if applicable) */ typedef struct { HANDLE hTSPReplacementCall; /* MSP's replacement call handle */ BOOL fH245TunnelCapability; SOCKADDR_IN saH245Addr; } TSPMSP_FastConnectResponseMessage; /* StartH245 (TSP->MSP) - Call handle of call to replace (used in the "call transfer" case only) - Handle of TSP's replacement call (if applicable) - H.245 address - Received h245Tunneling capability - Conference call identifier (local MC case only) optional (ASN.1): - Security token(s) received via Q.931 - Security profile identifier(s) received via Q.931 - Received fastConnect response (outgoing call case) */ typedef struct { HANDLE hMSPReplaceCall; /* handle of MSP's call being replaced */ HANDLE hTSPReplacementCall; /* TSP's replacement call handle */ BYTE ConferenceID[16]; BOOL fH245TunnelCapability; BOOL fH245AddressPresent; SOCKADDR_IN saH245Addr; SOCKADDR_IN saQ931Addr; // always present } TSPMSP_StartH245Message; /* ConnectComplete (TSP->MSP) // no parameters */ /* H245PDU (MSP->TSP, TSP->MSP) // tunneled, encoded, pure ASN.1 */ typedef struct { } TSPMSP_H245PDUMessage; /* MCLocationIdentify (MSP->TSP) */ typedef struct { BOOL fMCIsLocal; // true if the MC is on the local machine SOCKADDR_IN AddrMC; // address of MC to route call to } TSPMSP_MCLocationIdentifyMessage; /* Hold (TSP->MSP) */ typedef struct { BOOL fHold; } TSPMSP_HoldMessage; /* H245Hold (MSP->TSP) */ typedef struct { BOOL fHold; } TSPMSP_H245HoldMessage; /* ConferenceList(MSP->TSP, TSP->MSP) */ typedef struct { HANDLE hTSPReplacementCall; /* MSP's replacement call handle */ } TSPMSP_ConferenceListMessage; /* SendDTMFDigits (TSP->MSP) */ typedef struct { WORD wNumDigits; // number of characters in TspMspMessage.u.WideChars } TSPMSP_SendDTMFDigitsMessage; /* ReleaseCall(MSP->TSP) // no parameters */ /* CallShutdown (TSP->MSP) // no parameters */ /* H245Terminated (MSP->TSP) // no parameters */ typedef struct { WORD wNumChars; // number of characters in TspMspMessage.u.WideChars } TSPMSP_LegacyDefaultAliasMessage; /* RASRegistration (MSP->TSP) - The list of aliases to register or unregister */ typedef struct { SOCKADDR_IN saGateKeeperAddr; } TSPMSP_RegistrationRequestMessage; /* RASRegistrationEvent (TSP->MSP) // in encoded ASN.1 form - The event (URQ, DRQ, UCF, RCF) - The list of aliases that are affected by the event */ typedef struct { } TSPMSP_RASEventMessage; /* RASLocationRequest (MSP->TSP) // in encoded ASN.1 form */ typedef struct { } TSPMSP_LocationRequestMessage; /* RASLocationConfirm (TSP->MSP) // in encoded ASN.1 form */ typedef struct { } TSPMSP_LocationConfirmMessage; /* RASBandwidthRequest (MSP->TSP) // in encoded ASN.1 form */ typedef struct { } TSPMSP_BandwidthRequestMessage; /* RASBandwidthConfirm (TSP->MSP) // in encoded ASN.1 form */ typedef struct { } TSPMSP_BandwidthConfirmMessage; typedef struct tag_TspMspMessage { TspMspMessageType MessageType; DWORD dwMessageSize; // total size of the block, including this // structure union { TSPMSP_InitiateCallMessage InitiateCallMessage; TSPMSP_PrepareToAnswerMessage PrepareToAnswerMessage; TSPMSP_ProceedWithAnswerMessage ProceedWithAnswerMessage; TSPMSP_ReadyToInitiateMessage ReadyToInitiateMessage; TSPMSP_ReadyToAnswerMessage ReadyToAnswerMessage; TSPMSP_FastConnectResponseMessage FastConnectResponseMessage; TSPMSP_StartH245Message StartH245Message; TSPMSP_H245PDUMessage H245PDUMessage; TSPMSP_MCLocationIdentifyMessage MCLocationIdentifyMessage; TSPMSP_HoldMessage HoldMessage; TSPMSP_H245HoldMessage H245HoldMessage; TSPMSP_ConferenceListMessage ConferenceListMessage; TSPMSP_SendDTMFDigitsMessage SendDTMFDigitsMessage; TSPMSP_LegacyDefaultAliasMessage LegacyDefaultAliasMessage; TSPMSP_RegistrationRequestMessage RegistrationRequestMessage; TSPMSP_RASEventMessage RASEventMessage; TSPMSP_LocationRequestMessage LocationRequestMessage; TSPMSP_LocationConfirmMessage LocationConfirmMessage; TSPMSP_BandwidthRequestMessage BandwidthRequestMessage; TSPMSP_BandwidthConfirmMessage BandwidthConfirmMessage; }MsgBody; DWORD dwEncodedASNSize; union { BYTE EncodedASN[1]; WORD WideChars[1]; }u; #define pEncodedASNBuf u.EncodedASN #define pWideChars u.WideChars }TspMspMessage, *PTspMspMessage; // The true total size of the message is: // sizeof(TspMspMessage) + (the size of variable parts, e.g. #of encoded ASN.1 bytes) // - 1 byte. #endif //__TSPMSPIF_H_