wireshark/wsutil/filter_files.h
João Valverde bc64efa538 dfilter: Replace macro UAT config file and update GUI
Remove the UAT macro usage. The UAT API is nifty for dissectors
but clunky for everything else.

This allows using a hash table to store macros, that is the natural
data structure for the use case (and faster).

It also allows using the existing filter GUI dialog, adapted for
display filter macros. The difference isn't huge but it's better
and less limited than the more generic UAT dialog, with room for
improvement. Changing the UAT dialog for filter specific
use cases is difficult.

The config file is renamed to "dmacros" and uses the same format
as "dfilter", that is more amenable and forgiving for hand-editing
than the UAT storage format.

There is some logic to convert the "dfilter_macros" UAT config
file to a "dmacros" filter config file, for backward-compatibility.
The conversion is only done if there is no existing "dmacros" file
in the profile folder.
2023-11-08 11:45:54 +00:00

107 lines
2.1 KiB
C

/** @file
*
* Declarations of routines for reading and writing the filters file.
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#ifndef __FILTER_FILES_H__
#define __FILTER_FILES_H__
#include <wireshark.h>
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/*
* Capture filter file name.
*/
#define CFILTER_FILE_NAME "cfilters"
/*
* Display filter file name.
*/
#define DFILTER_FILE_NAME "dfilters"
/*
* Display filter file name.
*/
#define DMACROS_FILE_NAME "dmacros"
/*
* Filter lists.
*/
typedef enum {
CFILTER_LIST, /* capture filter list - saved */
DFILTER_LIST, /* display filter list - saved */
DMACROS_LIST, /* display filter macro list - saved */
} filter_list_type_t;
/*
* Item in a list of filters.
*/
typedef struct {
char *name; /* filter name */
char *strval; /* filter expression */
} filter_def;
typedef struct {
filter_list_type_t type;
GList *list;
} filter_list_t;
/*
* Read in a list of filters.
*
* On error, report the error via the UI.
*/
WS_DLL_PUBLIC
WS_RETNONNULL
filter_list_t *ws_filter_list_read(filter_list_type_t list_type);
/*
* Add a new filter to the end of a list.
* Returns a pointer to the newly-added entry.
*/
WS_DLL_PUBLIC
void ws_filter_list_add(filter_list_t *list, const char *name,
const char *expression);
/*
* Find a filter in a list by name.
* Returns a pointer to the found entry.
*/
WS_DLL_PUBLIC
GList *ws_filter_list_find(filter_list_t *list, const char *name);
/*
* Remove a filter from a list.
*/
WS_DLL_PUBLIC
bool ws_filter_list_remove(filter_list_t *list, const char *name);
/*
* Write out a list of filters.
*
* On error, report the error via the UI.
*/
WS_DLL_PUBLIC
void ws_filter_list_write(filter_list_t *list);
/*
* Free all filter lists
*/
WS_DLL_PUBLIC
void ws_filter_list_free(filter_list_t *list);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __FILTER_FILES_H__ */