git: 0daba7847e2e - stable/13 - tcpdump: decode packets on pfsync interfaces

Kristof Provost kp at FreeBSD.org
Tue Jul 20 14:51:27 UTC 2021


The branch stable/13 has been updated by kp:

URL: https://cgit.FreeBSD.org/src/commit/?id=0daba7847e2eb63147642f3f492b4846767208e4

commit 0daba7847e2eb63147642f3f492b4846767208e4
Author:     Luiz Otavio O Souza <loos at FreeBSD.org>
AuthorDate: 2021-07-12 17:15:15 +0000
Commit:     Kristof Provost <kp at FreeBSD.org>
CommitDate: 2021-07-20 06:48:02 +0000

    tcpdump: decode packets on pfsync interfaces
    
    Reviewed by:    kp, scottl
    Obtained from:  pfsense
    MFC after:      1 week
    Differential Revision:  https://reviews.freebsd.org/D31153
    
    (cherry picked from commit 3f240bdf3652ea823af34b0f399e2c8be5a6320a)
---
 contrib/tcpdump/netdissect.h   |  1 +
 contrib/tcpdump/print-pfsync.c | 15 +++++++--------
 contrib/tcpdump/print.c        |  3 +++
 3 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/contrib/tcpdump/netdissect.h b/contrib/tcpdump/netdissect.h
index 20b5ef63668c..8612e11c3c7e 100644
--- a/contrib/tcpdump/netdissect.h
+++ b/contrib/tcpdump/netdissect.h
@@ -571,6 +571,7 @@ extern int ospf_print_grace_lsa(netdissect_options *, const uint8_t *, u_int);
 extern int ospf_print_te_lsa(netdissect_options *, const uint8_t *, u_int);
 extern void otv_print(netdissect_options *, const u_char *, u_int);
 extern void pfsync_ip_print(netdissect_options *, const u_char *, u_int);
+extern u_int pfsync_if_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *);
 extern void pgm_print(netdissect_options *, const u_char *, u_int, const u_char *);
 extern void pim_print(netdissect_options *, const u_char *, u_int, const u_char *);
 extern void pimv1_print(netdissect_options *, const u_char *, u_int);
diff --git a/contrib/tcpdump/print-pfsync.c b/contrib/tcpdump/print-pfsync.c
index 62913337e527..dc1cd039f5b0 100644
--- a/contrib/tcpdump/print-pfsync.c
+++ b/contrib/tcpdump/print-pfsync.c
@@ -57,30 +57,29 @@ static void	print_src_dst(netdissect_options *,
 		    const struct pfsync_state_peer *, uint8_t);
 static void	print_state(netdissect_options *, struct pfsync_state *);
 
-#ifdef notyet
-void
-pfsync_if_print(u_char *user, const struct pcap_pkthdr *h,
+u_int
+pfsync_if_print(netdissect_options *ndo, const struct pcap_pkthdr *h,
     register const u_char *p)
 {
 	u_int caplen = h->caplen;
 
-	ts_print(&h->ts);
+	ts_print(ndo, &h->ts);
 
 	if (caplen < PFSYNC_HDRLEN) {
 		ND_PRINT((ndo, "[|pfsync]"));
 		goto out;
 	}
 
-	pfsync_print((struct pfsync_header *)p,
+	pfsync_print(ndo, (struct pfsync_header *)p,
 	    p + sizeof(struct pfsync_header),
 	    caplen - sizeof(struct pfsync_header));
 out:
-	if (xflag) {
-		default_print((const u_char *)p, caplen);
+	if (ndo->ndo_xflag) {
+		hex_print(ndo, "\n\t", p, caplen);
 	}
 	safeputchar(ndo, '\n');
+	return (caplen);
 }
-#endif /* notyet */
 
 void
 pfsync_ip_print(netdissect_options *ndo , const u_char *bp, u_int len)
diff --git a/contrib/tcpdump/print.c b/contrib/tcpdump/print.c
index c76f34411778..e5436f4d738f 100644
--- a/contrib/tcpdump/print.c
+++ b/contrib/tcpdump/print.c
@@ -121,6 +121,9 @@ static const struct printer printers[] = {
 #endif
 #if defined(DLT_PFLOG) && defined(HAVE_NET_IF_PFLOG_H)
 	{ pflog_if_print,	DLT_PFLOG },
+#endif
+#if defined(DLT_PFSYNC) && defined(HAVE_NET_PFVAR_H)
+	{ pfsync_if_print,	DLT_PFSYNC},
 #endif
 	{ token_if_print,	DLT_IEEE802 },
 	{ fddi_if_print,	DLT_FDDI },


More information about the dev-commits-src-all mailing list