Wireshark 4.7.0
The Wireshark network protocol analyzer
Loading...
Searching...
No Matches
tvbuff.h
Go to the documentation of this file.
1
21#ifndef __TVBUFF_H__
22#define __TVBUFF_H__
23
24#include <ws_symbol_export.h>
25#include <ws_attributes.h>
26
27#include <epan/guid-utils.h>
28
29#include <wsutil/inet_addr.h>
30#include <wsutil/nstime.h>
31#include "wsutil/ws_mempbrk.h"
32
33#ifdef __cplusplus
34extern "C" {
35#endif /* __cplusplus */
36
48struct tvbuff;
49typedef struct tvbuff tvbuff_t;
50
104typedef void (*tvbuff_free_cb_t)(void*);
105
120WS_DLL_PUBLIC tvbuff_t *tvb_new_octet_aligned(tvbuff_t *tvb,
121 uint32_t bit_offset, int32_t no_of_bits);
122
135 uint32_t bit_offset, int32_t no_of_bits);
136
150WS_DLL_PUBLIC tvbuff_t *tvb_new_chain(tvbuff_t *parent, tvbuff_t *backing);
151
158WS_DLL_PUBLIC tvbuff_t *tvb_clone(tvbuff_t *tvb);
159
174WS_DLL_PUBLIC tvbuff_t *tvb_clone_offset_len(tvbuff_t *tvb, unsigned offset,
175 unsigned len);
176
185WS_DLL_PUBLIC void tvb_free(tvbuff_t *tvb);
186
195WS_DLL_PUBLIC void tvb_free_chain(tvbuff_t *tvb);
196
206WS_DLL_PUBLIC void tvb_set_free_cb(tvbuff_t *tvb, const tvbuff_free_cb_t func);
207
225WS_DLL_PUBLIC void tvb_set_child_real_data_tvbuff(tvbuff_t *parent,
226 tvbuff_t *child);
227
241WS_DLL_PUBLIC tvbuff_t *tvb_new_child_real_data(tvbuff_t *parent,
242 const uint8_t *data, const unsigned length, const int reported_length);
243
257WS_DLL_PUBLIC tvbuff_t *tvb_new_real_data(const uint8_t *data,
258 const unsigned length, const int reported_length);
259
296WS_DLL_PUBLIC tvbuff_t *tvb_new_subset_length_caplen(tvbuff_t *backing,
297 const int backing_offset, const int backing_length,
298 const int reported_length);
299
314WS_DLL_PUBLIC tvbuff_t *tvb_new_subset_length(tvbuff_t *backing,
315 const int backing_offset, const int reported_length);
316
327WS_DLL_PUBLIC tvbuff_t *tvb_new_subset_remaining(tvbuff_t *backing,
328 const int backing_offset);
329
339WS_DLL_PUBLIC void tvb_composite_append(tvbuff_t *tvb, tvbuff_t *member);
340
350WS_DLL_PUBLIC void tvb_composite_prepend(tvbuff_t *tvb, tvbuff_t *member);
351
357WS_DLL_PUBLIC tvbuff_t *tvb_new_composite(void);
358
359
368WS_DLL_PUBLIC void tvb_composite_finalize(tvbuff_t *tvb);
369
370
381WS_DLL_PUBLIC unsigned tvb_captured_length(const tvbuff_t *tvb);
382
396WS_DLL_PUBLIC int tvb_captured_length_remaining(const tvbuff_t *tvb, const unsigned offset);
397
414WS_DLL_PUBLIC unsigned tvb_ensure_captured_length_remaining(const tvbuff_t *tvb,
415 const unsigned offset);
416
431WS_DLL_PUBLIC bool tvb_bytes_exist(const tvbuff_t *tvb, const unsigned offset,
432 const int length);
433
446WS_DLL_PUBLIC void tvb_ensure_bytes_exist64(const tvbuff_t *tvb,
447 const unsigned offset, const uint64_t length);
448
460WS_DLL_PUBLIC void tvb_ensure_bytes_exist(const tvbuff_t *tvb,
461 const unsigned offset, const int length);
462
471WS_DLL_PUBLIC bool tvb_offset_exists(const tvbuff_t *tvb,
472 const unsigned offset);
473
481WS_DLL_PUBLIC unsigned tvb_reported_length(const tvbuff_t *tvb);
482
495WS_DLL_PUBLIC int tvb_reported_length_remaining(const tvbuff_t *tvb,
496 const unsigned offset);
497
512WS_DLL_PUBLIC unsigned tvb_ensure_reported_length_remaining(const tvbuff_t *tvb,
513 const unsigned offset);
514
527WS_DLL_PUBLIC void tvb_set_reported_length(tvbuff_t *tvb, const unsigned reported_length);
528
529
539WS_DLL_PUBLIC void tvb_fix_reported_length(tvbuff_t *tvb);
540
552WS_DLL_PUBLIC unsigned tvb_offset_from_real_beginning(const tvbuff_t *tvb);
553
565WS_DLL_PUBLIC int tvb_raw_offset(tvbuff_t *tvb);
566
576WS_DLL_PUBLIC void tvb_set_fragment(tvbuff_t *tvb);
577
589WS_DLL_PUBLIC struct tvbuff *tvb_get_ds_tvb(tvbuff_t *tvb);
590
591
592/************** START OF ACCESSORS ****************/
593/* All accessors will throw an exception if appropriate */
594
606WS_DLL_PUBLIC uint8_t tvb_get_uint8(tvbuff_t *tvb, const int offset);
607
621WS_DEPRECATED_X("Use tvb_get_uint8 instead")
622static inline uint8_t tvb_get_guint8(tvbuff_t *tvb, const int offset) {
623 return tvb_get_uint8(tvb, offset);
624}
625
637WS_DLL_PUBLIC int8_t tvb_get_int8(tvbuff_t *tvb, const int offset);
638
652WS_DEPRECATED_X("Use tvb_get_int8 instead")
653static inline int8_t tvb_get_gint8(tvbuff_t *tvb, const int offset) { return tvb_get_int8(tvb, offset); }
654
671WS_DLL_PUBLIC uint16_t tvb_get_ntohs(tvbuff_t *tvb, const int offset);
672
689WS_DLL_PUBLIC int16_t tvb_get_ntohis(tvbuff_t *tvb, const int offset);
690
707WS_DLL_PUBLIC uint32_t tvb_get_ntoh24(tvbuff_t *tvb, const int offset);
708
725WS_DLL_PUBLIC int32_t tvb_get_ntohi24(tvbuff_t *tvb, const int offset);
726
743WS_DLL_PUBLIC uint32_t tvb_get_ntohl(tvbuff_t *tvb, const int offset);
744
761WS_DLL_PUBLIC int32_t tvb_get_ntohil(tvbuff_t *tvb, const int offset);
762
779WS_DLL_PUBLIC uint64_t tvb_get_ntoh40(tvbuff_t *tvb, const int offset);
780
797WS_DLL_PUBLIC int64_t tvb_get_ntohi40(tvbuff_t *tvb, const int offset);
798
815WS_DLL_PUBLIC uint64_t tvb_get_ntoh48(tvbuff_t *tvb, const int offset);
816
833WS_DLL_PUBLIC int64_t tvb_get_ntohi48(tvbuff_t *tvb, const int offset);
834
851WS_DLL_PUBLIC uint64_t tvb_get_ntoh56(tvbuff_t *tvb, const int offset);
852
869WS_DLL_PUBLIC int64_t tvb_get_ntohi56(tvbuff_t *tvb, const int offset);
870
887WS_DLL_PUBLIC uint64_t tvb_get_ntoh64(tvbuff_t *tvb, const int offset);
888
905WS_DLL_PUBLIC int64_t tvb_get_ntohi64(tvbuff_t *tvb, const int offset);
906
923WS_DLL_PUBLIC float tvb_get_ntohieee_float(tvbuff_t *tvb, const int offset);
924
941WS_DLL_PUBLIC double tvb_get_ntohieee_double(tvbuff_t *tvb,
942 const int offset);
943
960WS_DLL_PUBLIC uint16_t tvb_get_letohs(tvbuff_t *tvb, const int offset);
961
978WS_DLL_PUBLIC int16_t tvb_get_letohis(tvbuff_t *tvb, const int offset);
979
996WS_DLL_PUBLIC uint32_t tvb_get_letoh24(tvbuff_t *tvb, const int offset);
997
1014WS_DLL_PUBLIC int32_t tvb_get_letohi24(tvbuff_t *tvb, const int offset);
1015
1032WS_DLL_PUBLIC uint32_t tvb_get_letohl(tvbuff_t *tvb, const int offset);
1033
1050WS_DLL_PUBLIC int32_t tvb_get_letohil(tvbuff_t *tvb, const int offset);
1051
1068WS_DLL_PUBLIC uint64_t tvb_get_letoh40(tvbuff_t *tvb, const int offset);
1069
1086WS_DLL_PUBLIC int64_t tvb_get_letohi40(tvbuff_t *tvb, const int offset);
1087
1104WS_DLL_PUBLIC uint64_t tvb_get_letoh48(tvbuff_t *tvb, const int offset);
1105
1122WS_DLL_PUBLIC int64_t tvb_get_letohi48(tvbuff_t *tvb, const int offset);
1123
1140WS_DLL_PUBLIC uint64_t tvb_get_letoh56(tvbuff_t *tvb, const int offset);
1141
1158WS_DLL_PUBLIC int64_t tvb_get_letohi56(tvbuff_t *tvb, const int offset);
1159
1176WS_DLL_PUBLIC uint64_t tvb_get_letoh64(tvbuff_t *tvb, const int offset);
1177
1194WS_DLL_PUBLIC int64_t tvb_get_letohi64(tvbuff_t *tvb, const int offset);
1195
1212WS_DLL_PUBLIC float tvb_get_letohieee_float(tvbuff_t *tvb, const int offset);
1213
1230WS_DLL_PUBLIC double tvb_get_letohieee_double(tvbuff_t *tvb,
1231 const int offset);
1232
1248WS_DLL_PUBLIC uint16_t tvb_get_uint16(tvbuff_t *tvb, const int offset, const unsigned encoding);
1249
1264WS_DEPRECATED_X("Use tvb_get_uint16 instead")
1265static inline uint16_t tvb_get_guint16(tvbuff_t *tvb, const int offset, const unsigned encoding) {
1266 return tvb_get_uint16(tvb, offset, encoding);
1267}
1268
1284WS_DLL_PUBLIC int16_t tvb_get_int16(tvbuff_t *tvb, const int offset, const unsigned encoding);
1285
1300WS_DEPRECATED_X("Use tvb_get_int16 instead")
1301static inline int16_t tvb_get_gint16(tvbuff_t *tvb, const int offset, const unsigned encoding) { return tvb_get_int16(tvb, offset, encoding); }
1302
1318WS_DLL_PUBLIC uint32_t tvb_get_uint24(tvbuff_t *tvb, const int offset, const unsigned encoding);
1319
1334WS_DEPRECATED_X("Use tvb_get_uint24 instead")
1335static inline uint32_t tvb_get_guint24(tvbuff_t *tvb, const int offset, const unsigned encoding) { return tvb_get_uint24(tvb, offset, encoding); }
1336
1352WS_DLL_PUBLIC int32_t tvb_get_int24(tvbuff_t *tvb, const int offset, const unsigned encoding);
1353
1368WS_DEPRECATED_X("Use tvb_get_int24 instead")
1369static inline int32_t tvb_get_gint24(tvbuff_t *tvb, const int offset, const unsigned encoding) { return tvb_get_int24(tvb, offset, encoding); }
1370
1386WS_DLL_PUBLIC uint32_t tvb_get_uint32(tvbuff_t *tvb, const int offset, const unsigned encoding);
1387
1402WS_DEPRECATED_X("Use tvb_get_uint32 instead")
1403static inline uint32_t tvb_get_guint32(tvbuff_t *tvb, const int offset, const unsigned encoding) { return tvb_get_uint32(tvb, offset, encoding); }
1404
1420WS_DLL_PUBLIC int32_t tvb_get_int32(tvbuff_t *tvb, const int offset, const unsigned encoding);
1421
1436WS_DEPRECATED_X("Use tvb_get_int32 instead")
1437static inline int32_t tvb_get_gint32(tvbuff_t *tvb, const int offset, const unsigned encoding) { return tvb_get_int32(tvb, offset, encoding); }
1438
1454WS_DLL_PUBLIC uint64_t tvb_get_uint40(tvbuff_t *tvb, const int offset, const unsigned encoding);
1455
1470WS_DEPRECATED_X("Use tvb_get_uint40 instead")
1471static inline uint64_t tvb_get_guint40(tvbuff_t *tvb, const int offset, const unsigned encoding) { return tvb_get_uint40(tvb, offset, encoding); }
1472
1488WS_DLL_PUBLIC int64_t tvb_get_int40(tvbuff_t *tvb, const int offset, const unsigned encoding);
1489
1504WS_DEPRECATED_X("Use tvb_get_int40 instead")
1505static inline int64_t tvb_get_gint40(tvbuff_t *tvb, const int offset, const unsigned encoding) { return tvb_get_int40(tvb, offset, encoding); }
1506
1522WS_DLL_PUBLIC uint64_t tvb_get_uint48(tvbuff_t *tvb, const int offset, const unsigned encoding);
1523
1538WS_DEPRECATED_X("Use tvb_get_uint48 instead")
1539static inline uint64_t tvb_get_guint48(tvbuff_t *tvb, const int offset, const unsigned encoding) { return tvb_get_uint48(tvb, offset, encoding); }
1540
1556WS_DLL_PUBLIC int64_t tvb_get_int48(tvbuff_t *tvb, const int offset, const unsigned encoding);
1557
1572WS_DEPRECATED_X("Use tvb_get_int48 instead")
1573static inline int64_t tvb_get_gint48(tvbuff_t *tvb, const int offset, const unsigned encoding) { return tvb_get_int48(tvb, offset, encoding); }
1574
1590WS_DLL_PUBLIC uint64_t tvb_get_uint56(tvbuff_t *tvb, const int offset, const unsigned encoding);
1591
1606WS_DEPRECATED_X("Use tvb_get_uint56 instead")
1607static inline uint64_t tvb_get_guint56(tvbuff_t *tvb, const int offset, const unsigned encoding) { return tvb_get_uint56(tvb, offset, encoding); }
1608
1624WS_DLL_PUBLIC int64_t tvb_get_int56(tvbuff_t *tvb, const int offset, const unsigned encoding);
1625
1640WS_DEPRECATED_X("Use tvb_get_int56 instead")
1641static inline int64_t tvb_get_gint56(tvbuff_t *tvb, const int offset, const unsigned encoding) { return tvb_get_int56(tvb, offset, encoding); }
1642
1660WS_DLL_PUBLIC uint64_t tvb_get_uint64(tvbuff_t *tvb, const int offset, const unsigned encoding);
1661
1680WS_DLL_PUBLIC uint64_t tvb_get_uint64_with_length(tvbuff_t *tvb, const int offset, unsigned length, const unsigned encoding);
1681
1696WS_DEPRECATED_X("Use tvb_get_uint64 instead")
1697static inline uint64_t tvb_get_guint64(tvbuff_t *tvb, const int offset, const unsigned encoding) {return tvb_get_uint64(tvb, offset, encoding); }
1698
1714WS_DLL_PUBLIC int64_t tvb_get_int64(tvbuff_t *tvb, const int offset, const unsigned encoding);
1715
1730WS_DEPRECATED_X("Use tvb_get_int64 instead")
1731static inline int64_t tvb_get_gint64(tvbuff_t *tvb, const int offset, const unsigned encoding) { return tvb_get_int64(tvb, offset, encoding); }
1732
1750WS_DLL_PUBLIC float tvb_get_ieee_float(tvbuff_t *tvb, const int offset, const unsigned encoding);
1751
1769WS_DLL_PUBLIC double tvb_get_ieee_double(tvbuff_t *tvb, const int offset, const unsigned encoding);
1770
1788#if G_BYTE_ORDER == G_LITTLE_ENDIAN
1789#define tvb_get_h_uint16 tvb_get_letohs
1790#define tvb_get_h_uint32 tvb_get_letohl
1791#elif G_BYTE_ORDER == G_BIG_ENDIAN
1792#define tvb_get_h_uint16 tvb_get_ntohs
1793#define tvb_get_h_uint32 tvb_get_ntohl
1794#else
1795#error "Unsupported byte order"
1796#endif
1797
1826WS_DLL_PUBLIC
1827nstime_t* tvb_get_string_time(tvbuff_t *tvb, const int offset, const int length,
1828 const unsigned encoding, nstime_t* ns, int *endoff);
1829
1851WS_DLL_PUBLIC
1852GByteArray* tvb_get_string_bytes(tvbuff_t *tvb, const int offset, const int length,
1853 const unsigned encoding, GByteArray* bytes, int *endoff);
1854
1872WS_DLL_PUBLIC uint32_t tvb_get_ipv4(tvbuff_t *tvb, const int offset);
1873
1890WS_DLL_PUBLIC void tvb_get_ipv6(tvbuff_t *tvb, const int offset, ws_in6_addr *addr);
1891
1904WS_DLL_PUBLIC int tvb_get_ipv4_addr_with_prefix_len(tvbuff_t *tvb, int offset,
1905 ws_in4_addr *addr, uint32_t prefix_len);
1906
1920WS_DLL_PUBLIC int tvb_get_ipv6_addr_with_prefix_len(tvbuff_t *tvb, int offset,
1921 ws_in6_addr *addr, uint32_t prefix_len);
1922
1934WS_DLL_PUBLIC void tvb_get_ntohguid(tvbuff_t *tvb, const int offset, e_guid_t *guid);
1935
1947WS_DLL_PUBLIC void tvb_get_letohguid(tvbuff_t *tvb, const int offset, e_guid_t *guid);
1948
1962WS_DLL_PUBLIC void tvb_get_guid(tvbuff_t *tvb, const int offset, e_guid_t *guid, const unsigned encoding);
1963
1983WS_DLL_PUBLIC uint8_t* tvb_get_bits_array(wmem_allocator_t *scope, tvbuff_t *tvb,
1984 const int offset, size_t length, size_t *data_length, const unsigned encoding);
1985
2005WS_DLL_PUBLIC uint8_t tvb_get_bits8(tvbuff_t *tvb, unsigned bit_offset,
2006 const int no_of_bits);
2007
2029WS_DLL_PUBLIC uint16_t tvb_get_bits16(tvbuff_t *tvb, unsigned bit_offset,
2030 const int no_of_bits, const unsigned encoding);
2031
2053WS_DLL_PUBLIC uint32_t tvb_get_bits32(tvbuff_t *tvb, unsigned bit_offset,
2054 const int no_of_bits, const unsigned encoding);
2055
2077WS_DLL_PUBLIC uint64_t tvb_get_bits64(tvbuff_t *tvb, unsigned bit_offset,
2078 const int no_of_bits, const unsigned encoding);
2079
2097WS_DLL_PUBLIC
2098WS_DEPRECATED_X("Use tvb_get_bits32() instead")
2099uint32_t tvb_get_bits(tvbuff_t *tvb, const unsigned bit_offset,
2100 const int no_of_bits, const unsigned encoding);
2101
2121WS_DLL_PUBLIC void *tvb_memcpy(tvbuff_t *tvb, void *target, const int offset,
2122 size_t length);
2123
2144WS_DLL_PUBLIC void *tvb_memdup(wmem_allocator_t *scope, tvbuff_t *tvb,
2145 const int offset, size_t length);
2146
2182WS_DLL_PUBLIC const uint8_t *tvb_get_ptr(tvbuff_t *tvb, const int offset,
2183 const int length);
2184
2203WS_DLL_PUBLIC int tvb_find_uint8(tvbuff_t *tvb, const int offset,
2204 const int maxlength, const uint8_t needle);
2205
2227WS_DEPRECATED_X("Use tvb_find_uint8 instead")
2228static inline int tvb_find_guint8(tvbuff_t* tvb, const int offset,
2229 const int maxlength, const uint8_t needle) { return tvb_find_uint8(tvb, offset, maxlength, needle); }
2230
2251WS_DLL_PUBLIC int tvb_find_uint16(tvbuff_t *tvb, const int offset,
2252 const int maxlength, const uint16_t needle);
2253
2275WS_DEPRECATED_X("Use tvb_find_uint16 instead")
2276static inline int tvb_find_guint16(tvbuff_t* tvb, const int offset,
2277 const int maxlength, const uint16_t needle) {
2278 return tvb_find_uint16(tvb, offset, maxlength, needle);
2279}
2280
2299WS_DLL_PUBLIC int tvb_ws_mempbrk_pattern_uint8(tvbuff_t *tvb, const int offset,
2300 const int maxlength, const ws_mempbrk_pattern* pattern, unsigned char *found_needle);
2301
2327WS_DEPRECATED_X("Use tvb_ws_mempbrk_pattern_uint8 instead")
2328static inline int tvb_ws_mempbrk_pattern_guint8(tvbuff_t* tvb, const int offset,
2329 const int maxlength, const ws_mempbrk_pattern* pattern, unsigned char* found_needle) {
2330 return tvb_ws_mempbrk_pattern_uint8(tvb, offset, maxlength, pattern, found_needle);
2331}
2332
2347WS_DLL_PUBLIC unsigned tvb_strsize(tvbuff_t *tvb, const int offset);
2348
2363WS_DLL_PUBLIC unsigned tvb_unicode_strsize(tvbuff_t *tvb, const int offset);
2364
2380WS_DLL_PUBLIC int tvb_strnlen(tvbuff_t *tvb, const int offset,
2381 const unsigned maxlength);
2382
2399WS_DLL_PUBLIC char *tvb_format_text(wmem_allocator_t *scope, tvbuff_t *tvb, const int offset,
2400 const int size);
2401
2419WS_DLL_PUBLIC char *tvb_format_text_wsp(wmem_allocator_t* allocator, tvbuff_t *tvb, const int offset,
2420 const int size);
2421
2439WS_DLL_PUBLIC char *tvb_format_stringzpad(wmem_allocator_t *scope, tvbuff_t *tvb, const int offset,
2440 const int size);
2441
2460WS_DLL_PUBLIC char *tvb_format_stringzpad_wsp(wmem_allocator_t* allocator, tvbuff_t *tvb, const int offset,
2461 const int size);
2462
2484WS_DLL_PUBLIC uint8_t *tvb_get_string_enc(wmem_allocator_t *scope,
2485 tvbuff_t *tvb, const int offset, const int length, const unsigned encoding);
2486
2511 tvbuff_t *tvb, const int bit_offset, int no_of_chars);
2512
2537 tvbuff_t *tvb, const int offset, int length);
2538
2563 tvbuff_t *tvb, const int offset, int length);
2564
2588WS_DLL_PUBLIC char *tvb_get_ascii_7bits_string(wmem_allocator_t *scope,
2589 tvbuff_t *tvb, const int bit_offset, int no_of_chars);
2590
2615WS_DLL_PUBLIC uint8_t *tvb_get_stringzpad(wmem_allocator_t *scope,
2616 tvbuff_t *tvb, const int offset, const int length, const unsigned encoding);
2617
2642WS_DLL_PUBLIC uint8_t *tvb_get_stringz_enc(wmem_allocator_t *scope,
2643 tvbuff_t *tvb, const int offset, int *lengthp, const unsigned encoding);
2644
2675WS_DLL_PUBLIC
2676WS_DEPRECATED_X("Use APIs that return a valid UTF-8 string instead")
2677const uint8_t *tvb_get_const_stringz(tvbuff_t *tvb,
2678 const int offset, int *lengthp);
2679
2699WS_DLL_PUBLIC int tvb_get_raw_bytes_as_stringz(tvbuff_t *tvb, const int offset,
2700 const unsigned bufsize, uint8_t *buffer);
2701
2717WS_DLL_PUBLIC int tvb_get_raw_bytes_as_string(tvbuff_t *tvb, const int offset, char *buffer, size_t bufsize);
2718
2732WS_DLL_PUBLIC bool tvb_ascii_isprint(tvbuff_t *tvb, const int offset,
2733 const int length);
2734
2753WS_DLL_PUBLIC bool tvb_utf_8_isprint(tvbuff_t *tvb, const int offset,
2754 const int length);
2755
2769WS_DLL_PUBLIC bool tvb_ascii_isdigit(tvbuff_t *tvb, const int offset,
2770 const int length);
2771
2796WS_DLL_PUBLIC int tvb_find_line_end(tvbuff_t *tvb, const int offset, int len,
2797 int *next_offset, const bool desegment);
2798
2820WS_DLL_PUBLIC int tvb_find_line_end_unquoted(tvbuff_t *tvb, const int offset,
2821 int len, int *next_offset);
2822
2840WS_DLL_PUBLIC int tvb_skip_wsp(tvbuff_t *tvb, const int offset,
2841 const int maxlength);
2842
2857WS_DLL_PUBLIC int tvb_skip_wsp_return(tvbuff_t *tvb, const int offset);
2858
2876WS_DLL_PUBLIC int tvb_skip_uint8(tvbuff_t *tvb, int offset, const int maxlength, const uint8_t ch);
2877
2899WS_DEPRECATED_X("Use tvb_skip_uint8 instead")
2900static inline int tvb_skip_guint8(tvbuff_t *tvb, int offset, const int maxlength, const uint8_t ch) {
2901 return tvb_skip_uint8(tvb, offset, maxlength, ch);
2902}
2903
2928WS_DLL_PUBLIC int tvb_get_token_len(tvbuff_t *tvb, const int offset, int len, int *next_offset, const bool desegment);
2929
2946WS_DLL_PUBLIC int tvb_strneql(tvbuff_t *tvb, const int offset,
2947 const char *str, const size_t size);
2948
2969WS_DLL_PUBLIC int tvb_strncaseeql(tvbuff_t *tvb, const int offset,
2970 const char *str, const size_t size);
2971
2989WS_DLL_PUBLIC int tvb_memeql(tvbuff_t *tvb, const int offset,
2990 const uint8_t *str, size_t size);
2991
3011WS_DLL_PUBLIC char *tvb_bytes_to_str_punct(wmem_allocator_t *scope, tvbuff_t *tvb, const int offset,
3012 const int len, const char punct);
3013
3034WS_DLL_PUBLIC char *tvb_bytes_to_str(wmem_allocator_t *allocator, tvbuff_t *tvb,
3035 const int offset, const int len);
3036
3051typedef struct dgt_set_t
3052{
3053 const unsigned char out[16];
3054}
3056
3081WS_DLL_PUBLIC const char *tvb_bcd_dig_to_str(wmem_allocator_t *scope,
3082 tvbuff_t *tvb, const int offset, const int len, const dgt_set_t *dgt,
3083 bool skip_first);
3084
3111WS_DLL_PUBLIC const char *tvb_bcd_dig_to_str_be(wmem_allocator_t *scope,
3112 tvbuff_t *tvb, const int offset, const int len, const dgt_set_t *dgt,
3113 bool skip_first);
3114
3146WS_DLL_PUBLIC char *tvb_get_bcd_string(wmem_allocator_t *scope, tvbuff_t *tvb,
3147 const int offset, int len, const dgt_set_t *dgt,
3148 bool skip_first, bool odd, bool bigendian);
3149
3165WS_DLL_PUBLIC int tvb_find_tvb(tvbuff_t *haystack_tvb, tvbuff_t *needle_tvb,
3166 const int haystack_offset);
3167
3168/* From tvbuff_zlib.c */
3188WS_DEPRECATED_X("Use tvb_uncompress_zlib instead")
3189WS_DLL_PUBLIC tvbuff_t *tvb_uncompress(tvbuff_t *tvb, const int offset,
3190 int comprlen);
3191
3213WS_DLL_PUBLIC tvbuff_t *tvb_uncompress_zlib(tvbuff_t *tvb, const int offset,
3214 int comprlen);
3215
3237WS_DEPRECATED_X("Use tvb_child_uncompress_zlib instead")
3238WS_DLL_PUBLIC tvbuff_t *tvb_child_uncompress(tvbuff_t *parent, tvbuff_t *tvb,
3239 const int offset, int comprlen);
3240
3257WS_DLL_PUBLIC tvbuff_t *tvb_child_uncompress_zlib(tvbuff_t *parent, tvbuff_t *tvb,
3258 const int offset, int comprlen);
3259
3260/* From tvbuff_brotli.c */
3261
3283WS_DLL_PUBLIC tvbuff_t *tvb_uncompress_brotli(tvbuff_t *tvb, const int offset,
3284 int comprlen);
3285
3304WS_DLL_PUBLIC tvbuff_t *tvb_child_uncompress_brotli(tvbuff_t *parent, tvbuff_t *tvb,
3305 const int offset, int comprlen);
3306
3307/* From tvbuff_snappy.c */
3308
3326WS_DLL_PUBLIC tvbuff_t *tvb_uncompress_snappy(tvbuff_t *tvb, const int offset,
3327 int comprlen);
3328
3347WS_DLL_PUBLIC tvbuff_t *tvb_child_uncompress_snappy(tvbuff_t *parent, tvbuff_t *tvb,
3348 const int offset, int comprlen);
3349
3350/* From tvbuff_lz77.c */
3351
3373WS_DLL_PUBLIC tvbuff_t *tvb_uncompress_lz77(tvbuff_t *tvb,
3374 const int offset, int comprlen);
3375
3395WS_DLL_PUBLIC tvbuff_t *tvb_child_uncompress_lz77(tvbuff_t *parent,
3396 tvbuff_t *tvb, const int offset, int comprlen);
3397
3398/* From tvbuff_lz77huff.c */
3399
3421WS_DLL_PUBLIC tvbuff_t *tvb_uncompress_lz77huff(tvbuff_t *tvb,
3422 const int offset, int comprlen);
3423
3443WS_DLL_PUBLIC tvbuff_t *tvb_child_uncompress_lz77huff(tvbuff_t *parent,
3444 tvbuff_t *tvb, const int offset, int comprlen);
3445
3446/* From tvbuff_lznt1.c */
3447
3469WS_DLL_PUBLIC tvbuff_t *tvb_uncompress_lznt1(tvbuff_t *tvb,
3470 const int offset, int comprlen);
3471
3491WS_DLL_PUBLIC tvbuff_t *tvb_child_uncompress_lznt1(tvbuff_t *parent,
3492 tvbuff_t *tvb, const int offset, int comprlen);
3493
3515WS_DLL_PUBLIC tvbuff_t *tvb_uncompress_zstd(tvbuff_t *tvb,
3516 const int offset, int comprlen);
3517
3537WS_DLL_PUBLIC tvbuff_t *tvb_child_uncompress_zstd(tvbuff_t *parent,
3538 tvbuff_t *tvb, const int offset, int comprlen);
3539
3540/* From tvbuff_base64.c */
3541
3556WS_DLL_PUBLIC tvbuff_t* base64_to_tvb(tvbuff_t *parent, const char *base64);
3557
3576WS_DLL_PUBLIC tvbuff_t* base64_tvb_to_new_tvb(tvbuff_t* parent, int offset, int length);
3577
3597WS_DLL_PUBLIC tvbuff_t* base64uri_tvb_to_new_tvb(tvbuff_t* parent, int offset, int length);
3598
3599/* From tvbuff_hpackhuff.c */
3600
3618 tvbuff_t *tvb, const int offset, const int len);
3619
3639 int offset, int length);
3640
3663WS_DLL_PUBLIC unsigned tvb_get_varint(tvbuff_t *tvb, unsigned offset, unsigned maxlen, uint64_t *value, const unsigned encoding);
3664
3665/************** END OF ACCESSORS ****************/
3666
3667#ifdef __cplusplus
3668}
3669#endif /* __cplusplus */
3670
3671#endif /* __TVBUFF_H__ */
3672
3673/*
3674 * Editor modelines - https://www.wireshark.org/tools/modelines.html
3675 *
3676 * Local variables:
3677 * c-basic-offset: 4
3678 * tab-width: 8
3679 * indent-tabs-mode: nil
3680 * End:
3681 *
3682 * vi: set shiftwidth=4 tabstop=8 expandtab:
3683 * :indentSize=4:tabSize=8:noTabs=true:
3684 */
WS_DLL_PUBLIC unsigned tvb_ensure_reported_length_remaining(const tvbuff_t *tvb, const unsigned offset)
Same as tvb_reported_length_remaining but throws an exception if the offset is out of bounds.
Definition tvbuff.c:766
WS_DLL_PUBLIC bool tvb_ascii_isprint(tvbuff_t *tvb, const int offset, const int length)
Check whether all bytes in a tvbuff range are ASCII printable characters.
Definition tvbuff.c:4108
WS_DLL_PUBLIC bool tvb_ascii_isdigit(tvbuff_t *tvb, const int offset, const int length)
Check if all bytes in a tvbuff range are ASCII digits.
Definition tvbuff.c:4139
WS_DLL_PUBLIC int tvb_find_uint16(tvbuff_t *tvb, const int offset, const int maxlength, const uint16_t needle)
Find the first occurrence of a 16-bit value in a tvbuff.
Definition tvbuff.c:2486
WS_DLL_PUBLIC uint64_t tvb_get_uint56(tvbuff_t *tvb, const int offset, const unsigned encoding)
Retrieve a 56-bit unsigned value from a tvbuff using the specified encoding.
Definition tvbuff.c:1241
WS_DLL_PUBLIC int tvb_find_tvb(tvbuff_t *haystack_tvb, tvbuff_t *needle_tvb, const int haystack_offset)
Search for a sub-tvbuff within another tvbuff starting at a given offset.
Definition tvbuff.c:4726
WS_DLL_PUBLIC int32_t tvb_get_letohi24(tvbuff_t *tvb, const int offset)
Retrieve a 24-bit signed value in little-endian byte order.
Definition tvbuff.c:1583
WS_DLL_PUBLIC int tvb_strnlen(tvbuff_t *tvb, const int offset, const unsigned maxlength)
Find the length of a NUL-terminated string in a tvbuff, up to a maximum limit.
Definition tvbuff.c:2662
WS_DLL_PUBLIC void tvb_fix_reported_length(tvbuff_t *tvb)
Repair a tvbuff when captured length exceeds reported length.
Definition tvbuff.c:807
WS_DLL_PUBLIC uint16_t tvb_get_uint16(tvbuff_t *tvb, const int offset, const unsigned encoding)
Retrieve a 16-bit unsigned value from a tvbuff using the specified encoding.
Definition tvbuff.c:1151
WS_DLL_PUBLIC bool tvb_offset_exists(const tvbuff_t *tvb, const unsigned offset)
Checks (without throwing an exception) whether the offset exists in the buffer.
Definition tvbuff.c:730
WS_DLL_PUBLIC tvbuff_t * tvb_child_uncompress_brotli(tvbuff_t *parent, tvbuff_t *tvb, const int offset, int comprlen)
Uncompress Brotli-compressed data from a tvbuff and attach the result to a parent tvbuff.
Definition tvbuff_brotli.c:173
WS_DLL_PUBLIC int32_t tvb_get_int32(tvbuff_t *tvb, const int offset, const unsigned encoding)
Retrieve a 32-bit signed value from a tvbuff using the specified encoding.
Definition tvbuff.c:1196
WS_DLL_PUBLIC void tvb_set_fragment(tvbuff_t *tvb)
Set the "this is a fragment" flag on a tvbuff.
Definition tvbuff.c:4764
WS_DLL_PUBLIC uint64_t tvb_get_uint64_with_length(tvbuff_t *tvb, const int offset, unsigned length, const unsigned encoding)
Retrieve a variable-length unsigned value (up to 64 bits) from a tvbuff using the specified encoding.
Definition tvbuff.c:1268
WS_DLL_PUBLIC uint64_t tvb_get_letoh56(tvbuff_t *tvb, const int offset)
Retrieve a 56-bit unsigned value in little-endian byte order.
Definition tvbuff.c:1649
WS_DLL_PUBLIC int tvb_get_token_len(tvbuff_t *tvb, const int offset, int len, int *next_offset, const bool desegment)
Determine the length of a token in a tvbuff, optionally desegmenting.
Definition tvbuff.c:4520
WS_DLL_PUBLIC char * tvb_get_etsi_ts_102_221_annex_a_string(wmem_allocator_t *scope, tvbuff_t *tvb, const int offset, int length)
Extract and convert a string encoded per ETSI TS 102 221 Annex A from a tvbuff to UTF-8.
Definition tvbuff.c:3079
WS_DLL_PUBLIC int tvb_strneql(tvbuff_t *tvb, const int offset, const char *str, const size_t size)
Compare a string in a tvbuff to a reference string using strncmp semantics.
Definition tvbuff.c:2690
const unsigned char out[16]
Definition tvbuff.h:3053
WS_DLL_PUBLIC tvbuff_t * tvb_new_octet_aligned(tvbuff_t *tvb, uint32_t bit_offset, int32_t no_of_bits)
Extracts a specified number of bits starting at a given bit offset, aligning the result to octet boun...
Definition tvbuff.c:388
WS_DLL_PUBLIC uint32_t tvb_get_uint24(tvbuff_t *tvb, const int offset, const unsigned encoding)
Retrieve a 24-bit unsigned value from a tvbuff using the specified encoding.
Definition tvbuff.c:1169
WS_DLL_PUBLIC uint32_t tvb_get_uint32(tvbuff_t *tvb, const int offset, const unsigned encoding)
Retrieve a 32-bit unsigned value from a tvbuff using the specified encoding.
Definition tvbuff.c:1187
WS_DLL_PUBLIC void tvb_free(tvbuff_t *tvb)
Free a tvbuff_t and all tvbuffs chained from it.
Definition tvbuff.c:109
WS_DLL_PUBLIC char * tvb_get_ascii_7bits_string(wmem_allocator_t *scope, tvbuff_t *tvb, const int bit_offset, int no_of_chars)
Extract and convert an ASCII 7-bit encoded string from a tvbuff to UTF-8.
Definition tvbuff.c:3091
WS_DLL_PUBLIC uint32_t tvb_get_ntohl(tvbuff_t *tvb, const int offset)
Retrieve a 32-bit unsigned value in network byte order.
Definition tvbuff.c:1058
WS_DLL_PUBLIC int64_t tvb_get_letohi64(tvbuff_t *tvb, const int offset)
Retrieve a 64-bit signed value in little-endian byte order.
Definition tvbuff.c:1677
WS_DLL_PUBLIC uint64_t tvb_get_ntoh48(tvbuff_t *tvb, const int offset)
Retrieve a 48-bit unsigned value in network byte order.
Definition tvbuff.c:1095
WS_DLL_PUBLIC tvbuff_t * tvb_new_subset_length(tvbuff_t *backing, const int backing_offset, const int reported_length)
Create a subset tvbuff with captured length fitting within backing and reported lengths.
Definition tvbuff_subset.c:191
WS_DLL_PUBLIC void tvb_get_ntohguid(tvbuff_t *tvb, const int offset, e_guid_t *guid)
Retrieve a GUID from a tvbuff in network byte order.
Definition tvbuff.c:2160
WS_DLL_PUBLIC uint8_t tvb_get_uint8(tvbuff_t *tvb, const int offset)
Retrieve an 8-bit unsigned value from a tvbuff at the specified offset.
Definition tvbuff.c:1003
WS_DLL_PUBLIC tvbuff_t * tvb_uncompress_lz77huff(tvbuff_t *tvb, const int offset, int comprlen)
Uncompress Microsoft LZ77+Huffman-compressed data from a tvbuff.
Definition tvbuff_lz77huff.c:360
WS_DLL_PUBLIC int64_t tvb_get_ntohi48(tvbuff_t *tvb, const int offset)
Retrieve a 48-bit signed value in network byte order.
Definition tvbuff.c:1104
WS_DLL_PUBLIC int tvb_get_raw_bytes_as_stringz(tvbuff_t *tvb, const int offset, const unsigned bufsize, uint8_t *buffer)
Copy up to a specified number of bytes from a tvbuff into a buffer as a NUL-terminated string.
Definition tvbuff.c:4058
WS_DLL_PUBLIC uint64_t tvb_get_uint48(tvbuff_t *tvb, const int offset, const unsigned encoding)
Retrieve a 48-bit unsigned value from a tvbuff using the specified encoding.
Definition tvbuff.c:1223
WS_DLL_PUBLIC char * tvb_format_text_wsp(wmem_allocator_t *allocator, tvbuff_t *tvb, const int offset, const int size)
Format tvbuff data as printable text, omitting C-style escapes.
Definition tvbuff.c:2786
WS_DLL_PUBLIC unsigned tvb_reported_length(const tvbuff_t *tvb)
Get reported length of buffer.
Definition tvbuff.c:741
WS_DLL_PUBLIC uint8_t * tvb_get_stringz_enc(wmem_allocator_t *scope, tvbuff_t *tvb, const int offset, int *lengthp, const unsigned encoding)
Extract and convert a null-terminated string from a tvbuff to UTF-8 using the specified encoding.
Definition tvbuff.c:3778
WS_DLL_PUBLIC char * tvb_get_bcd_string(wmem_allocator_t *scope, tvbuff_t *tvb, const int offset, int len, const dgt_set_t *dgt, bool skip_first, bool odd, bool bigendian)
Convert BCD-encoded digits from a tvbuff to a UTF-8 string with flexible nibble handling.
Definition tvbuff.c:4613
WS_DLL_PUBLIC tvbuff_t * tvb_child_uncompress_lznt1(tvbuff_t *parent, tvbuff_t *tvb, const int offset, int comprlen)
Uncompress Microsoft LZNT1-compressed data from a tvbuff and attach the result to a parent tvbuff.
Definition tvbuff_lznt1.c:148
WS_DLL_PUBLIC uint64_t tvb_get_uint40(tvbuff_t *tvb, const int offset, const unsigned encoding)
Retrieve a 40-bit unsigned value from a tvbuff using the specified encoding.
Definition tvbuff.c:1205
WS_DLL_PUBLIC uint8_t * tvb_get_stringzpad(wmem_allocator_t *scope, tvbuff_t *tvb, const int offset, const int length, const unsigned encoding)
Extract and convert a null-padded string from a tvbuff to UTF-8.
Definition tvbuff.c:3547
WS_DLL_PUBLIC int64_t tvb_get_int40(tvbuff_t *tvb, const int offset, const unsigned encoding)
Retrieve a 40-bit signed value from a tvbuff using the specified encoding.
Definition tvbuff.c:1214
WS_DLL_PUBLIC unsigned tvb_unicode_strsize(tvbuff_t *tvb, const int offset)
Determine the size of a UCS-2 or UTF-16 NUL-terminated string in a tvbuff.
Definition tvbuff.c:2641
WS_DLL_PUBLIC void tvb_free_chain(tvbuff_t *tvb)
Free the tvbuff_t and all tvbuffs chained from it.
Definition tvbuff.c:115
WS_DLL_PUBLIC tvbuff_t * tvb_clone(tvbuff_t *tvb)
Creates a full clone of the given tvbuff.
Definition tvbuff.c:552
WS_DLL_PUBLIC wmem_strbuf_t * tvb_get_hpack_huffman_strbuf(wmem_allocator_t *scope, tvbuff_t *tvb, const int offset, const int len)
Decode HPACK Huffman-encoded data from a tvbuff into a string buffer.
Definition tvbuff_hpackhuff.c:51
WS_DLL_PUBLIC uint8_t * tvb_get_string_enc(wmem_allocator_t *scope, tvbuff_t *tvb, const int offset, const int length, const unsigned encoding)
Extract and convert a string from a tvbuff to UTF-8 using the specified encoding.
Definition tvbuff.c:3281
WS_DLL_PUBLIC unsigned tvb_offset_from_real_beginning(const tvbuff_t *tvb)
Returns the offset from the beginning of the real (backing) buffer.
Definition tvbuff.c:828
WS_DLL_PUBLIC tvbuff_t * base64_to_tvb(tvbuff_t *parent, const char *base64)
Decode a base64-encoded string into a tvbuff and attach it to a parent tvbuff.
Definition tvbuff_base64.c:169
WS_DLL_PUBLIC double tvb_get_letohieee_double(tvbuff_t *tvb, const int offset)
Retrieve a 64-bit IEEE double in little-endian byte order.
Definition tvbuff.c:1714
WS_DLL_PUBLIC const uint8_t * tvb_get_const_stringz(tvbuff_t *tvb, const int offset, int *lengthp)
Deprecated function to retrieve a raw, unmodifiable null-terminated string from a tvbuff.
Definition tvbuff.c:3646
WS_DLL_PUBLIC char * tvb_bytes_to_str_punct(wmem_allocator_t *scope, tvbuff_t *tvb, const int offset, const int len, const char punct)
Format a sequence of bytes from a tvbuff as a string with a custom separator.
Definition tvbuff.c:4591
WS_DLL_PUBLIC tvbuff_t * tvb_child_uncompress_zstd(tvbuff_t *parent, tvbuff_t *tvb, const int offset, int comprlen)
Uncompress Zstandard (ZSTD)-compressed data from a tvbuff and attach the result to a parent tvbuff.
Definition tvbuff_zstd.c:101
WS_DLL_PUBLIC char * tvb_format_stringzpad(wmem_allocator_t *scope, tvbuff_t *tvb, const int offset, const int size)
Format a null-padded string from a tvbuff as printable text.
Definition tvbuff.c:2802
WS_DLL_PUBLIC tvbuff_t * tvb_child_uncompress_hpack_huff(tvbuff_t *parent, int offset, int length)
Decode HPACK Huffman-encoded data from a tvbuff region and attach the result to a parent tvbuff.
Definition tvbuff_hpackhuff.c:57
WS_DLL_PUBLIC tvbuff_t * base64_tvb_to_new_tvb(tvbuff_t *parent, int offset, int length)
Decode a base64-encoded string from a tvbuff region and attach the result to a parent tvbuff.
Definition tvbuff_base64.c:184
WS_DLL_PUBLIC uint16_t tvb_get_bits16(tvbuff_t *tvb, unsigned bit_offset, const int no_of_bits, const unsigned encoding)
Retrieve 1–16 bits from a tvbuff and return them as a uint16_t.
Definition tvbuff.c:2234
WS_DLL_PUBLIC void tvb_ensure_bytes_exist64(const tvbuff_t *tvb, const unsigned offset, const uint64_t length)
Checks that the bytes referred to by 'offset' and 'length' actually exist in the buffer.
Definition tvbuff.c:664
WS_DLL_PUBLIC float tvb_get_ieee_float(tvbuff_t *tvb, const int offset, const unsigned encoding)
Retrieve a 32-bit IEEE float from a tvbuff using the specified encoding.
Definition tvbuff.c:1335
WS_DLL_PUBLIC void tvb_set_child_real_data_tvbuff(tvbuff_t *parent, tvbuff_t *child)
Attach a "real" tvbuff to a parent tvbuff.
Definition tvbuff_real.c:96
void(* tvbuff_free_cb_t)(void *)
Definition tvbuff.h:104
WS_DLL_PUBLIC uint8_t * tvb_get_bits_array(wmem_allocator_t *scope, tvbuff_t *tvb, const int offset, size_t length, size_t *data_length, const unsigned encoding)
Retrieve a byte array from a tvbuff using a bit-level offset and encoding.
Definition tvbuff.c:2211
WS_DLL_PUBLIC char * tvb_get_ts_23_038_7bits_string_unpacked(wmem_allocator_t *scope, tvbuff_t *tvb, const int offset, int length)
Extract and convert a 3GPP TS 23.038 7-bit unpacked string from a tvbuff to UTF-8.
Definition tvbuff.c:3067
WS_DLL_PUBLIC tvbuff_t * tvb_new_chain(tvbuff_t *parent, tvbuff_t *backing)
Create a new chained tvbuff from a parent and backing buffer.
Definition tvbuff.c:127
WS_DLL_PUBLIC int64_t tvb_get_ntohi40(tvbuff_t *tvb, const int offset)
Retrieve a 40-bit signed value in network byte order.
Definition tvbuff.c:1085
WS_DLL_PUBLIC uint32_t tvb_get_bits32(tvbuff_t *tvb, unsigned bit_offset, const int no_of_bits, const unsigned encoding)
Retrieve 1–32 bits from a tvbuff and return them as a uint32_t.
Definition tvbuff.c:2242
WS_DLL_PUBLIC int tvb_raw_offset(tvbuff_t *tvb)
Returns the offset from the first byte of real data.
Definition tvbuff.c:4758
WS_DLL_PUBLIC unsigned tvb_captured_length(const tvbuff_t *tvb)
Get the amount of captured data in the buffer.
Definition tvbuff.c:558
WS_DLL_PUBLIC void tvb_get_guid(tvbuff_t *tvb, const int offset, e_guid_t *guid, const unsigned encoding)
Retrieve a GUID from a tvbuff using the specified encoding.
Definition tvbuff.c:2182
WS_DLL_PUBLIC tvbuff_t * base64uri_tvb_to_new_tvb(tvbuff_t *parent, int offset, int length)
Decode a base64url-encoded string from a tvbuff region and attach the result to a parent tvbuff.
Definition tvbuff_base64.c:202
WS_DLL_PUBLIC int64_t tvb_get_letohi56(tvbuff_t *tvb, const int offset)
Retrieve a 56-bit signed value in little-endian byte order.
Definition tvbuff.c:1658
WS_DLL_PUBLIC char * tvb_format_text(wmem_allocator_t *scope, tvbuff_t *tvb, const int offset, const int size)
Format a block of tvbuff data as printable text.
Definition tvbuff.c:2771
WS_DLL_PUBLIC void tvb_composite_append(tvbuff_t *tvb, tvbuff_t *member)
Append to the list of tvbuffs that make up this composite tvbuff.
Definition tvbuff_composite.c:245
WS_DLL_PUBLIC int tvb_get_ipv4_addr_with_prefix_len(tvbuff_t *tvb, int offset, ws_in4_addr *addr, uint32_t prefix_len)
Fetch an IPv4 address from a tvbuff and mask out bits not covered by a prefix length.
Definition tvbuff.c:2118
WS_DLL_PUBLIC tvbuff_t * tvb_child_uncompress(tvbuff_t *parent, tvbuff_t *tvb, const int offset, int comprlen)
Deprecated interface for uncompressing data and chaining the result to a parent tvbuff.
Definition tvbuff_zlib.c:324
WS_DLL_PUBLIC uint32_t tvb_get_ntoh24(tvbuff_t *tvb, const int offset)
Retrieve a 24-bit unsigned value in network byte order.
Definition tvbuff.c:1039
WS_DLL_PUBLIC tvbuff_t * tvb_new_composite(void)
Create an empty composite tvbuff.
Definition tvbuff_composite.c:233
WS_DLL_PUBLIC int8_t tvb_get_int8(tvbuff_t *tvb, const int offset)
Retrieve an 8-bit signed value from a tvbuff at the specified offset.
Definition tvbuff.c:1012
WS_DLL_PUBLIC tvbuff_t * tvb_uncompress(tvbuff_t *tvb, const int offset, int comprlen)
Deprecated interface for uncompressing data from a tvbuff using zlib.
Definition tvbuff_zlib.c:318
WS_DLL_PUBLIC int tvb_strncaseeql(tvbuff_t *tvb, const int offset, const char *str, const size_t size)
Case-insensitive comparison of tvbuff bytes against a reference string.
Definition tvbuff.c:2717
WS_DLL_PUBLIC const char * tvb_bcd_dig_to_str(wmem_allocator_t *scope, tvbuff_t *tvb, const int offset, const int len, const dgt_set_t *dgt, bool skip_first)
Convert BCD-encoded digits from a tvbuff into a formatted string.
Definition tvbuff.c:4696
WS_DLL_PUBLIC uint64_t tvb_get_ntoh56(tvbuff_t *tvb, const int offset)
Retrieve a 56-bit unsigned value in network byte order.
Definition tvbuff.c:1114
WS_DLL_PUBLIC uint64_t tvb_get_letoh40(tvbuff_t *tvb, const int offset)
Retrieve a 40-bit unsigned value in little-endian byte order.
Definition tvbuff.c:1611
WS_DLL_PUBLIC int64_t tvb_get_int48(tvbuff_t *tvb, const int offset, const unsigned encoding)
Retrieve a 48-bit signed value from a tvbuff using the specified encoding.
Definition tvbuff.c:1232
WS_DLL_PUBLIC float tvb_get_letohieee_float(tvbuff_t *tvb, const int offset)
Retrieve a 32-bit IEEE float in little-endian byte order.
Definition tvbuff.c:1694
WS_DLL_PUBLIC struct tvbuff * tvb_get_ds_tvb(tvbuff_t *tvb)
Retrieve the data source tvbuff from a given tvbuff.
Definition tvbuff.c:4770
WS_DLL_PUBLIC char * tvb_get_ts_23_038_7bits_string_packed(wmem_allocator_t *scope, tvbuff_t *tvb, const int bit_offset, int no_of_chars)
Extract and convert a 3GPP TS 23.038 7-bit packed string from a tvbuff to UTF-8.
Definition tvbuff.c:3053
WS_DLL_PUBLIC uint8_t tvb_get_bits8(tvbuff_t *tvb, unsigned bit_offset, const int no_of_bits)
Retrieve 1–8 bits from a tvbuff and return them as a uint8_t.
Definition tvbuff.c:2226
WS_DLL_PUBLIC void tvb_composite_prepend(tvbuff_t *tvb, tvbuff_t *member)
Prepend to the list of tvbuffs that make up this composite tvbuff.
Definition tvbuff_composite.c:271
WS_DLL_PUBLIC int tvb_find_uint8(tvbuff_t *tvb, const int offset, const int maxlength, const uint8_t needle)
Find the first occurrence of a byte value in a tvbuff.
Definition tvbuff.c:2447
WS_DLL_PUBLIC uint32_t tvb_get_letohl(tvbuff_t *tvb, const int offset)
Retrieve a 32-bit unsigned value in little-endian byte order.
Definition tvbuff.c:1593
WS_DLL_PUBLIC tvbuff_t * tvb_child_uncompress_snappy(tvbuff_t *parent, tvbuff_t *tvb, const int offset, int comprlen)
Uncompress Snappy-compressed data from a tvbuff and attach the result to a parent tvbuff.
Definition tvbuff_snappy.c:66
WS_DLL_PUBLIC int64_t tvb_get_int64(tvbuff_t *tvb, const int offset, const unsigned encoding)
Retrieve a 64-bit signed value from a tvbuff using the specified encoding.
Definition tvbuff.c:1326
WS_DLL_PUBLIC int64_t tvb_get_letohi40(tvbuff_t *tvb, const int offset)
Retrieve a 40-bit signed value in little-endian byte order.
Definition tvbuff.c:1620
WS_DLL_PUBLIC const uint8_t * tvb_get_ptr(tvbuff_t *tvb, const int offset, const int length)
Returns a raw pointer to tvbuff data. Use with extreme caution.
Definition tvbuff.c:996
WS_DLL_PUBLIC const char * tvb_bcd_dig_to_str_be(wmem_allocator_t *scope, tvbuff_t *tvb, const int offset, const int len, const dgt_set_t *dgt, bool skip_first)
Convert BCD-encoded digits from a tvbuff to a formatted string (big-endian nibble order).
Definition tvbuff.c:4705
WS_DLL_PUBLIC int32_t tvb_get_ntohi24(tvbuff_t *tvb, const int offset)
Retrieve a 24-bit signed value in network byte order.
Definition tvbuff.c:1048
WS_DLL_PUBLIC char * tvb_format_stringzpad_wsp(wmem_allocator_t *allocator, tvbuff_t *tvb, const int offset, const int size)
Format a null-padded string from a tvbuff as printable text, preserving whitespace.
Definition tvbuff.c:2821
WS_DLL_PUBLIC uint64_t tvb_get_uint64(tvbuff_t *tvb, const int offset, const unsigned encoding)
Retrieve a 64-bit unsigned value from a tvbuff using the specified encoding.
Definition tvbuff.c:1259
WS_DLL_PUBLIC tvbuff_t * tvb_child_uncompress_zlib(tvbuff_t *parent, tvbuff_t *tvb, const int offset, int comprlen)
Uncompress a zlib-compressed packet inside a tvbuff and attach the result to a parent tvbuff.
Definition tvbuff_zlib.c:309
WS_DLL_PUBLIC unsigned tvb_ensure_captured_length_remaining(const tvbuff_t *tvb, const unsigned offset)
Same as tvb_captured_length_remaining, but throws an exception if the offset is out of bounds.
Definition tvbuff.c:595
WS_DLL_PUBLIC uint32_t tvb_get_ipv4(tvbuff_t *tvb, const int offset)
Retrieve an IPv4 address from a tvbuff in network byte order.
Definition tvbuff.c:2093
WS_DLL_PUBLIC tvbuff_t * tvb_uncompress_lznt1(tvbuff_t *tvb, const int offset, int comprlen)
Uncompress Microsoft LZNT1-compressed data from a tvbuff.
Definition tvbuff_lznt1.c:109
WS_DLL_PUBLIC int tvb_find_line_end(tvbuff_t *tvb, const int offset, int len, int *next_offset, const bool desegment)
Locate the end of a line in a tvbuff, optionally desegmenting.
Definition tvbuff.c:4176
WS_DLL_PUBLIC int32_t tvb_get_int24(tvbuff_t *tvb, const int offset, const unsigned encoding)
Retrieve a 24-bit signed value from a tvbuff using the specified encoding.
Definition tvbuff.c:1178
WS_DLL_PUBLIC uint64_t tvb_get_letoh64(tvbuff_t *tvb, const int offset)
Retrieve a 64-bit unsigned value in little-endian byte order.
Definition tvbuff.c:1668
WS_DLL_PUBLIC int tvb_skip_uint8(tvbuff_t *tvb, int offset, const int maxlength, const uint8_t ch)
Skip consecutive occurrences of a specific byte value in a tvbuff.
Definition tvbuff.c:4493
WS_DLL_PUBLIC tvbuff_t * tvb_new_subset_remaining(tvbuff_t *backing, const int backing_offset)
Similar to tvb_new_subset_length_caplen() but with backing_length and reported_length set to -1.
Definition tvbuff_subset.c:240
WS_DLL_PUBLIC int16_t tvb_get_ntohis(tvbuff_t *tvb, const int offset)
Retrieve a 16-bit signed value in network byte order.
Definition tvbuff.c:1030
WS_DLL_PUBLIC void * tvb_memcpy(tvbuff_t *tvb, void *target, const int offset, size_t length)
Copy a range of bytes from a tvbuff into a pre-allocated target buffer.
Definition tvbuff.c:919
WS_DLL_PUBLIC void tvb_composite_finalize(tvbuff_t *tvb)
Mark a composite tvbuff as finalized.
Definition tvbuff_composite.c:297
WS_DLL_PUBLIC void tvb_ensure_bytes_exist(const tvbuff_t *tvb, const unsigned offset, const int length)
Checks that the bytes referred to by 'offset' and 'length' actually exist in the buffer.
Definition tvbuff.c:681
WS_DLL_PUBLIC int tvb_skip_wsp_return(tvbuff_t *tvb, const int offset)
Skip ASCII whitespace in a tvbuff and return the next non-whitespace offset.
Definition tvbuff.c:4477
WS_DLL_PUBLIC int64_t tvb_get_ntohi56(tvbuff_t *tvb, const int offset)
Retrieve a 56-bit signed value in network byte order.
Definition tvbuff.c:1123
WS_DLL_PUBLIC double tvb_get_ntohieee_double(tvbuff_t *tvb, const int offset)
Retrieve a 64-bit IEEE double in network byte order.
Definition tvbuff.c:1527
WS_DLL_PUBLIC uint16_t tvb_get_ntohs(tvbuff_t *tvb, const int offset)
Retrieve a 16-bit unsigned value in network byte order.
Definition tvbuff.c:1021
WS_DLL_PUBLIC bool tvb_bytes_exist(const tvbuff_t *tvb, const unsigned offset, const int length)
Check that the specified bytes exist in the tvbuff without throwing an exception.
Definition tvbuff.c:630
WS_DLL_PUBLIC int tvb_memeql(tvbuff_t *tvb, const int offset, const uint8_t *str, size_t size)
Compare raw bytes in a tvbuff to a reference buffer using memcmp semantics.
Definition tvbuff.c:2745
WS_DLL_PUBLIC GByteArray * tvb_get_string_bytes(tvbuff_t *tvb, const int offset, const int length, const unsigned encoding, GByteArray *bytes, int *endoff)
Parse a case-insensitive hex string with optional separators into a byte array.
Definition tvbuff.c:1789
WS_DLL_PUBLIC int tvb_reported_length_remaining(const tvbuff_t *tvb, const unsigned offset)
Computes bytes of reported packet data from the given offset to the end of buffer.
Definition tvbuff.c:749
WS_DLL_PUBLIC int tvb_get_ipv6_addr_with_prefix_len(tvbuff_t *tvb, int offset, ws_in6_addr *addr, uint32_t prefix_len)
Fetch an IPv6 address from a tvbuff and mask out bits not covered by a prefix length.
Definition tvbuff.c:2139
WS_DLL_PUBLIC void tvb_get_letohguid(tvbuff_t *tvb, const int offset, e_guid_t *guid)
Retrieve a GUID from a tvbuff in little-endian byte order.
Definition tvbuff.c:2171
WS_DLL_PUBLIC tvbuff_t * tvb_clone_offset_len(tvbuff_t *tvb, unsigned offset, unsigned len)
Clones a portion of the given tvbuff starting at a specific offset and length.
Definition tvbuff.c:538
WS_DLL_PUBLIC uint64_t tvb_get_ntoh40(tvbuff_t *tvb, const int offset)
Retrieve a 40-bit unsigned value in network byte order.
Definition tvbuff.c:1076
WS_DLL_PUBLIC int64_t tvb_get_ntohi64(tvbuff_t *tvb, const int offset)
Retrieve a 64-bit signed value in network byte order.
Definition tvbuff.c:1142
WS_DLL_PUBLIC tvbuff_t * tvb_child_uncompress_lz77(tvbuff_t *parent, tvbuff_t *tvb, const int offset, int comprlen)
Uncompress Microsoft Plain LZ77-compressed data from a tvbuff and attach the result to a parent tvbuf...
Definition tvbuff_lz77.c:136
WS_DLL_PUBLIC tvbuff_t * tvb_new_subset_length_caplen(tvbuff_t *backing, const int backing_offset, const int backing_length, const int reported_length)
Create a subset tvbuff with an explicitly limited captured length.
Definition tvbuff_subset.c:155
WS_DLL_PUBLIC bool tvb_utf_8_isprint(tvbuff_t *tvb, const int offset, const int length)
Check if a portion of a tvbuff contains only valid, printable UTF-8 characters.
Definition tvbuff.c:4125
WS_DLL_PUBLIC int32_t tvb_get_letohil(tvbuff_t *tvb, const int offset)
Retrieve a 32-bit signed value in little-endian byte order.
Definition tvbuff.c:1602
WS_DLL_PUBLIC int64_t tvb_get_letohi48(tvbuff_t *tvb, const int offset)
Retrieve a 48-bit signed value in little-endian byte order.
Definition tvbuff.c:1639
WS_DLL_PUBLIC char * tvb_bytes_to_str(wmem_allocator_t *allocator, tvbuff_t *tvb, const int offset, const int len)
Format a sequence of bytes from a tvbuff as a hexadecimal string.
Definition tvbuff.c:4717
WS_DLL_PUBLIC tvbuff_t * tvb_new_octet_right_aligned(tvbuff_t *tvb, uint32_t bit_offset, int32_t no_of_bits)
Extracts a specified number of bits starting at a given bit offset, with bits counted from least sign...
Definition tvbuff.c:454
WS_DLL_PUBLIC void tvb_set_free_cb(tvbuff_t *tvb, const tvbuff_free_cb_t func)
Set a callback function to be called when a tvbuff is actually freed.
Definition tvbuff_real.c:86
WS_DLL_PUBLIC int tvb_captured_length_remaining(const tvbuff_t *tvb, const unsigned offset)
Computes bytes to end of buffer from the given offset.
Definition tvbuff.c:580
WS_DLL_PUBLIC uint64_t tvb_get_ntoh64(tvbuff_t *tvb, const int offset)
Retrieve a 64-bit unsigned value in network byte order.
Definition tvbuff.c:1133
WS_DLL_PUBLIC int16_t tvb_get_letohis(tvbuff_t *tvb, const int offset)
Retrieve a 16-bit signed value in little-endian byte order.
Definition tvbuff.c:1565
WS_DLL_PUBLIC unsigned tvb_strsize(tvbuff_t *tvb, const int offset)
Determine the size of a NUL-terminated string in a tvbuff.
Definition tvbuff.c:2611
WS_DLL_PUBLIC nstime_t * tvb_get_string_time(tvbuff_t *tvb, const int offset, const int length, const unsigned encoding, nstime_t *ns, int *endoff)
Fetch a time value from an ASCII-style string in the tvbuff.
Definition tvbuff.c:1841
WS_DLL_PUBLIC uint64_t tvb_get_bits64(tvbuff_t *tvb, unsigned bit_offset, const int no_of_bits, const unsigned encoding)
Retrieve 1–64 bits from a tvbuff and return them as a uint64_t.
Definition tvbuff.c:2250
WS_DLL_PUBLIC uint16_t tvb_get_letohs(tvbuff_t *tvb, const int offset)
Retrieve a 16-bit unsigned value in little-endian byte order.
Definition tvbuff.c:1556
WS_DLL_PUBLIC void tvb_set_reported_length(tvbuff_t *tvb, const unsigned reported_length)
Set a tvbuff's reported_length to a given value.
Definition tvbuff.c:788
WS_DLL_PUBLIC tvbuff_t * tvb_uncompress_brotli(tvbuff_t *tvb, const int offset, int comprlen)
Uncompress Brotli-compressed data from a tvbuff.
WS_DLL_PUBLIC int16_t tvb_get_int16(tvbuff_t *tvb, const int offset, const unsigned encoding)
Retrieve a 16-bit signed value from a tvbuff using the specified encoding.
Definition tvbuff.c:1160
WS_DLL_PUBLIC int32_t tvb_get_ntohil(tvbuff_t *tvb, const int offset)
Retrieve a 32-bit signed value in network byte order.
Definition tvbuff.c:1067
WS_DLL_PUBLIC float tvb_get_ntohieee_float(tvbuff_t *tvb, const int offset)
Retrieve a 32-bit IEEE float in network byte order.
Definition tvbuff.c:1507
WS_DLL_PUBLIC uint32_t tvb_get_letoh24(tvbuff_t *tvb, const int offset)
Retrieve a 24-bit unsigned value in little-endian byte order.
Definition tvbuff.c:1574
WS_DLL_PUBLIC tvbuff_t * tvb_child_uncompress_lz77huff(tvbuff_t *parent, tvbuff_t *tvb, const int offset, int comprlen)
Uncompress Microsoft LZ77+Huffman-compressed data from a tvbuff and attach the result to a parent tvb...
Definition tvbuff_lz77huff.c:406
WS_DLL_PUBLIC int64_t tvb_get_int56(tvbuff_t *tvb, const int offset, const unsigned encoding)
Retrieve a 56-bit signed value from a tvbuff using the specified encoding.
Definition tvbuff.c:1250
WS_DLL_PUBLIC int tvb_get_raw_bytes_as_string(tvbuff_t *tvb, const int offset, char *buffer, size_t bufsize)
Extract raw bytes from a tvbuff into a buffer as a NUL-terminated string.
Definition tvbuff.c:4082
WS_DLL_PUBLIC int tvb_ws_mempbrk_pattern_uint8(tvbuff_t *tvb, const int offset, const int maxlength, const ws_mempbrk_pattern *pattern, unsigned char *found_needle)
Find the first occurrence of any needle from a pre-compiled pattern in a tvbuff.
Definition tvbuff.c:2567
WS_DLL_PUBLIC void * tvb_memdup(wmem_allocator_t *scope, tvbuff_t *tvb, const int offset, size_t length)
Duplicate a block of data from a tvbuff into a newly allocated buffer.
Definition tvbuff.c:977
WS_DLL_PUBLIC double tvb_get_ieee_double(tvbuff_t *tvb, const int offset, const unsigned encoding)
Retrieve a 64-bit IEEE double from a tvbuff using the specified encoding.
Definition tvbuff.c:1344
WS_DLL_PUBLIC int tvb_skip_wsp(tvbuff_t *tvb, const int offset, const int maxlength)
Skip ASCII whitespace in a tvbuff and return the offset of the first non-whitespace byte.
Definition tvbuff.c:4448
WS_DLL_PUBLIC tvbuff_t * tvb_new_real_data(const uint8_t *data, const unsigned length, const int reported_length)
Create a tvbuff backed by existing data.
Definition tvbuff_real.c:58
WS_DLL_PUBLIC uint64_t tvb_get_letoh48(tvbuff_t *tvb, const int offset)
Retrieve a 48-bit unsigned value in little-endian byte order.
Definition tvbuff.c:1630
WS_DLL_PUBLIC unsigned tvb_get_varint(tvbuff_t *tvb, unsigned offset, unsigned maxlen, uint64_t *value, const unsigned encoding)
Extract a variable-length integer from a tvbuff using the specified encoding.
Definition tvbuff.c:4776
WS_DLL_PUBLIC tvbuff_t * tvb_uncompress_snappy(tvbuff_t *tvb, const int offset, int comprlen)
Uncompress Snappy-compressed data from a tvbuff.
WS_DLL_PUBLIC uint32_t tvb_get_bits(tvbuff_t *tvb, const unsigned bit_offset, const int no_of_bits, const unsigned encoding)
Deprecated accessor for extracting bits from a tvbuff.
Definition tvbuff.c:2417
WS_DLL_PUBLIC tvbuff_t * tvb_uncompress_zstd(tvbuff_t *tvb, const int offset, int comprlen)
Uncompress Zstandard (ZSTD)-compressed data from a tvbuff.
Definition tvbuff_zstd.c:28
WS_DLL_PUBLIC void tvb_get_ipv6(tvbuff_t *tvb, const int offset, ws_in6_addr *addr)
Retrieve an IPv6 address from a tvbuff.
Definition tvbuff.c:2105
WS_DLL_PUBLIC tvbuff_t * tvb_new_child_real_data(tvbuff_t *parent, const uint8_t *data, const unsigned length, const int reported_length)
Create a new child tvbuff with real data.
Definition tvbuff_real.c:106
WS_DLL_PUBLIC tvbuff_t * tvb_uncompress_lz77(tvbuff_t *tvb, const int offset, int comprlen)
Uncompress Microsoft Plain LZ77-compressed data from a tvbuff.
Definition tvbuff_lz77.c:97
WS_DLL_PUBLIC tvbuff_t * tvb_uncompress_zlib(tvbuff_t *tvb, const int offset, int comprlen)
Uncompress zlib-compressed data from a tvbuff.
WS_DLL_PUBLIC int tvb_find_line_end_unquoted(tvbuff_t *tvb, const int offset, int len, int *next_offset)
Locate the end of a line in a tvbuff, ignoring newlines inside quoted strings.
Definition tvbuff.c:4299
uint32_t ws_in4_addr
Represents a 32-bit IPv4 address in network byte order.
Definition inet_addr.h:22
Definition guid-utils.h:23
Internal memory allocator interface used by the wmem subsystem.
Definition wmem_allocator.h:34
Internal structure representing a wmem-allocated string buffer.
Definition wmem_strbuf.h:38
Definition mcast_stream.h:30
Digit mapping table for BCD decoding.
Definition tvbuff.h:3052
Represents a 128-bit IPv6 address.
Definition inet_addr.h:27
Definition nstime.h:26
Definition tvbuff-int.h:35
unsigned length
Definition tvbuff-int.h:61
unsigned reported_length
Definition tvbuff-int.h:67
Definition ws_mempbrk.h:21