15 #include <wireshark.h>
24 #define ASSERT_FTYPE_NOT_REACHED(ft) \
25 ws_error("Invalid field type '%s'.", ftype_name(ft))
80 #define FT_IS_INT32(ft) \
86 #define FT_IS_INT64(ft) \
87 ((ft) == FT_INT40 || \
92 #define FT_IS_INT(ft) (FT_IS_INT32(ft) || FT_IS_INT64(ft))
94 #define FT_IS_UINT32(ft) \
97 (ft) == FT_UINT16 || \
98 (ft) == FT_UINT24 || \
99 (ft) == FT_UINT32 || \
102 #define FT_IS_UINT64(ft) \
103 ((ft) == FT_UINT40 || \
104 (ft) == FT_UINT48 || \
105 (ft) == FT_UINT56 || \
108 #define FT_IS_UINT(ft) (FT_IS_UINT32(ft) || FT_IS_UINT64(ft))
110 #define FT_IS_INTEGER(ft) (FT_IS_INT(ft) || FT_IS_UINT(ft))
112 #define FT_IS_FLOATING(ft) ((ft) == FT_FLOAT || (ft) == FT_DOUBLE)
114 #define FT_IS_TIME(ft) \
115 ((ft) == FT_ABSOLUTE_TIME || (ft) == FT_RELATIVE_TIME)
117 #define FT_IS_STRING(ft) \
118 ((ft) == FT_STRING || (ft) == FT_STRINGZ || (ft) == FT_STRINGZPAD || \
119 (ft) == FT_STRINGZTRUNC || (ft) == FT_UINT_STRING)
121 #define FT_IS_SCALAR(ft) ((ft) == FT_INT64 || (ft) == FT_DOUBLE)
124 #define FT_ETHER_LEN 6
125 #define FT_GUID_LEN 16
126 #define FT_IPv4_LEN 4
127 #define FT_IPv6_LEN 16
128 #define FT_IPXNET_LEN 4
129 #define FT_EUI64_LEN 8
130 #define FT_AX25_ADDR_LEN 7
131 #define FT_VINES_ADDR_LEN 6
132 #define FT_FCWWN_LEN 8
133 #define FT_VARINT_MAX_LEN 10
135 typedef enum ftenum ftenum_t;
137 enum ft_framenum_type {
140 FT_FRAMENUM_RESPONSE,
143 FT_FRAMENUM_RETRANS_PREV,
144 FT_FRAMENUM_RETRANS_NEXT,
145 FT_FRAMENUM_NUM_TYPES
148 typedef enum ft_framenum_type ft_framenum_type_t;
168 typedef bool ft_bool_t;
179 typedef enum ftrepr ftrepr_t;
183 ftypes_initialize(
void);
186 ftypes_register_pseudofields(
void);
193 ftype_similar_types(
const enum ftenum ftype_a,
const enum ftenum ftype_b);
198 ftype_name(ftenum_t ftype);
205 ftype_pretty_name(ftenum_t ftype);
209 ftype_wire_size(ftenum_t ftype);
213 ftype_can_length(
enum ftenum ftype);
217 ftype_can_slice(
enum ftenum ftype);
221 ftype_can_eq(
enum ftenum ftype);
225 ftype_can_cmp(
enum ftenum ftype);
229 ftype_can_bitwise_and(
enum ftenum ftype);
233 ftype_can_unary_minus(
enum ftenum ftype);
237 ftype_can_add(
enum ftenum ftype);
241 ftype_can_subtract(
enum ftenum ftype);
245 ftype_can_multiply(
enum ftenum ftype);
249 ftype_can_divide(
enum ftenum ftype);
253 ftype_can_modulo(
enum ftenum ftype);
257 ftype_can_contains(
enum ftenum ftype);
261 ftype_can_matches(
enum ftenum ftype);
265 ftype_can_is_zero(
enum ftenum ftype);
269 ftype_can_is_negative(
enum ftenum ftype);
273 ftype_can_val_to_sinteger(
enum ftenum ftype);
277 ftype_can_val_to_uinteger(
enum ftenum ftype);
281 ftype_can_val_to_sinteger64(
enum ftenum ftype);
285 ftype_can_val_to_uinteger64(
enum ftenum ftype);
308 fvalue_new(ftenum_t ftype);
316 fvalue_init(
fvalue_t *fv, ftenum_t ftype);
328 fvalue_from_literal(ftenum_t ftype,
const char *s,
bool allow_partial_value,
char **err_msg);
332 fvalue_from_string(ftenum_t ftype,
const char *s,
size_t len,
char **err_msg);
335 fvalue_from_charconst(ftenum_t ftype,
unsigned long number,
char **err_msg);
338 fvalue_from_sinteger64(ftenum_t ftype,
const char *s, int64_t number,
char **err_msg);
341 fvalue_from_uinteger64(ftenum_t ftype,
const char *s, uint64_t number,
char **err_msg);
344 fvalue_from_floating(ftenum_t ftype,
const char *s,
double number,
char **err_msg);
357 #define fvalue_to_debug_repr(scope, fv) \
358 fvalue_to_string_repr(scope, fv, FTREPR_DFILTER, 0)
360 WS_DLL_PUBLIC
enum ft_result
361 fvalue_to_uinteger(
const fvalue_t *fv, uint32_t *repr);
363 WS_DLL_PUBLIC
enum ft_result
364 fvalue_to_sinteger(
const fvalue_t *fv, int32_t *repr);
366 WS_DLL_PUBLIC
enum ft_result
367 fvalue_to_uinteger64(
const fvalue_t *fv, uint64_t *repr);
369 WS_DLL_PUBLIC
enum ft_result
370 fvalue_to_sinteger64(
const fvalue_t *fv, int64_t *repr);
372 WS_DLL_PUBLIC
enum ft_result
373 fvalue_to_double(
const fvalue_t *fv,
double *repr);
375 WS_DLL_PUBLIC ftenum_t
376 fvalue_type_ftenum(
const fvalue_t *fv);
380 fvalue_type_name(
const fvalue_t *fv);
385 fvalue_set_bytes(
fvalue_t *fv, GBytes *value);
389 fvalue_set_byte_array(
fvalue_t *fv, GByteArray *value);
393 fvalue_set_bytes_data(
fvalue_t *fv,
const void *data,
size_t size);
397 fvalue_set_fcwwn(
fvalue_t *fv,
const uint8_t *value);
401 fvalue_set_ax25(
fvalue_t *fv,
const uint8_t *value);
405 fvalue_set_vines(
fvalue_t *fv,
const uint8_t *value);
409 fvalue_set_ether(
fvalue_t *fv,
const uint8_t *value);
421 fvalue_set_string(
fvalue_t *fv,
const char *value);
429 fvalue_set_protocol(
fvalue_t *fv,
tvbuff_t *value,
const char *name,
int length);
433 fvalue_set_uinteger(
fvalue_t *fv, uint32_t value);
437 fvalue_set_sinteger(
fvalue_t *fv, int32_t value);
441 fvalue_set_uinteger64(
fvalue_t *fv, uint64_t value);
445 fvalue_set_sinteger64(
fvalue_t *fv, int64_t value);
449 fvalue_set_floating(
fvalue_t *fv,
double value);
466 fvalue_get_bytes_size(
fvalue_t *fv);
471 fvalue_get_bytes_data(
fvalue_t *fv);
503 fvalue_get_uinteger64(
fvalue_t *fv);
507 fvalue_get_sinteger64(
fvalue_t *fv);
559 fvalue_is_negative(
const fvalue_t *a);
575 fvalue_unary_minus(
const fvalue_t *fv,
char **err_msg);
Definition: guid-utils.h:22
Definition: ftypes-int.h:98
Definition: ftypes-int.h:17
Definition: wmem_allocator.h:27
Definition: wmem_strbuf.h:42
Definition: inet_cidr.h:22
Definition: inet_cidr.h:27
Definition: tvbuff-int.h:35