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