• Home
  • Raw
  • Download

Lines Matching +full:print +full:- +full:flags +full:. +full:pcap

3  *	The Regents of the University of California.  All rights reserved.
13 * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
16 * written permission.
19 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
21 * Format and print AppleTalk packets.
26 …"@(#) $Header: /tcpdump/master/tcpdump/print-atalk.c,v 1.81 2004/05/01 09:41:50 hannes Exp $ (LBL)…
30 #include "config.h"
33 #include <tcpdump-stdinc.h>
35 #include <stdio.h>
36 #include <stdlib.h>
37 #include <string.h>
38 #include <pcap.h>
40 #include "interface.h"
41 #include "addrtoname.h"
42 #include "ethertype.h"
43 #include "extract.h" /* must come after interface.h */
44 #include "appletalk.h"
82 * Print LLAP packets received on a physical LocalTalk interface.
87 return (llap_print(p, h->caplen)); in ltalk_if_print()
91 * Print AppleTalk LLAP packets.
103 * Our packet is on a 4-byte boundary, as we're either called in llap_print()
104 * directly from a top-level link-layer printer (ltalk_if_print) in llap_print()
105 * or from the UDP printer. The LLAP+DDP header is a multiple in llap_print()
106 * of 4 bytes in length, so the DDP payload is also on a 4-byte in llap_print()
108 * "ddp_print()". in llap_print()
112 length -= sizeof(*lp); in llap_print()
114 switch (lp->type) { in llap_print()
122 printf("%s.%s", in llap_print()
123 ataddr_string(0, lp->src), ddpskt_string(sdp->srcSkt)); in llap_print()
124 printf(" > %s.%s:", in llap_print()
125 ataddr_string(0, lp->dst), ddpskt_string(sdp->dstSkt)); in llap_print()
127 length -= ddpSSize; in llap_print()
129 ddp_print(bp, length, sdp->type, 0, lp->src, sdp->srcSkt); in llap_print()
138 snet = EXTRACT_16BITS(&dp->srcNet); in llap_print()
139 printf("%s.%s", ataddr_string(snet, dp->srcNode), in llap_print()
140 ddpskt_string(dp->srcSkt)); in llap_print()
141 printf(" > %s.%s:", in llap_print()
142 ataddr_string(EXTRACT_16BITS(&dp->dstNet), dp->dstNode), in llap_print()
143 ddpskt_string(dp->dstSkt)); in llap_print()
145 length -= ddpSize; in llap_print()
147 ddp_print(bp, length, dp->type, snet, dp->srcNode, dp->srcSkt); in llap_print()
157 printf("%d > %d at-lap#%d %d", in llap_print()
158 lp->src, lp->dst, lp->type, length); in llap_print()
165 * Print EtherTalk/TokenTalk packets (or FDDITalk, or whatever it's called
167 * packets in them).
183 snet = EXTRACT_16BITS(&dp->srcNet); in atalk_print()
184 printf("%s.%s", ataddr_string(snet, dp->srcNode), in atalk_print()
185 ddpskt_string(dp->srcSkt)); in atalk_print()
186 printf(" > %s.%s: ", in atalk_print()
187 ataddr_string(EXTRACT_16BITS(&dp->dstNet), dp->dstNode), in atalk_print()
188 ddpskt_string(dp->dstSkt)); in atalk_print()
190 length -= ddpSize; in atalk_print()
191 ddp_print(bp, length, dp->type, snet, dp->srcNode, dp->srcSkt); in atalk_print()
200 #define AT(member) ataddr_string((ap->member[1]<<8)|ap->member[2],ap->member[3]) in aarp_print()
204 if (EXTRACT_16BITS(&ap->htype) == 1 && in aarp_print()
205 EXTRACT_16BITS(&ap->ptype) == ETHERTYPE_ATALK && in aarp_print()
206 ap->halen == 6 && ap->palen == 4 ) in aarp_print()
207 switch (EXTRACT_16BITS(&ap->op)) { in aarp_print()
210 (void)printf("who-has %s tell %s", in aarp_print()
215 (void)printf("reply %s is-at %s", in aarp_print()
216 AT(pdaddr), etheraddr_string(ap->hdaddr)); in aarp_print()
225 length, EXTRACT_16BITS(&ap->op), EXTRACT_16BITS(&ap->htype), in aarp_print()
226 EXTRACT_16BITS(&ap->ptype), ap->halen, ap->palen); in aarp_print()
230 * Print AppleTalk Datagram Delivery Protocol packets.
252 (void)printf(" at-%s %d", tok2str(type2str, NULL, t), length); in ddp_print()
264 /* Just bail if we don't have the whole chunk. */ in atp_print()
268 length -= sizeof(*ap); in atp_print()
269 switch (ap->control & 0xc0) { in atp_print()
272 (void)printf(" atp-req%s %d", in atp_print()
273 ap->control & atpXO? " " : "*", in atp_print()
274 EXTRACT_16BITS(&ap->transID)); in atp_print()
276 atp_bitmap_print(ap->bitmap); in atp_print()
281 switch (ap->control & (atpEOM|atpSTS)) { in atp_print()
295 (void)printf(" atp-resp%s%d:%d (%d)", in atp_print()
296 ap->control & atpEOM? "*" : " ", in atp_print()
297 EXTRACT_16BITS(&ap->transID), ap->bitmap, length); in atp_print()
298 switch (ap->control & (atpXO|atpSTS)) { in atp_print()
312 (void)printf(" atp-rel %d", EXTRACT_16BITS(&ap->transID)); in atp_print()
314 atp_bitmap_print(ap->bitmap); in atp_print()
320 /* there shouldn't be any control flags */ in atp_print()
321 if (ap->control & (atpXO|atpEOM|atpSTS)) { in atp_print()
323 if (ap->control & atpXO) { in atp_print()
327 if (ap->control & atpEOM) { in atp_print()
331 if (ap->control & atpSTS) { in atp_print()
340 (void)printf(" atp-0x%x %d (%d)", ap->control, in atp_print()
341 EXTRACT_16BITS(&ap->transID), length); in atp_print()
344 data = EXTRACT_32BITS(&ap->userData); in atp_print()
357 * extend a u_char, which is the case with the Ultrix compiler. in atp_bitmap_print()
358 * (gcc is smart enough to eliminate it, at least on the Sparc). in atp_bitmap_print()
374 (void)printf("<0-%d>", i - 1); in atp_bitmap_print()
390 (void)printf(" truncated-nbp %d", length); in nbp_print()
394 length -= nbpHeaderSize; in nbp_print()
397 (void)printf(" truncated-nbp %d", length + nbpHeaderSize); in nbp_print()
406 switch (i = np->control & 0xf0) { in nbp_print()
410 (void)printf(i == nbpLkUp? " nbp-lkup %d:":" nbp-brRq %d:", in nbp_print()
411 np->id); in nbp_print()
420 * address and the enumerator should be zero. in nbp_print()
422 if ((np->control & 0xf) != 1) in nbp_print()
423 (void)printf(" [ntup=%d]", np->control & 0xf); in nbp_print()
424 if (tp->enumerator) in nbp_print()
425 (void)printf(" [enum=%d]", tp->enumerator); in nbp_print()
426 if (EXTRACT_16BITS(&tp->net) != snet || in nbp_print()
427 tp->node != snode || tp->skt != skt) in nbp_print()
428 (void)printf(" [addr=%s.%d]", in nbp_print()
429 ataddr_string(EXTRACT_16BITS(&tp->net), in nbp_print()
430 tp->node), tp->skt); in nbp_print()
434 (void)printf(" nbp-reply %d:", np->id); in nbp_print()
436 /* print each of the tuples in the reply */ in nbp_print()
437 for (i = np->control & 0xf; --i >= 0 && tp; ) in nbp_print()
442 (void)printf(" nbp-0x%x %d (%d)", np->control, np->id, in nbp_print()
448 /* print a counted string */
465 while ((int)--length >= 0) { in print_cstring()
489 /* if the enumerator isn't 1, print it */ in nbp_tuple_print()
490 if (tp->enumerator != 1) in nbp_tuple_print()
491 (void)printf("(%d)", tp->enumerator); in nbp_tuple_print()
493 /* if the socket doesn't match the src socket, print it */ in nbp_tuple_print()
494 if (tp->skt != skt) in nbp_tuple_print()
495 (void)printf(" %d", tp->skt); in nbp_tuple_print()
498 if (EXTRACT_16BITS(&tp->net) != snet || tp->node != snode) in nbp_tuple_print()
500 ataddr_string(EXTRACT_16BITS(&tp->net), tp->node)); in nbp_tuple_print()
549 * number to name map file. in ataddr_string()
552 && (fp = fopen("/etc/atalk.names", "r"))) { in ataddr_string()
559 if (sscanf(line, "%d.%d.%d %256s", &i1, &i2, &i3, in ataddr_string()
561 /* got a hostname. */ in ataddr_string()
563 else if (sscanf(line, "%d.%d %256s", &i1, &i2, in ataddr_string()
570 for (tp = &hnametable[i3 & (HASHNAMESIZE-1)]; in ataddr_string()
571 tp->nxt; tp = tp->nxt) in ataddr_string()
573 tp->addr = i3; in ataddr_string()
574 tp->nxt = newhnamemem(); in ataddr_string()
575 tp->name = strdup(nambuf); in ataddr_string()
580 for (tp = &hnametable[i & (HASHNAMESIZE-1)]; tp->nxt; tp = tp->nxt) in ataddr_string()
581 if (tp->addr == i) in ataddr_string()
582 return (tp->name); in ataddr_string()
584 /* didn't have the node name -- see if we've got the net name */ in ataddr_string()
586 for (tp2 = &hnametable[i & (HASHNAMESIZE-1)]; tp2->nxt; tp2 = tp2->nxt) in ataddr_string()
587 if (tp2->addr == i) { in ataddr_string()
588 tp->addr = (atnet << 8) | athost; in ataddr_string()
589 tp->nxt = newhnamemem(); in ataddr_string()
590 (void)snprintf(nambuf, sizeof(nambuf), "%s.%d", in ataddr_string()
591 tp2->name, athost); in ataddr_string()
592 tp->name = strdup(nambuf); in ataddr_string()
593 return (tp->name); in ataddr_string()
596 tp->addr = (atnet << 8) | athost; in ataddr_string()
597 tp->nxt = newhnamemem(); in ataddr_string()
599 (void)snprintf(nambuf, sizeof(nambuf), "%d.%d.%d", in ataddr_string()
602 (void)snprintf(nambuf, sizeof(nambuf), "%d.%d", atnet >> 8, in ataddr_string()
604 tp->name = strdup(nambuf); in ataddr_string()
606 return (tp->name); in ataddr_string()