From libpri-commits at lists.digium.com Fri Feb 3 17:13:01 2012 From: libpri-commits at lists.digium.com (SVN commits to the libpri project) Date: Fri, 03 Feb 2012 23:13:01 -0000 Subject: [libpri-commits] kmoore: branch 1.4 r2282 - in /branches/1.4: pri_q921.h pridump.c q921.c Message-ID: Author: kmoore Date: Fri Feb 3 17:12:57 2012 New Revision: 2282 URL: http://svnview.digium.com/svn/libpri?view=rev&rev=2282 Log: Make PRI_DEBUG_Q921_RAW work independantly of PRI_DEBUG_Q921_DUMP Ensure that the DUMP and RAW flags work independently in q921_dump(). Closes mantis issue: 18528 Patch-by: wimpy Modified: branches/1.4/pri_q921.h branches/1.4/pridump.c branches/1.4/q921.c Modified: branches/1.4/pri_q921.h URL: http://svnview.digium.com/svn/libpri/branches/1.4/pri_q921.h?view=diff&rev=2282&r1=2281&r2=2282 ============================================================================== --- branches/1.4/pri_q921.h (original) +++ branches/1.4/pri_q921.h Fri Feb 3 17:12:57 2012 @@ -273,7 +273,7 @@ } /* Dumps a *known good* Q.921 packet */ -extern void q921_dump(struct pri *pri, q921_h *h, int len, int showraw, int txrx); +extern void q921_dump(struct pri *pri, q921_h *h, int len, int debugflags, int txrx); /* Bring up the D-channel */ void q921_start(struct q921_link *link); Modified: branches/1.4/pridump.c URL: http://svnview.digium.com/svn/libpri/branches/1.4/pridump.c?view=diff&rev=2282&r1=2281&r2=2282 ============================================================================== --- branches/1.4/pridump.c (original) +++ branches/1.4/pridump.c Fri Feb 3 17:12:57 2012 @@ -71,7 +71,7 @@ static void dump_packet(struct pri *pri, char *buf, int len, int txrx) { q921_h *h = (q921_h *)buf; - q921_dump(pri, h, len, 1, txrx); + q921_dump(pri, h, len, PRI_DEBUG_ALL, txrx); if (!((h->h.data[0] & Q921_FRAMETYPE_MASK) & 0x3)) { q931_dump(pri, h->h.tei, (q931_h *)(h->i.data), len - 4 - 2 /* FCS */, txrx); } Modified: branches/1.4/q921.c URL: http://svnview.digium.com/svn/libpri/branches/1.4/q921.c?view=diff&rev=2282&r1=2281&r2=2282 ============================================================================== --- branches/1.4/q921.c (original) +++ branches/1.4/q921.c Fri Feb 3 17:12:57 2012 @@ -186,7 +186,7 @@ ctrl->q921_txcount++; /* Just send it raw */ if (ctrl->debug & (PRI_DEBUG_Q921_DUMP | PRI_DEBUG_Q921_RAW)) - q921_dump(ctrl, h, len, ctrl->debug & PRI_DEBUG_Q921_RAW, 1); + q921_dump(ctrl, h, len, ctrl->debug, 1); /* Write an extra two bytes for the FCS */ res = ctrl->write_func ? ctrl->write_func(ctrl, h, len + 2) : 0; if (res != (len + 2)) { @@ -1187,7 +1187,7 @@ static void q921_dump_pri_by_h(struct pri *ctrl, char direction_tag, q921_h *h); -void q921_dump(struct pri *ctrl, q921_h *h, int len, int showraw, int txrx) +void q921_dump(struct pri *ctrl, q921_h *h, int len, int debugflags, int txrx) { int x; const char *type; @@ -1196,9 +1196,11 @@ direction_tag = txrx ? '>' : '<'; pri_message(ctrl, "\n"); - q921_dump_pri_by_h(ctrl, direction_tag, h); - - if (showraw) { + if (debugflags & PRI_DEBUG_Q921_DUMP) { + q921_dump_pri_by_h(ctrl, direction_tag, h); + } + + if (debugflags & PRI_DEBUG_Q921_RAW) { char *buf = malloc(len * 3 + 1); int buflen = 0; if (buf) { @@ -1209,132 +1211,134 @@ } } - switch (h->h.data[0] & Q921_FRAMETYPE_MASK) { - case 0: - case 2: - pri_message(ctrl, "%c Informational frame:\n", direction_tag); - break; - case 1: - pri_message(ctrl, "%c Supervisory frame:\n", direction_tag); - break; - case 3: - pri_message(ctrl, "%c Unnumbered frame:\n", direction_tag); - break; - } + if (debugflags & PRI_DEBUG_Q921_DUMP) { + switch (h->h.data[0] & Q921_FRAMETYPE_MASK) { + case 0: + case 2: + pri_message(ctrl, "%c Informational frame:\n", direction_tag); + break; + case 1: + pri_message(ctrl, "%c Supervisory frame:\n", direction_tag); + break; + case 3: + pri_message(ctrl, "%c Unnumbered frame:\n", direction_tag); + break; + } + + pri_message(ctrl, "%c SAPI: %02d C/R: %d EA: %d\n", + direction_tag, + h->h.sapi, + h->h.c_r, + h->h.ea1); + pri_message(ctrl, "%c TEI: %03d EA: %d\n", + direction_tag, + h->h.tei, + h->h.ea2); - pri_message(ctrl, "%c SAPI: %02d C/R: %d EA: %d\n", - direction_tag, - h->h.sapi, - h->h.c_r, - h->h.ea1); - pri_message(ctrl, "%c TEI: %03d EA: %d\n", - direction_tag, - h->h.tei, - h->h.ea2); - - switch (h->h.data[0] & Q921_FRAMETYPE_MASK) { - case 0: - case 2: - /* Informational frame */ - pri_message(ctrl, "%c N(S): %03d 0: %d\n", - direction_tag, - h->i.n_s, - h->i.ft); - pri_message(ctrl, "%c N(R): %03d P: %d\n", - direction_tag, - h->i.n_r, - h->i.p_f); - pri_message(ctrl, "%c %d bytes of data\n", - direction_tag, - len - 4); - break; - case 1: - /* Supervisory frame */ - type = "???"; - switch (h->s.ss) { + switch (h->h.data[0] & Q921_FRAMETYPE_MASK) { case 0: - type = "RR (receive ready)"; + case 2: + /* Informational frame */ + pri_message(ctrl, "%c N(S): %03d 0: %d\n", + direction_tag, + h->i.n_s, + h->i.ft); + pri_message(ctrl, "%c N(R): %03d P: %d\n", + direction_tag, + h->i.n_r, + h->i.p_f); + pri_message(ctrl, "%c %d bytes of data\n", + direction_tag, + len - 4); break; case 1: - type = "RNR (receive not ready)"; - break; - case 2: - type = "REJ (reject)"; - break; - } - pri_message(ctrl, "%c Zero: %d S: %d 01: %d [ %s ]\n", - direction_tag, - h->s.x0, - h->s.ss, - h->s.ft, - type); - pri_message(ctrl, "%c N(R): %03d P/F: %d\n", - direction_tag, - h->s.n_r, - h->s.p_f); - pri_message(ctrl, "%c %d bytes of data\n", - direction_tag, - len - 4); - break; - case 3: - /* Unnumbered frame */ - type = "???"; - if (h->u.ft == 3) { - switch (h->u.m3) { + /* Supervisory frame */ + type = "???"; + switch (h->s.ss) { case 0: - if (h->u.m2 == 3) - type = "DM (disconnect mode)"; - else if (h->u.m2 == 0) - type = "UI (unnumbered information)"; + type = "RR (receive ready)"; + break; + case 1: + type = "RNR (receive not ready)"; break; case 2: - if (h->u.m2 == 0) - type = "DISC (disconnect)"; + type = "REJ (reject)"; break; - case 3: - if (h->u.m2 == 3) - type = "SABME (set asynchronous balanced mode extended)"; - else if (h->u.m2 == 0) - type = "UA (unnumbered acknowledgement)"; - break; - case 4: - if (h->u.m2 == 1) - type = "FRMR (frame reject)"; - break; - case 5: - if (h->u.m2 == 3) - type = "XID (exchange identification note)"; - break; - default: - break; - } - } - pri_message(ctrl, "%c M3: %d P/F: %d M2: %d 11: %d [ %s ]\n", - direction_tag, - h->u.m3, - h->u.p_f, - h->u.m2, - h->u.ft, - type); - pri_message(ctrl, "%c %d bytes of data\n", - direction_tag, - len - 3); - break; - } - - if ((h->u.ft == 3) && (h->u.m3 == 0) && (h->u.m2 == 0) && (h->u.data[0] == 0x0f)) { - int ri; - u_int8_t *action; - - /* TEI management related */ - type = q921_tei_mgmt2str(h->u.data[3]); - pri_message(ctrl, "%c MDL Message: %d(%s)\n", direction_tag, h->u.data[3], type); - ri = (h->u.data[1] << 8) | h->u.data[2]; - pri_message(ctrl, "%c Ri: %d\n", direction_tag, ri); - action = &h->u.data[4]; - for (x = len - (action - (u_int8_t *) h); 0 < x; --x, ++action) { - pri_message(ctrl, "%c Ai: %d E:%d\n", - direction_tag, (*action >> 1) & 0x7f, *action & 0x01); + } + pri_message(ctrl, "%c Zero: %d S: %d 01: %d [ %s ]\n", + direction_tag, + h->s.x0, + h->s.ss, + h->s.ft, + type); + pri_message(ctrl, "%c N(R): %03d P/F: %d\n", + direction_tag, + h->s.n_r, + h->s.p_f); + pri_message(ctrl, "%c %d bytes of data\n", + direction_tag, + len - 4); + break; + case 3: + /* Unnumbered frame */ + type = "???"; + if (h->u.ft == 3) { + switch (h->u.m3) { + case 0: + if (h->u.m2 == 3) + type = "DM (disconnect mode)"; + else if (h->u.m2 == 0) + type = "UI (unnumbered information)"; + break; + case 2: + if (h->u.m2 == 0) + type = "DISC (disconnect)"; + break; + case 3: + if (h->u.m2 == 3) + type = "SABME (set asynchronous balanced mode extended)"; + else if (h->u.m2 == 0) + type = "UA (unnumbered acknowledgement)"; + break; + case 4: + if (h->u.m2 == 1) + type = "FRMR (frame reject)"; + break; + case 5: + if (h->u.m2 == 3) + type = "XID (exchange identification note)"; + break; + default: + break; + } + } + pri_message(ctrl, "%c M3: %d P/F: %d M2: %d 11: %d [ %s ]\n", + direction_tag, + h->u.m3, + h->u.p_f, + h->u.m2, + h->u.ft, + type); + pri_message(ctrl, "%c %d bytes of data\n", + direction_tag, + len - 3); + break; + } + + if ((h->u.ft == 3) && (h->u.m3 == 0) && (h->u.m2 == 0) && (h->u.data[0] == 0x0f)) { + int ri; + u_int8_t *action; + + /* TEI management related */ + type = q921_tei_mgmt2str(h->u.data[3]); + pri_message(ctrl, "%c MDL Message: %d(%s)\n", direction_tag, h->u.data[3], type); + ri = (h->u.data[1] << 8) | h->u.data[2]; + pri_message(ctrl, "%c Ri: %d\n", direction_tag, ri); + action = &h->u.data[4]; + for (x = len - (action - (u_int8_t *) h); 0 < x; --x, ++action) { + pri_message(ctrl, "%c Ai: %d E:%d\n", + direction_tag, (*action >> 1) & 0x7f, *action & 0x01); + } } } } @@ -3006,7 +3010,7 @@ len -= 2; if (ctrl->debug & (PRI_DEBUG_Q921_DUMP | PRI_DEBUG_Q921_RAW)) { - q921_dump(ctrl, h, len, ctrl->debug & PRI_DEBUG_Q921_RAW, 0); + q921_dump(ctrl, h, len, ctrl->debug, 0); } /* Check some reject conditions -- Start by rejecting improper ea's */ From libpri-commits at lists.digium.com Fri Feb 3 17:22:41 2012 From: libpri-commits at lists.digium.com (SVN commits to the libpri project) Date: Fri, 03 Feb 2012 23:22:41 -0000 Subject: [libpri-commits] r2282 - svn:log Message-ID: Author: kmoore Revision: 2282 Modified property: svn:log Modified: svn:log at Fri Feb 3 17:22:41 2012 ------------------------------------------------------------------------------ --- svn:log (original) +++ svn:log Fri Feb 3 17:22:41 2012 @@ -2,5 +2,5 @@ Ensure that the DUMP and RAW flags work independently in q921_dump(). -Closes mantis issue: 18528 +(closes issue PRI-119) Patch-by: wimpy