34#define hi_nibble(b) (((b) & 0xf0) >> 4)
35#define lo_nibble(b) ((b) & 0x0f)
39#define BYTES_ARE_IN_FRAME(offset, captured_len, len) \
40 ((unsigned)(offset) + (unsigned)(len) > (unsigned)(offset) && \
41 (unsigned)(offset) + (unsigned)(len) <= (unsigned)(captured_len))
46#define STRING_CASE_SENSITIVE 0
47#define STRING_CASE_INSENSITIVE 1
91typedef int (*dissector_t)(tvbuff_t *,
packet_info *, proto_tree *,
void *);
94typedef int (*dissector_cb_t)(tvbuff_t *,
packet_info *, proto_tree *,
void *,
void *);
104 proto_tree *tree,
void *);
114typedef void (*DATFunc) (
const char *table_name,
ftenum_t selector_type,
115 void *key,
void *value,
void *user_data);
116typedef void (*DATFunc_handle) (
const char *table_name,
void *value,
118typedef void (*DATFunc_table) (
const char *table_name,
const char *ui_name,
197 void *user_data, GCompareFunc compare_key_func);
214 const char *ui_name,
const int proto,
const ftenum_t type,
const int param);
227 const char *ui_name,
const int proto, GHashFunc hash_func, GEqualFunc key_equal_func,
228 GDestroyNotify key_destroy_func);
236 const char *alias_name);
277 dissector_handle_t handle);
285 dissector_handle_t handle);
292 dissector_handle_t handle);
300 dissector_handle_t handle);
307 dissector_handle_t handle);
314 dissector_handle_t handle);
328 dissector_handle_t handle);
362 const uint32_t uint_val, tvbuff_t *tvb,
packet_info *pinfo, proto_tree *tree);
381 const uint32_t uint_val, tvbuff_t *tvb,
packet_info *pinfo, proto_tree *tree,
const bool add_proto_name,
void *data);
391 dissector_table_t
const sub_dissectors,
const uint32_t uint_val);
401 const char *name,
const uint32_t uint_val);
410 dissector_handle_t handle);
417 dissector_handle_t handle);
424 dissector_handle_t handle);
457 const char*
string, tvbuff_t* tvb,
packet_info* pinfo, proto_tree* tree,
const bool add_proto_name,
void* data);
467 dissector_table_t sub_dissectors,
const char *
string);
477 const char *name,
const char *
string);
486 dissector_handle_t handle);
496 dissector_table_t sub_dissectors,
void *key);
515 dissector_handle_t handle);
533 guid_key* guid_val, tvbuff_t *tvb,
packet_info *pinfo, proto_tree *tree,
const bool add_proto_name,
void *data);
542 dissector_handle_t handle);
552 dissector_table_t
const sub_dissectors,
guid_key* guid_val);
573 tvbuff_t *tvb,
packet_info *pinfo, proto_tree *tree,
const bool add_proto_name,
void *data);
603 dissector_handle_t handle);
610 dissector_handle_t handle);
638WS_DEPRECATED_X(
"Use register_decode_as instead")
706typedef void (*DATFunc_heur) (
const char *table_name,
708typedef void (*DATFunc_heur_table) (
const char *table_name,
721 DATFunc_heur func,
void *user_data);
732 void *user_data, GCompareFunc compare_key_func);
781 const char *display_name,
const char *internal_name,
const int proto,
heuristic_enable_e enable);
802 dissector_t dissector,
const int proto);
814 const char *description, dissector_t dissector,
const int proto);
827 dissector_cb_t dissector,
const int proto,
void *cb_data);
843 const dissector_handle_t handle);
853 const dissector_handle_t handle);
862 const dissector_handle_t handle);
872 const dissector_handle_t handle);
897 const int parent_proto);
907 const dissector_handle_t handle);
916 const dissector_handle_t handle);
951 dissector_t dissector,
const int proto,
const char *name);
968 const int proto,
const char* name,
const char* description);
983 dissector_cb_t dissector,
const int proto,
void *cb_data);
1005 packet_info *pinfo, proto_tree *tree,
void *data);
1020WS_DLL_PUBLIC
int call_dissector(dissector_handle_t handle, tvbuff_t *tvb,
1047 packet_info *pinfo, proto_tree *tree,
void *data);
1057 packet_info *pinfo, proto_tree *tree,
void *data);
1100WS_DLL_PUBLIC
void set_actual_length(tvbuff_t *tvb,
const unsigned specified_len);
1387 GArray *wanted_hfids);
struct epan_dissect epan_dissect_t
Opaque type representing a single packet dissection context.
Definition epan.h:62
enum ftenum ftenum_t
Convenience typedef for ftenum.
Definition ftypes.h:190
DIAG_OFF_PEDANTIC struct _frame_data frame_data
Frame data structure.
WS_DLL_PUBLIC void dissector_table_foreach(const char *table_name, DATFunc func, void *user_data)
Definition packet.c:2628
WS_DLL_PUBLIC void register_postdissector(dissector_handle_t handle)
Register a postdissector; the argument is the dissector handle for it.
Definition packet.c:4177
WS_DLL_PUBLIC bool has_heur_dissector_list(const char *name)
Check if a heuristic dissector list of the given name exists.
Definition packet.c:2958
WS_DLL_PUBLIC int call_dissector_only(dissector_handle_t handle, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
Definition packet.c:3686
WS_DLL_PUBLIC const char * dissector_handle_get_protocol_long_name(const dissector_handle_t handle)
Return the long (full) protocol name for a dissector handle.
Definition packet.c:3385
void deregister_dissector(const char *name)
Deregister a previously registered dissector.
Definition packet.c:3670
WS_DLL_PUBLIC void dissector_add_uint_with_preference(const char *name, const uint32_t pattern, dissector_handle_t handle)
Add a uint-keyed entry to a dissector table and automatically register a corresponding user preferenc...
Definition packet.c:1502
WS_DLL_PUBLIC dissector_handle_t dissector_get_default_string_handle(const char *name, const char *string)
Definition packet.c:2126
WS_DLL_PUBLIC dissector_handle_t create_dissector_handle_with_data(dissector_cb_t dissector, const int proto, void *cb_data)
Create an anonymous, unregistered callback-style dissector handle.
Definition packet.c:3582
WS_DLL_PUBLIC void increment_dissection_depth_by_n(packet_info *pinfo, unsigned n)
Definition packet.c:4288
WS_DLL_PUBLIC dissector_handle_t dtbl_entry_get_handle(dtbl_entry_t *dtbl_entry)
Return the currently active dissector handle for a dissector table entry.
Definition packet.c:2309
WS_DLL_PUBLIC dissector_handle_t dissector_get_payload_handle(dissector_table_t const dissector_table)
Return the currently active dissector handle for a payload dissector table.
Definition packet.c:2303
WS_DLL_PUBLIC void set_actual_length(tvbuff_t *tvb, const unsigned specified_len)
Given a tvbuff, and a length from a packet header, adjust the length of the tvbuff to reflect the spe...
Definition packet.c:338
WS_DLL_PUBLIC heur_dtbl_entry_t * find_heur_dissector_by_unique_short_name(const char *short_name)
Definition packet.c:2962
WS_DLL_PUBLIC tvbuff_t * get_data_source_tvb(const struct data_source *src)
Return the tvbuff associated with a data source.
Definition packet.c:494
void dissector_table_foreach_changed(const char *table_name, DATFunc func, void *user_data)
Definition packet.c:2705
WS_DLL_PUBLIC dissector_handle_t dissector_get_default_uint_handle(const char *name, const uint32_t uint_val)
Definition packet.c:1820
WS_DLL_PUBLIC dissector_handle_t find_dissector_add_dependency(const char *name, const int parent_proto)
Find a registered dissector by name and record a protocol dependency.
Definition packet.c:3453
WS_DLL_PUBLIC dissector_handle_t register_dissector(const char *name, dissector_t dissector, const int proto)
Register a new dissector with the global dissector registry.
Definition packet.c:3624
void deregister_dissector_table(const char *name)
Deregister the dissector table by table name.
Definition packet.c:2896
void packet_cleanup(void)
Clean up the packet dissection engine.
Definition packet.c:310
WS_DLL_PUBLIC void dissector_add_uint(const char *name, const uint32_t pattern, dissector_handle_t handle)
Add a uint-keyed entry to a dissector table.
Definition packet.c:1349
WS_DLL_PUBLIC dissector_handle_t dissector_get_guid_handle(dissector_table_t const sub_dissectors, guid_key *guid_val)
Definition packet.c:2265
WS_DLL_PUBLIC void set_postdissector_wanted_hfids(dissector_handle_t handle, GArray *wanted_hfids)
Definition packet.c:4187
WS_DLL_PUBLIC dissector_handle_t register_dissector_with_data(const char *name, dissector_cb_t dissector, const int proto, void *cb_data)
Register a new dissector that carries an opaque callback pointer.
Definition packet.c:3644
WS_DLL_PUBLIC void dissector_change_uint(const char *abbrev, const uint32_t pattern, dissector_handle_t handle)
Override the dissector for a uint value in a dissector table.
Definition packet.c:1648
WS_DLL_PUBLIC heur_dissector_list_t find_heur_dissector_list(const char *name)
Definition packet.c:2952
WS_DLL_PUBLIC void dissector_delete_string(const char *name, const char *pattern, dissector_handle_t handle)
Remove the entry for a specific string value from a dissector table.
Definition packet.c:1938
WS_DLL_PUBLIC ftenum_t dissector_table_get_type(dissector_table_t dissector_table)
Return the selector field type of a dissector table.
Definition packet.c:2500
void call_all_postdissectors(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
Invoke all registered postdissectors on the current frame.
Definition packet.c:4241
WS_DLL_PUBLIC void dissector_dump_decodes(void)
Dump layer/selector/dissector records in a fashion similar to the proto_registrar_dump_* routines.
Definition packet.c:4006
void packet_all_tables_sort_handles(void)
Sort the dissector handles in all dissector tables.
Definition packet.c:2337
WS_DLL_PUBLIC void register_postseq_cleanup_routine(void(*func)(void))
Allow protocols to register a "cleanup" routine to be run after the initial sequential run through th...
Definition packet.c:419
WS_DLL_PUBLIC int dissector_try_uint(dissector_table_t sub_dissectors, const uint32_t uint_val, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
Try to dissect using a uint-keyed dissector table entry.
Definition packet.c:1798
WS_DLL_PUBLIC const char * dissector_handle_get_dissector_name(const dissector_handle_t handle)
Return the registered name of a dissector from its handle.
Definition packet.c:3466
void deregister_heur_dissector_list(const char *name)
Definition packet.c:3359
WS_DLL_PUBLIC void dissector_dump_heur_decodes(void)
For each heuristic dissector table, dump list of dissectors (filter_names) for that table.
Definition packet.c:3327
WS_DLL_PUBLIC dissector_handle_t dissector_get_custom_table_handle(dissector_table_t sub_dissectors, void *key)
Definition packet.c:2169
WS_DLL_PUBLIC GList * get_dissector_names(void)
Return a GList of all registered dissector name strings.
Definition packet.c:3436
WS_DLL_PUBLIC const char * dissector_handle_get_description(const dissector_handle_t handle)
Return the user-visible description for a dissector handle.
Definition packet.c:3407
WS_DLL_PUBLIC void dissector_delete_uint(const char *name, const uint32_t pattern, dissector_handle_t handle)
Remove the entry for a specific uint value from a dissector table.
Definition packet.c:1531
bool dissector_table_supports_decode_as(dissector_table_t dissector_table)
Return whether a dissector table supports Decode As.
Definition packet.c:2520
WS_DLL_PUBLIC void decrement_dissection_depth(packet_info *pinfo)
Decrement the dissection depth.
Definition packet.c:4306
WS_DLL_PUBLIC void register_init_routine(void(*func)(void))
Definition packet.c:352
struct file_data_s file_data_t
Holds the data passed to the file dissector for dissection of a capture file as a whole.
WS_DLL_PUBLIC dissector_handle_t dissector_get_uint_handle(dissector_table_t const sub_dissectors, const uint32_t uint_val)
Definition packet.c:1808
WS_DLL_PUBLIC void heur_dissector_delete(const char *name, heur_dissector_t dissector, const int proto)
Definition packet.c:3054
WS_DLL_PUBLIC void set_data_source_name(packet_info *pinfo, struct data_source *src, const char *name)
Definition packet.c:452
WS_DLL_PUBLIC bool register_depend_dissector(const char *parent, const char *dependent)
Definition packet.c:3806
struct _guid_key guid_key
Lookup key for GUID-indexed dissector tables, combining a GUID with an optional version field.
void deregister_postdissector(dissector_handle_t handle)
Deregister a postdissector. Not for use in (post)dissectors or applications; only to be used by libwi...
Definition packet.c:4205
WS_DLL_PUBLIC void register_cleanup_routine(void(*func)(void))
Definition packet.c:358
WS_DLL_PUBLIC dissector_handle_t create_dissector_handle(dissector_t dissector, const int proto)
Create an anonymous, unregistered dissector handle.
Definition packet.c:3564
WS_DLL_PUBLIC const char * dissector_handle_get_pref_suffix(const dissector_handle_t handle)
Return the preferences suffix string for a dissector handle.
Definition packet.c:3475
WS_DLL_PUBLIC int dissector_try_string_with_data(dissector_table_t sub_dissectors, const char *string, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, const bool add_proto_name, void *data)
Look for a given string in a given dissector table and, if found, call the dissector with the argumen...
Definition packet.c:2055
WS_DLL_PUBLIC const char * dissector_handle_get_protocol_short_name(const dissector_handle_t handle)
Return the short protocol name for a dissector handle.
Definition packet.c:3396
WS_DLL_PUBLIC bool dissector_is_string_changed(dissector_table_t const subdissectors, const char *string)
Return whether a string dissector table entry has been overridden.
Definition packet.c:2041
WS_DLL_PUBLIC void dissector_delete_uint_range(const char *abbrev, range_t *range, dissector_handle_t handle)
Remove a range of uint-keyed entries from a dissector table.
Definition packet.c:1554
WS_DLL_PUBLIC void remove_last_data_source(packet_info *pinfo)
Remove the most recently added data source from a packet.
Definition packet.c:467
WS_DLL_PUBLIC void dissector_change_string(const char *name, const char *pattern, dissector_handle_t handle)
Override the dissector for a string value in a dissector table.
Definition packet.c:1963
WS_DLL_PUBLIC ftenum_t get_dissector_table_selector_type(const char *name)
Return the field type of the selector for a dissector table.
Definition packet.c:2923
WS_DLL_PUBLIC void register_final_registration_routine(void(*func)(void))
Definition packet.c:600
WS_DLL_PUBLIC void heur_dissector_table_foreach(const char *table_name, DATFunc_heur func, void *user_data)
Definition packet.c:3224
WS_DLL_PUBLIC void dissector_add_custom_table_handle(const char *name, void *pattern, dissector_handle_t handle)
Add an entry to a "custom" dissector table.
Definition packet.c:2142
WS_DLL_PUBLIC void dissector_add_uint_range(const char *abbrev, range_t *range, dissector_handle_t handle)
Add a range of uint-keyed entries to a dissector table.
Definition packet.c:1367
void dissector_table_allow_decode_as(dissector_table_t dissector_table)
Mark a dissector table as supporting Decode As.
Definition packet.c:2514
WS_DLL_PUBLIC void dissector_change_payload(const char *abbrev, dissector_handle_t handle)
Override the payload dissector for an FT_NONE dissector table.
Definition packet.c:2288
heuristic_enable_e
Controls whether a heuristic dissector is active.
Definition packet.h:109
WS_DLL_PUBLIC void dissector_dump_dissector_tables(void)
Print information about all registered dissector tables to standard output.
Definition packet.c:4110
struct frame_data_s frame_data_t
Holds the data passed to the frame dissector for dissection of a single packet frame.
WS_DLL_PUBLIC struct data_source * get_data_source_by_name(const packet_info *pinfo, const char *name)
Definition packet.c:506
WS_DLL_PUBLIC dissector_handle_t find_dissector(const char *name)
Find a registered dissector by name.
Definition packet.c:3447
WS_DLL_PUBLIC int call_dissector(dissector_handle_t handle, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
Call a dissector through its handle, falling back to the data dissector.
Definition packet.c:3717
void dissect_file(struct epan_dissect *edt, wtap_rec *rec, frame_data *fd, column_info *cinfo)
Dissectors should never modify the file data.
Definition packet.c:778
void init_dissection(const char *app_env_var_prefix)
Initialize all data structures used for dissection.
Definition packet.c:372
WS_DLL_PUBLIC void increment_dissection_depth(packet_info *pinfo)
Definition packet.c:4295
WS_DLL_PUBLIC void dissector_all_tables_foreach_table(DATFunc_table func, void *user_data, GCompareFunc compare_key_func)
Definition packet.c:2760
WS_DLL_PUBLIC void dissector_all_heur_tables_foreach_table(DATFunc_heur_table func, void *user_data, GCompareFunc compare_key_func)
Definition packet.c:3280
void packet_init(void)
Initialize the packet dissection engine.
Definition packet.c:229
void dissect_record(struct epan_dissect *edt, int file_type_subtype, wtap_rec *rec, frame_data *fd, column_info *cinfo)
Dissectors should never modify the record data.
Definition packet.c:617
WS_DLL_PUBLIC void dissector_reset_string(const char *name, const char *pattern)
Reset a string dissector table entry to its initial registered value.
Definition packet.c:2009
WS_DLL_PUBLIC char * get_data_source_description(const struct data_source *src)
Return the description of a data source.
Definition packet.c:476
WS_DLL_PUBLIC GSList * dissector_table_get_dissector_handles(dissector_table_t dissector_table)
Return the list of all dissector handles registered with a table.
Definition packet.c:2453
WS_DLL_PUBLIC void dissector_all_tables_foreach_changed(DATFunc func, void *user_data)
Definition packet.c:2689
WS_DLL_PUBLIC void dissector_reset_payload(const char *name)
Reset an FT_NONE payload dissector table to its initial registered value.
Definition packet.c:2294
WS_DLL_PUBLIC dissector_handle_t create_dissector_handle_with_name_and_description(dissector_t dissector, const int proto, const char *name, const char *description)
Definition packet.c:3541
WS_DLL_PUBLIC int dissector_handle_get_protocol_index(const dissector_handle_t handle)
Return the protocol index for a dissector handle.
Definition packet.c:3418
WS_DLL_PUBLIC void mark_frame_as_depended_upon(frame_data *fd, uint32_t frame_num)
Mark another frame as depended upon by the current frame.
Definition packet.c:576
WS_DLL_PUBLIC dissector_table_t register_dissector_table(const char *name, const char *ui_name, const int proto, const ftenum_t type, const int param)
a protocol uses the function to register a sub-dissector table
Definition packet.c:2783
WS_DLL_PUBLIC bool dissector_is_uint_changed(dissector_table_t const sub_dissectors, const uint32_t uint_val)
Return whether a uint dissector table entry has been overridden.
Definition packet.c:1726
WS_DLL_PUBLIC void set_data_source_media_type(struct data_source *src, data_source_media_type_e media_type)
Definition packet.c:459
WS_DLL_PUBLIC depend_dissector_list_t find_depend_dissector_list(const char *name)
Definition packet.c:3839
WS_DLL_PUBLIC const char * heur_dissector_list_get_description(heur_dissector_list_t list)
Definition packet.c:3370
void cleanup_dissection(void)
Free data structures allocated for dissection.
Definition packet.c:397
void packet_cache_proto_handles(void)
Cache protocol handles for fast lookup during dissection.
Definition packet.c:253
WS_DLL_PUBLIC void dissector_delete_guid(const char *name, guid_key *guid_val, dissector_handle_t handle)
Delete a GUID from a dissector table.
Definition packet.c:1569
WS_DLL_PUBLIC void register_dissector_table_alias(dissector_table_t dissector_table, const char *alias_name)
Definition packet.c:2878
WS_DLL_PUBLIC bool postdissectors_want_hfids(void)
Return whether any postdissector has requested specific hfids.
Definition packet.c:4252
WS_DLL_PUBLIC bool deregister_depend_dissector(const char *parent, const char *dependent)
Definition packet.c:3829
WS_DLL_PUBLIC void decrement_dissection_depth_by_n(packet_info *pinfo, unsigned n)
Decrement the dissection depth by a value.
Definition packet.c:4300
WS_DLL_PUBLIC int call_data_dissector(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
Call a data dissector.
Definition packet.c:3724
WS_DLL_PUBLIC struct data_source * add_new_data_source(packet_info *pinfo, tvbuff_t *tvb, const char *name)
Definition packet.c:437
WS_DLL_PUBLIC void dissector_add_guid(const char *name, guid_key *guid_val, dissector_handle_t handle)
Add an entry to a guid dissector table.
Definition packet.c:2179
WS_DLL_PUBLIC int call_dissector_with_data(dissector_handle_t handle, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
Call a dissector through a handle and if no dissector was found pass it over to the "data" dissector ...
Definition packet.c:3700
WS_DLL_PUBLIC void call_heur_dissector_direct(heur_dtbl_entry_t *heur_dtbl_entry, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
Definition packet.c:3733
WS_DLL_PUBLIC void dissector_add_string(const char *name, const char *pattern, dissector_handle_t handle)
Add a string-keyed entry to a dissector table.
Definition packet.c:1876
void prime_epan_dissect_with_postdissector_wanted_hfids(epan_dissect_t *edt)
Prime an epan_dissect_t with all hfids requested by postdissectors.
Definition packet.c:4267
WS_DLL_PUBLIC void heur_dissector_add(const char *name, heur_dissector_t dissector, const char *display_name, const char *internal_name, const int proto, heuristic_enable_e enable)
Definition packet.c:2968
WS_DLL_PUBLIC void postseq_cleanup_all_protocols(void)
Call all the registered "postseq_cleanup" routines.
Definition packet.c:427
WS_DLL_PUBLIC dissector_handle_t register_dissector_with_description(const char *name, const char *description, dissector_t dissector, const int proto)
Register a new dissector with a custom user-visible description.
Definition packet.c:3634
bool have_postdissector(void)
Return whether any postdissectors are registered.
Definition packet.c:4223
WS_DLL_PUBLIC dissector_handle_t create_dissector_handle_with_name(dissector_t dissector, const int proto, const char *name)
Create a named, unregistered dissector handle.
Definition packet.c:3556
WS_DLL_PUBLIC struct data_source * get_data_source_by_tvb(const packet_info *pinfo, const tvbuff_t *tvb)
Definition packet.c:524
bool(* heur_dissector_t)(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *)
Definition packet.h:103
WS_DLL_PUBLIC dissector_handle_t dissector_table_get_dissector_handle(dissector_table_t dissector_table, const char *description)
Look up a dissector handle in a table by its description string.
Definition packet.c:2483
void free_data_sources(packet_info *pinfo)
Free up a frame's list of data sources.
Definition packet.c:567
WS_DLL_PUBLIC void dissector_add_for_decode_as(const char *name, dissector_handle_t handle)
Register a dissector handle as a candidate for Decode As on a table.
Definition packet.c:2356
void dissector_table_allow_decode_as_internal(dissector_table_t dissector_table)
Mark a dissector table as supporting Decode As.
Definition packet.c:2506
WS_DLL_PUBLIC heur_dissector_list_t register_heur_dissector_list(const char *name, const int proto)
Definition packet.c:3353
WS_DLL_PUBLIC const char * get_data_source_name(const struct data_source *src)
Return the display name of a data source.
Definition packet.c:485
void final_registration_all_protocols(void)
Call all the registered "final_registration" routines.
Definition packet.c:608
WS_DLL_PUBLIC int dissector_try_uint_with_data(dissector_table_t sub_dissectors, const uint32_t uint_val, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, const bool add_proto_name, void *data)
Try to dissect using a uint-keyed dissector table entry, with additional options and caller data.
Definition packet.c:1741
data_source_media_type_e
MIME media type descriptor for a packet data source buffer.
Definition packet.h:1166
struct ethertype_data_s ethertype_data_t
Holds the parameters passed to the Ethertype dissector for dissecting an Ethernet payload.
WS_DLL_PUBLIC void dissector_table_foreach_handle(const char *table_name, DATFunc_handle func, void *user_data)
Definition packet.c:2647
WS_DLL_PUBLIC const char * get_dissector_table_ui_name(const char *name)
Return the UI display name for a dissector table.
Definition packet.c:2914
WS_DLL_PUBLIC bool dissector_try_heuristic(heur_dissector_list_t sub_dissectors, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, heur_dtbl_entry_t **hdtbl_entry, void *data)
Definition packet.c:3080
WS_DLL_PUBLIC dissector_table_t find_dissector_table(const char *name)
Find a dissector table by its internal name.
Definition packet.c:1217
WS_DLL_PUBLIC dissector_handle_t dtbl_entry_get_initial_handle(dtbl_entry_t *entry)
Return the initial (registered) dissector handle for a dissector table entry.
Definition packet.c:2447
WS_DLL_PUBLIC void register_shutdown_routine(void(*func)(void))
Definition packet.c:365
WS_DLL_PUBLIC int dissector_try_payload_with_data(dissector_table_t sub_dissectors, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, const bool add_proto_name, void *data)
Invoke the currently assigned payload dissector for a dissector table.
Definition packet.c:2280
WS_DLL_PUBLIC void dissector_dump_dissectors(void)
Dump all registered dissectors to the standard output.
Definition packet.c:4149
WS_DLL_PUBLIC void dissector_reset_uint(const char *name, const uint32_t pattern)
Reset a uint dissector table entry to its initial registered value.
Definition packet.c:1693
WS_DLL_PUBLIC void dissector_add_for_decode_as_with_preference(const char *name, dissector_handle_t handle)
Same as dissector_add_for_decode_as(), but also registers a user preference for the dissector table v...
Definition packet.c:2434
WS_DLL_PUBLIC int dissector_try_guid_with_data(dissector_table_t sub_dissectors, guid_key *guid_val, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, const bool add_proto_name, void *data)
Look for a given value in a given guid dissector table and, if found, call the dissector with the arg...
Definition packet.c:2211
WS_DLL_PUBLIC void dissector_delete_all(const char *name, dissector_handle_t handle)
Remove all entries for a given dissector handle from a table.
Definition packet.c:1616
WS_DLL_PUBLIC dissector_table_t register_custom_dissector_table(const char *name, const char *ui_name, const int proto, GHashFunc hash_func, GEqualFunc key_equal_func, GDestroyNotify key_destroy_func)
Similar to register_dissector_table, but with a "custom" hash function to store subdissectors.
Definition packet.c:2850
WS_DLL_PUBLIC void dissector_add_uint_range_with_preference(const char *abbrev, const char *range_str, dissector_handle_t handle)
Add a range of uint-keyed entries to a dissector table and automatically register a corresponding use...
Definition packet.c:1513
WS_DLL_PUBLIC int32_t get_data_source_index_by_tvb(const packet_info *pinfo, const tvbuff_t *tvb)
Definition packet.c:538
WS_DLL_PUBLIC dissector_handle_t dissector_get_string_handle(dissector_table_t sub_dissectors, const char *string)
Definition packet.c:2111
WS_DLL_PUBLIC int get_dissector_table_param(const char *name)
Return the parameter value associated with a dissector table.
Definition packet.c:2932
WS_DLL_PUBLIC data_source_media_type_e get_data_source_media_type(const struct data_source *src)
Definition packet.c:554
struct heur_dtbl_entry heur_dtbl_entry_t
Represents a single entry in a heuristic dissector table, binding a heuristic dissector to its protoc...
WS_DLL_PUBLIC heur_dissector_list_t register_heur_dissector_list_with_description(const char *name, const char *ui_name, const int proto)
Definition packet.c:3334
@ HEURISTIC_DISABLE
Definition packet.h:110
@ HEURISTIC_ENABLE
Definition packet.h:111
@ DS_MEDIA_TYPE_APPLICATION_JSON
Definition packet.h:1168
@ DS_MEDIA_TYPE_APPLICATION_OCTET_STREAM
Definition packet.h:1167
struct _packet_info packet_info
Represents the metadata and indexing information for a single captured frame.
struct _protocol protocol_t
Definition proto.h:100
struct _e_guid_t e_guid_t
Represents a GUID/UUID value; may be larger than GUID_LEN so must not be used to directly overlay pac...
struct epan_range range_t
Lookup key for GUID-indexed dissector tables, combining a GUID with an optional version field.
Definition packet.h:503
uint16_t ver
Definition packet.h:505
e_guid_t guid
Definition packet.h:504
Holds all state for the dissection of a single byte array, including session, buffer,...
Definition epan_dissect.h:28
Holds the parameters passed to the Ethertype dissector for dissecting an Ethernet payload.
Definition packet.h:1340
int payload_offset
Definition packet.h:1342
uint16_t etype
Definition packet.h:1341
int fcs_len
Definition packet.h:1345
proto_tree * fh_tree
Definition packet.h:1343
int trailer_id
Definition packet.h:1344
Holds the data passed to the file dissector for dissection of a capture file as a whole.
Definition packet.h:1310
wtap_block_t pkt_block
Definition packet.h:1311
struct epan_dissect * color_edt
Definition packet.h:1312
Holds the data passed to the frame dissector for dissection of a single packet frame.
Definition packet.h:1299
int file_type_subtype
Definition packet.h:1300
wtap_block_t pkt_block
Definition packet.h:1301
struct epan_dissect * color_edt
Definition packet.h:1303
Represents a single entry in a heuristic dissector table, binding a heuristic dissector to its protoc...
Definition packet.h:670
const char * display_name
Definition packet.h:674
char * list_name
Definition packet.h:673
char * short_name
Definition packet.h:675
bool enabled
Definition packet.h:676
bool enabled_by_default
Definition packet.h:677
heur_dissector_t dissector
Definition packet.h:671
protocol_t * protocol
Definition packet.h:672
A single instance of a pcapng block, holding its type descriptor, mandatory data payload,...
Definition wtap_opttypes.h:274
Represents a single capture record read from or written to a capture file, regardless of record type.
Definition wtap.h:1597