mgcpmsgtran.c

来自「mgcp协议源代码和测试程序,还有一个编译器」· C语言 代码 · 共 1,868 行 · 第 1/5 页

C
1,868
字号
      wNum++;    }  }    /* BearerInfo */  if (pSrcData->pBearerInformation != NULL)  {    pDesParam = AppendNewParameter(pDesParam, wNum);    Assert(pDesParam);    if (pDesParam != NULL)    {        FillAbnfParamBearerInfo(pDesParam+wNum, pSrcData->pBearerInformation);            wNum++;    }  }  /* Call ID */  if (pSrcData->pcCallId != NULL)  {    pDesParam = AppendNewParameter(pDesParam, wNum);    Assert(pDesParam);        if (pDesParam != NULL)    {      pDesParam[wNum].iType = MGCPParameter_ParamCallId;      StrClone(&pDesParam[wNum].u.ParamCallId.CallId, pSrcData->pcCallId);      wNum++;    }  }  /* Connection ID */  if (pSrcData->pConnectionIds != NULL)  {    pDesParam = AppendNewParameter(pDesParam, wNum);    Assert(pDesParam);    if (pDesParam != NULL)    {      FillAbnfParamConnectionIDS(pDesParam+wNum, pSrcData->pConnectionIds);           wNum++;    }  }    /* Notified Entity */  if (pSrcData->pNotifiedEntity != NULL)  {    pDesParam = AppendNewParameter(pDesParam, wNum);    Assert(pDesParam);    if (pDesParam != NULL)    {      FillAbnfParamNotifiedEntity(pDesParam+wNum, pSrcData->pNotifiedEntity);      wNum++;    }  }  /* Requested ID */  if (pSrcData->pcRequestIdentifier != NULL)  {    pDesParam = AppendNewParameter(pDesParam, wNum);    Assert(pDesParam);    if (pDesParam != NULL)    {      FillAbnfParamRequestedID(pDesParam+wNum, pSrcData->pcRequestIdentifier);        wNum++;    }  }  /* Local Connection Options */  if (pSrcData->pLocalConnectionOptions != NULL)  {    pDesParam = AppendNewParameter(pDesParam, wNum);    Assert(pDesParam);    if (pDesParam != NULL)    {      FillAbnfParamLocalConnectionOpts(pDesParam+wNum, pSrcData->pLocalConnectionOptions);        wNum++;    }  }  /* Connection Mode */  if (pSrcData->pConnectionMode != NULL)  {    pDesParam = AppendNewParameter(pDesParam, wNum);    Assert(pDesParam);    if (pDesParam != NULL)    {      FillAbnfParamConnectionMode(pDesParam+wNum,pSrcData->pConnectionMode );      wNum++;    }  }  /* Requested Events */  if (pSrcData->pRequestedEvents != NULL)  {    pDesParam = AppendNewParameter(pDesParam, wNum);    Assert(pDesParam);    if (pDesParam != NULL)    {      FillAbnfParamRequestEvents(pDesParam+wNum, pSrcData->pRequestedEvents);      wNum++;    }  }  /* Signal Requests */  if (pSrcData->pSignalRequests != NULL)  {    pDesParam = AppendNewParameter(pDesParam, wNum);    Assert(pDesParam);    if (pDesParam != NULL)    {      FillAbnfParamSignalRequests(pDesParam+wNum, pSrcData->pSignalRequests);      wNum++;    }  }  /* Digit Map */  if (pSrcData->pDigitMap != NULL)  {    pDesParam = AppendNewParameter(pDesParam, wNum);    Assert(pDesParam);    if (pDesParam != NULL)    {      FillAbnfParamDigitMap(pDesParam+wNum, pSrcData->pDigitMap);      wNum++;    }  }  /* Observed Events */  if (pSrcData->pObservedEvents != NULL)  {    pDesParam = AppendNewParameter(pDesParam, wNum);    Assert(pDesParam);    if (pDesParam != NULL)    {      FillAbnfParamObservedEvents(pDesParam+wNum, pSrcData->pObservedEvents);      wNum++;    }  }  /* Connection Parameters */  if (pSrcData->pConnectionParameters != NULL)  {    pDesParam = AppendNewParameter(pDesParam, wNum);    Assert(pDesParam);    if (pDesParam != NULL)    {      FillAbnfParamConnectionParameters(pDesParam+wNum,                                        pSrcData->pConnectionParameters);      wNum++;    }  }  /* Reason code */  if (pSrcData->pReasonCode != NULL)  {    pDesParam = AppendNewParameter(pDesParam, wNum);    Assert(pDesParam);    if (pDesParam != NULL)    {      FillAbnfParamReasonCode(pDesParam+wNum, pSrcData->pReasonCode);      wNum++;    }  }    /* Specific Endpoint ID */  if (pSrcData->pSpecificEndpointID != NULL)  {    pDesParam = AppendNewParameter(pDesParam, wNum);    Assert(pDesParam);    if (pDesParam != NULL)    {      pDesParam[wNum].iType = MGCPParameter_ParamSpecificEndpointID;      pDesParam[wNum].u.ParamSpecificEndpointID.SpecificEndpointID.flag = 1;      pDesParam[wNum].u.ParamSpecificEndpointID.SpecificEndpointID.pRuleData        = calloc(1, sizeof(TEndpointName));	  Assert(pDesParam[wNum].u.ParamSpecificEndpointID.SpecificEndpointID.pRuleData);      FillAbnfEndpointName((TEndpointName*)pDesParam[wNum].u.ParamSpecificEndpointID.SpecificEndpointID.pRuleData,                           pSrcData->pSpecificEndpointID);        wNum++;    }  }  /* Second Connection ID */  if (pSrcData->pcSecondConnectionID != NULL)  {    pDesParam = AppendNewParameter(pDesParam, wNum);    Assert(pDesParam);    if (pDesParam != NULL)    {      pDesParam[wNum].iType = MGCPParameter_ParamSecondEndpointID;      pDesParam[wNum].u.ParamSecondConnectionID.SecondConnectionID.ConnectionIdValue.iNum = 1;      pDesParam[wNum].u.ParamSecondConnectionID.SecondConnectionID.ConnectionIdValue.pNode        = calloc(1, sizeof(char**));      Assert(pDesParam[wNum].u.ParamSecondConnectionID.SecondConnectionID.ConnectionIdValue.pNode);      StrClone((char**)pDesParam[wNum].u.ParamSecondConnectionID.SecondConnectionID.ConnectionIdValue.pNode,               pSrcData->pcSecondConnectionID);        wNum++;    }  }  /* Requested Info */  if (pSrcData->pRequestedInfo != NULL)  {    pDesParam = AppendNewParameter(pDesParam, wNum);    Assert(pDesParam);    if (pDesParam != NULL)    {      FillAbnfParamReqestedInfo(pDesParam+wNum, pSrcData->pRequestedInfo);      wNum++;    }  }  /* Quarantine Handling */  if (pSrcData->pQuarantineHandling != NULL)  {    pDesParam = AppendNewParameter(pDesParam, wNum);    Assert(pDesParam);    if (pDesParam != NULL)    {      FillAbnfParamQuarantineHandling(pDesParam+wNum, pSrcData->pQuarantineHandling);      wNum++;    }  }    /* Detec Events */  if (pSrcData->pDetectEvents != NULL)  {    pDesParam = AppendNewParameter(pDesParam, wNum);    Assert(pDesParam);    if (pDesParam != NULL)    {      FillAbnfParamDetectEvents(pDesParam+wNum, pSrcData->pDetectEvents);      wNum++;    }  }    /* Restart Method */  if (pSrcData->pRestartMethod != NULL)  {    pDesParam = AppendNewParameter(pDesParam, wNum);    Assert(pDesParam);    if (pDesParam != NULL)    {      FillAbnfParamRestartMethod(pDesParam+wNum, pSrcData->pRestartMethod);      wNum++;    }  }    /* Restart Delay */  if (pSrcData->pRestartDelay != NULL)  {    pDesParam = AppendNewParameter(pDesParam, wNum);    Assert(pDesParam);    if (pDesParam != NULL)    {      pDesParam[wNum].iType = MGCPParameter_ParamRestartDelay;      StrClone(&pDesParam[wNum].u.ParamRestartDelay.RestartDelay,               Ultoa(*pSrcData->pRestartDelay));        wNum++;    }  }    /* Capabilities */  if (pSrcData->pCapabilities != NULL)  {    pDesParam = AppendNewParameter(pDesParam, wNum);    Assert(pDesParam);    if (pDesParam != NULL)    {      FillAbnfParamCapabilities(pDesParam+wNum, pSrcData->pCapabilities);        wNum++;    }  }    /* Event States */  if (pSrcData->pEventStates != NULL)  {    pDesParam = AppendNewParameter(pDesParam, wNum);    Assert(pDesParam);    if (pDesParam != NULL)    {      FillAbnfParamEventStates(pDesParam+wNum, pSrcData->pEventStates);      wNum++;    }  }    /* Supported Packages */  if (pSrcData->pPackageList != NULL)  {    pDesParam = AppendNewParameter(pDesParam, wNum);    Assert(pDesParam);    if (pDesParam != NULL)    {      FillAbnfParamPackageList(pDesParam+wNum, pSrcData->pPackageList);      wNum++;    }  }    /* Supported Maximum Datagram */  if (pSrcData->pMaxMGCPDatagram != NULL)  {    pDesParam = AppendNewParameter(pDesParam, wNum);    Assert(pDesParam);    if (pDesParam != NULL)    {      pDesParam[wNum].iType = MGCPParameter_ParamMaxMGCPDatagram;      StrClone(&pDesParam[wNum].u.ParamMaxMGCPDatagram.MaxMGCPDatagram,               Ultoa(*pSrcData->pMaxMGCPDatagram));      wNum++;    }  }    /* Experimental parameters */  if (pSrcData->ExperiParamList.wNum > 0)  {    int i;    pDesParam = (TMGCPParameter*)realloc(pDesParam,                  (wNum+pSrcData->ExperiParamList.wNum)*sizeof(TMGCPParameter));    Assert(pDesParam);    if (pDesParam != NULL)    {      for (i = 0; i < pSrcData->ExperiParamList.wNum; i++)      {        FillAbnfExperimentalParameter(pDesParam+wNum,                                  pSrcData->ExperiParamList.pExperiParamList+i);        wNum++;      }    }  }  pDesData->iNum = wNum;  pDesData->pNode = pDesParam;  }/******************************************************************************* * Function          : FillEPCFCommand * * Description       : Fill the mgcp EPCF command according to the MGCP abnf *                     parameter lines *                      * Input parameters  : wNum - Number of the parameters in the abnf parameter *                            line *                     pSrcData - Pointer to the abnf parameter lines * * Output parameters : pDesData - Pointer to the filled MGCP EPCF command * * Return value      : Return OK if all the parameters are valid, otherwise *                     return FAIL.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?