From 40ae2a030a8fe06ceb4db1b02d375f4e3c4aac6c Mon Sep 17 00:00:00 2001 From: Matthew Fredrickson Date: Tue, 23 Dec 2008 21:38:25 +0000 Subject: [PATCH] Add some additional debug for Q.921 MDL messages as well as fix a bug in RESTART messages on BRI git-svn-id: https://origsvn.digium.com/svn/libpri/branches/1.4@653 2fbb986a-6c06-0410-b554-c9c1f0a7f128 --- q921.c | 39 +++++++++++++++++++++++++++++++++++++++ q931.c | 2 +- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/q921.c b/q921.c index 80fae03..27dcf14 100644 --- a/q921.c +++ b/q921.c @@ -638,6 +638,7 @@ void q921_dump(struct pri *pri, q921_h *h, int len, int showraw, int txrx) direction_tag, h->h.tei, h->h.ea2); + switch (h->h.data[0] & Q921_FRAMETYPE_MASK) { case 0: case 2: @@ -728,6 +729,44 @@ void q921_dump(struct pri *pri, q921_h *h, int len, int showraw, int txrx) len - 3); break; }; + + if ((h->u.ft == 3) && (h->u.m3 == 0) && (h->u.m2 == 0) && (h->u.data[0] == 0x0f)) { + int ri; + int tei; + + ri = (h->u.data[1] << 8) | h->u.data[2]; + tei = (h->u.data[4] >> 1); + /* TEI assignment related */ + switch (h->u.data[3]) { + case Q921_TEI_IDENTITY_REQUEST: + type = "TEI Identity Request"; + break; + case Q921_TEI_IDENTITY_ASSIGNED: + type = "TEI Identity Assigned"; + break; + case Q921_TEI_IDENTITY_CHECK_REQUEST: + type = "TEI Identity Check Request"; + break; + case Q921_TEI_IDENTITY_REMOVE: + type = "TEI Identity Remove"; + break; + case Q921_TEI_IDENTITY_DENIED: + type = "TEI Identity Denied"; + break; + case Q921_TEI_IDENTITY_CHECK_RESPONSE: + type = "TEI Identity Check Response"; + break; + case Q921_TEI_IDENTITY_VERIFY: + type = "TEI Identity Verify"; + break; + default: + type = "Unknown"; + break; + } + pri_message(pri, "%c MDL Message: %s (%d)\n", direction_tag, type, h->u.data[3]); + pri_message(pri, "%c RI: %d\n", direction_tag, ri); + pri_message(pri, "%c Ai: %d E:%d\n", direction_tag, (h->u.data[4] >> 1) & 0x7f, h->u.data[4] & 1); + } } static pri_event *q921_dchannel_up(struct pri *pri) diff --git a/q931.c b/q931.c index ef7a750..6f81ce0 100644 --- a/q931.c +++ b/q931.c @@ -2985,7 +2985,7 @@ static int restart_ies[] = { Q931_CHANNEL_IDENT, Q931_RESTART_INDICATOR, -1 }; int q931_restart(struct pri *pri, int channel) { struct q931_call *c; - c = q931_getcall(pri, 0 | 0x8000, 0); + c = q931_getcall(pri, 0 | 0x8000, 1); if (!c) return -1; if (!channel)