X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/1dc8113bf795ec74364b5e8e048abd24192d66a5..refs/pull/1034/head:/print-arcnet.c diff --git a/print-arcnet.c b/print-arcnet.c index 7077c109..5f6aaf9c 100644 --- a/print-arcnet.c +++ b/print-arcnet.c @@ -178,7 +178,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,10 +190,10 @@ 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; @@ -215,8 +215,8 @@ 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 = GET_U_1(ap->arc_flag); @@ -224,8 +224,8 @@ arcnet_if_print(netdissect_options *ndo, const struct pcap_pkthdr *h, const u_ch 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 = GET_U_1(ap->arc_flag2); seqid = GET_BE_U_2(ap->arc_seqid2); @@ -251,13 +251,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 +271,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,10 +281,10 @@ 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; @@ -293,8 +294,8 @@ arcnet_linux_if_print(netdissect_options *ndo, const struct pcap_pkthdr *h, cons 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 +318,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; } /*