Wireshark 4.7.0
The Wireshark network protocol analyzer
Loading...
Searching...
No Matches
funnel.h
Go to the documentation of this file.
1
13#pragma once
14#include <wireshark.h>
15#include <epan/stat_groups.h>
16
17#ifdef __cplusplus
18extern "C" {
19#endif /* __cplusplus */
20
21typedef struct _funnel_ops_id_t funnel_ops_id_t; /* Opaque pointer to ops instance */
23
24typedef void (*text_win_close_cb_t)(void*);
25
26typedef void (*funnel_dlg_cb_t)(char** user_input, void* data);
27typedef void (*funnel_dlg_cb_data_free_t)(void* data);
28
29typedef bool (*funnel_bt_cb_t)(funnel_text_window_t* tw, void* data);
30
31typedef void (* funnel_menu_callback)(void *);
32typedef void (* funnel_menu_callback_data_free)(void *);
33
37typedef struct _funnel_bt_t {
39 funnel_bt_cb_t func;
40 void* data;
41 void (*free_fcn)(void*);
42 void (*free_data_fcn)(void*);
44
45
47struct progdlg;
48
49
53typedef struct _funnel_ops_t {
62 funnel_text_window_t* (*new_text_window)(funnel_ops_id_t *ops_id, const char* label);
63
69 void (*set_text)(funnel_text_window_t* win, const char* text);
70
76 void (*append_text)(funnel_text_window_t* win, const char* text);
77
83 void (*prepend_text)(funnel_text_window_t* win, const char* text);
84
90
96 const char* (*get_text)(funnel_text_window_t* win);
97
104 void (*set_close_cb)(funnel_text_window_t* win, text_win_close_cb_t cb, void* data);
105
111 void (*set_editable)(funnel_text_window_t* win, bool editable);
112
118
125 void (*add_button)(funnel_text_window_t* win, funnel_bt_t* cb, const char* label);
126
138 const char* title,
139 const char** field_names,
140 const char** field_values,
141 funnel_dlg_cb_t dlg_cb,
142 void* data,
143 funnel_dlg_cb_data_free_t dlg_cb_data_free);
144
148 void (*close_dialogs)(void);
149
155
160 void (*copy_to_clipboard)(GString *str);
161
167 const char* (*get_filter)(funnel_ops_id_t *ops_id);
168
174 void (*set_filter)(funnel_ops_id_t *ops_id, const char* filter);
175
181 char* (*get_color_filter_slot)(uint8_t filt_nr);
182
188 void (*set_color_filter_slot)(uint8_t filt_nr, const char* filter);
189
198 bool (*open_file)(funnel_ops_id_t *ops_id, const char* fname, const char* filter, char** error);
199
205
211
217
223
229 bool (*browser_open_url)(const char *url);
230
235 void (*browser_open_data_file)(const char *filename);
236
246 struct progdlg* (*new_progress_window)(funnel_ops_id_t *ops_id, const char* label, const char* task, bool terminate_is_stop, bool *stop_flag);
247
254 void (*update_progress)(struct progdlg* dlg, float pr, const char* task);
255
260 void (*destroy_progress_window)(struct progdlg* dlg);
262
268WS_DLL_PUBLIC const funnel_ops_t* funnel_get_funnel_ops(void);
269
275WS_DLL_PUBLIC bool funnel_menu_registered(void);
276
287WS_DLL_PUBLIC void funnel_register_menu(const char *name,
289 funnel_menu_callback callback,
290 void *callback_data,
291 funnel_menu_callback_data_free callback_data_free,
292 bool retap);
293
299void funnel_deregister_menus(funnel_menu_callback callback);
300
301typedef void (*funnel_registration_cb_t)(const char *name,
303 funnel_menu_callback callback,
304 void *callback_data,
305 bool retap);
306typedef void (*funnel_deregistration_cb_t)(funnel_menu_callback callback);
307
314WS_DLL_PUBLIC void funnel_reload_menus(funnel_deregistration_cb_t d_cb,
315 funnel_registration_cb_t r_cb);
316
324WS_DLL_PUBLIC void funnel_cleanup(void);
325
329typedef void (* funnel_packet_menu_callback)(void *, GPtrArray*);
330
334typedef void (*funnel_registration_packet_cb_t)(const char *name,
335 const char *required_fields,
337 void *callback_data,
338 bool retap);
339
346
356WS_DLL_PUBLIC void funnel_register_packet_menu(const char *name,
357 const char *required_fields,
359 void *callback_data,
360 bool retap);
361
367WS_DLL_PUBLIC bool funnel_packet_menus_modified(void);
368
369/*
370 * The functions below allow registering a funnel "console". A console is just a GUI
371 * dialog that has an input text widget, an output text widget, and for each user
372 * generated input it calls a callback to generate the corresponding output.
373 * Very simple... each console type has a name and an entry in the Tools menu to invoke it.
374 * Mainly used to present a Lua console to allow inspecting Lua internals and run Lua
375 * code using the embedded interpreter.
376 */
377
382typedef int (*funnel_console_eval_cb_t)(const char *console_input,
383 char **error_ptr,
384 char **error_hint,
385 void *callback_data);
386
390typedef void (*funnel_console_open_cb_t)(void (*print_func)(const char *, void *), void *print_data, void *callback_data);
391
395typedef void (*funnel_console_close_cb_t)(void *callback_data);
396
400typedef void (*funnel_console_data_free_cb_t)(void *callback_data);
401
405WS_DLL_PUBLIC void funnel_register_console_menu(const char *name,
409 void *callback_data,
411
415typedef void (*funnel_registration_console_cb_t)(const char *name,
419 void *callback_data);
420
427WS_DLL_PUBLIC void funnel_ops_init(const funnel_ops_t* ops, funnel_registration_cb_t r_cb, funnel_registration_console_cb_t rconsole_cb);
428
429#ifdef __cplusplus
430}
431#endif /* __cplusplus */
void(* funnel_packet_menu_callback)(void *, GPtrArray *)
Definition funnel.h:329
struct _funnel_ops_t funnel_ops_t
Vtable of GUI operations provided to the Lua funnel API, abstracting all UI interactions behind funct...
WS_DLL_PUBLIC bool funnel_menu_registered(void)
Checks if a menu is registered.
Definition funnel.c:303
WS_DLL_PUBLIC void funnel_register_console_menu(const char *name, funnel_console_eval_cb_t eval_cb, funnel_console_open_cb_t open_cb, funnel_console_close_cb_t close_cb, void *callback_data, funnel_console_data_free_cb_t free_data)
Definition funnel.c:253
void(* funnel_registration_console_cb_t)(const char *name, funnel_console_eval_cb_t eval_cb, funnel_console_open_cb_t open_cb, funnel_console_close_cb_t close_cb, void *callback_data)
Definition funnel.h:415
WS_DLL_PUBLIC void funnel_cleanup(void)
Cleans up resources used by the funnel subsystem.
Definition funnel.c:308
WS_DLL_PUBLIC bool funnel_packet_menus_modified(void)
Returns whether the packet menus have been modified since they were last registered.
Definition funnel.c:245
void(* funnel_console_open_cb_t)(void(*print_func)(const char *, void *), void *print_data, void *callback_data)
Definition funnel.h:390
WS_DLL_PUBLIC void funnel_register_menu(const char *name, register_stat_group_t group, funnel_menu_callback callback, void *callback_data, funnel_menu_callback_data_free callback_data_free, bool retap)
Registers a menu callback.
Definition funnel.c:115
WS_DLL_PUBLIC void funnel_register_packet_menu(const char *name, const char *required_fields, funnel_packet_menu_callback callback, void *callback_data, bool retap)
Entry point for Lua code to register a packet menu.
Definition funnel.c:191
WS_DLL_PUBLIC void funnel_ops_init(const funnel_ops_t *ops, funnel_registration_cb_t r_cb, funnel_registration_console_cb_t rconsole_cb)
Initialize the funnel operations. This is done outside of epan_init() because the funnel operations d...
Definition funnel.c:295
void funnel_deregister_menus(funnel_menu_callback callback)
Deregisters a menu callback.
Definition funnel.c:140
void(* funnel_console_data_free_cb_t)(void *callback_data)
Definition funnel.h:400
struct _funnel_bt_t funnel_bt_t
Represents a button attached to a funnel text window, bundling its callback, data,...
WS_DLL_PUBLIC const funnel_ops_t * funnel_get_funnel_ops(void)
Get the funnel operations.
Definition funnel.c:75
WS_DLL_PUBLIC void funnel_register_all_packet_menus(funnel_registration_packet_cb_t r_cb)
Entry point for Wireshark GUI to obtain all registered packet menus.
Definition funnel.c:230
WS_DLL_PUBLIC void funnel_reload_menus(funnel_deregistration_cb_t d_cb, funnel_registration_cb_t r_cb)
Reloads the menus by deregistering and registering them again using provided callbacks.
Definition funnel.c:166
int(* funnel_console_eval_cb_t)(const char *console_input, char **error_ptr, char **error_hint, void *callback_data)
Definition funnel.h:382
void(* funnel_console_close_cb_t)(void *callback_data)
Definition funnel.h:395
void(* funnel_registration_packet_cb_t)(const char *name, const char *required_fields, funnel_packet_menu_callback callback, void *callback_data, bool retap)
Definition funnel.h:334
enum register_stat_group_e register_stat_group_t
Represents a button attached to a funnel text window, bundling its callback, data,...
Definition funnel.h:37
void(* free_fcn)(void *)
Definition funnel.h:41
funnel_text_window_t * tw
Definition funnel.h:38
void(* free_data_fcn)(void *)
Definition funnel.h:42
void * data
Definition funnel.h:40
funnel_bt_cb_t func
Definition funnel.h:39
Definition funnel_statistics.cpp:250
Vtable of GUI operations provided to the Lua funnel API, abstracting all UI interactions behind funct...
Definition funnel.h:53
void(* close_dialogs)(void)
Closes all open funnel dialogs.
Definition funnel.h:148
void(* reload_packets)(funnel_ops_id_t *ops_id)
Reloads the current capture file from disk.
Definition funnel.h:204
bool(* browser_open_url)(const char *url)
Opens a URL in the system's default web browser.
Definition funnel.h:229
void(* destroy_progress_window)(struct progdlg *dlg)
Destroys a progress dialog and releases its resources.
Definition funnel.h:260
void(* browser_open_data_file)(const char *filename)
Opens a local data file in the system's default application.
Definition funnel.h:235
void(* set_text)(funnel_text_window_t *win, const char *text)
Replaces the entire contents of a text window with the given text.
Definition funnel.h:69
void(* add_button)(funnel_text_window_t *win, funnel_bt_t *cb, const char *label)
Adds a button to a text window.
Definition funnel.h:125
funnel_ops_id_t * ops_id
Definition funnel.h:54
void(* retap_packets)(funnel_ops_id_t *ops_id)
Triggers a retap of all packets, re-running tap listeners without full redissection.
Definition funnel.h:154
void(* set_color_filter_slot)(uint8_t filt_nr, const char *filter)
Assigns a display filter string to a color filter slot.
Definition funnel.h:188
void(* set_close_cb)(funnel_text_window_t *win, text_win_close_cb_t cb, void *data)
Registers a callback to be invoked when a text window is closed.
Definition funnel.h:104
void(* new_dialog)(funnel_ops_id_t *ops_id, const char *title, const char **field_names, const char **field_values, funnel_dlg_cb_t dlg_cb, void *data, funnel_dlg_cb_data_free_t dlg_cb_data_free)
Opens a modal input dialog with a set of labeled fields.
Definition funnel.h:137
void(* copy_to_clipboard)(GString *str)
Copies the contents of a GString to the system clipboard.
Definition funnel.h:160
void(* reload_lua_plugins)(funnel_ops_id_t *ops_id)
Reloads all Lua plugins and redissects packets.
Definition funnel.h:216
void(* destroy_text_window)(funnel_text_window_t *win)
Destroys a text window and releases its associated resources.
Definition funnel.h:117
void(* prepend_text)(funnel_text_window_t *win, const char *text)
Prepends text to the beginning of a text window's contents.
Definition funnel.h:83
void(* set_filter)(funnel_ops_id_t *ops_id, const char *filter)
Applies a new display filter string to the packet list.
Definition funnel.h:174
void(* clear_text)(funnel_text_window_t *win)
Clears all text content from a text window.
Definition funnel.h:89
void(* redissect_packets)(funnel_ops_id_t *ops_id)
Forces a full redissection of all packets in the current capture.
Definition funnel.h:210
void(* set_editable)(funnel_text_window_t *win, bool editable)
Sets whether a text window's content is user-editable.
Definition funnel.h:111
void(* apply_filter)(funnel_ops_id_t *ops_id)
Applies the currently set display filter to the packet list.
Definition funnel.h:222
void(* update_progress)(struct progdlg *dlg, float pr, const char *task)
Updates the progress bar and task description of a progress dialog.
Definition funnel.h:254
void(* append_text)(funnel_text_window_t *win, const char *text)
Appends text to the end of a text window's contents.
Definition funnel.h:76
bool(* open_file)(funnel_ops_id_t *ops_id, const char *fname, const char *filter, char **error)
Opens a capture file, optionally applying a display filter.
Definition funnel.h:198
Definition tap-funnel.c:21
Definition print.c:40
Define the structure describing a progress dialog.
Definition progress_frame.h:33