[libss7-commits] mattf: trunk r85 - /trunk/
libss7-commits at lists.digium.com
libss7-commits at lists.digium.com
Fri Jun 8 08:40:51 MST 2007
Author: mattf
Date: Fri Jun 8 10:40:50 2007
New Revision: 85
URL: http://svn.digium.com/view/libss7?view=rev&rev=85
Log:
Updates to add better debugging support
Modified:
trunk/isup.c
trunk/mtp2.c
trunk/mtp3.c
trunk/ss7.c
trunk/ss7_internal.h
trunk/ss7linktest.c
Modified: trunk/isup.c
URL: http://svn.digium.com/view/libss7/trunk/isup.c?view=diff&rev=85&r1=84&r2=85
==============================================================================
--- trunk/isup.c (original)
+++ trunk/isup.c Fri Jun 8 10:40:50 2007
@@ -802,7 +802,7 @@
return res + 1;
}
return res;
- } else
+ } else
return 1 + parms[x].receive(ss7, c, message, parmbuf + 1, parmbuf[0]);
case PARM_TYPE_OPTIONAL:
optparm = (struct isup_parm_opt *)parmbuf;
@@ -964,7 +964,7 @@
for (; (x - fixedparams) < varparams; x++) {
varoffsets[i] = &mh->data[offset] - &varoffsets[i];
i++;
- res = do_parm(ss7, c, mh->type, parms[x], (void *)(mh->data + offset), len, PARM_TYPE_VARIABLE, 1); /* Find out what else we need to add */
+ res = do_parm(ss7, c, mh->type, parms[x], (void *)(mh->data + offset), len, PARM_TYPE_VARIABLE, 1);
if (res < 0) {
ss7_error(ss7, "!! Unable to add mandatory variable parameter '%s'\n", param2str(parms[x]));
@@ -979,7 +979,7 @@
int addedparms = 0;
int offsetbegins = offset;
while (parms[x] > -1) {
- res = do_parm(ss7, c, mh->type, parms[x], (void *)(mh->data + offset), len, PARM_TYPE_OPTIONAL, 1); /* Find out what else we need to add */
+ res = do_parm(ss7, c, mh->type, parms[x], (void *)(mh->data + offset), len, PARM_TYPE_OPTIONAL, 1);
x++;
if (res < 0) {
@@ -1032,8 +1032,83 @@
return -1;
}
- ss7_message(ss7, "\t\tMessage Type: %s (%x)\n", message2str(mh->type), mh->type & 0xff);
+ ss7_dump_buf(ss7, 2, buf, 2);
ss7_message(ss7, "\t\tCIC: %d\n", cic);
+ ss7_dump_buf(ss7, 2, &buf[2], 1);
+ ss7_message(ss7, "\t\tMessage Type: %s\n", message2str(mh->type), mh->type & 0xff);
+
+#if 0
+ if (messages[ourmessage].messagetype == ISUP_IAM) {
+ if (ss7->switchtype == SS7_ITU) {
+ fixedparams = messages[ourmessage].mand_fixed_params;
+ varparams = messages[ourmessage].mand_var_params;
+ parms = messages[ourmessage].param_list;
+ } else {
+ /* Stupid ANSI SS7, they just had to be different, didn't they? */
+ fixedparams = 3;
+ varparams = 2;
+ parms = ansi_iam_params;
+ }
+ } else {
+ fixedparams = messages[ourmessage].mand_fixed_params;
+ varparams = messages[ourmessage].mand_var_params;
+ parms = messages[ourmessage].param_list;
+ }
+
+ /* Parse fixed parms */
+ for (x = 0; x < fixedparams; x++) {
+ res = do_parm(ss7, c, mh->type, parms[x], (void *)(mh->data + offset), len, PARM_TYPE_FIXED, 0, 0, 1);
+ res = dump_parm(ss7, c, mh->type, parms[x], (void *)(mh->data + offset), len, PARM_TYPE_FIXED)
+
+ if (res < 0) {
+ ss7_error(ss7, "!! Unable to parse mandatory fixed parameter '%s'\n", param2str(parms[x]));
+ return -1;
+ }
+
+ len -= res;
+ offset += res;
+ }
+
+ if (varparams) {
+ offset += varparams; /* add one for the optionals */
+ res -= varparams;
+ }
+ if (messages[ourmessage].opt_params) {
+ opt_ptr = &mh->data[offset++];
+ }
+
+ i = 0;
+
+ for (; (x - fixedparams) < varparams; x++) {
+ res = do_parm(ss7, c, mh->type, parms[x], (void *)(mh->data + offset), len, PARM_TYPE_VARIABLE, 0, 0, 1);
+
+ if (res < 0) {
+ ss7_error(ss7, "!! Unable to parse mandatory variable parameter '%s'\n", param2str(parms[x]));
+ return -1;
+ }
+
+ len -= res;
+ offset += res;
+ }
+
+ /* Optional paramter parsing code */
+ if (messages[ourmessage].opt_params && *opt_ptr) {
+ while ((len > 0) && (mh->data[offset] != 0)) {
+ struct isup_parm_opt *optparm = (struct isup_parm_opt *)(mh->data + offset);
+
+ res = do_parm(ss7, c, mh->type, optparm->type, mh->data + offset, len, PARM_TYPE_OPTIONAL, 0, 0, 1); /* Find out what else we need to add */
+
+ if (res < 0) {
+ ss7_message(ss7, "Unhandled optional parameter 0x%x '%s'\n", optparm->type, param2str(optparm->type));
+ isup_dump_buffer(ss7, optparm->data, optparm->len);
+ res = optparm->len + 2;
+ }
+
+ len -= res;
+ offset += res;
+ }
+ }
+#endif
return 0;
}
@@ -1114,7 +1189,7 @@
i = 0;
for (; (x - fixedparams) < varparams; x++) {
- res = do_parm(ss7, c, mh->type, parms[x], (void *)(mh->data + offset), len, PARM_TYPE_VARIABLE, 0); /* Find out what else we need to add */
+ res = do_parm(ss7, c, mh->type, parms[x], (void *)(mh->data + offset), len, PARM_TYPE_VARIABLE, 0);
if (res < 0) {
ss7_error(ss7, "!! Unable to parse mandatory variable parameter '%s'\n", param2str(parms[x]));
@@ -1130,7 +1205,7 @@
while ((len > 0) && (mh->data[offset] != 0)) {
struct isup_parm_opt *optparm = (struct isup_parm_opt *)(mh->data + offset);
- res = do_parm(ss7, c, mh->type, optparm->type, mh->data + offset, len, PARM_TYPE_OPTIONAL, 0); /* Find out what else we need to add */
+ res = do_parm(ss7, c, mh->type, optparm->type, mh->data + offset, len, PARM_TYPE_OPTIONAL, 0);
if (res < 0) {
ss7_message(ss7, "Unhandled optional parameter 0x%x '%s'\n", optparm->type, param2str(optparm->type));
Modified: trunk/mtp2.c
URL: http://svn.digium.com/view/libss7/trunk/mtp2.c?view=diff&rev=85&r1=84&r2=85
==============================================================================
--- trunk/mtp2.c (original)
+++ trunk/mtp2.c Fri Jun 8 10:40:50 2007
@@ -279,7 +279,7 @@
res = write(link->fd, h, size); /* Add 2 for FCS */
if (res > 0) {
- mtp2_dump(link, '>', h, size);
+ mtp2_dump(link, '>', h, size - 2);
if (retransmit) {
/* Update our retransmit positon since it transmitted */
update_retransmit_pos(link);
@@ -767,6 +767,7 @@
return;
else
link->lastsutxd = FISU;
+ ss7_dump_msg(link->master, buf, len);
ss7_message(link->master, "FSN: %d FIB %d\n", h->fsn, h->fib);
ss7_message(link->master, "BSN: %d BIB %d\n", h->bsn, h->bib);
@@ -799,12 +800,14 @@
mtypech = "SIB";
break;
}
+ ss7_dump_msg(link->master, buf, len);
ss7_message(link->master, "FSN: %d FIB %d\n", h->fsn, h->fib);
ss7_message(link->master, "BSN: %d BIB %d\n", h->bsn, h->bib);
ss7_message(link->master, "%c[%d] LSSU %s\n", prefix, link->slc, mtypech);
break;
case 2:
- ss7_dump_buf(link->master, buf, len);
+ ss7_dump_msg(link->master, buf, len);
+ ss7_dump_buf(link->master, 0, buf, 3);
ss7_message(link->master, "FSN: %d FIB %d\n", h->fsn, h->fib);
ss7_message(link->master, "BSN: %d BIB %d\n", h->bsn, h->bib);
ss7_message(link->master, "%c[%d] MSU\n", prefix, link->slc);
@@ -819,8 +822,9 @@
int mtp2_receive(struct mtp2 *link, unsigned char *buf, int len)
{
struct mtp_su_head *h = (struct mtp_su_head *)buf;
-
- mtp2_dump(link, '<', buf, len);
+ len -= 2; /* Strip the CRC off */
+
+ mtp2_dump(link, '<', buf, len - 2);
update_txbuf(link, h->bsn);
@@ -834,14 +838,14 @@
switch (h->li) {
case 0:
/* FISU */
- return fisu_rx(link, h, len);
+ return fisu_rx(link, h, len - 2);
case 1:
case 2:
/* LSSU */
- return lssu_rx(link, h, len);
+ return lssu_rx(link, h, len - 2);
default:
/* MSU */
- return msu_rx(link, h, len);
+ return msu_rx(link, h, len - 2);
}
return 0;
Modified: trunk/mtp3.c
URL: http://svn.digium.com/view/libss7/trunk/mtp3.c?view=diff&rev=85&r1=84&r2=85
==============================================================================
--- trunk/mtp3.c (original)
+++ trunk/mtp3.c Fri Jun 8 10:40:50 2007
@@ -229,6 +229,7 @@
h1 = get_h1(headerptr);
h0 = get_h0(headerptr);
+ ss7_dump_buf(ss7, 1, headerptr, 1);
ss7_message(ss7, "\tH0: %x H1: %x\n", h0, h1);
ss7_message(ss7, "\tMessage type: %s\n", net_mng_message2str(h0, h1));
return 0;
@@ -443,13 +444,11 @@
int rlsize;
- ss7_message(ss7, "\tNetwork Indicator 0x%x\n", ni);
-
+ ss7_dump_buf(ss7, 1, sio, 1);
+ ss7_message(ss7, "\tNetwork Indicator: %d Priority: %d User Part: %s\n", ni, priority, userpart2str(userpart));
rlsize = get_routinglabel(ss7->switchtype, sif, &rl);
-
- ss7_message(ss7, "\tOPC %d DPC %d\n", rl.opc, rl.dpc);
-
- ss7_message(ss7, "\tUser Part: %s (%x) Priority: %d\n", userpart2str(userpart), userpart, priority);
+ ss7_dump_buf(ss7, 1, sif, rlsize);
+ ss7_message(ss7, "\tOPC %d DPC %d SLS %d\n", rl.opc, rl.dpc, rl.sls);
/* Pass it to the correct user part */
switch (userpart) {
Modified: trunk/ss7.c
URL: http://svn.digium.com/view/libss7/trunk/ss7.c?view=diff&rev=85&r1=84&r2=85
==============================================================================
--- trunk/ss7.c (original)
+++ trunk/ss7.c Fri Jun 8 10:40:50 2007
@@ -70,7 +70,20 @@
ss7->debug = flags;
}
-void ss7_dump_buf(struct ss7 *ss7, unsigned char *buf, int len)
+void ss7_dump_buf(struct ss7 *ss7, int tabs, unsigned char *buf, int len)
+{
+ int i;
+
+ for (i = 0; i < tabs; i++)
+ ss7_message(ss7, "\t");
+ ss7_message(ss7, "[ ");
+ for (i = 0; i < len; i++) {
+ ss7_message(ss7, "%02x ", buf[i]);
+ }
+ ss7_message(ss7, "]\n");
+}
+
+void ss7_dump_msg(struct ss7 *ss7, unsigned char *buf, int len)
{
int i;
Modified: trunk/ss7_internal.h
URL: http://svn.digium.com/view/libss7/trunk/ss7_internal.h?view=diff&rev=85&r1=84&r2=85
==============================================================================
--- trunk/ss7_internal.h (original)
+++ trunk/ss7_internal.h Fri Jun 8 10:40:50 2007
@@ -98,6 +98,8 @@
void ss7_error(struct ss7 *ss7, char *fmt, ...);
-void ss7_dump_buf(struct ss7 *ss7, unsigned char *buf, int len);
+void ss7_dump_buf(struct ss7 *ss7, int tabs, unsigned char *buf, int len);
+
+void ss7_dump_msg(struct ss7 *ss7, unsigned char *buf, int len);
#endif /* _SS7_H */
Modified: trunk/ss7linktest.c
URL: http://svn.digium.com/view/libss7/trunk/ss7linktest.c?view=diff&rev=85&r1=84&r2=85
==============================================================================
--- trunk/ss7linktest.c (original)
+++ trunk/ss7linktest.c Fri Jun 8 10:40:50 2007
@@ -128,6 +128,7 @@
switch (e->e) {
case SS7_EVENT_UP:
printf("[%d] --- SS7 Up ---\n", linkset->linkno);
+ isup_grs(ss7, 1, 24, dpc);
break;
case MTP2_LINK_UP:
printf("[%d] MTP2 link up\n", linkset->linkno);
@@ -135,14 +136,13 @@
case ISUP_EVENT_GRS:
printf("Got GRS from cic %d to %d: Acknowledging\n", e->grs.startcic, e->grs.endcic);
isup_gra(ss7, e->grs.startcic, e->grs.endcic, dpc);
- isup_grs(ss7, e->grs.startcic, e->grs.endcic, dpc);
break;
case ISUP_EVENT_RSC:
isup_rlc(ss7, e->rsc.call);
break;
case ISUP_EVENT_GRA:
printf("Got GRA from cic %d to %d.\n", e->gra.startcic, e->gra.endcic);
- //ss7_call(ss7);
+ ss7_call(ss7);
break;
case ISUP_EVENT_BLO:
isup_bla(ss7, e->blo.cic, dpc);
More information about the libss7-commits
mailing list