[Freeswitch-dev] OpenZAP Question re: Q931Rx23 (from Q931.c)
Anthony Minessale
anthony.minessale at gmail.com
Tue Jun 24 11:29:14 EDT 2008
buf is the data buffer you are reading the q931 message into.
pTrunk->L3Buf is the buffer in the trunk that you are reading it from it has
the last received message in it.
*Mes is a pointer being declared to point at &buf[Q931L2HeaderSpace];
buf is a raw buffer
Q931L2HeaderSpace is a constant of the 921 header space which i think is 2
bytes.
so it's a pointer to the beginning of the actual message which is 2 bytes
into buf.
On Tue, Jun 24, 2008 at 12:33 AM, Michael Collins <mcollins at fcnetwork.com>
wrote:
> I have question about the two different buffers that are accessed in this
> function:
>
>
>
>
> /*****************************************************************************
>
>
>
> Function: Q931Rx23
>
>
>
> Description: Receive message from layer 2 (LAPD). Receiving a message
>
> is always done in 2 steps. First the message must be
>
> interpreted and translated to a static struct. Secondly
>
> the message is processed and responded to.
>
>
>
> The Q.931 message contains a static header that is
>
> interpreted in this function. The rest is interpreted
>
> in a sub function according to mestype.
>
>
>
> Parameters: pTrunk [IN] Ptr to trunk info.
>
> buf [IN] Ptr to buffer containing message.
>
> Size [IN] Size of message.
>
>
>
> Return Value: Error Code. 0 = No Error, < 0 :error, > 0 : Warning
>
> see q931errors.h for details.
>
>
>
>
> *****************************************************************************/
>
> L3INT Q931Rx23(Q931_TrunkInfo_t *pTrunk, L3UCHAR * buf, L3INT Size)
>
> {
>
> L3UCHAR *Mes = &buf[Q931L2HeaderSpace];
>
> L3INT RetCode = Q931E_NO_ERROR;
>
> Q931mes_Generic *m = (Q931mes_Generic *) pTrunk->L3Buf;
>
> L3INT ISize;
>
>
>
> L3INT IOff = 0;
>
>
>
> /* Protocol Discriminator */
>
> m->ProtDisc = Mes[IOff++];
>
>
>
> /* CRV */
>
> m->CRVFlag = Mes[IOff + 1] & 0x80;
>
> m->CRV = Q931Uie_CRV(pTrunk, Mes, m->buf, &IOff, &ISize);
>
>
>
> /* Message Type */
>
> m->MesType = Mes[IOff++];
>
>
>
> /* Call table proc to unpack codec message */
>
> /*debug */
>
> printf("\n\nQ931Rx23- Dialect: %d, MsgType: %d\nCause:
> [%x]\n",pTrunk->Dialect,m->MesType,m->Cause);
>
> printf("Message: %s\n",Mes);
>
> RetCode = Q931Umes[pTrunk->Dialect][m->MesType](pTrunk, Mes,
> (Q931mes_Generic *)pTrunk->L3Buf, Q931L4HeaderSpace + IOff , Size -
> Q931L4HeaderSpace - IOff + 1);
>
>
>
> if(RetCode >= Q931E_NO_ERROR)
>
> {
>
> RetCode = Q931Proc[pTrunk->Dialect][m->MesType](pTrunk,
> pTrunk->L3Buf, 2);
>
> }
>
>
>
> return RetCode;
>
> }
>
>
>
> What's the difference between pTrunk->L3Buf and *buf in this function? I'm
> trying to understand where the q931 message is coming from as it is passed
> up the stack from layer 2 to layer 3. I may have found a clue about the
> phantom cause IE issue but I won't know for sure until I know what exactly
> I'm looking at.
>
>
>
> Also, can you tell me what is accomplished by creating *Mes as opposed to
> *m? I am familiar with the Q931mes_Generic data struct but the line:
>
> L3UCHAR *Mes = &buf[Q931L2HeaderSpace];
>
> … is confusing me. What does that do?
>
>
>
> Thanks for your time!!
>
>
>
> -MC
>
> _______________________________________________
> Freeswitch-dev mailing list
> Freeswitch-dev at lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev
> http://www.freeswitch.org
>
>
--
Anthony Minessale II
FreeSWITCH http://www.freeswitch.org/
ClueCon http://www.cluecon.com/
AIM: anthm
MSN:anthony_minessale at hotmail.com <MSN%3Aanthony_minessale at hotmail.com>
GTALK/JABBER/PAYPAL:anthony.minessale at gmail.com<PAYPAL%3Aanthony.minessale at gmail.com>
IRC: irc.freenode.net #freeswitch
FreeSWITCH Developer Conference
sip:888 at conference.freeswitch.org <sip%3A888 at conference.freeswitch.org>
iax:guest at conference.freeswitch.org/888
googletalk:conf+888 at conference.freeswitch.org<googletalk%3Aconf%2B888 at conference.freeswitch.org>
pstn:213-799-1400
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-dev/attachments/20080624/4007cb51/attachment-0001.html
More information about the Freeswitch-dev
mailing list