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:
parent
864fd5fc6b
commit
65983aa84e
|
@ -453,7 +453,7 @@ L3INT Q931Uie_CallID(Q931_TrunkInfo_t *pTrunk, ie *pIE, L3UCHAR * IBuf, L3UCHAR
|
||||||
pie->CallId[x] = IBuf[Octet+Off] & 0x7f;
|
pie->CallId[x] = IBuf[Octet+Off] & 0x7f;
|
||||||
Off++;
|
Off++;
|
||||||
x++;
|
x++;
|
||||||
}while((IBuf[Octet+Off]&0x80) != 0 && x < 10);
|
}while(Q931MoreIE());
|
||||||
|
|
||||||
Q931IESizeTest(Q931E_CALLID);
|
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;
|
pie->Digit[x] = IBuf[Octet+Off] & 0x7f;
|
||||||
Off++;
|
Off++;
|
||||||
x++;
|
x++;
|
||||||
}while((IBuf[Octet+Off]&0x80) != 0 && x < 20);
|
}while(Q931MoreIE() && x < 20);
|
||||||
|
|
||||||
Q931IESizeTest(Q931E_CALLEDSUB);
|
Q931IESizeTest(Q931E_CALLEDSUB);
|
||||||
|
|
||||||
|
@ -713,7 +713,7 @@ L3INT Q931Uie_CalledNum(Q931_TrunkInfo_t *pTrunk, ie *pIE, L3UCHAR * IBuf, L3UCH
|
||||||
Octet ++;
|
Octet ++;
|
||||||
|
|
||||||
/* Octet 4*/
|
/* Octet 4*/
|
||||||
for (x = 0; x < IESize && x < 20; x++)
|
for (x = 0; x < IESize; x++)
|
||||||
{
|
{
|
||||||
pie->Digit[x] = IBuf[Octet+Off] & 0x7f;
|
pie->Digit[x] = IBuf[Octet+Off] & 0x7f;
|
||||||
Off++;
|
Off++;
|
||||||
|
@ -819,7 +819,7 @@ L3INT Q931Uie_CallingNum(Q931_TrunkInfo_t *pTrunk, ie *pIE, L3UCHAR * IBuf, L3UC
|
||||||
pie->Digit[x] = IBuf[Octet+Off] & 0x7f;
|
pie->Digit[x] = IBuf[Octet+Off] & 0x7f;
|
||||||
Off++;
|
Off++;
|
||||||
x++;
|
x++;
|
||||||
}while((IBuf[Octet+Off]&0x80) != 0 && x < 20);
|
}while((IBuf[Octet+Off]&0x80) == 0 && Q931MoreIE());
|
||||||
|
|
||||||
Q931IESizeTest(Q931E_CALLINGNUM);
|
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;
|
pie->Digit[x] = IBuf[Octet+Off] & 0x7f;
|
||||||
Off++;
|
Off++;
|
||||||
x++;
|
x++;
|
||||||
}while((IBuf[Octet+Off]&0x80) != 0 && x < 20);
|
}while(Q931MoreIE() && x < 20);
|
||||||
|
|
||||||
Q931IESizeTest(Q931E_CALLINGSUB);
|
Q931IESizeTest(Q931E_CALLINGSUB);
|
||||||
|
|
||||||
|
|
|
@ -93,9 +93,6 @@ typedef struct
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
L3INT nationalPie_GenericDigits(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
|
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);
|
L3INT nationalUie_GenericDigits(Q931_TrunkInfo_t *pTrunk,ie *pIE, L3UCHAR * IBuf, L3UCHAR *OBuf, L3INT *IOff, L3INT *OOff);
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -107,7 +107,7 @@ void nationalCreateNT(L3UCHAR i)
|
||||||
Q931SetIEProc(Q931ie_KEYPAD_FACILITY, i,Q931Pie_KeypadFac, Q931Uie_KeypadFac);
|
Q931SetIEProc(Q931ie_KEYPAD_FACILITY, i,Q931Pie_KeypadFac, Q931Uie_KeypadFac);
|
||||||
Q931SetIEProc(Q931ie_SIGNAL, i,Q931Pie_Signal, Q931Uie_Signal);
|
Q931SetIEProc(Q931ie_SIGNAL, i,Q931Pie_Signal, Q931Uie_Signal);
|
||||||
Q931SetIEProc(Q931ie_TRANSIT_DELAY_SELECTION_AND_IND, i,Q931Pie_TransNetSel, Q931Uie_TransNetSel);
|
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_CALLING_PARTY_SUBADDRESS, i,Q931Pie_CallingSub, Q931Uie_CallingSub);
|
||||||
Q931SetIEProc(Q931ie_CALLED_PARTY_NUMBER, i,Q931Pie_CalledNum, Q931Uie_CalledNum);
|
Q931SetIEProc(Q931ie_CALLED_PARTY_NUMBER, i,Q931Pie_CalledNum, Q931Uie_CalledNum);
|
||||||
Q931SetIEProc(Q931ie_CALLED_PARTY_SUBADDRESS, i,Q931Pie_CalledSub, Q931Uie_CalledSub);
|
Q931SetIEProc(Q931ie_CALLED_PARTY_SUBADDRESS, i,Q931Pie_CalledSub, Q931Uie_CalledSub);
|
||||||
|
|
|
@ -114,7 +114,7 @@ void nationalCreateTE(L3UCHAR i)
|
||||||
Q931SetIEProc(Q931ie_KEYPAD_FACILITY, i,Q931Pie_KeypadFac, Q931Uie_KeypadFac);
|
Q931SetIEProc(Q931ie_KEYPAD_FACILITY, i,Q931Pie_KeypadFac, Q931Uie_KeypadFac);
|
||||||
Q931SetIEProc(Q931ie_SIGNAL, i,Q931Pie_Signal, Q931Uie_Signal);
|
Q931SetIEProc(Q931ie_SIGNAL, i,Q931Pie_Signal, Q931Uie_Signal);
|
||||||
Q931SetIEProc(Q931ie_TRANSIT_DELAY_SELECTION_AND_IND, i,Q931Pie_TransNetSel, Q931Uie_TransNetSel);
|
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_CALLING_PARTY_SUBADDRESS, i,Q931Pie_CallingSub, Q931Uie_CallingSub);
|
||||||
Q931SetIEProc(Q931ie_CALLED_PARTY_NUMBER, i,Q931Pie_CalledNum, Q931Uie_CalledNum);
|
Q931SetIEProc(Q931ie_CALLED_PARTY_NUMBER, i,Q931Pie_CalledNum, Q931Uie_CalledNum);
|
||||||
Q931SetIEProc(Q931ie_CALLED_PARTY_SUBADDRESS, i,Q931Pie_CalledSub, Q931Uie_CalledSub);
|
Q931SetIEProc(Q931ie_CALLED_PARTY_SUBADDRESS, i,Q931Pie_CalledSub, Q931Uie_CalledSub);
|
||||||
|
|
|
@ -139,116 +139,3 @@ L3INT nationalPie_GenericDigits(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR
|
||||||
return Q931E_NO_ERROR;
|
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;
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue