[libpri-commits] kmoore: branch 1.4 r2282 - in /branches/1.4: pri_q921.h pridump.c q921.c
SVN commits to the libpri project
libpri-commits at lists.digium.com
Fri Feb 3 17:13:01 CST 2012
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 */
More information about the libpri-commits
mailing list