#include "ws_symbol_export.h"
#include "ftypes/ftypes.h"
#include "packet_info.h"
Go to the source code of this file.
|
#define | MAX_DECODE_AS_PROMPT_LEN 200 |
|
#define | DECODE_AS_ENTRY "decode_as_entry" |
|
#define | DECODE_AS_NONE "(none)" |
|
#define | DECODE_AS_ENTRIES_FILE_NAME "decode_as_entries" |
|
|
typedef void(* | build_label_func) (packet_info *pinfo, gchar *result) |
|
typedef gpointer(* | build_valid_func) (packet_info *pinfo) |
|
typedef void(* | decode_as_add_to_list_func) (const gchar *table_name, const gchar *proto_name, gpointer value, gpointer user_data) |
|
typedef void(* | decode_as_populate_list_func) (const gchar *table_name, decode_as_add_to_list_func add_to_list, gpointer ui_element) |
|
typedef void(* | decode_as_free_func) (gpointer value) |
|
typedef bool(* | decode_as_reset_func) (const gchar *name, gconstpointer pattern) |
|
typedef bool(* | decode_as_change_func) (const gchar *name, gconstpointer pattern, gconstpointer handle, const gchar *list_name) |
|
typedef struct decode_as_value_s | decode_as_value_t |
|
typedef struct decode_as_s | decode_as_t |
|
|
WS_DLL_PUBLIC void | register_decode_as (decode_as_t *reg) |
|
WS_DLL_PUBLIC struct dissector_table * | register_decode_as_next_proto (int proto, const gchar *table_name, const gchar *ui_name, build_label_func label_func) |
|
WS_DLL_PUBLIC void | decode_as_default_populate_list (const gchar *table_name, decode_as_add_to_list_func add_to_list, gpointer ui_element) |
|
WS_DLL_PUBLIC bool | decode_as_default_reset (const gchar *name, gconstpointer pattern) |
|
WS_DLL_PUBLIC bool | decode_as_default_change (const gchar *name, gconstpointer pattern, gconstpointer handle, const gchar *list_name) |
|
void | load_decode_as_entries (void) |
|
WS_DLL_PUBLIC int | save_decode_as_entries (gchar **err) |
|
WS_DLL_PUBLIC void | decode_clear_all (void) |
|
WS_DLL_PUBLIC void | decode_cleanup (void) |
|
WS_DLL_PUBLIC void | decode_build_reset_list (const gchar *table_name, ftenum_t selector_type, gpointer key, gpointer value, gpointer user_data) |
|
◆ build_label_func
typedef void(* build_label_func) (packet_info *pinfo, gchar *result) |
callback function definition: return formatted label string
◆ build_valid_func
typedef gpointer(* build_valid_func) (packet_info *pinfo) |
callback function definition: return value used to pass to dissector table
◆ decode_as_change_func
typedef bool(* decode_as_change_func) (const gchar *name, gconstpointer pattern, gconstpointer handle, const gchar *list_name) |
callback function definition: Apply value to dissector table
◆ decode_as_reset_func
typedef bool(* decode_as_reset_func) (const gchar *name, gconstpointer pattern) |
callback function definition: Clear value from dissector table
◆ decode_as_t
Pulls everything together including the dissector (protocol) name, the "layer type" of the dissector, the dissector table name, the function pointer values as well as handlers for populating, applying and reseting the changes to the dissector table through Decode As GUI functionality. For dissector tables that are an integer or string type, the provided "default" handling functions should suffice.
◆ decode_as_value_t
Contains all of the function pointers (typically just 1) that provide the text explaining the name and use of the value field that will be passed to the dissector table to change the dissection output.
◆ decode_build_reset_list()
WS_DLL_PUBLIC void decode_build_reset_list |
( |
const gchar * |
table_name, |
|
|
ftenum_t |
selector_type, |
|
|
gpointer |
key, |
|
|
gpointer |
value, |
|
|
gpointer |
user_data |
|
) |
| |
This routine creates one entry in the list of protocol dissector that need to be reset. It is called by the g_hash_table_foreach routine once for each changed entry in a dissector table. Unfortunately it cannot delete the entry immediately as this screws up the foreach function, so it builds a list of dissectors to be reset once the foreach routine finishes.
- Parameters
-
table_name | The table name in which this dissector is found. |
selector_type | The type of the selector in that dissector table |
key | A pointer to the key for this entry in the dissector hash table. This is generally the numeric selector of the protocol, i.e. the ethernet type code, IP port number, TCP port number, etc. |
value | A pointer to the value for this entry in the dissector hash table. This is an opaque pointer that can only be handed back to routine in the file packet.c - but it's unused. |
user_data | Unused. |
◆ decode_cleanup()
WS_DLL_PUBLIC void decode_cleanup |
( |
void |
| ) |
|
Frees memory used by "decode as" routines. Called at program shutdown.
◆ decode_clear_all()
WS_DLL_PUBLIC void decode_clear_all |
( |
void |
| ) |
|
Clear all "decode as" settings.
◆ load_decode_as_entries()
void load_decode_as_entries |
( |
void |
| ) |
|
Reset the "decode as" entries and reload ones of the current profile. This is called by epan_load_settings(); programs should call that rather than individually calling the routines it calls.
◆ register_decode_as()
WS_DLL_PUBLIC void register_decode_as |
( |
decode_as_t * |
reg | ) |
|
register a "Decode As". A copy of the decode_as_t will be maintained by the decode_as module
◆ register_decode_as_next_proto()
WS_DLL_PUBLIC struct dissector_table* register_decode_as_next_proto |
( |
int |
proto, |
|
|
const gchar * |
table_name, |
|
|
const gchar * |
ui_name, |
|
|
build_label_func |
label_func |
|
) |
| |
Register a "Decode As" entry for the special case where there is no indication for the next protocol (such as port number etc.). For now, this will use a uint32 dissector table internally and assign all registered protocols to 0. The framework to do this can be kept internal to epan.
- Parameters
-
proto | The protocol ID to create the dissector table. |
table_name | The table name in which this dissector is found. |
ui_name | UI name for created dissector table. |
label_func | Pointer to optional function to generate prompt text for dissector. If NULL, "Next level protocol as" is used. |
- Returns
- Created dissector table with Decode As support
◆ save_decode_as_entries()
WS_DLL_PUBLIC int save_decode_as_entries |
( |
gchar ** |
err | ) |
|
Write out the "decode as" entries of the current profile.
◆ decode_as_list
WS_DLL_PUBLIC GList* decode_as_list |
List of registered decode_as_t structs. For UI code only. Should not be directly accessed by dissectors.