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