![]() |
Wireshark 4.7.0
The Wireshark network protocol analyzer
|
Classes | |
struct | dgt_set_t |
Digit mapping table for BCD decoding. More... | |
Macros | |
#define | tvb_get_h_uint16 tvb_get_letohs |
Fetch a 16-bit value in host byte order. | |
#define | tvb_get_h_uint32 tvb_get_letohl |
Fetch a 32-bit value in host byte order. | |
Typedefs | |
typedef void(* | tvbuff_free_cb_t) (void *) |
typedef struct dgt_set_t | dgt_set_t |
Digit mapping table for BCD decoding. | |
Functions | |
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 boundaries. | |
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 significant bit (LSB = 0) to most significant bit (MSB = 7) within each octet. | |
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. | |
WS_DLL_PUBLIC tvbuff_t * | tvb_clone (tvbuff_t *tvb) |
Creates a full clone of the given tvbuff. | |
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. | |
WS_DLL_PUBLIC void | tvb_free (tvbuff_t *tvb) |
Free a tvbuff_t and all tvbuffs chained from it. | |
WS_DLL_PUBLIC void | tvb_free_chain (tvbuff_t *tvb) |
Free the tvbuff_t and all tvbuffs chained from it. | |
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. | |
WS_DLL_PUBLIC void | tvb_set_child_real_data_tvbuff (tvbuff_t *parent, tvbuff_t *child) |
Attach a "real" tvbuff to a parent tvbuff. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
void | tvb_composite_prepend (tvbuff_t *tvb, tvbuff_t *member) |
Prepend to the list of tvbuffs that make up this composite tvbuff. | |
WS_DLL_PUBLIC tvbuff_t * | tvb_new_composite (void) |
Create an empty composite tvbuff. | |
WS_DLL_PUBLIC void | tvb_composite_finalize (tvbuff_t *tvb) |
Mark a composite tvbuff as finalized. | |
WS_DLL_PUBLIC unsigned | tvb_captured_length (const tvbuff_t *tvb) |
Get the amount of captured data in the buffer. | |
WS_DLL_PUBLIC int | tvb_captured_length_remaining (const tvbuff_t *tvb, const int offset) |
Computes bytes to end of buffer from the given offset. | |
WS_DLL_PUBLIC unsigned | tvb_ensure_captured_length_remaining (const tvbuff_t *tvb, const int offset) |
Same as tvb_captured_length_remaining, but throws an exception if the offset is out of bounds. | |
WS_DLL_PUBLIC bool | tvb_bytes_exist (const tvbuff_t *tvb, const int offset, const int length) |
Check that the specified bytes exist in the tvbuff without throwing an exception. | |
WS_DLL_PUBLIC void | tvb_ensure_bytes_exist64 (const tvbuff_t *tvb, const int offset, const uint64_t length) |
Checks that the bytes referred to by 'offset' and 'length' actually exist in the buffer. | |
WS_DLL_PUBLIC void | tvb_ensure_bytes_exist (const tvbuff_t *tvb, const int offset, const int length) |
Checks that the bytes referred to by 'offset' and 'length' actually exist in the buffer. | |
WS_DLL_PUBLIC bool | tvb_offset_exists (const tvbuff_t *tvb, const int offset) |
Checks (without throwing an exception) whether the offset exists in the buffer. | |
WS_DLL_PUBLIC unsigned | tvb_reported_length (const tvbuff_t *tvb) |
Get reported length of buffer. | |
WS_DLL_PUBLIC int | tvb_reported_length_remaining (const tvbuff_t *tvb, const int offset) |
Computes bytes of reported packet data from the given offset to the end of buffer. | |
WS_DLL_PUBLIC unsigned | tvb_ensure_reported_length_remaining (const tvbuff_t *tvb, const int offset) |
Same as tvb_reported_length_remaining but throws an exception if the offset is out of bounds. | |
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. | |
WS_DLL_PUBLIC void | tvb_fix_reported_length (tvbuff_t *tvb) |
Repair a tvbuff when captured length exceeds reported length. | |
WS_DLL_PUBLIC unsigned | tvb_offset_from_real_beginning (const tvbuff_t *tvb) |
Returns the offset from the beginning of the real (backing) buffer. | |
WS_DLL_PUBLIC int | tvb_raw_offset (tvbuff_t *tvb) |
Returns the offset from the first byte of real data. | |
WS_DLL_PUBLIC void | tvb_set_fragment (tvbuff_t *tvb) |
Set the "this is a fragment" flag on a tvbuff. | |
WS_DLL_PUBLIC struct tvbuff * | tvb_get_ds_tvb (tvbuff_t *tvb) |
Retrieve the data source tvbuff from a given tvbuff. | |
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. | |
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. | |
WS_DLL_PUBLIC uint16_t | tvb_get_ntohs (tvbuff_t *tvb, const int offset) |
Retrieve a 16-bit unsigned value in network byte order. | |
WS_DLL_PUBLIC int16_t | tvb_get_ntohis (tvbuff_t *tvb, const int offset) |
Retrieve a 16-bit signed value in network byte order. | |
WS_DLL_PUBLIC uint32_t | tvb_get_ntoh24 (tvbuff_t *tvb, const int offset) |
Retrieve a 24-bit unsigned value in network byte order. | |
WS_DLL_PUBLIC int32_t | tvb_get_ntohi24 (tvbuff_t *tvb, const int offset) |
Retrieve a 24-bit signed value in network byte order. | |
WS_DLL_PUBLIC uint32_t | tvb_get_ntohl (tvbuff_t *tvb, const int offset) |
Retrieve a 32-bit unsigned value in network byte order. | |
WS_DLL_PUBLIC int32_t | tvb_get_ntohil (tvbuff_t *tvb, const int offset) |
Retrieve a 32-bit signed value in network byte order. | |
WS_DLL_PUBLIC uint64_t | tvb_get_ntoh40 (tvbuff_t *tvb, const int offset) |
Retrieve a 40-bit unsigned value in network byte order. | |
WS_DLL_PUBLIC int64_t | tvb_get_ntohi40 (tvbuff_t *tvb, const int offset) |
Retrieve a 40-bit signed value in network byte order. | |
WS_DLL_PUBLIC uint64_t | tvb_get_ntoh48 (tvbuff_t *tvb, const int offset) |
Retrieve a 48-bit unsigned value in network byte order. | |
WS_DLL_PUBLIC int64_t | tvb_get_ntohi48 (tvbuff_t *tvb, const int offset) |
Retrieve a 48-bit signed value in network byte order. | |
WS_DLL_PUBLIC uint64_t | tvb_get_ntoh56 (tvbuff_t *tvb, const int offset) |
Retrieve a 56-bit unsigned value in network byte order. | |
WS_DLL_PUBLIC int64_t | tvb_get_ntohi56 (tvbuff_t *tvb, const int offset) |
Retrieve a 56-bit signed value in network byte order. | |
WS_DLL_PUBLIC uint64_t | tvb_get_ntoh64 (tvbuff_t *tvb, const int offset) |
Retrieve a 64-bit unsigned value in network byte order. | |
WS_DLL_PUBLIC int64_t | tvb_get_ntohi64 (tvbuff_t *tvb, const int offset) |
Retrieve a 64-bit signed value in network byte order. | |
WS_DLL_PUBLIC float | tvb_get_ntohieee_float (tvbuff_t *tvb, const int offset) |
Retrieve a 32-bit IEEE float in network byte order. | |
WS_DLL_PUBLIC double | tvb_get_ntohieee_double (tvbuff_t *tvb, const int offset) |
Retrieve a 64-bit IEEE double in network byte order. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
WS_DLL_PUBLIC void | tvb_get_ipv6 (tvbuff_t *tvb, const int offset, ws_in6_addr *addr) |
Retrieve an IPv6 address from a tvbuff. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
WS_DLL_PUBLIC unsigned | tvb_strsize (tvbuff_t *tvb, const int offset) |
Determine the size of a NUL-terminated string in a tvbuff. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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). | |
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. | |
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. | |
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. | |
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 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. | |
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. | |
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 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. | |
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 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. | |
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. | |
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 tvbuff. | |
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. | |
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 tvbuff. | |
WS_DLL_PUBLIC tvbuff_t * | tvb_uncompress_lznt1 (tvbuff_t *tvb, const int offset, int comprlen) |
Uncompress Microsoft LZNT1-compressed data from a tvbuff. | |
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. | |
WS_DLL_PUBLIC tvbuff_t * | tvb_uncompress_zstd (tvbuff_t *tvb, const int offset, int comprlen) |
Uncompress Zstandard (ZSTD)-compressed data from a tvbuff. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
Variables | |
const unsigned char | dgt_set_t::out [16] |
Dissector use and management
Consider a collection of tvbs as being a chain or stack of tvbs.
When dissecting a frame: The top-level dissector (packet.c) pushes the initial tvb (containing the complete frame) onto the stack (starts the chain) and then calls a sub-dissector which in turn calls the next sub-dissector and so on. Each sub-dissector may chain additional tvbs (see below) to the tvb handed to that dissector. After dissection is complete and control has returned to the top-level dissector, the chain of tvbs (stack) is free'd via a call to tvb_free_chain() (in epan_dissect_cleanup()).
A dissector:
#define tvb_get_h_uint16 tvb_get_letohs |
Fetch a 16-bit value in host byte order.
This macro is used for pseudo-headers in pcap/pcapng files, which are stored in the byte order of the capturing host and must be interpreted in the byte order of the reading host.
#define tvb_get_h_uint32 tvb_get_letohl |
Fetch a 32-bit value in host byte order.
This macro is used for pseudo-headers in pcap/pcapng files, which are stored in the byte order of the capturing host and must be interpreted in the byte order of the reading host.
Digit mapping table for BCD decoding.
Represents a set of output characters used to format BCD-encoded nibbles. Each entry in the out
array maps a 4-bit value (0–15) to a corresponding display character. This allows customization of digit rendering, including support for overdecadic values or alternate digit sets.
Used by functions like tvb_bcd_dig_to_str to convert BCD data into readable strings.
If a digit set is not provided, a default mapping of '0'–'9' with '?' for values 10–15 is used.
typedef void(* tvbuff_free_cb_t) (void *) |
A "real" tvbuff contains a uint8_t* that points to real data. The data is allocated and contiguous.
A "subset" tvbuff has a backing tvbuff. It is a "window" through which the program sees only a portion of the backing tvbuff.
A "composite" tvbuff combines multiple tvbuffs sequentially to produce a larger byte array.
tvbuff's of any type can be used as the backing-tvbuff of a "subset" tvbuff or as a member of a "composite" tvbuff. "composite" tvbuffs can have member-tvbuffs of different types.
Once a tvbuff is create/initialized/finalized, the tvbuff is read-only. That is, it cannot point to any other data. A new tvbuff must be created if you want a tvbuff that points to other data.
tvbuff's are normally chained together to allow efficient de-allocation of tvbuff's.
Decode a base64-encoded string into a tvbuff and attach it to a parent tvbuff.
Converts the given base64-encoded string base64
into its binary representation, returning a new tvbuff_t containing the decoded data. The resulting tvbuff is automatically attached as a child to the specified parent
tvbuff for proper memory management.
This is useful for handling embedded base64 payloads in protocol dissectors.
parent | The parent tvbuff_t to which the decoded tvbuff will be attached. |
base64 | The base64-encoded string to decode. |
Decode a base64-encoded string from a tvbuff region and attach the result to a parent tvbuff.
Extracts a base64-encoded string from the given tvbuff_t starting at offset
and spanning length
bytes. Decodes the string into its binary representation and returns a new tvbuff_t containing the decoded data. The resulting tvbuff is automatically attached as a child to the specified parent
tvbuff for proper memory management.
This is useful for decoding embedded base64 payloads directly from packet data.
parent | The parent tvbuff_t to which the decoded tvbuff will be attached. |
offset | The offset in the tvbuff where the base64 string begins. |
length | The length of the base64 string to decode. |
Decode a base64url-encoded string from a tvbuff region and attach the result to a parent tvbuff.
Extracts a base64url-encoded string from the given tvbuff_t starting at offset
and spanning length
bytes. Decodes the string into its binary representation and returns a new tvbuff_t containing the decoded data. The resulting tvbuff is automatically attached as a child to the specified parent
tvbuff for proper memory management.
This variant uses base64url decoding semantics, where '-' and '_' are used instead of '+' and '/', and padding may be omitted.
parent | The parent tvbuff_t to which the decoded tvbuff will be attached. |
offset | The offset in the tvbuff where the base64url string begins. |
length | The length of the base64url string to decode. |
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.
Iterates over the specified portion of the tvbuff_t starting at offset
and spanning length
bytes, verifying that each byte is an ASCII digit (characters '0' through '9').
tvb | The tvbuff_t to inspect. |
offset | The offset in the tvbuff to begin checking. |
length | The number of bytes to check. |
false
otherwise. 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.
Iterates over the specified portion of the tvbuff_t starting at offset
and spanning length
bytes, verifying that each byte is an ASCII printable character (i.e., in the range 0x20 to 0x7E).
tvb | The tvbuff_t to inspect. |
offset | The offset in the tvbuff to begin checking. |
length | The number of bytes to check. |
false
otherwise. 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.
Extracts BCD-encoded digits from the given tvbuff_t starting at offset
and spanning len
bytes (or to the end if len
is -1). Each byte contains two BCD digits (high and low nibbles). The conversion begins with either the high or low nibble depending on skip_first
.
Digits are formatted using the provided digit set dgt
. If dgt
is NULL, a default digit set of '0'–'9' is used, and any overdecadic values (10–15) are rendered as '?'.
A nibble value of 0xF is treated as a filler and terminates the conversion early. The resulting string is allocated using the specified wmem_allocator_t scope.
scope | The memory allocator scope for the result. |
tvb | The tvbuff_t to read from. |
offset | The offset in the tvbuff where BCD data begins. |
len | The number of bytes to decode, or -1 to decode to the end. |
dgt | Pointer to a digit set mapping (or NULL for default). |
skip_first | If true, skip the first nibble and start with the second. |
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).
Given a tvbuff, an offset into the tvbuff, and a length that starts at that offset (which may be -1 for "all the way to the end of the tvbuff"), fetch BCD encoded digits from a tvbuff starting from either the low or high half byte, formatting the digits according to an input digit set, if NUL a default digit set of 0-9 returning "?" for overdecadic digits will be used. A pointer to the WMEM-allocated string will be returned.
scope | The memory allocator scope for the result. |
tvb | The tvbuff_t to read from. |
offset | The offset in the tvbuff where BCD data begins. |
len | The number of bytes to decode, or -1 to decode to the end. |
dgt | Pointer to a digit set mapping (or NULL for default). |
skip_first | If true, skip the first nibble and start with the second. |
WS_DLL_PUBLIC bool tvb_bytes_exist | ( | const tvbuff_t * | tvb, |
const int | offset, | ||
const int | length | ||
) |
Check that the specified bytes exist in the tvbuff without throwing an exception.
This function verifies whether the byte range starting at offset
and spanning length
bytes exists within the given tvb buffer. Unlike some access functions, it does not throw an exception if the range is out of bounds; instead, it returns false.
tvb | The tvbuff to check. |
offset | The starting offset in the buffer. |
length | The number of bytes to check for existence. |
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.
Converts len
bytes of data from the given tvbuff_t starting at offset
into a printable string representation, with each byte formatted as a two-digit hexadecimal value and no separator between bytes.
The resulting string is allocated using the provided wmem_allocator_t scope.
Example output: "01AF3B" for three bytes.
allocator | The memory allocator scope for the formatted string. |
tvb | The tvbuff_t to read from. |
offset | The offset in the tvbuff to begin formatting. |
len | The number of bytes to format. |
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.
Converts len
bytes of data from the given tvbuff_t starting at offset
into a printable string representation, with each byte formatted as a two-digit hexadecimal value and separated by the specified punct
character.
The resulting string is allocated using the provided wmem_allocator_t scope.
Example output: "01:AF:3B" if punct
is ':'.
scope | The memory allocator scope for the formatted string. |
tvb | The tvbuff_t to read from. |
offset | The offset in the tvbuff to begin formatting. |
len | The number of bytes to format. |
punct | The character to use as a separator between bytes. |
WS_DLL_PUBLIC unsigned tvb_captured_length | ( | const tvbuff_t * | tvb | ) |
Get the amount of captured data in the buffer.
This is NOT necessarily the length of the packet. You probably want to use tvb_reported_length instead.
tvb | The tvbuff to query. |
WS_DLL_PUBLIC int tvb_captured_length_remaining | ( | const tvbuff_t * | tvb, |
const int | offset | ||
) |
Computes bytes to end of buffer from the given offset.
The offset can be negative to indicate bytes from the end of the buffer. The function returns 0 if the offset is either at the end of the buffer or out of bounds. No exception is thrown. You probably want tvb_reported_length_remaining instead.
tvb | The tvbuff to query. |
offset | The offset from which to compute the remaining bytes (can be negative). |
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.
Uncompresses comprlen
bytes of compressed data from the given tvbuff_t starting at offset
, and returns a new tvbuff_t containing the uncompressed data. The returned tvbuff is automatically chained to the specified parent
tvbuff for memory management.
This function is deprecated and should not be used in new code. Prefer tvb_child_uncompress_zlib for clearer semantics and zlib-specific handling.
parent | The parent tvbuff_t to which the result will be chained. |
tvb | The tvbuff_t containing compressed data. |
offset | The offset in the tvbuff where compressed data begins. |
comprlen | The number of bytes of compressed data to uncompress. |
parent
, or NULL on failure.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.
Uncompresses comprlen
bytes of Brotli-compressed data from the given tvbuff_t starting at offset
. If successful, returns a new tvbuff_t containing the uncompressed data, which is automatically attached as a child to the specified parent
tvbuff for proper memory management.
Returns NULL if uncompression fails.
parent | The parent tvbuff_t to which the uncompressed tvbuff will be attached. |
tvb | The tvbuff_t containing Brotli-compressed data. |
offset | The offset in the tvbuff where compressed data begins. |
comprlen | The number of bytes of compressed data to uncompress. |
parent
, or NULL on failure.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.
Extracts length
bytes of HPACK Huffman-encoded data from the given tvbuff_t starting at offset
, decodes it into a UTF-8 string, and returns a new tvbuff_t containing the decoded data. The resulting tvbuff is automatically attached as a child to the specified parent
tvbuff for proper memory management.
This is typically used when parsing HPACK header blocks in HTTP/2 or related protocols.
parent | The parent tvbuff_t to which the decoded tvbuff will be attached. |
offset | The offset in the tvbuff where the encoded data begins. |
length | The number of bytes of encoded data to decode. |
parent
, or NULL on failure.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 tvbuff.
Uncompress comprlen
bytes of Microsoft Plain LZ77-compressed data from the given tvbuff_t starting at offset
. If successful, returns a new tvbuff_t containing the uncompressed data, which is automatically attached as a child to the specified parent
tvbuff for proper memory management.
Returns NULL if uncompression fails.
parent | The parent tvbuff_t to which the uncompressed tvbuff will be attached. |
tvb | The tvbuff_t containing LZ77-compressed data. |
offset | The offset in the tvbuff where compressed data begins. |
comprlen | The number of bytes of compressed data to uncompress. |
parent
, or NULL on failure.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 tvbuff.
Uncompresses comprlen
bytes of Microsoft LZ77+Huffman-compressed data from the given tvbuff_t starting at offset
. If successful, returns a new tvbuff_t containing the uncompressed data, which is automatically attached as a child to the specified parent
tvbuff for proper memory management.
Returns NULL if uncompression fails.
parent | The parent tvbuff_t to which the uncompressed tvbuff will be attached. |
tvb | The tvbuff_t containing LZ77+Huffman-compressed data. |
offset | The offset in the tvbuff where compressed data begins. |
comprlen | The number of bytes of compressed data to uncompress. |
parent
, or NULL on failure.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.
Uncompress comprlen
bytes of Microsoft LZNT1-compressed data from the given tvbuff_t starting at offset
. If successful, returns a new tvbuff_t containing the uncompressed data, which is automatically attached as a child to the specified parent
tvbuff for proper memory management.
Returns NULL if uncompression fails.
parent | The parent tvbuff_t to which the uncompressed tvbuff will be attached. |
tvb | The tvbuff_t containing LZNT1-compressed data. |
offset | The offset in the tvbuff where compressed data begins. |
comprlen | The number of bytes of compressed data to uncompress. |
parent
, or NULL on failure.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.
Uncompresses comprlen
bytes of Snappy-compressed data from the given tvbuff_t starting at offset
. If successful, returns a new tvbuff_t containing the uncompressed data, which is automatically attached as a child to the specified parent
tvbuff for proper memory management.
Returns NULL if uncompression fails.
parent | The parent tvbuff_t to which the uncompressed tvbuff will be attached. |
tvb | The tvbuff_t containing Snappy-compressed data. |
offset | The offset in the tvbuff where compressed data begins. |
comprlen | The number of bytes of compressed data to uncompress. |
parent
, or NULL on failure.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.
Uncompress comprlen
bytes of zlib-compressed data from the given tvbuff_t starting at offset
. If successful, returns a new tvbuff_t containing the uncompressed data, which is automatically attached as a child to the specified parent
tvbuff for proper memory management.
Returns NULL if uncompression fails.
parent | The parent tvbuff_t to which the uncompressed tvbuff will be attached. |
tvb | The tvbuff_t containing compressed data. |
offset | The offset in the tvbuff where compressed data begins. |
comprlen | The number of bytes of compressed data to uncompress. |
parent
, or NULL on failure. 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.
Uncompress comprlen
bytes of ZSTD-compressed data from the given tvbuff_t starting at offset
. If successful, returns a new tvbuff_t containing the uncompressed data, which is automatically attached as a child to the specified parent
tvbuff for proper memory management.
Returns NULL if uncompression fails.
parent | The parent tvbuff_t to which the uncompressed tvbuff will be attached. |
tvb | The tvbuff_t containing ZSTD-compressed data. |
offset | The offset in the tvbuff where compressed data begins. |
comprlen | The number of bytes of compressed data to uncompress. |
parent
, or NULL on failure.Creates a full clone of the given tvbuff.
tvb | The tvbuff to clone. |
Clones a portion of the given tvbuff starting at a specific offset and length.
If the tvbuff's operations structure provides a custom tvb_clone
implementation, it will be used to perform the clone. Otherwise, a generic clone is performed.
tvb | The source tvbuff to clone from. |
offset | The starting offset within the tvbuff. |
len | The number of bytes to clone. |
Append to the list of tvbuffs that make up this composite tvbuff.
Can throw BoundsError if member_offset or member_length goes beyond the bounds of the 'member' tvbuff.
tvb | The composite tvbuff to which a member will be appended. |
member | The tvbuff member to append. |
WS_DLL_PUBLIC void tvb_composite_finalize | ( | tvbuff_t * | tvb | ) |
Mark a composite tvbuff as finalized.
After finalization, no further appends or prepends may occur, and data access can finally take place.
tvb | The composite tvbuff to finalize. |
Prepend to the list of tvbuffs that make up this composite tvbuff.
Can throw BoundsError if member_offset or member_length goes beyond the bounds of the 'member' tvbuff.
tvb | The composite tvbuff to which a member will be prepended. |
member | The tvbuff member to prepend. |
WS_DLL_PUBLIC void tvb_ensure_bytes_exist | ( | const tvbuff_t * | tvb, |
const int | offset, | ||
const int | length | ||
) |
Checks that the bytes referred to by 'offset' and 'length' actually exist in the buffer.
Throws an exception if the bytes do not exist.
tvb | The tvbuff to check. |
offset | The starting offset within the tvbuff. |
length | The number of bytes to check for existence. |
WS_DLL_PUBLIC void tvb_ensure_bytes_exist64 | ( | const tvbuff_t * | tvb, |
const int | offset, | ||
const uint64_t | length | ||
) |
Checks that the bytes referred to by 'offset' and 'length' actually exist in the buffer.
The 'length' parameter is a 64-bit unsigned integer. Throws an exception if the bytes do not exist.
tvb | The tvbuff to check. |
offset | The starting offset within the tvbuff. |
length | The number of bytes to check for existence. |
WS_DLL_PUBLIC unsigned tvb_ensure_captured_length_remaining | ( | const tvbuff_t * | tvb, |
const int | offset | ||
) |
Same as tvb_captured_length_remaining, but throws an exception if the offset is out of bounds.
This function verifies that the offset is within the captured data; if not, it throws an exception instead of returning zero.
tvb | The tvbuff_t to check. |
offset | The offset to ensure is within captured data. |
Exception | if the offset is beyond the captured length. |
WS_DLL_PUBLIC unsigned tvb_ensure_reported_length_remaining | ( | const tvbuff_t * | tvb, |
const int | offset | ||
) |
Same as tvb_reported_length_remaining but throws an exception if the offset is out of bounds.
tvb | The tvbuff to query. |
offset | The offset from which to compute remaining bytes (can be negative). |
ReportedBoundsError | if the offset is out of bounds. |
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.
Scans the given tvbuff_t starting at offset
for a line terminator, examining up to len
bytes (or to the end of the tvbuff if len
is -1). Returns the length of the line, excluding the terminator.
If no line terminator is found:
desegment
is true.desegment
is false.If next_offset
is non-null and a line terminator is found, sets *next_offset
to the offset immediately following the terminator. If no terminator is found and desegment
is false, sets *next_offset
to the end of the buffer. If -1 is returned, *next_offset
is not modified.
tvb | The tvbuff_t to scan. |
offset | The offset in the tvbuff where the line begins. |
len | The maximum number of bytes to scan, or -1 to scan to the end. |
next_offset | Pointer to receive the offset past the line terminator, or NULL. |
desegment | Whether to return -1 if no terminator is found. |
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.
Scans the given tvbuff_t starting at offset
for a line terminator, examining up to len
bytes (or to the end of the tvbuff if len
is -1). Quoted strings are treated specially—newlines within quotes are not considered line terminators.
Returns the length of the line, excluding the line terminator. If no terminator is found, returns the remaining number of bytes in the buffer.
If next_offset
is non-null, sets *next_offset
to the offset immediately following the line terminator, or to the end of the buffer if no terminator is found.
tvb | The tvbuff_t to scan. |
offset | The offset in the tvbuff where the line begins. |
len | The maximum number of bytes to scan, or -1 to scan to the end. |
next_offset | Pointer to receive the offset past the line terminator, or NULL. |
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.
Scans the contents of haystack_tvb
starting at haystack_offset
for the first occurrence of the full contents of needle_tvb
. If found, returns the offset of the match relative to the beginning of haystack_tvb
(not relative to haystack_offset
).
If no match is found, returns -1.
haystack_tvb | The tvbuff_t to search within. |
needle_tvb | The tvbuff_t to search for. |
haystack_offset | The offset in haystack_tvb where the search begins. |
haystack_tvb
, or -1 if not found. 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.
Searches for the first occurrence of the 16-bit needle
in the given tvbuff_t, starting at offset
and scanning up to maxlength
bytes. If maxlength
is -1, the search continues to the end of the tvbuff.
This function does not throw an exception, even if maxlength
exceeds the tvbuff boundary. In such cases, -1 is returned if the boundary is reached before finding the needle.
tvb | The tvbuff_t to search. |
offset | The offset in the tvbuff to begin searching. |
maxlength | The maximum number of bytes to search, or -1 to search to the end. |
needle | The 16-bit value to search for. |
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.
Searches for the first occurrence of needle
in the given tvbuff_t, starting at offset
and scanning up to maxlength
bytes. If maxlength
is -1, the search continues to the end of the tvbuff.
This function does not throw an exception, even if maxlength
exceeds the tvbuff boundary. In such cases, -1 is returned if the boundary is reached before finding the needle.
tvb | The tvbuff_t to search. |
offset | The offset in the tvbuff to begin searching. |
maxlength | The maximum number of bytes to search, or -1 to search to the end. |
needle | The byte value to search for. |
WS_DLL_PUBLIC void tvb_fix_reported_length | ( | tvbuff_t * | tvb | ) |
Repair a tvbuff when captured length exceeds reported length.
This function fixes a tvbuff_t where the captured length is greater than the reported length. Such a condition is invalid because it is impossible to capture more data than is actually in the packet.
tvb | The tvbuff to repair. |
|
extern |
Format a null-padded string from a tvbuff as printable text.
Similar to tvb_format_text, but tailored for null-padded strings. Null padding characters are not shown as C-style escapes (e.g., "\000").
The returned string is allocated using the provided wmem_allocator_t scope.
scope | The memory allocator scope for the formatted string. |
tvb | The tvbuff_t to read from. |
offset | The offset in the tvbuff to begin formatting. |
size | The number of bytes to format. |
Like "tvb_format_text()", but for null-padded strings; don't show the null padding characters as "\000".
|
extern |
Format a null-padded string from a tvbuff as printable text, preserving whitespace.
Similar to tvb_format_text_wsp, but tailored for null-padded strings. Null padding characters are not shown as C-style escapes (e.g., "\000").
The returned string is allocated using the provided wmem_allocator_t scope.
allocator | The memory allocator scope for the formatted string. |
tvb | The tvbuff_t to read from. |
offset | The offset in the tvbuff to begin formatting. |
size | The number of bytes to format. |
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.
Converts size
bytes of data from the given tvbuff_t starting at offset
into a printable string representation. Non-printable characters are escaped or replaced as needed for safe display.
The returned string is allocated using the provided wmem_allocator_t scope.
scope | The memory allocator scope for the formatted string. |
tvb | The tvbuff_t to read from. |
offset | The offset in the tvbuff to begin formatting. |
size | The number of bytes to format. |
Format the data in the tvb from offset for size.
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.
Similar to tvb_format_text, but tailored for whitespace-preserving contexts. Characters are shown as-is without escaping non-printables using C-style sequences.
The returned string is allocated using the provided wmem_allocator_t scope.
allocator | The memory allocator scope for the formatted string. |
tvb | The tvbuff_t to read from. |
offset | The offset in the tvbuff to begin formatting. |
size | The number of bytes to format. |
WS_DLL_PUBLIC void tvb_free | ( | tvbuff_t * | tvb | ) |
Free a tvbuff_t and all tvbuffs chained from it.
The tvbuff must be the 'head' (initial) tvb of a chain or must not be in a chain. If specified, a callback to free the tvbuff data will be invoked for each tvbuff freed.
tvb | The tvbuff to free along with all chained tvbuffs. |
WS_DLL_PUBLIC void tvb_free_chain | ( | tvbuff_t * | tvb | ) |
Free the tvbuff_t and all tvbuffs chained from it.
The tvbuff must be the 'head' (initial) tvb of a chain or must not be in a chain. If specified, a callback to free the tvbuff data will be invoked for each tvbuff freed.
tvb | The tvbuff to free along with all chained tvbuffs. |
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.
Given an allocator scope, a tvbuff, a bit offset, and a length in 7-bit characters (not octets), this function:
Throws an exception if the tvbuff ends before the entire string is read.
If scope
is NULL, the caller is responsible for freeing the allocated memory using wmem_free()
. Otherwise, the memory is automatically freed when the scope lifetime ends.
scope | The memory allocator scope for the returned string, or NULL. |
tvb | The tvbuff_t to read from. |
bit_offset | The bit offset within the tvbuff where the string begins. |
no_of_chars | The number of 7-bit characters to decode. |
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.
Extracts BCD-encoded digits from the given tvbuff_t starting at offset
and spanning len
bytes (or to the end if len
is -1). Each byte contains two nibbles representing digits. The conversion behavior is controlled by skip_first
, odd
, and bigendian
flags:
skip_first
is true, the first nibble (high-order) of the first byte is ignored.odd
is true, the high-order nibble of the last byte is skipped.bigendian
is true, each byte is interpreted with the high-order nibble as the first digit and the low-order nibble as the second digit; otherwise, the order is reversed.Digits are formatted using the provided digit set dgt
. If dgt
is NULL, a default digit set of '0'–'9' is used, and any overdecadic values (10–15) are rendered as '?'.
A nibble value of 0xF is treated as a filler and terminates the conversion early. The resulting UTF-8 string is allocated using the specified wmem_allocator_t scope.
scope | The memory allocator scope for the result. |
tvb | The tvbuff_t to read from. |
offset | The offset in the tvbuff where BCD data begins. |
len | The number of bytes to decode, or -1 to decode to the end. |
dgt | Pointer to a digit set mapping (or NULL for default). |
skip_first | If true, skip the first nibble and start with the second. |
odd | If true, skip the high nibble of the last byte. |
bigendian | If true, treat high nibble as first digit in each byte. |
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.
This function extracts 1–32 bits starting at the specified bit offset and returns them as a uint32_t, using the specified encoding to determine bit ordering.
tvb | The tvbuff_t to read from. |
bit_offset | The bit offset within the buffer to begin reading. |
no_of_bits | The number of bits to extract (must be between 1 and 32). |
encoding | The ENC_* constant defining bit ordering. |
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.
Extracts a sequence of bits starting at the specified bit offset in the given tvbuff_t. The bits are interpreted according to the specified encoding (which defines bit ordering within each octet) and returned as an unsigned 16-bit value.
Note that bit offsets 0–7 refer to bits within octet 0 of the buffer. Versions of Wireshark prior to 3.6 ignored the encoding parameter.
tvb | The tvbuff_t to read from. |
bit_offset | The bit offset within the buffer to begin reading. |
no_of_bits | The number of bits to extract (must be between 1 and 16). |
encoding | The ENC_* constant defining bit ordering. |
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.
Extracts a sequence of bits starting at the specified bit offset in the given tvbuff_t. The bits are interpreted according to the specified encoding (which defines bit ordering within each octet) and returned as an unsigned 32-bit value.
Note that bit offsets 0–7 refer to bits within octet 0 of the buffer. Versions of Wireshark prior to 3.6 ignored the encoding parameter.
tvb | The tvbuff_t to read from. |
bit_offset | The bit offset within the buffer to begin reading. |
no_of_bits | The number of bits to extract (must be between 1 and 32). |
encoding | The ENC_* constant defining bit ordering. |
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.
Extracts a sequence of bits starting at the specified bit offset in the given tvbuff_t. The bits are interpreted according to the specified encoding (which defines bit ordering within each octet) and returned as an unsigned 64-bit value.
Note that bit offsets 0–7 refer to bits within octet 0 of the buffer. Versions of Wireshark prior to 3.6 ignored the encoding parameter.
tvb | The tvbuff_t to read from. |
bit_offset | The bit offset within the buffer to begin reading. |
no_of_bits | The number of bits to extract (must be between 1 and 64). |
encoding | The ENC_* constant defining bit ordering. |
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.
Extracts a sequence of bits starting at the specified bit offset in the given tvbuff_t. The bits are returned as an unsigned 8-bit value.
Note that bit offsets 0–7 refer to bits within octet 0 of the buffer. This function does not use the encoding parameter.
tvb | The tvbuff_t to read from. |
bit_offset | The bit offset within the buffer to begin reading. |
no_of_bits | The number of bits to extract (must be between 1 and 8). |
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.
Extracts a sequence of bits from the given tvbuff_t starting at the specified bit offset, interprets them according to the provided encoding, and returns the result as a newly allocated byte array.
The caller must provide a wmem_allocator_t scope for memory allocation. The number of bytes written is returned via data_length
.
scope | The wmem_allocator_t to use for allocating the result. |
tvb | The tvbuff_t to read from. |
offset | The bit offset within the buffer to begin reading. |
length | The number of bits to extract. |
data_length | Pointer to a size_t that will be set to the number of bytes returned. |
encoding | The ENC_* constant defining bit order and alignment. |
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.
Given a tvbuff_t and an offset assumed to point to a null-terminated string, this function finds the string length (including the terminating null), allocates a buffer to hold the string, copies the raw octets into it, and returns a pointer to the string. The length of the string (including the null terminator) is returned through lengthp
.
The returned string is constant and does not need to be freed by the caller; it is automatically freed when the next packet is dissected.
This function is more efficient than other string extraction routines but does not perform any UTF-8 translation or validation. The string consists of raw octets as present in the packet, including any invalid sequences.
tvb | The tvbuff_t to read from. |
offset | The offset in the tvbuff where the string begins. |
lengthp | Pointer to an int to receive the string length including NUL. |
Retrieve the data source tvbuff from a given tvbuff.
This function returns the underlying tvbuff_t that serves as the data source for the provided buffer. This is typically the original buffer that holds the real data, as opposed to virtual or subset buffers layered on top.
tvb | The tvbuff_t to query. |
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.
Given an allocator scope, a tvbuff, an offset, and a length in octets, this function:
Throws an exception if the tvbuff ends before the full string is read.
If scope
is NULL, it is the caller’s responsibility to free the allocated memory using wmem_free()
. Otherwise, the memory is automatically freed when the scope lifetime ends.
scope | The memory allocator scope for the result, or NULL. |
tvb | The tvbuff_t to read from. |
offset | The byte offset within the tvbuff where the string begins. |
length | The length in octets of the string to convert. |
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.
Reads 16 bytes from the given tvbuff_t at the specified offset, interprets them as a GUID according to the provided encoding (e.g., ENC_BIG_ENDIAN or ENC_LITTLE_ENDIAN), and stores the result in the caller-provided e_guid_t structure.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
guid | A pointer to an e_guid_t structure to receive the GUID. |
encoding | The encoding to use when interpreting the GUID bytes. |
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.
Extracts len
bytes of HPACK Huffman-encoded data from the given tvbuff_t starting at offset
, decodes it into a UTF-8 string, and returns a wmem_strbuf_t containing the result. The string buffer is allocated using the specified wmem_allocator_t scope.
This is typically used when parsing HPACK header blocks in HTTP/2 or related protocols.
scope | The memory allocator scope for the resulting string buffer. |
tvb | The tvbuff_t containing HPACK Huffman-encoded data. |
offset | The offset in the tvbuff where the encoded data begins. |
len | The number of bytes to decode. |
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.
Reads eight bytes from the given tvbuff_t at the specified offset, interprets them as a 64-bit IEEE 754 floating-point value according to the provided encoding (e.g., ENC_LITTLE_ENDIAN or ENC_BIG_ENDIAN), and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
encoding | The encoding to use when interpreting the bytes. |
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.
Reads four bytes from the given tvbuff_t at the specified offset, interprets them as a 32-bit IEEE 754 floating-point value according to the provided encoding (e.g., ENC_LITTLE_ENDIAN or ENC_BIG_ENDIAN), and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
encoding | The encoding to use when interpreting the bytes. |
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.
Reads two bytes from the given tvbuff_t at the specified offset, interprets them as a 16-bit signed integer according to the provided encoding (e.g., ENC_LITTLE_ENDIAN or ENC_BIG_ENDIAN), and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
encoding | The encoding to use when interpreting the bytes. |
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.
Reads three bytes from the given tvbuff_t at the specified offset, interprets them as a 24-bit signed integer according to the provided encoding (e.g., ENC_LITTLE_ENDIAN or ENC_BIG_ENDIAN), and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
encoding | The encoding to use when interpreting the bytes. |
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.
Reads four bytes from the given tvbuff_t at the specified offset, interprets them as a 32-bit signed integer according to the provided encoding (e.g., ENC_LITTLE_ENDIAN or ENC_BIG_ENDIAN), and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
encoding | The encoding to use when interpreting the bytes. |
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.
Reads five bytes from the given tvbuff_t at the specified offset, interprets them as a 40-bit signed integer according to the provided encoding (e.g., ENC_LITTLE_ENDIAN or ENC_BIG_ENDIAN), and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
encoding | The encoding to use when interpreting the bytes. |
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.
Reads six bytes from the given tvbuff_t at the specified offset, interprets them as a 48-bit signed integer according to the provided encoding (e.g., ENC_LITTLE_ENDIAN or ENC_BIG_ENDIAN), and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
encoding | The encoding to use when interpreting the bytes. |
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.
Reads seven bytes from the given tvbuff_t at the specified offset, interprets them as a 56-bit signed integer according to the provided encoding (e.g., ENC_LITTLE_ENDIAN or ENC_BIG_ENDIAN), and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
encoding | The encoding to use when interpreting the bytes. |
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.
Reads eight bytes from the given tvbuff_t at the specified offset, interprets them as a 64-bit signed integer according to the provided encoding (e.g., ENC_LITTLE_ENDIAN or ENC_BIG_ENDIAN), and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
encoding | The encoding to use when interpreting the bytes. |
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.
This function reads a single byte from the given tvbuff_t at the specified offset. If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to read the byte. |
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.
Reads four bytes from the given tvbuff_t at the specified offset, interprets them as an IPv4 address in network byte order, and returns the raw 32-bit value without converting to host byte order.
This function does not perform any byte order conversion, as callers are expected to handle the value in network format.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
|
extern |
Fetch an IPv4 address from a tvbuff and mask out bits not covered by a prefix length.
Fetches an IPv4 address from a tvbuff and masks out bits other than those covered by a prefix length
tvb | tvbuff to read an IPv4 address from |
offset | offset in the tvbuff to read the IPv4 address from |
addr | memory location where the IPv4 address read should be stored |
prefix_len | the length of the prefix (in bits) |
WS_DLL_PUBLIC void tvb_get_ipv6 | ( | tvbuff_t * | tvb, |
const int | offset, | ||
ws_in6_addr * | addr | ||
) |
Retrieve an IPv6 address from a tvbuff.
Reads sixteen bytes from the given tvbuff_t at the specified offset, interprets them as an IPv6 address in network byte order, and stores the result in the caller-provided ws_in6_addr structure.
This function does not perform any byte order conversion, as IPv6 addresses are typically handled in network format.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
addr | A pointer to a ws_in6_addr structure to receive the IPv6 address. |
|
extern |
Fetch an IPv6 address from a tvbuff and mask out bits not covered by a prefix length.
Reads an IPv6 address from the given tvbuff starting at the specified offset, then applies a mask to zero out bits outside the specified prefix length.
tvb | The tvbuff to read an IPv6 address from. |
offset | The offset in the tvbuff to read the IPv6 address from. |
addr | Memory location where the fetched IPv6 address should be stored. |
prefix_len | The length of the prefix (in bits). |
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.
Reads three bytes from the given tvbuff_t at the specified offset, interprets them as a little-endian 24-bit unsigned integer, and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
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.
Reads five bytes from the given tvbuff_t at the specified offset, interprets them as a little-endian 40-bit unsigned integer, and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
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.
Reads six bytes from the given tvbuff_t at the specified offset, interprets them as a little-endian 48-bit unsigned integer, and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
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.
Reads seven bytes from the given tvbuff_t at the specified offset, interprets them as a little-endian 56-bit unsigned integer, and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
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.
Reads eight bytes from the given tvbuff_t at the specified offset, interprets them as a little-endian 64-bit unsigned integer, and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
Retrieve a GUID from a tvbuff in little-endian byte order.
Reads 16 bytes from the given tvbuff_t at the specified offset, interprets them as a GUID in little-endian byte order, and stores the result in the caller-provided e_guid_t structure.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
guid | A pointer to an e_guid_t structure to receive the GUID. |
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.
Reads three bytes from the given tvbuff_t at the specified offset, interprets them as a little-endian 24-bit signed integer, and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
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.
Reads five bytes from the given tvbuff_t at the specified offset, interprets them as a little-endian 40-bit signed integer, and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
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.
Reads six bytes from the given tvbuff_t at the specified offset, interprets them as a little-endian 48-bit signed integer, and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
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.
Reads seven bytes from the given tvbuff_t at the specified offset, interprets them as a little-endian 56-bit signed integer, and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
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.
Reads eight bytes from the given tvbuff_t at the specified offset, interprets them as a little-endian 64-bit signed integer, and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
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.
Reads eight bytes from the given tvbuff_t at the specified offset, interprets them as a little-endian IEEE 754 double, and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
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.
Reads four bytes from the given tvbuff_t at the specified offset, interprets them as a little-endian IEEE 754 float, and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
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.
Reads four bytes from the given tvbuff_t at the specified offset, interprets them as a little-endian 32-bit signed integer, and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
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.
Reads two bytes from the given tvbuff_t at the specified offset, interprets them as a little-endian 16-bit signed integer, and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
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.
Reads four bytes from the given tvbuff_t at the specified offset, interprets them as a little-endian 32-bit unsigned integer, and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
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.
Reads two bytes from the given tvbuff_t at the specified offset, interprets them as a little-endian 16-bit unsigned integer, and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
WS_DLL_PUBLIC uint32_t tvb_get_ntoh24 | ( | tvbuff_t * | tvb, |
const int | offset | ||
) |
Retrieve a 24-bit unsigned value in network byte order.
Reads three bytes from the given tvbuff_t at the specified offset, interprets them as a big-endian (network byte order) 24-bit unsigned integer, and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
WS_DLL_PUBLIC uint64_t tvb_get_ntoh40 | ( | tvbuff_t * | tvb, |
const int | offset | ||
) |
Retrieve a 40-bit unsigned value in network byte order.
Reads five bytes from the given tvbuff_t at the specified offset, interprets them as a big-endian (network byte order) 40-bit unsigned integer, and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
WS_DLL_PUBLIC uint64_t tvb_get_ntoh48 | ( | tvbuff_t * | tvb, |
const int | offset | ||
) |
Retrieve a 48-bit unsigned value in network byte order.
Reads six bytes from the given tvbuff_t at the specified offset, interprets them as a big-endian (network byte order) 48-bit unsigned integer, and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
WS_DLL_PUBLIC uint64_t tvb_get_ntoh56 | ( | tvbuff_t * | tvb, |
const int | offset | ||
) |
Retrieve a 56-bit unsigned value in network byte order.
Reads seven bytes from the given tvbuff_t at the specified offset, interprets them as a big-endian (network byte order) 56-bit unsigned integer, and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
WS_DLL_PUBLIC uint64_t tvb_get_ntoh64 | ( | tvbuff_t * | tvb, |
const int | offset | ||
) |
Retrieve a 64-bit unsigned value in network byte order.
Reads eight bytes from the given tvbuff_t at the specified offset, interprets them as a big-endian (network byte order) 64-bit unsigned integer, and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
Retrieve a GUID from a tvbuff in network byte order.
Reads 16 bytes from the given tvbuff_t at the specified offset, interprets them as a GUID in network byte order, and stores the result in the caller-provided e_guid_t structure.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
guid | A pointer to an e_guid_t structure to receive the GUID. |
WS_DLL_PUBLIC int32_t tvb_get_ntohi24 | ( | tvbuff_t * | tvb, |
const int | offset | ||
) |
Retrieve a 24-bit signed value in network byte order.
Reads three bytes from the given tvbuff_t at the specified offset, interprets them as a big-endian (network byte order) 24-bit signed integer, and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
WS_DLL_PUBLIC int64_t tvb_get_ntohi40 | ( | tvbuff_t * | tvb, |
const int | offset | ||
) |
Retrieve a 40-bit signed value in network byte order.
Reads five bytes from the given tvbuff_t at the specified offset, interprets them as a big-endian (network byte order) 40-bit signed integer, and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
WS_DLL_PUBLIC int64_t tvb_get_ntohi48 | ( | tvbuff_t * | tvb, |
const int | offset | ||
) |
Retrieve a 48-bit signed value in network byte order.
Reads six bytes from the given tvbuff_t at the specified offset, interprets them as a big-endian (network byte order) 48-bit signed integer, and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
WS_DLL_PUBLIC int64_t tvb_get_ntohi56 | ( | tvbuff_t * | tvb, |
const int | offset | ||
) |
Retrieve a 56-bit signed value in network byte order.
Reads seven bytes from the given tvbuff_t at the specified offset, interprets them as a big-endian (network byte order) 56-bit signed integer, and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
WS_DLL_PUBLIC int64_t tvb_get_ntohi64 | ( | tvbuff_t * | tvb, |
const int | offset | ||
) |
Retrieve a 64-bit signed value in network byte order.
Reads eight bytes from the given tvbuff_t at the specified offset, interprets them as a big-endian (network byte order) 64-bit signed integer, and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
WS_DLL_PUBLIC double tvb_get_ntohieee_double | ( | tvbuff_t * | tvb, |
const int | offset | ||
) |
Retrieve a 64-bit IEEE double in network byte order.
Reads eight bytes from the given tvbuff_t at the specified offset, interprets them as a big-endian (network byte order) IEEE 754 double, and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
WS_DLL_PUBLIC float tvb_get_ntohieee_float | ( | tvbuff_t * | tvb, |
const int | offset | ||
) |
Retrieve a 32-bit IEEE float in network byte order.
Reads four bytes from the given tvbuff_t at the specified offset, interprets them as a big-endian (network byte order) IEEE 754 float, and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
WS_DLL_PUBLIC int32_t tvb_get_ntohil | ( | tvbuff_t * | tvb, |
const int | offset | ||
) |
Retrieve a 32-bit signed value in network byte order.
Reads four bytes from the given tvbuff_t at the specified offset, interprets them as a big-endian (network byte order) 32-bit signed integer, and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
WS_DLL_PUBLIC int16_t tvb_get_ntohis | ( | tvbuff_t * | tvb, |
const int | offset | ||
) |
Retrieve a 16-bit signed value in network byte order.
Reads two bytes from the given tvbuff_t at the specified offset, interprets them as a big-endian (network byte order) 16-bit signed integer, and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
WS_DLL_PUBLIC uint32_t tvb_get_ntohl | ( | tvbuff_t * | tvb, |
const int | offset | ||
) |
Retrieve a 32-bit unsigned value in network byte order.
Reads four bytes from the given tvbuff_t at the specified offset, interprets them as a big-endian (network byte order) 32-bit unsigned integer, and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
WS_DLL_PUBLIC uint16_t tvb_get_ntohs | ( | tvbuff_t * | tvb, |
const int | offset | ||
) |
Retrieve a 16-bit unsigned value in network byte order.
Reads two bytes from the given tvbuff_t at the specified offset, interprets them as a big-endian (network byte order) 16-bit unsigned integer, and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
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.
WARNING! This function is possibly expensive, temporarily allocating another copy of the packet data. Furthermore, it's dangerous because once this pointer is given to the user, there's no guarantee that the user will honor the 'length' and not overstep the boundaries of the buffer.
If you're thinking of using tvb_get_ptr, STOP WHAT YOU ARE DOING IMMEDIATELY. Go take a break. Consider that tvb_get_ptr hands you a raw, unprotected pointer that you can easily use to create a security vulnerability or otherwise crash Wireshark. Then consider that you can probably find a function elsewhere in this file that does exactly what you want in a much more safe and robust manner.
The returned pointer is data that is internal to the tvbuff, so do not attempt to free it. Don't modify the data, either, because another tvbuff that might be using this tvbuff may have already copied that portion of the data (sometimes tvbuff's need to make copies of data, but that's the internal implementation that you need not worry about). Assume that the uint8_t* points to read-only data that the tvbuff manages.
Return a pointer into our buffer if the data asked for via 'offset'/'length' is contiguous (which might not be the case for a "composite" tvbuff). If the data is not contiguous, a tvb_memdup() is called for the entire buffer and the pointer to the newly-contiguous data is returned. This dynamically- allocated memory will be freed when the tvbuff is freed, after the tvbuff_free_cb_t() is called, if any.
tvb | The tvbuff to read from. |
offset | The starting offset in the tvbuff. |
length | The number of bytes requested. |
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.
Copies as many bytes as are available in the given tvbuff_t starting at offset
into the provided buffer
, up to bufsize - 1
bytes to leave room for a terminating NUL.
The copied data consists of raw bytes; a NUL byte is appended at the end to ensure proper termination.
tvb | The tvbuff_t to read from. |
offset | The offset in the tvbuff at which to start extracting bytes. |
buffer | The destination buffer to copy bytes into. |
bufsize | The size of the destination buffer (including space for terminating NUL). |
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.
Searches the given tvbuff_t starting at offset
for a NUL byte and copies no more than bufsize
bytes—including the terminating NUL—into the provided buffer
.
Returns the number of bytes copied, excluding the terminating NUL.
If the remaining packet data is less than bufsize
, this function will not throw an exception if the end of the packet is reached before the NUL byte is found. In that case, the buffer is still guaranteed to be NUL-terminated.
tvb | The tvbuff_t to read from. |
offset | The offset in the tvbuff to start searching and copying. |
bufsize | The maximum number of bytes to copy, including the terminating NUL. |
buffer | The destination buffer where bytes will be copied. |
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.
Converts a string from the given tvbuff_t into binary data, interpreting it as a sequence of hexadecimal characters. Leading spaces are ignored. Optional separators are allowed based on the ENC_SEP_* flags in the encoding parameter.
The caller must pre-allocate the GByteArray using g_byte_array_new()
. The parsed bytes are appended to this array. The return value is the same pointer, or NULL on error.
tvb | The tvbuff_t to read from. |
offset | The beginning offset in the tvbuff (must be non-negative). |
length | The length of the field to parse, or -1 to use the remaining buffer. |
encoding | The ENC_* constant defining the format and separator rules. |
bytes | A pre-allocated GByteArray to receive the parsed bytes. |
endoff | If not NULL, will be set to the offset of the character immediately following the last one used in the conversion. |
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.
Given an allocator scope, a tvbuff, a byte offset, a byte length, and a string encoding, this function allocates a buffer using the specified scope, converts the string from the specified encoding to UTF-8 (mapping invalid sequences to the Unicode REPLACEMENT CHARACTER), appends a trailing '\0', and returns a pointer to the resulting buffer.
Throws an exception if the tvbuff ends before the string does.
If scope
is NULL, the caller is responsible for freeing the memory using wmem_free()
. Otherwise, the memory is automatically freed when the scope lifetime ends.
scope | The memory allocator scope for the result, or NULL. |
tvb | The tvbuff_t to read from. |
offset | The offset in the tvbuff where the string begins. |
length | The length in bytes of the string to convert. |
encoding | The ENC_* constant specifying the string's encoding. |
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.
[in] | offset | The beginning offset in the tvb (cannot be negative) |
[in] | length | The field's length in the tvb (or -1 for remaining) |
[in] | encoding | The ENC_* that defines the format (e.g., ENC_ISO_8601_DATE_TIME) |
[in,out] | ns | The pre-allocated nstime_t that will be set to the decoded value |
[out] | endoff | if not NULL, should point to a int that this routine will then set to be the offset to the character after the last character used in the conversion. This is useful because they may not consume the whole section. |
This routine will not throw an error unless the passed-in arguments are invalid (e.g., offset is beyond the tvb's length).
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.
Given an allocator scope, a tvbuff, a byte offset, a pointer to an int, and a string encoding, this function:
lengthp
is non-null, sets the pointed-to int to the length of the string.If scope
is NULL, the caller is responsible for freeing the allocated memory using wmem_free()
. Otherwise, the memory is automatically freed when the scope lifetime ends.
scope | The memory allocator scope for the result, or NULL. |
tvb | The tvbuff_t to read from. |
offset | The byte offset in the tvbuff where the string begins. |
lengthp | Pointer to an int to receive the string length, or NULL. |
encoding | The ENC_* constant specifying the string encoding. |
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.
Given an allocator scope, a tvbuff, a byte offset, a byte length, and a string encoding, this function:
Throws an exception if the tvbuff ends before the string does.
If scope
is NULL, the caller is responsible for freeing the allocated memory using wmem_free()
. Otherwise, the memory is automatically freed when the scope lifetime ends.
scope | The memory allocator scope for the returned string, or NULL. |
tvb | The tvbuff_t to read from. |
offset | The offset in the tvbuff where the string starts. |
length | The length in bytes of the null-padded string. |
encoding | The ENC_* constant specifying the string encoding. |
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.
Scans the given tvbuff_t starting at offset
for the end of a token, examining up to len
bytes (or to the end of the tvbuff if len
is -1). A token is defined as a sequence of non-separator characters terminated by a delimiter.
If a terminator is found, returns the length of the token (excluding the terminator). If no terminator is found:
desegment
is true.desegment
is false.If next_offset
is non-null and a terminator is found, sets *next_offset
to the offset immediately following the terminator. If no terminator is found and desegment
is false, sets *next_offset
to the end of the buffer. If -1 is returned, *next_offset
is not modified.
tvb | The tvbuff_t to scan. |
offset | The offset in the tvbuff where the token begins. |
len | The maximum number of bytes to scan, or -1 to scan to the end. |
next_offset | Pointer to receive the offset past the token terminator, or NULL. |
desegment | Whether to return -1 if no terminator is found. |
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.
Given an allocator scope, a tvbuff, a bit offset, and a length in 7-bit characters (not octets), this function:
Throws an exception if the tvbuff ends before the entire string is read.
If scope
is NULL, the caller is responsible for freeing the allocated memory using wmem_free()
. Otherwise, the memory is automatically freed when the scope lifetime ends.
scope | The memory allocator scope for the returned string, or NULL. |
tvb | The tvbuff_t to read from. |
bit_offset | The bit offset within the tvbuff where the string begins. |
no_of_chars | The number of 7-bit characters to decode. |
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.
Given an allocator scope, a tvbuff, an offset, and a length in octets, this function:
Throws an exception if the tvbuff ends before the string does.
If scope
is NULL, the caller is responsible for freeing the allocated memory using wmem_free()
. Otherwise, the memory is automatically freed when the scope lifetime ends.
scope | The memory allocator scope for the returned string, or NULL. |
tvb | The tvbuff_t to read from. |
offset | The byte offset within the tvbuff where the string begins. |
length | The number of octets to decode. |
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.
Reads two bytes from the given tvbuff_t at the specified offset, interprets them according to the provided encoding (e.g., ENC_LITTLE_ENDIAN or ENC_BIG_ENDIAN), and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
encoding | The encoding to use when interpreting the bytes. |
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.
Reads three bytes from the given tvbuff_t at the specified offset, interprets them as a 24-bit unsigned integer according to the provided encoding (e.g., ENC_LITTLE_ENDIAN or ENC_BIG_ENDIAN), and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
encoding | The encoding to use when interpreting the bytes. |
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.
Reads four bytes from the given tvbuff_t at the specified offset, interprets them as a 32-bit unsigned integer according to the provided encoding (e.g., ENC_LITTLE_ENDIAN or ENC_BIG_ENDIAN), and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
encoding | The encoding to use when interpreting the bytes. |
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.
Reads five bytes from the given tvbuff_t at the specified offset, interprets them as a 40-bit unsigned integer according to the provided encoding (e.g., ENC_LITTLE_ENDIAN or ENC_BIG_ENDIAN), and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
encoding | The encoding to use when interpreting the bytes. |
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.
Reads six bytes from the given tvbuff_t at the specified offset, interprets them as a 48-bit unsigned integer according to the provided encoding (e.g., ENC_LITTLE_ENDIAN or ENC_BIG_ENDIAN), and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
encoding | The encoding to use when interpreting the bytes. |
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.
Reads seven bytes from the given tvbuff_t at the specified offset, interprets them as a 56-bit unsigned integer according to the provided encoding (e.g., ENC_LITTLE_ENDIAN or ENC_BIG_ENDIAN), and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
encoding | The encoding to use when interpreting the bytes. |
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.
Reads eight bytes from the given tvbuff_t at the specified offset, interprets them as a 64-bit unsigned integer according to the provided encoding (e.g., ENC_LITTLE_ENDIAN or ENC_BIG_ENDIAN), and returns the value in host byte order.
If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
encoding | The encoding to use when interpreting the bytes. |
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.
Reads up to eight bytes from the given tvbuff_t at the specified offset, interprets them as a variable-length unsigned integer according to the provided encoding (e.g., ENC_LITTLE_ENDIAN or ENC_BIG_ENDIAN), and returns the value in host byte order.
If the offset or length is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to begin reading. |
length | The number of bytes to read (must be between 1 and 8). |
encoding | The encoding to use when interpreting the bytes. |
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.
This function reads a single byte from the given tvbuff_t at the specified offset. If the offset is out of bounds, or another error occurs, an exception will be thrown.
tvb | The tvbuff_t to read from. |
offset | The offset within the buffer to read the byte. |
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.
Parses a variable-length integer from the given tvbuff_t starting at offset
, using up to maxlen
bytes. The encoding format is specified by encoding
, which must be one of the supported ENC_VARINT_* types (e.g., ENC_VARINT_PROTOBUF, ENC_VARINT_QUIC, ENC_VARINT_ZIGZAG, ENC_VARINT_SDNV).
Each byte in the varint, except the last, has its most significant bit (MSB) set, indicating continuation. For example, the sequence 0xAC 0x02
encodes the value 300.
If parsing succeeds, the decoded value is stored in value
, and the function returns the number of bytes consumed. If parsing fails, returns 0.
tvb | The tvbuff_t from which to extract the varint. |
offset | The offset in the tvbuff where parsing begins. |
maxlen | The maximum number of bytes to inspect. |
value | Pointer to a uint64_t where the parsed value will be stored. |
encoding | The encoding format (one of the ENC_VARINT_* constants). |
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.
Copies length
bytes from the given tvbuff_t starting at the specified offset into the caller-provided target
buffer. Unlike tvb_get_ptr, this function handles fragmented tvbuffs intelligently and performs chunked copying when needed.
The target buffer must be pre-allocated by the caller. This function does not allocate or free memory.
tvb | The tvbuff_t to read from. |
target | A pointer to the destination buffer to copy into. |
offset | The offset within the buffer to begin copying. |
length | The number of bytes to copy. |
target
pointer passed in, for convenience.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.
Allocates a buffer using the provided wmem_allocator_t scope, copies length
bytes from the given tvbuff_t starting at offset
into that buffer using tvb_memcpy, and returns a pointer to the new buffer.
Throws an exception if the tvbuff is too short for the requested range.
If scope
is NULL, it is the caller’s responsibility to free the allocated memory using wmem_free()
. Otherwise, the allocated memory is automatically freed when the allocator's lifetime ends.
scope | The memory allocator scope for buffer allocation, or NULL. |
tvb | The tvbuff_t to read data from. |
offset | The byte offset within the tvbuff to start copying. |
length | The number of bytes to copy. |
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.
Checks whether there are at least size
bytes remaining in the tvbuff_t starting at offset
. If so, compares those bytes to the reference buffer str
using memcmp
. Returns 0 if the buffers match, -1 otherwise.
If there are fewer than size
bytes remaining in the tvbuff, returns -1 without performing the comparison.
tvb | The tvbuff_t to read from. |
offset | The offset in the tvbuff where the comparison begins. |
str | The reference buffer to compare against. |
size | The number of bytes to compare. |
str
, -1 otherwise. Create a new chained tvbuff from a parent and backing buffer.
This function constructs a new tvbuff_t that is logically layered on top of a backing buffer. The parent buffer provides context (e.g., metadata or ownership), while the backing buffer supplies the actual data. This is useful for creating virtual buffers that reference or reinterpret existing data without duplication.
parent | The parent tvbuff_t providing context. |
backing | The backing tvbuff_t containing actual data. |
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.
This function creates a new tvbuff_t that is a child of the given parent buffer but uses the specified data buffer directly.
parent | The parent tvbuff_t for context and ownership. |
data | Pointer to the data buffer to use. |
length | The length of the data buffer. |
reported_length | The length to report for this tvbuff (may differ from actual length). |
WS_DLL_PUBLIC tvbuff_t * tvb_new_composite | ( | void | ) |
Create an empty composite tvbuff.
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 boundaries.
Bits are counted from most significant bit (MSB = 0) to least significant bit (LSB = 7) within each octet. The returned tvbuff is newly allocated and octet-aligned.
tvb | The source tvbuff to extract bits from. |
bit_offset | The starting bit offset within the tvbuff. |
no_of_bits | The number of bits to extract. |
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 significant bit (LSB = 0) to most significant bit (MSB = 7) within each octet.
tvb | The source tvbuff to extract bits from. |
bit_offset | The starting bit offset within the tvbuff. |
no_of_bits | The number of bits to extract. |
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.
Create a tvbuff backed by existing data. Can throw ReportedBoundsError. Normally, a callback to free the data should be registered using tvb_set_free_cb(); when this tvbuff is freed, your callback will be called, allowing you to free your original data.
data | Pointer to the existing data buffer. |
length | Length of the data buffer in bytes. |
reported_length | The length reported for this tvbuff (may differ from actual length). |
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.
Similar to tvb_new_subset_length_caplen() but with captured length calculated to fit within the existing captured length and the specified reported length.
Can throw ReportedBoundsError.
backing | The backing tvbuff. |
backing_offset | The offset into the backing tvbuff. |
reported_length | The reported length for the new subset. |
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.
Create a tvbuff that's a subset of another tvbuff, with the captured length explicitly given. You probably want tvb_new_subset_length() or tvb_new_subset_remaining() instead.
backing | The backing tvbuff onto which the new tvbuff is a view |
backing_offset | If positive, is the offset from the beginning of the backing tvbuff at which the new tvbuff's data begins, and, if negative, is the offset from the end of the backing tvbuff at which the new tvbuff's data begins. |
backing_length | The length of the data to include in the new tvbuff, starting with the byte at 'backing_offset'; if -1, it means "to the end of the backing tvbuff". It can be 0, although the usefulness of the buffer would be rather limited. The length actually included will be no more than the reported length. |
reported_length | The reported length of the new tvbuff; if -1, it means "the reported length to the end of the backing tvbuff". It can be 0, although the usefulness of the buffer would be rather limited. |
Similar to tvb_new_subset_length_caplen() but with backing_length and reported_length set to -1.
Can throw ReportedBoundsError.
backing | The backing tvbuff. |
backing_offset | The offset into the backing tvbuff. |
WS_DLL_PUBLIC bool tvb_offset_exists | ( | const tvbuff_t * | tvb, |
const int | offset | ||
) |
Checks (without throwing an exception) whether the offset exists in the buffer.
tvb | The tvbuff to check. |
offset | The offset to verify. |
WS_DLL_PUBLIC unsigned tvb_offset_from_real_beginning | ( | const tvbuff_t * | tvb | ) |
Returns the offset from the beginning of the real (backing) buffer.
This function computes the offset of the given tvbuff_t relative to the start of its underlying real data buffer. This is useful for determining how far into the original data a virtual or subset buffer begins.
tvb | The tvbuff_t to query. |
WS_DLL_PUBLIC int tvb_raw_offset | ( | tvbuff_t * | tvb | ) |
Returns the offset from the first byte of real data.
This function returns the offset within the tvbuff where the actual underlying data begins. This offset is useful when dealing with virtual or chained buffers that reference subsets or views of other buffers.
tvb | The tvbuff to query. |
WS_DLL_PUBLIC unsigned tvb_reported_length | ( | const tvbuff_t * | tvb | ) |
Get reported length of buffer.
tvb | The tvbuff to query. |
WS_DLL_PUBLIC int tvb_reported_length_remaining | ( | const tvbuff_t * | tvb, |
const int | offset | ||
) |
Computes bytes of reported packet data from the given offset to the end of buffer.
The offset can be negative to indicate bytes from the end of the buffer. The function returns 0 if the offset is at the end of the buffer or out of bounds. No exception is thrown.
tvb | The tvbuff to query. |
offset | The offset from which to compute the remaining bytes (can be negative). |
Attach a "real" tvbuff to a parent tvbuff.
This connection is used during a tvb_free_chain(). The "child" "real" tvbuff acts as if it is part of the chain-of-creation of the parent tvbuff, although it isn't.
This is useful if you need to take the data from some tvbuff, run some operation on it, like decryption or uncompression, and make a new tvbuff from it, yet want the new tvbuff to be part of the chain.
The reality is that the new tvbuff is part of the "chain of creation", but in a way that these tvbuff routines are ignorant of. Use this function to make the tvbuff routines knowledgeable of this fact.
parent | The parent tvbuff to which the child tvbuff will be attached. |
child | The "real" child tvbuff to attach to the parent. |
WS_DLL_PUBLIC void tvb_set_fragment | ( | tvbuff_t * | tvb | ) |
Set the "this is a fragment" flag on a tvbuff.
Setting this flag changes the error handling behavior during buffer bounds checks. Specifically, it causes a FragmentBoundsError
to be thrown instead of either ContainedBoundsError
or ReportedBoundsError
when bounds violations occur.
tvb | The tvbuff_t to mark as a fragment. |
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.
One argument is passed to that callback — a void* that points to the real data. Obviously, this only applies to a "real" tvbuff.
tvb | The tvbuff for which to set the free callback. |
func | The callback function to invoke when the tvbuff is freed. |
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.
Used for protocols whose headers contain an explicit length and where the calling dissector's payload may include padding as well as the packet for this protocol.
Also adjusts the available and contained length accordingly.
tvb | The tvbuff whose reported length is to be set. |
reported_length | The new reported length. |
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.
Scans the given tvbuff_t starting at offset
, skipping up to maxlength
bytes as long as each byte matches the specified value ch
. Returns the offset of the first non-matching byte or offset + maxlength
if all scanned bytes match.
This function does not throw exceptions if the scan reaches beyond the tvbuff boundary; it safely stops at the end of the buffer.
tvb | The tvbuff_t to scan. |
offset | The offset in the tvbuff to begin scanning. |
maxlength | The maximum number of bytes to scan. |
ch | The byte value to skip. |
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.
Scans the given tvbuff_t starting at offset
, skipping up to maxlength
bytes, and returns the offset of the first non-whitespace character found. Whitespace characters include space (0x20), tab (0x09), carriage return (0x0D), and line feed (0x0A).
The scan stops at offset + maxlength - 1
, whichever comes first.
tvb | The tvbuff_t to scan. |
offset | The offset in the tvbuff to begin skipping whitespace. |
maxlength | The maximum number of bytes to scan from the offset. |
offset + maxlength
if none found.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.
Scans the given tvbuff_t starting at offset
, skipping over ASCII whitespace characters (space, tab, carriage return, line feed) until a non-whitespace byte is found or the end of the buffer is reached.
tvb | The tvbuff_t to scan. |
offset | The offset in the tvbuff to begin skipping. |
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.
Checks whether there are at least size
bytes remaining in the tvbuff_t starting at offset
. If so, compares those bytes to the given reference string str
using g_ascii_strncasecmp
. Returns 0 if the strings match (case-insensitively), -1 otherwise.
If there are fewer than size
bytes remaining in the tvbuff, returns -1 without performing the comparison.
tvb | The tvbuff_t to read from. |
offset | The offset in the tvbuff where the comparison begins. |
str | The reference string to compare against. |
size | The number of bytes to compare. |
str
(case-insensitively), -1 otherwise.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.
Checks whether there are at least size
bytes remaining in the tvbuff_t starting at offset
. If so, compares those bytes to the given reference string str
using strncmp
. Returns 0 if the strings match, -1 otherwise.
If there are fewer than size
bytes remaining in the tvbuff, returns -1 without calling strncmp
.
tvb | The tvbuff_t to read from. |
offset | The offset in the tvbuff where the comparison begins. |
str | The reference string to compare against. |
size | The number of bytes to compare. |
str
, -1 otherwise. 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.
Searches for the end of a zero-terminated string starting at the given offset, scanning up to maxlength
characters. If maxlength
is -1, the search continues to the end of the tvbuff.
Returns -1 if the end of string (EOS) is not found within the specified range.
tvb | The tvbuff_t to read from. |
offset | The offset in the tvbuff to begin searching. |
maxlength | The maximum number of characters to search, or -1 to search to the end. |
WS_DLL_PUBLIC unsigned tvb_strsize | ( | tvbuff_t * | tvb, |
const int | offset | ||
) |
Determine the size of a NUL-terminated string in a tvbuff.
Finds the size of a stringz (NUL-terminated string) by searching for the terminating NUL byte starting at the given offset. The returned size includes the terminating NUL.
If the NUL is not found, this function throws the appropriate exception.
tvb | The tvbuff_t to read from. |
offset | The offset in the tvbuff to begin searching. |
Deprecated interface for uncompressing data from a tvbuff using zlib.
Uncompresses comprlen
bytes of compressed data from the given tvbuff_t starting at offset
, returning a new tvbuff_t containing the uncompressed data.
This function is deprecated and should not be used in new code. Prefer tvb_uncompress_zlib for improved clarity and maintainability.
tvb | The tvbuff_t containing compressed data. |
offset | The offset in the tvbuff where compressed data begins. |
comprlen | The number of bytes of compressed data to uncompress. |
Uncompress Brotli-compressed data from a tvbuff.
Uncompresses comprlen
bytes of Brotli-compressed data from the given tvbuff_t starting at offset
. If successful, returns a new tvbuff_t containing the uncompressed data. If uncompression fails, returns NULL.
The returned tvbuff must be either:
tvb_free()
, orFor simpler ownership handling, consider using tvb_child_uncompress_brotli.
tvb | The tvbuff_t containing Brotli-compressed data. |
offset | The offset in the tvbuff where compressed data begins. |
comprlen | The number of bytes of compressed data to uncompress. |
Uncompress Microsoft Plain LZ77-compressed data from a tvbuff.
Uncompresses comprlen
bytes of Microsoft Plain LZ77-compressed data from the given tvbuff_t starting at offset
. If successful, returns a new tvbuff_t containing the uncompressed data. If uncompression fails, returns NULL.
The returned tvbuff must be either:
tvb_free()
, orFor simpler ownership handling, consider using tvb_child_uncompress_lz77.
tvb | The tvbuff_t containing LZ77-compressed data. |
offset | The offset in the tvbuff where compressed data begins. |
comprlen | The number of bytes of compressed data to uncompress. |
Uncompress Microsoft LZ77+Huffman-compressed data from a tvbuff.
Uncompress comprlen
bytes of Microsoft LZ77+Huffman-compressed data from the given tvbuff_t starting at offset
. If successful, returns a new tvbuff_t containing the uncompressed data. If uncompression fails, returns NULL.
The returned tvbuff must be either:
tvb_free()
, orFor simpler ownership handling, consider using tvb_child_uncompress_lz77huff.
tvb | The tvbuff_t containing LZ77+Huffman-compressed data. |
offset | The offset in the tvbuff where compressed data begins. |
comprlen | The number of bytes of compressed data to uncompress. |
Uncompress Microsoft LZNT1-compressed data from a tvbuff.
Uncompress comprlen
bytes of Microsoft LZNT1-compressed data from the given tvbuff_t starting at offset
. If successful, returns a new tvbuff_t containing the uncompressed data. If uncompression fails, returns NULL.
The returned tvbuff must be either:
tvb_free()
, orFor simpler ownership handling, consider using tvb_child_uncompress_lznt1.
tvb | The tvbuff_t containing LZNT1-compressed data. |
offset | The offset in the tvbuff where compressed data begins. |
comprlen | The number of bytes of compressed data to uncompress. |
Uncompress Snappy-compressed data from a tvbuff.
Uncompress comprlen
bytes of Snappy-compressed data from the given tvbuff_t starting at offset
. If successful, returns a new tvbuff_t containing the uncompressed data. If uncompression fails, returns NULL.
The returned tvbuff must be either:
tvb_free()
, ortvb | The tvbuff_t containing Snappy-compressed data. |
offset | The offset in the tvbuff where compressed data begins. |
comprlen | The number of bytes of compressed data to uncompress. |
Uncompress zlib-compressed data from a tvbuff.
Uncompresses comprlen
bytes of zlib-compressed data from the given tvbuff_t starting at offset
. If successful, returns a new tvbuff_t containing the uncompressed data. If uncompression fails, returns NULL.
The returned tvbuff must be either:
tvb_free()
, orFor simpler ownership handling, consider using tvb_child_uncompress.
tvb | The tvbuff_t containing compressed data. |
offset | The offset in the tvbuff where compressed data begins. |
comprlen | The number of bytes of compressed data to uncompress. |
Uncompress Zstandard (ZSTD)-compressed data from a tvbuff.
Uncompress comprlen
bytes of ZSTD-compressed data from the given tvbuff_t starting at offset
. If successful, returns a new tvbuff_t containing the uncompressed data. If uncompression fails, returns NULL.
The returned tvbuff must be either:
tvb_free()
, orFor simpler ownership handling, consider using tvb_child_uncompress_zstd.
tvb | The tvbuff_t containing ZSTD-compressed data. |
offset | The offset in the tvbuff where compressed data begins. |
comprlen | The number of bytes of compressed data to uncompress. |
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.
Finds the size of a stringz (NUL-terminated string) encoded in UCS-2 or UTF-16 by searching for the terminating 16-bit NUL starting at the given offset. The returned size includes the terminating NUL.
If the terminating NUL is not found, this function throws the appropriate exception.
tvb | The tvbuff_t to read from. |
offset | The offset in the tvbuff to begin searching. |
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.
Iterates over the specified portion of the tvbuff_t starting at offset
and spanning length
bytes (or until the end if length
is -1), verifying that the data forms valid UTF-8 sequences consisting entirely of printable characters.
Partial UTF-8 sequences at the end of the range are considered invalid, and in such cases the function returns false.
tvb | The tvbuff_t to check. |
offset | The offset within the tvbuff where the check begins. |
length | The number of bytes to check, or -1 to check until the end. |
false
otherwise.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.
Searches the given tvbuff_t starting at offset
for any of the bytes defined in the pre-compiled pattern
(compiled using ws_mempbrk_compile()
). The search scans at most maxlength
bytes.
This function will not throw an exception, even if maxlength
exceeds the tvbuff boundary. In such cases, -1 is returned if the boundary is reached before finding any needle.
tvb | The tvbuff_t to search. |
offset | The offset within the tvbuff to begin searching. |
maxlength | The maximum number of bytes to search. |
pattern | The pre-compiled pattern of needles to search for. |
found_needle | Pointer to an unsigned char that will be set to the found needle value. |
const unsigned char dgt_set_t::out[16] |
Output character for each BCD nibble value (0x0–0xF).