17 #include "value_string.h" 20 #include "column-utils.h" 21 #include "guid-utils.h" 24 #include "ws_symbol_export.h" 37 #define hi_nibble(b) (((b) & 0xf0) >> 4) 38 #define lo_nibble(b) ((b) & 0x0f) 41 #define array_length(x) (sizeof x / sizeof x[0]) 45 #define BYTES_ARE_IN_FRAME(offset, captured_len, len) \ 46 ((guint)(offset) + (guint)(len) > (guint)(offset) && \ 47 (guint)(offset) + (guint)(len) <= (guint)(captured_len)) 49 extern void packet_init(
void);
50 extern void packet_cache_proto_handles(
void);
51 extern void packet_cleanup(
void);
78 typedef int (*dissector_cb_t)(tvbuff_t *, packet_info *, proto_tree *,
void *,
void *);
88 proto_tree *tree,
void *);
95 typedef void (*DATFunc) (
const gchar *table_name, ftenum_t selector_type,
96 gpointer key, gpointer value, gpointer user_data);
97 typedef void (*DATFunc_handle) (
const gchar *table_name, gpointer value,
99 typedef void (*DATFunc_table) (
const gchar *table_name,
const gchar *ui_name,
105 WS_DLL_PUBLIC dissector_handle_t dtbl_entry_get_handle (dtbl_entry_t *
dtbl_entry);
106 WS_DLL_PUBLIC dissector_handle_t dtbl_entry_get_initial_handle (dtbl_entry_t * entry);
164 gpointer user_data, GCompareFunc compare_key_func);
172 WS_DLL_PUBLIC dissector_table_t register_dissector_table(
const char *name,
173 const char *ui_name,
const int proto,
const ftenum_t type,
const int param);
179 WS_DLL_PUBLIC dissector_table_t register_custom_dissector_table(
const char *name,
180 const char *ui_name,
const int proto, GHashFunc hash_func, GEqualFunc key_equal_func);
186 WS_DLL_PUBLIC dissector_table_t find_dissector_table(
const char *name);
189 WS_DLL_PUBLIC
const char *get_dissector_table_ui_name(
const char *name);
193 WS_DLL_PUBLIC ftenum_t get_dissector_table_selector_type(
const char *name);
197 WS_DLL_PUBLIC
int get_dissector_table_param(
const char *name);
201 WS_DLL_PUBLIC
void dissector_dump_dissector_tables(
void);
204 WS_DLL_PUBLIC
void dissector_add_uint(
const char *name,
const guint32 pattern,
205 dissector_handle_t handle);
208 WS_DLL_PUBLIC
void dissector_add_uint_with_preference(
const char *name,
const guint32 pattern,
209 dissector_handle_t handle);
212 WS_DLL_PUBLIC
void dissector_add_uint_range(
const char *abbrev,
struct epan_range *range,
213 dissector_handle_t handle);
216 WS_DLL_PUBLIC
void dissector_add_uint_range_with_preference(
const char *abbrev,
const char* range_str,
217 dissector_handle_t handle);
221 WS_DLL_PUBLIC
void dissector_delete_uint(
const char *name,
const guint32 pattern,
222 dissector_handle_t handle);
225 WS_DLL_PUBLIC
void dissector_delete_uint_range(
const char *abbrev,
struct epan_range *range,
226 dissector_handle_t handle);
229 WS_DLL_PUBLIC
void dissector_delete_all(
const char *name, dissector_handle_t handle);
233 WS_DLL_PUBLIC
void dissector_change_uint(
const char *abbrev,
const guint32 pattern,
234 dissector_handle_t handle);
237 WS_DLL_PUBLIC
void dissector_reset_uint(
const char *name,
const guint32 pattern);
242 WS_DLL_PUBLIC
int dissector_try_uint(dissector_table_t sub_dissectors,
243 const guint32 uint_val, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
248 WS_DLL_PUBLIC
int dissector_try_uint_new(dissector_table_t sub_dissectors,
249 const guint32 uint_val, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
const gboolean add_proto_name,
void *data);
259 dissector_table_t
const sub_dissectors,
const guint32 uint_val);
269 const char *name,
const guint32 uint_val);
272 WS_DLL_PUBLIC
void dissector_add_string(
const char *name,
const gchar *pattern,
273 dissector_handle_t handle);
277 WS_DLL_PUBLIC
void dissector_delete_string(
const char *name,
const gchar *pattern,
278 dissector_handle_t handle);
282 WS_DLL_PUBLIC
void dissector_change_string(
const char *name,
const gchar *pattern,
283 dissector_handle_t handle);
286 WS_DLL_PUBLIC
void dissector_reset_string(
const char *name,
const gchar *pattern);
291 WS_DLL_PUBLIC
int dissector_try_string(dissector_table_t sub_dissectors,
292 const gchar *
string, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
void *data);
297 WS_DLL_PUBLIC
int dissector_try_string_new(dissector_table_t sub_dissectors,
298 const gchar *
string, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
const gboolean add_proto_name,
void *data);
308 dissector_table_t sub_dissectors,
const gchar *
string);
318 const char *name,
const gchar *
string);
321 WS_DLL_PUBLIC
void dissector_add_custom_table_handle(
const char *name,
void *pattern,
322 dissector_handle_t handle);
332 dissector_table_t sub_dissectors,
void *key);
342 WS_DLL_PUBLIC
void dissector_add_guid(
const char *name,
guid_key* guid_val,
343 dissector_handle_t handle);
348 WS_DLL_PUBLIC
int dissector_try_guid(dissector_table_t sub_dissectors,
349 guid_key* guid_val, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
354 WS_DLL_PUBLIC
int dissector_try_guid_new(dissector_table_t sub_dissectors,
355 guid_key* guid_val, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
const gboolean add_proto_name,
void *data);
365 dissector_table_t
const sub_dissectors,
guid_key* guid_val);
370 WS_DLL_PUBLIC
int dissector_try_payload(dissector_table_t sub_dissectors,
371 tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
376 WS_DLL_PUBLIC
int dissector_try_payload_new(dissector_table_t sub_dissectors,
377 tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
const gboolean add_proto_name,
void *data);
381 WS_DLL_PUBLIC
void dissector_change_payload(
const char *abbrev, dissector_handle_t handle);
384 WS_DLL_PUBLIC
void dissector_reset_payload(
const char *name);
388 WS_DLL_PUBLIC
void dissector_add_for_decode_as(
const char *name,
389 dissector_handle_t handle);
392 WS_DLL_PUBLIC
void dissector_add_for_decode_as_with_preference(
const char *name,
393 dissector_handle_t handle);
425 const gchar *display_name;
437 typedef void (*DATFunc_heur) (
const gchar *table_name,
439 typedef void (*DATFunc_heur_table) (
const char *table_name,
452 DATFunc_heur func, gpointer user_data);
463 gpointer user_data, GCompareFunc compare_key_func);
466 WS_DLL_PUBLIC gboolean has_heur_dissector_list(
const gchar *name);
481 tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
heur_dtbl_entry_t **hdtbl_entry,
void *data);
508 const char *display_name,
const char *short_name,
const int proto, heuristic_enable_e enable);
520 WS_DLL_PUBLIC dissector_handle_t
register_dissector(
const char *name, dissector_t dissector,
const int proto);
523 WS_DLL_PUBLIC dissector_handle_t
register_dissector_with_data(
const char *name, dissector_cb_t dissector,
const int proto,
void *cb_data);
541 WS_DLL_PUBLIC dissector_handle_t
find_dissector(
const char *name);
552 WS_DLL_PUBLIC dissector_handle_t create_dissector_handle_with_name(dissector_t dissector,
553 const int proto,
const char* name);
569 packet_info *pinfo, proto_tree *tree,
void *data);
570 WS_DLL_PUBLIC
int call_dissector(dissector_handle_t handle, tvbuff_t *tvb,
571 packet_info *pinfo, proto_tree *tree);
573 WS_DLL_PUBLIC
int call_data_dissector(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
589 packet_info *pinfo, proto_tree *tree,
void *data);
600 packet_info *pinfo, proto_tree *tree,
void *data);
638 extern void dissect_init(
void);
640 extern void dissect_cleanup(
void);
646 WS_DLL_PUBLIC
void set_actual_length(tvbuff_t *tvb,
const guint specified_len);
669 WS_DLL_PUBLIC
void register_shutdown_routine(
void (*func)(
void));
672 void init_dissection(
void);
675 void cleanup_dissection(
void);
681 WS_DLL_PUBLIC
void register_postseq_cleanup_routine(
void (*func)(
void));
684 WS_DLL_PUBLIC
void postseq_cleanup_all_protocols(
void);
694 register_final_registration_routine(
void (*func)(
void));
698 final_registration_all_protocols(
void);
704 WS_DLL_PUBLIC
void add_new_data_source(packet_info *pinfo, tvbuff_t *tvb,
707 WS_DLL_PUBLIC
void remove_last_data_source(packet_info *pinfo);
713 WS_DLL_PUBLIC
char *get_data_source_name(
const struct data_source *src);
714 WS_DLL_PUBLIC tvbuff_t *get_data_source_tvb(
const struct data_source *src);
715 WS_DLL_PUBLIC tvbuff_t *get_data_source_tvb_by_name(packet_info *pinfo,
const char *name);
720 extern void free_data_sources(packet_info *pinfo);
728 WS_DLL_PUBLIC
void mark_frame_as_depended_upon(packet_info *pinfo, guint32 frame_num);
733 int file_type_subtype;
750 extern void dissect_record(
struct epan_dissect *edt,
int file_type_subtype,
763 int offset_after_ethertype;
774 WS_DLL_PUBLIC
void dissector_dump_decodes(
void);
779 WS_DLL_PUBLIC
void dissector_dump_heur_decodes(
void);
789 WS_DLL_PUBLIC
void register_postdissector(dissector_handle_t handle);
796 WS_DLL_PUBLIC
void set_postdissector_wanted_hfids(dissector_handle_t handle,
797 GArray *wanted_hfids);
803 void deregister_postdissector(dissector_handle_t handle);
810 extern gboolean have_postdissector(
void);
817 extern void call_all_postdissectors(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
823 WS_DLL_PUBLIC gboolean postdissectors_want_hfids(
void);
829 prime_epan_dissect_with_postdissector_wanted_hfids(
epan_dissect_t *edt);
WS_DLL_PUBLIC gboolean deregister_depend_dissector(const char *parent, const char *dependent)
Definition: packet.c:3236
WS_DLL_PUBLIC GSList * dissector_table_get_dissector_handles(dissector_table_t dissector_table)
Definition: packet.c:2058
WS_DLL_PUBLIC heur_dissector_list_t register_heur_dissector_list(const char *name, const int proto)
Definition: packet.c:2859
WS_DLL_PUBLIC gboolean register_depend_dissector(const char *parent, const char *dependent)
Definition: packet.c:3208
WS_DLL_PUBLIC const char * dissector_handle_get_short_name(const dissector_handle_t handle)
Definition: packet.c:2899
WS_DLL_PUBLIC dissector_handle_t dissector_get_default_uint_handle(const char *name, const guint32 uint_val)
Definition: packet.c:1401
void dissector_table_foreach_changed(const char *table_name, DATFunc func, gpointer user_data)
Definition: packet.c:2290
WS_DLL_PUBLIC const char * dissector_handle_get_dissector_name(const dissector_handle_t handle)
Definition: packet.c:2960
WS_DLL_PUBLIC void dissector_all_tables_foreach_table(DATFunc_table func, gpointer user_data, GCompareFunc compare_key_func)
Definition: packet.c:2345
WS_DLL_PUBLIC dissector_handle_t dissector_table_get_dissector_handle(dissector_table_t dissector_table, const gchar *short_name)
Definition: packet.c:2088
Definition: packet_info.h:44
WS_DLL_PUBLIC void dissector_table_foreach(const char *table_name, DATFunc func, gpointer user_data)
Definition: packet.c:2213
void deregister_dissector_table(const char *name)
Definition: packet.c:2469
WS_DLL_PUBLIC dissector_handle_t dissector_get_uint_handle(dissector_table_t const sub_dissectors, const guint32 uint_val)
Definition: packet.c:1389
WS_DLL_PUBLIC void dissector_table_allow_decode_as(dissector_table_t dissector_table)
Definition: packet.c:2106
Definition: column-info.h:51
WS_DLL_PUBLIC dissector_handle_t dissector_get_default_string_handle(const char *name, const gchar *string)
Definition: packet.c:1704
WS_DLL_PUBLIC dissector_handle_t find_dissector_add_dependency(const char *name, const int parent_proto)
Definition: packet.c:2947
WS_DLL_PUBLIC void dissector_table_foreach_handle(const char *table_name, DATFunc_handle func, gpointer user_data)
Definition: packet.c:2232
Definition: tvbuff-int.h:35
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:2634
WS_DLL_PUBLIC ftenum_t dissector_table_get_type(dissector_table_t dissector_table)
Definition: packet.c:2100
WS_DLL_PUBLIC void register_cleanup_routine(void(*func)(void))
Definition: packet.c:287
WS_DLL_PUBLIC void heur_dissector_delete(const char *name, heur_dissector_t dissector, const int proto)
Definition: packet.c:2608
WS_DLL_PUBLIC heur_dtbl_entry_t * find_heur_dissector_by_unique_short_name(const char *short_name)
Definition: packet.c:2516
Definition: guid-utils.h:21
WS_DLL_PUBLIC void heur_dissector_add(const char *name, heur_dissector_t dissector, const char *display_name, const char *short_name, const int proto, heuristic_enable_e enable)
Definition: packet.c:2522
WS_DLL_PUBLIC int dissector_handle_get_protocol_index(const dissector_handle_t handle)
Definition: packet.c:2916
gboolean(* heur_dissector_t)(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *)
Definition: packet.h:87
WS_DLL_PUBLIC dissector_handle_t dissector_get_custom_table_handle(dissector_table_t sub_dissectors, void *key)
Definition: packet.c:1757
WS_DLL_PUBLIC void register_init_routine(void(*func)(void))
Definition: packet.c:281
Definition: frame_data.h:53
void deregister_dissector(const char *name)
Definition: packet.c:3067
WS_DLL_PUBLIC dissector_handle_t create_dissector_handle(dissector_t dissector, const int proto)
Definition: packet.c:2984
WS_DLL_PUBLIC void dissector_all_heur_tables_foreach_table(DATFunc_heur_table func, gpointer user_data, GCompareFunc compare_key_func)
Definition: packet.c:2808
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:3030
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:3084
WS_DLL_PUBLIC dissector_handle_t find_dissector(const char *name)
Definition: packet.c:2941
WS_DLL_PUBLIC void dissector_all_tables_foreach_changed(DATFunc func, gpointer user_data)
Definition: packet.c:2274
WS_DLL_PUBLIC void heur_dissector_table_foreach(const char *table_name, DATFunc_heur func, gpointer user_data)
Definition: packet.c:2753
WS_DLL_PUBLIC heur_dissector_list_t find_heur_dissector_list(const char *name)
Definition: packet.c:2506
WS_DLL_PUBLIC dissector_handle_t register_dissector(const char *name, dissector_t dissector, const int proto)
Definition: packet.c:3020
WS_DLL_PUBLIC depend_dissector_list_t find_depend_dissector_list(const char *name)
Definition: packet.c:3246
const char * dissector_handle_get_long_name(const dissector_handle_t handle)
Definition: packet.c:2888
Definition: epan_dissect.h:28
WS_DLL_PUBLIC dissector_handle_t dissector_get_guid_handle(dissector_table_t const sub_dissectors, guid_key *guid_val)
Definition: packet.c:1878
const gchar * pkt_comment
Definition: packet.h:734
WS_DLL_PUBLIC dissector_handle_t dissector_get_string_handle(dissector_table_t sub_dissectors, const gchar *string)
Definition: packet.c:1689
WS_DLL_PUBLIC GList * get_dissector_names(void)
Definition: packet.c:2934
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:3132
const gchar * pkt_comment
Definition: packet.h:742
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:3098