343 lines
7.6 KiB
C
343 lines
7.6 KiB
C
|
/*++
|
||
|
|
||
|
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 <winsock2.h>
|
||
|
|
||
|
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_
|