extern void netanalyzer_transparent_if_print IF_PRINTER_ARGS;
extern void nflog_if_print IF_PRINTER_ARGS;
extern void null_if_print IF_PRINTER_ARGS;
-extern u_int pflog_if_print IF_PRINTER_ARGS;
+extern void pflog_if_print IF_PRINTER_ARGS;
extern void pktap_if_print IF_PRINTER_ARGS;
extern void ppi_if_print IF_PRINTER_ARGS;
extern void ppp_bsdos_if_print IF_PRINTER_ARGS;
hdr->ifname);
}
-u_int
+void
pflog_if_print(netdissect_options *ndo, const struct pcap_pkthdr *h,
const u_char *p)
{
const struct pfloghdr *hdr;
uint8_t af;
- ndo->ndo_protocol = "pflog_if";
+ ndo->ndo_protocol = "pflog";
/* check length */
if (caplen < sizeof(uint8_t)) {
nd_print_trunc(ndo);
- return (caplen);
+ ndo->ndo_ll_hdr_len += h->caplen;
+ return;
}
#define MIN_PFLOG_HDRLEN 45
hdr = (const struct pfloghdr *)p;
- if (hdr->length < MIN_PFLOG_HDRLEN) {
+ if (GET_U_1(&hdr->length) < MIN_PFLOG_HDRLEN) {
ND_PRINT("[pflog: invalid header length!]");
- return (hdr->length); /* XXX: not really */
+ ndo->ndo_ll_hdr_len += GET_U_1(&hdr->length); /* XXX: not really */
+ return;
}
hdrlen = BPF_WORDALIGN(hdr->length);
if (caplen < hdrlen) {
nd_print_trunc(ndo);
- return (hdrlen); /* XXX: true? */
+ ndo->ndo_ll_hdr_len += hdrlen; /* XXX: true? */
+ return;
}
/* print what we know */
ND_DEFAULTPRINT(p, caplen);
}
- return (hdrlen);
+ ndo->ndo_ll_hdr_len += hdrlen;
+ return;
trunc:
nd_print_trunc(ndo);
- return (hdrlen);
+ ndo->ndo_ll_hdr_len += hdrlen;
+ return;
}
};
static const struct uint_printer uint_printers[] = {
-#if defined(DLT_PFLOG) && defined(HAVE_NET_IF_PFLOG_H)
- { pflog_if_print, DLT_PFLOG },
-#endif
{ NULL, 0 },
};
#ifdef DLT_LOOP
{ null_if_print, DLT_LOOP },
#endif
+#if defined(DLT_PFLOG) && defined(HAVE_NET_IF_PFLOG_H)
+ { pflog_if_print, DLT_PFLOG },
+#endif
#ifdef DLT_PKTAP
{ pktap_if_print, DLT_PKTAP },
#endif