Wireshark  4.3.0
The Wireshark network protocol analyzer
proto.h
Go to the documentation of this file.
1 /* proto.h
2  * Definitions for protocol display
3  *
4  * Wireshark - Network traffic analyzer
5  * By Gerald Combs <[email protected]>
6  * Copyright 1998 Gerald Combs
7  *
8  * SPDX-License-Identifier: GPL-2.0-or-later
9  */
10 
11 
23 #ifndef __PROTO_H__
24 #define __PROTO_H__
25 
26 #include <stdarg.h>
27 
28 #include <glib.h>
29 
30 #include <epan/wmem_scopes.h>
31 
32 #include "wsutil/inet_cidr.h"
33 #include "wsutil/nstime.h"
34 #include "tvbuff.h"
35 #include "value_string.h"
36 #include "tfs.h"
37 #include "packet_info.h"
38 #include "ftypes/ftypes.h"
39 #include "register.h"
40 #include "ws_symbol_export.h"
41 #include "ws_attributes.h"
42 
43 #ifdef __cplusplus
44 extern "C" {
45 #endif /* __cplusplus */
46 
56 WS_DLL_PUBLIC int hf_text_only;
57 
59 #define ITEM_LABEL_LENGTH 240
60 
61 #define ITEM_LABEL_UNKNOWN_STR "Unknown"
62 
63 struct expert_field;
64 
65 /* Type-check that 'x' is compatible with 'type', should give compiler warnings otherwise. */
66 #define cast_same(type, x) (0 ? (type)0 : (x))
67 
69 #define VALS(x) (cast_same(const struct _value_string*, (x)))
70 
72 #define VALS64(x) (cast_same(const struct _val64_string*, (x)))
73 
75 #define VALS_EXT_PTR(x) (cast_same(value_string_ext*, (x)))
76 
78 #define TFS(x) (cast_same(const struct true_false_string*, (x)))
79 
80 typedef void (*custom_fmt_func_t)(gchar *, guint32);
81 
82 typedef void (*custom_fmt_func_64_t)(gchar *, guint64);
83 
84 typedef void (*custom_fmt_func_double_t)(gchar *, double);
85 
93 #define CF_FUNC(x) ((const void *) (gsize) (x))
94 
97 #define RVALS(x) (cast_same(const struct _range_string*, (x)))
98 
100 #define FRAMENUM_TYPE(x) GINT_TO_POINTER(x)
101 
102 struct _protocol;
103 
105 typedef struct _protocol protocol_t;
106 
117 WS_DLL_PUBLIC WS_NORETURN
118 void proto_report_dissector_bug(const char *format, ...)
119  G_GNUC_PRINTF(1, 2);
120 
121 #define REPORT_DISSECTOR_BUG(...) \
122  proto_report_dissector_bug(__VA_ARGS__)
123 
127 #ifdef _MSC_VER
128 /* XXX - Is there a way to say "quit checking at this point"? */
129 #define __DISSECTOR_ASSERT_STATIC_ANALYSIS_HINT(expression) \
130  ; __analysis_assume(expression);
131 #else
132 #define __DISSECTOR_ASSERT_STATIC_ANALYSIS_HINT(expression)
133 #endif
134 
146 #define __DISSECTOR_ASSERT_STRINGIFY(s) # s
147 
148 #define __DISSECTOR_ASSERT(expression, file, lineno) \
149  (REPORT_DISSECTOR_BUG("%s:%u: failed assertion \"%s\"", \
150  file, lineno, __DISSECTOR_ASSERT_STRINGIFY(expression)))
151 
152 #define __DISSECTOR_ASSERT_HINT(expression, file, lineno, hint) \
153  (REPORT_DISSECTOR_BUG("%s:%u: failed assertion \"%s\" (%s)", \
154  file, lineno, __DISSECTOR_ASSERT_STRINGIFY(expression), hint))
155 
156 #define DISSECTOR_ASSERT(expression) \
157  ((void) ((expression) ? (void)0 : \
158  __DISSECTOR_ASSERT (expression, __FILE__, __LINE__))) \
159  __DISSECTOR_ASSERT_STATIC_ANALYSIS_HINT(expression)
160 
168 #define DISSECTOR_ASSERT_HINT(expression, hint) \
169  ((void) ((expression) ? (void)0 : \
170  __DISSECTOR_ASSERT_HINT (expression, __FILE__, __LINE__, hint))) \
171  __DISSECTOR_ASSERT_STATIC_ANALYSIS_HINT(expression)
172 
173 #if 0
174 /* win32: using a debug breakpoint (int 3) can be very handy while debugging,
175  * as the assert handling of GTK/GLib is currently not very helpful */
176 #define DISSECTOR_ASSERT(expression) \
177 { if(!(expression)) _asm { int 3}; }
178 #endif
179 
188 #define DISSECTOR_ASSERT_NOT_REACHED() \
189  (REPORT_DISSECTOR_BUG("%s:%u: failed assertion \"DISSECTOR_ASSERT_NOT_REACHED\"", \
190  __FILE__, __LINE__))
191 
211 #define __DISSECTOR_ASSERT_CMPINT(a, op, b, type, fmt) \
212  (REPORT_DISSECTOR_BUG("%s:%u: failed assertion " #a " " #op " " #b " (" fmt " " #op " " fmt ")", \
213  __FILE__, __LINE__, (type)a, (type)b))
214 
215 #define DISSECTOR_ASSERT_CMPINT(a, op, b) \
216  ((void) ((a op b) ? (void)0 : \
217  __DISSECTOR_ASSERT_CMPINT (a, op, b, int64_t, "%" PRId64))) \
218  __DISSECTOR_ASSERT_STATIC_ANALYSIS_HINT(a op b)
219 
225 #define DISSECTOR_ASSERT_CMPUINT(a, op, b) \
226  ((void) ((a op b) ? (void)0 : \
227  __DISSECTOR_ASSERT_CMPINT (a, op, b, uint64_t, "%" PRIu64))) \
228  __DISSECTOR_ASSERT_STATIC_ANALYSIS_HINT(a op b)
229 
233 #define DISSECTOR_ASSERT_CMPUINTHEX(a, op, b) \
234  ((void) ((a op b) ? (void)0 : \
235  __DISSECTOR_ASSERT_CMPINT (a, op, b, uint64_t, "0x%" PRIX64))) \
236  __DISSECTOR_ASSERT_STATIC_ANALYSIS_HINT(a op b)
237 
238 /*
239  * This is similar to DISSECTOR_ASSERT(hfinfo->type == type) except that
240  * it will report the name of the field with the wrong type as well as
241  * the type.
242  *
243  * @param hfinfo The hfinfo for the field being tested
244  * @param type The type it's expected to have
245  */
246 #define __DISSECTOR_ASSERT_FIELD_TYPE(hfinfo, t) \
247  (REPORT_DISSECTOR_BUG("%s:%u: field %s is not of type "#t, \
248  __FILE__, __LINE__, (hfinfo)->abbrev))
249 
250 #define DISSECTOR_ASSERT_FIELD_TYPE(hfinfo, t) \
251  ((void) (((hfinfo)->type == t) ? (void)0 : \
252  __DISSECTOR_ASSERT_FIELD_TYPE ((hfinfo), t))) \
253  __DISSECTOR_ASSERT_STATIC_ANALYSIS_HINT((hfinfo)->type == t)
254 
255 #define DISSECTOR_ASSERT_FIELD_TYPE_IS_INTEGRAL(hfinfo) \
256  ((void) ((FT_IS_INTEGER((hfinfo)->type)) ? (void)0 : \
257  REPORT_DISSECTOR_BUG("%s:%u: field %s is not of type FT_CHAR or an FT_{U}INTn type", \
258  __FILE__, __LINE__, (hfinfo)->abbrev))) \
259  __DISSECTOR_ASSERT_STATIC_ANALYSIS_HINT(FT_IS_INTEGER((hfinfo)->type))
260 
261 #define __DISSECTOR_ASSERT_FIELD_TYPE_IS_STRING(hfinfo) \
262  (REPORT_DISSECTOR_BUG("%s:%u: field %s is not of type FT_STRING, FT_STRINGZ, FT_STRINGZPAD, FT_STRINGZTRUNC, or FT_UINT_STRING", \
263  __FILE__, __LINE__, (hfinfo)->abbrev))
264 
265 #define DISSECTOR_ASSERT_FIELD_TYPE_IS_STRING(hfinfo) \
266  ((void) (FT_IS_STRING((hfinfo)->type) ? (void)0 : \
267  __DISSECTOR_ASSERT_FIELD_TYPE_IS_STRING ((hfinfo)))) \
268  __DISSECTOR_ASSERT_STATIC_ANALYSIS_HINT(FT_IS_STRING((hfinfo)->type))
269 
270 #define __DISSECTOR_ASSERT_FIELD_TYPE_IS_TIME(hfinfo) \
271  (REPORT_DISSECTOR_BUG("%s:%u: field %s is not of type FT_ABSOLUTE_TIME or FT_RELATIVE_TIME", \
272  __FILE__, __LINE__, (hfinfo)->abbrev))
273 
274 #define DISSECTOR_ASSERT_FIELD_TYPE_IS_TIME(hfinfo) \
275  ((void) (((hfinfo)->type == FT_ABSOLUTE_TIME || \
276  (hfinfo)->type == FT_RELATIVE_TIME) ? (void)0 : \
277  __DISSECTOR_ASSERT_FIELD_TYPE_IS_TIME ((hfinfo)))) \
278  __DISSECTOR_ASSERT_STATIC_ANALYSIS_HINT((hfinfo)->type == FT_ABSOLUTE_TIME || \
279  (hfinfo)->type == FT_RELATIVE_TIME)
280 
281 /*
282  * Encoding flags that apply to multiple data types.
283  */
284 /*
285  * The encoding of a field of a particular type may involve more
286  * than just whether it's big-endian or little-endian and its size.
287  *
288  * For integral values, that's it, as 99.9999999999999% of the machines
289  * out there are 2's complement binary machines with 8-bit bytes,
290  * so the protocols out there expect that and, for example, any Unisys
291  * 2200 series machines out there just have to translate between 2's
292  * complement and 1's complement (and nobody's put any IBM 709x's on
293  * any networks lately :-)).
294  *
295  * However:
296  *
297  * for floating-point numbers, in addition to IEEE decimal
298  * floating-point, there's also IBM System/3x0 and PDP-11/VAX
299  * floating-point - most protocols use IEEE binary, but DCE RPC
300  * can use other formats if that's what the sending host uses;
301  *
302  * for character strings, there are various character encodings
303  * (various ISO 646 sets, ISO 8859/x, various other national
304  * standards, various DOS and Windows encodings, various Mac
305  * encodings, UTF-8, UTF-16, other extensions to ASCII, EBCDIC,
306  * etc.);
307  *
308  * for absolute times, there's UNIX time_t, UNIX time_t followed
309  * by 32-bit microseconds, UNIX time_t followed by 32-bit
310  * nanoseconds, DOS date/time, Windows FILETIME, NTP time, etc..
311  *
312  * We might also, in the future, want to allow a field specifier to
313  * indicate the encoding of the field, or at least its default
314  * encoding, as most fields in most protocols always use the
315  * same encoding (although that's not true of all fields, so we
316  * still need to be able to specify that at run time).
317  *
318  * So, for now, we define ENC_BIG_ENDIAN and ENC_LITTLE_ENDIAN as
319  * bit flags, to be combined, in the future, with other information
320  * to specify the encoding in the last argument to
321  * proto_tree_add_item(), and possibly to specify in a field
322  * definition (e.g., ORed in with the type value).
323  *
324  * Currently, proto_tree_add_item() treats its last argument as a
325  * Boolean - if it's zero, the field is big-endian, and if it's non-zero,
326  * the field is little-endian - and other code in epan/proto.c does
327  * the same. We therefore define ENC_BIG_ENDIAN as 0x00000000 and
328  * ENC_LITTLE_ENDIAN as 0x80000000 - we're using the high-order bit
329  * so that we could put a field type and/or a value such as a character
330  * encoding in the lower bits.
331  */
332 #define ENC_BIG_ENDIAN 0x00000000
333 #define ENC_LITTLE_ENDIAN 0x80000000
334 
335 #if G_BYTE_ORDER == G_LITTLE_ENDIAN
336  #define ENC_HOST_ENDIAN ENC_LITTLE_ENDIAN
337  #define ENC_ANTI_HOST_ENDIAN ENC_BIG_ENDIAN
338 #else
339  #define ENC_HOST_ENDIAN ENC_BIG_ENDIAN
340  #define ENC_ANTI_HOST_ENDIAN ENC_LITTLE_ENDIAN
341 #endif
342 
343 /*
344  * For protocols (FT_PROTOCOL), aggregate items with subtrees (FT_NONE),
345  * opaque byte-array fields (FT_BYTES), and other fields where there
346  * is no choice of encoding (either because it's "just a bucket
347  * of bytes" or because the encoding is completely fixed), we
348  * have ENC_NA (for "Not Applicable").
349  */
350 #define ENC_NA 0x00000000
351 
352 /*
353  * Encoding for character strings - and for character-encoded values
354  * for non-string types.
355  *
356  * Historically, the only place the representation mattered for strings
357  * was with FT_UINT_STRINGs, where we had FALSE for the string length
358  * being big-endian and TRUE for it being little-endian.
359  *
360  * We now have encoding values for the character encoding. The encoding
361  * values are encoded in all but the top bit (which is the byte-order
362  * bit, required for FT_UINT_STRING and for UCS-2 and UTF-16 strings)
363  * and the bottom bit (which we ignore for now so that programs that
364  * pass TRUE for the encoding just do ASCII).
365  *
366  * For ENC_ASCII, we map ASCII characters with the high bit set to the UTF-8
367  * REPLACEMENT CHARACTER, and do the same for ENC_UTF_8 with invalid UTF-8
368  * sequences. We should also map 0x00 to that as well - null-terminated and
369  * null-padded strings never have NULs in them, but counted strings might.
370  * Either that, or strings should be counted, not null-terminated. Note
371  * that conversion of ASCII and UTF-8 can change the length of the string,
372  * as with any other encoding, due to REPLACEMENT CHARACTERs.
373  *
374  * For display, perhaps we should also map control characters to the
375  * Unicode glyphs showing the name of the control character in small
376  * caps, diagonally. (Unfortunately, those only exist for C0, not C1.)
377  *
378  * *DO NOT* add anything to this set that is not a character encoding!
379  */
380 #define ENC_CHARENCODING_MASK 0x0000FFFE /* mask out byte-order bits and other bits used with string encodings */
381 #define ENC_ASCII 0x00000000
382 #define ENC_ISO_646_IRV ENC_ASCII /* ISO 646 International Reference Version = ASCII */
383 #define ENC_UTF_8 0x00000002
384 #define ENC_UTF_16 0x00000004
385 #define ENC_UCS_2 0x00000006
386 #define ENC_UCS_4 0x00000008
387 #define ENC_ISO_8859_1 0x0000000A
388 #define ENC_ISO_8859_2 0x0000000C
389 #define ENC_ISO_8859_3 0x0000000E
390 #define ENC_ISO_8859_4 0x00000010
391 #define ENC_ISO_8859_5 0x00000012
392 #define ENC_ISO_8859_6 0x00000014
393 #define ENC_ISO_8859_7 0x00000016
394 #define ENC_ISO_8859_8 0x00000018
395 #define ENC_ISO_8859_9 0x0000001A
396 #define ENC_ISO_8859_10 0x0000001C
397 #define ENC_ISO_8859_11 0x0000001E
398 /* #define ENC_ISO_8859_12 0x00000020 ISO 8859-12 was abandoned */
399 #define ENC_ISO_8859_13 0x00000022
400 #define ENC_ISO_8859_14 0x00000024
401 #define ENC_ISO_8859_15 0x00000026
402 #define ENC_ISO_8859_16 0x00000028
403 #define ENC_WINDOWS_1250 0x0000002A
404 #define ENC_3GPP_TS_23_038_7BITS_PACKED 0x0000002C
405 #define ENC_3GPP_TS_23_038_7BITS ENC_3GPP_TS_23_038_7BITS_PACKED
406 #define ENC_EBCDIC 0x0000002E
407 #define ENC_MAC_ROMAN 0x00000030
408 #define ENC_CP437 0x00000032
409 #define ENC_ASCII_7BITS 0x00000034
410 #define ENC_T61 0x00000036
411 #define ENC_EBCDIC_CP037 0x00000038
412 #define ENC_WINDOWS_1252 0x0000003A
413 #define ENC_WINDOWS_1251 0x0000003C
414 #define ENC_CP855 0x0000003E
415 #define ENC_CP866 0x00000040
416 #define ENC_ISO_646_BASIC 0x00000042
417 #define ENC_BCD_DIGITS_0_9 0x00000044 /* Packed BCD, digits 0-9 */
418 #define ENC_KEYPAD_ABC_TBCD 0x00000046 /* Keypad-with-a/b/c "telephony BCD" = 0-9, *, #, a, b, c */
419 #define ENC_KEYPAD_BC_TBCD 0x00000048 /* Keypad-with-B/C "telephony BCD" = 0-9, B, C, *, # */
420 #define ENC_3GPP_TS_23_038_7BITS_UNPACKED 0x0000004C
421 #define ENC_ETSI_TS_102_221_ANNEX_A 0x0000004E /* ETSI TS 102 221 Annex A */
422 #define ENC_GB18030 0x00000050
423 #define ENC_EUC_KR 0x00000052
424 #define ENC_APN_STR 0x00000054 /* The encoding the APN/DNN field follows 3GPP TS 23.003 [2] clause 9.1.*/
425 #define ENC_DECT_STANDARD_8BITS 0x00000056 /* DECT standard character set as defined in ETSI EN 300 175-5 Annex D */
426 #define ENC_DECT_STANDARD_4BITS_TBCD 0x00000058 /* DECT standard 4bits character set as defined in ETSI EN 300 175-5 Annex D (BCD with 0xb = SPACE)*/
427 #define ENC_EBCDIC_CP500 0x00000060
428 /*
429  * TODO:
430  *
431  * packet-bacapp.c refers to two currently unsupported character sets (where
432  * we just use ASCII currently):
433  *
434  * "IBM MS DBCS" - At the very least could be any IBM/MS Double Byte
435  * Character Set for CJK (4 major ones), but also could just be any non
436  * Unicode and non ISO-8859-1 code page. This would be supported via the
437  * various code pages.
438  * JIS C 6226 / JIS X 0206 - Does this refer to ISO-2022-JP, SHIFT-JIS, or
439  * EUC-JP, which are all encoding schemes that support the JIS X 0206
440  * character set?
441  *
442  * As those are added, change code such as the code in packet-bacapp.c
443  * to use them.
444  *
445  * There's also some other code (e.g., packet-smpp.c) that just ignores
446  * strings if it determines that they are in an unsupported encoding, such
447  * as various encodings of Japanese mentioned above, for example.
448  *
449  */
450 
451 /*
452  * This is a modifier for FT_UINT_STRING and FT_UINT_BYTES values;
453  * it indicates that the length field should be interpreted as per
454  * sections 2.5.2.11 Octet String through 2.5.2.14 Long Character
455  * String of the ZigBee Cluster Library Specification, where if all
456  * bits are set in the length field, the string has an invalid value,
457  * and the number of octets in the value is 0.
458  */
459 #define ENC_ZIGBEE 0x40000000
460 
461 /*
462  * This is a modifier for ENC_UTF_16, ENC_UCS_2, and ENC_UCS_4
463  * indicating that if the first two (or four, for UCS-4) octets
464  * are a big-endian or little-endian BOM, use that to determine
465  * the serialization order and ignore the ENC_LITTLE_ENDIAN or
466  * ENC_BIG_ENDIAN flag. This can't collide with ENC_ZIGBEE because
467  * it could be used simultaneously.
468  */
469 #define ENC_BOM 0x20000000
470 
471 /*
472  * For cases where either native type or string encodings could both be
473  * valid arguments, we need something to distinguish which one is being
474  * passed as the argument, because ENC_BIG_ENDIAN and ENC_ASCII are both
475  * 0x00000000. So we use ENC_STR_NUM or ENC_STR_HEX bit-or'ed with
476  * ENC_ASCII and its ilk.
477  *
478  * XXX - ENC_STR_NUM is not yet supported by any code in Wireshark,
479  * and these are aonly used for byte arrays. Presumably they could
480  * also be used for integral values in the future.
481  */
482 /* this is for strings as numbers "12345" */
483 #define ENC_STR_NUM 0x01000000
484 /* this is for strings as hex "1a2b3c" */
485 #define ENC_STR_HEX 0x02000000
486 /* a convenience macro for either of the above */
487 #define ENC_STRING 0x03000000
488 /* Kept around for compatibility for Lua scripts; code should use ENC_CHARENCODING_MASK */
489 #define ENC_STR_MASK 0x0000FFFE
490 
491 /*
492  * For cases where the number is allowed to have a leading '+'/'-'
493  * this can't collide with ENC_SEP_* because they can be used simultaneously
494  *
495  * XXX - this is not used anywhere in Wireshark's code, dating back to
496  * at least Wireshark 2.6 and continuing to the current version.
497  * Perhaps the intent was to use it in the future, but 1) I'm not sure
498  * why it would be combined with ENC_SEP_, as byte arrays have no sign
499  * but integral values do, and 2) if we were to support string encodings
500  * for integral types, presumably whether it's signed (FT_INTn) or
501  * unsigned (FT_UINTn) would suffice to indicate whether the value
502  * can be signed or not.
503  */
504 #define ENC_NUM_PREF 0x00200000
505 
506 /*
507  * Encodings for byte arrays.
508  *
509  * For cases where the byte array is encoded as a string composed of
510  * pairs of hex digits, possibly with a separator character between
511  * the pairs. That's specified by the encoding having ENC_STR_HEX,
512  * plus one of these values, set.
513  *
514  * See hex_str_to_bytes_encoding() in epan/strutil.h for details.
515  */
516 #define ENC_SEP_NONE 0x00010000
517 #define ENC_SEP_COLON 0x00020000
518 #define ENC_SEP_DASH 0x00040000
519 #define ENC_SEP_DOT 0x00080000
520 #define ENC_SEP_SPACE 0x00100000
521 /* a convenience macro for the above */
522 #define ENC_SEP_MASK 0x001F0000
523 
524 /* Encodings for BCD strings
525  * Depending if the BCD string has even or odd number of digits
526  * we may need to strip of the last digit/High nibble
527  */
528 #define ENC_BCD_ODD_NUM_DIG 0x00010000
529 #define ENC_BCD_SKIP_FIRST 0x00020000
530 
531 /*
532  * Encodings for time values.
533  *
534  * Historically FT_TIMEs were only timespecs; the only question was whether
535  * they were stored in big- or little-endian format.
536  *
537  * For backwards compatibility, we interpret an encoding of 1 as meaning
538  * "little-endian timespec", so that passing TRUE is interpreted as that.
539  *
540  * We now support:
541  *
542  * ENC_TIME_SECS_NSECS - 8, 12, or 16 bytes. For 8 bytes, the first 4
543  * bytes are seconds and the next 4 bytes are nanoseconds; for 12 bytes,
544  * the first 8 bytes are seconds and the next 4 bytes are nanoseconds;
545  * for 16 bytes, the first 8 bytes are seconds and the next 8 bytes are
546  * nanoseconds. If the time is absolute, the seconds are seconds since
547  * the UN*X epoch (1970-01-01 00:00:00 UTC). (I.e., a UN*X struct
548  * timespec with a 4-byte or 8-byte time_t or a structure with an
549  * 8-byte time_t and an 8-byte nanoseconds field.)
550  *
551  * ENC_TIME_NTP - 8 bytes; the first 4 bytes are seconds since the NTP
552  * epoch (1900-01-01 00:00:00 GMT) and the next 4 bytes are 1/2^32's of
553  * a second since that second. (I.e., a 64-bit count of 1/2^32's of a
554  * second since the NTP epoch, with the upper 32 bits first and the
555  * lower 32 bits second, even when little-endian.) A value of 0 is a
556  * special case representing unknown or unsynchronized time. Per the
557  * suggestion in RFC 4330, if bit 0 is not set then the time is assumed
558  * to be in NTP Era 1, beginning on 2036-02-07 06:28:16 UTC. (I.e., the
559  * time displayed will be between 1968-01-20 03:14:08 UTC and
560  * 2104-02-26 09:42:24 UTC.) The 16 byte NTP date format and the 4 byte
561  * NTP short relative time format are not supported.
562  * Encodings that store only the seconds since the NTP epoch without
563  * fractional seconds should use ENC_TIME_SECS_NTP, described below.
564  *
565  * ENC_TIME_TOD - 8 bytes, as a count of microseconds since the System/3x0
566  * and z/Architecture epoch (1900-01-01 00:00:00 GMT).
567  *
568  * ENC_TIME_RTPS - 8 bytes; the first 4 bytes are seconds since the UN*X
569  * epoch and the next 4 bytes are 1/2^32's of a second since that
570  * second. (I.e., it's the offspring of a mating between UN*X time and
571  * NTP time). It's used by the Object Management Group's Real-Time
572  * Publish-Subscribe Wire Protocol for the Data Distribution Service.
573  *
574  * ENC_TIME_SECS_USECS - 8 bytes; the first 4 bytes are seconds and the
575  * next 4 bytes are microseconds. If the time is absolute, the seconds
576  * are seconds since the UN*X epoch. (I.e., a UN*X struct timeval with
577  * a 4-byte time_t.)
578  *
579  * ENC_TIME_SECS - 4 to 8 bytes, representing a value in seconds.
580  * If the time is absolute, it's seconds since the UN*X epoch.
581  *
582  * ENC_TIME_MSECS - 6 to 8 bytes, representing a value in milliseconds.
583  * If the time is absolute, it's milliseconds since the UN*X epoch.
584  *
585  * ENC_TIME_USECS - 8 bytes, representing a value in microseconds.
586  * If the time is absolute, it's microseconds since the UN*X epoch.
587  *
588  * ENC_TIME_NSECS - 8 bytes, representing a value in nanoseconds.
589  * If the time is absolute, it's nanoseconds since the UN*X epoch.
590  *
591  * ENC_TIME_SECS_NTP - 4 bytes, representing a count of seconds since
592  * the NTP epoch. As with ENC_TIME_NTP, times are assumed to be in
593  * the upper half of NTP Era 0 or the lower half of NTP Era 1.
594  *
595  * ENC_TIME_RFC_3971 - 8 bytes, representing a count of 1/64ths of a
596  * second since the UN*X epoch; see section 5.3.1 "Timestamp Option"
597  * in RFC 3971.
598  *
599  * ENC_TIME_MSEC_NTP - 6-8 bytes, representing a count of milliseconds since
600  * the NTP epoch. Similar to ENC_TIME_NTP, times before the midpoint of
601  * NTP Era 0 (1968-01-20) are assumed to represent the corresponding
602  * time in NTP Era 1 instead.
603  *
604  * ENC_TIME_MIP6 - 8 bytes; the first 48 bits are seconds since the UN*X epoch
605  * and the remaining 16 bits indicate the number of 1/65536's of a second
606  * since that second.
607  *
608  * ENC_TIME_MP4_FILE_SECS - 4-8 bytes, representing a count of seconds since
609  * January 1, 1904, 00:00:00 UTC.
610  *
611  * ENC_TIME_ZBEE_ZCL - 4-8 bytes, representing a count of seconds since
612  * January 1, 2000, 00:00:00 UTC.
613  */
614 #define ENC_TIME_SECS_NSECS 0x00000000
615 #define ENC_TIME_TIMESPEC 0x00000000 /* for backwards source compatibility */
616 #define ENC_TIME_NTP 0x00000002
617 #define ENC_TIME_TOD 0x00000004
618 #define ENC_TIME_RTPS 0x00000008
619 #define ENC_TIME_NTP_BASE_ZERO 0x00000008 /* for backwards source compatibility */
620 #define ENC_TIME_SECS_USECS 0x00000010
621 #define ENC_TIME_TIMEVAL 0x00000010 /* for backwards source compatibility */
622 #define ENC_TIME_SECS 0x00000012
623 #define ENC_TIME_MSECS 0x00000014
624 #define ENC_TIME_SECS_NTP 0x00000018
625 #define ENC_TIME_RFC_3971 0x00000020
626 #define ENC_TIME_MSEC_NTP 0x00000022
627 #define ENC_TIME_MIP6 0x00000024
628 #define ENC_TIME_MP4_FILE_SECS 0x00000026
629 #define ENC_TIME_CLASSIC_MAC_OS_SECS 0x00000026 /* for backwards source compatibility */
630 #define ENC_TIME_NSECS 0x00000028
631 #define ENC_TIME_USECS 0x00000030
632 #define ENC_TIME_ZBEE_ZCL 0x00000032
633 
634 /*
635  * For cases where a string encoding contains a timestamp, use one
636  * of these (but only one). These values can collide with the ENC_SEP_
637  * values used when a string encoding contains a byte array, because
638  * you can't do both at the same time. They must not, however,
639  * overlap with the character encoding values.
640  */
641 #define ENC_ISO_8601_DATE 0x00010000
642 #define ENC_ISO_8601_TIME 0x00020000
643 #define ENC_ISO_8601_DATE_TIME 0x00030000
644 #define ENC_IMF_DATE_TIME 0x00040000 /* Internet Message Format - RFCs 822, 1123, 2822, 5322 */
645 #define ENC_RFC_822 0x00040000 /* backwards compatibility */
646 #define ENC_RFC_1123 0x00040000 /* backwards source compatibility - not binary */
647 #define ENC_ISO_8601_DATE_TIME_BASIC 0x00100000
648 /* a convenience macro for the above - for internal use only */
649 #define ENC_STR_TIME_MASK 0x001F0000
650 
651 /*
652  * Encodings for variable-length integral types.
653  */
654 
655 /* Use varint format as described in Protobuf protocol
656  * https://developers.google.cn/protocol-buffers/docs/encoding
657  */
658 #define ENC_VARINT_PROTOBUF 0x00000002
659 /*
660  * Decodes a variable-length integer used in QUIC protocol
661  * See https://tools.ietf.org/html/draft-ietf-quic-transport-08#section-8.1
662  */
663 #define ENC_VARINT_QUIC 0x00000004
664  /*
665  * Use "zig-zag" varint format as described in Protobuf protocol
666  * See https://developers.google.com/protocol-buffers/docs/encoding?csw=1#types
667  */
668 #define ENC_VARINT_ZIGZAG 0x00000008
669 /*
670  * Decodes a variable-length integer used in DTN protocols
671  * See https://www.rfc-editor.org/rfc/rfc6256.html
672  */
673 #define ENC_VARINT_SDNV 0x00000010
674 
675 #define ENC_VARINT_MASK (ENC_VARINT_PROTOBUF|ENC_VARINT_QUIC|ENC_VARINT_ZIGZAG|ENC_VARINT_SDNV)
676 
677 /* Values for header_field_info.display */
678 
679 /* For integral types, the display format is a BASE_* field_display_e value
680  * possibly ORed with BASE_*_STRING */
681 
683 #define FIELD_DISPLAY_E_MASK 0xFF
684 
685 typedef enum {
686  BASE_NONE = 0,
688 /* Integral and float types */
697 /* Byte separators */
703 /* Address types */
706 /* Port types */
712 /* OUI types */
715 /* Time types */
722 /* String types */
725 
726 #define FIELD_DISPLAY(d) ((d) & FIELD_DISPLAY_E_MASK)
727 
728 #define FIELD_DISPLAY_IS_ABSOLUTE_TIME(d) \
729  (FIELD_DISPLAY(d) >= ABSOLUTE_TIME_LOCAL && FIELD_DISPLAY(d) <= ABSOLUTE_TIME_UNIX)
730 
731 /* Following constants have to be ORed with a field_display_e when dissector
732  * want to use specials value-string MACROs for a header_field_info */
733 #define BASE_RANGE_STRING 0x00000100
734 #define BASE_EXT_STRING 0x00000200
735 #define BASE_VAL64_STRING 0x00000400
736 
737 #define BASE_ALLOW_ZERO 0x00000800
739 #define BASE_UNIT_STRING 0x00001000
741 #define BASE_NO_DISPLAY_VALUE 0x00002000
744 #define BASE_PROTOCOL_INFO 0x00004000
746 #define BASE_SPECIAL_VALS 0x00008000
748 #define BASE_SHOW_ASCII_PRINTABLE 0x00010000
750 #define BASE_SHOW_UTF_8_PRINTABLE 0x00020000
753 #define IS_BASE_DUAL(b) ((b)==BASE_DEC_HEX||(b)==BASE_HEX_DEC)
754 
756 #define IS_BASE_PORT(b) (((b)==BASE_PT_UDP||(b)==BASE_PT_TCP||(b)==BASE_PT_DCCP||(b)==BASE_PT_SCTP))
757 
758 typedef enum {
764 
767 
770  /* ---------- set by dissector --------- */
771  const char *name;
772  const char *abbrev;
773  enum ftenum type;
774  int display;
775  const void *strings;
779  guint64 bitmask;
780  const char *blurb;
782  /* ------- set by proto routines (prefilled by HFILL macro, see below) ------ */
783  int id;
784  int parent;
788 };
789 
795 #define HFILL -1, 0, HF_REF_TYPE_NONE, -1, NULL
796 
797 #define HFILL_INIT(hf) \
798  (hf).hfinfo.id = -1; \
799  (hf).hfinfo.parent = 0; \
800  (hf).hfinfo.ref_type = HF_REF_TYPE_NONE; \
801  (hf).hfinfo.same_name_prev_id = -1; \
802  (hf).hfinfo.same_name_next = NULL;
803 
805 typedef struct hf_register_info {
806  int *p_id;
809 
811 typedef struct _item_label_t {
812  char representation[ITEM_LABEL_LENGTH];
814 
816 typedef struct field_info {
818  gint start;
819  gint length;
822  gint tree_type;
823  guint32 flags;
826  fvalue_t *value;
830 
831 
832 /*
833  * This structure describes one segment of a split-bits item
834  * crumb_bit_offset is the bit offset in the input tvb of the first (most significant) bit of this crumb
835  * crumb_bit_length is the number of contiguous bits of this crumb.
836  * The first element of an array of bits_specs describes the most significant crumb of the output value.
837  * The second element of an array of bits_specs describes the next-most significant crumb of the output value, etc.
838  * The array is terminated by a sentinel entry with crumb_bit_length of 0.
839 */
840 typedef struct
841 {
842  guint crumb_bit_offset;
843  guint8 crumb_bit_length;
844 } crumb_spec_t;
845 
846 /*
847  * Flag fields. Do not assign values greater than 0x000FFFFF unless you
848  * shuffle the expert information upward; see below.
849  */
850 
856 #define FI_HIDDEN 0x00000001
859 #define FI_GENERATED 0x00000002
861 #define FI_URL 0x00000004
862 
864 #define FI_LITTLE_ENDIAN 0x00000008
866 #define FI_BIG_ENDIAN 0x00000010
868 #define FI_BITS_OFFSET(n) (((n) & 7) << 5)
870 /* if 0, it means that field takes fi->length * 8 */
871 #define FI_BITS_SIZE(n) (((n) & 63) << 8)
873 #define FI_VARINT 0x00004000
874 
876 #define FI_GET_FLAG(fi, flag) ((fi) ? ((fi)->flags & (flag)) : 0)
878 #define FI_SET_FLAG(fi, flag) \
879  do { \
880  if (fi) \
881  (fi)->flags = (fi)->flags | (flag); \
882  } while(0)
884 #define FI_RESET_FLAG(fi, flag) \
885  do { \
886  if (fi) \
887  (fi)->flags = (fi)->flags & ~(flag); \
888  } while(0)
889 
890 #define FI_GET_BITS_OFFSET(fi) (FI_GET_FLAG(fi, FI_BITS_OFFSET(7)) >> 5)
891 #define FI_GET_BITS_SIZE(fi) (FI_GET_FLAG(fi, FI_BITS_SIZE(63)) >> 8)
892 
895 typedef struct {
896  GHashTable *interesting_hfids;
897  gboolean visible;
898  gboolean fake_protocols;
899  guint count;
900  struct _packet_info *pinfo;
901 } tree_data_t;
902 
904 typedef struct _proto_node {
905  struct _proto_node *first_child;
906  struct _proto_node *last_child;
907  struct _proto_node *next;
908  struct _proto_node *parent;
909  field_info *finfo;
910  tree_data_t *tree_data;
912 
917 
918 /*
919  * Expert information.
920  * This is in the flags field; we allocate this from the top down,
921  * so as not to collide with FI_ flags, which are allocated from
922  * the bottom up.
923  */
924 
925 /* expert severities */
926 #define PI_SEVERITY_MASK 0x00F00000
928 #define PI_COMMENT 0x00100000
930 #define PI_CHAT 0x00200000
932 #define PI_NOTE 0x00400000
934 #define PI_WARN 0x00600000
936 #define PI_ERROR 0x00800000
937 
938 /* expert "event groups" */
939 #define PI_GROUP_MASK 0xFF000000
941 #define PI_CHECKSUM 0x01000000
943 #define PI_SEQUENCE 0x02000000
945 #define PI_RESPONSE_CODE 0x03000000
947 #define PI_REQUEST_CODE 0x04000000
949 #define PI_UNDECODED 0x05000000
951 #define PI_REASSEMBLE 0x06000000
953 #define PI_MALFORMED 0x07000000
955 #define PI_DEBUG 0x08000000
957 #define PI_PROTOCOL 0x09000000
959 #define PI_SECURITY 0x0a000000
961 #define PI_COMMENTS_GROUP 0x0b000000
963 #define PI_DECRYPTION 0x0c000000
965 #define PI_ASSUMPTION 0x0d000000
967 #define PI_DEPRECATED 0x0e000000
969 #define PI_RECEIVE 0x0f000000
971 #define PI_INTERFACE 0x10000000
973 #define PI_DISSECTOR_BUG 0x11000000
974 
975 /*
976  * add more, see
977  * https://gitlab.com/wireshark/wireshark/-/wikis/Development/ExpertInfo
978  */
979 
981 #define PNODE_FINFO(proto_node) ((proto_node)->finfo)
982 
984 #define PITEM_FINFO(proto_item) PNODE_FINFO(proto_item)
985 
987 #define PTREE_FINFO(proto_tree) PNODE_FINFO(proto_tree)
988 
990 #define PTREE_DATA(proto_tree) ((proto_tree)->tree_data)
991 
993 #define PNODE_POOL(proto_node) ((proto_node)->tree_data->pinfo->pool)
994 
1000 static inline gboolean proto_item_is_hidden(proto_item *ti) {
1001  if (ti) {
1002  return FI_GET_FLAG(PITEM_FINFO(ti), FI_HIDDEN);
1003  }
1004  return FALSE;
1005 }
1006 #define PROTO_ITEM_IS_HIDDEN(ti) proto_item_is_hidden((ti))
1007 
1012 static inline void proto_item_set_hidden(proto_item *ti) {
1013  if (ti) {
1015  }
1016 }
1017 #define PROTO_ITEM_SET_HIDDEN(ti) proto_item_set_hidden((ti))
1018 
1022 static inline void proto_item_set_visible(proto_item *ti) {
1023  if (ti) {
1025  }
1026 }
1027 #define PROTO_ITEM_SET_VISIBLE(ti) proto_item_set_visible((ti))
1028 
1033 static inline gboolean proto_item_is_generated(proto_item *ti) {
1034  if (ti) {
1035  return FI_GET_FLAG(PITEM_FINFO(ti), FI_GENERATED);
1036  }
1037  return FALSE;
1038 }
1039 #define PROTO_ITEM_IS_GENERATED(ti) proto_item_is_generated((ti))
1040 
1044 static inline void proto_item_set_generated(proto_item *ti) {
1045  if (ti) {
1047  }
1048 }
1049 #define PROTO_ITEM_SET_GENERATED(ti) proto_item_set_generated((ti))
1050 
1056 static inline gboolean proto_item_is_url(proto_item *ti) {
1057  if (ti) {
1058  return FI_GET_FLAG(PITEM_FINFO(ti), FI_URL);
1059  }
1060  return FALSE;
1061 }
1062 #define PROTO_ITEM_IS_URL(ti) proto_item_is_url((ti))
1063 
1067 static inline void proto_item_set_url(proto_item *ti) {
1068  if (ti) {
1070  }
1071 }
1072 #define PROTO_ITEM_SET_URL(ti) proto_item_set_url((ti))
1073 
1074 typedef void (*proto_tree_foreach_func)(proto_node *, void *);
1075 typedef bool (*proto_tree_traverse_func)(proto_node *, void *);
1076 
1077 WS_DLL_PUBLIC void proto_tree_children_foreach(proto_tree *tree,
1078  proto_tree_foreach_func func, gpointer data);
1079 
1080 typedef struct {
1081  void (*register_protoinfo)(void); /* routine to call to register protocol information */
1082  void (*register_handoff)(void); /* routine to call to register dissector handoff */
1083 } proto_plugin;
1084 
1086 WS_DLL_PUBLIC void proto_register_plugin(const proto_plugin *plugin);
1087 
1089 void proto_init(GSList *register_all_plugin_protocols_list,
1090  GSList *register_all_plugin_handoffs_list, register_cb cb, void *client_data);
1091 
1093 extern void proto_cleanup(void);
1094 
1108 WS_DLL_PUBLIC gboolean proto_field_is_referenced(proto_tree *tree, int proto_id);
1109 
1114 WS_DLL_PUBLIC proto_tree* proto_item_add_subtree(proto_item *pi, const gint idx) G_GNUC_WARN_UNUSED_RESULT;
1115 
1119 WS_DLL_PUBLIC proto_tree* proto_item_get_subtree(proto_item *pi);
1120 
1124 WS_DLL_PUBLIC proto_item* proto_item_get_parent(const proto_item *pi);
1125 
1130 WS_DLL_PUBLIC proto_item* proto_item_get_parent_nth(proto_item *pi, int gen);
1131 
1136 WS_DLL_PUBLIC void proto_item_set_text(proto_item *pi, const char *format, ...)
1137  G_GNUC_PRINTF(2,3);
1138 
1143 WS_DLL_PUBLIC void proto_item_append_text(proto_item *pi, const char *format, ...)
1144  G_GNUC_PRINTF(2,3);
1145 
1150 WS_DLL_PUBLIC void proto_item_prepend_text(proto_item *pi, const char *format, ...)
1151  G_GNUC_PRINTF(2,3);
1152 
1156 WS_DLL_PUBLIC void proto_item_set_len(proto_item *pi, const gint length);
1157 
1176 WS_DLL_PUBLIC void proto_item_set_end(proto_item *pi, tvbuff_t *tvb, gint end);
1177 
1182 WS_DLL_PUBLIC int proto_item_get_len(const proto_item *pi);
1183 
1189 WS_DLL_PUBLIC void proto_item_set_bits_offset_len(proto_item *ti, int bits_offset, int bits_len);
1190 
1197 WS_DLL_PUBLIC char *proto_item_get_display_repr(wmem_allocator_t *scope, proto_item *pi);
1198 
1201 extern proto_tree* proto_tree_create_root(struct _packet_info *pinfo);
1202 
1203 void proto_tree_reset(proto_tree *tree);
1204 
1207 WS_DLL_PUBLIC void proto_tree_free(proto_tree *tree);
1208 
1216 WS_DLL_PUBLIC gboolean
1217 proto_tree_set_visible(proto_tree *tree, gboolean visible);
1218 
1222 extern void
1223 proto_tree_set_fake_protocols(proto_tree *tree, gboolean fake_protocols);
1224 
1231 extern void
1233 
1239 extern void
1241 
1245 WS_DLL_PUBLIC proto_item* proto_tree_get_parent(proto_tree *tree);
1246 
1250 WS_DLL_PUBLIC proto_tree *proto_tree_get_parent_tree(proto_tree *tree);
1251 
1255 WS_DLL_PUBLIC proto_tree* proto_tree_get_root(proto_tree *tree);
1256 
1261 WS_DLL_PUBLIC void proto_tree_move_item(proto_tree *tree, proto_item *fixed_item, proto_item *item_to_move);
1262 
1263 
1269 WS_DLL_PUBLIC void proto_tree_set_appendix(proto_tree *tree, tvbuff_t *tvb, gint start, const gint length);
1270 
1271 
1281 WS_DLL_PUBLIC proto_item *
1283  const gint start, gint length, const guint encoding);
1284 
1285 WS_DLL_PUBLIC proto_item *
1286 proto_tree_add_item(proto_tree *tree, int hfindex, tvbuff_t *tvb,
1287  const gint start, gint length, const guint encoding);
1288 
1301 WS_DLL_PUBLIC proto_item *
1303  const gint start, gint length, const guint encoding, gint *lenretval);
1304 
1305 WS_DLL_PUBLIC proto_item *
1306 proto_tree_add_item_ret_length(proto_tree *tree, int hfindex, tvbuff_t *tvb,
1307  const gint start, gint length, const guint encoding, gint *lenretval);
1308 
1340 WS_DLL_PUBLIC proto_item *
1341 proto_tree_add_item_ret_int(proto_tree *tree, int hfindex, tvbuff_t *tvb,
1342  const gint start, gint length, const guint encoding, gint32 *retval);
1343 
1344 WS_DLL_PUBLIC proto_item *
1345 proto_tree_add_item_ret_int64(proto_tree *tree, int hfindex, tvbuff_t *tvb,
1346  const gint start, gint length, const guint encoding, gint64 *retval);
1347 
1348 WS_DLL_PUBLIC proto_item *
1349 proto_tree_add_item_ret_uint(proto_tree *tree, int hfindex, tvbuff_t *tvb,
1350  const gint start, gint length, const guint encoding, guint32 *retval);
1351 
1352 WS_DLL_PUBLIC proto_item *
1353 proto_tree_add_item_ret_uint64(proto_tree *tree, int hfindex, tvbuff_t *tvb,
1354  const gint start, gint length, const guint encoding, guint64 *retval);
1355 
1356 WS_DLL_PUBLIC proto_item *
1357 proto_tree_add_item_ret_varint(proto_tree *tree, int hfindex, tvbuff_t *tvb,
1358  const gint start, gint length, const guint encoding, guint64 *retval, gint *lenretval);
1359 
1360 WS_DLL_PUBLIC proto_item *
1361 proto_tree_add_item_ret_boolean(proto_tree *tree, int hfindex, tvbuff_t *tvb,
1362  const gint start, gint length, const guint encoding, bool *retval);
1363 
1364 WS_DLL_PUBLIC proto_item *
1365 proto_tree_add_item_ret_ipv4(proto_tree *tree, int hfindex, tvbuff_t *tvb,
1366  const gint start, gint length, const guint encoding, ws_in4_addr *retval);
1367 
1382 WS_DLL_PUBLIC proto_item *
1383 proto_tree_add_item_ret_ipv6(proto_tree *tree, int hfindex, tvbuff_t *tvb,
1384  const gint start, gint length, const guint encoding, ws_in6_addr *retval);
1385 
1400 WS_DLL_PUBLIC proto_item *
1401 proto_tree_add_item_ret_ether(proto_tree *tree, int hfindex, tvbuff_t *tvb,
1402  const gint start, gint length, const guint encoding, guint8 *retval);
1403 
1417 WS_DLL_PUBLIC proto_item *
1418 proto_tree_add_item_ret_float(proto_tree *tree, int hfindex, tvbuff_t *tvb,
1419  const gint start, gint length,
1420  const guint encoding, gfloat *retval);
1421 
1435 WS_DLL_PUBLIC proto_item *
1436 proto_tree_add_item_ret_double(proto_tree *tree, int hfindex, tvbuff_t *tvb,
1437  const gint start, gint length,
1438  const guint encoding, gdouble *retval);
1439 
1469 WS_DLL_PUBLIC proto_item *
1471  tvbuff_t *tvb, const gint start, gint length, const guint encoding,
1472  wmem_allocator_t *scope, const guint8 **retval, gint *lenretval);
1473 
1501 WS_DLL_PUBLIC proto_item *
1502 proto_tree_add_item_ret_string(proto_tree *tree, int hfindex, tvbuff_t *tvb,
1503  const gint start, gint length, const guint encoding,
1504  wmem_allocator_t *scope, const guint8 **retval);
1505 
1526 WS_DLL_PUBLIC proto_item *
1528  tvbuff_t *tvb,
1529  const gint start, gint length, const guint encoding,
1530  wmem_allocator_t *scope, char **retval, gint *lenretval);
1531 
1549 WS_DLL_PUBLIC proto_item *
1551  tvbuff_t *tvb,
1552  const gint start, gint length, const guint encoding,
1553  wmem_allocator_t *scope, char **retval);
1554 
1570 WS_DLL_PUBLIC proto_item *
1572  tvbuff_t *tvb,
1573  const gint start, gint length, const guint encoding,
1574  wmem_allocator_t *scope, char **retval);
1575 
1584 proto_item *
1585 proto_tree_add_text_internal(proto_tree *tree, tvbuff_t *tvb, gint start, gint length, const char *format,
1586  ...) G_GNUC_PRINTF(5,6);
1587 
1596 proto_item *
1598  gint length, const char *format, va_list ap) G_GNUC_PRINTF(5, 0);
1599 
1609 WS_DLL_PUBLIC proto_tree *
1610 proto_tree_add_subtree(proto_tree *tree, tvbuff_t *tvb, gint start, gint length, gint idx,
1611  proto_item **tree_item, const char *text);
1612 
1623 WS_DLL_PUBLIC proto_tree *
1624 proto_tree_add_subtree_format(proto_tree *tree, tvbuff_t *tvb, gint start, gint length, gint idx,
1625  proto_item **tree_item, const char *format, ...) G_GNUC_PRINTF(7,8);
1626 
1628 proto_item *
1629 proto_tree_add_format_text(proto_tree *tree, tvbuff_t *tvb, gint start, gint length);
1630 
1632 proto_item *
1633 proto_tree_add_format_wsp_text(proto_tree *tree, tvbuff_t *tvb, gint start, gint length);
1634 
1644 WS_DLL_PUBLIC proto_item *
1645 proto_tree_add_none_format(proto_tree *tree, const int hfindex, tvbuff_t *tvb, const gint start,
1646  gint length, const char *format, ...) G_GNUC_PRINTF(6,7);
1647 
1657 WS_DLL_PUBLIC proto_item *
1658 proto_tree_add_protocol_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
1659  gint length, const char *format, ...) G_GNUC_PRINTF(6,7);
1660 
1669 WS_DLL_PUBLIC proto_item *
1670 proto_tree_add_bytes(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
1671  gint length, const guint8* start_ptr);
1672 
1683 WS_DLL_PUBLIC proto_item *
1684 proto_tree_add_bytes_with_length(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
1685  gint length, const guint8 *start_ptr, gint ptr_length);
1686 
1720 WS_DLL_PUBLIC proto_item *
1721 proto_tree_add_bytes_item(proto_tree *tree, int hfindex, tvbuff_t *tvb,
1722  const gint start, gint length, const guint encoding,
1723  GByteArray *retval, gint *endoff, gint *err);
1724 
1737 WS_DLL_PUBLIC proto_item *
1739  gint start, gint length, const guint8* start_ptr, const char *format,
1740  ...) G_GNUC_PRINTF(7,8);
1741 
1753 WS_DLL_PUBLIC proto_item *
1754 proto_tree_add_bytes_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
1755  gint length, const guint8* start_ptr, const char *format, ...) G_GNUC_PRINTF(7,8);
1756 
1765 WS_DLL_PUBLIC proto_item *
1766 proto_tree_add_time(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
1767  gint length, const nstime_t* value_ptr);
1768 
1799 WS_DLL_PUBLIC proto_item *
1800 proto_tree_add_time_item(proto_tree *tree, int hfindex, tvbuff_t *tvb,
1801  const gint start, gint length, const guint encoding,
1802  nstime_t *retval, gint *endoff, gint *err);
1803 
1804 
1817 WS_DLL_PUBLIC proto_item *
1819  gint start, gint length, nstime_t* value_ptr, const char *format, ...)
1820  G_GNUC_PRINTF(7,8);
1821 
1834 WS_DLL_PUBLIC proto_item *
1835 proto_tree_add_time_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
1836  gint length, nstime_t* value_ptr, const char *format, ...) G_GNUC_PRINTF(7,8);
1837 
1846 WS_DLL_PUBLIC proto_item *
1847 proto_tree_add_ipxnet(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
1848  gint length, guint32 value);
1849 
1862 WS_DLL_PUBLIC proto_item *
1864  gint start, gint length, guint32 value, const char *format, ...)
1865  G_GNUC_PRINTF(7,8);
1866 
1878 WS_DLL_PUBLIC proto_item *
1879 proto_tree_add_ipxnet_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
1880  gint length, guint32 value, const char *format, ...) G_GNUC_PRINTF(7,8);
1881 
1890 WS_DLL_PUBLIC proto_item *
1891 proto_tree_add_ipv4(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
1892  gint length, ws_in4_addr value);
1893 
1906 WS_DLL_PUBLIC proto_item *
1908  gint start, gint length, ws_in4_addr value, const char *format, ...)
1909  G_GNUC_PRINTF(7,8);
1910 
1922 WS_DLL_PUBLIC proto_item *
1923 proto_tree_add_ipv4_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
1924  gint length, ws_in4_addr value, const char *format, ...) G_GNUC_PRINTF(7,8);
1925 
1934 WS_DLL_PUBLIC proto_item *
1935 proto_tree_add_ipv6(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
1936  gint length, const ws_in6_addr *value_ptr);
1937 
1950 WS_DLL_PUBLIC proto_item *
1952  gint start, gint length, const ws_in6_addr *value_ptr, const char *format,
1953  ...) G_GNUC_PRINTF(7,8);
1954 
1966 WS_DLL_PUBLIC proto_item *
1967 proto_tree_add_ipv6_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
1968  gint length, const ws_in6_addr *value_ptr, const char *format, ...) G_GNUC_PRINTF(7,8);
1969 
1978 WS_DLL_PUBLIC proto_item *
1979 proto_tree_add_ether(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
1980  gint length, const guint8* value);
1981 
1994 WS_DLL_PUBLIC proto_item *
1996  gint start, gint length, const guint8* value, const char *format, ...)
1997  G_GNUC_PRINTF(7,8);
1998 
2010 WS_DLL_PUBLIC proto_item *
2011 proto_tree_add_ether_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
2012  gint length, const guint8* value, const char *format, ...) G_GNUC_PRINTF(7,8);
2013 
2022 WS_DLL_PUBLIC proto_item *
2023 proto_tree_add_guid(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
2024  gint length, const e_guid_t *value_ptr);
2025 
2038 WS_DLL_PUBLIC proto_item *
2040  gint start, gint length, const e_guid_t *value_ptr, const char *format,
2041  ...) G_GNUC_PRINTF(7,8);
2042 
2054 WS_DLL_PUBLIC proto_item *
2055 proto_tree_add_guid_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
2056  gint length, const e_guid_t *value_ptr, const char *format, ...) G_GNUC_PRINTF(7,8);
2057 
2066 WS_DLL_PUBLIC proto_item *
2067 proto_tree_add_oid(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
2068  gint length, const guint8* value_ptr);
2069 
2082 WS_DLL_PUBLIC proto_item *
2084  gint start, gint length, const guint8* value_ptr, const char *format,
2085  ...) G_GNUC_PRINTF(7,8);
2086 
2098 WS_DLL_PUBLIC proto_item *
2099 proto_tree_add_oid_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
2100  gint length, const guint8* value_ptr, const char *format, ...) G_GNUC_PRINTF(7,8);
2101 
2121 WS_DLL_PUBLIC proto_item *
2122 proto_tree_add_string(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
2123  gint length, const char* value);
2124 
2137 WS_DLL_PUBLIC proto_item *
2139  gint start, gint length, const char* value, const char *format, ...)
2140  G_GNUC_PRINTF(7,8);
2141 
2154 WS_DLL_PUBLIC proto_item *
2155 proto_tree_add_string_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
2156  gint length, const char* value, const char *format, ...) G_GNUC_PRINTF(7,8);
2157 
2166 WS_DLL_PUBLIC proto_item *
2167 proto_tree_add_boolean(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
2168  gint length, guint64 value);
2169 
2182 WS_DLL_PUBLIC proto_item *
2184  tvbuff_t *tvb, gint start, gint length, guint64 value,
2185  const char *format, ...) G_GNUC_PRINTF(7,8);
2186 
2198 WS_DLL_PUBLIC proto_item *
2199 proto_tree_add_boolean_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
2200  gint length, guint64 value, const char *format, ...) G_GNUC_PRINTF(7,8);
2201 
2210 WS_DLL_PUBLIC proto_item *
2211 proto_tree_add_float(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
2212  gint length, float value);
2213 
2226 WS_DLL_PUBLIC proto_item *
2228  gint start, gint length, float value, const char *format, ...)
2229  G_GNUC_PRINTF(7,8);
2230 
2242 WS_DLL_PUBLIC proto_item *
2243 proto_tree_add_float_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
2244  gint length, float value, const char *format, ...) G_GNUC_PRINTF(7,8);
2245 
2254 WS_DLL_PUBLIC proto_item *
2255 proto_tree_add_double(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
2256  gint length, double value);
2257 
2270 WS_DLL_PUBLIC proto_item *
2272  gint start, gint length, double value, const char *format, ...)
2273  G_GNUC_PRINTF(7,8);
2274 
2286 WS_DLL_PUBLIC proto_item *
2287 proto_tree_add_double_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
2288  gint length, double value, const char *format, ...) G_GNUC_PRINTF(7,8);
2289 
2298 WS_DLL_PUBLIC proto_item *
2299 proto_tree_add_uint(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
2300  gint length, guint32 value);
2301 
2314 WS_DLL_PUBLIC proto_item *
2316  gint start, gint length, guint32 value, const char *format, ...)
2317  G_GNUC_PRINTF(7,8);
2318 
2331 WS_DLL_PUBLIC proto_item *
2332 proto_tree_add_uint_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
2333  gint length, guint32 value, const char *format, ...) G_GNUC_PRINTF(7,8);
2334 
2343 WS_DLL_PUBLIC proto_item *
2344 proto_tree_add_uint64(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
2345  gint length, guint64 value);
2346 
2359 WS_DLL_PUBLIC proto_item *
2361  gint start, gint length, guint64 value, const char *format, ...)
2362  G_GNUC_PRINTF(7,8);
2363 
2375 WS_DLL_PUBLIC proto_item *
2376 proto_tree_add_uint64_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
2377  gint length, guint64 value, const char *format, ...) G_GNUC_PRINTF(7,8);
2378 
2387 WS_DLL_PUBLIC proto_item *
2388 proto_tree_add_int(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
2389  gint length, gint32 value);
2390 
2403 WS_DLL_PUBLIC proto_item *
2405  gint start, gint length, gint32 value, const char *format, ...)
2406  G_GNUC_PRINTF(7,8);
2407 
2420 WS_DLL_PUBLIC proto_item *
2421 proto_tree_add_int_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
2422  gint length, gint32 value, const char *format, ...) G_GNUC_PRINTF(7,8);
2423 
2432 WS_DLL_PUBLIC proto_item *
2433 proto_tree_add_int64(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
2434  gint length, gint64 value);
2435 
2448 WS_DLL_PUBLIC proto_item *
2450  gint start, gint length, gint64 value, const char *format, ...)
2451  G_GNUC_PRINTF(7,8);
2452 
2464 WS_DLL_PUBLIC proto_item *
2465 proto_tree_add_int64_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
2466  gint length, gint64 value, const char *format, ...) G_GNUC_PRINTF(7,8);
2467 
2476 WS_DLL_PUBLIC proto_item *
2477 proto_tree_add_eui64(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
2478  gint length, const guint64 value);
2479 
2492 WS_DLL_PUBLIC proto_item *
2494  gint start, gint length, const guint64 value, const char *format, ...)
2495  G_GNUC_PRINTF(7,8);
2496 
2508 WS_DLL_PUBLIC proto_item *
2509 proto_tree_add_eui64_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
2510  gint length, const guint64 value, const char *format, ...) G_GNUC_PRINTF(7,8);
2511 
2513 typedef struct _mac_hf_list_t {
2514  int *hf_addr; // FT_ETHER, BASE_NONE
2515  int *hf_addr_resolved; // FT_STRING, BASE_NONE
2516  int *hf_oui; // FT_UINT24, BASE_OUI
2517  int *hf_oui_resolved; // FT_STRING, BASE_NONE
2518  int *hf_lg; // FT_BOOLEAN, 24 bits, mask 0x020000
2519  int *hf_ig; // FT_BOOLEAN, 24 bits, mask 0x010000
2521 
2531 WS_DLL_PUBLIC proto_item *
2532 proto_tree_add_mac48_detail(const mac_hf_list_t *list_specific,
2533  const mac_hf_list_t *list_generic,
2534  gint idx, tvbuff_t *tvb, proto_tree *tree, gint offset);
2535 
2542 WS_DLL_PUBLIC proto_item *
2543 proto_tree_add_debug_text(proto_tree *tree, const char *format,
2544  ...) G_GNUC_PRINTF(2,3);
2545 
2550 WS_DLL_PUBLIC void
2551 proto_item_fill_label(field_info *finfo, gchar *label_str);
2552 
2560 WS_DLL_PUBLIC int
2561 proto_item_fill_display_label(field_info *fi, gchar *display_label_str, const int label_str_size);
2562 
2568 WS_DLL_PUBLIC int
2569 proto_register_protocol(const char *name, const char *short_name, const char *filter_name);
2570 
2585 WS_DLL_PUBLIC int
2586 proto_register_protocol_in_name_only(const char *name, const char *short_name, const char *filter_name,
2587  int parent_proto, enum ftenum field_type);
2588 
2594 gboolean
2595 proto_deregister_protocol(const char *short_name);
2596 
2601 WS_DLL_PUBLIC void
2602 proto_register_alias(const int proto_id, const char *alias_name);
2603 
2608 typedef void (*prefix_initializer_t)(const char* match);
2609 
2617 WS_DLL_PUBLIC void
2618 proto_register_prefix(const char *prefix, prefix_initializer_t initializer);
2619 
2621 WS_DLL_PUBLIC void proto_initialize_all_prefixes(void);
2622 
2627 WS_DLL_PUBLIC void
2628 proto_register_field_array(const int parent, hf_register_info *hf, const int num_records);
2629 
2633 WS_DLL_PUBLIC void
2634 proto_deregister_field (const int parent, gint hf_id);
2635 
2638 WS_DLL_PUBLIC void
2639 proto_add_deregistered_data (void *data);
2640 
2644 void
2645 proto_add_deregistered_slice (gsize block_size, gpointer mem_block);
2646 
2651 WS_DLL_PUBLIC void
2652 proto_free_field_strings (ftenum_t field_type, unsigned int field_display, const void *field_strings);
2653 
2655 WS_DLL_PUBLIC void
2657 
2661 WS_DLL_PUBLIC void
2662 proto_register_subtree_array(gint * const *indices, const int num_indices);
2663 
2667 WS_DLL_PUBLIC const char* proto_registrar_get_name(const int n);
2668 
2672 WS_DLL_PUBLIC const char* proto_registrar_get_abbrev(const int n);
2673 
2677 WS_DLL_PUBLIC header_field_info* proto_registrar_get_nth(guint hfindex);
2678 
2682 WS_DLL_PUBLIC header_field_info* proto_registrar_get_byname(const char *field_name);
2683 
2687 WS_DLL_PUBLIC header_field_info* proto_registrar_get_byalias(const char *alias_name);
2688 
2692 WS_DLL_PUBLIC int proto_registrar_get_id_byname(const char *field_name);
2693 
2697 WS_DLL_PUBLIC enum ftenum proto_registrar_get_ftype(const int n);
2698 
2702 WS_DLL_PUBLIC int proto_registrar_get_parent(const int n);
2703 
2707 WS_DLL_PUBLIC gboolean proto_registrar_is_protocol(const int n);
2708 
2712 extern gint proto_registrar_get_length(const int n);
2713 
2714 
2718 WS_DLL_PUBLIC int proto_get_first_protocol(void **cookie);
2719 WS_DLL_PUBLIC int proto_get_data_protocol(void *cookie);
2720 WS_DLL_PUBLIC int proto_get_next_protocol(void **cookie);
2721 WS_DLL_PUBLIC header_field_info *proto_get_first_protocol_field(const int proto_id, void **cookie);
2722 WS_DLL_PUBLIC header_field_info *proto_get_next_protocol_field(const int proto_id, void **cookie);
2723 
2727 WS_DLL_PUBLIC int proto_name_already_registered(const gchar *name);
2728 
2732 WS_DLL_PUBLIC int proto_get_id_by_filter_name(const gchar* filter_name);
2733 
2737 WS_DLL_PUBLIC int proto_get_id_by_short_name(const gchar* short_name);
2738 
2742 WS_DLL_PUBLIC gboolean proto_can_toggle_protocol(const int proto_id);
2743 
2746 WS_DLL_PUBLIC protocol_t *find_protocol_by_id(const int proto_id);
2747 
2751 WS_DLL_PUBLIC const char *proto_get_protocol_name(const int proto_id);
2752 
2755 WS_DLL_PUBLIC int proto_get_id(const protocol_t *protocol);
2756 
2759 WS_DLL_PUBLIC const char *proto_get_protocol_short_name(const protocol_t *protocol);
2760 
2763 WS_DLL_PUBLIC const char *proto_get_protocol_long_name(const protocol_t *protocol);
2764 
2767 WS_DLL_PUBLIC gboolean proto_is_protocol_enabled(const protocol_t *protocol);
2768 
2771 WS_DLL_PUBLIC gboolean proto_is_protocol_enabled_by_default(const protocol_t *protocol);
2772 
2775 WS_DLL_PUBLIC gboolean proto_is_pino(const protocol_t *protocol);
2776 
2780 WS_DLL_PUBLIC const char *proto_get_protocol_filter_name(const int proto_id);
2781 
2787 extern void proto_add_heuristic_dissector(protocol_t *protocol, const char *short_name);
2788 
2794 WS_DLL_PUBLIC void proto_heuristic_dissector_foreach(const protocol_t *protocol, GFunc func,
2795  gpointer user_data);
2796 
2814 WS_DLL_PUBLIC void proto_get_frame_protocols(const wmem_list_t *layers,
2815  bool *is_ip, bool *is_tcp, bool *is_udp, bool *is_sctp,
2816  bool *is_tls, bool *is_rtp, bool *is_lte_rlc);
2817 
2823 WS_DLL_PUBLIC gboolean proto_is_frame_protocol(const wmem_list_t *layers, const char* proto_name);
2824 
2829 WS_DLL_PUBLIC gchar * proto_list_layers(const packet_info *pinfo);
2830 
2833 WS_DLL_PUBLIC void proto_disable_by_default(const int proto_id);
2834 
2838 WS_DLL_PUBLIC void proto_set_decoding(const int proto_id, const gboolean enabled);
2839 
2841 WS_DLL_PUBLIC void proto_disable_all(void);
2842 
2844 WS_DLL_PUBLIC void proto_reenable_all(void);
2845 
2848 WS_DLL_PUBLIC void proto_set_cant_toggle(const int proto_id);
2849 
2855 extern gboolean proto_check_for_protocol_or_field(const proto_tree* tree, const int id);
2856 
2862 WS_DLL_PUBLIC GPtrArray* proto_get_finfo_ptr_array(const proto_tree *tree, const int hfindex);
2863 
2868 WS_DLL_PUBLIC gboolean proto_tracking_interesting_fields(const proto_tree *tree);
2869 
2876 WS_DLL_PUBLIC GPtrArray* proto_find_finfo(proto_tree *tree, const int hfindex);
2877 
2884 WS_DLL_PUBLIC GPtrArray* proto_find_first_finfo(proto_tree *tree, const int hfindex);
2885 
2890 WS_DLL_PUBLIC GPtrArray* proto_all_finfos(proto_tree *tree);
2891 
2893 WS_DLL_PUBLIC void proto_registrar_dump_protocols(void);
2894 
2896 WS_DLL_PUBLIC void proto_registrar_dump_values(void);
2897 
2899 WS_DLL_PUBLIC void proto_registrar_dump_elastic(const gchar* filter);
2900 
2903 WS_DLL_PUBLIC gboolean proto_registrar_dump_fieldcount(void);
2904 
2906 WS_DLL_PUBLIC void proto_registrar_dump_fields(void);
2907 
2909 WS_DLL_PUBLIC gboolean proto_registrar_dump_field_completions(char *prefix);
2910 
2912 WS_DLL_PUBLIC void proto_registrar_dump_ftypes(void);
2913 
2917 WS_DLL_PUBLIC const char* proto_field_display_to_string(int field_display);
2918 
2921 WS_DLL_PUBLIC int num_tree_types;
2922 
2924 WS_DLL_PUBLIC gboolean tree_expanded(int tree_type);
2925 
2927 WS_DLL_PUBLIC void tree_expanded_set(int tree_type, gboolean value);
2928 
2930 #ifndef g_ptr_array_len
2931 #define g_ptr_array_len(a) ((a)?(a)->len:0)
2932 #endif
2933 
2934 WS_DLL_PUBLIC int
2935 hfinfo_bitshift(const header_field_info *hfinfo);
2936 
2937 struct epan_dissect;
2938 
2943 WS_DLL_PUBLIC gboolean
2944 proto_can_match_selected(field_info *finfo, struct epan_dissect *edt);
2945 
2950 WS_DLL_PUBLIC char*
2952 
2958 WS_DLL_PUBLIC field_info*
2959 proto_find_field_from_offset(proto_tree *tree, guint offset, tvbuff_t *tvb);
2960 
2965 WS_DLL_PUBLIC gchar*
2966 proto_find_undecoded_data(proto_tree *tree, guint length);
2967 
2987 WS_DLL_PUBLIC proto_item *
2988 proto_tree_add_bitmask(proto_tree *tree, tvbuff_t *tvb, const guint offset,
2989  const int hf_hdr, const gint ett, int * const *fields, const guint encoding);
2990 
3013 WS_DLL_PUBLIC proto_item *
3014 proto_tree_add_bitmask_ret_uint64(proto_tree *tree, tvbuff_t *tvb, const guint offset,
3015  const int hf_hdr, const gint ett, int * const *fields,
3016  const guint encoding, guint64 *retval);
3017 
3041 WS_DLL_PUBLIC proto_item *
3042 proto_tree_add_bitmask_with_flags(proto_tree *tree, tvbuff_t *tvb, const guint offset,
3043  const int hf_hdr, const gint ett, int * const *fields, const guint encoding, const int flags);
3044 
3071 WS_DLL_PUBLIC proto_item *
3072 proto_tree_add_bitmask_with_flags_ret_uint64(proto_tree *tree, tvbuff_t *tvb, const guint offset,
3073  const int hf_hdr, const gint ett, int * const *fields,
3074  const guint encoding, const int flags, guint64 *retval);
3075 
3095 WS_DLL_PUBLIC proto_item *
3096 proto_tree_add_bitmask_value(proto_tree *tree, tvbuff_t *tvb, const guint offset,
3097  const int hf_hdr, const gint ett, int * const *fields, const guint64 value);
3098 
3122 WS_DLL_PUBLIC proto_item *
3123 proto_tree_add_bitmask_value_with_flags(proto_tree *tree, tvbuff_t *tvb, const guint offset,
3124  const int hf_hdr, const gint ett, int * const *fields, const guint64 value, const int flags);
3125 
3140 WS_DLL_PUBLIC void
3141 proto_tree_add_bitmask_list(proto_tree *tree, tvbuff_t *tvb, const guint offset,
3142  const int len, int * const *fields, const guint encoding);
3143 
3159 WS_DLL_PUBLIC void
3160 proto_tree_add_bitmask_list_ret_uint64(proto_tree *tree, tvbuff_t *tvb, const guint offset,
3161  const int len, int * const *fields, const guint encoding, guint64 *retval);
3162 
3177 WS_DLL_PUBLIC void
3178 proto_tree_add_bitmask_list_value(proto_tree *tree, tvbuff_t *tvb, const guint offset,
3179  const int len, int * const *fields, const guint64 value);
3180 
3181 
3203 WS_DLL_PUBLIC proto_item *
3204 proto_tree_add_bitmask_len(proto_tree *tree, tvbuff_t *tvb, const guint offset, const guint len,
3205  const int hf_hdr, const gint ett, int * const *fields, struct expert_field* exp, const guint encoding);
3206 
3219 WS_DLL_PUBLIC proto_item *
3220 proto_tree_add_bitmask_text(proto_tree *tree, tvbuff_t *tvb, const guint offset, const guint len,
3221  const char *name, const char *fallback,
3222  const gint ett, int * const *fields, const guint encoding, const int flags);
3223 
3224 #define BMT_NO_FLAGS 0x00
3225 #define BMT_NO_APPEND 0x01
3226 #define BMT_NO_INT 0x02
3227 #define BMT_NO_FALSE 0x04
3228 #define BMT_NO_TFS 0x08
3239 WS_DLL_PUBLIC proto_item *
3240 proto_tree_add_bits_item(proto_tree *tree, const int hf_index, tvbuff_t *tvb, const guint bit_offset,
3241  const gint no_of_bits, const guint encoding);
3242 
3258 WS_DLL_PUBLIC proto_item *
3259 proto_tree_add_split_bits_item_ret_val(proto_tree *tree, const int hf_index, tvbuff_t *tvb,
3260  const guint bit_offset, const crumb_spec_t *crumb_spec, guint64 *return_value);
3261 
3275 void
3276 proto_tree_add_split_bits_crumb(proto_tree *tree, const int hf_index, tvbuff_t *tvb,
3277  const guint bit_offset, const crumb_spec_t *crumb_spec, guint16 crumb_index);
3278 
3289 WS_DLL_PUBLIC proto_item *
3290 proto_tree_add_bits_ret_val(proto_tree *tree, const int hf_index, tvbuff_t *tvb,
3291  const guint bit_offset, const gint no_of_bits, guint64 *return_value, const guint encoding);
3292 
3305 WS_DLL_PUBLIC proto_item *
3307  const guint bit_offset, const gint no_of_bits, guint32 value, const guint encoding,
3308  const char *format, ...)
3309  G_GNUC_PRINTF(8,9);
3310 
3323 WS_DLL_PUBLIC proto_item *
3325  const guint bit_offset, const gint no_of_bits, guint64 value, const guint encoding,
3326  const char *format, ...)
3327  G_GNUC_PRINTF(8,9);
3328 
3342 proto_item *
3344  const guint bit_offset, const gint no_of_bits, guint64 value, const guint encoding,
3345  const char *format, ...)
3346  G_GNUC_PRINTF(8,9);
3347 
3361 proto_item *
3363  const guint bit_offset, const gint no_of_bits, gint32 value, const guint encoding,
3364  const char *format, ...)
3365  G_GNUC_PRINTF(8,9);
3366 
3380 proto_item *
3382  const guint bit_offset, const gint no_of_bits, gint64 value, const guint encoding,
3383  const char *format, ...)
3384  G_GNUC_PRINTF(8,9);
3385 
3399 proto_item *
3401  const guint bit_offset, const gint no_of_bits, float value, const guint encoding,
3402  const char *format, ...)
3403  G_GNUC_PRINTF(8,9);
3404 
3405 
3414 WS_DLL_PUBLIC proto_item *
3415 proto_tree_add_ts_23_038_7bits_packed_item(proto_tree *tree, const int hfindex, tvbuff_t *tvb,
3416  const guint bit_offset, const gint no_of_chars);
3417 
3425 WS_DLL_PUBLIC proto_item *
3426 proto_tree_add_ascii_7bits_item(proto_tree *tree, const int hfindex, tvbuff_t *tvb,
3427  const guint bit_offset, const gint no_of_chars);
3428 
3446 WS_DLL_PUBLIC proto_item *
3447 proto_tree_add_checksum(proto_tree *tree, tvbuff_t *tvb, const guint offset,
3448  const int hf_checksum, const int hf_checksum_status, struct expert_field* bad_checksum_expert,
3449  packet_info *pinfo, guint32 computed_checksum, const guint encoding, const guint flags);
3450 
3468 WS_DLL_PUBLIC proto_item*
3469 proto_tree_add_checksum_bytes(proto_tree *tree, tvbuff_t *tvb, const guint offset,
3470  const int hf_checksum, const int hf_checksum_status, struct expert_field* bad_checksum_expert,
3471  packet_info *pinfo, const uint8_t *computed_checksum, size_t checksum_len, const guint flags);
3472 
3473 typedef enum
3474 {
3475  PROTO_CHECKSUM_E_BAD = 0,
3476  PROTO_CHECKSUM_E_GOOD,
3477  PROTO_CHECKSUM_E_UNVERIFIED,
3478  PROTO_CHECKSUM_E_NOT_PRESENT,
3479  PROTO_CHECKSUM_E_ILLEGAL
3480 } proto_checksum_enum_e;
3481 
3482 #define PROTO_CHECKSUM_NO_FLAGS 0x00
3483 #define PROTO_CHECKSUM_VERIFY 0x01
3484 #define PROTO_CHECKSUM_GENERATED 0x02
3485 #define PROTO_CHECKSUM_IN_CKSUM 0x04
3486 #define PROTO_CHECKSUM_ZERO 0x08
3487 #define PROTO_CHECKSUM_NOT_PRESENT 0x10
3489 WS_DLL_PUBLIC const value_string proto_checksum_vals[];
3490 
3494 WS_DLL_PUBLIC guchar
3495 proto_check_field_name(const gchar *field_name);
3496 
3501 WS_DLL_PUBLIC guchar
3502 proto_check_field_name_lower(const gchar *field_name);
3503 
3504 
3512 const gchar *
3513 proto_custom_set(proto_tree* tree, GSList *field_id,
3514  gint occurrence,
3515  gchar *result,
3516  gchar *expr, const int size );
3517 
3523 gchar *
3524 proto_custom_get_filter(struct epan_dissect *edt, GSList *field_id, gint occurrence);
3525 
3528 const char *
3529 hfinfo_char_value_format_display(int display, char buf[7], guint32 value);
3530 
3531 #ifdef __cplusplus
3532 }
3533 #endif /* __cplusplus */
3534 
3535 #endif /* proto.h */
3536 
3537 /*
3538  * Editor modelines - https://www.wireshark.org/tools/modelines.html
3539  *
3540  * Local variables:
3541  * c-basic-offset: 4
3542  * tab-width: 8
3543  * indent-tabs-mode: nil
3544  * End:
3545  *
3546  * vi: set shiftwidth=4 tabstop=8 expandtab:
3547  * :indentSize=4:tabSize=8:noTabs=true:
3548  */
WS_DLL_PUBLIC int hf_text_only
Definition: proto.h:56
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_guid(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, const e_guid_t *value_ptr)
Definition: proto.c:5135
void proto_tree_add_split_bits_crumb(proto_tree *tree, const int hf_index, tvbuff_t *tvb, const guint bit_offset, const crumb_spec_t *crumb_spec, guint16 crumb_index)
Definition: proto.c:13328
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item proto_item proto_item proto_item proto_item * proto_tree_add_float_bits_format_value(proto_tree *tree, const int hf_index, tvbuff_t *tvb, const guint bit_offset, const gint no_of_bits, float value, const guint encoding, const char *format,...) G_GNUC_PRINTF(8
WS_DLL_PUBLIC gboolean proto_registrar_is_protocol(const int n)
Definition: proto.c:11136
WS_DLL_PUBLIC gboolean proto_tracking_interesting_fields(const proto_tree *tree)
Definition: proto.c:11191
WS_DLL_PUBLIC proto_tree * proto_tree_get_root(proto_tree *tree)
Definition: proto.c:7953
#define ITEM_LABEL_LENGTH
Definition: proto.h:59
WS_DLL_PUBLIC const char * proto_field_display_to_string(int field_display)
Definition: proto.c:8946
WS_DLL_PUBLIC const char * proto_registrar_get_abbrev(const int n)
Definition: proto.c:11109
WS_DLL_PUBLIC void proto_get_frame_protocols(const wmem_list_t *layers, bool *is_ip, bool *is_tcp, bool *is_udp, bool *is_sctp, bool *is_tls, bool *is_rtp, bool *is_lte_rlc)
Definition: proto.c:8446
WS_DLL_PUBLIC proto_item * proto_tree_add_time_item(proto_tree *tree, int hfindex, tvbuff_t *tvb, const gint start, gint length, const guint encoding, nstime_t *retval, gint *endoff, gint *err)
Definition: proto.c:4555
struct _item_label_t item_label_t
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_ether_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, const guint8 *value, const char *format,...) G_GNUC_PRINTF(7
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC void proto_item_fill_label(field_info *finfo, gchar *label_str)
Definition: proto.c:9828
WS_DLL_PUBLIC gboolean proto_is_protocol_enabled_by_default(const protocol_t *protocol)
Definition: proto.c:8555
WS_DLL_PUBLIC void proto_item_set_end(proto_item *pi, tvbuff_t *tvb, gint end)
Definition: proto.c:7720
#define FI_URL
Definition: proto.h:861
WS_DLL_PUBLIC gchar * proto_list_layers(const packet_info *pinfo)
Definition: proto.c:8511
WS_DLL_PUBLIC gboolean tree_expanded(int tree_type)
Definition: proto.c:13960
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_uint_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, guint32 value, const char *format,...) G_GNUC_PRINTF(7
WS_DLL_PUBLIC proto_item * proto_tree_add_item_ret_float(proto_tree *tree, int hfindex, tvbuff_t *tvb, const gint start, gint length, const guint encoding, gfloat *retval)
Parse a float from the buffer and add it to the tree, returning the item added and the parsed value v...
Definition: proto.c:3827
void proto_tree_prime_with_hfid(proto_tree *tree, const int hfid)
WS_DLL_PUBLIC int proto_item_get_len(const proto_item *pi)
Definition: proto.c:7740
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_protocol_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, const char *format,...) G_GNUC_PRINTF(6
WS_DLL_PUBLIC proto_item * proto_tree_add_bytes_format_value(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, const guint8 *start_ptr, const char *format,...) G_GNUC_PRINTF(7
WS_DLL_PUBLIC int proto_name_already_registered(const gchar *name)
Definition: proto.c:8347
WS_DLL_PUBLIC proto_item * proto_tree_add_none_format(proto_tree *tree, const int hfindex, tvbuff_t *tvb, const gint start, gint length, const char *format,...) G_GNUC_PRINTF(6
WS_DLL_PUBLIC proto_item * proto_tree_add_string_format_value(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, const char *value, const char *format,...) G_GNUC_PRINTF(7
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_eui64_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, const guint64 value, const char *format,...) G_GNUC_PRINTF(7
void proto_tree_set_fake_protocols(proto_tree *tree, gboolean fake_protocols)
Definition: proto.c:877
WS_DLL_PUBLIC int proto_get_id_by_short_name(const gchar *short_name)
Definition: proto.c:8371
WS_DLL_PUBLIC gboolean proto_is_pino(const protocol_t *protocol)
Definition: proto.c:8534
WS_DLL_PUBLIC proto_item * proto_tree_add_item_ret_display_string(proto_tree *tree, int hfindex, tvbuff_t *tvb, const gint start, gint length, const guint encoding, wmem_allocator_t *scope, char **retval)
Definition: proto.c:4233
WS_DLL_PUBLIC protocol_t * find_protocol_by_id(const int proto_id)
Definition: proto.c:8326
WS_DLL_PUBLIC proto_item * proto_tree_add_bitmask_value_with_flags(proto_tree *tree, tvbuff_t *tvb, const guint offset, const int hf_hdr, const gint ett, int *const *fields, const guint64 value, const int flags)
Definition: proto.c:12816
WS_DLL_PUBLIC void proto_register_field_array(const int parent, hf_register_info *hf, const int num_records)
Definition: proto.c:8671
WS_DLL_PUBLIC proto_item * proto_tree_add_bitmask_with_flags_ret_uint64(proto_tree *tree, tvbuff_t *tvb, const guint offset, const int hf_hdr, const gint ett, int *const *fields, const guint encoding, const int flags, guint64 *retval)
Definition: proto.c:12747
WS_DLL_PUBLIC proto_item * proto_tree_add_int64_format_value(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, gint64 value, const char *format,...) G_GNUC_PRINTF(7
WS_DLL_PUBLIC gchar * proto_find_undecoded_data(proto_tree *tree, guint length)
Definition: proto.c:11381
WS_DLL_PUBLIC proto_item * proto_tree_add_uint64_format_value(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, guint64 value, const char *format,...) G_GNUC_PRINTF(7
hf_ref_type
Definition: proto.h:758
WS_DLL_PUBLIC void WS_DLL_PUBLIC void proto_item_append_text(proto_item *pi, const char *format,...) G_GNUC_PRINTF(2
WS_DLL_PUBLIC proto_item * proto_tree_add_mac48_detail(const mac_hf_list_t *list_specific, const mac_hf_list_t *list_generic, gint idx, tvbuff_t *tvb, proto_tree *tree, gint offset)
Definition: proto.c:6241
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_ipv4_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, ws_in4_addr value, const char *format,...) G_GNUC_PRINTF(7
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_uint64(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, guint64 value)
Definition: proto.c:5885
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_bytes(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, const guint8 *start_ptr)
Definition: proto.c:4721
WS_DLL_PUBLIC gboolean proto_registrar_dump_fieldcount(void)
Definition: proto.c:11683
proto_item proto_item * proto_tree_add_text_valist_internal(proto_tree *tree, tvbuff_t *tvb, gint start, gint length, const char *format, va_list ap) G_GNUC_PRINTF(5
WS_DLL_PUBLIC enum ftenum proto_registrar_get_ftype(const int n)
Definition: proto.c:11118
#define FI_RESET_FLAG(fi, flag)
Definition: proto.h:884
WS_DLL_PUBLIC void proto_initialize_all_prefixes(void)
Definition: proto.c:989
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_uint64_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, guint64 value, const char *format,...) G_GNUC_PRINTF(7
WS_DLL_PUBLIC void proto_tree_set_appendix(proto_tree *tree, tvbuff_t *tvb, gint start, const gint length)
Definition: proto.c:8010
WS_DLL_PUBLIC proto_item * proto_tree_add_ipv4_format_value(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, ws_in4_addr value, const char *format,...) G_GNUC_PRINTF(7
WS_DLL_PUBLIC int proto_registrar_get_id_byname(const char *field_name)
Definition: proto.c:1073
struct hf_register_info hf_register_info
WS_DLL_PUBLIC void proto_tree_add_bitmask_list(proto_tree *tree, tvbuff_t *tvb, const guint offset, const int len, int *const *fields, const guint encoding)
Definition: proto.c:12844
WS_DLL_PUBLIC proto_item * proto_tree_add_guid_format_value(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, const e_guid_t *value_ptr, const char *format,...) G_GNUC_PRINTF(7
WS_DLL_PUBLIC proto_item * proto_tree_add_checksum_bytes(proto_tree *tree, tvbuff_t *tvb, const guint offset, const int hf_checksum, const int hf_checksum_status, struct expert_field *bad_checksum_expert, packet_info *pinfo, const uint8_t *computed_checksum, size_t checksum_len, const guint flags)
Definition: proto.c:13855
WS_DLL_PUBLIC char * proto_construct_match_selected_string(field_info *finfo, struct epan_dissect *edt)
Definition: proto.c:12320
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_string(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, const char *value)
Definition: proto.c:5315
WS_DLL_PUBLIC proto_item * proto_tree_add_item_ret_display_string_and_length(proto_tree *tree, int hfindex, tvbuff_t *tvb, const gint start, gint length, const guint encoding, wmem_allocator_t *scope, char **retval, gint *lenretval)
Definition: proto.c:4117
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_int64_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, gint64 value, const char *format,...) G_GNUC_PRINTF(7
WS_DLL_PUBLIC int proto_register_protocol_in_name_only(const char *name, const char *short_name, const char *filter_name, int parent_proto, enum ftenum field_type)
Definition: proto.c:8145
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item proto_item * proto_tree_add_boolean_bits_format_value(proto_tree *tree, const int hf_index, tvbuff_t *tvb, const guint bit_offset, const gint no_of_bits, guint64 value, const guint encoding, const char *format,...) G_GNUC_PRINTF(8
WS_DLL_PUBLIC proto_item * proto_tree_add_double_format_value(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, double value, const char *format,...) G_GNUC_PRINTF(7
struct _proto_node proto_node
WS_DLL_PUBLIC proto_item * proto_tree_add_item_ret_ipv6(proto_tree *tree, int hfindex, tvbuff_t *tvb, const gint start, gint length, const guint encoding, ws_in6_addr *retval)
Parse an ipv6 address from the buffer and add it to the tree, writing the value to the pointer specif...
Definition: proto.c:3958
proto_item proto_item WS_DLL_PUBLIC proto_tree * proto_tree_add_subtree(proto_tree *tree, tvbuff_t *tvb, gint start, gint length, gint idx, proto_item **tree_item, const char *text)
Definition: proto.c:1448
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_oid(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, const guint8 *value_ptr)
Definition: proto.c:5212
WS_DLL_PUBLIC proto_item * proto_tree_add_bitmask(proto_tree *tree, tvbuff_t *tvb, const guint offset, const int hf_hdr, const gint ett, int *const *fields, const guint encoding)
Definition: proto.c:12735
WS_DLL_PUBLIC void proto_registrar_dump_values(void)
Definition: proto.c:11468
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item proto_item proto_item proto_item * proto_tree_add_int64_bits_format_value(proto_tree *tree, const int hf_index, tvbuff_t *tvb, const guint bit_offset, const gint no_of_bits, gint64 value, const guint encoding, const char *format,...) G_GNUC_PRINTF(8
WS_DLL_PUBLIC proto_item * proto_tree_add_split_bits_item_ret_val(proto_tree *tree, const int hf_index, tvbuff_t *tvb, const guint bit_offset, const crumb_spec_t *crumb_spec, guint64 *return_value)
Definition: proto.c:13149
WS_DLL_PUBLIC void proto_item_set_bits_offset_len(proto_item *ti, int bits_offset, int bits_len)
Definition: proto.c:7751
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_int64(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, gint64 value)
Definition: proto.c:6072
#define FI_GET_FLAG(fi, flag)
Definition: proto.h:876
proto_node proto_item
Definition: proto.h:916
WS_DLL_PUBLIC proto_item * proto_tree_add_ether_format_value(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, const guint8 *value, const char *format,...) G_GNUC_PRINTF(7
WS_DLL_PUBLIC const char * proto_get_protocol_long_name(const protocol_t *protocol)
Definition: proto.c:8405
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item struct _mac_hf_list_t mac_hf_list_t
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_oid_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, const guint8 *value_ptr, const char *format,...) G_GNUC_PRINTF(7
WS_DLL_PUBLIC gboolean proto_is_frame_protocol(const wmem_list_t *layers, const char *proto_name)
Definition: proto.c:8486
WS_DLL_PUBLIC proto_tree * proto_item_add_subtree(proto_item *pi, const gint idx) G_GNUC_WARN_UNUSED_RESULT
Definition: proto.c:7866
WS_DLL_PUBLIC proto_tree * proto_tree_add_subtree_format(proto_tree *tree, tvbuff_t *tvb, gint start, gint length, gint idx, proto_item **tree_item, const char *format,...) G_GNUC_PRINTF(7
WS_DLL_PUBLIC header_field_info * proto_registrar_get_byname(const char *field_name)
Definition: proto.c:1000
WS_DLL_PUBLIC header_field_info * proto_registrar_get_byalias(const char *alias_name)
Definition: proto.c:1042
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item proto_item proto_item * proto_tree_add_int_bits_format_value(proto_tree *tree, const int hf_index, tvbuff_t *tvb, const guint bit_offset, const gint no_of_bits, gint32 value, const guint encoding, const char *format,...) G_GNUC_PRINTF(8
WS_DLL_PUBLIC int proto_registrar_get_parent(const int n)
Definition: proto.c:11127
proto_tree * proto_tree_create_root(struct _packet_info *pinfo)
Definition: proto.c:7772
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_string_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, const char *value, const char *format,...) G_GNUC_PRINTF(7
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_ether(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, const guint8 *value)
Definition: proto.c:5430
WS_DLL_PUBLIC proto_item * proto_tree_add_ipxnet_format_value(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, guint32 value, const char *format,...) G_GNUC_PRINTF(7
#define FI_HIDDEN
Definition: proto.h:856
WS_DLL_PUBLIC void proto_deregister_field(const int parent, gint hf_id)
Definition: proto.c:8705
WS_DLL_PUBLIC proto_item * proto_tree_add_int_format_value(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, gint32 value, const char *format,...) G_GNUC_PRINTF(7
WS_DLL_PUBLIC proto_item * proto_tree_add_bitmask_with_flags(proto_tree *tree, tvbuff_t *tvb, const guint offset, const int hf_hdr, const gint ett, int *const *fields, const guint encoding, const int flags)
Definition: proto.c:12782
WS_DLL_PUBLIC void proto_tree_add_bitmask_list_value(proto_tree *tree, tvbuff_t *tvb, const guint offset, const int len, int *const *fields, const guint64 value)
Definition: proto.c:12873
WS_DLL_PUBLIC proto_tree * proto_item_get_subtree(proto_item *pi)
Definition: proto.c:7884
WS_DLL_PUBLIC proto_item * proto_tree_add_ipv6_format_value(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, const ws_in6_addr *value_ptr, const char *format,...) G_GNUC_PRINTF(7
proto_item * proto_tree_add_text_internal(proto_tree *tree, tvbuff_t *tvb, gint start, gint length, const char *format,...) G_GNUC_PRINTF(5
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_uint(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, guint32 value)
Definition: proto.c:5792
WS_DLL_PUBLIC proto_item * proto_tree_add_bits_item(proto_tree *tree, const int hf_index, tvbuff_t *tvb, const guint bit_offset, const gint no_of_bits, const guint encoding)
Definition: proto.c:12970
WS_DLL_PUBLIC GPtrArray * proto_find_first_finfo(proto_tree *tree, const int hfindex)
Definition: proto.c:11268
WS_DLL_PUBLIC proto_item * proto_item_get_parent(const proto_item *pi)
Definition: proto.c:7896
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_float_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, float value, const char *format,...) G_GNUC_PRINTF(7
struct field_info field_info
WS_DLL_PUBLIC proto_item * proto_tree_add_bytes_with_length(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, const guint8 *start_ptr, gint ptr_length)
Definition: proto.c:4746
WS_DLL_PUBLIC void tree_expanded_set(int tree_type, gboolean value)
Definition: proto.c:13970
WS_DLL_PUBLIC proto_item * proto_tree_add_time_format_value(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, nstime_t *value_ptr, const char *format,...) G_GNUC_PRINTF(7
proto_item * proto_tree_add_format_wsp_text(proto_tree *tree, tvbuff_t *tvb, gint start, gint length)
Definition: proto.c:1518
void proto_tree_prime_with_hfid_print(proto_tree *tree, const int hfid)
WS_DLL_PUBLIC GPtrArray * proto_get_finfo_ptr_array(const proto_tree *tree, const int hfindex)
Definition: proto.c:11178
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_uint64_bits_format_value(proto_tree *tree, const int hf_index, tvbuff_t *tvb, const guint bit_offset, const gint no_of_bits, guint64 value, const guint encoding, const char *format,...) G_GNUC_PRINTF(8
WS_DLL_PUBLIC proto_item * proto_tree_add_item_ret_double(proto_tree *tree, int hfindex, tvbuff_t *tvb, const gint start, gint length, const guint encoding, gdouble *retval)
Parse a double from the buffer and add it to the tree, returning the item added and the parsed value ...
Definition: proto.c:3866
WS_DLL_PUBLIC void proto_heuristic_dissector_foreach(const protocol_t *protocol, GFunc func, gpointer user_data)
Definition: proto.c:8437
WS_DLL_PUBLIC void proto_add_deregistered_data(void *data)
Definition: proto.c:8735
field_display_e
Definition: proto.h:685
WS_DLL_PUBLIC proto_item * proto_tree_add_eui64_format_value(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, const guint64 value, const char *format,...) G_GNUC_PRINTF(7
WS_DLL_PUBLIC proto_item * proto_tree_add_item_ret_string_and_length(proto_tree *tree, int hfindex, tvbuff_t *tvb, const gint start, gint length, const guint encoding, wmem_allocator_t *scope, const guint8 **retval, gint *lenretval)
Definition: proto.c:4036
void(* prefix_initializer_t)(const char *match)
Definition: proto.h:2608
WS_DLL_PUBLIC void proto_tree_add_bitmask_list_ret_uint64(proto_tree *tree, tvbuff_t *tvb, const guint offset, const int len, int *const *fields, const guint encoding, guint64 *retval)
Definition: proto.c:12857
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_int_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, gint32 value, const char *format,...) G_GNUC_PRINTF(7
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_ipv4(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, ws_in4_addr value)
Definition: proto.c:4977
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_ipv6(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, const ws_in6_addr *value_ptr)
Definition: proto.c:5044
WS_DLL_PUBLIC proto_item * proto_tree_add_uint_bits_format_value(proto_tree *tree, const int hf_index, tvbuff_t *tvb, const guint bit_offset, const gint no_of_bits, guint32 value, const guint encoding, const char *format,...) G_GNUC_PRINTF(8
WS_DLL_PUBLIC gboolean proto_can_toggle_protocol(const int proto_id)
Definition: proto.c:8566
void proto_cleanup(void)
Definition: proto.c:725
gboolean proto_deregister_protocol(const char *short_name)
Definition: proto.c:8204
WS_DLL_PUBLIC const char * proto_get_protocol_filter_name(const int proto_id)
Definition: proto.c:8413
WS_DLL_PUBLIC proto_item * proto_tree_add_bitmask_value(proto_tree *tree, tvbuff_t *tvb, const guint offset, const int hf_hdr, const gint ett, int *const *fields, const guint64 value)
Definition: proto.c:12807
WS_DLL_PUBLIC gboolean proto_registrar_dump_field_completions(char *prefix)
Definition: proto.c:12064
WS_DLL_PUBLIC int proto_item_fill_display_label(field_info *fi, gchar *display_label_str, const int label_str_size)
Definition: proto.c:6888
WS_DLL_PUBLIC guchar proto_check_field_name_lower(const gchar *field_name)
Definition: proto.c:13954
WS_DLL_PUBLIC WS_NORETURN void proto_report_dissector_bug(const char *format,...) G_GNUC_PRINTF(1
WS_DLL_PUBLIC proto_item * proto_tree_add_item_ret_time_string(proto_tree *tree, int hfindex, tvbuff_t *tvb, const gint start, gint length, const guint encoding, wmem_allocator_t *scope, char **retval)
Definition: proto.c:4245
WS_DLL_PUBLIC gboolean proto_is_protocol_enabled(const protocol_t *protocol)
Definition: proto.c:8541
void proto_add_heuristic_dissector(protocol_t *protocol, const char *short_name)
Definition: proto.c:8423
WS_DLL_PUBLIC proto_item * proto_tree_add_bits_ret_val(proto_tree *tree, const int hf_index, tvbuff_t *tvb, const guint bit_offset, const gint no_of_bits, guint64 *return_value, const guint encoding)
Definition: proto.c:13358
WS_DLL_PUBLIC void proto_tree_free(proto_tree *tree)
Definition: proto.c:841
WS_DLL_PUBLIC proto_item * proto_tree_add_item_ret_string(proto_tree *tree, int hfindex, tvbuff_t *tvb, const gint start, gint length, const guint encoding, wmem_allocator_t *scope, const guint8 **retval)
Definition: proto.c:4107
WS_DLL_PUBLIC void proto_registrar_dump_fields(void)
Definition: proto.c:11953
WS_DLL_PUBLIC proto_item * proto_tree_add_debug_text(proto_tree *tree, const char *format,...) G_GNUC_PRINTF(2
WS_DLL_PUBLIC int proto_get_first_protocol(void **cookie)
Definition: proto.c:8264
WS_DLL_PUBLIC GPtrArray * proto_find_finfo(proto_tree *tree, const int hfindex)
Definition: proto.c:11249
WS_DLL_PUBLIC void proto_tree_move_item(proto_tree *tree, proto_item *fixed_item, proto_item *item_to_move)
Definition: proto.c:7963
gint proto_registrar_get_length(const int n)
Definition: proto.c:11149
const gchar * proto_custom_set(proto_tree *tree, GSList *field_id, gint occurrence, gchar *result, gchar *expr, const int size)
Definition: proto.c:7166
proto_node proto_tree
Definition: proto.h:914
WS_DLL_PUBLIC proto_item * proto_tree_add_item_new(proto_tree *tree, header_field_info *hfinfo, tvbuff_t *tvb, const gint start, gint length, const guint encoding)
Definition: proto.c:4324
WS_DLL_PUBLIC const char * proto_registrar_get_name(const int n)
Definition: proto.c:11100
WS_DLL_PUBLIC proto_item * proto_tree_add_bitmask_ret_uint64(proto_tree *tree, tvbuff_t *tvb, const guint offset, const int hf_hdr, const gint ett, int *const *fields, const guint encoding, guint64 *retval)
Definition: proto.c:12709
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_eui64(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, const guint64 value)
Definition: proto.c:6167
WS_DLL_PUBLIC field_info * proto_find_field_from_offset(proto_tree *tree, guint offset, tvbuff_t *tvb)
Definition: proto.c:11342
WS_DLL_PUBLIC void proto_disable_by_default(const int proto_id)
Definition: proto.c:8579
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item proto_item proto_item proto_item proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_ts_23_038_7bits_packed_item(proto_tree *tree, const int hfindex, tvbuff_t *tvb, const guint bit_offset, const gint no_of_chars)
Definition: proto.c:13692
WS_DLL_PUBLIC void proto_item_set_text(proto_item *pi, const char *format,...) G_GNUC_PRINTF(2
WS_DLL_PUBLIC gboolean proto_tree_set_visible(proto_tree *tree, gboolean visible)
Definition: proto.c:867
WS_DLL_PUBLIC proto_item * proto_tree_add_oid_format_value(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, const guint8 *value_ptr, const char *format,...) G_GNUC_PRINTF(7
WS_DLL_PUBLIC proto_item * proto_tree_add_boolean_format_value(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, guint64 value, const char *format,...) G_GNUC_PRINTF(7
gchar * proto_custom_get_filter(struct epan_dissect *edt, GSList *field_id, gint occurrence)
Definition: proto.c:7387
WS_DLL_PUBLIC void WS_DLL_PUBLIC void WS_DLL_PUBLIC void proto_item_prepend_text(proto_item *pi, const char *format,...) G_GNUC_PRINTF(2
WS_DLL_PUBLIC proto_item * proto_tree_add_item_ret_ether(proto_tree *tree, int hfindex, tvbuff_t *tvb, const gint start, gint length, const guint encoding, guint8 *retval)
Parse an ethernet address from the buffer and add it to the tree, writing the value to the pointer sp...
Definition: proto.c:3997
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_ipxnet_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, guint32 value, const char *format,...) G_GNUC_PRINTF(7
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_double_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, double value, const char *format,...) G_GNUC_PRINTF(7
WS_DLL_PUBLIC guchar proto_check_field_name(const gchar *field_name)
Definition: proto.c:13948
WS_DLL_PUBLIC void WS_DLL_PUBLIC void WS_DLL_PUBLIC void WS_DLL_PUBLIC void proto_item_set_len(proto_item *pi, const gint length)
Definition: proto.c:7695
WS_DLL_PUBLIC void proto_register_plugin(const proto_plugin *plugin)
WS_DLL_PUBLIC int proto_get_id_by_filter_name(const gchar *filter_name)
Definition: proto.c:8357
WS_DLL_PUBLIC void proto_set_cant_toggle(const int proto_id)
Definition: proto.c:8650
WS_DLL_PUBLIC void proto_register_prefix(const char *prefix, prefix_initializer_t initializer)
Definition: proto.c:972
WS_DLL_PUBLIC int proto_register_protocol(const char *name, const char *short_name, const char *filter_name)
Definition: proto.c:8075
WS_DLL_PUBLIC proto_item * proto_tree_add_checksum(proto_tree *tree, tvbuff_t *tvb, const guint offset, const int hf_checksum, const int hf_checksum_status, struct expert_field *bad_checksum_expert, packet_info *pinfo, guint32 computed_checksum, const guint encoding, const guint flags)
Definition: proto.c:13758
WS_DLL_PUBLIC void proto_registrar_dump_protocols(void)
Definition: proto.c:11405
WS_DLL_PUBLIC proto_item * proto_tree_add_bitmask_len(proto_tree *tree, tvbuff_t *tvb, const guint offset, const guint len, const int hf_hdr, const gint ett, int *const *fields, struct expert_field *exp, const guint encoding)
Definition: proto.c:12895
WS_DLL_PUBLIC gboolean proto_can_match_selected(field_info *finfo, struct epan_dissect *edt)
Definition: proto.c:12308
WS_DLL_PUBLIC proto_item * proto_tree_add_float_format_value(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, float value, const char *format,...) G_GNUC_PRINTF(7
WS_DLL_PUBLIC proto_item * proto_tree_add_bitmask_text(proto_tree *tree, tvbuff_t *tvb, const guint offset, const guint len, const char *name, const char *fallback, const gint ett, int *const *fields, const guint encoding, const int flags)
Definition: proto.c:12947
WS_DLL_PUBLIC header_field_info * proto_registrar_get_nth(guint hfindex)
Definition: proto.c:914
WS_DLL_PUBLIC GPtrArray * proto_all_finfos(proto_tree *tree)
Definition: proto.c:11295
WS_DLL_PUBLIC const char * proto_get_protocol_name(const int proto_id)
Definition: proto.c:8385
WS_DLL_PUBLIC char * proto_item_get_display_repr(wmem_allocator_t *scope, proto_item *pi)
Definition: proto.c:7760
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_ipxnet(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, guint32 value)
Definition: proto.c:4912
gboolean proto_check_for_protocol_or_field(const proto_tree *tree, const int id)
Definition: proto.c:11160
void proto_init(GSList *register_all_plugin_protocols_list, GSList *register_all_plugin_handoffs_list, register_cb cb, void *client_data)
WS_DLL_PUBLIC void proto_registrar_dump_ftypes(void)
Definition: proto.c:12129
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_time(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, const nstime_t *value_ptr)
Definition: proto.c:4845
WS_DLL_PUBLIC proto_item * proto_tree_add_item_new_ret_length(proto_tree *tree, header_field_info *hfinfo, tvbuff_t *tvb, const gint start, gint length, const guint encoding, gint *lenretval)
Definition: proto.c:4359
WS_DLL_PUBLIC proto_item * proto_tree_add_ascii_7bits_item(proto_tree *tree, const int hfindex, tvbuff_t *tvb, const guint bit_offset, const gint no_of_chars)
Definition: proto.c:13720
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_float(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, float value)
Definition: proto.c:5662
WS_DLL_PUBLIC void proto_reenable_all(void)
Definition: proto.c:8632
WS_DLL_PUBLIC void proto_register_subtree_array(gint *const *indices, const int num_indices)
Definition: proto.c:9692
WS_DLL_PUBLIC void proto_disable_all(void)
Definition: proto.c:8602
WS_DLL_PUBLIC gboolean proto_field_is_referenced(proto_tree *tree, int proto_id)
Definition: proto.c:890
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_int(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, gint32 value)
Definition: proto.c:5977
WS_DLL_PUBLIC proto_item * proto_tree_add_uint_format_value(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, guint32 value, const char *format,...) G_GNUC_PRINTF(7
WS_DLL_PUBLIC void proto_set_decoding(const int proto_id, const gboolean enabled)
Definition: proto.c:8591
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_time_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, nstime_t *value_ptr, const char *format,...) G_GNUC_PRINTF(7
WS_DLL_PUBLIC int num_tree_types
Definition: proto.h:2921
#define PITEM_FINFO(proto_item)
Definition: proto.h:984
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_bytes_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, const guint8 *start_ptr, const char *format,...) G_GNUC_PRINTF(7
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_guid_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, const e_guid_t *value_ptr, const char *format,...) G_GNUC_PRINTF(7
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_boolean_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, guint64 value, const char *format,...) G_GNUC_PRINTF(7
WS_DLL_PUBLIC proto_tree * proto_tree_get_parent_tree(proto_tree *tree)
Definition: proto.c:7939
WS_DLL_PUBLIC void proto_free_deregistered_fields(void)
Definition: proto.c:8897
WS_DLL_PUBLIC proto_item * proto_tree_get_parent(proto_tree *tree)
Definition: proto.c:7932
WS_DLL_PUBLIC proto_item * proto_tree_add_item_ret_int(proto_tree *tree, int hfindex, tvbuff_t *tvb, const gint start, gint length, const guint encoding, gint32 *retval)
Definition: proto.c:3230
WS_DLL_PUBLIC const char * proto_get_protocol_short_name(const protocol_t *protocol)
Definition: proto.c:8397
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_double(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, double value)
Definition: proto.c:5727
#define FI_GENERATED
Definition: proto.h:859
#define FI_SET_FLAG(fi, flag)
Definition: proto.h:878
WS_DLL_PUBLIC proto_item * proto_tree_add_bytes_item(proto_tree *tree, int hfindex, tvbuff_t *tvb, const gint start, gint length, const guint encoding, GByteArray *retval, gint *endoff, gint *err)
Definition: proto.c:4427
WS_DLL_PUBLIC int proto_get_id(const protocol_t *protocol)
Definition: proto.c:8341
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_boolean(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, guint64 value)
Definition: proto.c:5501
WS_DLL_PUBLIC void proto_register_alias(const int proto_id, const char *alias_name)
Definition: proto.c:8246
WS_DLL_PUBLIC void proto_registrar_dump_elastic(const gchar *filter)
Definition: proto.c:11791
WS_DLL_PUBLIC proto_item WS_DLL_PUBLIC proto_item * proto_tree_add_ipv6_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gint length, const ws_in6_addr *value_ptr, const char *format,...) G_GNUC_PRINTF(7
WS_DLL_PUBLIC void proto_free_field_strings(ftenum_t field_type, unsigned int field_display, const void *field_strings)
Definition: proto.c:8751
WS_DLL_PUBLIC proto_tree proto_item * proto_tree_add_format_text(proto_tree *tree, tvbuff_t *tvb, gint start, gint length)
Definition: proto.c:1499
WS_DLL_PUBLIC proto_item * proto_item_get_parent_nth(proto_item *pi, int gen)
Definition: proto.c:7918
void proto_add_deregistered_slice(gsize block_size, gpointer mem_block)
Definition: proto.c:8741
@ HF_REF_TYPE_INDIRECT
Definition: proto.h:760
@ HF_REF_TYPE_NONE
Definition: proto.h:759
@ HF_REF_TYPE_DIRECT
Definition: proto.h:761
@ HF_REF_TYPE_PRINT
Definition: proto.h:762
@ ABSOLUTE_TIME_DOY_UTC
Definition: proto.h:718
@ BASE_PT_UDP
Definition: proto.h:707
@ BASE_HEX_DEC
Definition: proto.h:693
@ BASE_HEX
Definition: proto.h:690
@ ABSOLUTE_TIME_NTP_UTC
Definition: proto.h:719
@ BASE_EXP
Definition: proto.h:695
@ ABSOLUTE_TIME_UTC
Definition: proto.h:717
@ BASE_DEC
Definition: proto.h:689
@ ABSOLUTE_TIME_UNIX
Definition: proto.h:720
@ BASE_PT_TCP
Definition: proto.h:708
@ BASE_DEC_HEX
Definition: proto.h:692
@ BASE_OUI
Definition: proto.h:713
@ SEP_COLON
Definition: proto.h:700
@ BASE_PT_SCTP
Definition: proto.h:710
@ BASE_NETMASK
Definition: proto.h:704
@ ABSOLUTE_TIME_LOCAL
Definition: proto.h:716
@ BASE_PT_DCCP
Definition: proto.h:709
@ BASE_STR_WSP
Definition: proto.h:723
@ BASE_NONE
Definition: proto.h:686
@ SEP_DOT
Definition: proto.h:698
@ SEP_DASH
Definition: proto.h:699
@ SEP_SPACE
Definition: proto.h:701
@ BASE_OCT
Definition: proto.h:691
@ BASE_CUSTOM
Definition: proto.h:694
Definition: guid-utils.h:22
Definition: ftypes-int.h:17
Definition: proto.h:769
int same_name_prev_id
Definition: proto.h:786
guint64 bitmask
Definition: proto.h:779
int display
Definition: proto.h:774
const void * strings
Definition: proto.h:775
const char * name
Definition: proto.h:771
hf_ref_type ref_type
Definition: proto.h:785
int parent
Definition: proto.h:784
enum ftenum type
Definition: proto.h:773
const char * abbrev
Definition: proto.h:772
const char * blurb
Definition: proto.h:780
int id
Definition: proto.h:783
header_field_info * same_name_next
Definition: proto.h:787
Definition: proto.h:811
Definition: proto.h:2513
Definition: packet_info.h:44
Definition: plugins.c:29
Definition: proto.h:904
Definition: proto.c:371
Definition: value_string.h:26
Definition: wmem_allocator.h:27
Definition: wmem_list.c:23
Definition: proto.h:841
Definition: inet_addr.h:21
Definition: epan_dissect.h:28
Definition: expert.h:39
Definition: proto.h:816
gint tree_type
Definition: proto.h:822
guint32 flags
Definition: proto.h:823
gint appendix_start
Definition: proto.h:820
tvbuff_t * ds_tvb
Definition: proto.h:825
int proto_layer_num
Definition: proto.h:828
int total_layer_num
Definition: proto.h:827
gint length
Definition: proto.h:819
const header_field_info * hfinfo
Definition: proto.h:817
gint start
Definition: proto.h:818
item_label_t * rep
Definition: proto.h:824
gint appendix_length
Definition: proto.h:821
Definition: proto.h:805
int * p_id
Definition: proto.h:806
header_field_info hfinfo
Definition: proto.h:807
Definition: nstime.h:26
Definition: proto.h:1080
Definition: proto.h:895
Definition: tvbuff-int.h:35