The caplen and len of the packet it's printing must be reduced by the
length of the PPI header.
uint16_t len;
uint32_t dlt;
uint32_t hdrlen;
+ struct pcap_pkthdr nhdr;
if (caplen < sizeof(ppi_header_t)) {
ND_PRINT((ndo, "[|ppi]"));
p += len;
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)
ppi_header_print(ndo, (const u_char *)hdr, length + len);