aboutsummaryrefslogtreecommitdiffstats
path: root/epan/tap.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2018-07-20 17:07:19 -0700
committerGuy Harris <guy@alum.mit.edu>2018-07-21 00:51:13 +0000
commit9b731e2b320ca936499bf7840a7b2ac5c2b64e05 (patch)
treeb8ab320176662c385a6d544e505eee173e18ffc1 /epan/tap.c
parent66935d8baadfe7dd62b4e8d4412a47f311ead7f5 (diff)
Add a tap "finish" callback, called when a listener is removed.
Change-Id: Ic6c23dbd39d1adf8f730f1c866e409f731947475 Reviewed-on: https://code.wireshark.org/review/28786 Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'epan/tap.c')
-rw-r--r--epan/tap.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/epan/tap.c b/epan/tap.c
index 5442a159ad..f71652da38 100644
--- a/epan/tap.c
+++ b/epan/tap.c
@@ -89,6 +89,7 @@ typedef struct _tap_listener_t {
tap_reset_cb reset;
tap_packet_cb packet;
tap_draw_cb draw;
+ tap_finish_cb finish;
} tap_listener_t;
static volatile tap_listener_t *tap_listener_queue=NULL;
@@ -465,7 +466,8 @@ DIAG_ON(cast-qual)
*/
GString *
register_tap_listener(const char *tapname, void *tapdata, const char *fstring,
- guint flags, tap_reset_cb reset, tap_packet_cb packet, tap_draw_cb draw)
+ guint flags, tap_reset_cb reset, tap_packet_cb packet,
+ tap_draw_cb draw, tap_finish_cb finish)
{
volatile tap_listener_t *tl;
int tap_id;
@@ -502,6 +504,7 @@ register_tap_listener(const char *tapname, void *tapdata, const char *fstring,
tl->reset=reset;
tl->packet=packet;
tl->draw=draw;
+ tl->finish=finish;
tl->next=tap_listener_queue;
tap_listener_queue=tl;
@@ -613,6 +616,8 @@ remove_tap_listener(void *tapdata)
}
}
+ if(tl->finish)
+ tl->finish(tapdata);
free_tap_listener(tl);
}