]> The Tcpdump Group git mirrors - tcpdump/commitdiff
Bluetooth: Update the link-layer dissector to a void function
authorFrancois-Xavier Le Bail <[email protected]>
Thu, 6 Feb 2020 19:27:06 +0000 (20:27 +0100)
committerFrancois-Xavier Le Bail <[email protected]>
Thu, 6 Feb 2020 19:41:36 +0000 (20:41 +0100)
Moreover:
Remove a useless ND_TCHECK_4 test (caplen tested before).
Remove a no longer used 'trunc' label.

netdissect.h
print-bt.c
print.c

index b796e224c62fe7b574ede0cd287aaacb37147868..4f3ba3906bde12bad8af5b087d8bc993c0407fd1 100644 (file)
@@ -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;
index 9b0859f9f7a7ab6ff40f6333189852185bb3bc75..d65a5ff820037b06de4af699f30371c809b86a2c 100644 (file)
@@ -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 844887e13906dc0d2596e5f5bc3cabb2c018a08f..4303dce3c45b8e85dca37f72c25357b61f5f3f2d 100644 (file)
--- 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 },
 };