summaryrefslogtreecommitdiffstats
path: root/usr.sbin/i4b/isdndecode/layer3_subr.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/i4b/isdndecode/layer3_subr.c')
-rw-r--r--usr.sbin/i4b/isdndecode/layer3_subr.c1122
1 files changed, 0 insertions, 1122 deletions
diff --git a/usr.sbin/i4b/isdndecode/layer3_subr.c b/usr.sbin/i4b/isdndecode/layer3_subr.c
deleted file mode 100644
index 6fcedd2..0000000
--- a/usr.sbin/i4b/isdndecode/layer3_subr.c
+++ /dev/null
@@ -1,1122 +0,0 @@
-/*
- * Copyright (c) 1997, 2000 Hellmuth Michaelis. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *---------------------------------------------------------------------------
- *
- * layer3_subr.c - subroutines for IE decoding
- * -------------------------------------------
- *
- * $Id: layer3_subr.c,v 1.8 2000/02/21 15:17:17 hm Exp $
- *
- * $FreeBSD$
- *
- * last edit-date: [Mon Feb 21 15:45:16 2000]
- *
- *---------------------------------------------------------------------------*/
-
-#include "decode.h"
-
-/*---------------------------------------------------------------------------*
- * dummy function
- *---------------------------------------------------------------------------*/
-int
-f_null(char *pbuf, unsigned char *buf, int off)
-{
- return(0);
-}
-
-/*---------------------------------------------------------------------------*
- *
- *---------------------------------------------------------------------------*/
-int
-f_cstat(char *pbuf, unsigned char *buf, int off)
-{
- int i = 0;
- int len = 0;
- char buffer[256];
-
- i++;
- len = buf[i];
- i++;
- sprintf((pbuf+strlen(pbuf)), "Std=");
- switch((buf[i] & 0x60) >> 5)
- {
- case 0:
- strcpy(buffer, "CCITT");
- break;
- case 1:
- strcpy(buffer, "ISO/IEC");
- break;
- case 2:
- strcpy(buffer, "National");
- break;
- case 3:
- strcpy(buffer, "Special");
- break;
- }
- sprintf((pbuf+strlen(pbuf)), ", State=");
-
- switch((buf[i] & 0x3f))
- {
- case 0:
- strcpy(buffer, "Null");
- break;
- case 1:
- strcpy(buffer, "Call initiated");
- break;
- case 2:
- strcpy(buffer, "Overlap sending");
- break;
- case 3:
- strcpy(buffer, "Outgoing call proceeding");
- break;
- case 4:
- strcpy(buffer, "Call delivered");
- break;
- case 6:
- strcpy(buffer, "Call present");
- break;
- case 7:
- strcpy(buffer, "Call received");
- break;
- case 8:
- strcpy(buffer, "Connect request");
- break;
- case 9:
- strcpy(buffer, "Incoming call proceeding");
- break;
- case 10:
- strcpy(buffer, "Active");
- break;
- case 11:
- strcpy(buffer, "Disconnect request");
- break;
- case 12:
- strcpy(buffer, "Disconnect indication");
- break;
- case 15:
- strcpy(buffer, "Suspend request");
- break;
- case 17:
- strcpy(buffer, "Resume request");
- break;
- case 19:
- strcpy(buffer, "Release request");
- break;
- case 22:
- strcpy(buffer, "Call abort");
- break;
- case 25:
- strcpy(buffer, "Overlap receiving");
- break;
- case 0x3d:
- strcpy(buffer, "Restart request");
- break;
- case 0x3e:
- strcpy(buffer, "Restart");
- break;
- default:
- strcpy(buffer, "ERROR: undefined/reserved");
- break;
- }
- sprintf((pbuf+strlen(pbuf)), "]");
- i++;
- return(i);
-}
-
-/*---------------------------------------------------------------------------*
- *
- *---------------------------------------------------------------------------*/
-int
-f_chid(char *pbuf, unsigned char *buf, int off)
-{
- int i = 0;
- int len = 0;
- char buffer[256];
-
- i++;
- len = buf[i];
- i++;
-
- extension(3, pbuf+strlen(pbuf), off+i, buf[i], 0x80);
-
- sprintline(3, (pbuf+strlen(pbuf)), off+i, buf[i], 0x40, "Interface Id present = %s", buf[i] & 0x40 ? "Yes" : "No");
-
- sprintline(3, (pbuf+strlen(pbuf)), off+i, buf[i], 0x20, "Interface Type = %s", buf[i] & 0x20 ? "Other (PRI)" : "BRI");
-
- sprintline(3, (pbuf+strlen(pbuf)), off+i, buf[i], 0x10, "Spare");
-
- sprintline(3, (pbuf+strlen(pbuf)), off+i, buf[i], 0x08, "Channel = %s", buf[i] & 0x08 ? "exclusive" : "preferred");
-
- sprintline(3, (pbuf+strlen(pbuf)), off+i, buf[i], 0x04, "Channel is%s the D-Channel", buf[i] & 0x04 ? "" : " not");
-
- switch(buf[i] & 0x03)
- {
- case 0:
- strcpy(buffer, "no channel");
- break;
- case 1:
- strcpy(buffer, "B-1");
- break;
- case 2:
- strcpy(buffer, "B-2");
- break;
- case 3:
- strcpy(buffer, "any channel");
- break;
- }
- sprintline(3, (pbuf+strlen(pbuf)), off+i, buf[i], 0x03, "Channel = %s", buffer);
-
- i++;
- return(i);
-}
-
-/*---------------------------------------------------------------------------*
- *
- *---------------------------------------------------------------------------*/
-int
-f_fac(char *pbuf, unsigned char *buf, int off)
-{
- return(q932_facility(pbuf, buf));
-}
-
-/*---------------------------------------------------------------------------*
- *
- *---------------------------------------------------------------------------*/
-int
-f_progi(char *pbuf, unsigned char *buf, int off)
-{
- int i = 0;
- int len = 0;
- char buffer[256];
-
- i++;
- len = buf[i];
- i++;
- sprintf((pbuf+strlen(pbuf)), "Std=");
- switch((buf[i] & 0x60) >> 5)
- {
- case 0:
- strcpy(buffer, "CCITT");
- break;
- case 1:
- strcpy(buffer, "ISO/IEC");
- break;
- case 2:
- strcpy(buffer, "National");
- break;
- case 3:
- strcpy(buffer, "Local");
- break;
- }
- sprintf((pbuf+strlen(pbuf)), ", Loc=");
-
- switch((buf[i] & 0x0f))
- {
- case 0:
- strcpy(buffer, "User");
- break;
- case 1:
- strcpy(buffer, "Private network serving local user");
- break;
- case 2:
- strcpy(buffer, "Public network serving local user");
- break;
- case 3:
- strcpy(buffer, "Transit network");
- break;
- case 4:
- strcpy(buffer, "Public network serving remote user");
- break;
- case 5:
- strcpy(buffer, "Private network serving remote user");
- break;
- case 6:
- strcpy(buffer, "Network beyond interworking point");
- break;
- default:
- strcpy(buffer, "ERROR: undefined/reserved");
- break;
- }
-
- i++;
-
- sprintf((pbuf+strlen(pbuf)), "\n Description");
-
- switch((buf[i] & 0x7f))
- {
- case 1:
- strcpy(buffer, "Call is not end-to-end ISDN");
- break;
- case 2:
- strcpy(buffer, "Destination address is non-ISDN");
- break;
- case 3:
- strcpy(buffer, "Origination address is non-ISDN");
- break;
- case 4:
- strcpy(buffer, "Call has returned to the ISDN");
- break;
- case 5:
- strcpy(buffer, "Interworking occured, Service change");
- break;
- case 8:
- strcpy(buffer, "In-band info or appropriate pattern now available");
- break;
- default:
- strcpy(buffer, "ERROR: undefined/reserved");
- break;
- }
- sprintf((pbuf+strlen(pbuf)), "]");
- i++;
-
- return(i);
-}
-
-/*---------------------------------------------------------------------------*
- *
- *---------------------------------------------------------------------------*/
-int
-f_displ(char *pbuf, unsigned char *buf, int off)
-{
- int i = 0;
- int j = 0;
- int len = 0;
-
- i++;
- len = buf[i];
- i++;
- for(j = 0; j < len; j++)
- {
- sprintf((pbuf+strlen(pbuf)),"%c", buf[j+i]);
- }
- sprintf((pbuf+strlen(pbuf)),"]");
- i += j;
-
- return(i);
-}
-
-/*---------------------------------------------------------------------------*
- *
- *---------------------------------------------------------------------------*/
-int
-f_date(char *pbuf, unsigned char *buf, int off)
-{
- int i = 0;
- int j = 0;
- int len = 0;
-
- i++;
- len = buf[i];
- i++;
-
- sprintline(3, (pbuf+strlen(pbuf)), off+i, buf[i], 0xff, "Year = %02d", buf[i]);
- i++;
-
- sprintline(3, (pbuf+strlen(pbuf)), off+i, buf[i], 0xff, "Month = %02d", buf[i]);
- i++;
-
- sprintline(3, (pbuf+strlen(pbuf)), off+i, buf[i], 0xff, "Day = %02d", buf[i]);
- i++;
-
- j=3;
- if(j < len)
- {
- sprintline(3, (pbuf+strlen(pbuf)), off+i, buf[i], 0xff, "Hour = %02d", buf[i]);
- i++;
- j++;
- }
- if(j < len)
- {
- sprintline(3, (pbuf+strlen(pbuf)), off+i, buf[i], 0xff, "Minute = %02d", buf[i]);
- i++;
- j++;
- }
- if(j < len)
- {
- sprintline(3, (pbuf+strlen(pbuf)), off+i, buf[i], 0xff, "Second = %02d", buf[i]);
- i++;
- j++;
- }
- i += len;
- return(i);
-}
-
-/*---------------------------------------------------------------------------*
- * decode and print the cause
- *---------------------------------------------------------------------------*/
-int
-f_cause(char *pbuf, unsigned char *buf, int off)
-{
- int j;
- int len;
- int i = 0;
- int ls;
- char buffer[256];
-
- i++; /* index -> length */
-
- len = buf[i];
-
- i++; /* coding/location */
- len--;
-
- ls = buf[i];
-
- extension(3, pbuf+strlen(pbuf), off+i, buf[i], 0x80);
-
- switch((ls & 0x60) >> 5)
- {
- case 0:
- strcpy(buffer, "CCITT");
- break;
- case 1:
- strcpy(buffer, "ISO/IEC");
- break;
- case 2:
- strcpy(buffer, "National");
- break;
- case 3:
- strcpy(buffer, "Local");
- break;
- }
- sprintline(3, (pbuf+strlen(pbuf)), off+i, buf[i], 0x60, "Coding Standard = %s", buffer);
-
- sprintline(3, (pbuf+strlen(pbuf)), off+i, buf[i], 0x10, "Spare");
-
- switch(ls & 0x0f)
- {
- case 0x00:
- strcpy(buffer, "user");
- break;
- case 0x01:
- strcpy(buffer, "private network serving local user");
- break;
- case 0x02:
- strcpy(buffer, "public network serving local user");
- break;
- case 0x03:
- strcpy(buffer, "transit network");
- break;
- case 0x04:
- strcpy(buffer, "public network serving remote user");
- break;
- case 0x05:
- strcpy(buffer, "private network serving remote user");
- break;
- case 0x07:
- strcpy(buffer, "international network");
- break;
- case 0x0a:
- strcpy(buffer, "network beyond interworking point");
- break;
- default:
- sprintf(buffer, "reserved (0x%02x)", ls & 0x0f);
- break;
- }
- sprintline(3, (pbuf+strlen(pbuf)), off+i, buf[i], 0x0f, "Location = %s", buffer);
-
- i++;
- len--;
-
- if(!(ls & 0x80))
- {
- extension(3, pbuf+strlen(pbuf), off+i, buf[i], 0x80);
-
- switch(buf[i] & 0x7f)
- {
- case 0:
- strcpy(buffer, "Q.931");
- break;
- case 3:
- strcpy(buffer, "X.21");
- break;
- case 4:
- strcpy(buffer, "X.25");
- break;
- case 5:
- strcpy(buffer, "Q.1031/Q.1051");
- break;
- default:
- strcpy(buffer, "Reserved");
- break;
- }
- sprintline(3, (pbuf+strlen(pbuf)), off+i, buf[i], 0x7f, "Recommendation = %s", buffer);
- i++;
- len--;
- }
-
- extension(3, pbuf+strlen(pbuf), off+i, buf[i], 0x80);
-
- sprintline(3, (pbuf+strlen(pbuf)), off+i, buf[i], 0x7f, "Cause = %s", print_cause_q850(buf[i] & 0x7f));
-
- i++;
- len--;
-
- for(j = 0; j < len; j++)
- sprintline(3, (pbuf+strlen(pbuf)), off+i+j, buf[i+j], 0xff, "Diagnostics = %02d %s", buf[i+j], buf[i+j]);
-
- i += (len+1);
-
- return(i);
-}
-
-/*---------------------------------------------------------------------------*
- * decode and print the bearer capability
- *---------------------------------------------------------------------------*/
-int
-f_bc(char *pbuf, unsigned char *buf, int off)
-{
- int len;
- int i = 0;
- int mr = 0;
- char buffer[256];
-
- i++; /* index -> length */
-
- len = buf[i];
- i++;
-
- extension(3, pbuf+strlen(pbuf), off+i, buf[i], 0x80);
-
- switch((buf[i] & 0x60) >> 5)
- {
- case 0:
- strcpy(buffer, "CCITT");
- break;
- case 1:
- strcpy(buffer, "ISO/IEC");
- break;
- case 2:
- strcpy(buffer, "National");
- break;
- case 3:
- strcpy(buffer, "NSI Std");
- break;
- }
- sprintline(3, (pbuf+strlen(pbuf)), off+i, buf[i], 0x60, "Coding standard = %s", buffer);
-
- switch(buf[i] & 0x1f)
- {
- case 0x00:
- strcpy(buffer, "speech");
- break;
- case 0x08:
- strcpy(buffer, "unrestricted digital information");
- break;
- case 0x09:
- strcpy(buffer, "restricted digital information");
- break;
- case 0x10:
- strcpy(buffer, "3.1 kHz audio");
- break;
- case 0x11:
- strcpy(buffer, "unrestricted digital information with tones");
- break;
- case 0x18:
- strcpy(buffer, "video");
- break;
- default:
- sprintf(buffer, "reserved (0x%02x)", buf[i] & 0x0f);
- break;
- }
- sprintline(3, (pbuf+strlen(pbuf)), off+i, buf[i], 0x1f, "Capability = %s", buffer);
-
- i++;
- len--;
-
- extension(3, pbuf+strlen(pbuf), off+i, buf[i], 0x80);
-
- switch((buf[i] & 0x60) >> 5)
- {
- case 0:
- strcpy(buffer, "circuit");
- break;
- case 2:
- strcpy(buffer, "packet");
- break;
- default:
- sprintf((pbuf+strlen(pbuf)), "reserved (0x%02x)", ((buf[i] & 0x60) >> 5));
- break;
- }
- sprintline(3, (pbuf+strlen(pbuf)), off+i, buf[i], 0x60, "Mode = %s", buffer);
-
- switch(buf[i] & 0x1f)
- {
- case 0x00:
- strcpy(buffer, "packet mode");
- break;
- case 0x10:
- strcpy(buffer, "64 kbit/s");
- break;
- case 0x11:
- strcpy(buffer, "2 x 64 kbit/s");
- break;
- case 0x13:
- strcpy(buffer, "384 kbit/s");
- break;
- case 0x15:
- strcpy(buffer, "1536 kbit/s");
- break;
- case 0x17:
- strcpy(buffer, "1920 kbit/s");
- break;
- case 0x18:
- strcpy(buffer, "Multirate");
- mr = 1;
- break;
- default:
- sprintf((pbuf+strlen(pbuf)), "reserved (0x%02x)", buf[i] & 0x0f);
- break;
- }
- sprintline(3, (pbuf+strlen(pbuf)), off+i, buf[i], 0x1f, "Rate = %s", buffer);
-
- i++;
- len--;
-
- if(!len)
- goto exit;
-
- if(mr)
- {
- extension(3, pbuf+strlen(pbuf), off+i, buf[i], 0x80);
- sprintline(3, (pbuf+strlen(pbuf)), off+i, buf[i], 0x60, "Rate multiplier = %d", buf[i] & 0x7f);
- i++;
- len--;
- }
-
- if(!len)
- goto exit;
-
- switch(buf[i] & 0x1f)
- {
- case 0x01:
- strcpy(buffer, "V.110/X.30");
- break;
- case 0x02:
- strcpy(buffer, "G.711 u-Law");
- break;
- case 0x03:
- strcpy(buffer, "G.711 a-Law");
- break;
- case 0x04:
- strcpy(buffer, "G.721 ADPCM/I.460");
- break;
- case 0x05:
- strcpy(buffer, "H.221/H.242");
- break;
- case 0x07:
- strcpy(buffer, "non-CCITT rate adaption");
- break;
- case 0x08:
- strcpy(buffer, "V.120");
- break;
- case 0x09:
- strcpy(buffer, "X.31");
- break;
- default:
- sprintf((pbuf+strlen(pbuf)), "reserved (0x%02x)", buf[i] & 0x1f);
- break;
- }
- sprintline(3, (pbuf+strlen(pbuf)), off+i, buf[i], 0x1f, "Layer 1 Protocol = %s", buffer);
-
- i++;
- len--;
-
- if(!len)
- goto exit;
-
-/* work to do ahead !!! */
-
- if(!(buf[i-1] & 0x80))
- {
- sprintf((pbuf+strlen(pbuf)), "\n user rate=0x%02x ", buf[i] & 0x1f);
-
- if(buf[i] & 0x40)
- sprintf((pbuf+strlen(pbuf)), "(async,");
- else
- sprintf((pbuf+strlen(pbuf)), "(sync,");
-
- if(buf[i] & 0x20)
- sprintf((pbuf+strlen(pbuf)), "in-band neg. possible)");
- else
- sprintf((pbuf+strlen(pbuf)), "in-band neg not possible)");
-
- i++;
- len--;
- }
-
- if(!len)
- goto exit;
-
- if(!(buf[i-1] & 0x80))
- {
- sprintf((pbuf+strlen(pbuf)), "\n clk/flow=0x%02x", buf[i] & 0x1f);
-
- sprintf((pbuf+strlen(pbuf)), "\n intermediate rate=");
-
- switch((buf[i] & 0x60) >> 5)
- {
- case 0:
- sprintf((pbuf+strlen(pbuf)), "not used");
- break;
- case 1:
- sprintf((pbuf+strlen(pbuf)), "8 kbit/s");
- break;
- case 2:
- sprintf((pbuf+strlen(pbuf)), "16 kbit/s");
- break;
- case 3:
- sprintf((pbuf+strlen(pbuf)), "32 kbit/s");
- break;
- }
- i++;
- len--;
- }
-
- if(!len)
- goto exit;
-
- if(!(buf[i-1] & 0x80))
- {
- sprintf((pbuf+strlen(pbuf)), "\n hdr/mfrm/etc.=0x%02x", buf[i]);
- i++;
- len--;
- }
-
- if(!len)
- goto exit;
-
- if(!(buf[i-1] & 0x80))
- {
- sprintf((pbuf+strlen(pbuf)), "\n stop/data/parity=0x%02x", buf[i]);
- i++;
- len--;
- }
-
- if(!len)
- goto exit;
-
- if(!(buf[i-1] & 0x80))
- {
- sprintf((pbuf+strlen(pbuf)), "\n modemtype=0x%02x", buf[i]);
- i++;
- len--;
- }
-
- if(!len)
- goto exit;
-
- switch(buf[i] & 0x7f)
- {
- case 0x42:
- sprintf((pbuf+strlen(pbuf)), "\n layer2=Q.921/I.441");
- break;
- case 0x46:
- sprintf((pbuf+strlen(pbuf)), "\n layer2=X.25 link");
- break;
- default:
- sprintf((pbuf+strlen(pbuf)), "\n layer2=0x%02x",(buf[i] & 0x7f));
- break;
- }
- i++;
- len--;
-
- if(!len)
- goto exit;
-
- switch(buf[i] & 0x7f)
- {
- case 0x62:
- sprintf((pbuf+strlen(pbuf)), "\n layer3=Q.921/I.441");
- break;
- case 0x66:
- sprintf((pbuf+strlen(pbuf)), "\n layer3=X.25 packet");
- break;
- default:
- sprintf((pbuf+strlen(pbuf)), "\n layer3=0x%02x",(buf[i] & 0x7f));
- break;
- }
- i++;
- len--;
-
-exit:
-
- return(i);
-}
-
-/*---------------------------------------------------------------------------*
- * decode and print the ISDN (telephone) number
- *---------------------------------------------------------------------------*/
-int
-f_cnu(char *pbuf, unsigned char *buf, int off)
-{
- int j;
- int len;
- int i = 0;
- int tp;
- int ind = 0;
- char buffer[256];
-
- i++; /* index -> length */
- len = buf[i];
-
- i++; /* index -> type/plan */
- tp = buf[i];
-
- extension(3, pbuf+strlen(pbuf), off+i, buf[i], 0x80);
-
- switch((tp & 0x70) >> 4)
- {
- case 0:
- strcpy(buffer, "Unknown");
- break;
- case 1:
- strcpy(buffer, "International number");
- break;
- case 2:
- strcpy(buffer, "National number");
- break;
- case 3:
- strcpy(buffer, "Network specific number");
- break;
- case 4:
- strcpy(buffer, "Subscriber number");
- break;
- case 6:
- strcpy(buffer, "Abbreviated number");
- break;
- default:
- sprintf(buffer, "Reserved (%d), ", ((tp & 0x70) >> 4));
- break;
- }
- sprintline(3, (pbuf+strlen(pbuf)), off+i, buf[i], 0x60, "Type = %s", buffer);
-
- switch(tp & 0x0f)
- {
- case 0:
- strcpy(buffer, "Unknown");
- break;
- case 1:
- strcpy(buffer, "ISDN (E.164)");
- break;
- case 3:
- strcpy(buffer, "Data (X.121)");
- break;
- case 4:
- strcpy(buffer, "Telex (F.69)");
- break;
- case 8:
- strcpy(buffer, "National");
- break;
- case 9:
- strcpy(buffer, "Private");
- break;
- default:
- sprintf(buffer, "Reserved (%d)", (tp & 0x0f));
- break;
- }
- sprintline(3, (pbuf+strlen(pbuf)), off+i, buf[i], 0x0f, "Plan = %s", buffer);
-
- i++;
- len--;
-
- if(!(tp & 0x80))
- {
- extension(3, pbuf+strlen(pbuf), off+i, buf[i], 0x80);
-
- switch((buf[i] & 0x60) >> 5)
- {
- case 0:
- strcpy(buffer, "allowed");
- break;
- case 1:
- strcpy(buffer, "restricted");
- break;
- case 2:
- strcpy(buffer, "number not available");
- break;
- case 3:
- strcpy(buffer, "reserved");
- break;
- }
- sprintline(3, (pbuf+strlen(pbuf)), off+i, buf[i], 0x60, "Presentation = %s", buffer);
-
- sprintline(3, (pbuf+strlen(pbuf)), off+i, buf[i], 0x1c, "Spare");
-
- switch(ind & 0x03)
- {
- case 0:
- strcpy(buffer, "user provided, not screened");
- break;
- case 1:
- strcpy(buffer, "user provided, verified & passed");
- break;
- case 2:
- strcpy(buffer, "user provided, verified & failed");
- break;
- case 3:
- strcpy(buffer, "network provided");
- break;
- }
- sprintline(3, (pbuf+strlen(pbuf)), off+i, buf[i], 0x03, "Screening = %s", buffer);
- i++;
- len--;
- }
-
- for(j = 0; j < len; j++)
- {
- sprintline(3, (pbuf+strlen(pbuf)), off+i+j, buf[i+j], 0xff, "Number digit = %c", buf[i+j]);
- }
-
- i += j;
-
- return(i);
-}
-
-/*---------------------------------------------------------------------------*
- * decode and print HL comatibility
- *---------------------------------------------------------------------------*/
-int
-f_hlc(char *pbuf, unsigned char *buf, int off)
-{
- int i = 0;
- int len = 0;
- char buffer[256];
-
- i++;
- len = buf[i];
-
- i++;
- extension(3, pbuf+strlen(pbuf), off+i, buf[i], 0x80);
-
- switch((buf[i] >> 5) & 0x03)
- {
- case 0: strcpy(buffer, "CCITT");
- break;
- case 1: strcpy(buffer, "ISO/IEC");
- break;
- case 2: strcpy(buffer, "National");
- break;
- case 3: strcpy(buffer, "Network");
- }
- sprintline(3, (pbuf+strlen(pbuf)), off+i, buf[i], 0x60, "Coding standard = %s", buffer);
-
- sprintline(3, (pbuf+strlen(pbuf)), off+i, buf[i], 0x1c, "Interpretation = %s", ((buf[i] >> 2) & 0x07) == 0x04 ? "first" : "reserved");
-
- sprintline(3, (pbuf+strlen(pbuf)), off+i, buf[i], 0x03, "Presentation = %s", ((buf[i]) & 0x03) == 0x01 ? "High layer protocol profile" : "reserved");
-
- i++;
- len--;
-
- extension(3, pbuf+strlen(pbuf), off+i, buf[i], 0x80);
-
- switch(buf[i] & 0x7f)
- {
- case 0x01:
- strcpy(buffer, "Telephony");
- break;
- case 0x04:
- strcpy(buffer, "Fax Group 2/3 (F.182)");
- break;
- case 0x21:
- strcpy(buffer, "Fax Group 4 I (F.184)");
- break;
- case 0x24:
- strcpy(buffer, "Teletex (F.230) or Fax Group 4 II/III (F.184)");
- break;
- case 0x28:
- strcpy(buffer, "Teletex (F.220)");
- break;
- case 0x31:
- strcpy(buffer, "Teletex (F.200)");
- break;
- case 0x32:
- strcpy(buffer, "Videotex (F.300/T.102)");
- break;
- case 0x33:
- strcpy(buffer, "Videotex (F.300/T.101)");
- break;
- case 0x35:
- strcpy(buffer, "Telex (F.60)");
- break;
- case 0x38:
- strcpy(buffer, "MHS (X.400)");
- break;
- case 0x41:
- strcpy(buffer, "OSI (X.200)");
- break;
- case 0x5e:
- strcpy(buffer, "Maintenance");
- break;
- case 0x5f:
- strcpy(buffer, "Management");
- break;
- case 0x60:
- strcpy(buffer, "Audio visual (F.721)");
- break;
- default:
- sprintf(buffer, "Reserved (0x%02x)", buf[i] & 0x7f);
- break;
- }
- sprintline(3, (pbuf+strlen(pbuf)), off+i, buf[i], 0x7f, "Characteristics = %s", buffer);
- i++;
- len--;
-
- if(buf[i-1] & 0x80)
- {
- return(i);
- }
-
- extension(3, pbuf+strlen(pbuf), off+i, buf[i], 0x80);
-
- switch(buf[i] & 0x7f)
- {
- case 0x01:
- strcpy(buffer, "Telephony");
- break;
- case 0x04:
- strcpy(buffer, "Fax Group 2/3 (F.182)");
- break;
- case 0x21:
- strcpy(buffer, "Fax Group 4 I (F.184)");
- break;
- case 0x24:
- strcpy(buffer, "Teletex (F.230) or Fax Group 4 II/III (F.184)");
- break;
- case 0x28:
- strcpy(buffer, "Teletex (F.220)");
- break;
- case 0x31:
- strcpy(buffer, "Teletex (F.200)");
- break;
- case 0x32:
- strcpy(buffer, "Videotex (F.300/T.102)");
- break;
- case 0x33:
- strcpy(buffer, "Videotex (F.300/T.101)");
- break;
- case 0x35:
- strcpy(buffer, "Telex (F.60)");
- break;
- case 0x38:
- strcpy(buffer, "MHS (X.400)");
- break;
- case 0x41:
- strcpy(buffer, "OSI (X.200)");
- break;
- case 0x5e:
- strcpy(buffer, "Maintenance");
- break;
- case 0x5f:
- strcpy(buffer, "Management");
- break;
- case 0x60:
- strcpy(buffer, "Audio visual (F.721)");
- break;
- default:
- sprintf(buffer, "Reserved (0x%02x)", buf[i] & 0x7f);
- break;
-
- }
- sprintline(3, (pbuf+strlen(pbuf)), off+i, buf[i], 0x7f, "Ext. characteristics = %s", buffer);
- i++;
- return(i);
-}
-
-/*---------------------------------------------------------------------------*
- * user-user
- *---------------------------------------------------------------------------*/
-int
-f_uu(char *pbuf, unsigned char *buf, int off)
-{
- int j;
- int len;
- int i = 0;
- int pd;
- char buffer[256];
-
- i++; /* index -> length */
- len = buf[i];
-
- i++; /* index -> PD */
- pd = buf[i];
-
- switch(pd)
- {
- case 0:
- strcpy(buffer, "user-specific");
- break;
- case 1:
- strcpy(buffer, "OSI high layer");
- break;
- case 2:
- strcpy(buffer, "X.244");
- break;
- case 3:
- strcpy(buffer, "reserved for sys mgmt");
- break;
- case 4:
- strcpy(buffer, "IA5 characters");
- break;
- case 5:
- strcpy(buffer, "X.208/X.209");
- break;
- case 7:
- strcpy(buffer, "V.120");
- break;
- case 8:
- strcpy(buffer, "Q.931/I.451");
- break;
- default:
- if(pd >= 0x10 && pd <= 0x3f)
- sprintf(buffer, "reserved incl X.31 (0x%2x)", pd);
- else if (pd >= 0x40 && pd <= 0x4f)
- sprintf(buffer, "national use (0x%2x)", pd);
- else if (pd >= 0x50 && pd <= 0xfe)
- sprintf(buffer, "reserved incl X.31 (0x%2x)", pd);
- else
- sprintf(buffer, "reserved (0x%2x)", pd);
- break;
- }
- sprintline(3, (pbuf+strlen(pbuf)), off+i, buf[i], 0xff, "protocol = %s", buffer);
-
- i++;
- len--;
-
- for(j = 0; j < len; j++)
- {
- if(isprint(buf[i+j]))
- sprintline(3, (pbuf+strlen(pbuf)), off+i+j, buf[i+j], 0xff, "user information = %c", buf[i+j]);
- else
- sprintline(3, (pbuf+strlen(pbuf)), off+i+j, buf[i+j], 0xff, "user information = 0x%2x", buf[i+j]);
- }
-
- i += j;
-
- return(i);
-}
-
-/* EOF */
-
OpenPOWER on IntegriCloud