From: Francois-Xavier Le Bail Date: Thu, 6 Feb 2020 19:27:06 +0000 (+0100) Subject: Bluetooth: Update the link-layer dissector to a void function X-Git-Tag: tcpdump-4.99-bp~534 X-Git-Url: https://git.tcpdump.org/tcpdump/commitdiff_plain/c688c129ea87125d75a17dcf24a51132d6c2a04d Bluetooth: Update the link-layer dissector to a void function Moreover: Remove a useless ND_TCHECK_4 test (caplen tested before). Remove a no longer used 'trunc' label. --- diff --git a/netdissect.h b/netdissect.h index b796e224..4f3ba390 100644 --- a/netdissect.h +++ b/netdissect.h @@ -465,7 +465,7 @@ extern void ap1394_if_print IF_PRINTER_ARGS; extern u_int arcnet_if_print IF_PRINTER_ARGS; extern u_int arcnet_linux_if_print IF_PRINTER_ARGS; extern u_int atm_if_print IF_PRINTER_ARGS; -extern u_int bt_if_print IF_PRINTER_ARGS; +extern void bt_if_print IF_PRINTER_ARGS; extern u_int brcm_tag_if_print IF_PRINTER_ARGS; extern u_int brcm_tag_prepend_if_print IF_PRINTER_ARGS; extern u_int chdlc_if_print IF_PRINTER_ARGS; diff --git a/print-bt.c b/print-bt.c index 9b0859f9..d65a5ff8 100644 --- a/print-bt.c +++ b/print-bt.c @@ -46,7 +46,7 @@ typedef struct _bluetooth_h4_header { * 'h->len' is the length of the packet off the wire, and 'h->caplen' * is the number of bytes actually captured. */ -u_int +void bt_if_print(netdissect_options *ndo, const struct pcap_pkthdr *h, const u_char *p) { u_int length = h->len; @@ -55,22 +55,21 @@ bt_if_print(netdissect_options *ndo, const struct pcap_pkthdr *h, const u_char * ndo->ndo_protocol = "bluetooth"; nd_print_protocol(ndo); - if (caplen < BT_HDRLEN) - goto trunc; + if (caplen < BT_HDRLEN) { + ndo->ndo_ll_header_length += caplen; + nd_print_trunc(ndo); + return; + } + ndo->ndo_ll_header_length += BT_HDRLEN; caplen -= BT_HDRLEN; length -= BT_HDRLEN; p += BT_HDRLEN; - ND_TCHECK_4(hdr->direction); if (ndo->ndo_eflag) ND_PRINT(", hci length %u, direction %s", length, (GET_BE_U_4(hdr->direction)&0x1) ? "in" : "out"); if (!ndo->ndo_suppress_default_print) ND_DEFAULTPRINT(p, caplen); - return (BT_HDRLEN); - -trunc: - nd_print_trunc(ndo); - return (BT_HDRLEN); + return; } #endif diff --git a/print.c b/print.c index 844887e1..4303dce3 100644 --- a/print.c +++ b/print.c @@ -91,9 +91,6 @@ static const struct uint_printer uint_printers[] = { #ifdef DLT_LOOP { null_if_print, DLT_LOOP }, #endif -#ifdef DLT_BLUETOOTH_HCI_H4_WITH_PHDR - { bt_if_print, DLT_BLUETOOTH_HCI_H4_WITH_PHDR}, -#endif #ifdef DLT_LANE8023 { lane_if_print, DLT_LANE8023 }, #endif @@ -254,6 +251,9 @@ static const struct uint_printer uint_printers[] = { static const struct void_printer void_printers[] = { #ifdef DLT_APPLE_IP_OVER_IEEE1394 { ap1394_if_print, DLT_APPLE_IP_OVER_IEEE1394 }, +#endif +#ifdef DLT_BLUETOOTH_HCI_H4_WITH_PHDR + { bt_if_print, DLT_BLUETOOTH_HCI_H4_WITH_PHDR}, #endif { NULL, 0 }, };