📄 cmparam.c
字号:
/***********************************************************************
Copyright (c) 2002 RADVISION Ltd.
************************************************************************
NOTICE:
This document contains information that is confidential and proprietary
to RADVISION Ltd.. No part of this document may be reproduced in any
form whatsoever without written prior approval by RADVISION Ltd..
RADVISION Ltd. reserve the right to revise this publication and make
changes without obligation to notify any person of such revisions or
changes.
***********************************************************************/
#include "rvinternal.h"
#include "q931asn1.h"
#include "cmintr.h"
#include "cmCall.h"
#include "cmdebprn.h"
#include "cmutils.h"
#include "stkutils.h"
#include "cm.h"
#ifdef __cplusplus
extern "C" {
#endif
void getGoodAddressForCall(HCALL hCall, cmTransportAddress* ta);
typedef enum
{
placeQ931,
placePER_Gen,
placePER_Specific
} paramPlace;
static fieldNames rejectReasonNames[]=
{
{/*cmRASReasonResourceUnavailable*/ __q931(resourceUnavailable)},
{/*cmRASReasonInsufficientResources*/ __q931(insufficientResources)},
{/*cmRASReasonInvalidRevision*/ __q931(invalidRevision)},
{/*cmRASReasonInvalidCallSignalAddress*/__q931(invalidCallSignalAddress)},
{/*cmRASReasonInvalidRASAddress*/ __q931(invalidRASAddress)},
{/*cmRASReasonInvalidTerminalType*/ __q931(invalidTerminalType)},
{/*cmRASReasonInvalidPermission*/ __q931(invalidPermission)},
{/*cmRASReasonInvalidConferenceID*/ __q931(invalidConferenceID)},
{/*cmRASReasonInvalidEndpointID*/ __q931(invalidEndpointIdentifier)},
{/*cmRASReasonCallerNotRegistered*/ __q931(callerNotRegistered)},
{/*cmRASReasonCalledPartyNotRegistered*/__q931(calledPartyNotRegistered)},
{/*cmRASReasonDiscoveryRequired*/ __q931(discoveryRequired)},
{/*cmRASReasonDuplicateAlias*/ __q931(duplicateAlias)},
{/*cmRASReasonTransportNotSupported*/ __q931(transportNotSupported)},
{/*cmRASReasonCallInProgress*/ __q931(callInProgress)},
{/*cmRASReasonRouteCallToGatekeeper*/ __q931(routeCallToGatekeeper)},
{/*cmRASReasonRequestToDropOther*/ __q931(requestToDropOther)},
{/*cmRASReasonNotRegistered*/ __q931(notRegistered)},
{/*cmRASReasonUndefined*/ __q931(undefinedReason)},
{/*cmRASReasonTerminalExcluded*/ __q931(terminalExcluded)},
{/*cmRASReasonNotBound*/ __q931(notBound)},
{/*cmRASReasonNotCurrentlyRegistered*/ __q931(notCurrentlyRegistered)},
{/*cmRASReasonRequestDenied*/ __q931(requestDenied)},
{/*cmRASReasonLocationNotFound*/ __q931(requestDenied)},
{/*cmRASReasonSecurityDenial*/ __q931(securityDenial)},
{/*cmRASTransportQOSNotSupported*/ __q931(transportQOSNotSupported)},
{/*cmRASResourceUnavailable*/ __q931(resourceUnavailable)},
{/*cmRASInvalidAlias*/ __q931(invalidAlias)},
{/*cmRASPermissionDenied*/ __q931(permissionDenied)},
{/*cmRASQOSControlNotSupported*/ __q931(qosControlNotSupported)},
{/*cmRASIncompleteAddress*/ __q931(incompleteAddress)},
{/*cmRASFullRegistrationRequired*/ __q931(fullRegistrationRequired)},
{/*cmRASRouteCallToSCN*/ __q931(routeCallToSCN)},
{/*cmRASAliasesInconsistent*/ __q931(aliasesInconsistent)},
{LAST_TOKEN}
};
static fieldNames callModelNames[]=
{
{/*cmCallModelTypeDirect*/ __q931(direct)},
{/*cmCallModelTypeGKRouted*/ __q931(gatekeeperRouted)},
{LAST_TOKEN}
};
static fieldNames transportQOSNames[]=
{
{/*cmTransportQOSEndpointControlled*/ __q931(endpointControlled)},
{/*cmTransportQOSGatekeeperControlled*/ __q931(gatekeeperControlled)},
{/*cmTransportQOSNoControl*/ __q931(noControl)},
{LAST_TOKEN}
};
static fieldNames callTypeNames[]=
{
{/*cmCallTypeP2P*/ __q931(pointToPoint)},
{/*cmCallTypeOne2N*/ __q931(oneToN)},
{/*cmCallTypeN2One*/ __q931(nToOne)},
{/*cmCallTypeN2Nw*/ __q931(nToN)},
{LAST_TOKEN}
};
static fieldNames endpointTypeNames[]=
{
{/*cmEndpointTypeTerminal*/ __q931(terminal)},
{/*cmEndpointTypeGateway*/ __q931(gateway)},
{/*cmEndpointTypeMCU*/ __q931(mcu)},
{/*cmEndpointTypeGK*/ __q931(gatekeeper)},
{/*cmEndpointTypeSET*/ __q931(set)},
{LAST_TOKEN}
};
static fieldNames disengageReasonNames[]=
{
{/*cmRASDisengageReasonForcedDrop*/ __q931(forcedDrop)},
{/*cmRASDisengageReasonNormalDrop*/ __q931(normalDrop)},
{/*cmRASDisengageReasonUndefinedReason*/__q931(undefinedReason)},
{LAST_TOKEN}
};
static fieldNames conferenceGoalNames[]=
{
{/*cmCreate*/ __q931(create)},
{/*cmJoin*/ __q931(join)},
{/*cmInvite*/ __q931(invite)},
{/*cmCapabilityNegotiation*/ __q931(capability_negotiation)},
{/*cmCallIndependentSupplementaryService*/__q931(callIndependentSupplementaryService)},
{LAST_TOKEN}
};
static fieldNames reasonNames[]=
{
{/*cmReasonTypeNoBandwidth*/ __q931(noBandwidth)},
{/*cmReasonTypeGatekeeperResource*/ __q931(gatekeeperResources)},
{/*cmReasonTypeUnreachableDestination*/ __q931(unreachableDestination)},
{/*cmReasonTypeDestinationRejection*/ __q931(destinationRejection)},
{/*cmReasonTypeInvalidRevision*/ __q931(invalidRevision)},
{/*cmReasonTypeNoPermision*/ __q931(noPermission)},
{/*cmReasonTypeUnreachableGatekeeper*/ __q931(unreachableGatekeeper)},
{/*cmReasonTypeGatewayResource*/ __q931(gatewayResources)},
{/*cmReasonTypeBadFormatAddress*/ __q931(badFormatAddress)},
{/*cmReasonTypeAdaptiveBusy*/ __q931(adaptiveBusy)},
{/*cmReasonTypeInConf*/ __q931(inConf)},
{/*cmReasonTypeUndefinedReason*/ __q931(undefinedReason)},
{/*cmReasonTypeRouteCallToGatekeeper*/ __q931(routeCallToGatekeeper)},
{/*cmReasonTypeCallForwarded*/ __q931(callForwarded)},
{/*cmReasonTypeRouteCallToMC*/ __q931(routeCallToMC)},
{/*cmReasonTypeFacilityCallDeflection*/ __q931(facilityCallDeflection)},
{/*cmReasonTypeSecurityDenied*/ __q931(securityDenied)},
{/*cmReasonTypeCalledPartyNotRegistered*/__q931(calledPartyNotRegistered)},
{/*cmReasonTypeCallerNotregistered*/ __q931(callerNotRegistered)},
{/*cmReasonTypeConferenceListChoice*/ __q931(conferenceListChoice)},
{/*cmReasonTypeStartH245*/ __q931(startH245)},
{/*cmReasonTypeNewConnectionNeeded*/ __q931(newConnectionNeeded)},
{/*cmReasonTypeNoH245*/ __q931(noH245)},
{/*cmReasonTypeNewTokens*/ __q931(newTokens)},
{/*cmReasonTypeFeatureSetUpdate*/ __q931(featureSetUpdate)},
{/*cmReasonTypeForwardedElements*/ __q931(forwardedElements)},
{/*cmReasonTypeTransportedInformation*/ __q931(transportedInformation)},
{LAST_TOKEN}
};
fieldNames* getParamFieldName(
IN cmRASParam param)
{
switch(param)
{
case cmParamSourceInfo :
case cmParamDestinationInfo :
case cmRASParamTerminalType :
case cmRASParamEndpointType :return endpointTypeNames;
case cmParamCallType :
case cmRASParamCallType :return callTypeNames;
case cmRASParamCallModel :return callModelNames;
case cmRASParamDisengageReason :return disengageReasonNames;
case cmRASParamRejectReason :return rejectReasonNames;
case cmParamConferenceGoal :return conferenceGoalNames;
case cmParamReleaseCompleteReason :
case cmParamFacilityReason :return reasonNames;
case cmRASParamTransportQOS :return transportQOSNames;
default :return NULL;
}
}
int getParamFieldNameSize(
IN cmRASParam param)
{
switch(param)
{
case cmParamSourceInfo :
case cmParamDestinationInfo :
case cmRASParamTerminalType :
case cmRASParamEndpointType :return sizeof(endpointTypeNames);
case cmParamCallType :
case cmRASParamCallType :return sizeof(callTypeNames);
case cmRASParamCallModel :return sizeof(callModelNames);
case cmRASParamDisengageReason :return sizeof(disengageReasonNames);
case cmRASParamRejectReason :return sizeof(rejectReasonNames);
case cmParamConferenceGoal :return sizeof(conferenceGoalNames);
case cmParamReleaseCompleteReason :
case cmParamFacilityReason :return sizeof(reasonNames);
case cmRASParamTransportQOS :return sizeof(transportQOSNames);
default :return RV_ERROR_UNKNOWN;
}
}
/************************************************************************
* initParamSyntax
* purpose: Initialize any information related to PST that is needed to
* hold parameters without a properties database.
* input : app - Stack instance handle
* output : none
* return : non-negative value on success
* negative value on failure
************************************************************************/
int initParamSyntax(IN cmElem* app)
{
int i;
static const char* synNames[] = {
"Endpoint.aliasAddress",
"AliasAddress",
"CalledPartyNumber",
"CalledPartySubaddress",
"CallingPartyNumber",
"CallingPartySubaddress",
"EndpointType",
"Setup-UUIE.conferenceGoal",
"CallType",
"H323-UserInformation.user-data",
"NonStandardParameter",
"ReleaseCompleteReason",
"FacilityReason"
};
for (i = 0; i < cmParamSynLast; i++)
{
app->synParams[i] = pstConstruct(cmEmGetQ931Syntax(), (char *)synNames[i]);
if (app->synParams[i] == NULL)
return RV_ERROR_UNKNOWN;
}
return 0;
}
/************************************************************************
* endParamSyntax
* purpose: Deinitialize any information related to PST that is needed to
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -