]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-bt.c
remove redundant ND_TCHECK, let GET_ routines handle checks
[tcpdump] / print-bt.c
index 411642b48ca792a53fe55df26012ad4b650e9b51..438ff9561cbc4a6e975d6d0a7607b8016d971577 100644 (file)
@@ -46,30 +46,30 @@ 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;
        u_int caplen = h->caplen;
        const bluetooth_h4_header* hdr = (const bluetooth_h4_header*)p;
 
-       ndo->ndo_protocol = "bt_if";
-       if (caplen < BT_HDRLEN || length < BT_HDRLEN)
-               goto trunc;
+       ndo->ndo_protocol = "bluetooth";
+       nd_print_protocol(ndo);
+       if (caplen < BT_HDRLEN) {
+               ndo->ndo_ll_hdr_len += caplen;
+               nd_print_trunc(ndo);
+               return;
+       }
+       ndo->ndo_ll_hdr_len += 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,
-                        (EXTRACT_BE_U_4(hdr->direction)&0x1) ? "in" : "out");
+               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