X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/fb2479d733dbe8a991d11909b319341f7db62ab1..009bd798b51d25d1b7f0dc7629fe7350eff9cf73:/print-802_15_4.c?ds=sidebyside diff --git a/print-802_15_4.c b/print-802_15_4.c index a5aa291c..f9f05d2f 100644 --- a/print-802_15_4.c +++ b/print-802_15_4.c @@ -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); +}