better compliance with Q.931 on a few ie pack/unpack functions. Revert to using the corrected functions for national dialect.

git-svn-id: http://svn.openzap.org/svn/openzap/trunk@154 a93c3328-9c30-0410-af19-c9cd2b2d52af
This commit is contained in:
Michael Jerris 2007-05-26 01:02:43 +00:00
parent 864fd5fc6b
commit 65983aa84e
5 changed files with 7 additions and 123 deletions

View File

@ -453,7 +453,7 @@ L3INT Q931Uie_CallID(Q931_TrunkInfo_t *pTrunk, ie *pIE, L3UCHAR * IBuf, L3UCHAR
pie->CallId[x] = IBuf[Octet+Off] & 0x7f;
Off++;
x++;
}while((IBuf[Octet+Off]&0x80) != 0 && x < 10);
}while(Q931MoreIE());
Q931IESizeTest(Q931E_CALLID);
@ -622,7 +622,7 @@ L3INT Q931Uie_CalledSub(Q931_TrunkInfo_t *pTrunk, ie *pIE,L3UCHAR * IBuf, L3UCHA
pie->Digit[x] = IBuf[Octet+Off] & 0x7f;
Off++;
x++;
}while((IBuf[Octet+Off]&0x80) != 0 && x < 20);
}while(Q931MoreIE() && x < 20);
Q931IESizeTest(Q931E_CALLEDSUB);
@ -713,7 +713,7 @@ L3INT Q931Uie_CalledNum(Q931_TrunkInfo_t *pTrunk, ie *pIE, L3UCHAR * IBuf, L3UCH
Octet ++;
/* Octet 4*/
for (x = 0; x < IESize && x < 20; x++)
for (x = 0; x < IESize; x++)
{
pie->Digit[x] = IBuf[Octet+Off] & 0x7f;
Off++;
@ -819,7 +819,7 @@ L3INT Q931Uie_CallingNum(Q931_TrunkInfo_t *pTrunk, ie *pIE, L3UCHAR * IBuf, L3UC
pie->Digit[x] = IBuf[Octet+Off] & 0x7f;
Off++;
x++;
}while((IBuf[Octet+Off]&0x80) != 0 && x < 20);
}while((IBuf[Octet+Off]&0x80) == 0 && Q931MoreIE());
Q931IESizeTest(Q931E_CALLINGNUM);
@ -925,7 +925,7 @@ L3INT Q931Uie_CallingSub(Q931_TrunkInfo_t *pTrunk, ie *pIE,L3UCHAR * IBuf, L3UCH
pie->Digit[x] = IBuf[Octet+Off] & 0x7f;
Off++;
x++;
}while((IBuf[Octet+Off]&0x80) != 0 && x < 20);
}while(Q931MoreIE() && x < 20);
Q931IESizeTest(Q931E_CALLINGSUB);

View File

@ -93,9 +93,6 @@ typedef struct
*****************************************************************************/
L3INT nationalPie_GenericDigits(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
L3INT nationalPie_CallingNum(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
L3INT nationalUie_CallingNum(Q931_TrunkInfo_t *pTrunk, ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff);
L3INT nationalUie_GenericDigits(Q931_TrunkInfo_t *pTrunk,ie *pIE, L3UCHAR * IBuf, L3UCHAR *OBuf, L3INT *IOff, L3INT *OOff);

View File

@ -107,7 +107,7 @@ void nationalCreateNT(L3UCHAR i)
Q931SetIEProc(Q931ie_KEYPAD_FACILITY, i,Q931Pie_KeypadFac, Q931Uie_KeypadFac);
Q931SetIEProc(Q931ie_SIGNAL, i,Q931Pie_Signal, Q931Uie_Signal);
Q931SetIEProc(Q931ie_TRANSIT_DELAY_SELECTION_AND_IND, i,Q931Pie_TransNetSel, Q931Uie_TransNetSel);
Q931SetIEProc(Q931ie_CALLING_PARTY_NUMBER, i,nationalPie_CallingNum, nationalUie_CallingNum);
Q931SetIEProc(Q931ie_CALLING_PARTY_NUMBER, i,Q931Pie_CallingNum, Q931Uie_CallingNum);
Q931SetIEProc(Q931ie_CALLING_PARTY_SUBADDRESS, i,Q931Pie_CallingSub, Q931Uie_CallingSub);
Q931SetIEProc(Q931ie_CALLED_PARTY_NUMBER, i,Q931Pie_CalledNum, Q931Uie_CalledNum);
Q931SetIEProc(Q931ie_CALLED_PARTY_SUBADDRESS, i,Q931Pie_CalledSub, Q931Uie_CalledSub);

View File

@ -114,7 +114,7 @@ void nationalCreateTE(L3UCHAR i)
Q931SetIEProc(Q931ie_KEYPAD_FACILITY, i,Q931Pie_KeypadFac, Q931Uie_KeypadFac);
Q931SetIEProc(Q931ie_SIGNAL, i,Q931Pie_Signal, Q931Uie_Signal);
Q931SetIEProc(Q931ie_TRANSIT_DELAY_SELECTION_AND_IND, i,Q931Pie_TransNetSel, Q931Uie_TransNetSel);
Q931SetIEProc(Q931ie_CALLING_PARTY_NUMBER, i,nationalPie_CallingNum, nationalUie_CallingNum);
Q931SetIEProc(Q931ie_CALLING_PARTY_NUMBER, i,Q931Pie_CallingNum, Q931Uie_CallingNum);
Q931SetIEProc(Q931ie_CALLING_PARTY_SUBADDRESS, i,Q931Pie_CallingSub, Q931Uie_CallingSub);
Q931SetIEProc(Q931ie_CALLED_PARTY_NUMBER, i,Q931Pie_CalledNum, Q931Uie_CalledNum);
Q931SetIEProc(Q931ie_CALLED_PARTY_SUBADDRESS, i,Q931Pie_CalledSub, Q931Uie_CalledSub);

View File

@ -139,116 +139,3 @@ L3INT nationalPie_GenericDigits(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR
return Q931E_NO_ERROR;
}
/*****************************************************************************
Function: nationalUie_CallingNum
Parameters: pIE[OUT] ptr to Information Element id.
IBuf[IN] ptr to a packed ie.
OBuf[OUT] ptr to buffer for Unpacked ie.
IOff[IN\OUT] Input buffer offset
OOff[IN\OUT] Output buffer offset
Ibuf and OBuf points directly to buffers. The IOff and OOff
must be updated, but are otherwise not used in the ie unpack.
Return Value: Error Message
*****************************************************************************/
L3INT nationalUie_CallingNum(Q931_TrunkInfo_t *pTrunk, ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
{
Q931ie_CallingNum * pie = (Q931ie_CallingNum*)OBuf;
L3INT Off = 0;
L3INT Octet = 0;
L3INT x;
L3INT IESize;
*pIE=0;
/* Octet 1 */
pie->IEId = IBuf[Octet];
Octet ++;
/* Octet 2 */
IESize = IBuf[Octet ++];
/* Octet 3 */
pie->TypNum = (IBuf[Octet+Off] >> 4) & 0x07;
pie->NumPlanID = IBuf[Octet+Off] & 0x0f;
/* Octet 3a */
if((IBuf[Octet+Off] & 0x80) != 0)
{
Off++;
pie->PresInd = (IBuf[Octet+Off] >> 5) & 0x03;
pie->ScreenInd = IBuf[Octet+Off] & 0x03;
}
Octet++;
/* Octet 4a*/
x=0;
do{
pie->Digit[x] = IBuf[Octet+Off] & 0x7f;
Off++;
x++;
}while(Q931MoreIE());
Q931IESizeTest(Q931E_CALLINGNUM);
Q931SetIE(*pIE, *OOff);
*IOff = (*IOff) + Octet + Off;
*OOff = (*OOff) + sizeof(Q931ie_CallingNum) + x - 1;
pie->Size = (L3UCHAR)(sizeof(Q931ie_CallingNum) + x - 1);
return Q931E_NO_ERROR;
}
/*****************************************************************************
Function: nationalPie_CallingNum
Parameters: IBuf[IN] Ptr to struct.
OBuf[OUT] Ptr tp packed output buffer.
Octet[IN/OUT] Offset into OBuf.
Return Value: Error code, 0 = OK
*****************************************************************************/
L3INT nationalPie_CallingNum(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet)
{
Q931ie_CallingSub * pIE = (Q931ie_CallingSub*)IBuf;
L3INT rc=0;
L3INT Beg=*Octet;
L3INT li;
L3INT sN = pIE->Size - sizeof(Q931ie_CalledSub) + 1;
L3INT x;
/* Octet 1 */
OBuf[(*Octet)++] = Q931ie_CALLING_PARTY_SUBADDRESS;
li=(*Octet)++;
/* Octet 3 */
OBuf[(*Octet)++] = 0x80 | (pIE->TypNum << 4) | (pIE->OddEvenInd << 3);
/* Octet 3a */
/*
Details about the use and how to detect if Octet 3a is used
are very weak. Temp left out.
Octet 3 msb is set to 1 to indicate that this is not present
*/
/* Octet 4 */
for(x=0;x<sN;x++)
{
OBuf[(*Octet)++] = pIE->Digit[x];
}
OBuf[(*Octet)-1] |= 0x80; /* Terminate bit */
OBuf[li] = (L3UCHAR)((*Octet)-Beg) - 2;
return rc;
}