Annotation of 43BSDReno/contrib/isode-beta/tsap/text2tpkt.c, revision 1.1.1.1

1.1       root        1: /* text2tpkt.c - test utilities for use with TPDU packets */
                      2: 
                      3: #ifndef        lint
                      4: static char *rcsid = "$Header: /f/osi/tsap/RCS/text2tpkt.c,v 7.0 89/11/23 22:30:31 mrose Rel $";
                      5: #endif
                      6: 
                      7: /* 
                      8:  * $Header: /f/osi/tsap/RCS/text2tpkt.c,v 7.0 89/11/23 22:30:31 mrose Rel $
                      9:  *
                     10:  *
                     11:  * $Log:       text2tpkt.c,v $
                     12:  * Revision 7.0  89/11/23  22:30:31  mrose
                     13:  * Release 6.0
                     14:  * 
                     15:  */
                     16: 
                     17: /*
                     18:  *                               NOTICE
                     19:  *
                     20:  *    Acquisition, use, and distribution of this module and related
                     21:  *    materials are subject to the restrictions of a license agreement.
                     22:  *    Consult the Preface in the User's Manual for the full terms of
                     23:  *    this agreement.
                     24:  *
                     25:  */
                     26: 
                     27: 
                     28: /* LINTLIBRARY */
                     29: 
                     30: #include <stdio.h>
                     31: #include <ctype.h>
                     32: #include "tpkt.h"
                     33: #include "logger.h"
                     34: 
                     35: /*  */
                     36: 
                     37: char *fgets (), *calloc ();
                     38: 
                     39: /*  */
                     40: 
                     41: #define        TPKT_TYPE(e)    (void) ll_printf (lp, "%sCODE/ %s\n", rw, e)
                     42: 
                     43: 
                     44: void   tpkt2text (lp, t, isread)
                     45: register LLog *lp;
                     46: register struct tsapkt *t;
                     47: int    isread;
                     48: {
                     49:     char   *rw = isread ? "<--- " : "---> ";
                     50:     register struct udvec *uv;
                     51: 
                     52:     LLOG (lp, LLOG_ALL,
                     53:          ("dump of TPKT 0x%x, errno=0x%x version=0x%x length=%d",
                     54:            t, t -> t_errno, t -> t_vrsn, t -> t_length));
                     55:     (void) ll_printf (lp, "%s(\n", rw);
                     56: 
                     57:     (void) ll_printf (lp, "%sLI/ %d\n", rw, t -> t_li);
                     58:     if (t -> t_vdata)
                     59:        type_data (lp, "VARIABLE", rw, t -> t_vlen, t -> t_vdata);
                     60: 
                     61:     switch (TPDU_CODE (t)) {
                     62:        case TPDU_CR: 
                     63:        case TPDU_CC: 
                     64:            TPKT_TYPE (TPDU_CODE (t) == TPDU_CR ? "CONNECT REQUEST"
                     65:                    : "CONNECT CONFIRM");
                     66:            (void) ll_printf (lp, "%sDSTREF/ 0x%x\n", rw, ntohs (t -> t_cr.cr_dstref));
                     67:            (void) ll_printf (lp, "%sSRCREF/ 0x%x\n", rw, ntohs (t -> t_cr.cr_srcref));
                     68:            (void) ll_printf (lp, "%sCLASS/ 0x%x\n", rw, t -> t_cr.cr_class);
                     69:            if (t -> t_calledlen > 0)
                     70:                type_id (lp, "CALLED", rw, t -> t_called, t -> t_calledlen);
                     71:            if (t -> t_callinglen > 0)
                     72:                type_id (lp, "CALLING", rw, t -> t_calling, t -> t_callinglen);
                     73:            if (t -> t_tpdusize)
                     74:                (void) ll_printf (lp, "%sTPDUSIZE/ %d\n", rw, 1 << t -> t_tpdusize);
                     75:            (void) ll_printf (lp, "%sOPTIONS/ 0x%x\n", rw, t -> t_options);
                     76:            if (t -> t_alternate)
                     77:                (void) ll_printf (lp, "%sALTERNATES/ 0x%x\n", rw, t -> t_alternate);
                     78:            break;
                     79: 
                     80:        case TPDU_DR: 
                     81:            TPKT_TYPE ("DISCONNECT REQUEST");
                     82:            (void) ll_printf (lp, "%sDSTREF/ 0x%x\n", rw, ntohs (t -> t_dr.dr_dstref));
                     83:            (void) ll_printf (lp, "%sSRCREF/ 0x%x\n", rw, ntohs (t -> t_dr.dr_srcref));
                     84:            (void) ll_printf (lp, "%sREASON/ 0x%x: %s\n", rw, t -> t_dr.dr_reason,
                     85:                    TErrString ((int) t -> t_dr.dr_reason));
                     86:            break;
                     87: 
                     88:        case TPDU_DT: 
                     89:        case TPDU_ED: 
                     90:            TPKT_TYPE (TPDU_CODE (t) == TPDU_DT ? "DATA TRANSFER"
                     91:                    : "EXPEDITED DATA TRANSFER");
                     92:            (void) ll_printf (lp, "%sSEQUENCE/ %s0x%x\n", rw,
                     93:                t -> t_dt.dt_nr & DT_EOT ? "<EOT>+" : "",
                     94:                t -> t_dt.dt_nr & ~DT_EOT);
                     95:            break;
                     96: 
                     97:        case TPDU_ER: 
                     98:            TPKT_TYPE ("ERROR");
                     99:            (void) ll_printf (lp, "%sDSTREF/ 0x%x\n", rw, ntohs (t -> t_er.er_dstref));
                    100:            (void) ll_printf (lp, "%sREJECT/ 0x%x\n", rw, t -> t_er.er_reject);
                    101:            break;
                    102: 
                    103:        default: 
                    104:            (void) ll_printf (lp, "%sCODE/ 0x%x\n", rw, TPDU_CODE (t));
                    105:            break;
                    106:     }
                    107: 
                    108:     if (t -> t_qbuf && t -> t_qbuf -> qb_data)
                    109:        type_data (lp, "QBUF", rw, t -> t_qbuf -> qb_len,
                    110:                t -> t_qbuf -> qb_data);
                    111:     for (uv = t -> t_udvec; uv -> uv_base; uv++)
                    112:        type_data (lp, "UVEC", rw, uv -> uv_len, uv -> uv_base);
                    113:     (void) ll_printf (lp, "%s)\n", rw);
                    114: 
                    115:     (void) ll_sync (lp);
                    116: }
                    117: 
                    118: /*  */
                    119: 
                    120: static type_id (lp, type, rw, selector, len)
                    121: LLog   *lp;
                    122: char   *type,
                    123:        *rw;
                    124: char   *selector;
                    125: int    len;
                    126: {
                    127:     char    buffer[BUFSIZ];
                    128: 
                    129:     buffer[explode (buffer, (u_char *) selector, len)] = NULL;
                    130: 
                    131:     (void) ll_printf (lp, "%s%s/ %d/\"%s\"\n", rw, type, len, buffer);
                    132: }
                    133: 
                    134: 
                    135: static type_data (lp, type, rw, len, data)
                    136: LLog   *lp;
                    137: char   *type,
                    138:        *rw,
                    139:        *data;
                    140: int    len;
                    141: {
                    142:     char    buffer[BUFSIZ];
                    143: 
                    144:     (void) ll_printf (lp, "%s%s DATA/ %d", rw, type, len);
                    145:     if (len < sizeof buffer / 2) {
                    146:        buffer[explode (buffer, (u_char *) data, len)] = NULL;
                    147:        (void) ll_printf (lp, " %s", buffer);
                    148:     }
                    149:     (void) ll_printf (lp, "\n");
                    150: }
                    151: 
                    152: /*  */
                    153: 
                    154: void   text2tpkt (t)
                    155: register struct tsapkt *t;
                    156: {
                    157:     char buffer[80],                            /* Working input buffer */
                    158:          *bptr;                                 /* Pointer to our buffer */
                    159:     int data;
                    160: 
                    161:     printf("Packet Length [%d]: ", data = t -> t_length);
                    162:     (void) fflush(stdout); (void) fgets(buffer, sizeof buffer, stdin);
                    163:     (void) sscanf(buffer, "%d", &data);
                    164:     t -> t_length = data;
                    165:     printf("Packet Version [%02x]: ", data = t -> t_vrsn);
                    166:     (void) fflush(stdout); (void) fgets(buffer, sizeof buffer, stdin);
                    167:     (void) sscanf(buffer, "%x", &data);
                    168:     t -> t_vrsn = data;
                    169:     printf("Packet Errno [%02x]: ", data = t -> t_errno);
                    170:     (void) fflush(stdout); (void) fgets(buffer, sizeof buffer, stdin);
                    171:     (void) sscanf(buffer, "%d", &data);
                    172:     t -> t_errno = data;
                    173:     printf("TPDU Code [%02x]: ", data = t -> t_code);
                    174:     (void) fflush(stdout); bptr = fgets(buffer, sizeof buffer, stdin);
                    175:     while (isspace(*bptr) && (*bptr != '\0')) ++bptr;
                    176:     if (toupper(*bptr) == 'C') {
                    177:         if (toupper(*(bptr + 1)) == 'R') {
                    178:             data = 0xE0;
                    179:         } else if (toupper(*(bptr + 1)) == 'C') {
                    180:             data = 0xD0;
                    181:         } else (void) sscanf(buffer, "%x", &data);
                    182:     } else if (toupper(*bptr) == 'D') {
                    183:         if (toupper(*(bptr + 1)) == 'R') {
                    184:             data = 0x80;
                    185:         } else if (toupper(*(bptr + 1)) == 'T') {
                    186:             data = 0xF0;
                    187:         } else (void) sscanf(buffer, "%x", &data);
                    188:     } else (void) sscanf(buffer, "%x", &data);
                    189:     t -> t_code = data;
                    190:     switch (TPDU_CODE(t)) {
                    191:         case TPDU_CR:
                    192:         case TPDU_CC:
                    193:             t -> t_li = TPDU_MINLEN(t, CR);
                    194:             printf("TPDU Fixed Length (LI) [%02x]: ", data = t -> t_li);
                    195:             (void) fflush(stdout); (void) fgets(buffer, sizeof buffer, stdin);
                    196:             (void) sscanf(buffer, "%x", &data);
                    197:             t -> t_li = data;
                    198:             printf("Destination Reference [%04x]: ",
                    199:                 data = ntohs (t -> t_cr.cr_dstref));
                    200:             (void) fflush(stdout); (void) fgets(buffer, sizeof buffer, stdin);
                    201:             (void) sscanf(buffer, "%x", &data);
                    202:             t -> t_cr.cr_dstref = htons((u_short)data);
                    203:             printf("Source Reference [%04x]: ", data = ntohs(t -> t_cr.cr_srcref));
                    204:             (void) fflush(stdout); (void) fgets(buffer, sizeof buffer, stdin);
                    205:             (void) sscanf(buffer, "%x", &data);
                    206:             t -> t_cr.cr_srcref = htons ((u_short)data);
                    207:             printf("Class/Options [%02x]: ", data = t-> t_cr.cr_class);
                    208:             (void) fflush(stdout); (void) fgets(buffer, sizeof buffer, stdin);
                    209:             (void) sscanf(buffer, "%x", &data);
                    210:             t -> t_cr.cr_class = data;
                    211:            printf("TPDU size [%02x]: ",
                    212:                data = t -> t_cr.cr_tpdusize);
                    213:            (void) fflush(stdout); (void) fgets(buffer, sizeof buffer, stdin);
                    214:             (void) sscanf(buffer, "%x", &data);
                    215:             t -> t_cr.cr_tpdusize = data;
                    216:            printf("Real Options [%02x]: ",data = ntohs(t -> t_cr.cr_options));
                    217:            (void) fflush(stdout); (void) fgets(buffer, sizeof buffer, stdin);
                    218:             (void) sscanf(buffer, "%x", &data);
                    219:             t -> t_cr.cr_options = htons((u_short)data);
                    220:            printf("Alternate classes [%02x]: ",
                    221:                data = t -> t_cr.cr_alternate);
                    222:            (void) fflush(stdout); (void) fgets(buffer, sizeof buffer, stdin);
                    223:             (void) sscanf(buffer, "%x", &data);
                    224:             t -> t_cr.cr_alternate = data;
                    225:             break;
                    226:         case TPDU_DR:
                    227:             t -> t_li = TPDU_MINLEN(t, DR);
                    228:             printf("TPDU Fixed Length (LI) [%02x]: ", data = t -> t_li);
                    229:             (void) fflush(stdout); (void) fgets(buffer, sizeof buffer, stdin);
                    230:             (void) sscanf(buffer, "%x", &data);
                    231:             t -> t_li = data;
                    232:             printf("Destination Reference [%04x]: ",
                    233:                 data = ntohs(t -> t_dr.dr_dstref));
                    234:             (void) fflush(stdout); (void) fgets(buffer, sizeof buffer, stdin);
                    235:             (void) sscanf(buffer, "%x", &data);
                    236:             t -> t_dr.dr_dstref = htons((u_short)data);
                    237:             printf("Source Reference [%04x]: ", data = ntohs(t -> t_dr.dr_srcref));
                    238:             (void) fflush(stdout); (void) fgets(buffer, sizeof buffer, stdin);
                    239:             (void) sscanf(buffer, "%x", &data);
                    240:             t -> t_dr.dr_srcref = htons((u_short)data);
                    241:             printf("Disconnect Reason [%02x]: ", data = t-> t_dr.dr_reason);
                    242:             (void) fflush(stdout); (void) fgets(buffer, sizeof buffer, stdin);
                    243:             (void) sscanf(buffer, "%x", &data);
                    244:             t -> t_dr.dr_reason = data;
                    245:             break;
                    246:         case TPDU_DT:
                    247:         case TPDU_ED:
                    248:             t -> t_li = TPDU_MINLEN(t, DT);
                    249:             printf("TPDU Fixed Length (LI) [%02x]: ", data = t -> t_li);
                    250:             (void) fflush(stdout); (void) fgets(buffer, sizeof buffer, stdin);
                    251:             (void) sscanf(buffer, "%x", &data);
                    252:             t -> t_li = data;
                    253:             printf("EOT/Sequence [%04x]: ", data = t -> t_dt.dt_nr);
                    254:             (void) fflush(stdout); (void) fgets(buffer, sizeof buffer, stdin);
                    255:             (void) sscanf(buffer, "%x", &data);
                    256:             t -> t_dt.dt_nr = data;
                    257:             break;
                    258:         case TPDU_ER:
                    259:             t -> t_li = TPDU_MINLEN(t, ER);
                    260:             printf("TPDU Fixed Length (LI) [%02x]: ", data = t -> t_li);
                    261:             (void) fflush(stdout); (void) fgets(buffer, sizeof buffer, stdin);
                    262:             (void) sscanf(buffer, "%x", &data);
                    263:             t -> t_li = data;
                    264:             printf("Destination Reference [%04x]: ",
                    265:                 data = ntohs(t -> t_er.er_dstref));
                    266:             (void) fflush(stdout); (void) fgets(buffer, sizeof buffer, stdin);
                    267:             (void) sscanf(buffer, "%x", &data);
                    268:             t -> t_er.er_dstref = htons((u_short)data);
                    269:             printf("Reject Cause [%02x]: ", data = t-> t_er.er_reject);
                    270:             (void) fflush(stdout); (void) fgets(buffer, sizeof buffer, stdin);
                    271:             (void) sscanf(buffer, "%x", &data);
                    272:             t -> t_er.er_reject = data;
                    273:             break;
                    274:         default:
                    275:             t -> t_li = TPDU_MINLEN(t, CR);
                    276:             printf("TPDU Fixed Length (LI) [%02x]: ", data = t -> t_li);
                    277:             (void) fflush(stdout); (void) fgets(buffer, sizeof buffer, stdin);
                    278:             (void) sscanf(buffer, "%x", &data);
                    279:             t -> t_li = data;
                    280:             printf("Octets 3-4 [%04x]: ",
                    281:                data = ntohs(t -> t_cr.cr_dstref));
                    282:             (void) fflush(stdout); (void) fgets(buffer, sizeof buffer, stdin);
                    283:             (void) sscanf(buffer, "%x", &data);
                    284:             t -> t_cr.cr_dstref = htons((u_short)data);
                    285:             printf("Octets 5-6 [%04x]: ",
                    286:                data = ntohs(t -> t_cr.cr_srcref));
                    287:             (void) fflush(stdout); (void) fgets(buffer, sizeof buffer, stdin);
                    288:             (void) sscanf(buffer, "%x", &data);
                    289:             t -> t_cr.cr_srcref = htons((u_short)data);
                    290:             printf("Octet 7 [%02x]: ", data = t-> t_cr.cr_class);
                    291:             (void) fflush(stdout); (void) fgets(buffer, sizeof buffer, stdin);
                    292:             (void) sscanf(buffer, "%x", &data);
                    293:             t -> t_cr.cr_class = data;
                    294:             break;
                    295:     }
                    296: #ifdef notdef                  /* Dwight can fix this... */
                    297:     printf("Calling TSAP ID [%d]: ",
                    298:         ntohs (t -> t_calling));
                    299:     (void) fflush(stdout); (void) fgets(buffer, sizeof buffer, stdin);
                    300:     (void) sscanf(buffer, "%d", &data);
                    301:     t -> t_calling = htons((u_short)data);
                    302:     printf("Called TSAP ID [%d]: ",
                    303:         ntohs (t -> t_called));
                    304:     (void) fflush(stdout); (void) fgets(buffer, sizeof buffer, stdin);
                    305:     (void) sscanf(buffer, "%d", &data);
                    306:     t -> t_called = htons((u_short)data);
                    307: #endif
                    308: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.