Bug Summary

File:builds/wireshark/wireshark/epan/ftypes/ftypes.c
Warning:line 234, column 14
Value stored to 's' during its initialization is never read

Annotated Source Code

Press '?' to see keyboard shortcuts

clang -cc1 -cc1 -triple x86_64-pc-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name ftypes.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -fno-delete-null-pointer-checks -mframe-pointer=all -relaxed-aliasing -fmath-errno -ffp-contract=on -fno-rounding-math -ffloat16-excess-precision=fast -fbfloat16-excess-precision=fast -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fdebug-compilation-dir=/builds/wireshark/wireshark/build -fcoverage-compilation-dir=/builds/wireshark/wireshark/build -resource-dir /usr/lib/llvm-18/lib/clang/18 -isystem /usr/include/glib-2.0 -isystem /usr/lib/x86_64-linux-gnu/glib-2.0/include -D G_DISABLE_DEPRECATED -D G_DISABLE_SINGLE_INCLUDES -D WS_BUILD_DLL -D WS_DEBUG -D WS_DEBUG_UTF_8 -I /builds/wireshark/wireshark/build -I /builds/wireshark/wireshark -I /builds/wireshark/wireshark/include -I /builds/wireshark/wireshark/build/epan/ftypes -I /builds/wireshark/wireshark/epan/ftypes -I /builds/wireshark/wireshark/epan -D _GLIBCXX_ASSERTIONS -internal-isystem /usr/lib/llvm-18/lib/clang/18/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -fmacro-prefix-map=/builds/wireshark/wireshark/= -fmacro-prefix-map=/builds/wireshark/wireshark/build/= -fmacro-prefix-map=../= -Wno-format-truncation -Wno-format-nonliteral -Wno-pointer-sign -std=gnu11 -ferror-limit 19 -fvisibility=hidden -fwrapv -fstrict-flex-arrays=3 -stack-protector 2 -fstack-clash-protection -fcf-protection=full -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fexceptions -fcolor-diagnostics -analyzer-output=html -dwarf-debug-flags /usr/lib/llvm-18/bin/clang -### --analyze -x c -D G_DISABLE_DEPRECATED -D G_DISABLE_SINGLE_INCLUDES -D WS_BUILD_DLL -D WS_DEBUG -D WS_DEBUG_UTF_8 -I /builds/wireshark/wireshark/build -I /builds/wireshark/wireshark -I /builds/wireshark/wireshark/include -I /builds/wireshark/wireshark/build/epan/ftypes -I /builds/wireshark/wireshark/epan/ftypes -I /builds/wireshark/wireshark/epan -isystem /usr/include/glib-2.0 -isystem /usr/lib/x86_64-linux-gnu/glib-2.0/include -fvisibility=hidden -fexcess-precision=fast -fstrict-flex-arrays=3 -fstack-clash-protection -fcf-protection=full -D _GLIBCXX_ASSERTIONS -fstack-protector-strong -fno-delete-null-pointer-checks -fno-strict-overflow -fno-strict-aliasing -fexceptions -Wno-format-truncation -Wno-format-nonliteral -fdiagnostics-color=always -Wno-pointer-sign -fmacro-prefix-map=/builds/wireshark/wireshark/= -fmacro-prefix-map=/builds/wireshark/wireshark/build/= -fmacro-prefix-map=../= -std=gnu11 -fPIC /builds/wireshark/wireshark/epan/ftypes/ftypes.c -o /builds/wireshark/wireshark/sbout/2024-12-03-100307-3935-1 -Xclang -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /builds/wireshark/wireshark/sbout/2024-12-03-100307-3935-1 -x c /builds/wireshark/wireshark/epan/ftypes/ftypes.c
1/*
2 * Wireshark - Network traffic analyzer
3 * By Gerald Combs <[email protected]>
4 * Copyright 2001 Gerald Combs
5 *
6 * SPDX-License-Identifier: GPL-2.0-or-later
7 */
8
9#include "config.h"
10
11#include "ftypes-int.h"
12
13#include <wsutil/ws_assert.h>
14
15/* Keep track of ftype_t's via their ftenum number */
16const ftype_t* type_list[FT_ENUM_SIZE + 1];
17
18/* Initialize the ftype module. */
19void
20ftypes_initialize(void)
21{
22 ftype_register_bytes();
23 ftype_register_double();
24 ftype_register_ieee_11073_float();
25 ftype_register_integers();
26 ftype_register_ipv4();
27 ftype_register_ipv6();
28 ftype_register_guid();
29 ftype_register_none();
30 ftype_register_string();
31 ftype_register_time();
32 ftype_register_tvbuff();
33}
34
35void
36ftypes_register_pseudofields(void)
37{
38 static int proto_ftypes;
39
40 proto_ftypes = proto_register_protocol(
41 "Wireshark Field/Fundamental Types",
42 "Wireshark FTypes",
43 "_ws.ftypes");
44
45 ftype_register_pseudofields_bytes(proto_ftypes);
46 ftype_register_pseudofields_double(proto_ftypes);
47 ftype_register_pseudofields_ieee_11073_float(proto_ftypes);
48 ftype_register_pseudofields_integer(proto_ftypes);
49 ftype_register_pseudofields_ipv4(proto_ftypes);
50 ftype_register_pseudofields_ipv6(proto_ftypes);
51 ftype_register_pseudofields_guid(proto_ftypes);
52 ftype_register_pseudofields_none(proto_ftypes);
53 ftype_register_pseudofields_string(proto_ftypes);
54 ftype_register_pseudofields_time(proto_ftypes);
55 ftype_register_pseudofields_tvbuff(proto_ftypes);
56
57 proto_set_cant_toggle(proto_ftypes);
58}
59
60/* Each ftype_t is registered via this function */
61void
62ftype_register(enum ftenum ftype, const ftype_t *ft)
63{
64 /* Check input */
65 ws_assert(ftype < FT_NUM_TYPES)do { if ((1) && !(ftype < FT_NUM_TYPES)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 65, __func__, "assertion failed: %s"
, "ftype < FT_NUM_TYPES"); } while (0)
;
66 ws_assert(ftype == ft->ftype)do { if ((1) && !(ftype == ft->ftype)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 66, __func__, "assertion failed: %s"
, "ftype == ft->ftype"); } while (0)
;
67
68 /* Don't re-register. */
69 ws_assert(type_list[ftype] == NULL)do { if ((1) && !(type_list[ftype] == ((void*)0))) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 69, __func__, "assertion failed: %s"
, "type_list[ftype] == ((void*)0)"); } while (0)
;
70
71 type_list[ftype] = ft;
72}
73
74
75/* from README.dissector:
76 Note that the formats used must all belong to the same list as defined below:
77 - FT_INT8, FT_INT16, FT_INT24 and FT_INT32, FT_CHAR, FT_UINT8, FT_UINT16,
78 FT_UINT24, FT_UINT32, FT_IPXNET, FT_FRAMENUM, FT_INT40, FT_INT48, FT_INT56
79 FT_INT64, FT_UINT40, FT_UINT48, FT_UINT56, FT_UINT64 and FT_EUI64
80 - FT_ABSOLUTE_TIME and FT_RELATIVE_TIME
81 - FT_STRING, FT_STRINGZ, FT_UINT_STRING, FT_STRINGZPAD, FT_STRINGZTRUNC, and FT_AX25
82 - FT_FLOAT, FT_DOUBLE, FT_IEEE_11073_SFLOAT and FT_IEEE_11073_FLOAT
83 - FT_BYTES, FT_UINT_BYTES, FT_ETHER, FT_VINES and FT_FCWWN
84 - FT_OID, FT_REL_OID and FT_SYSTEM_ID
85
86 We thus divide the types into equivalence classes of compatible types.
87 The same field abbreviation can be used by more than one field, even of
88 different types, so long as the types are compatible.
89
90 This function returns the canonical representative of a type. It can
91 be used to check if two fields are compatible.
92
93 XXX - Currently epan/dfilter/semcheck.c has its own implementation of
94 compatible types.
95*/
96static enum ftenum
97same_ftype(const enum ftenum ftype)
98{
99 switch (ftype) {
100 case FT_INT8:
101 case FT_INT16:
102 case FT_INT24:
103 case FT_INT32:
104 case FT_CHAR:
105 case FT_UINT8:
106 case FT_UINT16:
107 case FT_UINT24:
108 case FT_UINT32:
109 case FT_IPXNET:
110 case FT_FRAMENUM:
111 case FT_INT40:
112 case FT_INT48:
113 case FT_INT56:
114 case FT_INT64:
115 case FT_UINT40:
116 case FT_UINT48:
117 case FT_UINT56:
118 case FT_UINT64:
119 case FT_EUI64: /* Really byte strings, but in ZigBee are stored in reverse order / Little-Endian so treated as integer */
120 return FT_UINT64;
121
122 case FT_STRING:
123 case FT_STRINGZ:
124 case FT_UINT_STRING:
125 case FT_STRINGZPAD:
126 case FT_STRINGZTRUNC:
127 case FT_AX25:
128 return FT_STRING;
129
130 case FT_FLOAT:
131 case FT_DOUBLE:
132 return FT_DOUBLE;
133
134 case FT_BYTES:
135 case FT_UINT_BYTES:
136 case FT_ETHER:
137 case FT_VINES:
138 case FT_FCWWN:
139 return FT_BYTES;
140
141 case FT_OID:
142 case FT_REL_OID:
143 case FT_SYSTEM_ID:
144 /* XXX - dfilter/semcheck.c treats this group as compatible with BYTES */
145 return FT_OID;
146
147 /* XXX: the following are unique for now */
148 case FT_IPv4:
149 case FT_IPv6:
150 case FT_IEEE_11073_SFLOAT: /* XXX - should be able to compare with DOUBLE (#19011) */
151 case FT_IEEE_11073_FLOAT: /* XXX - should be able to compare with DOUBLE */
152
153 /* everything else is unique */
154 /* XXX - README.dissector claims the time types are compatible. */
155 default:
156 return ftype;
157 }
158}
159
160/* given two types, are they similar - for example can two
161 * duplicate fields be registered of these two types. */
162bool_Bool
163ftype_similar_types(const enum ftenum ftype_a, const enum ftenum ftype_b)
164{
165 return (same_ftype(ftype_a) == same_ftype(ftype_b));
166}
167
168/* Returns a string representing the name of the type. Useful
169 * for glossary production. */
170const char*
171ftype_name(enum ftenum ftype)
172{
173 const ftype_t *ft;
174 const char *s = "(null)";
175
176 FTYPE_LOOKUP(ftype, ft)do { if ((1) && !(ftype < FT_NUM_TYPES)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 176, __func__, "assertion failed: %s"
, "ftype < FT_NUM_TYPES"); } while (0); ft = type_list[ftype
];
;
177 switch (ft->ftype) {
178 case FT_NONE: s = "FT_NONE"; break;
179 case FT_PROTOCOL: s = "FT_PROTOCOL"; break;
180 case FT_BOOLEAN: s = "FT_BOOLEAN"; break;
181 case FT_CHAR: s = "FT_CHAR"; break;
182 case FT_UINT8: s = "FT_UINT8"; break;
183 case FT_UINT16: s = "FT_UINT16"; break;
184 case FT_UINT24: s = "FT_UINT24"; break;
185 case FT_UINT32: s = "FT_UINT32"; break;
186 case FT_UINT40: s = "FT_UINT40"; break;
187 case FT_UINT48: s = "FT_UINT48"; break;
188 case FT_UINT56: s = "FT_UINT56"; break;
189 case FT_UINT64: s = "FT_UINT64"; break;
190 case FT_INT8: s = "FT_INT8"; break;
191 case FT_INT16: s = "FT_INT16"; break;
192 case FT_INT24: s = "FT_INT24"; break;
193 case FT_INT32: s = "FT_INT32"; break;
194 case FT_INT40: s = "FT_INT40"; break;
195 case FT_INT48: s = "FT_INT48"; break;
196 case FT_INT56: s = "FT_INT56"; break;
197 case FT_INT64: s = "FT_INT64"; break;
198 case FT_IEEE_11073_SFLOAT: s = "FT_IEEE_11073_SFLOAT"; break;
199 case FT_IEEE_11073_FLOAT: s = "FT_IEEE_11073_FLOAT"; break;
200 case FT_FLOAT: s = "FT_FLOAT"; break;
201 case FT_DOUBLE: s = "FT_DOUBLE"; break;
202 case FT_ABSOLUTE_TIME: s = "FT_ABSOLUTE_TIME"; break;
203 case FT_RELATIVE_TIME: s = "FT_RELATIVE_TIME"; break;
204 case FT_STRING: s = "FT_STRING"; break;
205 case FT_STRINGZ: s = "FT_STRINGZ"; break;
206 case FT_UINT_STRING: s = "FT_UINT_STRING"; break;
207 case FT_ETHER: s = "FT_ETHER"; break;
208 case FT_BYTES: s = "FT_BYTES"; break;
209 case FT_UINT_BYTES: s = "FT_UINT_BYTES"; break;
210 case FT_IPv4: s = "FT_IPv4"; break;
211 case FT_IPv6: s = "FT_IPv6"; break;
212 case FT_IPXNET: s = "FT_IPXNET"; break;
213 case FT_FRAMENUM: s = "FT_FRAMENUM"; break;
214 case FT_GUID: s = "FT_GUID"; break;
215 case FT_OID: s = "FT_OID"; break;
216 case FT_EUI64: s = "FT_EUI64"; break;
217 case FT_AX25: s = "FT_AX25"; break;
218 case FT_VINES: s = "FT_VINES"; break;
219 case FT_REL_OID: s = "FT_REL_OID"; break;
220 case FT_SYSTEM_ID: s = "FT_SYSTEM_ID"; break;
221 case FT_STRINGZPAD: s = "FT_STRINGZPAD"; break;
222 case FT_FCWWN: s = "FT_FCWWN"; break;
223 case FT_STRINGZTRUNC: s = "FT_STRINGZTRUNC"; break;
224 case FT_NUM_TYPES: s = "FT_NUM_TYPES"; break;
225 case FT_SCALAR: s = "FT_SCALAR"; break;
226 }
227 return s;
228}
229
230const char*
231ftype_pretty_name(enum ftenum ftype)
232{
233 const ftype_t *ft;
234 const char *s = "(null)";
Value stored to 's' during its initialization is never read
235
236 FTYPE_LOOKUP(ftype, ft)do { if ((1) && !(ftype < FT_NUM_TYPES)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 236, __func__, "assertion failed: %s"
, "ftype < FT_NUM_TYPES"); } while (0); ft = type_list[ftype
];
;
237 switch (ft->ftype) {
238 case FT_NONE: s = "Label"; break;
239 case FT_PROTOCOL: s = "Protocol"; break;
240 case FT_BOOLEAN: s = "Boolean"; break;
241 case FT_CHAR: s = "Character (8 bits)"; break;
242 case FT_UINT8: s = "Unsigned integer (8 bits)"; break;
243 case FT_UINT16: s = "Unsigned integer (16 bits)"; break;
244 case FT_UINT24: s = "Unsigned integer (24 bits)"; break;
245 case FT_UINT32: s = "Unsigned integer (32 bits)"; break;
246 case FT_UINT40: s = "Unsigned integer (40 bits)"; break;
247 case FT_UINT48: s = "Unsigned integer (48 bits)"; break;
248 case FT_UINT56: s = "Unsigned integer (56 bits)"; break;
249 case FT_UINT64: s = "Unsigned integer (64 bits)"; break;
250 case FT_INT8: s = "Signed integer (8 bits)"; break;
251 case FT_INT16: s = "Signed integer (16 bits)"; break;
252 case FT_INT24: s = "Signed integer (24 bits)"; break;
253 case FT_INT32: s = "Signed integer (32 bits)"; break;
254 case FT_INT40: s = "Signed integer (40 bits)"; break;
255 case FT_INT48: s = "Signed integer (48 bits)"; break;
256 case FT_INT56: s = "Signed integer (56 bits)"; break;
257 case FT_INT64: s = "Signed integer (64 bits)"; break;
258 case FT_IEEE_11073_SFLOAT: s = "IEEE-11073 floating point (16-bit)"; break;
259 case FT_IEEE_11073_FLOAT: s = "IEEE-11073 Floating point (32-bit)"; break;
260 case FT_FLOAT: s = "Floating point (single-precision)"; break;
261 case FT_DOUBLE: s = "Floating point (double-precision)"; break;
262 case FT_ABSOLUTE_TIME: s = "Date and time"; break;
263 case FT_RELATIVE_TIME: s = "Time offset"; break;
264 case FT_STRING: s = "Character string"; break;
265 case FT_STRINGZ: s = "Character string"; break;
266 case FT_UINT_STRING: s = "Character string"; break;
267 case FT_ETHER: s = "Ethernet or other MAC address"; break;
268 case FT_BYTES: s = "Byte sequence"; break;
269 case FT_UINT_BYTES: s = "Byte sequence"; break;
270 case FT_IPv4: s = "IPv4 address"; break;
271 case FT_IPv6: s = "IPv6 address"; break;
272 case FT_IPXNET: s = "IPX network number"; break;
273 case FT_FRAMENUM: s = "Frame number"; break;
274 case FT_GUID: s = "Globally Unique Identifier"; break;
275 case FT_OID: s = "ASN.1 object identifier"; break;
276 case FT_EUI64: s = "EUI64 address"; break;
277 case FT_AX25: s = "AX.25 address"; break;
278 case FT_VINES: s = "VINES address"; break;
279 case FT_REL_OID: s = "ASN.1 relative object identifier"; break;
280 case FT_SYSTEM_ID: s = "OSI System-ID"; break;
281 case FT_STRINGZPAD: s = "Character string"; break;
282 case FT_FCWWN: s = "Fibre Channel WWN"; break;
283 case FT_STRINGZTRUNC: s = "Character string"; break;
284 case FT_NUM_TYPES: s = "(num types)"; break;
285 case FT_SCALAR: s = "Scalar"; break;
286 }
287 return s;
288}
289
290int
291ftype_wire_size(enum ftenum ftype)
292{
293 const ftype_t *ft;
294
295 FTYPE_LOOKUP(ftype, ft)do { if ((1) && !(ftype < FT_NUM_TYPES)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 295, __func__, "assertion failed: %s"
, "ftype < FT_NUM_TYPES"); } while (0); ft = type_list[ftype
];
;
296 return ft->wire_size;
297}
298
299bool_Bool
300ftype_can_length(enum ftenum ftype)
301{
302 const ftype_t *ft;
303
304 FTYPE_LOOKUP(ftype, ft)do { if ((1) && !(ftype < FT_NUM_TYPES)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 304, __func__, "assertion failed: %s"
, "ftype < FT_NUM_TYPES"); } while (0); ft = type_list[ftype
];
;
305 return ft->len ? true1 : false0;
306}
307
308bool_Bool
309ftype_can_slice(enum ftenum ftype)
310{
311 const ftype_t *ft;
312
313 FTYPE_LOOKUP(ftype, ft)do { if ((1) && !(ftype < FT_NUM_TYPES)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 313, __func__, "assertion failed: %s"
, "ftype < FT_NUM_TYPES"); } while (0); ft = type_list[ftype
];
;
314 return ft->slice ? true1 : false0;
315}
316
317bool_Bool
318ftype_can_eq(enum ftenum ftype)
319{
320 const ftype_t *ft;
321
322 FTYPE_LOOKUP(ftype, ft)do { if ((1) && !(ftype < FT_NUM_TYPES)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 322, __func__, "assertion failed: %s"
, "ftype < FT_NUM_TYPES"); } while (0); ft = type_list[ftype
];
;
323 return ft->compare != NULL((void*)0);
324}
325
326bool_Bool
327ftype_can_cmp(enum ftenum ftype)
328{
329 const ftype_t *ft;
330
331 FTYPE_LOOKUP(ftype, ft)do { if ((1) && !(ftype < FT_NUM_TYPES)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 331, __func__, "assertion failed: %s"
, "ftype < FT_NUM_TYPES"); } while (0); ft = type_list[ftype
];
;
332 return ft->compare != NULL((void*)0);
333}
334
335bool_Bool
336ftype_can_bitwise_and(enum ftenum ftype)
337{
338 const ftype_t *ft;
339
340 FTYPE_LOOKUP(ftype, ft)do { if ((1) && !(ftype < FT_NUM_TYPES)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 340, __func__, "assertion failed: %s"
, "ftype < FT_NUM_TYPES"); } while (0); ft = type_list[ftype
];
;
341 return ft->bitwise_and ? true1 : false0;
342}
343
344bool_Bool
345ftype_can_unary_minus(enum ftenum ftype)
346{
347 const ftype_t *ft;
348
349 FTYPE_LOOKUP(ftype, ft)do { if ((1) && !(ftype < FT_NUM_TYPES)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 349, __func__, "assertion failed: %s"
, "ftype < FT_NUM_TYPES"); } while (0); ft = type_list[ftype
];
;
350 return ft->unary_minus != NULL((void*)0);
351}
352
353bool_Bool
354ftype_can_add(enum ftenum ftype)
355{
356 const ftype_t *ft;
357
358 FTYPE_LOOKUP(ftype, ft)do { if ((1) && !(ftype < FT_NUM_TYPES)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 358, __func__, "assertion failed: %s"
, "ftype < FT_NUM_TYPES"); } while (0); ft = type_list[ftype
];
;
359 return ft->add != NULL((void*)0);
360}
361
362bool_Bool
363ftype_can_subtract(enum ftenum ftype)
364{
365 const ftype_t *ft;
366
367 FTYPE_LOOKUP(ftype, ft)do { if ((1) && !(ftype < FT_NUM_TYPES)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 367, __func__, "assertion failed: %s"
, "ftype < FT_NUM_TYPES"); } while (0); ft = type_list[ftype
];
;
368 return ft->subtract != NULL((void*)0);
369}
370
371bool_Bool
372ftype_can_multiply(enum ftenum ftype)
373{
374 const ftype_t *ft;
375
376 FTYPE_LOOKUP(ftype, ft)do { if ((1) && !(ftype < FT_NUM_TYPES)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 376, __func__, "assertion failed: %s"
, "ftype < FT_NUM_TYPES"); } while (0); ft = type_list[ftype
];
;
377 return ft->multiply != NULL((void*)0);
378}
379
380bool_Bool
381ftype_can_divide(enum ftenum ftype)
382{
383 const ftype_t *ft;
384
385 FTYPE_LOOKUP(ftype, ft)do { if ((1) && !(ftype < FT_NUM_TYPES)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 385, __func__, "assertion failed: %s"
, "ftype < FT_NUM_TYPES"); } while (0); ft = type_list[ftype
];
;
386 return ft->divide != NULL((void*)0);
387}
388
389bool_Bool
390ftype_can_modulo(enum ftenum ftype)
391{
392 const ftype_t *ft;
393
394 FTYPE_LOOKUP(ftype, ft)do { if ((1) && !(ftype < FT_NUM_TYPES)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 394, __func__, "assertion failed: %s"
, "ftype < FT_NUM_TYPES"); } while (0); ft = type_list[ftype
];
;
395 return ft->modulo != NULL((void*)0);
396}
397
398bool_Bool
399ftype_can_contains(enum ftenum ftype)
400{
401 const ftype_t *ft;
402
403 FTYPE_LOOKUP(ftype, ft)do { if ((1) && !(ftype < FT_NUM_TYPES)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 403, __func__, "assertion failed: %s"
, "ftype < FT_NUM_TYPES"); } while (0); ft = type_list[ftype
];
;
404 return ft->contains ? true1 : false0;
405}
406
407bool_Bool
408ftype_can_matches(enum ftenum ftype)
409{
410 const ftype_t *ft;
411
412 FTYPE_LOOKUP(ftype, ft)do { if ((1) && !(ftype < FT_NUM_TYPES)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 412, __func__, "assertion failed: %s"
, "ftype < FT_NUM_TYPES"); } while (0); ft = type_list[ftype
];
;
413 return ft->matches ? true1 : false0;
414}
415
416bool_Bool
417ftype_can_is_zero(enum ftenum ftype)
418{
419 const ftype_t *ft;
420
421 FTYPE_LOOKUP(ftype, ft)do { if ((1) && !(ftype < FT_NUM_TYPES)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 421, __func__, "assertion failed: %s"
, "ftype < FT_NUM_TYPES"); } while (0); ft = type_list[ftype
];
;
422 return ft->is_zero ? true1 : false0;
423}
424
425bool_Bool
426ftype_can_is_negative(enum ftenum ftype)
427{
428 const ftype_t *ft;
429
430 FTYPE_LOOKUP(ftype, ft)do { if ((1) && !(ftype < FT_NUM_TYPES)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 430, __func__, "assertion failed: %s"
, "ftype < FT_NUM_TYPES"); } while (0); ft = type_list[ftype
];
;
431 return ft->is_negative ? true1 : false0;
432}
433
434bool_Bool
435ftype_can_val_to_sinteger(enum ftenum ftype)
436{
437 const ftype_t *ft;
438
439 FTYPE_LOOKUP(ftype, ft)do { if ((1) && !(ftype < FT_NUM_TYPES)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 439, __func__, "assertion failed: %s"
, "ftype < FT_NUM_TYPES"); } while (0); ft = type_list[ftype
];
;
440 /* We first convert to 64 bit and then check for overflow. */
441 return ft->val_to_sinteger64 ? true1 : false0;
442}
443
444bool_Bool
445ftype_can_val_to_uinteger(enum ftenum ftype)
446{
447 const ftype_t *ft;
448
449 FTYPE_LOOKUP(ftype, ft)do { if ((1) && !(ftype < FT_NUM_TYPES)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 449, __func__, "assertion failed: %s"
, "ftype < FT_NUM_TYPES"); } while (0); ft = type_list[ftype
];
;
450 /* We first convert to 64 bit and then check for overflow. */
451 return ft->val_to_uinteger64 ? true1 : false0;
452}
453
454bool_Bool
455ftype_can_val_to_sinteger64(enum ftenum ftype)
456{
457 const ftype_t *ft;
458
459 FTYPE_LOOKUP(ftype, ft)do { if ((1) && !(ftype < FT_NUM_TYPES)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 459, __func__, "assertion failed: %s"
, "ftype < FT_NUM_TYPES"); } while (0); ft = type_list[ftype
];
;
460 return ft->val_to_sinteger64 ? true1 : false0;
461}
462
463bool_Bool
464ftype_can_val_to_uinteger64(enum ftenum ftype)
465{
466 const ftype_t *ft;
467
468 FTYPE_LOOKUP(ftype, ft)do { if ((1) && !(ftype < FT_NUM_TYPES)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 468, __func__, "assertion failed: %s"
, "ftype < FT_NUM_TYPES"); } while (0); ft = type_list[ftype
];
;
469 return ft->val_to_uinteger64 ? true1 : false0;
470}
471
472bool_Bool
473ftype_can_val_to_double(enum ftenum ftype)
474{
475 const ftype_t *ft;
476
477 FTYPE_LOOKUP(ftype, ft)do { if ((1) && !(ftype < FT_NUM_TYPES)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 477, __func__, "assertion failed: %s"
, "ftype < FT_NUM_TYPES"); } while (0); ft = type_list[ftype
];
;
478 /* We first convert to 64 bit and then check for overflow. */
479 return ft->val_to_double ? true1 : false0;
480}
481
482/* ---------------------------------------------------------- */
483
484/* Allocate and initialize an fvalue_t, given an ftype */
485fvalue_t*
486fvalue_new(ftenum_t ftype)
487{
488 fvalue_t *fv;
489 const ftype_t *ft;
490 FvalueNewFunc new_value;
491
492 fv = g_slice_new(fvalue_t)((fvalue_t*) g_slice_alloc (sizeof (fvalue_t)));
493
494 FTYPE_LOOKUP(ftype, ft)do { if ((1) && !(ftype < FT_NUM_TYPES)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 494, __func__, "assertion failed: %s"
, "ftype < FT_NUM_TYPES"); } while (0); ft = type_list[ftype
];
;
495 fv->ftype = ft;
496
497 new_value = ft->new_value;
498 if (new_value) {
499 new_value(fv);
500 }
501
502 return fv;
503}
504
505fvalue_t*
506fvalue_dup(const fvalue_t *fv_orig)
507{
508 fvalue_t *fv_new;
509 FvalueCopyFunc copy_value;
510
511 fv_new = g_slice_new(fvalue_t)((fvalue_t*) g_slice_alloc (sizeof (fvalue_t)));
512 fv_new->ftype = fv_orig->ftype;
513 copy_value = fv_new->ftype->copy_value;
514 if (copy_value != NULL((void*)0)) {
515 /* deep copy */
516 copy_value(fv_new, fv_orig);
517 }
518 else {
519 /* shallow copy */
520 memcpy(&fv_new->value, &fv_orig->value, sizeof(fv_orig->value));
521 }
522
523 return fv_new;
524}
525
526void
527fvalue_init(fvalue_t *fv, ftenum_t ftype)
528{
529 const ftype_t *ft;
530 FvalueNewFunc new_value;
531
532 FTYPE_LOOKUP(ftype, ft)do { if ((1) && !(ftype < FT_NUM_TYPES)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 532, __func__, "assertion failed: %s"
, "ftype < FT_NUM_TYPES"); } while (0); ft = type_list[ftype
];
;
533 fv->ftype = ft;
534
535 new_value = ft->new_value;
536 if (new_value) {
537 new_value(fv);
538 }
539}
540
541void
542fvalue_cleanup(fvalue_t *fv)
543{
544 if (!fv->ftype->free_value)
545 return;
546 fv->ftype->free_value(fv);
547}
548
549void
550fvalue_free(fvalue_t *fv)
551{
552 fvalue_cleanup(fv);
553 g_slice_free(fvalue_t, fv)do { if (1) g_slice_free1 (sizeof (fvalue_t), (fv)); else (void
) ((fvalue_t*) 0 == (fv)); } while (0)
;
554}
555
556fvalue_t*
557fvalue_from_literal(ftenum_t ftype, const char *s, bool_Bool allow_partial_value, char **err_msg)
558{
559 fvalue_t *fv;
560 bool_Bool ok = false0;
561
562 fv = fvalue_new(ftype);
563 if (fv->ftype->val_from_literal) {
564 ok = fv->ftype->val_from_literal(fv, s, allow_partial_value, err_msg);
565 }
566 if (ok) {
567 /* Success */
568 if (err_msg != NULL((void*)0))
569 *err_msg = NULL((void*)0);
570 return fv;
571 }
572 else {
573 if (err_msg != NULL((void*)0) && *err_msg == NULL((void*)0)) {
574 *err_msg = ws_strdup_printf("\"%s\" cannot be converted to %s.",wmem_strdup_printf(((void*)0), "\"%s\" cannot be converted to %s."
, s, ftype_pretty_name(ftype))
575 s, ftype_pretty_name(ftype))wmem_strdup_printf(((void*)0), "\"%s\" cannot be converted to %s."
, s, ftype_pretty_name(ftype))
;
576 }
577 }
578 fvalue_free(fv);
579 return NULL((void*)0);
580}
581
582fvalue_t*
583fvalue_from_string(ftenum_t ftype, const char *str, size_t len, char **err_msg)
584{
585 fvalue_t *fv;
586
587 fv = fvalue_new(ftype);
588 if (fv->ftype->val_from_string && fv->ftype->val_from_string(fv, str, len, err_msg)) {
589 /* Success */
590 if (err_msg != NULL((void*)0))
591 *err_msg = NULL((void*)0);
592 return fv;
593 }
594 else {
595 if (err_msg != NULL((void*)0) && *err_msg == NULL((void*)0)) {
596 *err_msg = ws_strdup_printf("%s cannot be converted from a string (\"%s\").",wmem_strdup_printf(((void*)0), "%s cannot be converted from a string (\"%s\")."
, ftype_pretty_name(ftype), str)
597 ftype_pretty_name(ftype), str)wmem_strdup_printf(((void*)0), "%s cannot be converted from a string (\"%s\")."
, ftype_pretty_name(ftype), str)
;
598 }
599 }
600 fvalue_free(fv);
601 return NULL((void*)0);
602}
603
604fvalue_t*
605fvalue_from_charconst(ftenum_t ftype, unsigned long num, char **err_msg)
606{
607 fvalue_t *fv;
608
609 fv = fvalue_new(ftype);
610 if (fv->ftype->val_from_charconst && fv->ftype->val_from_charconst(fv, num, err_msg)) {
611 /* Success */
612 if (err_msg != NULL((void*)0))
613 *err_msg = NULL((void*)0);
614 return fv;
615 }
616 else {
617 if (err_msg != NULL((void*)0) && *err_msg == NULL((void*)0)) {
618 if (num <= 0x7f && g_ascii_isprint(num)((g_ascii_table[(guchar) (num)] & G_ASCII_PRINT) != 0)) {
619 *err_msg = ws_strdup_printf("Character constant '%c' (0x%lx) cannot be converted to %s.",wmem_strdup_printf(((void*)0), "Character constant '%c' (0x%lx) cannot be converted to %s."
, (int)num, num, ftype_pretty_name(ftype))
620 (int)num, num, ftype_pretty_name(ftype))wmem_strdup_printf(((void*)0), "Character constant '%c' (0x%lx) cannot be converted to %s."
, (int)num, num, ftype_pretty_name(ftype))
;
621 }
622 else {
623 *err_msg = ws_strdup_printf("Character constant 0x%lx cannot be converted to %s.",wmem_strdup_printf(((void*)0), "Character constant 0x%lx cannot be converted to %s."
, num, ftype_pretty_name(ftype))
624 num, ftype_pretty_name(ftype))wmem_strdup_printf(((void*)0), "Character constant 0x%lx cannot be converted to %s."
, num, ftype_pretty_name(ftype))
;
625 }
626 }
627 }
628 fvalue_free(fv);
629 return NULL((void*)0);
630}
631
632fvalue_t*
633fvalue_from_sinteger64(ftenum_t ftype, const char *s, int64_t num, char **err_msg)
634{
635 fvalue_t *fv;
636
637 fv = fvalue_new(ftype);
638 if (fv->ftype->val_from_sinteger64 && fv->ftype->val_from_sinteger64(fv, s, num, err_msg)) {
639 /* Success */
640 if (err_msg != NULL((void*)0))
641 *err_msg = NULL((void*)0);
642 return fv;
643 }
644 else {
645 if (err_msg != NULL((void*)0) && *err_msg == NULL((void*)0)) {
646 *err_msg = ws_strdup_printf("Integer %"PRId64" cannot be converted to %s.",wmem_strdup_printf(((void*)0), "Integer %""l" "d"" cannot be converted to %s."
, num, ftype_pretty_name(ftype))
647 num, ftype_pretty_name(ftype))wmem_strdup_printf(((void*)0), "Integer %""l" "d"" cannot be converted to %s."
, num, ftype_pretty_name(ftype))
;
648 }
649 }
650 fvalue_free(fv);
651 return NULL((void*)0);
652}
653
654fvalue_t*
655fvalue_from_uinteger64(ftenum_t ftype, const char *s, uint64_t num, char **err_msg)
656{
657 fvalue_t *fv;
658
659 fv = fvalue_new(ftype);
660 if (fv->ftype->val_from_uinteger64 && fv->ftype->val_from_uinteger64(fv, s, num, err_msg)) {
661 /* Success */
662 if (err_msg != NULL((void*)0))
663 *err_msg = NULL((void*)0);
664 return fv;
665 }
666 else {
667 if (err_msg != NULL((void*)0) && *err_msg == NULL((void*)0)) {
668 *err_msg = ws_strdup_printf("Unsigned integer 0x%"PRIu64" cannot be converted to %s.",wmem_strdup_printf(((void*)0), "Unsigned integer 0x%""l" "u"" cannot be converted to %s."
, num, ftype_pretty_name(ftype))
669 num, ftype_pretty_name(ftype))wmem_strdup_printf(((void*)0), "Unsigned integer 0x%""l" "u"" cannot be converted to %s."
, num, ftype_pretty_name(ftype))
;
670 }
671 }
672 fvalue_free(fv);
673 return NULL((void*)0);
674}
675
676fvalue_t*
677fvalue_from_floating(ftenum_t ftype, const char *s, double num, char **err_msg)
678{
679 fvalue_t *fv;
680
681 fv = fvalue_new(ftype);
682 if (fv->ftype->val_from_double && fv->ftype->val_from_double(fv, s, num, err_msg)) {
683 /* Success */
684 if (err_msg != NULL((void*)0))
685 *err_msg = NULL((void*)0);
686 return fv;
687 }
688 else {
689 if (err_msg != NULL((void*)0) && *err_msg == NULL((void*)0)) {
690 *err_msg = ws_strdup_printf("Double %g cannot be converted to %s.",wmem_strdup_printf(((void*)0), "Double %g cannot be converted to %s."
, num, ftype_pretty_name(ftype))
691 num, ftype_pretty_name(ftype))wmem_strdup_printf(((void*)0), "Double %g cannot be converted to %s."
, num, ftype_pretty_name(ftype))
;
692 }
693 }
694 fvalue_free(fv);
695 return NULL((void*)0);
696}
697
698ftenum_t
699fvalue_type_ftenum(const fvalue_t *fv)
700{
701 return fv->ftype->ftype;
702}
703
704const char*
705fvalue_type_name(const fvalue_t *fv)
706{
707 return ftype_name(fv->ftype->ftype);
708}
709
710
711size_t
712fvalue_length2(fvalue_t *fv)
713{
714 if (!fv->ftype->len) {
715 ws_critical("fv->ftype->len is NULL")do { if (1) { ws_log_full("", LOG_LEVEL_CRITICAL, "epan/ftypes/ftypes.c"
, 715, __func__, "fv->ftype->len is NULL"); } } while (
0)
;
716 return 0;
717 }
718 return fv->ftype->len(fv);
719}
720
721char *
722fvalue_to_string_repr(wmem_allocator_t *scope, const fvalue_t *fv, ftrepr_t rtype, int field_display)
723{
724 if (fv->ftype->val_to_string_repr == NULL((void*)0)) {
725 /* no value-to-string-representation function, so the value cannot be represented */
726 return NULL((void*)0);
727 }
728
729 return fv->ftype->val_to_string_repr(scope, fv, rtype, field_display);
730}
731
732enum ft_result
733fvalue_to_uinteger(const fvalue_t *fv, uint32_t *repr)
734{
735 uint64_t val;
736 enum ft_result res = fv->ftype->val_to_uinteger64(fv, &val);
737 if (res != FT_OK)
738 return res;
739 if (val > UINT32_MAX(4294967295U))
740 return FT_OVERFLOW;
741
742 *repr = (uint32_t)val;
743 return FT_OK;
744}
745
746enum ft_result
747fvalue_to_sinteger(const fvalue_t *fv, int32_t *repr)
748{
749 int64_t val;
750 enum ft_result res = fv->ftype->val_to_sinteger64(fv, &val);
751 if (res != FT_OK)
752 return res;
753 if (val > INT32_MAX(2147483647))
754 return FT_OVERFLOW;
755 if (val < INT32_MIN(-2147483647-1))
756 return FT_UNDERFLOW;
757
758 *repr = (int32_t)val;
759 return FT_OK;
760}
761
762enum ft_result
763fvalue_to_uinteger64(const fvalue_t *fv, uint64_t *repr)
764{
765 if (!fv->ftype->val_to_uinteger64) {
766 return FT_BADARG;
767 }
768 return fv->ftype->val_to_uinteger64(fv, repr);
769}
770
771enum ft_result
772fvalue_to_sinteger64(const fvalue_t *fv, int64_t *repr)
773{
774 if (!fv->ftype->val_to_sinteger64) {
775 return FT_BADARG;
776 }
777 return fv->ftype->val_to_sinteger64(fv, repr);
778}
779
780enum ft_result
781fvalue_to_double(const fvalue_t *fv, double *repr)
782{
783 /* We should be able to test this earlier (e.g., in semantic check)
784 * but there are non-compatible fields that share the same abbrev
785 * so we have to check it on each fvalue.
786 */
787 if (!fv->ftype->val_to_double) {
788 return FT_BADARG;
789 }
790 return fv->ftype->val_to_double(fv, repr);
791}
792
793typedef struct {
794 fvalue_t *fv;
795 void *ptr;
796 bool_Bool slice_failure;
797} slice_data_t;
798
799static bool_Bool
800compute_drnode(size_t field_length, drange_node *drnode, size_t *offset_ptr, size_t *length_ptr)
801{
802 ssize_t start_offset;
803 ssize_t length = 0;
804 ssize_t end_offset = 0;
805 drange_node_end_t ending;
806
807 start_offset = drange_node_get_start_offset(drnode);
808 ending = drange_node_get_ending(drnode);
809
810 /* Check for negative start */
811 if (start_offset < 0) {
812 start_offset = field_length + start_offset;
813 if (start_offset < 0) {
814 return false0;
815 }
816 }
817
818 /* Check the end type and set the length */
819
820 if (ending == DRANGE_NODE_END_T_TO_THE_END) {
821 length = field_length - start_offset;
822 if (length <= 0) {
823 return false0;
824 }
825 }
826 else if (ending == DRANGE_NODE_END_T_LENGTH) {
827 length = drange_node_get_length(drnode);
828 if (start_offset + length > (int) field_length) {
829 return false0;
830 }
831 }
832 else if (ending == DRANGE_NODE_END_T_OFFSET) {
833 end_offset = drange_node_get_end_offset(drnode);
834 if (end_offset < 0) {
835 end_offset = field_length + end_offset;
836 if (end_offset < start_offset) {
837 return false0;
838 }
839 } else if (end_offset >= (int) field_length) {
840 return false0;
841 }
842 length = end_offset - start_offset + 1;
843 }
844 else {
845 ws_assert_not_reached()ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 845, __func__, "assertion \"not reached\" failed")
;
846 }
847
848 *offset_ptr = start_offset;
849 *length_ptr = length;
850 return true1;
851}
852
853static void
854slice_func(void * data, void * user_data)
855{
856 drange_node *drnode = (drange_node *)data;
857 slice_data_t *slice_data = (slice_data_t *)user_data;
858 size_t start_offset;
859 size_t length = 0;
860 fvalue_t *fv;
861
862 if (slice_data->slice_failure) {
863 return;
864 }
865
866 fv = slice_data->fv;
867 if (!compute_drnode((unsigned)fvalue_length2(fv), drnode, &start_offset, &length)) {
868 slice_data->slice_failure = true1;
869 return;
870 }
871
872 ws_assert(length > 0)do { if ((1) && !(length > 0)) ws_log_fatal_full(""
, LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 872, __func__, "assertion failed: %s"
, "length > 0"); } while (0)
;
873 fv->ftype->slice(fv, slice_data->ptr, (unsigned)start_offset, (unsigned)length);
874}
875
876static fvalue_t *
877slice_string(fvalue_t *fv, drange_t *d_range)
878{
879 slice_data_t slice_data;
880 fvalue_t *new_fv;
881
882 slice_data.fv = fv;
883 slice_data.ptr = wmem_strbuf_create(NULL)wmem_strbuf_new(((void*)0), "");
884 slice_data.slice_failure = false0;
885
886 /* XXX - We could make some optimizations here based on
887 * drange_has_total_length() and
888 * drange_get_max_offset().
889 */
890
891 drange_foreach_drange_node(d_range, slice_func, &slice_data);
892
893 new_fv = fvalue_new(FT_STRING);
894 fvalue_set_strbuf(new_fv, slice_data.ptr);
895 return new_fv;
896}
897
898static fvalue_t *
899slice_bytes(fvalue_t *fv, drange_t *d_range)
900{
901 slice_data_t slice_data;
902 fvalue_t *new_fv;
903
904 slice_data.fv = fv;
905 slice_data.ptr = g_byte_array_new();
906 slice_data.slice_failure = false0;
907
908 /* XXX - We could make some optimizations here based on
909 * drange_has_total_length() and
910 * drange_get_max_offset().
911 */
912
913 drange_foreach_drange_node(d_range, slice_func, &slice_data);
914
915 new_fv = fvalue_new(FT_BYTES);
916 fvalue_set_byte_array(new_fv, slice_data.ptr);
917 return new_fv;
918}
919
920/* Returns a new slice fvalue_t* if possible, otherwise NULL */
921fvalue_t*
922fvalue_slice(fvalue_t *fv, drange_t *d_range)
923{
924 if (FT_IS_STRING(fvalue_type_ftenum(fv))((fvalue_type_ftenum(fv)) == FT_STRING || (fvalue_type_ftenum
(fv)) == FT_STRINGZ || (fvalue_type_ftenum(fv)) == FT_STRINGZPAD
|| (fvalue_type_ftenum(fv)) == FT_STRINGZTRUNC || (fvalue_type_ftenum
(fv)) == FT_UINT_STRING || (fvalue_type_ftenum(fv)) == FT_AX25
)
) {
925 return slice_string(fv, d_range);
926 }
927 return slice_bytes(fv, d_range);
928}
929
930void
931fvalue_set_bytes(fvalue_t *fv, GBytes *value)
932{
933 ws_assert(fv->ftype->ftype == FT_BYTES ||do { if ((1) && !(fv->ftype->ftype == FT_BYTES ||
fv->ftype->ftype == FT_UINT_BYTES || fv->ftype->
ftype == FT_OID || fv->ftype->ftype == FT_REL_OID || fv
->ftype->ftype == FT_SYSTEM_ID || fv->ftype->ftype
== FT_VINES || fv->ftype->ftype == FT_ETHER || fv->
ftype->ftype == FT_FCWWN)) ws_log_fatal_full("", LOG_LEVEL_ERROR
, "epan/ftypes/ftypes.c", 940, __func__, "assertion failed: %s"
, "fv->ftype->ftype == FT_BYTES || fv->ftype->ftype == FT_UINT_BYTES || fv->ftype->ftype == FT_OID || fv->ftype->ftype == FT_REL_OID || fv->ftype->ftype == FT_SYSTEM_ID || fv->ftype->ftype == FT_VINES || fv->ftype->ftype == FT_ETHER || fv->ftype->ftype == FT_FCWWN"
); } while (0)
934 fv->ftype->ftype == FT_UINT_BYTES ||do { if ((1) && !(fv->ftype->ftype == FT_BYTES ||
fv->ftype->ftype == FT_UINT_BYTES || fv->ftype->
ftype == FT_OID || fv->ftype->ftype == FT_REL_OID || fv
->ftype->ftype == FT_SYSTEM_ID || fv->ftype->ftype
== FT_VINES || fv->ftype->ftype == FT_ETHER || fv->
ftype->ftype == FT_FCWWN)) ws_log_fatal_full("", LOG_LEVEL_ERROR
, "epan/ftypes/ftypes.c", 940, __func__, "assertion failed: %s"
, "fv->ftype->ftype == FT_BYTES || fv->ftype->ftype == FT_UINT_BYTES || fv->ftype->ftype == FT_OID || fv->ftype->ftype == FT_REL_OID || fv->ftype->ftype == FT_SYSTEM_ID || fv->ftype->ftype == FT_VINES || fv->ftype->ftype == FT_ETHER || fv->ftype->ftype == FT_FCWWN"
); } while (0)
935 fv->ftype->ftype == FT_OID ||do { if ((1) && !(fv->ftype->ftype == FT_BYTES ||
fv->ftype->ftype == FT_UINT_BYTES || fv->ftype->
ftype == FT_OID || fv->ftype->ftype == FT_REL_OID || fv
->ftype->ftype == FT_SYSTEM_ID || fv->ftype->ftype
== FT_VINES || fv->ftype->ftype == FT_ETHER || fv->
ftype->ftype == FT_FCWWN)) ws_log_fatal_full("", LOG_LEVEL_ERROR
, "epan/ftypes/ftypes.c", 940, __func__, "assertion failed: %s"
, "fv->ftype->ftype == FT_BYTES || fv->ftype->ftype == FT_UINT_BYTES || fv->ftype->ftype == FT_OID || fv->ftype->ftype == FT_REL_OID || fv->ftype->ftype == FT_SYSTEM_ID || fv->ftype->ftype == FT_VINES || fv->ftype->ftype == FT_ETHER || fv->ftype->ftype == FT_FCWWN"
); } while (0)
936 fv->ftype->ftype == FT_REL_OID ||do { if ((1) && !(fv->ftype->ftype == FT_BYTES ||
fv->ftype->ftype == FT_UINT_BYTES || fv->ftype->
ftype == FT_OID || fv->ftype->ftype == FT_REL_OID || fv
->ftype->ftype == FT_SYSTEM_ID || fv->ftype->ftype
== FT_VINES || fv->ftype->ftype == FT_ETHER || fv->
ftype->ftype == FT_FCWWN)) ws_log_fatal_full("", LOG_LEVEL_ERROR
, "epan/ftypes/ftypes.c", 940, __func__, "assertion failed: %s"
, "fv->ftype->ftype == FT_BYTES || fv->ftype->ftype == FT_UINT_BYTES || fv->ftype->ftype == FT_OID || fv->ftype->ftype == FT_REL_OID || fv->ftype->ftype == FT_SYSTEM_ID || fv->ftype->ftype == FT_VINES || fv->ftype->ftype == FT_ETHER || fv->ftype->ftype == FT_FCWWN"
); } while (0)
937 fv->ftype->ftype == FT_SYSTEM_ID ||do { if ((1) && !(fv->ftype->ftype == FT_BYTES ||
fv->ftype->ftype == FT_UINT_BYTES || fv->ftype->
ftype == FT_OID || fv->ftype->ftype == FT_REL_OID || fv
->ftype->ftype == FT_SYSTEM_ID || fv->ftype->ftype
== FT_VINES || fv->ftype->ftype == FT_ETHER || fv->
ftype->ftype == FT_FCWWN)) ws_log_fatal_full("", LOG_LEVEL_ERROR
, "epan/ftypes/ftypes.c", 940, __func__, "assertion failed: %s"
, "fv->ftype->ftype == FT_BYTES || fv->ftype->ftype == FT_UINT_BYTES || fv->ftype->ftype == FT_OID || fv->ftype->ftype == FT_REL_OID || fv->ftype->ftype == FT_SYSTEM_ID || fv->ftype->ftype == FT_VINES || fv->ftype->ftype == FT_ETHER || fv->ftype->ftype == FT_FCWWN"
); } while (0)
938 fv->ftype->ftype == FT_VINES ||do { if ((1) && !(fv->ftype->ftype == FT_BYTES ||
fv->ftype->ftype == FT_UINT_BYTES || fv->ftype->
ftype == FT_OID || fv->ftype->ftype == FT_REL_OID || fv
->ftype->ftype == FT_SYSTEM_ID || fv->ftype->ftype
== FT_VINES || fv->ftype->ftype == FT_ETHER || fv->
ftype->ftype == FT_FCWWN)) ws_log_fatal_full("", LOG_LEVEL_ERROR
, "epan/ftypes/ftypes.c", 940, __func__, "assertion failed: %s"
, "fv->ftype->ftype == FT_BYTES || fv->ftype->ftype == FT_UINT_BYTES || fv->ftype->ftype == FT_OID || fv->ftype->ftype == FT_REL_OID || fv->ftype->ftype == FT_SYSTEM_ID || fv->ftype->ftype == FT_VINES || fv->ftype->ftype == FT_ETHER || fv->ftype->ftype == FT_FCWWN"
); } while (0)
939 fv->ftype->ftype == FT_ETHER ||do { if ((1) && !(fv->ftype->ftype == FT_BYTES ||
fv->ftype->ftype == FT_UINT_BYTES || fv->ftype->
ftype == FT_OID || fv->ftype->ftype == FT_REL_OID || fv
->ftype->ftype == FT_SYSTEM_ID || fv->ftype->ftype
== FT_VINES || fv->ftype->ftype == FT_ETHER || fv->
ftype->ftype == FT_FCWWN)) ws_log_fatal_full("", LOG_LEVEL_ERROR
, "epan/ftypes/ftypes.c", 940, __func__, "assertion failed: %s"
, "fv->ftype->ftype == FT_BYTES || fv->ftype->ftype == FT_UINT_BYTES || fv->ftype->ftype == FT_OID || fv->ftype->ftype == FT_REL_OID || fv->ftype->ftype == FT_SYSTEM_ID || fv->ftype->ftype == FT_VINES || fv->ftype->ftype == FT_ETHER || fv->ftype->ftype == FT_FCWWN"
); } while (0)
940 fv->ftype->ftype == FT_FCWWN)do { if ((1) && !(fv->ftype->ftype == FT_BYTES ||
fv->ftype->ftype == FT_UINT_BYTES || fv->ftype->
ftype == FT_OID || fv->ftype->ftype == FT_REL_OID || fv
->ftype->ftype == FT_SYSTEM_ID || fv->ftype->ftype
== FT_VINES || fv->ftype->ftype == FT_ETHER || fv->
ftype->ftype == FT_FCWWN)) ws_log_fatal_full("", LOG_LEVEL_ERROR
, "epan/ftypes/ftypes.c", 940, __func__, "assertion failed: %s"
, "fv->ftype->ftype == FT_BYTES || fv->ftype->ftype == FT_UINT_BYTES || fv->ftype->ftype == FT_OID || fv->ftype->ftype == FT_REL_OID || fv->ftype->ftype == FT_SYSTEM_ID || fv->ftype->ftype == FT_VINES || fv->ftype->ftype == FT_ETHER || fv->ftype->ftype == FT_FCWWN"
); } while (0)
;
941 ws_assert(fv->ftype->set_value.set_value_bytes)do { if ((1) && !(fv->ftype->set_value.set_value_bytes
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 941, __func__, "assertion failed: %s", "fv->ftype->set_value.set_value_bytes"
); } while (0)
;
942 fv->ftype->set_value.set_value_bytes(fv, value);
943}
944
945void
946fvalue_set_byte_array(fvalue_t *fv, GByteArray *value)
947{
948 GBytes *bytes = g_byte_array_free_to_bytes(value);
949 fvalue_set_bytes(fv, bytes);
950 g_bytes_unref(bytes);
951}
952
953void
954fvalue_set_bytes_data(fvalue_t *fv, const void *data, size_t size)
955{
956 GBytes *bytes = g_bytes_new(data, size);
957 fvalue_set_bytes(fv, bytes);
958 g_bytes_unref(bytes);
959}
960
961void
962fvalue_set_fcwwn(fvalue_t *fv, const uint8_t *value)
963{
964 GBytes *bytes = g_bytes_new(value, FT_FCWWN_LEN8);
965 fvalue_set_bytes(fv, bytes);
966 g_bytes_unref(bytes);
967}
968
969void
970fvalue_set_ax25(fvalue_t *fv, const uint8_t *value)
971{
972 wmem_strbuf_t *buf = wmem_strbuf_new(NULL((void*)0), NULL((void*)0));
973 for (size_t i = 0; i < FT_AX25_ADDR_LEN7 - 1; i++) {
974 if (value[i] != 0x40) {
975 /* ignore space-padding */
976 wmem_strbuf_append_c(buf, value[i] >> 1);
977 }
978 }
979 /* Ignore C-bit and reserved bits, and end of address bits. */
980 uint8_t ssid = (value[FT_AX25_ADDR_LEN7 - 1] >> 1) & 0x0f;
981 if (ssid != 0) {
982 wmem_strbuf_append_printf(buf, "-%u", ssid);
983 }
984 fvalue_set_strbuf(fv, buf);
985}
986
987void
988fvalue_set_vines(fvalue_t *fv, const uint8_t *value)
989{
990 GBytes *bytes = g_bytes_new(value, FT_VINES_ADDR_LEN6);
991 fvalue_set_bytes(fv, bytes);
992 g_bytes_unref(bytes);
993}
994
995void
996fvalue_set_ether(fvalue_t *fv, const uint8_t *value)
997{
998 GBytes *bytes = g_bytes_new(value, FT_ETHER_LEN6);
999 fvalue_set_bytes(fv, bytes);
1000 g_bytes_unref(bytes);
1001}
1002
1003void
1004fvalue_set_guid(fvalue_t *fv, const e_guid_t *value)
1005{
1006 ws_assert(fv->ftype->ftype == FT_GUID)do { if ((1) && !(fv->ftype->ftype == FT_GUID))
ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1006, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_GUID"
); } while (0)
;
1007 ws_assert(fv->ftype->set_value.set_value_guid)do { if ((1) && !(fv->ftype->set_value.set_value_guid
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1007, __func__, "assertion failed: %s", "fv->ftype->set_value.set_value_guid"
); } while (0)
;
1008 fv->ftype->set_value.set_value_guid(fv, value);
1009}
1010
1011void
1012fvalue_set_time(fvalue_t *fv, const nstime_t *value)
1013{
1014 ws_assert(FT_IS_TIME(fv->ftype->ftype))do { if ((1) && !(((fv->ftype->ftype) == FT_ABSOLUTE_TIME
|| (fv->ftype->ftype) == FT_RELATIVE_TIME))) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1014, __func__,
"assertion failed: %s", "((fv->ftype->ftype) == FT_ABSOLUTE_TIME || (fv->ftype->ftype) == FT_RELATIVE_TIME)"
); } while (0)
;
1015 ws_assert(fv->ftype->set_value.set_value_time)do { if ((1) && !(fv->ftype->set_value.set_value_time
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1015, __func__, "assertion failed: %s", "fv->ftype->set_value.set_value_time"
); } while (0)
;
1016 fv->ftype->set_value.set_value_time(fv, value);
1017}
1018
1019void
1020fvalue_set_string(fvalue_t *fv, const char *value)
1021{
1022 wmem_strbuf_t *buf = wmem_strbuf_new(NULL((void*)0), value);
1023 fvalue_set_strbuf(fv, buf);
1024}
1025
1026void
1027fvalue_set_strbuf(fvalue_t *fv, wmem_strbuf_t *value)
1028{
1029 if (value->allocator != NULL((void*)0)) {
1030 /* XXX Can this condition be relaxed? */
1031 ws_critical("Fvalue strbuf allocator must be NULL")do { if (1) { ws_log_full("", LOG_LEVEL_CRITICAL, "epan/ftypes/ftypes.c"
, 1031, __func__, "Fvalue strbuf allocator must be NULL"); } }
while (0)
;
1032 }
1033 ws_assert(FT_IS_STRING(fv->ftype->ftype))do { if ((1) && !(((fv->ftype->ftype) == FT_STRING
|| (fv->ftype->ftype) == FT_STRINGZ || (fv->ftype->
ftype) == FT_STRINGZPAD || (fv->ftype->ftype) == FT_STRINGZTRUNC
|| (fv->ftype->ftype) == FT_UINT_STRING || (fv->ftype
->ftype) == FT_AX25))) ws_log_fatal_full("", LOG_LEVEL_ERROR
, "epan/ftypes/ftypes.c", 1033, __func__, "assertion failed: %s"
, "((fv->ftype->ftype) == FT_STRING || (fv->ftype->ftype) == FT_STRINGZ || (fv->ftype->ftype) == FT_STRINGZPAD || (fv->ftype->ftype) == FT_STRINGZTRUNC || (fv->ftype->ftype) == FT_UINT_STRING || (fv->ftype->ftype) == FT_AX25)"
); } while (0)
;
1034 ws_assert(fv->ftype->set_value.set_value_strbuf)do { if ((1) && !(fv->ftype->set_value.set_value_strbuf
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1034, __func__, "assertion failed: %s", "fv->ftype->set_value.set_value_strbuf"
); } while (0)
;
1035 fv->ftype->set_value.set_value_strbuf(fv, value);
1036}
1037
1038void
1039fvalue_set_protocol(fvalue_t *fv, tvbuff_t *value, const char *name, int length)
1040{
1041 ws_assert(fv->ftype->ftype == FT_PROTOCOL)do { if ((1) && !(fv->ftype->ftype == FT_PROTOCOL
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1041, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_PROTOCOL"
); } while (0)
;
1042 ws_assert(fv->ftype->set_value.set_value_protocol)do { if ((1) && !(fv->ftype->set_value.set_value_protocol
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1042, __func__, "assertion failed: %s", "fv->ftype->set_value.set_value_protocol"
); } while (0)
;
1043 fv->ftype->set_value.set_value_protocol(fv, value, name, length);
1044}
1045
1046void
1047fvalue_set_protocol_length(fvalue_t *fv, int length)
1048{
1049 ws_assert(fv->ftype->ftype == FT_PROTOCOL)do { if ((1) && !(fv->ftype->ftype == FT_PROTOCOL
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1049, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_PROTOCOL"
); } while (0)
;
1050 protocol_value_t *proto = &fv->value.protocol;
1051 proto->length = length;
1052}
1053
1054void
1055fvalue_set_uinteger(fvalue_t *fv, uint32_t value)
1056{
1057 ws_assert(fv->ftype->ftype == FT_IEEE_11073_SFLOAT ||do { if ((1) && !(fv->ftype->ftype == FT_IEEE_11073_SFLOAT
|| fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype
->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 ||
fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype
== FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->
ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1065, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_IEEE_11073_SFLOAT || fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 || fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype == FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM"
); } while (0)
1058 fv->ftype->ftype == FT_IEEE_11073_FLOAT ||do { if ((1) && !(fv->ftype->ftype == FT_IEEE_11073_SFLOAT
|| fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype
->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 ||
fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype
== FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->
ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1065, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_IEEE_11073_SFLOAT || fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 || fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype == FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM"
); } while (0)
1059 fv->ftype->ftype == FT_CHAR ||do { if ((1) && !(fv->ftype->ftype == FT_IEEE_11073_SFLOAT
|| fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype
->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 ||
fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype
== FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->
ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1065, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_IEEE_11073_SFLOAT || fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 || fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype == FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM"
); } while (0)
1060 fv->ftype->ftype == FT_UINT8 ||do { if ((1) && !(fv->ftype->ftype == FT_IEEE_11073_SFLOAT
|| fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype
->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 ||
fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype
== FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->
ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1065, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_IEEE_11073_SFLOAT || fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 || fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype == FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM"
); } while (0)
1061 fv->ftype->ftype == FT_UINT16 ||do { if ((1) && !(fv->ftype->ftype == FT_IEEE_11073_SFLOAT
|| fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype
->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 ||
fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype
== FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->
ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1065, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_IEEE_11073_SFLOAT || fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 || fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype == FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM"
); } while (0)
1062 fv->ftype->ftype == FT_UINT24 ||do { if ((1) && !(fv->ftype->ftype == FT_IEEE_11073_SFLOAT
|| fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype
->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 ||
fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype
== FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->
ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1065, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_IEEE_11073_SFLOAT || fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 || fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype == FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM"
); } while (0)
1063 fv->ftype->ftype == FT_UINT32 ||do { if ((1) && !(fv->ftype->ftype == FT_IEEE_11073_SFLOAT
|| fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype
->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 ||
fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype
== FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->
ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1065, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_IEEE_11073_SFLOAT || fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 || fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype == FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM"
); } while (0)
1064 fv->ftype->ftype == FT_IPXNET ||do { if ((1) && !(fv->ftype->ftype == FT_IEEE_11073_SFLOAT
|| fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype
->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 ||
fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype
== FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->
ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1065, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_IEEE_11073_SFLOAT || fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 || fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype == FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM"
); } while (0)
1065 fv->ftype->ftype == FT_FRAMENUM)do { if ((1) && !(fv->ftype->ftype == FT_IEEE_11073_SFLOAT
|| fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype
->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 ||
fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype
== FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->
ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1065, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_IEEE_11073_SFLOAT || fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 || fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype == FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM"
); } while (0)
;
1066 ws_assert(fv->ftype->set_value.set_value_uinteger)do { if ((1) && !(fv->ftype->set_value.set_value_uinteger
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1066, __func__, "assertion failed: %s", "fv->ftype->set_value.set_value_uinteger"
); } while (0)
;
1067 fv->ftype->set_value.set_value_uinteger(fv, value);
1068}
1069
1070void
1071fvalue_set_sinteger(fvalue_t *fv, int32_t value)
1072{
1073 ws_assert(fv->ftype->ftype == FT_INT8 ||do { if ((1) && !(fv->ftype->ftype == FT_INT8 ||
fv->ftype->ftype == FT_INT16 || fv->ftype->ftype
== FT_INT24 || fv->ftype->ftype == FT_INT32)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1076, __func__,
"assertion failed: %s", "fv->ftype->ftype == FT_INT8 || fv->ftype->ftype == FT_INT16 || fv->ftype->ftype == FT_INT24 || fv->ftype->ftype == FT_INT32"
); } while (0)
1074 fv->ftype->ftype == FT_INT16 ||do { if ((1) && !(fv->ftype->ftype == FT_INT8 ||
fv->ftype->ftype == FT_INT16 || fv->ftype->ftype
== FT_INT24 || fv->ftype->ftype == FT_INT32)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1076, __func__,
"assertion failed: %s", "fv->ftype->ftype == FT_INT8 || fv->ftype->ftype == FT_INT16 || fv->ftype->ftype == FT_INT24 || fv->ftype->ftype == FT_INT32"
); } while (0)
1075 fv->ftype->ftype == FT_INT24 ||do { if ((1) && !(fv->ftype->ftype == FT_INT8 ||
fv->ftype->ftype == FT_INT16 || fv->ftype->ftype
== FT_INT24 || fv->ftype->ftype == FT_INT32)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1076, __func__,
"assertion failed: %s", "fv->ftype->ftype == FT_INT8 || fv->ftype->ftype == FT_INT16 || fv->ftype->ftype == FT_INT24 || fv->ftype->ftype == FT_INT32"
); } while (0)
1076 fv->ftype->ftype == FT_INT32)do { if ((1) && !(fv->ftype->ftype == FT_INT8 ||
fv->ftype->ftype == FT_INT16 || fv->ftype->ftype
== FT_INT24 || fv->ftype->ftype == FT_INT32)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1076, __func__,
"assertion failed: %s", "fv->ftype->ftype == FT_INT8 || fv->ftype->ftype == FT_INT16 || fv->ftype->ftype == FT_INT24 || fv->ftype->ftype == FT_INT32"
); } while (0)
;
1077 ws_assert(fv->ftype->set_value.set_value_sinteger)do { if ((1) && !(fv->ftype->set_value.set_value_sinteger
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1077, __func__, "assertion failed: %s", "fv->ftype->set_value.set_value_sinteger"
); } while (0)
;
1078 fv->ftype->set_value.set_value_sinteger(fv, value);
1079}
1080
1081void
1082fvalue_set_uinteger64(fvalue_t *fv, uint64_t value)
1083{
1084 ws_assert(fv->ftype->ftype == FT_UINT40 ||do { if ((1) && !(fv->ftype->ftype == FT_UINT40
|| fv->ftype->ftype == FT_UINT48 || fv->ftype->ftype
== FT_UINT56 || fv->ftype->ftype == FT_UINT64 || fv->
ftype->ftype == FT_BOOLEAN || fv->ftype->ftype == FT_EUI64
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1089, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_UINT40 || fv->ftype->ftype == FT_UINT48 || fv->ftype->ftype == FT_UINT56 || fv->ftype->ftype == FT_UINT64 || fv->ftype->ftype == FT_BOOLEAN || fv->ftype->ftype == FT_EUI64"
); } while (0)
1085 fv->ftype->ftype == FT_UINT48 ||do { if ((1) && !(fv->ftype->ftype == FT_UINT40
|| fv->ftype->ftype == FT_UINT48 || fv->ftype->ftype
== FT_UINT56 || fv->ftype->ftype == FT_UINT64 || fv->
ftype->ftype == FT_BOOLEAN || fv->ftype->ftype == FT_EUI64
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1089, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_UINT40 || fv->ftype->ftype == FT_UINT48 || fv->ftype->ftype == FT_UINT56 || fv->ftype->ftype == FT_UINT64 || fv->ftype->ftype == FT_BOOLEAN || fv->ftype->ftype == FT_EUI64"
); } while (0)
1086 fv->ftype->ftype == FT_UINT56 ||do { if ((1) && !(fv->ftype->ftype == FT_UINT40
|| fv->ftype->ftype == FT_UINT48 || fv->ftype->ftype
== FT_UINT56 || fv->ftype->ftype == FT_UINT64 || fv->
ftype->ftype == FT_BOOLEAN || fv->ftype->ftype == FT_EUI64
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1089, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_UINT40 || fv->ftype->ftype == FT_UINT48 || fv->ftype->ftype == FT_UINT56 || fv->ftype->ftype == FT_UINT64 || fv->ftype->ftype == FT_BOOLEAN || fv->ftype->ftype == FT_EUI64"
); } while (0)
1087 fv->ftype->ftype == FT_UINT64 ||do { if ((1) && !(fv->ftype->ftype == FT_UINT40
|| fv->ftype->ftype == FT_UINT48 || fv->ftype->ftype
== FT_UINT56 || fv->ftype->ftype == FT_UINT64 || fv->
ftype->ftype == FT_BOOLEAN || fv->ftype->ftype == FT_EUI64
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1089, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_UINT40 || fv->ftype->ftype == FT_UINT48 || fv->ftype->ftype == FT_UINT56 || fv->ftype->ftype == FT_UINT64 || fv->ftype->ftype == FT_BOOLEAN || fv->ftype->ftype == FT_EUI64"
); } while (0)
1088 fv->ftype->ftype == FT_BOOLEAN ||do { if ((1) && !(fv->ftype->ftype == FT_UINT40
|| fv->ftype->ftype == FT_UINT48 || fv->ftype->ftype
== FT_UINT56 || fv->ftype->ftype == FT_UINT64 || fv->
ftype->ftype == FT_BOOLEAN || fv->ftype->ftype == FT_EUI64
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1089, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_UINT40 || fv->ftype->ftype == FT_UINT48 || fv->ftype->ftype == FT_UINT56 || fv->ftype->ftype == FT_UINT64 || fv->ftype->ftype == FT_BOOLEAN || fv->ftype->ftype == FT_EUI64"
); } while (0)
1089 fv->ftype->ftype == FT_EUI64)do { if ((1) && !(fv->ftype->ftype == FT_UINT40
|| fv->ftype->ftype == FT_UINT48 || fv->ftype->ftype
== FT_UINT56 || fv->ftype->ftype == FT_UINT64 || fv->
ftype->ftype == FT_BOOLEAN || fv->ftype->ftype == FT_EUI64
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1089, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_UINT40 || fv->ftype->ftype == FT_UINT48 || fv->ftype->ftype == FT_UINT56 || fv->ftype->ftype == FT_UINT64 || fv->ftype->ftype == FT_BOOLEAN || fv->ftype->ftype == FT_EUI64"
); } while (0)
;
1090 ws_assert(fv->ftype->set_value.set_value_uinteger64)do { if ((1) && !(fv->ftype->set_value.set_value_uinteger64
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1090, __func__, "assertion failed: %s", "fv->ftype->set_value.set_value_uinteger64"
); } while (0)
;
1091 fv->ftype->set_value.set_value_uinteger64(fv, value);
1092}
1093
1094void
1095fvalue_set_sinteger64(fvalue_t *fv, int64_t value)
1096{
1097 ws_assert(fv->ftype->ftype == FT_INT40 ||do { if ((1) && !(fv->ftype->ftype == FT_INT40 ||
fv->ftype->ftype == FT_INT48 || fv->ftype->ftype
== FT_INT56 || fv->ftype->ftype == FT_INT64)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1100, __func__,
"assertion failed: %s", "fv->ftype->ftype == FT_INT40 || fv->ftype->ftype == FT_INT48 || fv->ftype->ftype == FT_INT56 || fv->ftype->ftype == FT_INT64"
); } while (0)
1098 fv->ftype->ftype == FT_INT48 ||do { if ((1) && !(fv->ftype->ftype == FT_INT40 ||
fv->ftype->ftype == FT_INT48 || fv->ftype->ftype
== FT_INT56 || fv->ftype->ftype == FT_INT64)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1100, __func__,
"assertion failed: %s", "fv->ftype->ftype == FT_INT40 || fv->ftype->ftype == FT_INT48 || fv->ftype->ftype == FT_INT56 || fv->ftype->ftype == FT_INT64"
); } while (0)
1099 fv->ftype->ftype == FT_INT56 ||do { if ((1) && !(fv->ftype->ftype == FT_INT40 ||
fv->ftype->ftype == FT_INT48 || fv->ftype->ftype
== FT_INT56 || fv->ftype->ftype == FT_INT64)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1100, __func__,
"assertion failed: %s", "fv->ftype->ftype == FT_INT40 || fv->ftype->ftype == FT_INT48 || fv->ftype->ftype == FT_INT56 || fv->ftype->ftype == FT_INT64"
); } while (0)
1100 fv->ftype->ftype == FT_INT64)do { if ((1) && !(fv->ftype->ftype == FT_INT40 ||
fv->ftype->ftype == FT_INT48 || fv->ftype->ftype
== FT_INT56 || fv->ftype->ftype == FT_INT64)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1100, __func__,
"assertion failed: %s", "fv->ftype->ftype == FT_INT40 || fv->ftype->ftype == FT_INT48 || fv->ftype->ftype == FT_INT56 || fv->ftype->ftype == FT_INT64"
); } while (0)
;
1101 ws_assert(fv->ftype->set_value.set_value_sinteger64)do { if ((1) && !(fv->ftype->set_value.set_value_sinteger64
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1101, __func__, "assertion failed: %s", "fv->ftype->set_value.set_value_sinteger64"
); } while (0)
;
1102 fv->ftype->set_value.set_value_sinteger64(fv, value);
1103}
1104
1105void
1106fvalue_set_floating(fvalue_t *fv, double value)
1107{
1108 ws_assert(fv->ftype->ftype == FT_FLOAT ||do { if ((1) && !(fv->ftype->ftype == FT_FLOAT ||
fv->ftype->ftype == FT_DOUBLE)) ws_log_fatal_full("", LOG_LEVEL_ERROR
, "epan/ftypes/ftypes.c", 1109, __func__, "assertion failed: %s"
, "fv->ftype->ftype == FT_FLOAT || fv->ftype->ftype == FT_DOUBLE"
); } while (0)
1109 fv->ftype->ftype == FT_DOUBLE)do { if ((1) && !(fv->ftype->ftype == FT_FLOAT ||
fv->ftype->ftype == FT_DOUBLE)) ws_log_fatal_full("", LOG_LEVEL_ERROR
, "epan/ftypes/ftypes.c", 1109, __func__, "assertion failed: %s"
, "fv->ftype->ftype == FT_FLOAT || fv->ftype->ftype == FT_DOUBLE"
); } while (0)
;
1110 ws_assert(fv->ftype->set_value.set_value_floating)do { if ((1) && !(fv->ftype->set_value.set_value_floating
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1110, __func__, "assertion failed: %s", "fv->ftype->set_value.set_value_floating"
); } while (0)
;
1111 fv->ftype->set_value.set_value_floating(fv, value);
1112}
1113
1114void
1115fvalue_set_ipv4(fvalue_t *fv, const ipv4_addr_and_mask *value)
1116{
1117 ws_assert(fv->ftype->ftype == FT_IPv4)do { if ((1) && !(fv->ftype->ftype == FT_IPv4))
ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1117, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_IPv4"
); } while (0)
;
1118 ws_assert(fv->ftype->set_value.set_value_ipv4)do { if ((1) && !(fv->ftype->set_value.set_value_ipv4
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1118, __func__, "assertion failed: %s", "fv->ftype->set_value.set_value_ipv4"
); } while (0)
;
1119 fv->ftype->set_value.set_value_ipv4(fv, value);
1120}
1121
1122void
1123fvalue_set_ipv6(fvalue_t *fv, const ipv6_addr_and_prefix *value)
1124{
1125 ws_assert(fv->ftype->ftype == FT_IPv6)do { if ((1) && !(fv->ftype->ftype == FT_IPv6))
ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1125, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_IPv6"
); } while (0)
;
1126 ws_assert(fv->ftype->set_value.set_value_ipv6)do { if ((1) && !(fv->ftype->set_value.set_value_ipv6
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1126, __func__, "assertion failed: %s", "fv->ftype->set_value.set_value_ipv6"
); } while (0)
;
1127 fv->ftype->set_value.set_value_ipv6(fv, value);
1128}
1129
1130GBytes *
1131fvalue_get_bytes(fvalue_t *fv)
1132{
1133 ws_assert(fv->ftype->ftype == FT_BYTES ||do { if ((1) && !(fv->ftype->ftype == FT_BYTES ||
fv->ftype->ftype == FT_UINT_BYTES || fv->ftype->
ftype == FT_VINES || fv->ftype->ftype == FT_ETHER || fv
->ftype->ftype == FT_OID || fv->ftype->ftype == FT_REL_OID
|| fv->ftype->ftype == FT_SYSTEM_ID || fv->ftype->
ftype == FT_FCWWN || fv->ftype->ftype == FT_IPv6)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1141, __func__,
"assertion failed: %s", "fv->ftype->ftype == FT_BYTES || fv->ftype->ftype == FT_UINT_BYTES || fv->ftype->ftype == FT_VINES || fv->ftype->ftype == FT_ETHER || fv->ftype->ftype == FT_OID || fv->ftype->ftype == FT_REL_OID || fv->ftype->ftype == FT_SYSTEM_ID || fv->ftype->ftype == FT_FCWWN || fv->ftype->ftype == FT_IPv6"
); } while (0)
1134 fv->ftype->ftype == FT_UINT_BYTES ||do { if ((1) && !(fv->ftype->ftype == FT_BYTES ||
fv->ftype->ftype == FT_UINT_BYTES || fv->ftype->
ftype == FT_VINES || fv->ftype->ftype == FT_ETHER || fv
->ftype->ftype == FT_OID || fv->ftype->ftype == FT_REL_OID
|| fv->ftype->ftype == FT_SYSTEM_ID || fv->ftype->
ftype == FT_FCWWN || fv->ftype->ftype == FT_IPv6)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1141, __func__,
"assertion failed: %s", "fv->ftype->ftype == FT_BYTES || fv->ftype->ftype == FT_UINT_BYTES || fv->ftype->ftype == FT_VINES || fv->ftype->ftype == FT_ETHER || fv->ftype->ftype == FT_OID || fv->ftype->ftype == FT_REL_OID || fv->ftype->ftype == FT_SYSTEM_ID || fv->ftype->ftype == FT_FCWWN || fv->ftype->ftype == FT_IPv6"
); } while (0)
1135 fv->ftype->ftype == FT_VINES ||do { if ((1) && !(fv->ftype->ftype == FT_BYTES ||
fv->ftype->ftype == FT_UINT_BYTES || fv->ftype->
ftype == FT_VINES || fv->ftype->ftype == FT_ETHER || fv
->ftype->ftype == FT_OID || fv->ftype->ftype == FT_REL_OID
|| fv->ftype->ftype == FT_SYSTEM_ID || fv->ftype->
ftype == FT_FCWWN || fv->ftype->ftype == FT_IPv6)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1141, __func__,
"assertion failed: %s", "fv->ftype->ftype == FT_BYTES || fv->ftype->ftype == FT_UINT_BYTES || fv->ftype->ftype == FT_VINES || fv->ftype->ftype == FT_ETHER || fv->ftype->ftype == FT_OID || fv->ftype->ftype == FT_REL_OID || fv->ftype->ftype == FT_SYSTEM_ID || fv->ftype->ftype == FT_FCWWN || fv->ftype->ftype == FT_IPv6"
); } while (0)
1136 fv->ftype->ftype == FT_ETHER ||do { if ((1) && !(fv->ftype->ftype == FT_BYTES ||
fv->ftype->ftype == FT_UINT_BYTES || fv->ftype->
ftype == FT_VINES || fv->ftype->ftype == FT_ETHER || fv
->ftype->ftype == FT_OID || fv->ftype->ftype == FT_REL_OID
|| fv->ftype->ftype == FT_SYSTEM_ID || fv->ftype->
ftype == FT_FCWWN || fv->ftype->ftype == FT_IPv6)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1141, __func__,
"assertion failed: %s", "fv->ftype->ftype == FT_BYTES || fv->ftype->ftype == FT_UINT_BYTES || fv->ftype->ftype == FT_VINES || fv->ftype->ftype == FT_ETHER || fv->ftype->ftype == FT_OID || fv->ftype->ftype == FT_REL_OID || fv->ftype->ftype == FT_SYSTEM_ID || fv->ftype->ftype == FT_FCWWN || fv->ftype->ftype == FT_IPv6"
); } while (0)
1137 fv->ftype->ftype == FT_OID ||do { if ((1) && !(fv->ftype->ftype == FT_BYTES ||
fv->ftype->ftype == FT_UINT_BYTES || fv->ftype->
ftype == FT_VINES || fv->ftype->ftype == FT_ETHER || fv
->ftype->ftype == FT_OID || fv->ftype->ftype == FT_REL_OID
|| fv->ftype->ftype == FT_SYSTEM_ID || fv->ftype->
ftype == FT_FCWWN || fv->ftype->ftype == FT_IPv6)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1141, __func__,
"assertion failed: %s", "fv->ftype->ftype == FT_BYTES || fv->ftype->ftype == FT_UINT_BYTES || fv->ftype->ftype == FT_VINES || fv->ftype->ftype == FT_ETHER || fv->ftype->ftype == FT_OID || fv->ftype->ftype == FT_REL_OID || fv->ftype->ftype == FT_SYSTEM_ID || fv->ftype->ftype == FT_FCWWN || fv->ftype->ftype == FT_IPv6"
); } while (0)
1138 fv->ftype->ftype == FT_REL_OID ||do { if ((1) && !(fv->ftype->ftype == FT_BYTES ||
fv->ftype->ftype == FT_UINT_BYTES || fv->ftype->
ftype == FT_VINES || fv->ftype->ftype == FT_ETHER || fv
->ftype->ftype == FT_OID || fv->ftype->ftype == FT_REL_OID
|| fv->ftype->ftype == FT_SYSTEM_ID || fv->ftype->
ftype == FT_FCWWN || fv->ftype->ftype == FT_IPv6)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1141, __func__,
"assertion failed: %s", "fv->ftype->ftype == FT_BYTES || fv->ftype->ftype == FT_UINT_BYTES || fv->ftype->ftype == FT_VINES || fv->ftype->ftype == FT_ETHER || fv->ftype->ftype == FT_OID || fv->ftype->ftype == FT_REL_OID || fv->ftype->ftype == FT_SYSTEM_ID || fv->ftype->ftype == FT_FCWWN || fv->ftype->ftype == FT_IPv6"
); } while (0)
1139 fv->ftype->ftype == FT_SYSTEM_ID ||do { if ((1) && !(fv->ftype->ftype == FT_BYTES ||
fv->ftype->ftype == FT_UINT_BYTES || fv->ftype->
ftype == FT_VINES || fv->ftype->ftype == FT_ETHER || fv
->ftype->ftype == FT_OID || fv->ftype->ftype == FT_REL_OID
|| fv->ftype->ftype == FT_SYSTEM_ID || fv->ftype->
ftype == FT_FCWWN || fv->ftype->ftype == FT_IPv6)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1141, __func__,
"assertion failed: %s", "fv->ftype->ftype == FT_BYTES || fv->ftype->ftype == FT_UINT_BYTES || fv->ftype->ftype == FT_VINES || fv->ftype->ftype == FT_ETHER || fv->ftype->ftype == FT_OID || fv->ftype->ftype == FT_REL_OID || fv->ftype->ftype == FT_SYSTEM_ID || fv->ftype->ftype == FT_FCWWN || fv->ftype->ftype == FT_IPv6"
); } while (0)
1140 fv->ftype->ftype == FT_FCWWN ||do { if ((1) && !(fv->ftype->ftype == FT_BYTES ||
fv->ftype->ftype == FT_UINT_BYTES || fv->ftype->
ftype == FT_VINES || fv->ftype->ftype == FT_ETHER || fv
->ftype->ftype == FT_OID || fv->ftype->ftype == FT_REL_OID
|| fv->ftype->ftype == FT_SYSTEM_ID || fv->ftype->
ftype == FT_FCWWN || fv->ftype->ftype == FT_IPv6)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1141, __func__,
"assertion failed: %s", "fv->ftype->ftype == FT_BYTES || fv->ftype->ftype == FT_UINT_BYTES || fv->ftype->ftype == FT_VINES || fv->ftype->ftype == FT_ETHER || fv->ftype->ftype == FT_OID || fv->ftype->ftype == FT_REL_OID || fv->ftype->ftype == FT_SYSTEM_ID || fv->ftype->ftype == FT_FCWWN || fv->ftype->ftype == FT_IPv6"
); } while (0)
1141 fv->ftype->ftype == FT_IPv6)do { if ((1) && !(fv->ftype->ftype == FT_BYTES ||
fv->ftype->ftype == FT_UINT_BYTES || fv->ftype->
ftype == FT_VINES || fv->ftype->ftype == FT_ETHER || fv
->ftype->ftype == FT_OID || fv->ftype->ftype == FT_REL_OID
|| fv->ftype->ftype == FT_SYSTEM_ID || fv->ftype->
ftype == FT_FCWWN || fv->ftype->ftype == FT_IPv6)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1141, __func__,
"assertion failed: %s", "fv->ftype->ftype == FT_BYTES || fv->ftype->ftype == FT_UINT_BYTES || fv->ftype->ftype == FT_VINES || fv->ftype->ftype == FT_ETHER || fv->ftype->ftype == FT_OID || fv->ftype->ftype == FT_REL_OID || fv->ftype->ftype == FT_SYSTEM_ID || fv->ftype->ftype == FT_FCWWN || fv->ftype->ftype == FT_IPv6"
); } while (0)
;
1142 ws_assert(fv->ftype->get_value.get_value_bytes)do { if ((1) && !(fv->ftype->get_value.get_value_bytes
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1142, __func__, "assertion failed: %s", "fv->ftype->get_value.get_value_bytes"
); } while (0)
;
1143 return fv->ftype->get_value.get_value_bytes(fv);
1144}
1145
1146size_t
1147fvalue_get_bytes_size(fvalue_t *fv)
1148{
1149 GBytes *bytes = fvalue_get_bytes(fv);
1150 size_t size = g_bytes_get_size(bytes);
1151 g_bytes_unref(bytes);
1152 return size;
1153}
1154
1155const void *
1156fvalue_get_bytes_data(fvalue_t *fv)
1157{
1158 GBytes *bytes = fvalue_get_bytes(fv);
1159 const void *data = g_bytes_get_data(bytes, NULL((void*)0));
1160 g_bytes_unref(bytes);
1161 return data;
1162}
1163
1164const e_guid_t *
1165fvalue_get_guid(fvalue_t *fv)
1166{
1167 ws_assert(fv->ftype->ftype == FT_GUID)do { if ((1) && !(fv->ftype->ftype == FT_GUID))
ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1167, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_GUID"
); } while (0)
;
1168 ws_assert(fv->ftype->get_value.get_value_guid)do { if ((1) && !(fv->ftype->get_value.get_value_guid
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1168, __func__, "assertion failed: %s", "fv->ftype->get_value.get_value_guid"
); } while (0)
;
1169 return fv->ftype->get_value.get_value_guid(fv);
1170}
1171
1172const nstime_t *
1173fvalue_get_time(fvalue_t *fv)
1174{
1175 ws_assert(FT_IS_TIME(fv->ftype->ftype))do { if ((1) && !(((fv->ftype->ftype) == FT_ABSOLUTE_TIME
|| (fv->ftype->ftype) == FT_RELATIVE_TIME))) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1175, __func__,
"assertion failed: %s", "((fv->ftype->ftype) == FT_ABSOLUTE_TIME || (fv->ftype->ftype) == FT_RELATIVE_TIME)"
); } while (0)
;
1176 ws_assert(fv->ftype->get_value.get_value_time)do { if ((1) && !(fv->ftype->get_value.get_value_time
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1176, __func__, "assertion failed: %s", "fv->ftype->get_value.get_value_time"
); } while (0)
;
1177 return fv->ftype->get_value.get_value_time(fv);
1178}
1179
1180const char *
1181fvalue_get_string(fvalue_t *fv)
1182{
1183 return wmem_strbuf_get_str(fvalue_get_strbuf(fv));
1184}
1185
1186const wmem_strbuf_t *
1187fvalue_get_strbuf(fvalue_t *fv)
1188{
1189 ws_assert(FT_IS_STRING(fv->ftype->ftype))do { if ((1) && !(((fv->ftype->ftype) == FT_STRING
|| (fv->ftype->ftype) == FT_STRINGZ || (fv->ftype->
ftype) == FT_STRINGZPAD || (fv->ftype->ftype) == FT_STRINGZTRUNC
|| (fv->ftype->ftype) == FT_UINT_STRING || (fv->ftype
->ftype) == FT_AX25))) ws_log_fatal_full("", LOG_LEVEL_ERROR
, "epan/ftypes/ftypes.c", 1189, __func__, "assertion failed: %s"
, "((fv->ftype->ftype) == FT_STRING || (fv->ftype->ftype) == FT_STRINGZ || (fv->ftype->ftype) == FT_STRINGZPAD || (fv->ftype->ftype) == FT_STRINGZTRUNC || (fv->ftype->ftype) == FT_UINT_STRING || (fv->ftype->ftype) == FT_AX25)"
); } while (0)
;
1190 ws_assert(fv->ftype->get_value.get_value_strbuf)do { if ((1) && !(fv->ftype->get_value.get_value_strbuf
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1190, __func__, "assertion failed: %s", "fv->ftype->get_value.get_value_strbuf"
); } while (0)
;
1191 return fv->ftype->get_value.get_value_strbuf(fv);
1192}
1193
1194tvbuff_t *
1195fvalue_get_protocol(fvalue_t *fv)
1196{
1197 ws_assert(fv->ftype->ftype == FT_PROTOCOL)do { if ((1) && !(fv->ftype->ftype == FT_PROTOCOL
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1197, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_PROTOCOL"
); } while (0)
;
1198 ws_assert(fv->ftype->get_value.get_value_protocol)do { if ((1) && !(fv->ftype->get_value.get_value_protocol
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1198, __func__, "assertion failed: %s", "fv->ftype->get_value.get_value_protocol"
); } while (0)
;
1199 return fv->ftype->get_value.get_value_protocol(fv);
1200}
1201
1202uint32_t
1203fvalue_get_uinteger(fvalue_t *fv)
1204{
1205 ws_assert(fv->ftype->ftype == FT_IEEE_11073_SFLOAT ||do { if ((1) && !(fv->ftype->ftype == FT_IEEE_11073_SFLOAT
|| fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype
->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 ||
fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype
== FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->
ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1213, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_IEEE_11073_SFLOAT || fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 || fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype == FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM"
); } while (0)
1206 fv->ftype->ftype == FT_IEEE_11073_FLOAT ||do { if ((1) && !(fv->ftype->ftype == FT_IEEE_11073_SFLOAT
|| fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype
->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 ||
fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype
== FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->
ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1213, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_IEEE_11073_SFLOAT || fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 || fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype == FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM"
); } while (0)
1207 fv->ftype->ftype == FT_CHAR ||do { if ((1) && !(fv->ftype->ftype == FT_IEEE_11073_SFLOAT
|| fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype
->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 ||
fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype
== FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->
ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1213, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_IEEE_11073_SFLOAT || fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 || fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype == FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM"
); } while (0)
1208 fv->ftype->ftype == FT_UINT8 ||do { if ((1) && !(fv->ftype->ftype == FT_IEEE_11073_SFLOAT
|| fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype
->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 ||
fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype
== FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->
ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1213, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_IEEE_11073_SFLOAT || fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 || fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype == FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM"
); } while (0)
1209 fv->ftype->ftype == FT_UINT16 ||do { if ((1) && !(fv->ftype->ftype == FT_IEEE_11073_SFLOAT
|| fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype
->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 ||
fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype
== FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->
ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1213, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_IEEE_11073_SFLOAT || fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 || fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype == FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM"
); } while (0)
1210 fv->ftype->ftype == FT_UINT24 ||do { if ((1) && !(fv->ftype->ftype == FT_IEEE_11073_SFLOAT
|| fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype
->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 ||
fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype
== FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->
ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1213, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_IEEE_11073_SFLOAT || fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 || fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype == FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM"
); } while (0)
1211 fv->ftype->ftype == FT_UINT32 ||do { if ((1) && !(fv->ftype->ftype == FT_IEEE_11073_SFLOAT
|| fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype
->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 ||
fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype
== FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->
ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1213, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_IEEE_11073_SFLOAT || fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 || fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype == FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM"
); } while (0)
1212 fv->ftype->ftype == FT_IPXNET ||do { if ((1) && !(fv->ftype->ftype == FT_IEEE_11073_SFLOAT
|| fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype
->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 ||
fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype
== FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->
ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1213, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_IEEE_11073_SFLOAT || fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 || fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype == FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM"
); } while (0)
1213 fv->ftype->ftype == FT_FRAMENUM)do { if ((1) && !(fv->ftype->ftype == FT_IEEE_11073_SFLOAT
|| fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype
->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 ||
fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype
== FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->
ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1213, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_IEEE_11073_SFLOAT || fv->ftype->ftype == FT_IEEE_11073_FLOAT || fv->ftype->ftype == FT_CHAR || fv->ftype->ftype == FT_UINT8 || fv->ftype->ftype == FT_UINT16 || fv->ftype->ftype == FT_UINT24 || fv->ftype->ftype == FT_UINT32 || fv->ftype->ftype == FT_IPXNET || fv->ftype->ftype == FT_FRAMENUM"
); } while (0)
;
1214 ws_assert(fv->ftype->get_value.get_value_uinteger)do { if ((1) && !(fv->ftype->get_value.get_value_uinteger
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1214, __func__, "assertion failed: %s", "fv->ftype->get_value.get_value_uinteger"
); } while (0)
;
1215 return fv->ftype->get_value.get_value_uinteger(fv);
1216}
1217
1218int32_t
1219fvalue_get_sinteger(fvalue_t *fv)
1220{
1221 ws_assert(fv->ftype->ftype == FT_INT8 ||do { if ((1) && !(fv->ftype->ftype == FT_INT8 ||
fv->ftype->ftype == FT_INT16 || fv->ftype->ftype
== FT_INT24 || fv->ftype->ftype == FT_INT32)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1224, __func__,
"assertion failed: %s", "fv->ftype->ftype == FT_INT8 || fv->ftype->ftype == FT_INT16 || fv->ftype->ftype == FT_INT24 || fv->ftype->ftype == FT_INT32"
); } while (0)
1222 fv->ftype->ftype == FT_INT16 ||do { if ((1) && !(fv->ftype->ftype == FT_INT8 ||
fv->ftype->ftype == FT_INT16 || fv->ftype->ftype
== FT_INT24 || fv->ftype->ftype == FT_INT32)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1224, __func__,
"assertion failed: %s", "fv->ftype->ftype == FT_INT8 || fv->ftype->ftype == FT_INT16 || fv->ftype->ftype == FT_INT24 || fv->ftype->ftype == FT_INT32"
); } while (0)
1223 fv->ftype->ftype == FT_INT24 ||do { if ((1) && !(fv->ftype->ftype == FT_INT8 ||
fv->ftype->ftype == FT_INT16 || fv->ftype->ftype
== FT_INT24 || fv->ftype->ftype == FT_INT32)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1224, __func__,
"assertion failed: %s", "fv->ftype->ftype == FT_INT8 || fv->ftype->ftype == FT_INT16 || fv->ftype->ftype == FT_INT24 || fv->ftype->ftype == FT_INT32"
); } while (0)
1224 fv->ftype->ftype == FT_INT32)do { if ((1) && !(fv->ftype->ftype == FT_INT8 ||
fv->ftype->ftype == FT_INT16 || fv->ftype->ftype
== FT_INT24 || fv->ftype->ftype == FT_INT32)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1224, __func__,
"assertion failed: %s", "fv->ftype->ftype == FT_INT8 || fv->ftype->ftype == FT_INT16 || fv->ftype->ftype == FT_INT24 || fv->ftype->ftype == FT_INT32"
); } while (0)
;
1225 ws_assert(fv->ftype->get_value.get_value_sinteger)do { if ((1) && !(fv->ftype->get_value.get_value_sinteger
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1225, __func__, "assertion failed: %s", "fv->ftype->get_value.get_value_sinteger"
); } while (0)
;
1226 return fv->ftype->get_value.get_value_sinteger(fv);
1227}
1228
1229uint64_t
1230fvalue_get_uinteger64(fvalue_t *fv)
1231{
1232 ws_assert(fv->ftype->ftype == FT_UINT40 ||do { if ((1) && !(fv->ftype->ftype == FT_UINT40
|| fv->ftype->ftype == FT_UINT48 || fv->ftype->ftype
== FT_UINT56 || fv->ftype->ftype == FT_UINT64 || fv->
ftype->ftype == FT_BOOLEAN || fv->ftype->ftype == FT_EUI64
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1237, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_UINT40 || fv->ftype->ftype == FT_UINT48 || fv->ftype->ftype == FT_UINT56 || fv->ftype->ftype == FT_UINT64 || fv->ftype->ftype == FT_BOOLEAN || fv->ftype->ftype == FT_EUI64"
); } while (0)
1233 fv->ftype->ftype == FT_UINT48 ||do { if ((1) && !(fv->ftype->ftype == FT_UINT40
|| fv->ftype->ftype == FT_UINT48 || fv->ftype->ftype
== FT_UINT56 || fv->ftype->ftype == FT_UINT64 || fv->
ftype->ftype == FT_BOOLEAN || fv->ftype->ftype == FT_EUI64
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1237, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_UINT40 || fv->ftype->ftype == FT_UINT48 || fv->ftype->ftype == FT_UINT56 || fv->ftype->ftype == FT_UINT64 || fv->ftype->ftype == FT_BOOLEAN || fv->ftype->ftype == FT_EUI64"
); } while (0)
1234 fv->ftype->ftype == FT_UINT56 ||do { if ((1) && !(fv->ftype->ftype == FT_UINT40
|| fv->ftype->ftype == FT_UINT48 || fv->ftype->ftype
== FT_UINT56 || fv->ftype->ftype == FT_UINT64 || fv->
ftype->ftype == FT_BOOLEAN || fv->ftype->ftype == FT_EUI64
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1237, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_UINT40 || fv->ftype->ftype == FT_UINT48 || fv->ftype->ftype == FT_UINT56 || fv->ftype->ftype == FT_UINT64 || fv->ftype->ftype == FT_BOOLEAN || fv->ftype->ftype == FT_EUI64"
); } while (0)
1235 fv->ftype->ftype == FT_UINT64 ||do { if ((1) && !(fv->ftype->ftype == FT_UINT40
|| fv->ftype->ftype == FT_UINT48 || fv->ftype->ftype
== FT_UINT56 || fv->ftype->ftype == FT_UINT64 || fv->
ftype->ftype == FT_BOOLEAN || fv->ftype->ftype == FT_EUI64
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1237, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_UINT40 || fv->ftype->ftype == FT_UINT48 || fv->ftype->ftype == FT_UINT56 || fv->ftype->ftype == FT_UINT64 || fv->ftype->ftype == FT_BOOLEAN || fv->ftype->ftype == FT_EUI64"
); } while (0)
1236 fv->ftype->ftype == FT_BOOLEAN ||do { if ((1) && !(fv->ftype->ftype == FT_UINT40
|| fv->ftype->ftype == FT_UINT48 || fv->ftype->ftype
== FT_UINT56 || fv->ftype->ftype == FT_UINT64 || fv->
ftype->ftype == FT_BOOLEAN || fv->ftype->ftype == FT_EUI64
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1237, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_UINT40 || fv->ftype->ftype == FT_UINT48 || fv->ftype->ftype == FT_UINT56 || fv->ftype->ftype == FT_UINT64 || fv->ftype->ftype == FT_BOOLEAN || fv->ftype->ftype == FT_EUI64"
); } while (0)
1237 fv->ftype->ftype == FT_EUI64)do { if ((1) && !(fv->ftype->ftype == FT_UINT40
|| fv->ftype->ftype == FT_UINT48 || fv->ftype->ftype
== FT_UINT56 || fv->ftype->ftype == FT_UINT64 || fv->
ftype->ftype == FT_BOOLEAN || fv->ftype->ftype == FT_EUI64
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1237, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_UINT40 || fv->ftype->ftype == FT_UINT48 || fv->ftype->ftype == FT_UINT56 || fv->ftype->ftype == FT_UINT64 || fv->ftype->ftype == FT_BOOLEAN || fv->ftype->ftype == FT_EUI64"
); } while (0)
;
1238 ws_assert(fv->ftype->get_value.get_value_uinteger64)do { if ((1) && !(fv->ftype->get_value.get_value_uinteger64
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1238, __func__, "assertion failed: %s", "fv->ftype->get_value.get_value_uinteger64"
); } while (0)
;
1239 return fv->ftype->get_value.get_value_uinteger64(fv);
1240}
1241
1242int64_t
1243fvalue_get_sinteger64(fvalue_t *fv)
1244{
1245 ws_assert(fv->ftype->ftype == FT_INT40 ||do { if ((1) && !(fv->ftype->ftype == FT_INT40 ||
fv->ftype->ftype == FT_INT48 || fv->ftype->ftype
== FT_INT56 || fv->ftype->ftype == FT_INT64)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1248, __func__,
"assertion failed: %s", "fv->ftype->ftype == FT_INT40 || fv->ftype->ftype == FT_INT48 || fv->ftype->ftype == FT_INT56 || fv->ftype->ftype == FT_INT64"
); } while (0)
1246 fv->ftype->ftype == FT_INT48 ||do { if ((1) && !(fv->ftype->ftype == FT_INT40 ||
fv->ftype->ftype == FT_INT48 || fv->ftype->ftype
== FT_INT56 || fv->ftype->ftype == FT_INT64)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1248, __func__,
"assertion failed: %s", "fv->ftype->ftype == FT_INT40 || fv->ftype->ftype == FT_INT48 || fv->ftype->ftype == FT_INT56 || fv->ftype->ftype == FT_INT64"
); } while (0)
1247 fv->ftype->ftype == FT_INT56 ||do { if ((1) && !(fv->ftype->ftype == FT_INT40 ||
fv->ftype->ftype == FT_INT48 || fv->ftype->ftype
== FT_INT56 || fv->ftype->ftype == FT_INT64)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1248, __func__,
"assertion failed: %s", "fv->ftype->ftype == FT_INT40 || fv->ftype->ftype == FT_INT48 || fv->ftype->ftype == FT_INT56 || fv->ftype->ftype == FT_INT64"
); } while (0)
1248 fv->ftype->ftype == FT_INT64)do { if ((1) && !(fv->ftype->ftype == FT_INT40 ||
fv->ftype->ftype == FT_INT48 || fv->ftype->ftype
== FT_INT56 || fv->ftype->ftype == FT_INT64)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1248, __func__,
"assertion failed: %s", "fv->ftype->ftype == FT_INT40 || fv->ftype->ftype == FT_INT48 || fv->ftype->ftype == FT_INT56 || fv->ftype->ftype == FT_INT64"
); } while (0)
;
1249 ws_assert(fv->ftype->get_value.get_value_sinteger64)do { if ((1) && !(fv->ftype->get_value.get_value_sinteger64
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1249, __func__, "assertion failed: %s", "fv->ftype->get_value.get_value_sinteger64"
); } while (0)
;
1250 return fv->ftype->get_value.get_value_sinteger64(fv);
1251}
1252
1253double
1254fvalue_get_floating(fvalue_t *fv)
1255{
1256 ws_assert(fv->ftype->ftype == FT_FLOAT ||do { if ((1) && !(fv->ftype->ftype == FT_FLOAT ||
fv->ftype->ftype == FT_DOUBLE)) ws_log_fatal_full("", LOG_LEVEL_ERROR
, "epan/ftypes/ftypes.c", 1257, __func__, "assertion failed: %s"
, "fv->ftype->ftype == FT_FLOAT || fv->ftype->ftype == FT_DOUBLE"
); } while (0)
1257 fv->ftype->ftype == FT_DOUBLE)do { if ((1) && !(fv->ftype->ftype == FT_FLOAT ||
fv->ftype->ftype == FT_DOUBLE)) ws_log_fatal_full("", LOG_LEVEL_ERROR
, "epan/ftypes/ftypes.c", 1257, __func__, "assertion failed: %s"
, "fv->ftype->ftype == FT_FLOAT || fv->ftype->ftype == FT_DOUBLE"
); } while (0)
;
1258 ws_assert(fv->ftype->get_value.get_value_floating)do { if ((1) && !(fv->ftype->get_value.get_value_floating
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1258, __func__, "assertion failed: %s", "fv->ftype->get_value.get_value_floating"
); } while (0)
;
1259 return fv->ftype->get_value.get_value_floating(fv);
1260}
1261
1262const ipv4_addr_and_mask *
1263fvalue_get_ipv4(fvalue_t *fv)
1264{
1265 ws_assert(fv->ftype->ftype == FT_IPv4)do { if ((1) && !(fv->ftype->ftype == FT_IPv4))
ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1265, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_IPv4"
); } while (0)
;
1266 ws_assert(fv->ftype->get_value.get_value_ipv4)do { if ((1) && !(fv->ftype->get_value.get_value_ipv4
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1266, __func__, "assertion failed: %s", "fv->ftype->get_value.get_value_ipv4"
); } while (0)
;
1267 return fv->ftype->get_value.get_value_ipv4(fv);
1268}
1269
1270const ipv6_addr_and_prefix *
1271fvalue_get_ipv6(fvalue_t *fv)
1272{
1273 ws_assert(fv->ftype->ftype == FT_IPv6)do { if ((1) && !(fv->ftype->ftype == FT_IPv6))
ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1273, __func__, "assertion failed: %s", "fv->ftype->ftype == FT_IPv6"
); } while (0)
;
1274 ws_assert(fv->ftype->get_value.get_value_ipv6)do { if ((1) && !(fv->ftype->get_value.get_value_ipv6
)) ws_log_fatal_full("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c"
, 1274, __func__, "assertion failed: %s", "fv->ftype->get_value.get_value_ipv6"
); } while (0)
;
1275 return fv->ftype->get_value.get_value_ipv6(fv);
1276}
1277
1278ft_bool_t
1279fvalue_eq(const fvalue_t *a, const fvalue_t *b)
1280{
1281 int cmp;
1282 enum ft_result res;
1283
1284 ws_assert(a->ftype->compare)do { if ((1) && !(a->ftype->compare)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1284, __func__,
"assertion failed: %s", "a->ftype->compare"); } while (
0)
;
1285 res = a->ftype->compare(a, b, &cmp);
1286 if (res != FT_OK)
1287 return -res;
1288 return cmp == 0 ? FT_TRUE1 : FT_FALSE0;
1289}
1290
1291ft_bool_t
1292fvalue_ne(const fvalue_t *a, const fvalue_t *b)
1293{
1294 int cmp;
1295 enum ft_result res;
1296
1297 ws_assert(a->ftype->compare)do { if ((1) && !(a->ftype->compare)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1297, __func__,
"assertion failed: %s", "a->ftype->compare"); } while (
0)
;
1298 res = a->ftype->compare(a, b, &cmp);
1299 if (res != FT_OK)
1300 return -res;
1301 return cmp != 0 ? FT_TRUE1 : FT_FALSE0;
1302}
1303
1304ft_bool_t
1305fvalue_gt(const fvalue_t *a, const fvalue_t *b)
1306{
1307 int cmp;
1308 enum ft_result res;
1309
1310 ws_assert(a->ftype->compare)do { if ((1) && !(a->ftype->compare)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1310, __func__,
"assertion failed: %s", "a->ftype->compare"); } while (
0)
;
1311 res = a->ftype->compare(a, b, &cmp);
1312 if (res != FT_OK)
1313 return -res;
1314 return cmp > 0 ? FT_TRUE1 : FT_FALSE0;
1315}
1316
1317ft_bool_t
1318fvalue_ge(const fvalue_t *a, const fvalue_t *b)
1319{
1320 int cmp;
1321 enum ft_result res;
1322
1323 ws_assert(a->ftype->compare)do { if ((1) && !(a->ftype->compare)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1323, __func__,
"assertion failed: %s", "a->ftype->compare"); } while (
0)
;
1324 res = a->ftype->compare(a, b, &cmp);
1325 if (res != FT_OK)
1326 return -res;
1327 return cmp >= 0 ? FT_TRUE1 : FT_FALSE0;
1328}
1329
1330ft_bool_t
1331fvalue_lt(const fvalue_t *a, const fvalue_t *b)
1332{
1333 int cmp;
1334 enum ft_result res;
1335
1336 ws_assert(a->ftype->compare)do { if ((1) && !(a->ftype->compare)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1336, __func__,
"assertion failed: %s", "a->ftype->compare"); } while (
0)
;
1337 res = a->ftype->compare(a, b, &cmp);
1338 if (res != FT_OK)
1339 return -res;
1340 return cmp < 0 ? FT_TRUE1 : FT_FALSE0;
1341}
1342
1343ft_bool_t
1344fvalue_le(const fvalue_t *a, const fvalue_t *b)
1345{
1346 int cmp;
1347 enum ft_result res;
1348
1349 ws_assert(a->ftype->compare)do { if ((1) && !(a->ftype->compare)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1349, __func__,
"assertion failed: %s", "a->ftype->compare"); } while (
0)
;
1350 res = a->ftype->compare(a, b, &cmp);
1351 if (res != FT_OK)
1352 return -res;
1353 return cmp <= 0 ? FT_TRUE1 : FT_FALSE0;
1354}
1355
1356ft_bool_t
1357fvalue_contains(const fvalue_t *a, const fvalue_t *b)
1358{
1359 bool_Bool yes;
1360 enum ft_result res;
1361
1362 ws_assert(a->ftype->contains)do { if ((1) && !(a->ftype->contains)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1362, __func__,
"assertion failed: %s", "a->ftype->contains"); } while
(0)
;
1363 res = a->ftype->contains(a, b, &yes);
1364 if (res != FT_OK)
1365 return -res;
1366 return yes ? FT_TRUE1 : FT_FALSE0;
1367}
1368
1369ft_bool_t
1370fvalue_matches(const fvalue_t *a, const ws_regex_t *re)
1371{
1372 bool_Bool yes;
1373 enum ft_result res;
1374
1375 ws_assert(a->ftype->matches)do { if ((1) && !(a->ftype->matches)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1375, __func__,
"assertion failed: %s", "a->ftype->matches"); } while (
0)
;
1376 res = a->ftype->matches(a, re, &yes);
1377 if (res != FT_OK)
1378 return -res;
1379 return yes ? FT_TRUE1 : FT_FALSE0;
1380}
1381
1382ft_bool_t
1383fvalue_is_zero(const fvalue_t *a)
1384{
1385 return a->ftype->is_zero(a) ? FT_TRUE1 : FT_FALSE0;
1386}
1387
1388ft_bool_t
1389fvalue_is_negative(const fvalue_t *a)
1390{
1391 return a->ftype->is_negative(a) ? FT_TRUE1 : FT_FALSE0;
1392}
1393
1394static fvalue_t *
1395_fvalue_binop(FvalueBinaryOp op, const fvalue_t *a, const fvalue_t *b, char **err_msg)
1396{
1397 fvalue_t *result;
1398
1399 result = fvalue_new(a->ftype->ftype);
1400 if (op(result, a, b, err_msg) != FT_OK) {
1401 fvalue_free(result);
1402 return NULL((void*)0);
1403 }
1404 return result;
1405}
1406
1407fvalue_t *
1408fvalue_bitwise_and(const fvalue_t *a, const fvalue_t *b, char **err_msg)
1409{
1410 /* XXX - check compatibility of a and b */
1411 ws_assert(a->ftype->bitwise_and)do { if ((1) && !(a->ftype->bitwise_and)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1411, __func__,
"assertion failed: %s", "a->ftype->bitwise_and"); } while
(0)
;
1412 return _fvalue_binop(a->ftype->bitwise_and, a, b, err_msg);
1413}
1414
1415fvalue_t *
1416fvalue_add(const fvalue_t *a, const fvalue_t *b, char **err_msg)
1417{
1418 /* XXX - check compatibility of a and b */
1419 ws_assert(a->ftype->add)do { if ((1) && !(a->ftype->add)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1419, __func__,
"assertion failed: %s", "a->ftype->add"); } while (0)
;
1420 return _fvalue_binop(a->ftype->add, a, b, err_msg);
1421}
1422
1423fvalue_t *
1424fvalue_subtract(const fvalue_t *a, const fvalue_t *b, char **err_msg)
1425{
1426 /* XXX - check compatibility of a and b */
1427 ws_assert(a->ftype->subtract)do { if ((1) && !(a->ftype->subtract)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1427, __func__,
"assertion failed: %s", "a->ftype->subtract"); } while
(0)
;
1428 return _fvalue_binop(a->ftype->subtract, a, b, err_msg);
1429}
1430
1431fvalue_t *
1432fvalue_multiply(const fvalue_t *a, const fvalue_t *b, char **err_msg)
1433{
1434 /* XXX - check compatibility of a and b */
1435 ws_assert(a->ftype->multiply)do { if ((1) && !(a->ftype->multiply)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1435, __func__,
"assertion failed: %s", "a->ftype->multiply"); } while
(0)
;
1436 return _fvalue_binop(a->ftype->multiply, a, b, err_msg);
1437}
1438
1439fvalue_t *
1440fvalue_divide(const fvalue_t *a, const fvalue_t *b, char **err_msg)
1441{
1442 /* XXX - check compatibility of a and b */
1443 ws_assert(a->ftype->divide)do { if ((1) && !(a->ftype->divide)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1443, __func__,
"assertion failed: %s", "a->ftype->divide"); } while (
0)
;
1444 return _fvalue_binop(a->ftype->divide, a, b, err_msg);
1445}
1446
1447fvalue_t *
1448fvalue_modulo(const fvalue_t *a, const fvalue_t *b, char **err_msg)
1449{
1450 /* XXX - check compatibility of a and b */
1451 ws_assert(a->ftype->modulo)do { if ((1) && !(a->ftype->modulo)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1451, __func__,
"assertion failed: %s", "a->ftype->modulo"); } while (
0)
;
1452 return _fvalue_binop(a->ftype->modulo, a, b, err_msg);
1453}
1454
1455fvalue_t*
1456fvalue_unary_minus(const fvalue_t *fv, char **err_msg)
1457{
1458 fvalue_t *result;
1459
1460 ws_assert(fv->ftype->unary_minus)do { if ((1) && !(fv->ftype->unary_minus)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1460, __func__,
"assertion failed: %s", "fv->ftype->unary_minus"); } while
(0)
;
1461
1462 result = fvalue_new(fv->ftype->ftype);
1463 if (fv->ftype->unary_minus(result, fv, err_msg) != FT_OK) {
1464 fvalue_free(result);
1465 return NULL((void*)0);
1466 }
1467 return result;
1468}
1469
1470unsigned
1471fvalue_hash(const fvalue_t *fv)
1472{
1473 ws_assert(fv->ftype->hash)do { if ((1) && !(fv->ftype->hash)) ws_log_fatal_full
("", LOG_LEVEL_ERROR, "epan/ftypes/ftypes.c", 1473, __func__,
"assertion failed: %s", "fv->ftype->hash"); } while (0
)
;
1474 return fv->ftype->hash(fv);
1475}
1476
1477bool_Bool
1478fvalue_equal(const fvalue_t *a, const fvalue_t *b)
1479{
1480 return fvalue_eq(a, b) == FT_TRUE1;
1481}
1482
1483/*
1484 * Editor modelines - https://www.wireshark.org/tools/modelines.html
1485 *
1486 * Local variables:
1487 * c-basic-offset: 8
1488 * tab-width: 8
1489 * indent-tabs-mode: t
1490 * End:
1491 *
1492 * vi: set shiftwidth=8 tabstop=8 noexpandtab:
1493 * :indentSize=8:tabSize=8:noTabs=false:
1494 */