X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/0e8826d5fbff2b6aedce07c0097c7e57e7e9d9be..refs/heads/coverity_scan:/print-arcnet.c diff --git a/print-arcnet.c b/print-arcnet.c index e5e9bbfe..d7fce713 100644 --- a/print-arcnet.c +++ b/print-arcnet.c @@ -23,9 +23,7 @@ /* \summary: Attached Resource Computer NETwork (ARCNET) printer */ -#ifdef HAVE_CONFIG_H #include -#endif #include "netdissect-stdinc.h" @@ -115,7 +113,7 @@ static const struct tok arctypemap[] = { { ARCTYPE_IPX, "ipx" }, { ARCTYPE_INET6, "ipv6" }, { ARCTYPE_DIAGNOSE, "diag" }, - { 0, 0 } + { 0, NULL } }; static void @@ -130,18 +128,18 @@ arcnet_print(netdissect_options *ndo, const u_char *bp, u_int length, int phds, if (ndo->ndo_qflag) { ND_PRINT("%02x %02x %u: ", - EXTRACT_U_1(ap->arc_shost), - EXTRACT_U_1(ap->arc_dhost), + GET_U_1(ap->arc_shost), + GET_U_1(ap->arc_dhost), length); return; } - arctypename = tok2str(arctypemap, "%02x", EXTRACT_U_1(ap->arc_type)); + arctypename = tok2str(arctypemap, "%02x", GET_U_1(ap->arc_type)); if (!phds) { ND_PRINT("%02x %02x %s %u: ", - EXTRACT_U_1(ap->arc_shost), - EXTRACT_U_1(ap->arc_dhost), + GET_U_1(ap->arc_shost), + GET_U_1(ap->arc_dhost), arctypename, length); return; @@ -149,8 +147,8 @@ arcnet_print(netdissect_options *ndo, const u_char *bp, u_int length, int phds, if (flag == 0) { ND_PRINT("%02x %02x %s seqid %04x %u: ", - EXTRACT_U_1(ap->arc_shost), - EXTRACT_U_1(ap->arc_dhost), + GET_U_1(ap->arc_shost), + GET_U_1(ap->arc_dhost), arctypename, seqid, length); return; @@ -159,15 +157,15 @@ arcnet_print(netdissect_options *ndo, const u_char *bp, u_int length, int phds, if (flag & 1) ND_PRINT("%02x %02x %s seqid %04x " "(first of %u fragments) %u: ", - EXTRACT_U_1(ap->arc_shost), - EXTRACT_U_1(ap->arc_dhost), + GET_U_1(ap->arc_shost), + GET_U_1(ap->arc_dhost), arctypename, seqid, (flag + 3) / 2, length); else ND_PRINT("%02x %02x %s seqid %04x " "(fragment %u) %u: ", - EXTRACT_U_1(ap->arc_shost), - EXTRACT_U_1(ap->arc_dhost), + GET_U_1(ap->arc_shost), + GET_U_1(ap->arc_dhost), arctypename, seqid, flag/2 + 1, length); } @@ -178,7 +176,7 @@ arcnet_print(netdissect_options *ndo, const u_char *bp, u_int length, int phds, * 'h->len' is the length of the packet off the wire, and 'h->caplen' * is the number of bytes actually captured. */ -u_int +void arcnet_if_print(netdissect_options *ndo, const struct pcap_pkthdr *h, const u_char *p) { u_int caplen = h->caplen; @@ -190,14 +188,14 @@ arcnet_if_print(netdissect_options *ndo, const struct pcap_pkthdr *h, const u_ch u_int seqid = 0; u_char arc_type; - ndo->ndo_protocol = "arcnet_if"; + ndo->ndo_protocol = "arcnet"; if (caplen < ARC_HDRLEN) { - nd_print_trunc(ndo); - return (caplen); + ndo->ndo_ll_hdr_len += caplen; + nd_trunc_longjmp(ndo); } ap = (const struct arc_header *)p; - arc_type = EXTRACT_U_1(ap->arc_type); + arc_type = GET_U_1(ap->arc_type); switch (arc_type) { default: @@ -215,23 +213,23 @@ arcnet_if_print(netdissect_options *ndo, const struct pcap_pkthdr *h, const u_ch if (caplen < ARC_HDRNEWLEN) { arcnet_print(ndo, p, length, 0, 0, 0); ND_PRINT(" phds"); - nd_print_trunc(ndo); - return (caplen); + ndo->ndo_ll_hdr_len += caplen; + nd_trunc_longjmp(ndo); } - flag = EXTRACT_U_1(ap->arc_flag); + flag = GET_U_1(ap->arc_flag); if (flag == 0xff) { if (caplen < ARC_HDRNEWLEN_EXC) { arcnet_print(ndo, p, length, 0, 0, 0); ND_PRINT(" phds extended"); - nd_print_trunc(ndo); - return (caplen); + ndo->ndo_ll_hdr_len += caplen; + nd_trunc_longjmp(ndo); } - flag = EXTRACT_U_1(ap->arc_flag2); - seqid = EXTRACT_BE_U_2(ap->arc_seqid2); + flag = GET_U_1(ap->arc_flag2); + seqid = GET_BE_U_2(ap->arc_seqid2); archdrlen = ARC_HDRNEWLEN_EXC; } else { - seqid = EXTRACT_BE_U_2(ap->arc_seqid); + seqid = GET_BE_U_2(ap->arc_seqid); archdrlen = ARC_HDRNEWLEN; } } @@ -251,13 +249,14 @@ arcnet_if_print(netdissect_options *ndo, const struct pcap_pkthdr *h, const u_ch /* * This is a middle fragment. */ - return (archdrlen); + ndo->ndo_ll_hdr_len += archdrlen; + return; } if (!arcnet_encap_print(ndo, arc_type, p, length, caplen)) ND_DEFAULTPRINT(p, caplen); - return (archdrlen); + ndo->ndo_ll_hdr_len += archdrlen; } /* @@ -270,7 +269,7 @@ arcnet_if_print(netdissect_options *ndo, const struct pcap_pkthdr *h, const u_ch * reassembled packets rather than raw frames, and headers have an * extra "offset" field between the src/dest and packet type. */ -u_int +void arcnet_linux_if_print(netdissect_options *ndo, const struct pcap_pkthdr *h, const u_char *p) { u_int caplen = h->caplen; @@ -280,21 +279,21 @@ arcnet_linux_if_print(netdissect_options *ndo, const struct pcap_pkthdr *h, cons int archdrlen = 0; u_char arc_type; - ndo->ndo_protocol = "arcnet_linux_if"; + ndo->ndo_protocol = "arcnet_linux"; if (caplen < ARC_LINUX_HDRLEN) { - nd_print_trunc(ndo); - return (caplen); + ndo->ndo_ll_hdr_len += caplen; + nd_trunc_longjmp(ndo); } ap = (const struct arc_linux_header *)p; - arc_type = EXTRACT_U_1(ap->arc_type); + arc_type = GET_U_1(ap->arc_type); switch (arc_type) { default: archdrlen = ARC_LINUX_HDRNEWLEN; if (caplen < ARC_LINUX_HDRNEWLEN) { - nd_print_trunc(ndo); - return (caplen); + ndo->ndo_ll_hdr_len += caplen; + nd_trunc_longjmp(ndo); } break; case ARCTYPE_IP_OLD: @@ -317,7 +316,7 @@ arcnet_linux_if_print(netdissect_options *ndo, const struct pcap_pkthdr *h, cons if (!arcnet_encap_print(ndo, arc_type, p, length, caplen)) ND_DEFAULTPRINT(p, caplen); - return (archdrlen); + ndo->ndo_ll_hdr_len += archdrlen; } /*