static int prcause_1tr6(char *dest, u_char * p) { char *dp = dest; int i, cause; p++; if (0 == *p) { dp += sprintf(dp, " OK (cause length=0)\n"); return (dp - dest); } else if (*p > 1) { dp += sprintf(dp, " coding "); dp += prbits(dp, p[2], 7, 2); dp += sprintf(dp, " location "); dp += prbits(dp, p[2], 4, 4); *dp++ = '\n'; } p++; cause = 0x7f & *p; /* locate cause value */ for (i = 0; i < cause_1tr6_len; i++) if (cause_1tr6[i].nr == cause) break; /* display cause value if it exists */ if (i == cause_1tr6_len) dp += sprintf(dp, "Unknown cause type %x!\n", cause); else dp += sprintf(dp, " cause value %x : %s \n", cause, cause_1tr6[i].descr); return (dp - dest); }
int prfacility(char *dest, u_char * p) { char *dp = dest; int l, l2; p++; l = *p++; dp += sprintf(dp, " octet 3 "); dp += prbits(dp, *p++, 8, 8); dp += sprintf(dp, "\n"); l -= 1; while (l > 0) { dp += sprintf(dp, " octet 4 "); dp += prbits(dp, *p++, 8, 8); dp += sprintf(dp, "\n"); dp += sprintf(dp, " octet 5 %d\n", l2 = *p++ & 0x7f); l -= 2; dp += sprintf(dp, " contents "); while (l2--) { dp += sprintf(dp, "%2x ", *p++); l--; } dp += sprintf(dp, "\n"); } return (dp - dest); }
static int prcalling(char *dest, u_char * p) { int l; char *dp = dest; p++; l = *p++ - 1; dp += sprintf(dp, " octet 3 "); dp += prbits(dp, *p, 8, 8); *dp++ = '\n'; if (!(*p & 0x80)) { dp += sprintf(dp, " octet 3a "); dp += prbits(dp, *++p, 8, 8); *dp++ = '\n'; l--; }; p++; dp += sprintf(dp, " number digits "); while (l--) *dp++ = *p++; *dp++ = '\n'; return (dp - dest); }
static int prfeatureind(char *dest, u_char * p) { char *dp = dest; p += 2; /* skip id, len */ dp += sprintf(dp, " octet 3 "); dp += prbits(dp, *p, 8, 8); *dp++ = '\n'; if (!(*p++ & 80)) { dp += sprintf(dp, " octet 4 "); dp += prbits(dp, *p++, 8, 8); *dp++ = '\n'; } dp += sprintf(dp, " Status: "); switch (*p) { case 0: dp += sprintf(dp, "Idle"); break; case 1: dp += sprintf(dp, "Active"); break; case 2: dp += sprintf(dp, "Prompt"); break; case 3: dp += sprintf(dp, "Pending"); break; default: dp += sprintf(dp, "(Reserved)"); break; } *dp++ = '\n'; return (dp - dest); }
static int prbearer_ni1(char *dest, u_char * p) { char *dp = dest; u_char len; p++; len = *p++; dp += sprintf(dp, " octet 3 "); dp += prbits(dp, *p, 8, 8); switch (*p++) { case 0x80: dp += sprintf(dp, " Speech"); break; case 0x88: dp += sprintf(dp, " Unrestricted digital information"); break; case 0x90: dp += sprintf(dp, " 3.1 kHz audio"); break; default: dp += sprintf(dp, " Unknown information-transfer capability"); } *dp++ = '\n'; dp += sprintf(dp, " octet 4 "); dp += prbits(dp, *p, 8, 8); switch (*p++) { case 0x90: dp += sprintf(dp, " 64 kbps, circuit mode"); break; case 0xc0: dp += sprintf(dp, " Packet mode"); break; default: dp += sprintf(dp, " Unknown transfer mode"); } *dp++ = '\n'; if (len > 2) { dp += sprintf(dp, " octet 5 "); dp += prbits(dp, *p, 8, 8); switch (*p++) { case 0x21: dp += sprintf(dp, " Rate adaption\n"); dp += sprintf(dp, " octet 5a "); dp += prbits(dp, *p, 8, 8); break; case 0xa2: dp += sprintf(dp, " u-law"); break; default: dp += sprintf(dp, " Unknown UI layer 1 protocol"); } *dp++ = '\n'; } return (dp - dest); }
static int general(char *dest, u_char * p) { char *dp = dest; char ch = ' '; int l, octet = 3; p++; l = *p++; /* Iterate over all octets in the information element */ while (l--) { dp += sprintf(dp, " octet %d%c ", octet, ch); dp += prbits(dp, *p++, 8, 8); *dp++ = '\n'; /* last octet in group? */ if (*p & 0x80) { octet++; ch = ' '; } else if (ch == ' ') ch = 'a'; else ch++; } return (dp - dest); }
static int general_ni1(char *dest, u_char * p) { char *dp = dest; char ch = ' '; int l, octet = 3; p++; l = *p++; while (l--) { dp += sprintf(dp, " octet %d%c ", octet, ch); dp += prbits(dp, *p, 8, 8); *dp++ = '\n'; if (*p++ & 0x80) { octet++; ch = ' '; } else if (ch == ' ') ch = 'a'; else ch++; } return (dp - dest); }
static int prcause(char *dest, u_char * p) { u_char *end; char *dp = dest; int i, cause; end = p + p[1] + 1; p += 2; dp += sprintf(dp, " coding "); dp += prbits(dp, *p, 7, 2); dp += sprintf(dp, " location "); dp += prbits(dp, *p, 4, 4); *dp++ = '\n'; p = skipext(p); cause = 0x7f & *p++; /* locate cause value */ for (i = 0; i < CVSIZE; i++) if (cvlist[i].nr == cause) break; /* display cause value if it exists */ if (i == CVSIZE) dp += sprintf(dp, "Unknown cause type %x!\n", cause); else dp += sprintf(dp, " cause value %x : %s \n", cause, cvlist[i].edescr); while (!0) { if (p > end) break; dp += sprintf(dp, " diag attribute %d ", *p++ & 0x7f); dp += sprintf(dp, " rej %d ", *p & 0x7f); if (*p & 0x80) { *dp++ = '\n'; break; } else dp += sprintf(dp, " av %d\n", (*++p) & 0x7f); } return (dp - dest); }
static int prchident(char *dest, u_char * p) { char *dp = dest; p += 2; dp += sprintf(dp, " octet 3 "); dp += prbits(dp, *p, 8, 8); *dp++ = '\n'; return (dp - dest); }
static int prcharge(char *dest, u_char * p) { char *dp = dest; int l; p++; l = *p++ - 1; dp += sprintf(dp, " GEA "); dp += prbits(dp, *p++, 8, 8); dp += sprintf(dp, " Anzahl: "); /* Iterate over all octets in the * information element */ while (l--) *dp++ = *p++; *dp++ = '\n'; return (dp - dest); }
static int prcalled(char *dest, u_char * p) { int l; char *dp = dest; p++; l = *p++ - 1; dp += sprintf(dp, " octet 3 "); dp += prbits(dp, *p++, 8, 8); *dp++ = '\n'; dp += sprintf(dp, " number digits "); while (l--) *dp++ = *p++; *dp++ = '\n'; return (dp - dest); }
static int prcharge(char *dest, u_char * p) { char *dp = dest; int l; p++; l = *p++ - 1; dp += sprintf(dp, " GEA "); dp += prbits(dp, *p++, 8, 8); dp += sprintf(dp, " Anzahl: "); while (l--) *dp++ = *p++; *dp++ = '\n'; return (dp - dest); }
static int prbearer(char *dest, u_char * p) { char *dp = dest, ch; p += 2; dp += sprintf(dp, " octet 3 "); dp += prbits(dp, *p++, 8, 8); *dp++ = '\n'; dp += sprintf(dp, " octet 4 "); dp += prbits(dp, *p, 8, 8); *dp++ = '\n'; if ((*p++ & 0x1f) == 0x18) { dp += sprintf(dp, " octet 4.1 "); dp += prbits(dp, *p++, 8, 8); *dp++ = '\n'; } /* check for user information layer 1 */ if ((*p & 0x60) == 0x20) { ch = ' '; do { dp += sprintf(dp, " octet 5%c ", ch); dp += prbits(dp, *p, 8, 8); *dp++ = '\n'; if (ch == ' ') ch = 'a'; else ch++; } while (!(*p++ & 0x80)); } /* check for user information layer 2 */ if ((*p & 0x60) == 0x40) { dp += sprintf(dp, " octet 6 "); dp += prbits(dp, *p++, 8, 8); *dp++ = '\n'; } /* check for user information layer 3 */ if ((*p & 0x60) == 0x60) { dp += sprintf(dp, " octet 7 "); dp += prbits(dp, *p++, 8, 8); *dp++ = '\n'; } return (dp - dest); }