| Wireshark 4.7.3 The Wireshark network protocol analyzer

Loading...
Searching...
No Matches
packet.h
Go to the documentation of this file.
1
10#pragma once
11#include <wsutil/array.h>
12#include "proto.h"
13#include "range.h"
14#include "tvbuff.h"
15#include "epan.h"
16#include "frame_data.h"
17#include "packet_info.h"
18#include "column-utils.h"
19#include "guid-utils.h"
20
21#ifdef __cplusplus
22 extern "C" {
23#endif /* __cplusplus */
24
25 struct wtap_block;
26 typedef struct wtap_block* wtap_block_t;
27
28
33
34#define hi_nibble(b) (((b) & 0xf0) >> 4)
35#define lo_nibble(b) ((b) & 0x0f)
36
37/* Check whether the "len" bytes of data starting at "offset" is
38 * entirely inside the captured data for this packet. */
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))
42
43/* 0 is case sensitive for backwards compatibility with tables that
44 * used false or BASE_NONE for case sensitive, which was the default.
45 */
46#define STRING_CASE_SENSITIVE 0
47#define STRING_CASE_INSENSITIVE 1
48
52 extern void packet_init(void);
53
57 extern void packet_cache_proto_handles(void);
58
62 extern void packet_all_tables_sort_handles(void);
63
67 extern void packet_cleanup(void);
68
69/* Handle for dissectors you call directly or register with "dissector_add_uint()".
70 This handle is opaque outside of "packet.c". */
71 struct dissector_handle;
72 typedef struct dissector_handle *dissector_handle_t;
73
74/* Hash table for matching unsigned integers, or strings, and dissectors;
75 this is opaque outside of "packet.c". */
76 struct dissector_table;
77 typedef struct dissector_table *dissector_table_t;
78
79/*
80 * Dissector that returns:
81 *
82 * The amount of data in the protocol's PDU, if it was able to
83 * dissect all the data;
84 *
85 * 0, if the tvbuff doesn't contain a PDU for that protocol;
86 *
87 * The negative of the amount of additional data needed, if
88 * we need more data (e.g., from subsequent TCP segments) to
89 * dissect the entire PDU.
90 */
91 typedef int (*dissector_t)(tvbuff_t *, packet_info *, proto_tree *, void *);
92
93/* Same as dissector_t with an extra parameter for callback pointer */
94 typedef int (*dissector_cb_t)(tvbuff_t *, packet_info *, proto_tree *, void *, void *);
95
103 typedef bool (*heur_dissector_t)(tvbuff_t *tvb, packet_info *pinfo,
104 proto_tree *tree, void *);
105
109 typedef enum {
110 HEURISTIC_DISABLE,
111 HEURISTIC_ENABLE
112} heuristic_enable_e;
113
114 typedef void (*DATFunc) (const char *table_name, ftenum_t selector_type,
115 void *key, void *value, void *user_data);
116 typedef void (*DATFunc_handle) (const char *table_name, void *value,
117 void *user_data);
118 typedef void (*DATFunc_table) (const char *table_name, const char *ui_name,
119 void *user_data);
120
121/* Opaque structure - provides type checking but no access to components */
122 typedef struct dtbl_entry dtbl_entry_t;
123
130WS_DLL_PUBLIC dissector_handle_t dtbl_entry_get_handle(dtbl_entry_t *dtbl_entry);
131
139WS_DLL_PUBLIC dissector_handle_t dtbl_entry_get_initial_handle(dtbl_entry_t *entry);
140
150 void dissector_table_foreach_changed (const char *table_name, DATFunc func,
151 void *user_data);
152
162WS_DLL_PUBLIC void dissector_table_foreach (const char *table_name, DATFunc func,
163 void *user_data);
164
173WS_DLL_PUBLIC void dissector_all_tables_foreach_changed (DATFunc func,
174 void *user_data);
175
185WS_DLL_PUBLIC void dissector_table_foreach_handle(const char *table_name, DATFunc_handle func,
186 void *user_data);
187
196WS_DLL_PUBLIC void dissector_all_tables_foreach_table (DATFunc_table func,
197 void *user_data, GCompareFunc compare_key_func);
198
213WS_DLL_PUBLIC dissector_table_t register_dissector_table(const char *name,
214 const char *ui_name, const int proto, const ftenum_t type, const int param);
215
226WS_DLL_PUBLIC dissector_table_t register_custom_dissector_table(const char *name,
227 const char *ui_name, const int proto, GHashFunc hash_func, GEqualFunc key_equal_func,
228 GDestroyNotify key_destroy_func);
229
235WS_DLL_PUBLIC void register_dissector_table_alias(dissector_table_t dissector_table,
236 const char *alias_name);
237
242 void deregister_dissector_table(const char *name);
243
247WS_DLL_PUBLIC dissector_table_t find_dissector_table(const char *name);
248
252WS_DLL_PUBLIC const char *get_dissector_table_ui_name(const char *name);
253
257WS_DLL_PUBLIC ftenum_t get_dissector_table_selector_type(const char *name);
258
262WS_DLL_PUBLIC int get_dissector_table_param(const char *name);
263
270WS_DLL_PUBLIC void dissector_dump_dissector_tables(void);
271
276WS_DLL_PUBLIC void dissector_add_uint(const char *name, const uint32_t pattern,
277 dissector_handle_t handle);
278
284WS_DLL_PUBLIC void dissector_add_uint_with_preference(const char *name, const uint32_t pattern,
285 dissector_handle_t handle);
286
291WS_DLL_PUBLIC void dissector_add_uint_range(const char *abbrev, range_t *range,
292 dissector_handle_t handle);
293
299WS_DLL_PUBLIC void dissector_add_uint_range_with_preference(const char *abbrev, const char* range_str,
300 dissector_handle_t handle);
301
306WS_DLL_PUBLIC void dissector_delete_uint(const char *name, const uint32_t pattern,
307 dissector_handle_t handle);
308
313WS_DLL_PUBLIC void dissector_delete_uint_range(const char *abbrev, range_t *range,
314 dissector_handle_t handle);
315
321WS_DLL_PUBLIC void dissector_delete_all(const char *name, dissector_handle_t handle);
322
327WS_DLL_PUBLIC void dissector_change_uint(const char *abbrev, const uint32_t pattern,
328 dissector_handle_t handle);
329
333WS_DLL_PUBLIC void dissector_reset_uint(const char *name, const uint32_t pattern);
334
346WS_DLL_PUBLIC bool dissector_is_uint_changed(dissector_table_t const sub_dissectors, const uint32_t uint_val);
347
361WS_DLL_PUBLIC int dissector_try_uint(dissector_table_t sub_dissectors,
362 const uint32_t uint_val, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
363
380WS_DLL_PUBLIC int dissector_try_uint_with_data(dissector_table_t sub_dissectors,
381 const uint32_t uint_val, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, const bool add_proto_name, void *data);
382
390WS_DLL_PUBLIC dissector_handle_t dissector_get_uint_handle(
391 dissector_table_t const sub_dissectors, const uint32_t uint_val);
392
400WS_DLL_PUBLIC dissector_handle_t dissector_get_default_uint_handle(
401 const char *name, const uint32_t uint_val);
402
409WS_DLL_PUBLIC void dissector_add_string(const char *name, const char *pattern,
410 dissector_handle_t handle);
411
416WS_DLL_PUBLIC void dissector_delete_string(const char *name, const char *pattern,
417 dissector_handle_t handle);
418
423WS_DLL_PUBLIC void dissector_change_string(const char *name, const char *pattern,
424 dissector_handle_t handle);
425
429WS_DLL_PUBLIC void dissector_reset_string(const char *name, const char *pattern);
430
441WS_DLL_PUBLIC bool dissector_is_string_changed(dissector_table_t const subdissectors, const char *string);
442
456WS_DLL_PUBLIC int dissector_try_string_with_data(dissector_table_t sub_dissectors,
457 const char* string, tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, const bool add_proto_name, void* data);
458
466WS_DLL_PUBLIC dissector_handle_t dissector_get_string_handle(
467 dissector_table_t sub_dissectors, const char *string);
468
476WS_DLL_PUBLIC dissector_handle_t dissector_get_default_string_handle(
477 const char *name, const char *string);
478
485WS_DLL_PUBLIC void dissector_add_custom_table_handle(const char *name, void *pattern,
486 dissector_handle_t handle);
487
495WS_DLL_PUBLIC dissector_handle_t dissector_get_custom_table_handle(
496 dissector_table_t sub_dissectors, void *key);
497
503 typedef struct _guid_key {
504 e_guid_t guid;
505 uint16_t ver;
506} guid_key;
507
514WS_DLL_PUBLIC void dissector_add_guid(const char *name, guid_key* guid_val,
515 dissector_handle_t handle);
516
532WS_DLL_PUBLIC int dissector_try_guid_with_data(dissector_table_t sub_dissectors,
533 guid_key* guid_val, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, const bool add_proto_name, void *data);
534
541WS_DLL_PUBLIC void dissector_delete_guid(const char *name, guid_key* guid_val,
542 dissector_handle_t handle);
543
551WS_DLL_PUBLIC dissector_handle_t dissector_get_guid_handle(
552 dissector_table_t const sub_dissectors, guid_key* guid_val);
553
572WS_DLL_PUBLIC int dissector_try_payload_with_data(dissector_table_t sub_dissectors,
573 tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, const bool add_proto_name, void *data);
574
578WS_DLL_PUBLIC void dissector_change_payload(const char *abbrev, dissector_handle_t handle);
579
582WS_DLL_PUBLIC void dissector_reset_payload(const char *name);
583
591WS_DLL_PUBLIC dissector_handle_t dissector_get_payload_handle(
592 dissector_table_t const dissector_table);
593
602WS_DLL_PUBLIC void dissector_add_for_decode_as(const char *name,
603 dissector_handle_t handle);
604
609WS_DLL_PUBLIC void dissector_add_for_decode_as_with_preference(const char *name,
610 dissector_handle_t handle);
611
615WS_DLL_PUBLIC GSList *dissector_table_get_dissector_handles(dissector_table_t dissector_table);
616
621WS_DLL_PUBLIC dissector_handle_t dissector_table_get_dissector_handle(dissector_table_t dissector_table, const char* description);
622
628WS_DLL_PUBLIC ftenum_t dissector_table_get_type(dissector_table_t dissector_table);
629
638WS_DEPRECATED_X("Use register_decode_as instead")
639WS_DLL_PUBLIC void dissector_table_allow_decode_as(dissector_table_t dissector_table);
640
648extern void
649 dissector_table_allow_decode_as_internal(dissector_table_t dissector_table);
650
656WS_DLL_PUBLIC bool dissector_table_supports_decode_as(dissector_table_t dissector_table);
657
658/* List of "heuristic" dissectors (which get handed a packet, look at it,
659 and either recognize it as being for their protocol, dissect it, and
660 return true, or don't recognize it and return false) to be called
661 by another dissector.
662
663 This is opaque outside of "packet.c". */
664struct heur_dissector_list;
665typedef struct heur_dissector_list *heur_dissector_list_t;
666
667
671typedef struct heur_dtbl_entry {
672 heur_dissector_t dissector;
673 protocol_t* protocol;
674 char* list_name;
675 const char* display_name;
676 char* short_name;
677 bool enabled;
678 bool enabled_by_default;
679} heur_dtbl_entry_t;
680
688WS_DLL_PUBLIC heur_dissector_list_t register_heur_dissector_list_with_description(const char *name, const char *ui_name, const int proto);
689
694WS_DLL_PUBLIC const char *heur_dissector_list_get_description(heur_dissector_list_t list);
695
702WS_DLL_PUBLIC heur_dissector_list_t register_heur_dissector_list(const char *name, const int proto);
703
705 void deregister_heur_dissector_list(const char *name);
706
707 typedef void (*DATFunc_heur) (const char *table_name,
708 struct heur_dtbl_entry *entry, void *user_data);
709 typedef void (*DATFunc_heur_table) (const char *table_name,
710 struct heur_dissector_list *table, void *user_data);
711
721WS_DLL_PUBLIC void heur_dissector_table_foreach(const char *table_name,
722 DATFunc_heur func, void *user_data);
723
732WS_DLL_PUBLIC void dissector_all_heur_tables_foreach_table (DATFunc_heur_table func,
733 void *user_data, GCompareFunc compare_key_func);
734
740WS_DLL_PUBLIC bool has_heur_dissector_list(const char *name);
741
754WS_DLL_PUBLIC bool dissector_try_heuristic(heur_dissector_list_t sub_dissectors,
755 tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, heur_dtbl_entry_t **hdtbl_entry, void *data);
756
762WS_DLL_PUBLIC heur_dissector_list_t find_heur_dissector_list(const char *name);
763
769WS_DLL_PUBLIC heur_dtbl_entry_t* find_heur_dissector_by_unique_short_name(const char *short_name);
770
781WS_DLL_PUBLIC void heur_dissector_add(const char *name, heur_dissector_t dissector,
782 const char *display_name, const char *internal_name, const int proto, heuristic_enable_e enable);
783
791WS_DLL_PUBLIC void heur_dissector_delete(const char *name, heur_dissector_t dissector, const int proto);
792
802WS_DLL_PUBLIC dissector_handle_t register_dissector(const char *name,
803 dissector_t dissector, const int proto);
804
814WS_DLL_PUBLIC dissector_handle_t register_dissector_with_description(const char *name,
815 const char *description, dissector_t dissector, const int proto);
816
827WS_DLL_PUBLIC dissector_handle_t register_dissector_with_data(const char *name,
828 dissector_cb_t dissector, const int proto, void *cb_data);
829
834 void deregister_dissector(const char *name);
835
843WS_DLL_PUBLIC const char *dissector_handle_get_protocol_long_name(
844 const dissector_handle_t handle);
845
853WS_DLL_PUBLIC const char *dissector_handle_get_protocol_short_name(
854 const dissector_handle_t handle);
855
862WS_DLL_PUBLIC const char *dissector_handle_get_description(
863 const dissector_handle_t handle);
864
872WS_DLL_PUBLIC int dissector_handle_get_protocol_index(
873 const dissector_handle_t handle);
874
879WS_DLL_PUBLIC GList *get_dissector_names(void);
880
888WS_DLL_PUBLIC dissector_handle_t find_dissector(const char *name);
889
897WS_DLL_PUBLIC dissector_handle_t find_dissector_add_dependency(const char *name,
898 const int parent_proto);
899
907WS_DLL_PUBLIC const char *dissector_handle_get_dissector_name(
908 const dissector_handle_t handle);
909
916WS_DLL_PUBLIC const char *dissector_handle_get_pref_suffix(
917 const dissector_handle_t handle);
918
932WS_DLL_PUBLIC dissector_handle_t create_dissector_handle(dissector_t dissector,
933 const int proto);
934
951WS_DLL_PUBLIC dissector_handle_t create_dissector_handle_with_name(
952 dissector_t dissector, const int proto, const char *name);
953
968WS_DLL_PUBLIC dissector_handle_t create_dissector_handle_with_name_and_description(dissector_t dissector,
969 const int proto, const char* name, const char* description);
970
983WS_DLL_PUBLIC dissector_handle_t create_dissector_handle_with_data(
984 dissector_cb_t dissector, const int proto, void *cb_data);
985
989WS_DLL_PUBLIC void dissector_dump_dissectors(void);
990
1005WS_DLL_PUBLIC int call_dissector_with_data(dissector_handle_t handle, tvbuff_t *tvb,
1006 packet_info *pinfo, proto_tree *tree, void *data);
1007
1021WS_DLL_PUBLIC int call_dissector(dissector_handle_t handle, tvbuff_t *tvb,
1022 packet_info *pinfo, proto_tree *tree);
1023
1032WS_DLL_PUBLIC int call_data_dissector(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
1033
1047WS_DLL_PUBLIC int call_dissector_only(dissector_handle_t handle, tvbuff_t *tvb,
1048 packet_info *pinfo, proto_tree *tree, void *data);
1049
1057WS_DLL_PUBLIC void call_heur_dissector_direct(heur_dtbl_entry_t *heur_dtbl_entry, tvbuff_t *tvb,
1058 packet_info *pinfo, proto_tree *tree, void *data);
1059
1060/* This is opaque outside of "packet.c". */
1061 struct depend_dissector_list;
1062 typedef struct depend_dissector_list *depend_dissector_list_t;
1063
1074WS_DLL_PUBLIC bool register_depend_dissector(const char* parent, const char* dependent);
1075
1085WS_DLL_PUBLIC bool deregister_depend_dissector(const char* parent, const char* dependent);
1086
1092WS_DLL_PUBLIC depend_dissector_list_t find_depend_dissector_list(const char* name);
1093
1101WS_DLL_PUBLIC void set_actual_length(tvbuff_t *tvb, const unsigned specified_len);
1102
1110WS_DLL_PUBLIC void register_init_routine(void (*func)(void));
1111
1119WS_DLL_PUBLIC void register_cleanup_routine(void (*func)(void));
1120
1125WS_DLL_PUBLIC void register_shutdown_routine(void (*func)(void));
1126
1131 void init_dissection(const char* app_env_var_prefix);
1132
1134 void cleanup_dissection(void);
1135
1140WS_DLL_PUBLIC void register_postseq_cleanup_routine(void (*func)(void));
1141
1143WS_DLL_PUBLIC void postseq_cleanup_all_protocols(void);
1144
1154WS_DLL_PUBLIC void
1155 register_final_registration_routine(void (*func)(void));
1156
1160 extern void
1161 final_registration_all_protocols(void);
1162
1163// XXX Should we move frame_data.encoding here?
1167 typedef enum {
1168 DS_MEDIA_TYPE_APPLICATION_OCTET_STREAM,
1169 DS_MEDIA_TYPE_APPLICATION_JSON,
1170} data_source_media_type_e;
1171
1172 struct data_source;
1173
1183WS_DLL_PUBLIC struct data_source* add_new_data_source(packet_info *pinfo, tvbuff_t *tvb,
1184 const char *name);
1185
1192WS_DLL_PUBLIC void set_data_source_name(packet_info *pinfo, struct data_source *src, const char *name);
1193
1200WS_DLL_PUBLIC void set_data_source_media_type(struct data_source *src, data_source_media_type_e media_type);
1201
1210WS_DLL_PUBLIC void remove_last_data_source(packet_info *pinfo);
1211
1219WS_DLL_PUBLIC const char *get_data_source_name(const struct data_source *src);
1220
1228WS_DLL_PUBLIC char *get_data_source_description(const struct data_source *src);
1229
1238WS_DLL_PUBLIC tvbuff_t *get_data_source_tvb(const struct data_source *src);
1245WS_DLL_PUBLIC struct data_source *get_data_source_by_name(const packet_info *pinfo, const char *name);
1246
1253WS_DLL_PUBLIC struct data_source *get_data_source_by_tvb(const packet_info *pinfo, const tvbuff_t *tvb);
1254
1262WS_DLL_PUBLIC int32_t get_data_source_index_by_tvb(const packet_info *pinfo, const tvbuff_t *tvb);
1263
1269WS_DLL_PUBLIC data_source_media_type_e get_data_source_media_type(const struct data_source *src);
1270
1275 extern void free_data_sources(packet_info *pinfo);
1276
1295WS_DLL_PUBLIC void mark_frame_as_depended_upon(frame_data *fd, uint32_t frame_num);
1296
1300 typedef struct frame_data_s
1301{
1302 int file_type_subtype;
1303 wtap_block_t pkt_block;
1305 struct epan_dissect* color_edt;
1306} frame_data_t;
1307
1311 typedef struct file_data_s
1312{
1313 wtap_block_t pkt_block;
1314 struct epan_dissect* color_edt;
1315} file_data_t;
1316
1325 extern void dissect_record(struct epan_dissect *edt, int file_type_subtype,
1326 wtap_rec *rec, frame_data *fd, column_info *cinfo);
1327
1335 extern void dissect_file(struct epan_dissect *edt,
1336 wtap_rec *rec, frame_data *fd, column_info *cinfo);
1337
1341 typedef struct ethertype_data_s
1342{
1343 uint16_t etype;
1344 int payload_offset;
1345 proto_tree* fh_tree;
1346 int trailer_id;
1347 int fcs_len;
1348} ethertype_data_t;
1349
1354WS_DLL_PUBLIC void dissector_dump_decodes(void);
1355
1359WS_DLL_PUBLIC void dissector_dump_heur_decodes(void);
1360
1361/*
1362 * postdissectors are to be called by packet-frame.c after every other
1363 * dissector has been called.
1364 */
1365
1370WS_DLL_PUBLIC void register_postdissector(dissector_handle_t handle);
1371
1388WS_DLL_PUBLIC void set_postdissector_wanted_hfids(dissector_handle_t handle,
1389 GArray *wanted_hfids);
1390
1396 void deregister_postdissector(dissector_handle_t handle);
1397
1408 extern bool have_postdissector(void);
1409
1423 extern void call_all_postdissectors(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
1424
1434WS_DLL_PUBLIC bool postdissectors_want_hfids(void);
1435
1449 extern void
1450 prime_epan_dissect_with_postdissector_wanted_hfids(epan_dissect_t *edt);
1451
1457WS_DLL_PUBLIC void increment_dissection_depth(packet_info *pinfo);
1458
1465WS_DLL_PUBLIC void increment_dissection_depth_by_n(packet_info *pinfo, unsigned n);
1466
1471WS_DLL_PUBLIC void decrement_dissection_depth(packet_info *pinfo);
1472
1478WS_DLL_PUBLIC void decrement_dissection_depth_by_n(packet_info *pinfo, unsigned n);
1479
1481
1482#ifdef __cplusplus
1483}
1484#endif /* __cplusplus */
array.h
column-utils.h
epan.h
epan_dissect_t
struct epan_dissect epan_dissect_t
Opaque type representing a single packet dissection context.
Definition epan.h:62
frame_data.h
ftenum_t
enum ftenum ftenum_t
Convenience typedef for ftenum.
Definition ftypes.h:190
frame_data
DIAG_OFF_PEDANTIC struct _frame_data frame_data
Frame data structure.
dissector_table_foreach
WS_DLL_PUBLIC void dissector_table_foreach(const char *table_name, DATFunc func, void *user_data)
Definition packet.c:2630
register_postdissector
WS_DLL_PUBLIC void register_postdissector(dissector_handle_t handle)
Register a postdissector; the argument is the dissector handle for it.
Definition packet.c:4179
has_heur_dissector_list
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:2960
call_dissector_only
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:3688
dissector_handle_get_protocol_long_name
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:3387
deregister_dissector
void deregister_dissector(const char *name)
Deregister a previously registered dissector.
Definition packet.c:3672
dissector_add_uint_with_preference
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:1504
dissector_get_default_string_handle
WS_DLL_PUBLIC dissector_handle_t dissector_get_default_string_handle(const char *name, const char *string)
Definition packet.c:2128
create_dissector_handle_with_data
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:3584
increment_dissection_depth_by_n
WS_DLL_PUBLIC void increment_dissection_depth_by_n(packet_info *pinfo, unsigned n)
Definition packet.c:4290
dtbl_entry_get_handle
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:2311
dissector_get_payload_handle
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:2305
set_actual_length
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
find_heur_dissector_by_unique_short_name
WS_DLL_PUBLIC heur_dtbl_entry_t * find_heur_dissector_by_unique_short_name(const char *short_name)
Definition packet.c:2964
get_data_source_tvb
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
dissector_table_foreach_changed
void dissector_table_foreach_changed(const char *table_name, DATFunc func, void *user_data)
Definition packet.c:2707
dissector_get_default_uint_handle
WS_DLL_PUBLIC dissector_handle_t dissector_get_default_uint_handle(const char *name, const uint32_t uint_val)
Definition packet.c:1822
find_dissector_add_dependency
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:3455
register_dissector
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:3626
deregister_dissector_table
void deregister_dissector_table(const char *name)
Deregister the dissector table by table name.
Definition packet.c:2898
packet_cleanup
void packet_cleanup(void)
Clean up the packet dissection engine.
Definition packet.c:310
dissector_add_uint
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:1351
dissector_get_guid_handle
WS_DLL_PUBLIC dissector_handle_t dissector_get_guid_handle(dissector_table_t const sub_dissectors, guid_key *guid_val)
Definition packet.c:2267
set_postdissector_wanted_hfids
WS_DLL_PUBLIC void set_postdissector_wanted_hfids(dissector_handle_t handle, GArray *wanted_hfids)
Definition packet.c:4189
register_dissector_with_data
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:3646
dissector_change_uint
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:1650
find_heur_dissector_list
WS_DLL_PUBLIC heur_dissector_list_t find_heur_dissector_list(const char *name)
Definition packet.c:2954
dissector_delete_string
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:1940
dissector_table_get_type
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:2502
call_all_postdissectors
void call_all_postdissectors(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
Invoke all registered postdissectors on the current frame.
Definition packet.c:4243
dissector_dump_decodes
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:4008
packet_all_tables_sort_handles
void packet_all_tables_sort_handles(void)
Sort the dissector handles in all dissector tables.
Definition packet.c:2339
register_postseq_cleanup_routine
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
dissector_try_uint
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:1800
dissector_handle_get_dissector_name
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:3468
deregister_heur_dissector_list
void deregister_heur_dissector_list(const char *name)
Definition packet.c:3361
dissector_dump_heur_decodes
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:3329
dissector_get_custom_table_handle
WS_DLL_PUBLIC dissector_handle_t dissector_get_custom_table_handle(dissector_table_t sub_dissectors, void *key)
Definition packet.c:2171
get_dissector_names
WS_DLL_PUBLIC GList * get_dissector_names(void)
Return a GList of all registered dissector name strings.
Definition packet.c:3438
dissector_handle_get_description
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:3409
dissector_delete_uint
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:1533
dissector_table_supports_decode_as
bool dissector_table_supports_decode_as(dissector_table_t dissector_table)
Return whether a dissector table supports Decode As.
Definition packet.c:2522
decrement_dissection_depth
WS_DLL_PUBLIC void decrement_dissection_depth(packet_info *pinfo)
Decrement the dissection depth.
Definition packet.c:4308
register_init_routine
WS_DLL_PUBLIC void register_init_routine(void(*func)(void))
Definition packet.c:352
file_data_t
struct file_data_s file_data_t
Holds the data passed to the file dissector for dissection of a capture file as a whole.
dissector_get_uint_handle
WS_DLL_PUBLIC dissector_handle_t dissector_get_uint_handle(dissector_table_t const sub_dissectors, const uint32_t uint_val)
Definition packet.c:1810
heur_dissector_delete
WS_DLL_PUBLIC void heur_dissector_delete(const char *name, heur_dissector_t dissector, const int proto)
Definition packet.c:3056
set_data_source_name
WS_DLL_PUBLIC void set_data_source_name(packet_info *pinfo, struct data_source *src, const char *name)
Definition packet.c:452
register_depend_dissector
WS_DLL_PUBLIC bool register_depend_dissector(const char *parent, const char *dependent)
Definition packet.c:3808
guid_key
struct _guid_key guid_key
Lookup key for GUID-indexed dissector tables, combining a GUID with an optional version field.
deregister_postdissector
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:4207
register_cleanup_routine
WS_DLL_PUBLIC void register_cleanup_routine(void(*func)(void))
Definition packet.c:358
create_dissector_handle
WS_DLL_PUBLIC dissector_handle_t create_dissector_handle(dissector_t dissector, const int proto)
Create an anonymous, unregistered dissector handle.
Definition packet.c:3566
dissector_handle_get_pref_suffix
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:3477
dissector_try_string_with_data
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:2057
dissector_handle_get_protocol_short_name
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:3398
dissector_is_string_changed
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:2043
dissector_delete_uint_range
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:1556
remove_last_data_source
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
dissector_change_string
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:1965
get_dissector_table_selector_type
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:2925
register_final_registration_routine
WS_DLL_PUBLIC void register_final_registration_routine(void(*func)(void))
Definition packet.c:600
heur_dissector_table_foreach
WS_DLL_PUBLIC void heur_dissector_table_foreach(const char *table_name, DATFunc_heur func, void *user_data)
Definition packet.c:3226
dissector_add_custom_table_handle
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:2144
dissector_add_uint_range
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:1369
dissector_table_allow_decode_as
void dissector_table_allow_decode_as(dissector_table_t dissector_table)
Mark a dissector table as supporting Decode As.
Definition packet.c:2516
dissector_change_payload
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:2290
heuristic_enable_e
heuristic_enable_e
Controls whether a heuristic dissector is active.
Definition packet.h:109
dissector_dump_dissector_tables
WS_DLL_PUBLIC void dissector_dump_dissector_tables(void)
Print information about all registered dissector tables to standard output.
Definition packet.c:4112
frame_data_t
struct frame_data_s frame_data_t
Holds the data passed to the frame dissector for dissection of a single packet frame.
get_data_source_by_name
WS_DLL_PUBLIC struct data_source * get_data_source_by_name(const packet_info *pinfo, const char *name)
Definition packet.c:506
find_dissector
WS_DLL_PUBLIC dissector_handle_t find_dissector(const char *name)
Find a registered dissector by name.
Definition packet.c:3449
call_dissector
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:3719
dissect_file
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:779
init_dissection
void init_dissection(const char *app_env_var_prefix)
Initialize all data structures used for dissection.
Definition packet.c:372
increment_dissection_depth
WS_DLL_PUBLIC void increment_dissection_depth(packet_info *pinfo)
Definition packet.c:4297
dissector_all_tables_foreach_table
WS_DLL_PUBLIC void dissector_all_tables_foreach_table(DATFunc_table func, void *user_data, GCompareFunc compare_key_func)
Definition packet.c:2762
dissector_all_heur_tables_foreach_table
WS_DLL_PUBLIC void dissector_all_heur_tables_foreach_table(DATFunc_heur_table func, void *user_data, GCompareFunc compare_key_func)
Definition packet.c:3282
packet_init
void packet_init(void)
Initialize the packet dissection engine.
Definition packet.c:229
dissect_record
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
dissector_reset_string
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:2011
get_data_source_description
WS_DLL_PUBLIC char * get_data_source_description(const struct data_source *src)
Return the description of a data source.
Definition packet.c:476
dissector_table_get_dissector_handles
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:2455
dissector_all_tables_foreach_changed
WS_DLL_PUBLIC void dissector_all_tables_foreach_changed(DATFunc func, void *user_data)
Definition packet.c:2691
dissector_reset_payload
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:2296
create_dissector_handle_with_name_and_description
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:3543
dissector_handle_get_protocol_index
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:3420
mark_frame_as_depended_upon
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
register_dissector_table
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:2785
dissector_is_uint_changed
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:1728
set_data_source_media_type
WS_DLL_PUBLIC void set_data_source_media_type(struct data_source *src, data_source_media_type_e media_type)
Definition packet.c:459
find_depend_dissector_list
WS_DLL_PUBLIC depend_dissector_list_t find_depend_dissector_list(const char *name)
Definition packet.c:3841
heur_dissector_list_get_description
WS_DLL_PUBLIC const char * heur_dissector_list_get_description(heur_dissector_list_t list)
Definition packet.c:3372
cleanup_dissection
void cleanup_dissection(void)
Free data structures allocated for dissection.
Definition packet.c:397
packet_cache_proto_handles
void packet_cache_proto_handles(void)
Cache protocol handles for fast lookup during dissection.
Definition packet.c:253
dissector_delete_guid
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:1571
register_dissector_table_alias
WS_DLL_PUBLIC void register_dissector_table_alias(dissector_table_t dissector_table, const char *alias_name)
Definition packet.c:2880
postdissectors_want_hfids
WS_DLL_PUBLIC bool postdissectors_want_hfids(void)
Return whether any postdissector has requested specific hfids.
Definition packet.c:4254
deregister_depend_dissector
WS_DLL_PUBLIC bool deregister_depend_dissector(const char *parent, const char *dependent)
Definition packet.c:3831
decrement_dissection_depth_by_n
WS_DLL_PUBLIC void decrement_dissection_depth_by_n(packet_info *pinfo, unsigned n)
Decrement the dissection depth by a value.
Definition packet.c:4302
call_data_dissector
WS_DLL_PUBLIC int call_data_dissector(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
Call a data dissector.
Definition packet.c:3726
add_new_data_source
WS_DLL_PUBLIC struct data_source * add_new_data_source(packet_info *pinfo, tvbuff_t *tvb, const char *name)
Definition packet.c:437
dissector_add_guid
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:2181
call_dissector_with_data
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:3702
call_heur_dissector_direct
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:3735
dissector_add_string
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:1878
prime_epan_dissect_with_postdissector_wanted_hfids
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:4269
heur_dissector_add
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:2970
postseq_cleanup_all_protocols
WS_DLL_PUBLIC void postseq_cleanup_all_protocols(void)
Call all the registered "postseq_cleanup" routines.
Definition packet.c:427
register_dissector_with_description
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:3636
have_postdissector
bool have_postdissector(void)
Return whether any postdissectors are registered.
Definition packet.c:4225
create_dissector_handle_with_name
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:3558
get_data_source_by_tvb
WS_DLL_PUBLIC struct data_source * get_data_source_by_tvb(const packet_info *pinfo, const tvbuff_t *tvb)
Definition packet.c:524
heur_dissector_t
bool(* heur_dissector_t)(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *)
Definition packet.h:103
dissector_table_get_dissector_handle
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:2485
free_data_sources
void free_data_sources(packet_info *pinfo)
Free up a frame's list of data sources.
Definition packet.c:567
dissector_add_for_decode_as
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:2358
dissector_table_allow_decode_as_internal
void dissector_table_allow_decode_as_internal(dissector_table_t dissector_table)
Mark a dissector table as supporting Decode As.
Definition packet.c:2508
register_heur_dissector_list
WS_DLL_PUBLIC heur_dissector_list_t register_heur_dissector_list(const char *name, const int proto)
Definition packet.c:3355
get_data_source_name
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
final_registration_all_protocols
void final_registration_all_protocols(void)
Call all the registered "final_registration" routines.
Definition packet.c:608
dissector_try_uint_with_data
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:1743
data_source_media_type_e
data_source_media_type_e
MIME media type descriptor for a packet data source buffer.
Definition packet.h:1167
ethertype_data_t
struct ethertype_data_s ethertype_data_t
Holds the parameters passed to the Ethertype dissector for dissecting an Ethernet payload.
dissector_table_foreach_handle
WS_DLL_PUBLIC void dissector_table_foreach_handle(const char *table_name, DATFunc_handle func, void *user_data)
Definition packet.c:2649
get_dissector_table_ui_name
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:2916
dissector_try_heuristic
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:3082
find_dissector_table
WS_DLL_PUBLIC dissector_table_t find_dissector_table(const char *name)
Find a dissector table by its internal name.
Definition packet.c:1219
dtbl_entry_get_initial_handle
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:2449
register_shutdown_routine
WS_DLL_PUBLIC void register_shutdown_routine(void(*func)(void))
Definition packet.c:365
dissector_try_payload_with_data
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:2282
dissector_dump_dissectors
WS_DLL_PUBLIC void dissector_dump_dissectors(void)
Dump all registered dissectors to the standard output.
Definition packet.c:4151
dissector_reset_uint
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:1695
dissector_add_for_decode_as_with_preference
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:2436
dissector_try_guid_with_data
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:2213
dissector_delete_all
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:1618
register_custom_dissector_table
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:2852
dissector_add_uint_range_with_preference
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:1515
get_data_source_index_by_tvb
WS_DLL_PUBLIC int32_t get_data_source_index_by_tvb(const packet_info *pinfo, const tvbuff_t *tvb)
Definition packet.c:538
dissector_get_string_handle
WS_DLL_PUBLIC dissector_handle_t dissector_get_string_handle(dissector_table_t sub_dissectors, const char *string)
Definition packet.c:2113
get_dissector_table_param
WS_DLL_PUBLIC int get_dissector_table_param(const char *name)
Return the parameter value associated with a dissector table.
Definition packet.c:2934
get_data_source_media_type
WS_DLL_PUBLIC data_source_media_type_e get_data_source_media_type(const struct data_source *src)
Definition packet.c:554
heur_dtbl_entry_t
struct heur_dtbl_entry heur_dtbl_entry_t
Represents a single entry in a heuristic dissector table, binding a heuristic dissector to its protoc...
register_heur_dissector_list_with_description
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:3336
HEURISTIC_DISABLE
@ HEURISTIC_DISABLE
Definition packet.h:110
HEURISTIC_ENABLE
@ HEURISTIC_ENABLE
Definition packet.h:111
DS_MEDIA_TYPE_APPLICATION_JSON
@ DS_MEDIA_TYPE_APPLICATION_JSON
Definition packet.h:1169
DS_MEDIA_TYPE_APPLICATION_OCTET_STREAM
@ DS_MEDIA_TYPE_APPLICATION_OCTET_STREAM
Definition packet.h:1168
packet_info
struct _packet_info packet_info
Represents the metadata and indexing information for a single captured frame.
protocol_t
struct _protocol protocol_t
Definition proto.h:100
guid-utils.h
e_guid_t
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...
packet_info.h
proto.h
range.h
range_t
struct epan_range range_t
_guid_key
Lookup key for GUID-indexed dissector tables, combining a GUID with an optional version field.
Definition packet.h:503
_guid_key::ver
uint16_t ver
Definition packet.h:505
_guid_key::guid
e_guid_t guid
Definition packet.h:504
data_source
Definition packet.c:56
depend_dissector_list
Definition packet.c:129
dissector_handle
Definition packet.c:867
dissector_table
Definition packet.c:97
dtbl_entry
Definition packet.c:1212
epan_dissect
Holds all state for the dissection of a single byte array, including session, buffer,...
Definition epan_dissect.h:28
ethertype_data_s
Holds the parameters passed to the Ethertype dissector for dissecting an Ethernet payload.
Definition packet.h:1342
ethertype_data_s::payload_offset
int payload_offset
Definition packet.h:1344
ethertype_data_s::etype
uint16_t etype
Definition packet.h:1343
ethertype_data_s::fcs_len
int fcs_len
Definition packet.h:1347
ethertype_data_s::fh_tree
proto_tree * fh_tree
Definition packet.h:1345
ethertype_data_s::trailer_id
int trailer_id
Definition packet.h:1346
file_data_s
Holds the data passed to the file dissector for dissection of a capture file as a whole.
Definition packet.h:1312
file_data_s::pkt_block
wtap_block_t pkt_block
Definition packet.h:1313
file_data_s::color_edt
struct epan_dissect * color_edt
Definition packet.h:1314
frame_data_s
Holds the data passed to the frame dissector for dissection of a single packet frame.
Definition packet.h:1301
frame_data_s::file_type_subtype
int file_type_subtype
Definition packet.h:1302
frame_data_s::pkt_block
wtap_block_t pkt_block
Definition packet.h:1303
frame_data_s::color_edt
struct epan_dissect * color_edt
Definition packet.h:1305
heur_dissector_list
Definition packet.c:186
heur_dtbl_entry
Represents a single entry in a heuristic dissector table, binding a heuristic dissector to its protoc...
Definition packet.h:671
heur_dtbl_entry::display_name
const char * display_name
Definition packet.h:675
heur_dtbl_entry::list_name
char * list_name
Definition packet.h:674
heur_dtbl_entry::short_name
char * short_name
Definition packet.h:676
heur_dtbl_entry::enabled
bool enabled
Definition packet.h:677
heur_dtbl_entry::enabled_by_default
bool enabled_by_default
Definition packet.h:678
heur_dtbl_entry::dissector
heur_dissector_t dissector
Definition packet.h:672
heur_dtbl_entry::protocol
protocol_t * protocol
Definition packet.h:673
wtap_block
A single instance of a pcapng block, holding its type descriptor, mandatory data payload,...
Definition wtap_opttypes.h:274
wtap_rec
Represents a single capture record read from or written to a capture file, regardless of record type.
Definition wtap.h:1600
tvbuff.h