Wireshark  2.9.0-477-g68ec514b
The Wireshark network protocol analyzer
Classes | Macros | Typedefs | Functions | Variables
decode_as.h File Reference
#include "ws_symbol_export.h"
#include "ftypes/ftypes.h"
#include "packet_info.h"

Go to the source code of this file.

Classes

struct  decode_as_value_s
 
struct  decode_as_s
 

Macros

#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"
 

Typedefs

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 gboolean(* decode_as_reset_func) (const gchar *name, gconstpointer pattern)
 
typedef gboolean(* decode_as_change_func) (const gchar *name, gconstpointer pattern, gpointer handle, gchar *list_name)
 
typedef struct decode_as_value_s decode_as_value_t
 
typedef struct decode_as_s decode_as_t
 

Functions

WS_DLL_PUBLIC void register_decode_as (decode_as_t *reg)
 
WS_DLL_PUBLIC struct dissector_tableregister_decode_as_next_proto (int proto, const gchar *title, 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 gboolean decode_as_default_reset (const gchar *name, gconstpointer pattern)
 
WS_DLL_PUBLIC gboolean decode_as_default_change (const gchar *name, gconstpointer pattern, gpointer handle, 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_build_reset_list (const gchar *table_name, ftenum_t selector_type, gpointer key, gpointer value _U_, gpointer user_data _U_)
 

Variables

WS_DLL_PUBLIC GList * decode_as_list
 

Typedef Documentation

typedef void(* build_label_func) (packet_info *pinfo, gchar *result)

callback function definition: return formatted label string

typedef gpointer(* build_valid_func) (packet_info *pinfo)

callback function definition: return value used to pass to dissector table

typedef gboolean(* decode_as_change_func) (const gchar *name, gconstpointer pattern, gpointer handle, gchar *list_name)

callback function definition: Apply value to dissector table

typedef gboolean(* decode_as_reset_func) (const gchar *name, gconstpointer pattern)

callback function definition: Clear value from dissector table

Function Documentation

WS_DLL_PUBLIC void decode_build_reset_list ( const gchar *  table_name,
ftenum_t  selector_type,
gpointer  key,
gpointer value  _U_,
gpointer user_data  _U_ 
)

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_nameThe table name in which this dissector is found.
keyA 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.
selector_typeThe type of the selector in that dissector table
valueA 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_dataUnused.
WS_DLL_PUBLIC void decode_clear_all ( void  )

Clear all "decode as" settings.

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.

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

WS_DLL_PUBLIC struct dissector_table* register_decode_as_next_proto ( int  proto,
const gchar *  title,
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
protoThe protocol ID to create the dissector table.
titleThe table name in which this dissector is found.
table_nameThe table name in which this dissector is found.
ui_nameUI name for created dissector table.
label_funcPointer 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
WS_DLL_PUBLIC int save_decode_as_entries ( gchar **  err)

Write out the "decode as" entries of the current profile.

Variable Documentation

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.