]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-802_15_4.c
Add '-Wunreachable-code-return' warning option in devel mode for cmake
[tcpdump] / print-802_15_4.c
index a5aa291ca77cf971aca13277869806cba2adee96..f9f05d2f3f5d20055042f2b5bc142b2d5dca34e4 100644 (file)
@@ -61,18 +61,18 @@ static const char *ftypes[] = {
 #define FC_ADDRESSING_MODE_SHORT       0x02
 #define FC_ADDRESSING_MODE_LONG                0x03
 
-u_int
-ieee802_15_4_if_print(netdissect_options *ndo,
-                      const struct pcap_pkthdr *h, const u_char *p)
+static u_int
+ieee802_15_4_print(netdissect_options *ndo,
+                   const u_char *p, u_int caplen)
 {
-       u_int caplen = h->caplen;
        u_int hdrlen;
        uint16_t fc;
        uint8_t seq;
        uint16_t panid = 0;
 
+       ndo->ndo_protocol = "802.15.4";
        if (caplen < 3) {
-               ND_PRINT("[|802.15.4]");
+               nd_print_trunc(ndo);
                return caplen;
        }
        hdrlen = 3;
@@ -98,7 +98,7 @@ ieee802_15_4_if_print(netdissect_options *ndo,
                         * the source and destination addresses be present,
                         * but the destination address is missing.
                         */
-                       ND_PRINT("[|802.15.4]");
+                       nd_print_trunc(ndo);
                        return hdrlen;
                }
                if (ndo->ndo_vflag)
@@ -110,7 +110,7 @@ ieee802_15_4_if_print(netdissect_options *ndo,
                return hdrlen;
        case FC_ADDRESSING_MODE_SHORT:
                if (caplen < 2) {
-                       ND_PRINT("[|802.15.4]");
+                       nd_print_trunc(ndo);
                        return hdrlen;
                }
                panid = EXTRACT_LE_U_2(p);
@@ -118,7 +118,7 @@ ieee802_15_4_if_print(netdissect_options *ndo,
                caplen -= 2;
                hdrlen += 2;
                if (caplen < 2) {
-                       ND_PRINT("[|802.15.4]");
+                       nd_print_trunc(ndo);
                        return hdrlen;
                }
                if (ndo->ndo_vflag)
@@ -129,7 +129,7 @@ ieee802_15_4_if_print(netdissect_options *ndo,
                break;
        case FC_ADDRESSING_MODE_LONG:
                if (caplen < 2) {
-                       ND_PRINT("[|802.15.4]");
+                       nd_print_trunc(ndo);
                        return hdrlen;
                }
                panid = EXTRACT_LE_U_2(p);
@@ -137,7 +137,7 @@ ieee802_15_4_if_print(netdissect_options *ndo,
                caplen -= 2;
                hdrlen += 2;
                if (caplen < 8) {
-                       ND_PRINT("[|802.15.4]");
+                       nd_print_trunc(ndo);
                        return hdrlen;
                }
                if (ndo->ndo_vflag)
@@ -170,7 +170,7 @@ ieee802_15_4_if_print(netdissect_options *ndo,
                         * PAN ID, fetched above.)
                         */
                        if (caplen < 2) {
-                               ND_PRINT("[|802.15.4]");
+                               nd_print_trunc(ndo);
                                return hdrlen;
                        }
                        panid = EXTRACT_LE_U_2(p);
@@ -179,7 +179,7 @@ ieee802_15_4_if_print(netdissect_options *ndo,
                        hdrlen += 2;
                }
                if (caplen < 2) {
-                       ND_PRINT("[|802.15.4]");
+                       nd_print_trunc(ndo);
                        return hdrlen;
                }
                if (ndo->ndo_vflag)
@@ -196,7 +196,7 @@ ieee802_15_4_if_print(netdissect_options *ndo,
                         * PAN ID, fetched above.)
                         */
                        if (caplen < 2) {
-                               ND_PRINT("[|802.15.4]");
+                               nd_print_trunc(ndo);
                                return hdrlen;
                        }
                        panid = EXTRACT_LE_U_2(p);
@@ -205,7 +205,7 @@ ieee802_15_4_if_print(netdissect_options *ndo,
                        hdrlen += 2;
                }
                if (caplen < 8) {
-                       ND_PRINT("[|802.15.4]");
+                       nd_print_trunc(ndo);
                        return hdrlen;
                }
                if (ndo->ndo_vflag)
@@ -221,3 +221,12 @@ ieee802_15_4_if_print(netdissect_options *ndo,
 
        return hdrlen;
 }
+
+/* For DLT_IEEE802_15_4 and DLT_IEEE802_15_4_NOFCS */
+u_int
+ieee802_15_4_if_print(netdissect_options *ndo,
+                      const struct pcap_pkthdr *h, const u_char *p)
+{
+       ndo->ndo_protocol = "802.15.4_if";
+       return ieee802_15_4_print(ndo, p, h->caplen);
+}