Wireshark 5.1.0
The Wireshark network protocol analyzer
Loading...
Searching...
No Matches
color_filters.h
Go to the documentation of this file.
1/* color_filters.h
2 * Definitions for color filters
3 *
4 * Wireshark - Network traffic analyzer
5 * By Gerald Combs <gerald@wireshark.org>
6 * Copyright 1998 Gerald Combs
7 *
8 * SPDX-License-Identifier: GPL-2.0-or-later
9 */
10#pragma once
11#include <glib.h>
12#include <string.h>
13
14#include "ws_symbol_export.h"
15
16#include <wsutil/color.h>
18
19#ifdef __cplusplus
20extern "C" {
21#endif /* __cplusplus */
22
23struct epan_dissect;
24
25#define COLORING_RULES_FILE_NAME "coloring_rules.jsonc"
26/* Legacy name */
27#define COLORFILTERS_FILE_NAME "colorfilters"
28
29#define CONVERSATION_COLOR_PREFIX "___conversation_color_filter___"
33
37typedef struct _color_filter {
38 char *filter_name; /* name of the filter */
39 char *filter_text; /* text of the filter expression */
40 color_t bg_color; /* background color for packets that match */
41 color_t fg_color; /* foreground color for packets that match */
42 bool enabled; /* set if the filter is enabled */
43
44 /* only used inside of color_filters.c */
45 struct epan_dfilter *c_colorfilter; /* compiled filter expression */
46
47 /* only used outside of color_filters.c (beside init) */
49
55static inline bool
56color_filter_is_tmp(const color_filter_t *colorf)
57{
58 return strncmp(colorf->filter_name, CONVERSATION_COLOR_PREFIX,
59 strlen(CONVERSATION_COLOR_PREFIX)) == 0;
60}
61
68typedef void (*color_filter_add_cb_func)(color_filter_t *colorf, void *user_data);
69
77WS_DLL_PUBLIC bool color_filters_init(char** err_msg, color_filter_add_cb_func add_cb, const char* app_env_var_prefix);
78
86WS_DLL_PUBLIC bool color_filters_reload(char** err_msg, color_filter_add_cb_func add_cb, const char* app_env_var_prefix);
87
91WS_DLL_PUBLIC void color_filters_cleanup(void);
92
98WS_DLL_PUBLIC bool color_filters_used(void);
99
105WS_DLL_PUBLIC bool tmp_color_filters_used(void);
106
113WS_DLL_PUBLIC char*
114color_filters_get_tmp(uint8_t filt_nr);
115
124WS_DLL_PUBLIC bool
125color_filters_set_tmp(uint8_t filt_nr, const char *filter, bool disabled, char **err_msg);
126
133WS_DLL_PUBLIC const color_filter_t *
134color_filters_tmp_color(uint8_t filter_num);
135
142WS_DLL_PUBLIC bool
143color_filters_reset_tmp(char **err_msg);
144
154WS_DLL_PUBLIC void color_filters_prime_edt(struct epan_dissect *edt);
155
166WS_DLL_PUBLIC bool
167color_filters_use_hfid(int hfid);
168
179WS_DLL_PUBLIC bool
180color_filters_use_proto(int proto_id);
181
192WS_DLL_PUBLIC const color_filter_t *
194 wmem_allocator_t *scope, wmem_list_t **matches, bool include_disabled);
195
202WS_DLL_PUBLIC void color_filters_clone(void *user_data, color_filter_add_cb_func add_cb);
203
213WS_DLL_PUBLIC bool color_filters_import(const char *path, void *user_data, char **err_msg, color_filter_add_cb_func add_cb);
214
224WS_DLL_PUBLIC bool color_filters_read_globals(void *user_data, char** err_msg, color_filter_add_cb_func add_cb, const char* app_env_var_prefix);
225
226
234WS_DLL_PUBLIC bool color_filters_apply(GSList *tmp_cfl, GSList *edit_cfl, char** err_msg);
235
245WS_DLL_PUBLIC bool color_filters_write(GSList *cfl, const char* app_name, const char* app_env_var_prefix, char** err_msg);
246
257WS_DLL_PUBLIC bool color_filters_export(const char *path, GSList *cfl, bool only_selected, const char* app_name, char** err_msg);
258
269WS_DLL_PUBLIC color_filter_t *color_filter_new(
270 const char *name, const char *filter_string,
271 color_t *bg_color, color_t *fg_color, bool enabled);
272
278WS_DLL_PUBLIC void color_filter_delete(color_filter_t *colorf);
279
285WS_DLL_PUBLIC void color_filter_list_delete(GSList **cfl);
286
287#ifdef __cplusplus
288}
289#endif /* __cplusplus */
290
291/*
292 * Editor modelines - https://www.wireshark.org/tools/modelines.html
293 *
294 * Local variables:
295 * c-basic-offset: 4
296 * tab-width: 8
297 * indent-tabs-mode: nil
298 * End:
299 *
300 * vi: set shiftwidth=4 tabstop=8 expandtab:
301 * :indentSize=4:tabSize=8:noTabs=true:
302 */
WS_DLL_PUBLIC bool color_filters_read_globals(void *user_data, char **err_msg, color_filter_add_cb_func add_cb, const char *app_env_var_prefix)
Read filters from the global filter file (not the users file).
Definition color_filters.c:1028
WS_DLL_PUBLIC void color_filters_clone(void *user_data, color_filter_add_cb_func add_cb)
Clone the currently active filter list.
Definition color_filters.c:451
void(* color_filter_add_cb_func)(color_filter_t *colorf, void *user_data)
A color filter was added (while importing). (color_filters.c calls this for every filter coming in).
Definition color_filters.h:68
WS_DLL_PUBLIC bool color_filters_use_hfid(int hfid)
Check if any of the enabled compiled color filters of the current filter list depend on a given heade...
Definition color_filters.c:650
WS_DLL_PUBLIC bool color_filters_reload(char **err_msg, color_filter_add_cb_func add_cb, const char *app_env_var_prefix)
Reload the color filters.
Definition color_filters.c:417
WS_DLL_PUBLIC bool color_filters_import(const char *path, void *user_data, char **err_msg, color_filter_add_cb_func add_cb)
Load filters (import) from some other filter file.
Definition color_filters.c:1075
struct _color_filter color_filter_t
Data for a color filter.
WS_DLL_PUBLIC bool color_filters_init(char **err_msg, color_filter_add_cb_func add_cb, const char *app_env_var_prefix)
Init the color filters (incl. initial read from file).
Definition color_filters.c:407
WS_DLL_PUBLIC const color_filter_t * color_filters_tmp_color(uint8_t filter_num)
Get a temporary color filter.
Definition color_filters.c:229
WS_DLL_PUBLIC bool tmp_color_filters_used(void)
Are there any temporary coloring filters used?
Definition color_filters.c:610
WS_DLL_PUBLIC void color_filters_prime_edt(struct epan_dissect *edt)
Prime the epan_dissect_t with all the compiled color filters of the current filter list.
Definition color_filters.c:629
WS_DLL_PUBLIC bool color_filters_set_tmp(uint8_t filt_nr, const char *filter, bool disabled, char **err_msg)
Set the filter string of a temporary color filter.
Definition color_filters.c:176
WS_DLL_PUBLIC void color_filter_delete(color_filter_t *colorf)
Delete a single color filter (g_free'ed).
Definition color_filters.c:261
WS_DLL_PUBLIC void color_filter_list_delete(GSList **cfl)
Delete a filter list including all entries.
Definition color_filters.c:280
WS_DLL_PUBLIC bool color_filters_used(void)
Check if color filters are currently used.
Definition color_filters.c:604
WS_DLL_PUBLIC bool color_filters_apply(GSList *tmp_cfl, GSList *edit_cfl, char **err_msg)
Apply a changed filter list.
Definition color_filters.c:568
WS_DLL_PUBLIC bool color_filters_use_proto(int proto_id)
Check if any of the enabled compiled color filters of the current filter list depend on any field in ...
Definition color_filters.c:673
WS_DLL_PUBLIC void color_filters_cleanup(void)
Cleanup remaining color filter zombies.
Definition color_filters.c:429
WS_DLL_PUBLIC bool color_filters_write(GSList *cfl, const char *app_name, const char *app_env_var_prefix, char **err_msg)
Save filters in users filter file.
Definition color_filters.c:1218
WS_DLL_PUBLIC char * color_filters_get_tmp(uint8_t filt_nr)
Get the filter string of a temporary color filter.
Definition color_filters.c:152
WS_DLL_PUBLIC bool color_filters_export(const char *path, GSList *cfl, bool only_selected, const char *app_name, char **err_msg)
Save filters (export) to some other filter file.
Definition color_filters.c:1265
WS_DLL_PUBLIC bool color_filters_reset_tmp(char **err_msg)
Reset the temporary color filters.
Definition color_filters.c:246
WS_DLL_PUBLIC const color_filter_t * color_filters_colorize_packet_all(struct epan_dissect *edt, wmem_allocator_t *scope, wmem_list_t **matches, bool include_disabled)
Colorize a packet with ALL matching filters.
Definition color_filters.c:682
WS_DLL_PUBLIC color_filter_t * color_filter_new(const char *name, const char *filter_string, color_t *bg_color, color_t *fg_color, bool enabled)
Create a new color filter (g_malloc'ed).
Definition color_filters.c:84
struct _wmem_list_t wmem_list_t
Opaque type representing a scoped, doubly-linked list in the wmem system.
Definition wmem_list.h:42
struct _wmem_allocator_t wmem_allocator_t
Definition wmem_core.h:44
Data for a color filter.
Definition color_filters.h:37
RGB color representation with 16-bit precision per channel.
Definition color.h:27
The compiled display filter object passed back to the user.
Definition dfilter-int.h:46
Holds all state for the dissection of a single byte array, including session, buffer,...
Definition epan_dissect.h:28