4 static char *rcsid = "$Id: ana.c,v 1.5 2000/09/26 03:48:23 root Exp $";
8 * Revision 1.5 2000/09/26 03:48:23 root
11 * Revision 1.4 2000/09/26 03:44:29 root
14 * Revision 1.3 2000/07/16 13:18:10 root
17 * Revision 1.1 2000/07/16 13:16:33 root
20 * Revision 1.2 1999/09/13 12:37:06 root
23 * Revision 1.1 1999/09/13 12:36:18 root
26 * Revision 1.4 1999/09/02 09:59:02 root
29 * Revision 1.3 1999/09/02 09:58:02 root
38 unsigned char pbuf[4096];
43 pull_short (unsigned char *c)
53 pull_long (unsigned char *c)
71 dump_hex (unsigned char *pp, int pl)
75 printf (" %02x", *(pp++));
79 dump_hexa (unsigned char *pp, int pl)
84 if ((j < ' ') || (j > 126))
86 printf (" %02x%c", *pp, j);
91 ana_token (int s, unsigned char *pp, int pl)
94 printf (" Token 0x%04x:", s);
98 printf (" The mighty zero: %d\n", pull_long (pp));
101 printf (" My MAC addr: %02x:%02x:%02x:%02x:%02x:%02x\n",
102 pp[0], pp[1], pp[2], pp[3], pp[4], pp[5]);
105 printf (" My SAP addr: %02x\n", pp[0]);
108 printf (" Frame len: %d\n", pull_short (pp));
111 printf (" The small zero: %d\n", *pp);
114 printf (" Your MAC addr: %02x:%02x:%02x:%02x:%02x:%02x\n",
115 pp[0], pp[1], pp[2], pp[3], pp[4], pp[5]);
118 printf (" Block number: %d\n", pull_long (pp));
121 printf (" data block: (ommitted %d bytes of guff)\n", pl);
129 printf (" addr block: Load @ 0x%08x, Run @ 0x%08x, Flags: 0x%02x",
130 pull_long (pp), pull_long (pp + 4), pp[8]);
134 printf (" (More to come)");
137 printf (" (All done, execute)");
155 ana_frag (unsigned char *pp, int pl)
166 ana_token (s, pp + 2, pl - 2);
171 ana_frag (pp + 2, s - 2);
184 main (int argc, char *argv[])
194 n = nit_open (argv[1]);
203 printf ("Failed to open network device\n");
205 while (!feof (stdin))
207 unsigned char from[ETH_ALEN];
209 plen = nit_recv (n, pbuf, sizeof (pbuf), from, NULL);
210 gettimeofday (&tv, NULL);
213 (pbuf[0] == 0xfc) || (pbuf[1] == 0xfc) ||
214 (pbuf[0] == 0xf8) || (pbuf[1] == 0xf8) ||
215 (pbuf[0] == 0xf4) || (pbuf[1] == 0xf4))
218 printf ("%d.%06d From %02x:%02x:%02x:%02x:%02x:%02x \n",
221 from[0], from[1], from[2], from[3], from[4], from[5]);
222 printf (" Ssap %02x Dsap %02x Cmd %02x Length %d(%d)\n",
224 pbuf[1], pbuf[2], plen, ntohs (*(short *) &pbuf[3]));
228 pptr += 5; /*Length */
232 dump_hex (pptr, plen);
235 printf (" Pack Type:");
236 switch (pull_short (pptr))
245 printf (" SEND.FILE.REQUEST:");
248 printf (" FILE.DATA.RESPONSE:");
251 printf (" 0x%04x ?:", pull_short (pptr));
253 printf (" Length=%d\n", plen);
257 s = ana_frag (pptr, plen);