X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/f4c699b58752234cadf18b12ec44c596a930c883..bcd506b0a6b27f66b5f44f6dbc623cb6ccec8784:/print-arp.c diff --git a/print-arp.c b/print-arp.c index a06c1901..dcfa13f1 100644 --- a/print-arp.c +++ b/print-arp.c @@ -21,7 +21,7 @@ #ifndef lint static const char rcsid[] = - "@(#) $Header: /tcpdump/master/tcpdump/print-arp.c,v 1.57 2002-09-04 11:22:13 guy Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/tcpdump/print-arp.c,v 1.60 2002-12-11 07:13:57 guy Exp $ (LBL)"; #endif #ifdef HAVE_CONFIG_H @@ -85,11 +85,11 @@ struct arp_pkthdr { #define ARP_HDRLEN 8 -#define HRD(ap) ((ap)->ar_hrd) +#define HRD(ap) EXTRACT_16BITS(&(ap)->ar_hrd) #define HLN(ap) ((ap)->ar_hln) #define PLN(ap) ((ap)->ar_pln) -#define OP(ap) ((ap)->ar_op) -#define PRO(ap) ((ap)->ar_pro) +#define OP(ap) EXTRACT_16BITS(&(ap)->ar_op) +#define PRO(ap) EXTRACT_16BITS(&(ap)->ar_pro) #define SHA(ap) (ar_sha(ap)) #define SPA(ap) (ar_spa(ap)) #define THA(ap) (ar_tha(ap)) @@ -131,12 +131,12 @@ struct atmarp_pkthdr { u_char aar_tpa[]; /* target protocol address */ #endif -#define ATMHRD(ap) ((ap)->aar_hrd) +#define ATMHRD(ap) EXTRACT_16BITS(&(ap)->aar_hrd) #define ATMSHLN(ap) ((ap)->aar_shtl & ATMARP_LEN_MASK) #define ATMSSLN(ap) ((ap)->aar_sstl & ATMARP_LEN_MASK) #define ATMSPLN(ap) ((ap)->aar_spln) -#define ATMOP(ap) ((ap)->aar_op) -#define ATMPRO(ap) ((ap)->aar_pro) +#define ATMOP(ap) EXTRACT_16BITS(&(ap)->aar_op) +#define ATMPRO(ap) EXTRACT_16BITS(&(ap)->aar_pro) #define ATMTHLN(ap) ((ap)->aar_thtl & ATMARP_LEN_MASK) #define ATMTSLN(ap) ((ap)->aar_tstl & ATMARP_LEN_MASK) #define ATMTPLN(ap) ((ap)->aar_tpln) @@ -161,9 +161,13 @@ static void atmarp_addr_print(const u_char *ha, u_int ha_len, const u_char *sa, u_int sa_len) { - (void)printf("%s", linkaddr_string(ha, ha_len)); - if (sa_len != 0) - (void)printf(",%s", linkaddr_string(sa, sa_len)); + if (ha_len == 0) + (void)printf(""); + else { + (void)printf("%s", linkaddr_string(ha, ha_len)); + if (sa_len != 0) + (void)printf(",%s", linkaddr_string(sa, sa_len)); + } } static void @@ -175,9 +179,9 @@ atmarp_print(const u_char *bp, u_int length, u_int caplen) ap = (const struct atmarp_pkthdr *)bp; TCHECK(*ap); - hrd = EXTRACT_16BITS(&ATMHRD(ap)); - pro = EXTRACT_16BITS(&ATMPRO(ap)); - op = EXTRACT_16BITS(&ATMOP(ap)); + hrd = ATMHRD(ap); + pro = ATMPRO(ap); + op = ATMOP(ap); if (!TTEST2(*aar_tpa(ap), ATMTPLN(ap))) { (void)printf("truncated-atmarp"); @@ -209,35 +213,23 @@ atmarp_print(const u_char *bp, u_int length, u_int caplen) case ARPOP_REPLY: (void)printf("arp reply %s", ipaddr_string(ATMSPA(ap))); (void)printf(" is-at "); - if (ATMSHLN(ap) != 0) - atmarp_addr_print(ATMSHA(ap), ATMSHLN(ap), - ATMSSA(ap), ATMSSLN(ap)); - else - (void)printf(""); + atmarp_addr_print(ATMSHA(ap), ATMSHLN(ap), ATMSSA(ap), + ATMSSLN(ap)); break; case ARPOP_INVREQUEST: (void)printf("invarp who-is "); - if (ATMTHLN(ap) != 0) - atmarp_addr_print(ATMTHA(ap), ATMTHLN(ap), - ATMTSA(ap), ATMTSLN(ap)); - else - (void)printf(""); + atmarp_addr_print(ATMTHA(ap), ATMTHLN(ap), ATMTSA(ap), + ATMTSLN(ap)); (void)printf(" tell "); - if (ATMSHLN(ap) != 0) - atmarp_addr_print(ATMSHA(ap), ATMSHLN(ap), - ATMSSA(ap), ATMSSLN(ap)); - else - (void)printf(""); + atmarp_addr_print(ATMSHA(ap), ATMSHLN(ap), ATMSSA(ap), + ATMSSLN(ap)); break; case ARPOP_INVREPLY: (void)printf("invarp reply "); - if (ATMSHLN(ap) != 0) - atmarp_addr_print(ATMSHA(ap), ATMSHLN(ap), - ATMSSA(ap), ATMSSLN(ap)); - else - (void)printf(""); + atmarp_addr_print(ATMSHA(ap), ATMSHLN(ap), ATMSSA(ap), + ATMSSLN(ap)); (void)printf(" at %s", ipaddr_string(ATMSPA(ap))); break; @@ -264,13 +256,13 @@ arp_print(const u_char *bp, u_int length, u_int caplen) ap = (const struct arp_pkthdr *)bp; TCHECK(*ap); - hrd = EXTRACT_16BITS(&HRD(ap)); + hrd = HRD(ap); if (hrd == ARPHRD_ATM2225) { atmarp_print(bp, length, caplen); return; } - pro = EXTRACT_16BITS(&PRO(ap)); - op = EXTRACT_16BITS(&OP(ap)); + pro = PRO(ap); + op = OP(ap); if (!TTEST2(*ar_tpa(ap), PLN(ap))) { (void)printf("truncated-arp");