]> The Tcpdump Group git mirrors - tcpdump/commitdiff
PFLOG: Update the link-layer dissector to a void function
authorFrancois-Xavier Le Bail <[email protected]>
Thu, 6 Aug 2020 15:22:34 +0000 (17:22 +0200)
committerFrancois-Xavier Le Bail <[email protected]>
Thu, 6 Aug 2020 15:28:03 +0000 (17:28 +0200)
Moreover:
Use GET_U_1() when needed.
Remove trailing "_if" from the protocol name.

netdissect.h
print-pflog.c
print.c

index e39191a6dedd9313ec3c2cfe2f3ed3b6d9fddd98..efcf6633fac5b5ada76a80f46230ba674e438609 100644 (file)
@@ -509,7 +509,7 @@ extern void netanalyzer_if_print IF_PRINTER_ARGS;
 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;
index fc83a04b0c68b89fe99b9a3e2be0a793e82a9b34..679c2dbd5fe51867a2372d0fd92df15445708937 100644 (file)
@@ -104,7 +104,7 @@ pflog_print(netdissect_options *ndo, const struct pfloghdr *hdr)
            hdr->ifname);
 }
 
-u_int
+void
 pflog_if_print(netdissect_options *ndo, const struct pcap_pkthdr *h,
                const u_char *p)
 {
@@ -114,24 +114,27 @@ pflog_if_print(netdissect_options *ndo, const struct pcap_pkthdr *h,
        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 */
@@ -172,8 +175,10 @@ pflog_if_print(netdissect_options *ndo, const struct pcap_pkthdr *h,
                        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;
 }
diff --git a/print.c b/print.c
index 6b8931e0caf59ee2a80eee825bf23681a902ab25..4a03d6502f7ae6e72a438f6c96c1a248ecf8b06e 100644 (file)
--- a/print.c
+++ b/print.c
@@ -53,9 +53,6 @@ struct void_printer {
 };
 
 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 },
 };
 
@@ -197,6 +194,9 @@ static const struct void_printer void_printers[] = {
 #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