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