diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2022-05-11 08:14:56 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2022-05-12 07:52:01 +0200 |
commit | 47ec4b85e5ed45b88ae20fcff0a67a7afae1d060 (patch) | |
tree | 575db8686ee97ad75f81bec69c95eb73501e6cb6 | |
parent | tcpdump: Close pcap dumper at program exit (diff) | |
download | rtems-libbsd-47ec4b85e5ed45b88ae20fcff0a67a7afae1d060.tar.bz2 |
tcpdump: No loop monitor if reading from file
Update #4649.
-rw-r--r-- | freebsd/contrib/tcpdump/tcpdump.c | 16 |
1 files 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) { /* |