git-svn-id: http://svn.openzap.org/svn/openzap/trunk@106 a93c3328-9c30-0410-af19-c9cd2b2d52af
This commit is contained in:
Anthony Minessale 2007-05-23 16:11:36 +00:00
parent 82c66d25ab
commit 8697d65b4b
1 changed files with 148 additions and 145 deletions

View File

@ -983,151 +983,154 @@ L3INT Q931Pmes_ReleaseComplete(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3INT IS
return rc; return rc;
} }
/***************************************************************************** /*****************************************************************************
Function: Q931Umes_Restart Function: Q931Umes_Restart
*****************************************************************************/ *****************************************************************************/
L3INT Q931Umes_Restart(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT IOff, L3INT Size) L3INT Q931Umes_Restart(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT IOff, L3INT Size)
{ {
L3INT OOff=0; L3INT OOff=0;
Q931mes_Restart *mes = (Q931mes_Restart*)OBuf; Q931mes_Restart *mes = (Q931mes_Restart*)OBuf;
L3INT rc=Q931E_NO_ERROR; L3INT rc=Q931E_NO_ERROR;
while(IOff < Size) while(IOff < Size)
{ {
switch(IBuf[IOff]) switch(IBuf[IOff])
{ {
case Q931ie_CHANNEL_IDENTIFICATION: case Q931ie_CHANNEL_IDENTIFICATION:
rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ChanID,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff); rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ChanID,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
if(rc != Q931E_NO_ERROR) if(rc != Q931E_NO_ERROR)
return rc; return rc;
break; break;
case Q931ie_DISPLAY: case Q931ie_DISPLAY:
rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Display,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff); rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Display,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
if(rc != Q931E_NO_ERROR) if(rc != Q931E_NO_ERROR)
return rc; return rc;
break; break;
case Q931ie_RESTART_INDICATOR: case Q931ie_RESTART_INDICATOR:
rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->RestartInd,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff); rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->RestartInd,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
if(rc != Q931E_NO_ERROR) if(rc != Q931E_NO_ERROR)
return rc; return rc;
break; break;
default: default:
return Q931E_ILLEGAL_IE; return Q931E_ILLEGAL_IE;
break; break;
} }
} }
mes->Size = sizeof(Q931mes_Restart) - 1 + OOff; mes->Size = sizeof(Q931mes_Restart) - 1 + OOff;
return Q931E_NO_ERROR; return Q931E_NO_ERROR;
} }
/***************************************************************************** /*****************************************************************************
Function: Q931Pmes_Restart Function: Q931Pmes_Restart
*****************************************************************************/ *****************************************************************************/
L3INT Q931Pmes_Restart(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize) L3INT Q931Pmes_Restart(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize)
{ {
L3INT rc = Q931E_NO_ERROR; L3INT rc = Q931E_NO_ERROR;
Q931mes_Restart *pMes = (Q931mes_Restart *)IBuf; Q931mes_Restart *pMes = (Q931mes_Restart *)IBuf;
L3INT Octet = 0; L3INT Octet = 0;
/* Q931 Message Header */ /* Q931 Message Header */
OBuf[Octet++] = pMes->ProtDisc; /* Protocol discriminator */ OBuf[Octet++] = pMes->ProtDisc; /* Protocol discriminator */
OBuf[Octet++] = 2; /* length is 2 octets */ OBuf[Octet++] = 2; /* length is 2 octets */
OBuf[Octet++] = (L3UCHAR)(pMes->CRV>>8); /* msb */ OBuf[Octet++] = (L3UCHAR)(pMes->CRV>>8); /* msb */
OBuf[Octet++] = (L3UCHAR)(pMes->CRV); /* lsb */ OBuf[Octet++] = (L3UCHAR)(pMes->CRV); /* lsb */
OBuf[Octet++] = pMes->MesType; /* message header */ OBuf[Octet++] = pMes->MesType; /* message header */
/* ChanID */ /* ChanID */
if(Q931IsIEPresent(pMes->ChanID)) if(Q931IsIEPresent(pMes->ChanID))
if((rc=Q931Pie[pTrunk->Dialect][pMes->MesType](pTrunk, Q931GetIEPtr(pMes->ChanID,pMes->buf), OBuf, &Octet))!=0) if((rc=Q931Pie[pTrunk->Dialect][pMes->MesType](pTrunk, Q931GetIEPtr(pMes->ChanID,pMes->buf), OBuf, &Octet))!=0)
return rc; return rc;
/* Display */ /* Display */
if(Q931IsIEPresent(pMes->Display)) if(Q931IsIEPresent(pMes->Display))
if((rc=Q931Pie[pTrunk->Dialect][pMes->MesType](pTrunk, Q931GetIEPtr(pMes->Display,pMes->buf), OBuf, &Octet))!=0) if((rc=Q931Pie[pTrunk->Dialect][pMes->MesType](pTrunk, Q931GetIEPtr(pMes->Display,pMes->buf), OBuf, &Octet))!=0)
return rc; return rc;
/* RestartInd */ /* RestartInd */
if(Q931IsIEPresent(pMes->RestartInd)) if(Q931IsIEPresent(pMes->RestartInd))
if((rc=Q931Pie[pTrunk->Dialect][pMes->MesType](pTrunk, Q931GetIEPtr(pMes->RestartInd,pMes->buf), OBuf, &Octet))!=0) if((rc=Q931Pie[pTrunk->Dialect][pMes->MesType](pTrunk, Q931GetIEPtr(pMes->RestartInd,pMes->buf), OBuf, &Octet))!=0)
return rc; return rc;
return rc; return rc;
} }
/***************************************************************************** /*****************************************************************************
Function: Q931Umes_RestartAck Function: Q931Umes_RestartAck
*****************************************************************************/ *****************************************************************************/
L3INT Q931Umes_RestartAck(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT IOff, L3INT Size) L3INT Q931Umes_RestartAck(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT IOff, L3INT Size)
{ {
L3INT OOff=0; L3INT OOff=0;
Q931mes_RestartAck *mes = (Q931mes_RestartAck*)OBuf; Q931mes_RestartAck *mes = (Q931mes_RestartAck*)OBuf;
L3INT rc=Q931E_NO_ERROR; L3INT rc=Q931E_NO_ERROR;
while(IOff < Size) while(IOff < Size)
{ {
switch(IBuf[IOff]) switch(IBuf[IOff])
{ {
case Q931ie_CHANNEL_IDENTIFICATION: case Q931ie_CHANNEL_IDENTIFICATION:
rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ChanID,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff); rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ChanID,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
if(rc != Q931E_NO_ERROR) if(rc != Q931E_NO_ERROR)
return rc; return rc;
break; break;
case Q931ie_DISPLAY: case Q931ie_DISPLAY:
rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Display,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff); rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Display,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
if(rc != Q931E_NO_ERROR) if(rc != Q931E_NO_ERROR)
return rc; return rc;
break; break;
case Q931ie_RESTART_INDICATOR: case Q931ie_RESTART_INDICATOR:
rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->RestartInd,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff); rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->RestartInd,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
if(rc != Q931E_NO_ERROR) if(rc != Q931E_NO_ERROR)
return rc; return rc;
break; break;
default: default:
return Q931E_ILLEGAL_IE; return Q931E_ILLEGAL_IE;
break; break;
} }
} }
mes->Size = sizeof(Q931mes_RestartAck) - 1 + OOff; mes->Size = sizeof(Q931mes_RestartAck) - 1 + OOff;
return Q931E_NO_ERROR; return Q931E_NO_ERROR;
} }
/***************************************************************************** /*****************************************************************************
Function: Q931Pmes_RestartAck Function: Q931Pmes_RestartAck
*****************************************************************************/ *****************************************************************************/
L3INT Q931Pmes_RestartAck(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize) L3INT Q931Pmes_RestartAck(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize)
{ {
L3INT rc = Q931E_NO_ERROR; L3INT rc = Q931E_NO_ERROR;
Q931mes_RestartAck *pMes = (Q931mes_RestartAck *)IBuf; Q931mes_RestartAck *pMes = (Q931mes_RestartAck *)IBuf;
L3INT Octet = 0; L3INT Octet = 0;
*OSize = 0;
/* Q931 Message Header */
/* Q931 Message Header */
OBuf[Octet++] = pMes->ProtDisc; /* Protocol discriminator */
OBuf[Octet++] = 2; /* length is 2 octets */ OBuf[Octet++] = pMes->ProtDisc; /* Protocol discriminator */
OBuf[Octet++] = (L3UCHAR)(pMes->CRV>>8); /* msb */ OBuf[Octet++] = 2; /* length is 2 octets */
OBuf[Octet++] = (L3UCHAR)(pMes->CRV); /* lsb */ OBuf[Octet++] = (L3UCHAR)(pMes->CRV>>8); /* msb */
OBuf[Octet++] = pMes->MesType; /* message header */ OBuf[Octet++] = (L3UCHAR)(pMes->CRV); /* lsb */
OBuf[Octet++] = pMes->MesType; /* message header */
/* ChanID */
if(Q931IsIEPresent(pMes->ChanID)) printf("WTF: %d\n", Octet);
if((rc=Q931Pie[pTrunk->Dialect][pMes->MesType](pTrunk, Q931GetIEPtr(pMes->ChanID,pMes->buf), OBuf, &Octet))!=0) /* ChanID */
return rc; if(Q931IsIEPresent(pMes->ChanID))
/* Display */ if((rc=Q931Pie[pTrunk->Dialect][pMes->MesType](pTrunk, Q931GetIEPtr(pMes->ChanID,pMes->buf), OBuf, &Octet))!=0)
if(Q931IsIEPresent(pMes->Display)) return rc;
if((rc=Q931Pie[pTrunk->Dialect][pMes->MesType](pTrunk, Q931GetIEPtr(pMes->Display,pMes->buf), OBuf, &Octet))!=0) /* Display */
return rc; if(Q931IsIEPresent(pMes->Display))
/* RestartInd */ if((rc=Q931Pie[pTrunk->Dialect][pMes->MesType](pTrunk, Q931GetIEPtr(pMes->Display,pMes->buf), OBuf, &Octet))!=0)
if(Q931IsIEPresent(pMes->RestartInd)) return rc;
if((rc=Q931Pie[pTrunk->Dialect][pMes->MesType](pTrunk, Q931GetIEPtr(pMes->RestartInd,pMes->buf), OBuf, &Octet))!=0) /* RestartInd */
return rc; if(Q931IsIEPresent(pMes->RestartInd))
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_RESTART_INDICATOR](pTrunk, Q931GetIEPtr(pMes->RestartInd,pMes->buf), OBuf, &Octet))!=0)
return rc; return rc;
} printf("WTF: %d\n", Octet);
*OSize = Octet;
return rc;
}
/***************************************************************************** /*****************************************************************************