Wireshark  4.3.0
The Wireshark network protocol analyzer
tap.h
Go to the documentation of this file.
1 
11 #ifndef __TAP_H__
12 #define __TAP_H__
13 
14 #include <epan/epan.h>
15 #include <epan/packet_info.h>
16 #include "ws_symbol_export.h"
17 
18 #ifdef __cplusplus
19 extern "C" {
20 #endif /* __cplusplus */
21 
25 typedef enum {
30 
31 typedef guint tap_flags_t;
32 
33 typedef void (*tap_reset_cb)(void *tapdata);
34 typedef tap_packet_status (*tap_packet_cb)(void *tapdata, packet_info *pinfo, epan_dissect_t *edt, const void *data, tap_flags_t flags);
35 typedef void (*tap_draw_cb)(void *tapdata);
36 typedef void (*tap_finish_cb)(void *tapdata);
37 
41 #define TL_REQUIRES_NOTHING 0x00000000
42 #define TL_REQUIRES_PROTO_TREE 0x00000001
43 #define TL_REQUIRES_COLUMNS 0x00000002
44 #define TL_REQUIRES_ERROR_PACKETS 0x00000004
47 #define TL_IS_DISSECTOR_HELPER 0x00000008
51 #define TL_IGNORE_DISPLAY_FILTER 0x00000010
52 #define TL_DISPLAY_FILTER_IGNORED 0x00100000
54 typedef struct {
55  void (*register_tap_listener)(void); /* routine to call to register tap listener */
56 } tap_plugin;
57 
59 WS_DLL_PUBLIC void tap_register_plugin(const tap_plugin *plug);
60 
61 /*
62  * Entry in the table of built-in taps to register.
63  */
64 typedef struct _tap_reg {
65  const char *cb_name;
66  void (*cb_func)(void);
67 } tap_reg_t;
68 
69 /*
70  * For all taps, call their register routines.
71  * Must be called after plugins_init(), if plugins are supported,
72  * and must be called only once in a program.
73  *
74  * XXX - should probably be handled by epan_init(), as the tap mechanism
75  * is part of libwireshark.
76  */
77 WS_DLL_PUBLIC void register_all_tap_listeners(tap_reg_t const *tap_reg_listeners);
78 
79 extern void tap_init(void);
80 
93 WS_DLL_PUBLIC int register_tap(const char *name);
94 
95 /* Gets a GList of the tap names */
96 WS_DLL_PUBLIC GList* get_tap_names(void);
97 
101 WS_DLL_PUBLIC int find_tap_id(const char *name);
102 
123 WS_DLL_PUBLIC void tap_queue_packet(int tap_id, packet_info *pinfo, const void *tap_specific_data);
124 
126 WS_DLL_PUBLIC void tap_build_interesting(epan_dissect_t *edt);
127 
132 extern void tap_queue_init(epan_dissect_t *edt);
133 
138 extern void tap_push_tapped_queue(epan_dissect_t *edt);
139 
144 WS_DLL_PUBLIC void reset_tap_listeners(void);
145 
153 WS_DLL_PUBLIC void draw_tap_listeners(gboolean draw_all);
154 
231 WS_DLL_PUBLIC GString *register_tap_listener(const char *tapname, void *tapdata,
232  const char *fstring, guint flags, tap_reset_cb tap_reset,
233  tap_packet_cb tap_packet, tap_draw_cb tap_draw,
234  tap_finish_cb tap_finish) G_GNUC_WARN_UNUSED_RESULT;
235 
237 WS_DLL_PUBLIC GString *set_tap_dfilter(void *tapdata, const char *fstring);
238 
240 WS_DLL_PUBLIC void tap_listeners_dfilter_recompile(void);
241 
243 WS_DLL_PUBLIC void remove_tap_listener(void *tapdata);
244 
249 WS_DLL_PUBLIC gboolean tap_listeners_require_dissection(void);
250 
255 WS_DLL_PUBLIC gboolean tap_listeners_require_columns(void);
256 
258 WS_DLL_PUBLIC gboolean have_tap_listener(int tap_id);
259 
261 WS_DLL_PUBLIC gboolean have_filtering_tap_listeners(void);
262 
266 WS_DLL_PUBLIC void tap_listeners_load_field_references(epan_dissect_t *edt);
267 
273 WS_DLL_PUBLIC guint union_of_tap_listener_flags(void);
274 
289 WS_DLL_PUBLIC const void *fetch_tapped_data(int tap_id, int idx);
290 
293 extern void tap_cleanup(void);
294 
295 #ifdef __cplusplus
296 }
297 #endif /* __cplusplus */
298 
299 #endif /* __TAP_H__ */
Definition: packet_info.h:44
Definition: tap.h:64
Definition: epan_dissect.h:28
Definition: tap.h:54
WS_DLL_PUBLIC const void * fetch_tapped_data(int tap_id, int idx)
Definition: tap.c:403
WS_DLL_PUBLIC void tap_listeners_dfilter_recompile(void)
Definition: tap.c:638
WS_DLL_PUBLIC void reset_tap_listeners(void)
Definition: tap.c:435
void tap_queue_init(epan_dissect_t *edt)
Definition: tap.c:286
WS_DLL_PUBLIC gboolean tap_listeners_require_dissection(void)
Definition: tap.c:696
WS_DLL_PUBLIC int register_tap(const char *name)
Definition: tap.c:177
WS_DLL_PUBLIC void tap_build_interesting(epan_dissect_t *edt)
Definition: tap.c:263
WS_DLL_PUBLIC void draw_tap_listeners(gboolean draw_all)
Definition: tap.c:458
WS_DLL_PUBLIC void tap_register_plugin(const tap_plugin *plug)
WS_DLL_PUBLIC void remove_tap_listener(void *tapdata)
Definition: tap.c:663
void tap_cleanup(void)
Definition: tap.c:793
WS_DLL_PUBLIC gboolean have_tap_listener(int tap_id)
Definition: tap.c:736
void tap_push_tapped_queue(epan_dissect_t *edt)
Definition: tap.c:304
WS_DLL_PUBLIC guint union_of_tap_listener_flags(void)
Definition: tap.c:782
WS_DLL_PUBLIC void tap_queue_packet(int tap_id, packet_info *pinfo, const void *tap_specific_data)
Definition: tap.c:229
tap_packet_status
Definition: tap.h:25
@ TAP_PACKET_REDRAW
Definition: tap.h:27
@ TAP_PACKET_FAILED
Definition: tap.h:28
@ TAP_PACKET_DONT_REDRAW
Definition: tap.h:26
WS_DLL_PUBLIC int find_tap_id(const char *name)
Definition: tap.c:499
WS_DLL_PUBLIC gboolean tap_listeners_require_columns(void)
Definition: tap.c:716
WS_DLL_PUBLIC gboolean have_filtering_tap_listeners(void)
Definition: tap.c:754
WS_DLL_PUBLIC GString * register_tap_listener(const char *tapname, void *tapdata, const char *fstring, guint flags, tap_reset_cb tap_reset, tap_packet_cb tap_packet, tap_draw_cb tap_draw, tap_finish_cb tap_finish) G_GNUC_WARN_UNUSED_RESULT
Definition: tap.c:536
WS_DLL_PUBLIC void tap_listeners_load_field_references(epan_dissect_t *edt)
Definition: tap.c:766
WS_DLL_PUBLIC GString * set_tap_dfilter(void *tapdata, const char *fstring)
Definition: tap.c:587