Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

342 lines
8.0 KiB

/*++
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_