13 #include <wireshark.h>
38 #define hi_nibble(b) (((b) & 0xf0) >> 4)
39 #define lo_nibble(b) ((b) & 0x0f)
42 #define array_length(x) (sizeof x / sizeof x[0])
46 #define BYTES_ARE_IN_FRAME(offset, captured_len, len) \
47 ((guint)(offset) + (guint)(len) > (guint)(offset) && \
48 (guint)(offset) + (guint)(len) <= (guint)(captured_len))
53 #define STRING_CASE_SENSITIVE 0
54 #define STRING_CASE_INSENSITIVE 1
56 extern void packet_init(
void);
57 extern void packet_cache_proto_handles(
void);
58 extern void packet_cleanup(
void);
100 } heuristic_enable_e;
102 typedef void (*DATFunc) (
const gchar *table_name, ftenum_t selector_type,
103 gpointer key, gpointer value, gpointer user_data);
104 typedef void (*DATFunc_handle) (
const gchar *table_name, gpointer value,
106 typedef void (*DATFunc_table) (
const gchar *table_name,
const gchar *ui_name,
171 gpointer user_data, GCompareFunc compare_key_func);
180 const char *ui_name,
const int proto,
const ftenum_t type,
const int param);
186 WS_DLL_PUBLIC
dissector_table_t register_custom_dissector_table(
const char *name,
187 const char *ui_name,
const int proto, GHashFunc hash_func, GEqualFunc key_equal_func,
188 GDestroyNotify key_destroy_func);
196 const char *alias_name);
205 WS_DLL_PUBLIC
const char *get_dissector_table_ui_name(
const char *name);
209 WS_DLL_PUBLIC ftenum_t get_dissector_table_selector_type(
const char *name);
213 WS_DLL_PUBLIC
int get_dissector_table_param(
const char *name);
217 WS_DLL_PUBLIC
void dissector_dump_dissector_tables(
void);
220 WS_DLL_PUBLIC
void dissector_add_uint(
const char *name,
const guint32 pattern,
224 WS_DLL_PUBLIC
void dissector_add_uint_with_preference(
const char *name,
const guint32 pattern,
228 WS_DLL_PUBLIC
void dissector_add_uint_range(
const char *abbrev,
struct epan_range *range,
232 WS_DLL_PUBLIC
void dissector_add_uint_range_with_preference(
const char *abbrev,
const char* range_str,
237 WS_DLL_PUBLIC
void dissector_delete_uint(
const char *name,
const guint32 pattern,
241 WS_DLL_PUBLIC
void dissector_delete_uint_range(
const char *abbrev,
struct epan_range *range,
249 WS_DLL_PUBLIC
void dissector_change_uint(
const char *abbrev,
const guint32 pattern,
253 WS_DLL_PUBLIC
void dissector_reset_uint(
const char *name,
const guint32 pattern);
260 WS_DLL_PUBLIC gboolean dissector_is_uint_changed(
dissector_table_t const sub_dissectors,
const guint32 uint_val);
292 const char *name,
const guint32 uint_val);
295 WS_DLL_PUBLIC
void dissector_add_string(
const char *name,
const gchar *pattern,
300 WS_DLL_PUBLIC
void dissector_delete_string(
const char *name,
const gchar *pattern,
305 WS_DLL_PUBLIC
void dissector_change_string(
const char *name,
const gchar *pattern,
309 WS_DLL_PUBLIC
void dissector_reset_string(
const char *name,
const gchar *pattern);
315 WS_DLL_PUBLIC gboolean dissector_is_string_changed(
dissector_table_t const subdissectors,
const gchar *
string);
347 const char *name,
const gchar *
string);
350 WS_DLL_PUBLIC
void dissector_add_custom_table_handle(
const char *name,
void *pattern,
371 WS_DLL_PUBLIC
void dissector_add_guid(
const char *name,
guid_key* guid_val,
387 WS_DLL_PUBLIC
void dissector_delete_guid(
const char *name,
guid_key* guid_val,
414 WS_DLL_PUBLIC
void dissector_change_payload(
const char *abbrev,
dissector_handle_t handle);
417 WS_DLL_PUBLIC
void dissector_reset_payload(
const char *name);
427 WS_DLL_PUBLIC
void dissector_add_for_decode_as(
const char *name,
431 WS_DLL_PUBLIC
void dissector_add_for_decode_as_with_preference(
const char *name,
469 const gchar *display_name;
472 bool enabled_by_default;
501 typedef void (*DATFunc_heur) (
const gchar *table_name,
503 typedef void (*DATFunc_heur_table) (
const char *table_name,
516 DATFunc_heur func, gpointer user_data);
527 gpointer user_data, GCompareFunc compare_key_func);
530 WS_DLL_PUBLIC gboolean has_heur_dissector_list(
const gchar *name);
572 const char *display_name,
const char *internal_name,
const int proto, heuristic_enable_e enable);
603 WS_DLL_PUBLIC
const char *dissector_handle_get_short_name(
const dissector_handle_t handle);
626 WS_DLL_PUBLIC
dissector_handle_t create_dissector_handle_with_name(dissector_t dissector,
627 const int proto,
const char* name);
628 WS_DLL_PUBLIC
dissector_handle_t create_dissector_handle_with_name_and_description(dissector_t dissector,
629 const int proto,
const char* name,
const char* description);
630 WS_DLL_PUBLIC
dissector_handle_t create_dissector_handle_with_data(dissector_cb_t dissector,
631 const int proto,
void* cb_data);
634 WS_DLL_PUBLIC
void dissector_dump_dissectors(
void);
719 extern void dissect_init(
void);
721 extern void dissect_cleanup(
void);
727 WS_DLL_PUBLIC
void set_actual_length(
tvbuff_t *tvb,
const guint specified_len);
751 WS_DLL_PUBLIC
void register_shutdown_routine(
void (*func)(
void));
754 void init_dissection(
void);
757 void cleanup_dissection(
void);
763 WS_DLL_PUBLIC
void register_postseq_cleanup_routine(
void (*func)(
void));
766 WS_DLL_PUBLIC
void postseq_cleanup_all_protocols(
void);
776 register_final_registration_routine(
void (*func)(
void));
780 final_registration_all_protocols(
void);
789 WS_DLL_PUBLIC
void remove_last_data_source(
packet_info *pinfo);
795 WS_DLL_PUBLIC
char *get_data_source_name(
const struct data_source *src);
810 WS_DLL_PUBLIC
void mark_frame_as_depended_upon(frame_data *fd, guint32 frame_num);
815 int file_type_subtype;
832 extern void dissect_record(
struct epan_dissect *edt,
int file_type_subtype,
855 WS_DLL_PUBLIC
void dissector_dump_decodes(
void);
860 WS_DLL_PUBLIC
void dissector_dump_heur_decodes(
void);
878 GArray *wanted_hfids);
891 extern gboolean have_postdissector(
void);
904 WS_DLL_PUBLIC gboolean postdissectors_want_hfids(
void);
910 prime_epan_dissect_with_postdissector_wanted_hfids(
epan_dissect_t *edt);
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:3550
void deregister_dissector(const char *name)
Definition: packet.c:3534
void dissector_table_foreach_changed(const char *table_name, DATFunc func, gpointer user_data)
Definition: packet.c:2593
WS_DLL_PUBLIC dissector_handle_t dissector_get_string_handle(dissector_table_t sub_dissectors, const gchar *string)
Definition: packet.c:1969
WS_DLL_PUBLIC dissector_handle_t find_dissector_add_dependency(const char *name, const int parent_proto)
Definition: packet.c:3356
WS_DLL_PUBLIC dissector_handle_t register_dissector(const char *name, dissector_t dissector, const int proto)
Definition: packet.c:3477
void deregister_dissector_table(const char *name)
Definition: packet.c:2792
WS_DLL_PUBLIC gboolean deregister_depend_dissector(const char *parent, const char *dependent)
Definition: packet.c:3705
WS_DLL_PUBLIC const char * dissector_handle_get_dissector_name(const dissector_handle_t handle)
Definition: packet.c:3369
WS_DLL_PUBLIC dissector_handle_t dissector_get_default_uint_handle(const char *name, const guint32 uint_val)
Definition: packet.c:1654
WS_DLL_PUBLIC dissector_handle_t dissector_get_uint_handle(dissector_table_t const sub_dissectors, const guint32 uint_val)
Definition: packet.c:1642
WS_DLL_PUBLIC dissector_handle_t dissector_get_guid_handle(dissector_table_t const sub_dissectors, guid_key *guid_val)
Definition: packet.c:2165
WS_DLL_PUBLIC dissector_handle_t register_dissector_with_data(const char *name, dissector_cb_t dissector, const int proto, void *cb_data)
Definition: packet.c:3497
WS_DLL_PUBLIC heur_dissector_list_t find_heur_dissector_list(const char *name)
Definition: packet.c:2848
WS_DLL_PUBLIC ftenum_t dissector_table_get_type(dissector_table_t dissector_table)
Definition: packet.c:2398
WS_DLL_PUBLIC const char * dissector_handle_get_protocol_long_name(const dissector_handle_t handle)
Definition: packet.c:3284
WS_DLL_PUBLIC void dissector_table_foreach(const char *table_name, DATFunc func, gpointer user_data)
Definition: packet.c:2516
void deregister_heur_dissector_list(const char *name)
Definition: packet.c:3258
WS_DLL_PUBLIC dissector_handle_t dissector_get_custom_table_handle(dissector_table_t sub_dissectors, void *key)
Definition: packet.c:2044
WS_DLL_PUBLIC dissector_handle_t dissector_get_default_string_handle(const char *name, const gchar *string)
Definition: packet.c:1984
WS_DLL_PUBLIC void decrement_dissection_depth(packet_info *pinfo)
Definition: packet.c:4063
WS_DLL_PUBLIC void register_init_routine(void(*func)(void))
Definition: packet.c:321
WS_DLL_PUBLIC void heur_dissector_delete(const char *name, heur_dissector_t dissector, const int proto)
Definition: packet.c:2954
WS_DLL_PUBLIC void register_cleanup_routine(void(*func)(void))
Definition: packet.c:327
WS_DLL_PUBLIC dissector_handle_t create_dissector_handle(dissector_t dissector, const int proto)
Definition: packet.c:3409
WS_DLL_PUBLIC void dissector_all_tables_foreach_table(DATFunc_table func, gpointer user_data, GCompareFunc compare_key_func)
Definition: packet.c:2648
WS_DLL_PUBLIC gboolean dissector_table_supports_decode_as(dissector_table_t dissector_table)
Definition: packet.c:2410
WS_DLL_PUBLIC void dissector_table_allow_decode_as(dissector_table_t dissector_table)
Definition: packet.c:2404
WS_DLL_PUBLIC dissector_handle_t find_dissector(const char *name)
Definition: packet.c:3350
WS_DLL_PUBLIC gboolean 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:2980
WS_DLL_PUBLIC void dissector_all_tables_foreach_changed(DATFunc func, gpointer user_data)
Definition: packet.c:2577
WS_DLL_PUBLIC gboolean register_depend_dissector(const char *parent, const char *dependent)
Definition: packet.c:3677
WS_DLL_PUBLIC const char * heur_dissector_list_get_description(heur_dissector_list_t list)
Definition: packet.c:3269
WS_DLL_PUBLIC const char * dissector_handle_get_description(const dissector_handle_t handle)
Definition: packet.c:3313
WS_DLL_PUBLIC void increment_dissection_depth(packet_info *pinfo)
Definition: packet.c:4057
gboolean(* heur_dissector_t)(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *)
Definition: packet.h:94
WS_DLL_PUBLIC int dissector_handle_get_protocol_index(const dissector_handle_t handle)
Definition: packet.c:3321
WS_DLL_PUBLIC depend_dissector_list_t find_depend_dissector_list(const char *name)
Definition: packet.c:3715
WS_DLL_PUBLIC void register_dissector_table_alias(dissector_table_t dissector_table, const char *alias_name)
Definition: packet.c:2774
WS_DLL_PUBLIC int call_dissector_with_data(dissector_handle_t handle, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
Definition: packet.c:3564
WS_DLL_PUBLIC void dissector_table_foreach_handle(const char *table_name, DATFunc_handle func, gpointer user_data)
Definition: packet.c:2535
WS_DLL_PUBLIC GList * get_dissector_names(void)
Definition: packet.c:3339
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:3598
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:2864
WS_DLL_PUBLIC dissector_handle_t register_dissector_with_description(const char *name, const char *description, dissector_t dissector, const int proto)
Definition: packet.c:3487
WS_DLL_PUBLIC void dissector_all_heur_tables_foreach_table(DATFunc_heur_table func, gpointer user_data, GCompareFunc compare_key_func)
Definition: packet.c:3177
WS_DLL_PUBLIC GSList * dissector_table_get_dissector_handles(dissector_table_t dissector_table)
Definition: packet.c:2356
WS_DLL_PUBLIC const char * dissector_handle_get_protocol_short_name(const dissector_handle_t handle)
Definition: packet.c:3295
WS_DLL_PUBLIC dissector_handle_t dissector_table_get_dissector_handle(dissector_table_t dissector_table, const gchar *description)
Definition: packet.c:2386
WS_DLL_PUBLIC heur_dissector_list_t register_heur_dissector_list(const char *name, const int proto)
Definition: packet.c:3252
WS_DLL_PUBLIC void heur_dissector_table_foreach(const char *table_name, DATFunc_heur func, gpointer user_data)
Definition: packet.c:3121
WS_DLL_PUBLIC heur_dtbl_entry_t * find_heur_dissector_by_unique_short_name(const char *short_name)
Definition: packet.c:2858
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:3231
Definition: guid-utils.h:22
Definition: packet_info.h:44
Definition: packet.c:1104
Definition: column-info.h:63
Definition: epan_dissect.h:28
wtap_block_t pkt_block
Definition: packet.h:824
wtap_block_t pkt_block
Definition: packet.h:816
Definition: tvbuff-int.h:35
Definition: wtap_opttypes.c:85