?? rvwpct.c
字號(hào):
*/
if (status < 0)
{
WrapperMsg wpmsg;
wpmsg.msgId = WP_REC_REGISTER_TIMEOUT;
wpSendMsgToApp(&wpmsg);
}
}
#if 0
void wpSendUnRegister(WrapperMsg* msg)
{
TRACE("start unregister...\n");
TRACE("unregister return %d!\n", cmUnregister(hApp));
}
#endif
#include "cmautorasintr.h"
#include "Stkutils.h"
int RVCALLCONV wpcmEvAutoRASConfirm(
IN HRAS hsRas)
{
WrapperMsg msg;
rasOutTx* tx = (rasOutTx*)hsRas;
/* if(WaitForSingleObject(fileSem,INFINITE) == WAIT_OBJECT_0)
{
fprintf(fp,"wpcmEvAutoRASConfirm()\n");
ReleaseSemaphore(fileSem,1,NULL);
}
if(WaitForSingleObject(fileSem,INFINITE) == WAIT_OBJECT_0)
{
fprintf(fp,"TransactionType:%d!\n", tx->transactionType);
ReleaseSemaphore(fileSem,1,NULL);
}
*/
if (tx->transactionType == cmRASRegistration)
{
msg.msgId = WP_REC_REGISTER_SUCC;
msg.d.registr.ttlTime = globleTTL;
wpSendMsgToApp(&msg);
/* Get the gatekeeper's protocol version. */
{
HAPPRAS haRas = (HAPPRAS)emaGetApplicationHandle((EMAElement)hsRas);
autorasEndpoint* autoras = (autorasEndpoint *)haRas;
RvPvtNodeId responseId = cmiRASGetResponse(hsRas);
RvPvtNodeId messageId;
int nodeId;
messageId = pvtChild(autoras->hVal, responseId);
if ((nodeId = pvtGetChild(autoras->hVal,messageId,__q931(protocolIdentifier),NULL)) >= 0)
{
char buff[20];
int object[6];
int buffLen;
buffLen=pvtGetString(autoras->hVal, nodeId, sizeof(buff), buff);
if (utlDecodeOIDInt(buffLen, buff, sizeof(object)/sizeof(*object), object)>=6)
/*itu-t recomendation h 2250 version (version number)*/
/*0 1 2 3 4 5 */
{
int i;
/* if(WaitForSingleObject(fileSem,INFINITE) == WAIT_OBJECT_0)
{
fprintf(fp,"remote gk's version string = ");
ReleaseSemaphore(fileSem,1,NULL);
}*/
for (i = 0; i < 5; i++)
{
/* if(WaitForSingleObject(fileSem,INFINITE) == WAIT_OBJECT_0)
{
fprintf(fp,"%d.", object[i]);
ReleaseSemaphore(fileSem,1,NULL);
}*/
}
/* if(WaitForSingleObject(fileSem,INFINITE) == WAIT_OBJECT_0)
{
fprintf(fp,"%d\n", object[5]);
ReleaseSemaphore(fileSem,1,NULL);
}
*/
versionNumber = object[5];
}
}
}
}
return 0;
}
int RVCALLCONV wpcmEvAutoRASReject(
IN HRAS hsRas,
IN cmRASReason reason)
{
WrapperMsg msg;
rasOutTx* tx = (rasOutTx*)hsRas;
/* msg.msgId = WP_REC_REGISTER_FAIL;*/
msg.reason = reason;
/* if(WaitForSingleObject(fileSem,INFINITE) == WAIT_OBJECT_0)
{
fprintf(fp,"wpcmEvAutoRASReject()\n");
ReleaseSemaphore(fileSem,1,NULL);
}
*/
if (tx->transactionType == cmRASRegistration)
{
if (!((reason == cmRASReasonResourceUnavailable)
|| (reason == cmRASReasonInvalidRevision)
|| (reason == cmRASReasonInvalidCallSignalAddress)
|| (reason == cmRASReasonInvalidRASAddress)
|| (reason == cmRASReasonInvalidTerminalType)
|| (reason == cmRASReasonDiscoveryRequired)
|| (reason == cmRASReasonDuplicateAlias)
|| (reason == cmRASReasonTransportNotSupported)
|| (reason == cmRASReasonUndefined)
|| (reason == cmRASReasonSecurityDenial)
|| (reason == cmRASReasonTransportQOSNotSupported)
|| (reason == cmRASResourceUnavailable)
|| (reason == cmRASReasonInvalidAlias)
|| (reason == cmRASReasonFullRegistrationRequired)
|| (reason == cmRASReasonAdditiveRegistrationNotSupported)
|| (reason == cmRASReasonInvalidTerminalAliases)
|| (reason == cmRASReasonGenericData)
|| (reason == cmRASReasonNeededFeatureNotSupported)))
{
/* if(WaitForSingleObject(fileSem,INFINITE) == WAIT_OBJECT_0)
{
fprintf(fp,"wpcmEvAutoRASReject, not register fail, return...\n");
ReleaseSemaphore(fileSem,1,NULL);
}*/
return 0;
}
msg.msgId = WP_REC_REGISTER_FAIL;
wpSendMsgToApp(&msg);
}
if (tx->transactionType==cmRASAdmission)
{
msg.msgId = WP_REC_ARJ;
wpSendMsgToApp(&msg);
}
return 0;
}
int RVCALLCONV wpcmEvAutoRASTimeout(
IN HRAS hsRas)
{
WrapperMsg msg;
rasOutTx* tx = (rasOutTx*)hsRas;
/* if(WaitForSingleObject(fileSem,INFINITE) == WAIT_OBJECT_0)
{
fprintf(fp,"wpcmEvAutoRASTimeout()\n");
fprintf(fp,"TransactionType:%d!\n", tx->transactionType);
ReleaseSemaphore(fileSem,1,NULL);
}*/
if (tx->transactionType == cmRASRegistration)
{
msg.msgId = WP_REC_REGISTER_TIMEOUT;
wpSendMsgToApp(&msg);
}
return 0;
}
int wpcmEvRASTimeout(IN HAPPRAS haRas, IN HRAS hsRas)
{
WrapperMsg msg;
rasOutTx* tx = (rasOutTx*)hsRas;
/* msg.msgId = WP_REC_REGISTER_TIMEOUT;*/
/* if(WaitForSingleObject(fileSem,INFINITE) == WAIT_OBJECT_0)
{
fprintf(fp,"wpcmEvRASTimeout()\n");
ReleaseSemaphore(fileSem,1,NULL);
}
*/
if (tx->transactionType == cmRASRegistration)
{
msg.msgId = WP_REC_REGISTER_TIMEOUT;
wpSendMsgToApp(&msg);
}
return 0;
}
int wpcmEvRASReject(IN HAPPRAS haRas, IN HRAS hsRas, IN cmRASReason reason)
{
WrapperMsg msg;
rasOutTx* tx = (rasOutTx*)hsRas;
/* msg.msgId = WP_REC_REGISTER_FAIL; */
msg.reason = reason;
/* if(WaitForSingleObject(fileSem,INFINITE) == WAIT_OBJECT_0)
{
fprintf(fp,"wpcmEvRASReject(), reason:%d\n", reason);
ReleaseSemaphore(fileSem,1,NULL);
}
*/
if (tx->transactionType == cmRASRegistration)
{
msg.msgId = WP_REC_REGISTER_FAIL;
wpSendMsgToApp(&msg);
}
return 0;
}
int RVCALLCONV wpcmEvRASConfirm(IN HAPPRAS haRas, IN HRAS hsRas)
{
WrapperMsg msg;
rasOutTx* tx = (rasOutTx*)hsRas;
/* if(WaitForSingleObject(fileSem,INFINITE) == WAIT_OBJECT_0)
{
fprintf(fp,"wpcmEvRASConfirm()\n");
fprintf(fp,"TransactionType:%d!\n", tx->transactionType);
ReleaseSemaphore(fileSem,1,NULL);
}
*/
if (tx->transactionType == cmRASRegistration)
{
msg.msgId = WP_REC_REGISTER_SUCC;
msg.d.registr.ttlTime = globleTTL;
wpSendMsgToApp(&msg);
}
return 0;
}
RvInt getTTLtime(IN int nodeId)
{
int status;
RvPvtNodeId childNodeId;
int ttlVal=60;
HPVT hVal = ((cmElem*)hApp)->hVal;
char * msgName = cmGetProtocolMessageName(hApp,nodeId);
if (strcmp(msgName, "registrationConfirm") != 0)
{
/*TRACE("it is not registrationConfirm, return\n");*/
return -1;
}
status = pvtGetChild(hVal, nodeId, __q931(registrationConfirm), &childNodeId);
if (status < 0)
{
/* if(WaitForSingleObject(fileSem,INFINITE) == WAIT_OBJECT_0)
{
fprintf(fp,"registrationConfirm is not in msg, return %d\n", status);
ReleaseSemaphore(fileSem,1,NULL);
}
*/
return -2;
}
status = pvtGetChild(hVal, childNodeId, __q931(timeToLive), &childNodeId);
if (status < 0)
{
/* if(WaitForSingleObject(fileSem,INFINITE) == WAIT_OBJECT_0)
{
fprintf(fp,"timeToLive is not in msg, return %d\n", status);
ReleaseSemaphore(fileSem,1,NULL);
}
*/
return -3;
}
status = pvtGet(hVal, childNodeId, NULL, NULL, &ttlVal, NULL);
if (status < 0)
{
/* if(WaitForSingleObject(fileSem,INFINITE) == WAIT_OBJECT_0)
{
fprintf(fp,"get timeToLive value error, return\n");
ReleaseSemaphore(fileSem,1,NULL);
}
*/
return -4;
}
/* if(WaitForSingleObject(fileSem,INFINITE) == WAIT_OBJECT_0)
{
fprintf(fp,"registrationConfirm:timeToLive is %d\n", ttlVal);
ReleaseSemaphore(fileSem,1,NULL);
}
*/
return ttlVal;
}
/*
void printTime()
{
struct timespec tpShow;
struct tm timeBuffer;
char msg[40];
if (clock_gettime(CLOCK_REALTIME, &tpShow) == OK)
{
if(gmtime_r(&(tpShow.tv_sec), &timeBuffer) == OK)
{
TRACE(msg, "%04u-%02u-%02u %02u:%02u:%02u",
timeBuffer.tm_year + 1900,
timeBuffer.tm_mon + 1,
timeBuffer.tm_mday,
timeBuffer.tm_hour,
timeBuffer.tm_min,
timeBuffer.tm_sec);
TRACE("%s\n", msg);
}
}
}
*/
/*extern int getGKStatus();*/
RvBool RVCALLCONV wphookRecvFrom(
IN HPROTCONN hConn,
IN int nodeId,
IN int nodeIdFrom,
IN RvBool multicast,
IN RvBool error)
{
char text[128];
char* msgPoint;
int ttl;
/* format message */
msgPoint = cmGetProtocolMessageName(hApp,nodeId);
sprintf(text,"New message recv <- %s on %s",
msgPoint,
cmProtocolGetProtocolName(cmProtocolGetProtocol(hApp,nodeId)));
/* print to log */
/*printTime();*/
/* if(WaitForSingleObject(fileSem,INFINITE) == WAIT_OBJECT_0)
{
fprintf(fp,"hook receive from {%s}\n", text);
ReleaseSemaphore(fileSem,1,NULL);
}
*/
ttl = getTTLtime(nodeId);
if (ttl > 0)
globleTTL = ttl;
else if (ttl <= -3)
globleTTL = 60;
/*if not register GK and receive infoRequest , not send infoRequest*/
if ((strcmp(msgPoint, "infoRequest") == 0) && !AppParam.gkstatus)
{
/* if(WaitForSingleObject(fileSem,INFINITE) == WAIT_OBJECT_0)
{
fprintf(fp,"gk is not enable, and no rsp to infoRequest, return \n");
ReleaseSemaphore(fileSem,1,NULL);
}
*/
return -1;
}
return 0;
}
int msgl = 0;
char* nodetype[] =
{
"Integer",
"Null",
"Boolean",
"Enumeration",
"ObjectIdentifier",
"OctetString",
"BitString",
"GeneralString",
"UniversalString",
"BMPString",
"IA5String",
"VisibleString",
"NumericString",
"PrintableString",
"Choice",
"Sequence",
"Set",
"Of",
"SequenceOf",
"SetOf"
} ;
#if 0
extern int isComplexType(pstNodeType type);
void printRASMsg(int nodeId)
{
int status;
int type;
int i,j;
RvBool isString;
RvInt32 value;
RvPstFieldId fieldId;
RvPvtNodeId childNodeId;
int synNodeId;
char nameBuf[64];
RvBool haveChild = 0;
HPVT hVal = ((cmElem*)hApp)->hVal;
status = pvtGet(hVal, nodeId, &fieldId, &synNodeId, &value, &isString);
if (status < 0)
{
TRACE("pvtGet node(%d) return Error(%d)!\n", nodeId, status);
return;
}
status = pstGetFieldName(cmGetSynTreeByRootName(hApp, "ras"), fieldId, 64, nameBuf);
type = pstGetNodeType(cmGetSynTreeByRootName(hApp, "ras"), synNodeId);
if (status < 0 || type < 0)
{
TRACE("pstGetFieldName field(%d) return Error(%d)!\n", fieldId, status);
return;
}
msgl++;
TRACE(" %2d>", msgl);
for (i=0; i < msgl; i++)
TRACE(" ");
TRACE("%s %s\n", nameBuf, nodetype[type-1]);
/* TRACE("type:%d\n", type);*/
if (isComplexType(type) && msgl < 4)
{
for (i=0; i < msgl; i++)
TRACE(" ");
TRACE("{\n");
childNodeId = pvtChild(hVal, nodeId);
if (childNodeId < 0)
{
TRACE("pvtChild node(%d) return error(%d)\n", nodeId, childNodeId);
return;
}
haveChild = 1;
while (haveChild)
{
type = pvtGet(hVal, childNodeId, &fieldId, &synNodeId, &value, &isString);
if (type < 0)
{
TRACE("pvtGet child node(%d) return Error(%d)!\n", nodeId, type);
return;
}
status = pstGetFieldName(cmGetSynTreeByRootName(hApp, "ras"), fieldId, 64, nameBuf);
type = pstGetNodeType(cmGetSynTreeByRootName(hApp, "ras"), synNodeId);
if (status < 0 || type < 0)
{
TRACE("pstGetFieldName field(%d) return Error(%d)!\n", fieldId, status);
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -