]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
unpack ie's into the ie buffer space, not overwriting the rest of the message structure.
authorMichael Jerris <mike@jerris.com>
Wed, 23 May 2007 20:27:03 +0000 (20:27 +0000)
committerMichael Jerris <mike@jerris.com>
Wed, 23 May 2007 20:27:03 +0000 (20:27 +0000)
git-svn-id: http://svn.openzap.org/svn/openzap/trunk@117 a93c3328-9c30-0410-af19-c9cd2b2d52af

libs/openzap/src/isdn/Q931mes.c

index 2b92190352e723e13eefa70dcc926828973a35d5..96a8309333fa6393a8effd6f721613c26583c4cc 100644 (file)
@@ -62,32 +62,32 @@ L3INT Q931Umes_Alerting(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf,
                switch(mescode)
                {
                case Q931ie_BEARER_CAPABILITY: 
-                       rc = Q931Uie[pTrunk->Dialect][mescode](pTrunk, &mes->BearerCap,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][mescode](pTrunk, &mes->BearerCap,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                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) 
                                return rc;
                        break;
                case Q931ie_PROGRESS_INDICATOR:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ProgInd,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ProgInd,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                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) 
                                return rc;
                        break;
                case Q931ie_SIGNAL:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Signal,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Signal,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                case Q931ie_HIGH_LAYER_COMPATIBILITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->HLComp,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->HLComp,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
@@ -171,27 +171,27 @@ L3INT Q931Umes_CallProceeding(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, L3UCHAR *O
                switch(IBuf[IOff])
                {
                case Q931ie_BEARER_CAPABILITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->BearerCap,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->BearerCap,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                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) 
                                return rc;
                        break;
                case Q931ie_PROGRESS_INDICATOR:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ProgInd,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ProgInd,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                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) 
                                return rc;
                        break;
                case Q931ie_HIGH_LAYER_COMPATIBILITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->HLComp,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->HLComp,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
@@ -301,42 +301,42 @@ L3INT Q931Umes_Connect(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L
                switch(IBuf[IOff])
                {
                case Q931ie_BEARER_CAPABILITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->BearerCap,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->BearerCap,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                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) 
                                return rc;
                        break;
                case Q931ie_PROGRESS_INDICATOR:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ProgInd,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ProgInd,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                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) 
                                return rc;
                        break;
                case Q931ie_DATETIME:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->DateTime,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->DateTime,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                case Q931ie_SIGNAL:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Signal,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Signal,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                case Q931ie_LOW_LAYER_COMPATIBILITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->LLComp,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->LLComp,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                case Q931ie_HIGH_LAYER_COMPATIBILITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->HLComp,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->HLComp,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
@@ -430,13 +430,13 @@ L3INT Q931Umes_ConnectAck(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf
                switch(IBuf[IOff])
                {
                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) 
                                return rc;
                        break;
 
                case Q931ie_SIGNAL:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Signal,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Signal,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
@@ -499,22 +499,22 @@ L3INT Q931Umes_Disconnect(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf
                switch(IBuf[IOff])
                {
                case Q931ie_CAUSE:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Cause,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Cause,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                case Q931ie_PROGRESS_INDICATOR:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ProgInd,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ProgInd,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                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) 
                                return rc;
                        break;
                case Q931ie_SIGNAL:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Signal,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Signal,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
@@ -586,25 +586,25 @@ L3INT Q931Umes_Information(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBu
                switch(IBuf[IOff])
                {
                case Q931ie_SENDING_COMPLETE:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->SendComplete,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->SendComplete,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
 
                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) 
                                return rc;
                        break;
 
                case Q931ie_KEYPAD_FACILITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->KeypadFac,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->KeypadFac,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
 
                case Q931ie_CALLED_PARTY_NUMBER:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->CalledNum,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->CalledNum,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
@@ -681,19 +681,19 @@ L3INT Q931Umes_Notify(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L3
                switch(IBuf[IOff])
                {
                case Q931ie_BEARER_CAPABILITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->BearerCap,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->BearerCap,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
 
                case Q931ie_NOTIFICATION_INDICATOR:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->NotifInd,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->NotifInd,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
 
                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) 
                                return rc;
                        break;
@@ -754,27 +754,27 @@ L3INT Q931Umes_Progress(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf,
                switch(IBuf[IOff])
                {
                case Q931ie_BEARER_CAPABILITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->BearerCap,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->BearerCap,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                case Q931ie_CAUSE:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Cause,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Cause,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                case Q931ie_PROGRESS_INDICATOR:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ProgInd,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ProgInd,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                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) 
                                return rc;
                        break;
                case Q931ie_HIGH_LAYER_COMPATIBILITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->HLComp,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->HLComp,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
@@ -850,17 +850,17 @@ L3INT Q931Umes_Release(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L
                switch(IBuf[IOff])
                {
                case Q931ie_CAUSE:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Cause,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Cause,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                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) 
                                return rc;
                        break;
                case Q931ie_SIGNAL:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Signal,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Signal,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
@@ -925,17 +925,17 @@ L3INT Q931Umes_ReleaseComplete(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR
                switch(IBuf[IOff])
                {
                case Q931ie_CAUSE:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Cause,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Cause,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                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) 
                                return rc;
                        break;
                case Q931ie_SIGNAL:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Signal,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Signal,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
@@ -1071,17 +1071,17 @@ L3INT Q931Umes_RestartAck(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf
         switch(IBuf[IOff])
         {
         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) 
                 return rc;
             break;
         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) 
                 return rc;
             break;
         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) 
                 return rc;
             break;
@@ -1104,7 +1104,6 @@ L3INT Q931Pmes_RestartAck(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3INT ISize,
     L3INT rc = Q931E_NO_ERROR;
     Q931mes_RestartAck *pMes = (Q931mes_RestartAck *)IBuf;
     L3INT Octet = 0;
-       *OSize = 0;
 
     /* Q931 Message Header */
 
@@ -1124,9 +1123,9 @@ L3INT Q931Pmes_RestartAck(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3INT ISize,
             return rc;
     /* RestartInd */
     if(Q931IsIEPresent(pMes->RestartInd))
-        if((rc=Q931Pie[pTrunk->Dialect][Q931ie_RESTART_INDICATOR](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;
-       *OSize = Octet;
+
     return rc;
 }
 
@@ -1147,7 +1146,7 @@ L3INT Q931Umes_Resume(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L3
                switch(IBuf[IOff])
                {
                case Q931ie_CALL_IDENTITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->CallID,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->CallID,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
@@ -1204,12 +1203,12 @@ L3INT Q931Umes_ResumeAck(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf,
                switch(IBuf[IOff])
                {
                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) 
                                return rc;
                        break;
                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) 
                                return rc;
                        break;
@@ -1271,12 +1270,12 @@ L3INT Q931Umes_ResumeReject(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR * O
                switch(IBuf[IOff])
                {
                case Q931ie_CAUSE:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Cause,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Cause,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                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) 
                                return rc;
                        break;
@@ -1352,19 +1351,19 @@ L3INT Q931Umes_Setup(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L3I
                switch(IBuf[IOff])
                {
                case Q931ie_SENDING_COMPLETE:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->SendComplete,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->SendComplete,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                case Q931ie_REPEAT_INDICATOR:
                        if(ir==0)
                        {
-                               rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->RepeatInd,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                               rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->RepeatInd,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                                ir++;
                        }
                        else if(ir==1)
                        {
-                               rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->LLRepeatInd,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                               rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->LLRepeatInd,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                                ir++;
                        }
                        else
@@ -1373,77 +1372,77 @@ L3INT Q931Umes_Setup(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L3I
                        }
                        break;
                case Q931ie_BEARER_CAPABILITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->BearerCap,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->BearerCap,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                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) 
                                return rc;
                        break;
                case Q931ie_PROGRESS_INDICATOR:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ProgInd,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ProgInd,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                case Q931ie_NETWORK_SPECIFIC_FACILITIES:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->NetFac,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->NetFac,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                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) 
                                return rc;
                        break;
                case Q931ie_DATETIME:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->DateTime,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->DateTime,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                case Q931ie_KEYPAD_FACILITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->KeypadFac,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->KeypadFac,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                case Q931ie_SIGNAL:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Signal,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Signal,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                case Q931ie_CALLING_PARTY_NUMBER:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->CallingNum,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->CallingNum,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                case Q931ie_CALLING_PARTY_SUBADDRESS:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->CallingSub,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->CallingSub,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                case Q931ie_CALLED_PARTY_NUMBER:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->CalledSub,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->CalledSub,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                case Q931ie_CALLED_PARTY_SUBADDRESS:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->CalledSub,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->CalledSub,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                case Q931ie_TRANSIT_NETWORK_SELECTION:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->TransNetSel,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->TransNetSel,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                case Q931ie_LOW_LAYER_COMPATIBILITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->LLComp,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->LLComp,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                case Q931ie_HIGH_LAYER_COMPATIBILITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->HLComp,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->HLComp,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
@@ -1601,22 +1600,22 @@ L3INT Q931Umes_SetupAck(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf,
                switch(IBuf[IOff])
                {
                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) 
                                return rc;
                        break;
                case Q931ie_PROGRESS_INDICATOR:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ProgInd,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ProgInd,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                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) 
                                return rc;
                        break;
                case Q931ie_SIGNAL:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Signal,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Signal,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
@@ -1688,17 +1687,17 @@ L3INT Q931Umes_Status(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L3
                switch(IBuf[IOff])
                {
                case Q931ie_CAUSE:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Cause,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Cause,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                case Q931ie_CALL_STATE:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->CallState,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->CallState,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                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) 
                                return rc;
                        break;
@@ -1764,7 +1763,7 @@ L3INT Q931Umes_StatusEnquiry(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *O
                switch(IBuf[IOff])
                {
                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) 
                                return rc;
                        break;
@@ -1821,7 +1820,7 @@ L3INT Q931Umes_Suspend(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L
                switch(IBuf[IOff])
                {
                case Q931ie_CALL_IDENTITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->CallID,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->CallID,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
@@ -1879,7 +1878,7 @@ L3INT Q931Umes_SuspendAck(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf
                switch(IBuf[IOff])
                {
                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) 
                                return rc;
                        break;
@@ -1936,12 +1935,12 @@ L3INT Q931Umes_SuspendReject(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *O
                switch(IBuf[IOff])
                {
                case Q931ie_CAUSE:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Cause,&IBuf[IOff], &OBuf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Cause,&IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
                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) 
                                return rc;
                        break;