]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-pktap.c
Add EXTRACT_ calls.
[tcpdump] / print-pktap.c
index 7144f3c6e9657b851ad4f302c94ecf56f48467bf..1d5c7647c3ac0a22a419ac330b320834be5f2d68 100644 (file)
@@ -76,8 +76,8 @@ pktap_header_print(netdissect_options *ndo, const u_char *bp, u_int length)
 
        hdr = (const pktap_header_t *)bp;
 
-       dlt = EXTRACT_LE_32BITS(&hdr->pkt_dlt);
-       hdrlen = EXTRACT_LE_32BITS(&hdr->pkt_len);
+       dlt = EXTRACT_LE_U_4(&hdr->pkt_dlt);
+       hdrlen = EXTRACT_LE_U_4(&hdr->pkt_len);
        dltname = pcap_datalink_val_to_name(dlt);
        if (!ndo->ndo_qflag) {
                ND_PRINT((ndo,"DLT %s (%d) len %d",
@@ -104,14 +104,15 @@ pktap_if_print(netdissect_options *ndo,
        u_int length = h->len;
        if_printer printer;
        const pktap_header_t *hdr;
+       struct pcap_pkthdr nhdr;
 
        if (caplen < sizeof(pktap_header_t) || length < sizeof(pktap_header_t)) {
                ND_PRINT((ndo, "[|pktap]"));
                return (0);
        }
        hdr = (const pktap_header_t *)p;
-       dlt = EXTRACT_LE_32BITS(&hdr->pkt_dlt);
-       hdrlen = EXTRACT_LE_32BITS(&hdr->pkt_len);
+       dlt = EXTRACT_LE_U_4(&hdr->pkt_dlt);
+       hdrlen = EXTRACT_LE_U_4(&hdr->pkt_len);
        if (hdrlen < sizeof(pktap_header_t)) {
                /*
                 * Claimed header length < structure length.
@@ -135,7 +136,7 @@ pktap_if_print(netdissect_options *ndo,
        caplen -= hdrlen;
        p += hdrlen;
 
-       rectype = EXTRACT_LE_32BITS(&hdr->pkt_rectype);
+       rectype = EXTRACT_LE_U_4(&hdr->pkt_rectype);
        switch (rectype) {
 
        case PKT_REC_NONE:
@@ -144,7 +145,10 @@ pktap_if_print(netdissect_options *ndo,
 
        case PKT_REC_PACKET:
                if ((printer = lookup_printer(dlt)) != NULL) {
-                       hdrlen += printer(ndo, h, p);
+                       nhdr = *h;
+                       nhdr.caplen = caplen;
+                       nhdr.len = length;
+                       hdrlen += printer(ndo, &nhdr, p);
                } else {
                        if (!ndo->ndo_eflag)
                                pktap_header_print(ndo, (const u_char *)hdr,