[PATCH 6/8] tcpdump: No loop monitor if reading from file

Sebastian Huber sebastian.huber at embedded-brains.de
Wed May 11 06:56:39 UTC 2022


Update #4650.
---
 freebsd/contrib/tcpdump/tcpdump.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/freebsd/contrib/tcpdump/tcpdump.c b/freebsd/contrib/tcpdump/tcpdump.c
index a02fa184..db5c9221 100644
--- a/freebsd/contrib/tcpdump/tcpdump.c
+++ b/freebsd/contrib/tcpdump/tcpdump.c
@@ -1232,8 +1232,8 @@ pcap_loop_monitor(rtems_task_argument arg)
 	rtems_task_exit();
 }
 
-static int
-pcap_loop_wrapper(pcap_t *pd, int cnt, pcap_handler cb, u_char *ud)
+static void
+pcap_create_loop_monitor(pcap_t *pd)
 {
 	rtems_status_code sc;
 	rtems_task_priority priority;
@@ -1248,9 +1248,8 @@ pcap_loop_wrapper(pcap_t *pd, int cnt, pcap_handler cb, u_char *ud)
 	    RTEMS_MINIMUM_STACK_SIZE, RTEMS_DEFAULT_MODES,
 	    RTEMS_DEFAULT_ATTRIBUTES, &id);
 	if (sc != RTEMS_SUCCESSFUL) {
-		fprintf(stderr, "tcpdump: cannot create helper thread: %s\n",
+		error("cannot create pcap loop monitor thread: %s\n",
 		    rtems_status_text(sc));
-		return (-1);
 	}
 
 	fprintf(stdout, "tcpdump: press <ENTER> or 'q' or 'Q' to quit\n");
@@ -1264,12 +1263,8 @@ pcap_loop_wrapper(pcap_t *pd, int cnt, pcap_handler cb, u_char *ud)
 
 	sc = rtems_event_transient_receive(RTEMS_WAIT, RTEMS_NO_TIMEOUT);
 	assert(sc == RTEMS_SUCCESSFUL);
-
-	return (pcap_loop(pd, cnt, cb, ud));
 }
 
-#define	pcap_loop(pd, cnt, cb, ud) pcap_loop_wrapper(pd, cnt, cb, ud)
-
 static void
 destroy_pcap_dumper(void *arg)
 {
@@ -2211,6 +2206,11 @@ main(int argc, char **argv)
 #endif	/* HAVE_CAPSICUM */
 
 	do {
+#ifdef __rtems__
+		if (RFileName == NULL) {
+			pcap_create_loop_monitor(pd);
+		}
+#endif /* __rtems__ */
 		status = pcap_loop(pd, cnt, callback, pcap_userdata);
 		if (WFileName == NULL) {
 			/*
-- 
2.35.3



More information about the devel mailing list