print.c revision 1.1 1 1.1 cjs /*
2 1.1 cjs * Copyright (c) 1993-96 Mats O Jansson. All rights reserved.
3 1.1 cjs *
4 1.1 cjs * Redistribution and use in source and binary forms, with or without
5 1.1 cjs * modification, are permitted provided that the following conditions
6 1.1 cjs * are met:
7 1.1 cjs * 1. Redistributions of source code must retain the above copyright
8 1.1 cjs * notice, this list of conditions and the following disclaimer.
9 1.1 cjs * 2. Redistributions in binary form must reproduce the above copyright
10 1.1 cjs * notice, this list of conditions and the following disclaimer in the
11 1.1 cjs * documentation and/or other materials provided with the distribution.
12 1.1 cjs * 3. All advertising materials mentioning features or use of this software
13 1.1 cjs * must display the following acknowledgement:
14 1.1 cjs * This product includes software developed by Mats O Jansson.
15 1.1 cjs * 4. The name of the author may not be used to endorse or promote products
16 1.1 cjs * derived from this software without specific prior written permission.
17 1.1 cjs *
18 1.1 cjs * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
19 1.1 cjs * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
20 1.1 cjs * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21 1.1 cjs * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
22 1.1 cjs * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
23 1.1 cjs * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24 1.1 cjs * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25 1.1 cjs * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 1.1 cjs * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27 1.1 cjs * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 1.1 cjs */
29 1.1 cjs
30 1.1 cjs #ifndef LINT
31 1.1 cjs static char rcsid[] = "$Id: print.c,v 1.1 1997/03/16 22:23:37 cjs Exp $";
32 1.1 cjs #endif
33 1.1 cjs
34 1.1 cjs #include <sys/types.h>
35 1.1 cjs #include <stdio.h>
36 1.1 cjs
37 1.1 cjs #include "os.h"
38 1.1 cjs #include "common/mopdef.h"
39 1.1 cjs #include "common/nmadef.h"
40 1.1 cjs #include "common/nma.h"
41 1.1 cjs #include "common/cmp.h"
42 1.1 cjs #include "common/get.h"
43 1.1 cjs
44 1.1 cjs #define SHORT_PRINT
45 1.1 cjs
46 1.1 cjs void
47 1.1 cjs mopPrintHWA(fd, ap)
48 1.1 cjs FILE *fd;
49 1.1 cjs u_char *ap;
50 1.1 cjs {
51 1.1 cjs (void)fprintf(fd, "%x:%x:%x:%x:%x:%x",
52 1.1 cjs ap[0],ap[1],ap[2],ap[3],ap[4],ap[5]);
53 1.1 cjs if (ap[0] < 10) (void)fprintf(fd, " ");
54 1.1 cjs if (ap[1] < 10) (void)fprintf(fd, " ");
55 1.1 cjs if (ap[2] < 10) (void)fprintf(fd, " ");
56 1.1 cjs if (ap[3] < 10) (void)fprintf(fd, " ");
57 1.1 cjs if (ap[4] < 10) (void)fprintf(fd, " ");
58 1.1 cjs if (ap[5] < 10) (void)fprintf(fd, " ");
59 1.1 cjs }
60 1.1 cjs
61 1.1 cjs void
62 1.1 cjs mopPrintBPTY(fd, bpty)
63 1.1 cjs FILE *fd;
64 1.1 cjs u_char bpty;
65 1.1 cjs {
66 1.1 cjs switch(bpty) {
67 1.1 cjs case MOP_K_BPTY_SYS:
68 1.1 cjs (void)fprintf(fd, "System Processor");
69 1.1 cjs break;
70 1.1 cjs case MOP_K_BPTY_COM:
71 1.1 cjs (void)fprintf(fd, "Communication Processor");
72 1.1 cjs break;
73 1.1 cjs default:
74 1.1 cjs (void)fprintf(fd, "Unknown");
75 1.1 cjs break;
76 1.1 cjs };
77 1.1 cjs };
78 1.1 cjs
79 1.1 cjs void
80 1.1 cjs mopPrintPGTY(fd, pgty)
81 1.1 cjs FILE *fd;
82 1.1 cjs u_char pgty;
83 1.1 cjs {
84 1.1 cjs switch(pgty) {
85 1.1 cjs case MOP_K_PGTY_SECLDR:
86 1.1 cjs (void)fprintf(fd, "Secondary Loader");
87 1.1 cjs break;
88 1.1 cjs case MOP_K_PGTY_TERLDR:
89 1.1 cjs (void)fprintf(fd, "Tertiary Loader");
90 1.1 cjs break;
91 1.1 cjs case MOP_K_PGTY_OPRSYS:
92 1.1 cjs (void)fprintf(fd, "Operating System");
93 1.1 cjs break;
94 1.1 cjs case MOP_K_PGTY_MGNTFL:
95 1.1 cjs (void)fprintf(fd, "Management File");
96 1.1 cjs break;
97 1.1 cjs default:
98 1.1 cjs (void)fprintf(fd, "Unknown");
99 1.1 cjs break;
100 1.1 cjs };
101 1.1 cjs }
102 1.1 cjs
103 1.1 cjs void
104 1.1 cjs mopPrintOneline(fd, pkt, trans)
105 1.1 cjs FILE *fd;
106 1.1 cjs u_char *pkt;
107 1.1 cjs int trans;
108 1.1 cjs {
109 1.1 cjs int index = 0;
110 1.1 cjs u_char *dst, *src, code;
111 1.1 cjs u_short proto;
112 1.1 cjs int len;
113 1.1 cjs
114 1.1 cjs trans = mopGetTrans(pkt, trans);
115 1.1 cjs mopGetHeader(pkt, &index, &dst, &src, &proto, &len, trans);
116 1.1 cjs code = mopGetChar(pkt, &index);
117 1.1 cjs
118 1.1 cjs switch (proto) {
119 1.1 cjs case MOP_K_PROTO_DL:
120 1.1 cjs (void)fprintf(fd, "MOP DL ");
121 1.1 cjs break;
122 1.1 cjs case MOP_K_PROTO_RC:
123 1.1 cjs (void)fprintf(fd, "MOP RC ");
124 1.1 cjs break;
125 1.1 cjs case MOP_K_PROTO_LP:
126 1.1 cjs (void)fprintf(fd, "MOP LP ");
127 1.1 cjs break;
128 1.1 cjs default:
129 1.1 cjs switch((proto % 256)*256 + (proto / 256)) {
130 1.1 cjs case MOP_K_PROTO_DL:
131 1.1 cjs (void)fprintf(fd, "MOP DL ");
132 1.1 cjs proto = MOP_K_PROTO_DL;
133 1.1 cjs break;
134 1.1 cjs case MOP_K_PROTO_RC:
135 1.1 cjs (void)fprintf(fd, "MOP RC ");
136 1.1 cjs proto = MOP_K_PROTO_RC;
137 1.1 cjs break;
138 1.1 cjs case MOP_K_PROTO_LP:
139 1.1 cjs (void)fprintf(fd, "MOP LP ");
140 1.1 cjs proto = MOP_K_PROTO_LP;
141 1.1 cjs break;
142 1.1 cjs default:
143 1.1 cjs (void)fprintf(fd, "MOP ?? ");
144 1.1 cjs break;
145 1.1 cjs }
146 1.1 cjs }
147 1.1 cjs
148 1.1 cjs if (trans == TRANS_8023) {
149 1.1 cjs (void)fprintf(fd, "802.3 ");
150 1.1 cjs }
151 1.1 cjs
152 1.1 cjs mopPrintHWA(fd, src); (void)fprintf(fd," > ");
153 1.1 cjs mopPrintHWA(fd, dst);
154 1.1 cjs if (len < 1600) {
155 1.1 cjs (void)fprintf(fd, " len %4d code %02x ",len,code);
156 1.1 cjs } else {
157 1.1 cjs (void)fprintf(fd, " len %4d code %02x ",
158 1.1 cjs (len % 256)*256 + (len /256), code);
159 1.1 cjs }
160 1.1 cjs
161 1.1 cjs switch (proto) {
162 1.1 cjs case MOP_K_PROTO_DL:
163 1.1 cjs switch (code) {
164 1.1 cjs case MOP_K_CODE_MLT:
165 1.1 cjs (void)fprintf(fd, "MLT ");
166 1.1 cjs break;
167 1.1 cjs case MOP_K_CODE_DCM:
168 1.1 cjs (void)fprintf(fd, "DCM ");
169 1.1 cjs break;
170 1.1 cjs case MOP_K_CODE_MLD:
171 1.1 cjs (void)fprintf(fd, "MLD ");
172 1.1 cjs break;
173 1.1 cjs case MOP_K_CODE_ASV:
174 1.1 cjs (void)fprintf(fd, "ASV ");
175 1.1 cjs break;
176 1.1 cjs case MOP_K_CODE_RMD:
177 1.1 cjs (void)fprintf(fd, "RMD ");
178 1.1 cjs break;
179 1.1 cjs case MOP_K_CODE_RPR:
180 1.1 cjs (void)fprintf(fd, "RPR ");
181 1.1 cjs break;
182 1.1 cjs case MOP_K_CODE_RML:
183 1.1 cjs (void)fprintf(fd, "RML ");
184 1.1 cjs break;
185 1.1 cjs case MOP_K_CODE_RDS:
186 1.1 cjs (void)fprintf(fd, "RDS ");
187 1.1 cjs break;
188 1.1 cjs case MOP_K_CODE_MDD:
189 1.1 cjs (void)fprintf(fd, "MDD ");
190 1.1 cjs break;
191 1.1 cjs case MOP_K_CODE_PLT:
192 1.1 cjs (void)fprintf(fd, "PLT ");
193 1.1 cjs break;
194 1.1 cjs default:
195 1.1 cjs (void)fprintf(fd, "??? ");
196 1.1 cjs break;
197 1.1 cjs }
198 1.1 cjs break;
199 1.1 cjs case MOP_K_PROTO_RC:
200 1.1 cjs switch (code) {
201 1.1 cjs case MOP_K_CODE_RID:
202 1.1 cjs (void)fprintf(fd, "RID ");
203 1.1 cjs break;
204 1.1 cjs case MOP_K_CODE_BOT:
205 1.1 cjs (void)fprintf(fd, "BOT ");
206 1.1 cjs break;
207 1.1 cjs case MOP_K_CODE_SID:
208 1.1 cjs (void)fprintf(fd, "SID ");
209 1.1 cjs break;
210 1.1 cjs case MOP_K_CODE_RQC:
211 1.1 cjs (void)fprintf(fd, "RQC ");
212 1.1 cjs break;
213 1.1 cjs case MOP_K_CODE_CNT:
214 1.1 cjs (void)fprintf(fd, "CNT ");
215 1.1 cjs break;
216 1.1 cjs case MOP_K_CODE_RVC:
217 1.1 cjs (void)fprintf(fd, "RVC ");
218 1.1 cjs break;
219 1.1 cjs case MOP_K_CODE_RLC:
220 1.1 cjs (void)fprintf(fd, "RLC ");
221 1.1 cjs break;
222 1.1 cjs case MOP_K_CODE_CCP:
223 1.1 cjs (void)fprintf(fd, "CCP ");
224 1.1 cjs break;
225 1.1 cjs case MOP_K_CODE_CRA:
226 1.1 cjs (void)fprintf(fd, "CRA ");
227 1.1 cjs break;
228 1.1 cjs default:
229 1.1 cjs (void)fprintf(fd, "??? ");
230 1.1 cjs break;
231 1.1 cjs }
232 1.1 cjs break;
233 1.1 cjs case MOP_K_PROTO_LP:
234 1.1 cjs switch (code) {
235 1.1 cjs case MOP_K_CODE_ALD:
236 1.1 cjs (void)fprintf(fd, "ALD ");
237 1.1 cjs break;
238 1.1 cjs case MOP_K_CODE_PLD:
239 1.1 cjs (void)fprintf(fd, "PLD ");
240 1.1 cjs break;
241 1.1 cjs default:
242 1.1 cjs (void)fprintf(fd, "??? ");
243 1.1 cjs break;
244 1.1 cjs }
245 1.1 cjs break;
246 1.1 cjs default:
247 1.1 cjs (void)fprintf(fd, "??? ");
248 1.1 cjs break;
249 1.1 cjs }
250 1.1 cjs (void)fprintf(fd, "\n");
251 1.1 cjs }
252 1.1 cjs
253 1.1 cjs void
254 1.1 cjs mopPrintHeader(fd, pkt, trans)
255 1.1 cjs FILE *fd;
256 1.1 cjs u_char *pkt;
257 1.1 cjs int trans;
258 1.1 cjs {
259 1.1 cjs u_char *dst, *src;
260 1.1 cjs u_short proto;
261 1.1 cjs int len, index = 0;
262 1.1 cjs
263 1.1 cjs trans = mopGetTrans(pkt, trans);
264 1.1 cjs mopGetHeader(pkt, &index, &dst, &src, &proto, &len, trans);
265 1.1 cjs
266 1.1 cjs (void)fprintf(fd,"\nDst : ");
267 1.1 cjs mopPrintHWA(fd, dst);
268 1.1 cjs if (mopCmpEAddr(dl_mcst,dst) == 0) {
269 1.1 cjs (void)fprintf(fd," MOP Dump/Load Multicast");
270 1.1 cjs };
271 1.1 cjs if (mopCmpEAddr(rc_mcst,dst) == 0) {
272 1.1 cjs (void)fprintf(fd," MOP Remote Console Multicast");
273 1.1 cjs };
274 1.1 cjs (void)fprintf(fd,"\n");
275 1.1 cjs
276 1.1 cjs (void)fprintf(fd,"Src : ");
277 1.1 cjs mopPrintHWA(fd, src);
278 1.1 cjs (void)fprintf(fd,"\n");
279 1.1 cjs (void)fprintf(fd,"Proto : %04x ",proto);
280 1.1 cjs switch (proto) {
281 1.1 cjs case MOP_K_PROTO_DL:
282 1.1 cjs switch (trans) {
283 1.1 cjs case TRANS_8023:
284 1.1 cjs (void)fprintf(fd, "MOP Dump/Load (802.3)\n");
285 1.1 cjs break;
286 1.1 cjs default:
287 1.1 cjs (void)fprintf(fd, "MOP Dump/Load\n");
288 1.1 cjs }
289 1.1 cjs break;
290 1.1 cjs case MOP_K_PROTO_RC:
291 1.1 cjs switch (trans) {
292 1.1 cjs case TRANS_8023:
293 1.1 cjs (void)fprintf(fd, "MOP Remote Console (802.3)\n");
294 1.1 cjs break;
295 1.1 cjs default:
296 1.1 cjs (void)fprintf(fd, "MOP Remote Console\n");
297 1.1 cjs }
298 1.1 cjs break;
299 1.1 cjs case MOP_K_PROTO_LP:
300 1.1 cjs switch (trans) {
301 1.1 cjs case TRANS_8023:
302 1.1 cjs (void)fprintf(fd, "MOP Loopback (802.3)\n");
303 1.1 cjs break;
304 1.1 cjs default:
305 1.1 cjs (void)fprintf(fd, "MOP Loopback\n");
306 1.1 cjs }
307 1.1 cjs break;
308 1.1 cjs default:
309 1.1 cjs (void)fprintf(fd, "\n");
310 1.1 cjs break;
311 1.1 cjs }
312 1.1 cjs
313 1.1 cjs
314 1.1 cjs (void)fprintf(fd,"Length : %04x (%d)\n",len,len);
315 1.1 cjs }
316 1.1 cjs
317 1.1 cjs void
318 1.1 cjs mopPrintMopHeader(fd, pkt, trans)
319 1.1 cjs FILE *fd;
320 1.1 cjs u_char *pkt;
321 1.1 cjs int trans;
322 1.1 cjs {
323 1.1 cjs u_char *dst, *src;
324 1.1 cjs u_short proto;
325 1.1 cjs int len, index = 0;
326 1.1 cjs u_char code;
327 1.1 cjs
328 1.1 cjs trans = mopGetTrans(pkt, trans);
329 1.1 cjs mopGetHeader(pkt, &index, &dst, &src, &proto, &len, trans);
330 1.1 cjs
331 1.1 cjs code = mopGetChar(pkt, &index);
332 1.1 cjs
333 1.1 cjs (void)fprintf(fd, "Code : %02x ",code);
334 1.1 cjs
335 1.1 cjs switch (proto) {
336 1.1 cjs case MOP_K_PROTO_DL:
337 1.1 cjs switch (code) {
338 1.1 cjs case MOP_K_CODE_MLT:
339 1.1 cjs (void)fprintf(fd,
340 1.1 cjs "Memory Load with transfer address\n");
341 1.1 cjs break;
342 1.1 cjs case MOP_K_CODE_DCM:
343 1.1 cjs (void)fprintf(fd, "Dump Complete\n");
344 1.1 cjs break;
345 1.1 cjs case MOP_K_CODE_MLD:
346 1.1 cjs (void)fprintf(fd, "Memory Load\n");
347 1.1 cjs break;
348 1.1 cjs case MOP_K_CODE_ASV:
349 1.1 cjs (void)fprintf(fd, "Assistance volunteer\n");
350 1.1 cjs break;
351 1.1 cjs case MOP_K_CODE_RMD:
352 1.1 cjs (void)fprintf(fd, "Request memory dump\n");
353 1.1 cjs break;
354 1.1 cjs case MOP_K_CODE_RPR:
355 1.1 cjs (void)fprintf(fd, "Request program\n");
356 1.1 cjs break;
357 1.1 cjs case MOP_K_CODE_RML:
358 1.1 cjs (void)fprintf(fd, "Request memory load\n");
359 1.1 cjs break;
360 1.1 cjs case MOP_K_CODE_RDS:
361 1.1 cjs (void)fprintf(fd, "Request Dump Service\n");
362 1.1 cjs break;
363 1.1 cjs case MOP_K_CODE_MDD:
364 1.1 cjs (void)fprintf(fd, "Memory dump data\n");
365 1.1 cjs break;
366 1.1 cjs case MOP_K_CODE_PLT:
367 1.1 cjs (void)fprintf(fd,
368 1.1 cjs "Parameter load with transfer addres\n");
369 1.1 cjs break;
370 1.1 cjs default:
371 1.1 cjs (void)fprintf(fd, "(unknown)\n");
372 1.1 cjs break;
373 1.1 cjs }
374 1.1 cjs break;
375 1.1 cjs case MOP_K_PROTO_RC:
376 1.1 cjs switch (code) {
377 1.1 cjs case MOP_K_CODE_RID:
378 1.1 cjs (void)fprintf(fd, "Request ID\n");
379 1.1 cjs break;
380 1.1 cjs case MOP_K_CODE_BOT:
381 1.1 cjs (void)fprintf(fd, "Boot\n");
382 1.1 cjs break;
383 1.1 cjs case MOP_K_CODE_SID:
384 1.1 cjs (void)fprintf(fd, "System ID\n");
385 1.1 cjs break;
386 1.1 cjs case MOP_K_CODE_RQC:
387 1.1 cjs (void)fprintf(fd, "Request Counters\n");
388 1.1 cjs break;
389 1.1 cjs case MOP_K_CODE_CNT:
390 1.1 cjs (void)fprintf(fd, "Counters\n");
391 1.1 cjs break;
392 1.1 cjs case MOP_K_CODE_RVC:
393 1.1 cjs (void)fprintf(fd, "Reserve Console\n");
394 1.1 cjs break;
395 1.1 cjs case MOP_K_CODE_RLC:
396 1.1 cjs (void)fprintf(fd, "Release Console\n");
397 1.1 cjs break;
398 1.1 cjs case MOP_K_CODE_CCP:
399 1.1 cjs (void)fprintf(fd, "Console Command and Poll\n");
400 1.1 cjs break;
401 1.1 cjs case MOP_K_CODE_CRA:
402 1.1 cjs (void)fprintf(fd,
403 1.1 cjs "Console Response and Acknnowledge\n");
404 1.1 cjs break;
405 1.1 cjs default:
406 1.1 cjs (void)fprintf(fd, "(unknown)\n");
407 1.1 cjs break;
408 1.1 cjs }
409 1.1 cjs break;
410 1.1 cjs case MOP_K_PROTO_LP:
411 1.1 cjs switch (code) {
412 1.1 cjs case MOP_K_CODE_ALD:
413 1.1 cjs (void)fprintf(fd, "Active loop data\n");
414 1.1 cjs break;
415 1.1 cjs case MOP_K_CODE_PLD:
416 1.1 cjs (void)fprintf(fd, "Passive looped data\n");
417 1.1 cjs break;
418 1.1 cjs default:
419 1.1 cjs (void)fprintf(fd, "(unknown)\n");
420 1.1 cjs break;
421 1.1 cjs }
422 1.1 cjs break;
423 1.1 cjs default:
424 1.1 cjs (void)fprintf(fd, "(unknown)\n");
425 1.1 cjs break;
426 1.1 cjs }
427 1.1 cjs }
428 1.1 cjs
429 1.1 cjs void
430 1.1 cjs mopPrintDevice(fd, device)
431 1.1 cjs FILE *fd;
432 1.1 cjs u_char device;
433 1.1 cjs {
434 1.1 cjs char *sname, *name;
435 1.1 cjs
436 1.1 cjs sname = nmaGetShort((int) device);
437 1.1 cjs name = nmaGetDevice((int) device);
438 1.1 cjs
439 1.1 cjs (void)fprintf(fd, "%s '%s'",sname,name);
440 1.1 cjs }
441 1.1 cjs
442 1.1 cjs void
443 1.1 cjs mopPrintTime(fd, ap)
444 1.1 cjs FILE *fd;
445 1.1 cjs u_char *ap;
446 1.1 cjs {
447 1.1 cjs (void)fprintf(fd,
448 1.1 cjs "%04d-%02d-%02d %02d:%02d:%02d.%02d %d:%02d",
449 1.1 cjs ap[0]*100 + ap[1],
450 1.1 cjs ap[2],ap[3],ap[4],ap[5],ap[6],ap[7],ap[8],ap[9]);
451 1.1 cjs }
452 1.1 cjs
453 1.1 cjs void
454 1.1 cjs mopPrintInfo(fd, pkt, index, moplen, mopcode, trans)
455 1.1 cjs FILE *fd;
456 1.1 cjs u_char *pkt, mopcode;
457 1.1 cjs int *index, trans;
458 1.1 cjs u_short moplen;
459 1.1 cjs {
460 1.1 cjs u_short itype,tmps;
461 1.1 cjs u_char ilen ,tmpc,device;
462 1.1 cjs u_char uc1,uc2,uc3,*ucp;
463 1.1 cjs int i;
464 1.1 cjs
465 1.1 cjs device = 0;
466 1.1 cjs
467 1.1 cjs switch(trans) {
468 1.1 cjs case TRANS_ETHER:
469 1.1 cjs moplen = moplen + 16;
470 1.1 cjs break;
471 1.1 cjs case TRANS_8023:
472 1.1 cjs moplen = moplen + 14;
473 1.1 cjs break;
474 1.1 cjs }
475 1.1 cjs
476 1.1 cjs itype = mopGetShort(pkt,index);
477 1.1 cjs
478 1.1 cjs while (*index < (int)(moplen + 2)) {
479 1.1 cjs ilen = mopGetChar(pkt,index);
480 1.1 cjs switch (itype) {
481 1.1 cjs case 0:
482 1.1 cjs tmpc = mopGetChar(pkt,index);
483 1.1 cjs *index = *index + tmpc;
484 1.1 cjs break;
485 1.1 cjs case MOP_K_INFO_VER:
486 1.1 cjs uc1 = mopGetChar(pkt,index);
487 1.1 cjs uc2 = mopGetChar(pkt,index);
488 1.1 cjs uc3 = mopGetChar(pkt,index);
489 1.1 cjs (void)fprintf(fd,"Maint Version: %d.%d.%d\n",
490 1.1 cjs uc1,uc2,uc3);
491 1.1 cjs break;
492 1.1 cjs case MOP_K_INFO_MFCT:
493 1.1 cjs tmps = mopGetShort(pkt,index);
494 1.1 cjs (void)fprintf(fd,"Maint Funcion: %04x ( ",tmps);
495 1.1 cjs if (tmps & 1) (void)fprintf(fd, "Loop ");
496 1.1 cjs if (tmps & 2) (void)fprintf(fd, "Dump ");
497 1.1 cjs if (tmps & 4) (void)fprintf(fd, "Pldr ");
498 1.1 cjs if (tmps & 8) (void)fprintf(fd, "MLdr ");
499 1.1 cjs if (tmps & 16) (void)fprintf(fd, "Boot ");
500 1.1 cjs if (tmps & 32) (void)fprintf(fd, "CC ");
501 1.1 cjs if (tmps & 64) (void)fprintf(fd, "DLC ");
502 1.1 cjs if (tmps & 128) (void)fprintf(fd, "CCR ");
503 1.1 cjs (void)fprintf(fd, ")\n");
504 1.1 cjs break;
505 1.1 cjs case MOP_K_INFO_CNU:
506 1.1 cjs ucp = pkt + *index; *index = *index + 6;
507 1.1 cjs (void)fprintf(fd,"Console User : ");
508 1.1 cjs mopPrintHWA(fd, ucp);
509 1.1 cjs (void)fprintf(fd, "\n");
510 1.1 cjs break;
511 1.1 cjs case MOP_K_INFO_RTM:
512 1.1 cjs tmps = mopGetShort(pkt,index);
513 1.1 cjs (void)fprintf(fd,"Reserv Timer : %04x (%d)\n",
514 1.1 cjs tmps,tmps);
515 1.1 cjs break;
516 1.1 cjs case MOP_K_INFO_CSZ:
517 1.1 cjs tmps = mopGetShort(pkt,index);
518 1.1 cjs (void)fprintf(fd,"Cons Cmd Size: %04x (%d)\n",
519 1.1 cjs tmps,tmps);
520 1.1 cjs break;
521 1.1 cjs case MOP_K_INFO_RSZ:
522 1.1 cjs tmps = mopGetShort(pkt,index);
523 1.1 cjs (void)fprintf(fd,"Cons Res Size: %04x (%d)\n",
524 1.1 cjs tmps,tmps);
525 1.1 cjs break;
526 1.1 cjs case MOP_K_INFO_HWA:
527 1.1 cjs ucp = pkt + *index; *index = *index + 6;
528 1.1 cjs (void)fprintf(fd,"Hardware Addr: ");
529 1.1 cjs mopPrintHWA(fd, ucp);
530 1.1 cjs (void)fprintf(fd, "\n");
531 1.1 cjs break;
532 1.1 cjs case MOP_K_INFO_TIME:
533 1.1 cjs ucp = pkt + *index; *index = *index + 10;
534 1.1 cjs (void)fprintf(fd,"System Time: ");
535 1.1 cjs mopPrintTime(fd, ucp);
536 1.1 cjs (void)fprintf(fd,"\n");
537 1.1 cjs break;
538 1.1 cjs case MOP_K_INFO_SOFD:
539 1.1 cjs device = mopGetChar(pkt,index);
540 1.1 cjs (void)fprintf(fd,"Comm Device : %02x ",device);
541 1.1 cjs mopPrintDevice(fd, device);
542 1.1 cjs (void)fprintf(fd, "\n");
543 1.1 cjs break;
544 1.1 cjs case MOP_K_INFO_SFID:
545 1.1 cjs tmpc = mopGetChar(pkt,index);
546 1.1 cjs (void)fprintf(fd,"Software ID : %02x ",tmpc);
547 1.1 cjs if ((tmpc == 0)) {
548 1.1 cjs (void)fprintf(fd,"No software id");
549 1.1 cjs }
550 1.1 cjs if ((tmpc == 254)) {
551 1.1 cjs (void)fprintf(fd,"Maintenance system");
552 1.1 cjs tmpc = 0;
553 1.1 cjs }
554 1.1 cjs if ((tmpc == 255)) {
555 1.1 cjs (void)fprintf(fd,"Standard operating system");
556 1.1 cjs tmpc = 0;
557 1.1 cjs }
558 1.1 cjs if ((tmpc > 0)) {
559 1.1 cjs (void)fprintf(fd,"'");
560 1.1 cjs for (i = 0; i < ((int) tmpc); i++) {
561 1.1 cjs (void)fprintf(fd,"%c",
562 1.1 cjs mopGetChar(pkt,index));
563 1.1 cjs }
564 1.1 cjs (void)fprintf(fd,"'");
565 1.1 cjs }
566 1.1 cjs (void)fprintf(fd,"\n");
567 1.1 cjs break;
568 1.1 cjs case MOP_K_INFO_PRTY:
569 1.1 cjs tmpc = mopGetChar(pkt,index);
570 1.1 cjs (void)fprintf(fd,"System Proc : %02x ",tmpc);
571 1.1 cjs switch (tmpc) {
572 1.1 cjs case MOP_K_PRTY_11:
573 1.1 cjs (void)fprintf(fd, "PDP-11\n");
574 1.1 cjs break;
575 1.1 cjs case MOP_K_PRTY_CMSV:
576 1.1 cjs (void)fprintf(fd,
577 1.1 cjs "Communication Server\n");
578 1.1 cjs break;
579 1.1 cjs case MOP_K_PRTY_PRO:
580 1.1 cjs (void)fprintf(fd, "Professional\n");
581 1.1 cjs break;
582 1.1 cjs case MOP_K_PRTY_SCO:
583 1.1 cjs (void)fprintf(fd, "Scorpio\n");
584 1.1 cjs break;
585 1.1 cjs case MOP_K_PRTY_AMB:
586 1.1 cjs (void)fprintf(fd, "Amber\n");
587 1.1 cjs break;
588 1.1 cjs case MOP_K_PRTY_BRI:
589 1.1 cjs (void)fprintf(fd, "XLII Bridge\n");
590 1.1 cjs break;
591 1.1 cjs default:
592 1.1 cjs (void)fprintf(fd, "Unknown\n");
593 1.1 cjs break;
594 1.1 cjs };
595 1.1 cjs break;
596 1.1 cjs case MOP_K_INFO_DLTY:
597 1.1 cjs tmpc = mopGetChar(pkt,index);
598 1.1 cjs (void)fprintf(fd,"Data Link Typ: %02x ",tmpc);
599 1.1 cjs switch (tmpc) {
600 1.1 cjs case MOP_K_DLTY_NI:
601 1.1 cjs (void)fprintf(fd, "Ethernet\n");
602 1.1 cjs break;
603 1.1 cjs case MOP_K_DLTY_DDCMP:
604 1.1 cjs (void)fprintf(fd, "DDCMP\n");
605 1.1 cjs break;
606 1.1 cjs case MOP_K_DLTY_LAPB:
607 1.1 cjs (void)fprintf(fd, "LAPB (X.25)\n");
608 1.1 cjs break;
609 1.1 cjs default:
610 1.1 cjs (void)fprintf(fd, "Unknown\n");
611 1.1 cjs break;
612 1.1 cjs };
613 1.1 cjs break;
614 1.1 cjs case MOP_K_INFO_DLBSZ:
615 1.1 cjs tmps = mopGetShort(pkt,index);
616 1.1 cjs (void)fprintf(fd,"DL Buff Size : %04x (%d)\n",
617 1.1 cjs tmps,tmps);
618 1.1 cjs break;
619 1.1 cjs default:
620 1.1 cjs if (((device = NMA_C_SOFD_LCS) || /* DECserver 100 */
621 1.1 cjs (device = NMA_C_SOFD_DS2) || /* DECserver 200 */
622 1.1 cjs (device = NMA_C_SOFD_DP2) || /* DECserver 250 */
623 1.1 cjs (device = NMA_C_SOFD_DS3)) && /* DECserver 300 */
624 1.1 cjs ((itype > 101) && (itype < 107)))
625 1.1 cjs {
626 1.1 cjs switch (itype) {
627 1.1 cjs case 102:
628 1.1 cjs ucp = pkt + *index;
629 1.1 cjs *index = *index + ilen;
630 1.1 cjs (void)fprintf(fd,
631 1.1 cjs "ROM Sftwr Ver: %02x '",
632 1.1 cjs ilen);
633 1.1 cjs for (i = 0; i < ilen; i++) {
634 1.1 cjs (void)fprintf(fd,"%c",ucp[i]);
635 1.1 cjs }
636 1.1 cjs (void)fprintf(fd, "'\n");
637 1.1 cjs break;
638 1.1 cjs case 103:
639 1.1 cjs ucp = pkt + *index;
640 1.1 cjs *index = *index + ilen;
641 1.1 cjs (void)fprintf(fd,
642 1.1 cjs "Software Ver : %02x '",
643 1.1 cjs ilen);
644 1.1 cjs for (i = 0; i < ilen; i++) {
645 1.1 cjs (void)fprintf(fd, "%c",ucp[i]);
646 1.1 cjs }
647 1.1 cjs (void)fprintf(fd, "'\n");
648 1.1 cjs break;
649 1.1 cjs case 104:
650 1.1 cjs tmps = mopGetShort(pkt,index);
651 1.1 cjs (void)fprintf(fd,
652 1.1 cjs "DECnet Addr : %d.%d (%d)\n",
653 1.1 cjs tmps / 1024,
654 1.1 cjs tmps % 1024,
655 1.1 cjs tmps);
656 1.1 cjs break;
657 1.1 cjs case 105:
658 1.1 cjs ucp = pkt + *index;
659 1.1 cjs *index = *index + ilen;
660 1.1 cjs (void)fprintf(fd,
661 1.1 cjs "Node Name : %02x '",
662 1.1 cjs ilen);
663 1.1 cjs for (i = 0; i < ilen; i++) {
664 1.1 cjs (void)fprintf(fd, "%c",ucp[i]);
665 1.1 cjs }
666 1.1 cjs (void)fprintf(fd, "'\n");
667 1.1 cjs break;
668 1.1 cjs case 106:
669 1.1 cjs ucp = pkt + *index;
670 1.1 cjs *index = *index + ilen;
671 1.1 cjs (void)fprintf(fd,
672 1.1 cjs "Node Ident : %02x '",
673 1.1 cjs ilen);
674 1.1 cjs for (i = 0; i < ilen; i++) {
675 1.1 cjs (void)fprintf(fd, "%c",ucp[i]);
676 1.1 cjs }
677 1.1 cjs (void)fprintf(fd, "'\n");
678 1.1 cjs break;
679 1.1 cjs };
680 1.1 cjs } else {
681 1.1 cjs ucp = pkt + *index; *index = *index + ilen;
682 1.1 cjs (void)fprintf(fd, "Info Type : %04x (%d)\n",
683 1.1 cjs itype,
684 1.1 cjs itype);
685 1.1 cjs (void)fprintf(fd, "Info Data : %02x ",
686 1.1 cjs ilen);
687 1.1 cjs for (i = 0; i < ilen; i++) {
688 1.1 cjs if ((i % 16) == 0) {
689 1.1 cjs if ((i / 16) == 0) {
690 1.1 cjs } else {
691 1.1 cjs (void)fprintf(fd,
692 1.1 cjs "\n ");
693 1.1 cjs };
694 1.1 cjs };
695 1.1 cjs (void)fprintf(fd, "%02x ",ucp[i]);
696 1.1 cjs }
697 1.1 cjs (void)fprintf(fd, "\n");
698 1.1 cjs };
699 1.1 cjs }
700 1.1 cjs itype = mopGetShort(pkt,index);
701 1.1 cjs }
702 1.1 cjs }
703 1.1 cjs
704