summaryrefslogtreecommitdiff
path: root/epan/ftypes
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2014-01-15 01:05:03 +0000
committerGuy Harris <guy@alum.mit.edu>2014-01-15 01:05:03 +0000
commit61867d0b2f80971dc6927c50f61a4d2bb0420cad (patch)
treea4cfeca9c61d79a3372b925a99cf9606efcce64b /epan/ftypes
parent04b18f44c1af4da3c8c089c58bbc9bb2a1362bc1 (diff)
downloadwireshark-61867d0b2f80971dc6927c50f61a4d2bb0420cad.tar.gz
Eliminate fvalue_set() in favor of routines that take arguments
appropriate for particular FT_ types. This lets us do some more type checking and lets us use const pointers when appropriate. Constify a bunch of stuff, and don't cast away constness. svn path=/trunk/; revision=54811
Diffstat (limited to 'epan/ftypes')
-rw-r--r--epan/ftypes/ftype-bytes.c149
-rw-r--r--epan/ftypes/ftype-double.c16
-rw-r--r--epan/ftypes/ftype-guid.c19
-rw-r--r--epan/ftypes/ftype-integer.c172
-rw-r--r--epan/ftypes/ftype-ipv4.c13
-rw-r--r--epan/ftypes/ftype-ipv6.c15
-rw-r--r--epan/ftypes/ftype-none.c7
-rw-r--r--epan/ftypes/ftype-pcre.c16
-rw-r--r--epan/ftypes/ftype-string.c32
-rw-r--r--epan/ftypes/ftype-time.c32
-rw-r--r--epan/ftypes/ftype-tvbuff.c17
-rw-r--r--epan/ftypes/ftypes-int.h18
-rw-r--r--epan/ftypes/ftypes.c47
-rw-r--r--epan/ftypes/ftypes.h21
14 files changed, 396 insertions, 178 deletions
diff --git a/epan/ftypes/ftype-bytes.c b/epan/ftypes/ftype-bytes.c
index 62fb62cbd3..74d96b0687 100644
--- a/epan/ftypes/ftype-bytes.c
+++ b/epan/ftypes/ftype-bytes.c
@@ -50,14 +50,12 @@ bytes_fvalue_free(fvalue_t *fv)
static void
-bytes_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied)
+bytes_fvalue_set(fvalue_t *fv, GByteArray *value)
{
- g_assert(already_copied);
-
/* Free up the old value, if we have one */
bytes_fvalue_free(fv);
- fv->value.bytes = (GByteArray *)value;
+ fv->value.bytes = value;
}
static int
@@ -163,7 +161,7 @@ bytes_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, char *buf)
}
static void
-common_fvalue_set(fvalue_t *fv, guint8* data, guint len)
+common_fvalue_set(fvalue_t *fv, const guint8* data, guint len)
{
/* Free up the old value, if we have one */
bytes_fvalue_free(fv);
@@ -173,46 +171,39 @@ common_fvalue_set(fvalue_t *fv, guint8* data, guint len)
}
static void
-ax25_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied)
+ax25_fvalue_set(fvalue_t *fv, const guint8 *value)
{
- g_assert(!already_copied);
- common_fvalue_set(fv, (guint8 *)value, FT_AX25_ADDR_LEN);
+ common_fvalue_set(fv, value, FT_AX25_ADDR_LEN);
}
static void
-vines_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied)
+vines_fvalue_set(fvalue_t *fv, const guint8 *value)
{
- g_assert(!already_copied);
- common_fvalue_set(fv, (guint8 *)value, FT_VINES_ADDR_LEN);
+ common_fvalue_set(fv, value, FT_VINES_ADDR_LEN);
}
static void
-ether_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied)
+ether_fvalue_set(fvalue_t *fv, const guint8 *value)
{
- g_assert(!already_copied);
- common_fvalue_set(fv, (guint8*)value, FT_ETHER_LEN);
+ common_fvalue_set(fv, value, FT_ETHER_LEN);
}
static void
-oid_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied)
+oid_fvalue_set(fvalue_t *fv, GByteArray *value)
{
- g_assert(already_copied);
-
/* Free up the old value, if we have one */
bytes_fvalue_free(fv);
- fv->value.bytes = (GByteArray *)value;
+ fv->value.bytes = value;
}
static void
-system_id_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied)
+system_id_fvalue_set(fvalue_t *fv, GByteArray *value)
{
- g_assert(already_copied);
-
/* Free up the old value, if we have one */
bytes_fvalue_free(fv);
- fv->value.bytes = (GByteArray *)value;
+ fv->value.bytes = value;
}
static gpointer
@@ -222,7 +213,7 @@ value_get(fvalue_t *fv)
}
static gboolean
-bytes_from_string(fvalue_t *fv, char *s, LogFunc logfunc _U_)
+bytes_from_string(fvalue_t *fv, const char *s, LogFunc logfunc _U_)
{
GByteArray *bytes;
@@ -238,7 +229,7 @@ bytes_from_string(fvalue_t *fv, char *s, LogFunc logfunc _U_)
}
static gboolean
-bytes_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
+bytes_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
{
GByteArray *bytes;
gboolean res;
@@ -263,7 +254,7 @@ bytes_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, Log
}
static gboolean
-ax25_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc logfunc)
+ax25_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, LogFunc logfunc)
{
/*
* Don't log a message if this fails; we'll try looking it
@@ -321,7 +312,7 @@ ax25_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc
}
static gboolean
-vines_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc logfunc)
+vines_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, LogFunc logfunc)
{
/*
* Don't log a message if this fails; we'll try looking it
@@ -350,7 +341,7 @@ vines_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc
}
static gboolean
-ether_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc logfunc)
+ether_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, LogFunc logfunc)
{
guint8 *mac;
@@ -381,12 +372,12 @@ ether_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc
return FALSE;
}
- ether_fvalue_set(fv, mac, FALSE);
+ ether_fvalue_set(fv, mac);
return TRUE;
}
static gboolean
-oid_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
+oid_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
{
GByteArray *bytes;
gboolean res;
@@ -420,7 +411,7 @@ oid_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFu
}
static gboolean
-rel_oid_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
+rel_oid_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
{
GByteArray *bytes;
gboolean res;
@@ -448,7 +439,7 @@ rel_oid_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, L
}
static gboolean
-system_id_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
+system_id_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
{
/*
* Don't log a message if this fails; we'll try looking it
@@ -677,28 +668,33 @@ ftype_register_bytes(void)
{
static ftype_t bytes_type = {
- FT_BYTES, /* ftype */
- "FT_BYTES", /* name */
+ FT_BYTES, /* ftype */
+ "FT_BYTES", /* name */
"Sequence of bytes", /* pretty_name */
- 0, /* wire_size */
- bytes_fvalue_new, /* new_value */
- bytes_fvalue_free, /* free_value */
+ 0, /* wire_size */
+ bytes_fvalue_new, /* new_value */
+ bytes_fvalue_free, /* free_value */
bytes_from_unparsed, /* val_from_unparsed */
- bytes_from_string, /* val_from_string */
- bytes_to_repr, /* val_to_string_repr */
- bytes_repr_len, /* len_string_repr */
-
- bytes_fvalue_set, /* set_value */
- NULL, /* set_value_uinteger */
- NULL, /* set_value_sinteger */
- NULL, /* set_value_integer64 */
- NULL, /* set_value_floating */
-
- value_get, /* get_value */
- NULL, /* get_value_uinteger */
- NULL, /* get_value_sinteger */
- NULL, /* get_value_integer64 */
- NULL, /* get_value_floating */
+ bytes_from_string, /* val_from_string */
+ bytes_to_repr, /* val_to_string_repr */
+ bytes_repr_len, /* len_string_repr */
+
+ bytes_fvalue_set, /* set_value_byte_array */
+ NULL, /* set_value_bytes */
+ NULL, /* set_value_guid */
+ NULL, /* set_value_time */
+ NULL, /* set_value_string */
+ NULL, /* set_value_tvbuff */
+ NULL, /* set_value_uinteger */
+ NULL, /* set_value_sinteger */
+ NULL, /* set_value_integer64 */
+ NULL, /* set_value_floating */
+
+ value_get, /* get_value */
+ NULL, /* get_value_uinteger */
+ NULL, /* get_value_sinteger */
+ NULL, /* get_value_integer64 */
+ NULL, /* get_value_floating */
cmp_eq,
cmp_ne,
@@ -726,7 +722,12 @@ ftype_register_bytes(void)
bytes_to_repr, /* val_to_string_repr */
bytes_repr_len, /* len_string_repr */
- bytes_fvalue_set, /* set_value */
+ bytes_fvalue_set, /* set_value_byte_array */
+ NULL, /* set_value_bytes */
+ NULL, /* set_value_guid */
+ NULL, /* set_value_time */
+ NULL, /* set_value_string */
+ NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
NULL, /* set_value_integer64 */
@@ -764,7 +765,12 @@ ftype_register_bytes(void)
bytes_to_repr, /* val_to_string_repr */
bytes_repr_len, /* len_string_repr */
- ax25_fvalue_set, /* set_value */
+ NULL, /* set_value_byte_array */
+ ax25_fvalue_set, /* set_value_bytes */
+ NULL, /* set_value_guid */
+ NULL, /* set_value_time */
+ NULL, /* set_value_string */
+ NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_integer */
NULL, /* set_value_integer64 */
@@ -797,12 +803,17 @@ ftype_register_bytes(void)
FT_VINES_ADDR_LEN, /* wire_size */
bytes_fvalue_new, /* new_value */
bytes_fvalue_free, /* free_value */
- vines_from_unparsed, /* val_from_unparsed */
+ vines_from_unparsed, /* val_from_unparsed */
NULL, /* val_from_string */
bytes_to_repr, /* val_to_string_repr */
bytes_repr_len, /* len_string_repr */
- vines_fvalue_set, /* set_value */
+ NULL, /* set_value_byte_array */
+ vines_fvalue_set, /* set_value_bytes */
+ NULL, /* set_value_guid */
+ NULL, /* set_value_time */
+ NULL, /* set_value_string */
+ NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_integer */
NULL, /* set_value_integer64 */
@@ -840,7 +851,12 @@ ftype_register_bytes(void)
bytes_to_repr, /* val_to_string_repr */
bytes_repr_len, /* len_string_repr */
- ether_fvalue_set, /* set_value */
+ NULL, /* set_value_byte_array */
+ ether_fvalue_set, /* set_value_bytes */
+ NULL, /* set_value_guid */
+ NULL, /* set_value_time */
+ NULL, /* set_value_string */
+ NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
NULL, /* set_value_integer64 */
@@ -878,7 +894,12 @@ ftype_register_bytes(void)
oid_to_repr, /* val_to_string_repr */
oid_repr_len, /* len_string_repr */
- oid_fvalue_set, /* set_value */
+ oid_fvalue_set, /* set_value_byte_array */
+ NULL, /* set_value_bytes */
+ NULL, /* set_value_guid */
+ NULL, /* set_value_time */
+ NULL, /* set_value_string */
+ NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
NULL, /* set_value_integer64 */
@@ -916,7 +937,12 @@ ftype_register_bytes(void)
rel_oid_to_repr, /* val_to_string_repr */
rel_oid_repr_len, /* len_string_repr */
- oid_fvalue_set, /* set_value (same as full oid) */
+ oid_fvalue_set, /* set_value_byte_array (same as full oid) */
+ NULL, /* set_value_bytes */
+ NULL, /* set_value_guid */
+ NULL, /* set_value_time */
+ NULL, /* set_value_string */
+ NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
NULL, /* set_value_integer64 */
@@ -954,7 +980,12 @@ ftype_register_bytes(void)
system_id_to_repr, /* val_to_string_repr */
bytes_repr_len, /* len_string_repr */
- system_id_fvalue_set, /* set_value */
+ system_id_fvalue_set, /* set_value_byte_array */
+ NULL, /* set_value_bytes */
+ NULL, /* set_value_guid */
+ NULL, /* set_value_time */
+ NULL, /* set_value_string */
+ NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
NULL, /* set_value_integer64 */
diff --git a/epan/ftypes/ftype-double.c b/epan/ftypes/ftype-double.c
index 6c81838cb9..7df01003bb 100644
--- a/epan/ftypes/ftype-double.c
+++ b/epan/ftypes/ftype-double.c
@@ -49,7 +49,7 @@ value_get_floating(fvalue_t *fv)
}
static gboolean
-val_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
+val_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
{
char *endptr = NULL;
@@ -166,7 +166,12 @@ ftype_register_double(void)
float_val_to_repr, /* val_to_string_repr */
float_val_repr_len, /* len_string_repr */
- NULL, /* set_value */
+ NULL, /* set_value_byte_array */
+ NULL, /* set_value_bytes */
+ NULL, /* set_value_guid */
+ NULL, /* set_value_time */
+ NULL, /* set_value_string */
+ NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_snteger */
NULL, /* set_value_integer64 */
@@ -204,7 +209,12 @@ ftype_register_double(void)
double_val_to_repr, /* val_to_string_repr */
double_val_repr_len, /* len_string_repr */
- NULL, /* set_value */
+ NULL, /* set_value_byte_array */
+ NULL, /* set_value_bytes */
+ NULL, /* set_value_guid */
+ NULL, /* set_value_time */
+ NULL, /* set_value_string */
+ NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
NULL, /* set_value_integer64 */
diff --git a/epan/ftypes/ftype-guid.c b/epan/ftypes/ftype-guid.c
index 191694bee6..205ffc453d 100644
--- a/epan/ftypes/ftype-guid.c
+++ b/epan/ftypes/ftype-guid.c
@@ -31,10 +31,9 @@
#include <epan/to_str.h>
static void
-guid_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied)
+guid_fvalue_set_guid(fvalue_t *fv, const e_guid_t *value)
{
- g_assert(!already_copied);
- fv->value.guid = *(e_guid_t*)value;
+ fv->value.guid = *value;
}
static gpointer
@@ -44,10 +43,11 @@ value_get(fvalue_t *fv)
}
static gboolean
-get_guid(char *s, e_guid_t *guid)
+get_guid(const char *s, e_guid_t *guid)
{
size_t i, n;
- char *p, digits[9];
+ const char *p;
+ char digits[9];
static const char fmt[] = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";
n = strlen(s);
@@ -87,7 +87,7 @@ get_guid(char *s, e_guid_t *guid)
}
static gboolean
-guid_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
+guid_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
{
e_guid_t guid;
@@ -140,7 +140,12 @@ ftype_register_guid(void)
guid_to_repr, /* val_to_string_repr */
guid_repr_len, /* len_string_repr */
- guid_fvalue_set, /* set_value */
+ NULL, /* set_value_byte_array */
+ NULL, /* set_value_bytes */
+ guid_fvalue_set_guid, /* set_value_guid */
+ NULL, /* set_value_time */
+ NULL, /* set_value_string */
+ NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
NULL, /* set_value_integer64 */
diff --git a/epan/ftypes/ftype-integer.c b/epan/ftypes/ftype-integer.c
index be401a0b3a..aeaf750710 100644
--- a/epan/ftypes/ftype-integer.c
+++ b/epan/ftypes/ftype-integer.c
@@ -64,7 +64,7 @@ get_sinteger(fvalue_t *fv)
static gboolean
-uint_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc,
+uint_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc,
guint32 max)
{
unsigned long value;
@@ -117,31 +117,31 @@ uint_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogF
}
static gboolean
-uint32_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc logfunc)
+uint32_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, LogFunc logfunc)
{
return uint_from_unparsed (fv, s, allow_partial_value, logfunc, G_MAXUINT32);
}
static gboolean
-uint24_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc logfunc)
+uint24_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, LogFunc logfunc)
{
return uint_from_unparsed (fv, s, allow_partial_value, logfunc, 0xFFFFFF);
}
static gboolean
-uint16_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc logfunc)
+uint16_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, LogFunc logfunc)
{
return uint_from_unparsed (fv, s, allow_partial_value, logfunc, G_MAXUINT16);
}
static gboolean
-uint8_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc logfunc)
+uint8_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, LogFunc logfunc)
{
return uint_from_unparsed (fv, s, allow_partial_value, logfunc, G_MAXUINT8);
}
static gboolean
-sint_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc,
+sint_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc,
gint32 max, gint32 min)
{
long value;
@@ -202,25 +202,25 @@ sint_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogF
}
static gboolean
-sint32_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc logfunc)
+sint32_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, LogFunc logfunc)
{
return sint_from_unparsed (fv, s, allow_partial_value, logfunc, G_MAXINT32, G_MININT32);
}
static gboolean
-sint24_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc logfunc)
+sint24_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, LogFunc logfunc)
{
return sint_from_unparsed (fv, s, allow_partial_value, logfunc, 0x7FFFFF, -0x800000);
}
static gboolean
-sint16_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc logfunc)
+sint16_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, LogFunc logfunc)
{
return sint_from_unparsed (fv, s, allow_partial_value, logfunc, G_MAXINT16, G_MININT16);
}
static gboolean
-sint8_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc logfunc)
+sint8_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, LogFunc logfunc)
{
return sint_from_unparsed (fv, s, allow_partial_value, logfunc, G_MAXINT8, G_MININT8);
}
@@ -258,7 +258,7 @@ uinteger_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, char *buf)
}
static gboolean
-ipxnet_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
+ipxnet_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
{
guint32 val;
gboolean known;
@@ -379,7 +379,7 @@ get_integer64(fvalue_t *fv)
}
static gboolean
-uint64_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
+uint64_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
{
guint64 value;
char *endptr;
@@ -424,7 +424,7 @@ uint64_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, Lo
}
static gboolean
-sint64_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
+sint64_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
{
gint64 value;
char *endptr;
@@ -613,7 +613,7 @@ bool_ne(const fvalue_t *a, const fvalue_t *b)
/* EUI64-specific */
static gboolean
-eui64_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
+eui64_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
{
/*
@@ -664,7 +664,12 @@ ftype_register_integers(void)
uinteger_to_repr, /* val_to_string_repr */
uinteger_repr_len, /* len_string_repr */
- NULL, /* set_value */
+ NULL, /* set_value_byte_array */
+ NULL, /* set_value_bytes */
+ NULL, /* set_value_guid */
+ NULL, /* set_value_time */
+ NULL, /* set_value_string */
+ NULL, /* set_value_tvbuff */
set_uinteger, /* set_value_uinteger */
NULL, /* set_value_sinteger */
NULL, /* set_value_integer64 */
@@ -701,8 +706,13 @@ ftype_register_integers(void)
uinteger_to_repr, /* val_to_string_repr */
uinteger_repr_len, /* len_string_repr */
- NULL, /* set_value */
- set_uinteger, /* set_value_uinteger */
+ NULL, /* set_value_bytes */
+ NULL, /* set_value_byte_array */
+ NULL, /* set_value_guid */
+ NULL, /* set_value_time */
+ NULL, /* set_value_string */
+ NULL, /* set_value_tvbuff */
+ set_uinteger, /* set_value_uinteger */
NULL, /* set_value_sinteger */
NULL, /* set_value_integer64 */
NULL, /* set_value_floating */
@@ -738,8 +748,13 @@ ftype_register_integers(void)
uinteger_to_repr, /* val_to_string_repr */
uinteger_repr_len, /* len_string_repr */
- NULL, /* set_value */
- set_uinteger, /* set_value_integer */
+ NULL, /* set_value_byte_array */
+ NULL, /* set_value_bytes */
+ NULL, /* set_value_guid */
+ NULL, /* set_value_time */
+ NULL, /* set_value_string */
+ NULL, /* set_value_tvbuff */
+ set_uinteger, /* set_value_integer */
NULL, /* set_value_sinteger */
NULL, /* set_value_integer64 */
NULL, /* set_value_floating */
@@ -775,14 +790,19 @@ ftype_register_integers(void)
uinteger_to_repr, /* val_to_string_repr */
uinteger_repr_len, /* len_string_repr */
- NULL, /* set_value */
- set_uinteger, /* set_value_uinteger */
+ NULL, /* set_value_byte_array */
+ NULL, /* set_value_bytes */
+ NULL, /* set_value_guid */
+ NULL, /* set_value_time */
+ NULL, /* set_value_string */
+ NULL, /* set_value_tvbuff */
+ set_uinteger, /* set_value_uinteger */
NULL, /* set_value_sinteger */
NULL, /* set_value_integer64 */
NULL, /* set_value_floating */
NULL, /* get_value */
- get_uinteger, /* get_value_integer */
+ get_uinteger, /* get_value_integer */
NULL, /* get_value_sinteger */
NULL, /* get_value_integer64 */
NULL, /* get_value_floating */
@@ -812,16 +832,21 @@ ftype_register_integers(void)
uinteger64_to_repr, /* val_to_string_repr */
uinteger64_repr_len, /* len_string_repr */
- NULL, /* set_value */
+ NULL, /* set_value_byte_array */
+ NULL, /* set_value_bytes */
+ NULL, /* set_value_guid */
+ NULL, /* set_value_time */
+ NULL, /* set_value_string */
+ NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
- set_integer64, /* set_value_integer64 */
+ set_integer64, /* set_value_integer64 */
NULL, /* set_value_floating */
NULL, /* get_value */
NULL, /* get_value_uinteger */
NULL, /* get_value_sinteger */
- get_integer64, /* get_value_integer64 */
+ get_integer64, /* get_value_integer64 */
NULL, /* get_value_floating */
cmp_eq64,
@@ -849,9 +874,14 @@ ftype_register_integers(void)
integer_to_repr, /* val_to_string_repr */
integer_repr_len, /* len_string_repr */
- NULL, /* set_value */
+ NULL, /* set_value_byte_array */
+ NULL, /* set_value_bytes */
+ NULL, /* set_value_guid */
+ NULL, /* set_value_time */
+ NULL, /* set_value_string */
+ NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
- set_sinteger, /* set_value_sinteger */
+ set_sinteger, /* set_value_sinteger */
NULL, /* set_value_integer64 */
NULL, /* set_value_floating */
@@ -886,15 +916,20 @@ ftype_register_integers(void)
integer_to_repr, /* val_to_string_repr */
integer_repr_len, /* len_string_repr */
- NULL, /* set_value */
+ NULL, /* set_value_byte_array */
+ NULL, /* set_value_bytes */
+ NULL, /* set_value_guid */
+ NULL, /* set_value_time */
+ NULL, /* set_value_string */
+ NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
- set_sinteger, /* set_value_sinteger */
+ set_sinteger, /* set_value_sinteger */
NULL, /* set_value_integer64 */
NULL, /* set_value_floating */
NULL, /* get_value */
NULL, /* get_value_uinteger */
- get_sinteger, /* get_value_sinteger */
+ get_sinteger, /* get_value_sinteger */
NULL, /* get_value_integer64 */
NULL, /* get_value_floating */
@@ -923,9 +958,14 @@ ftype_register_integers(void)
integer_to_repr, /* val_to_string_repr */
integer_repr_len, /* len_string_repr */
- NULL, /* set_value */
+ NULL, /* set_value_byte_array */
+ NULL, /* set_value_bytes */
+ NULL, /* set_value_guid */
+ NULL, /* set_value_time */
+ NULL, /* set_value_string */
+ NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
- set_sinteger, /* set_value_sinteger */
+ set_sinteger, /* set_value_sinteger */
NULL, /* set_value_integer64 */
NULL, /* set_value_floating */
@@ -960,15 +1000,20 @@ ftype_register_integers(void)
integer_to_repr, /* val_to_string_repr */
integer_repr_len, /* len_string_repr */
- NULL, /* set_value */
+ NULL, /* set_value_byte_array */
+ NULL, /* set_value_bytes */
+ NULL, /* set_value_guid */
+ NULL, /* set_value_time */
+ NULL, /* set_value_string */
+ NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
- set_sinteger, /* set_value_sinteger */
+ set_sinteger, /* set_value_sinteger */
NULL, /* set_value_integer64 */
NULL, /* set_value_floating */
NULL, /* get_value */
NULL, /* get_value_uinteger */
- get_sinteger, /* get_value_sinteger */
+ get_sinteger, /* get_value_sinteger */
NULL, /* get_value_integer64 */
NULL, /* get_value_floating */
@@ -997,16 +1042,21 @@ ftype_register_integers(void)
integer64_to_repr, /* val_to_string_repr */
integer64_repr_len, /* len_string_repr */
- NULL, /* set_value */
+ NULL, /* set_value_byte_array */
+ NULL, /* set_value_bytes */
+ NULL, /* set_value_guid */
+ NULL, /* set_value_time */
+ NULL, /* set_value_string */
+ NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
- set_integer64, /* set_value_integer64 */
+ set_integer64, /* set_value_integer64 */
NULL, /* set_value_floating */
NULL, /* get_value */
NULL, /* get_value_uinteger */
NULL, /* get_value_sinteger */
- get_integer64, /* get_value_integer64 */
+ get_integer64, /* get_value_integer64 */
NULL, /* get_value_floating */
cmp_eq64,
@@ -1034,14 +1084,19 @@ ftype_register_integers(void)
boolean_to_repr, /* val_to_string_repr */
boolean_repr_len, /* len_string_repr */
- NULL, /* set_value */
- set_uinteger, /* set_value_uinteger */
+ NULL, /* set_value_byte_array */
+ NULL, /* set_value_bytes */
+ NULL, /* set_value_guid */
+ NULL, /* set_value_time */
+ NULL, /* set_value_string */
+ NULL, /* set_value_tvbuff */
+ set_uinteger, /* set_value_uinteger */
NULL, /* set_value_sinteger */
NULL, /* set_value_integer64 */
NULL, /* set_value_floating */
NULL, /* get_value */
- get_uinteger, /* get_value_uinteger */
+ get_uinteger, /* get_value_uinteger */
NULL, /* get_value_sinteger */
NULL, /* get_value_integer64 */
NULL, /* get_value_floating */
@@ -1072,14 +1127,19 @@ ftype_register_integers(void)
ipxnet_to_repr, /* val_to_string_repr */
ipxnet_repr_len, /* len_string_repr */
- NULL, /* set_value */
- set_uinteger, /* set_value_uinteger */
+ NULL, /* set_value_byte_array */
+ NULL, /* set_value_bytes */
+ NULL, /* set_value_guid */
+ NULL, /* set_value_time */
+ NULL, /* set_value_string */
+ NULL, /* set_value_tvbuff */
+ set_uinteger, /* set_value_uinteger */
NULL, /* get_value_sinteger */
NULL, /* set_value_integer64 */
NULL, /* set_value_floating */
NULL, /* get_value */
- get_uinteger, /* get_value_uinteger */
+ get_uinteger, /* get_value_uinteger */
NULL, /* get_value_sinteger */
NULL, /* get_value_integer64 */
NULL, /* get_value_floating */
@@ -1110,14 +1170,19 @@ ftype_register_integers(void)
uinteger_to_repr, /* val_to_string_repr */
uinteger_repr_len, /* len_string_repr */
- NULL, /* set_value */
- set_uinteger, /* set_value_uinteger */
+ NULL, /* set_value_byte_array */
+ NULL, /* set_value_bytes */
+ NULL, /* set_value_guid */
+ NULL, /* set_value_time */
+ NULL, /* set_value_string */
+ NULL, /* set_value_tvbuff */
+ set_uinteger, /* set_value_uinteger */
NULL, /* set_value_sinteger */
NULL, /* set_value_integer64 */
NULL, /* set_value_floating */
NULL, /* get_value */
- get_uinteger, /* get_value_uinteger */
+ get_uinteger, /* get_value_uinteger */
NULL, /* get_value_sinteger */
NULL, /* get_value_integer64 */
NULL, /* get_value_floating */
@@ -1145,10 +1210,15 @@ ftype_register_integers(void)
NULL, /* free_value */
eui64_from_unparsed, /* val_from_unparsed */
NULL, /* val_from_string */
- eui64_to_repr, /* val_to_string_repr */
- eui64_repr_len, /* len_string_repr */
-
- NULL, /* set_value */
+ eui64_to_repr, /* val_to_string_repr */
+ eui64_repr_len, /* len_string_repr */
+
+ NULL, /* set_value_byte_array */
+ NULL, /* set_value_bytes */
+ NULL, /* set_value_guid */
+ NULL, /* set_value_time */
+ NULL, /* set_value_string */
+ NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
set_integer64, /* set_value_integer64 */
diff --git a/epan/ftypes/ftype-ipv4.c b/epan/ftypes/ftype-ipv4.c
index f3d59c4bc8..b8f70ce91a 100644
--- a/epan/ftypes/ftype-ipv4.c
+++ b/epan/ftypes/ftype-ipv4.c
@@ -44,13 +44,13 @@ value_get(fvalue_t *fv)
}
static gboolean
-val_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
+val_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
{
guint32 addr;
unsigned int nmask_bits;
- char *has_slash;
- char *net_str, *addr_str;
+ const char *has_slash;
+ const char *net_str, *addr_str;
fvalue_t *nmask_fvalue;
/* Look for CIDR: Is there a single slash in the string? */
@@ -178,7 +178,12 @@ ftype_register_ipv4(void)
val_to_repr, /* val_to_string_repr */
val_repr_len, /* len_string_repr */
- NULL, /* set_value */
+ NULL, /* set_value_byte_array */
+ NULL, /* set_value_bytes */
+ NULL, /* set_value_guid */
+ NULL, /* set_value_time */
+ NULL, /* set_value_string */
+ NULL, /* set_value_tvbuff */
set_uinteger, /* set_value_uinteger */
NULL, /* set_value_sinteger */
NULL, /* set_value_integer64 */
diff --git a/epan/ftypes/ftype-ipv6.c b/epan/ftypes/ftype-ipv6.c
index 00890b6199..47a6624319 100644
--- a/epan/ftypes/ftype-ipv6.c
+++ b/epan/ftypes/ftype-ipv6.c
@@ -30,18 +30,16 @@
#include <epan/emem.h>
static void
-ipv6_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied)
+ipv6_fvalue_set(fvalue_t *fv, const guint8 *value)
{
- g_assert(!already_copied);
-
memcpy(fv->value.ipv6.addr.bytes, value, FT_IPv6_LEN);
fv->value.ipv6.prefix = 128;
}
static gboolean
-ipv6_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
+ipv6_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
{
- char *has_slash, *addr_str;
+ const char *has_slash, *addr_str;
unsigned int nmask_bits;
fvalue_t *nmask_fvalue;
@@ -227,7 +225,12 @@ ftype_register_ipv6(void)
ipv6_to_repr, /* val_to_string_repr */
ipv6_repr_len, /* len_string_repr */
- ipv6_fvalue_set, /* set_value */
+ NULL, /* set_value_byte_array */
+ ipv6_fvalue_set, /* set_value_bytes */
+ NULL, /* set_value_guid */
+ NULL, /* set_value_time */
+ NULL, /* set_value_string */
+ NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
NULL, /* set_value_integer64 */
diff --git a/epan/ftypes/ftype-none.c b/epan/ftypes/ftype-none.c
index 956d7e9259..6359fd9929 100644
--- a/epan/ftypes/ftype-none.c
+++ b/epan/ftypes/ftype-none.c
@@ -41,7 +41,12 @@ ftype_register_none(void)
NULL, /* val_to_string_repr */
NULL, /* len_string_repr */
- NULL, /* set_value */
+ NULL, /* set_value_byte_array */
+ NULL, /* set_value_bytes */
+ NULL, /* set_value_guid */
+ NULL, /* set_value_time */
+ NULL, /* set_value_string */
+ NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
NULL, /* set_value_integer64 */
diff --git a/epan/ftypes/ftype-pcre.c b/epan/ftypes/ftype-pcre.c
index bce9616d7e..ac2d106cd1 100644
--- a/epan/ftypes/ftype-pcre.c
+++ b/epan/ftypes/ftype-pcre.c
@@ -75,7 +75,7 @@ raw_flag_needed(const gchar *pattern)
/* Generate a FT_PCRE from a parsed string pattern.
* Uses the specified logfunc() to report errors. */
static gboolean
-val_from_string(fvalue_t *fv, char *pattern, LogFunc logfunc)
+val_from_string(fvalue_t *fv, const char *pattern, LogFunc logfunc)
{
GError *regex_error = NULL;
GRegexCompileFlags cflags = G_REGEX_OPTIMIZE;
@@ -113,7 +113,7 @@ val_from_string(fvalue_t *fv, char *pattern, LogFunc logfunc)
/* Generate a FT_PCRE from an unparsed string pattern.
* Uses the specified logfunc() to report errors. */
static gboolean
-val_from_unparsed(fvalue_t *fv, char *pattern, gboolean allow_partial_value _U_, LogFunc logfunc)
+val_from_unparsed(fvalue_t *fv, const char *pattern, gboolean allow_partial_value _U_, LogFunc logfunc)
{
g_assert(! allow_partial_value);
@@ -137,13 +137,12 @@ gregex_to_repr(fvalue_t *fv, ftrepr_t rtype, char *buf)
/* BEHOLD - value contains the string representation of the regular expression,
* and we want to store the compiled PCRE RE object into the value. */
static void
-gregex_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied)
+gregex_fvalue_set(fvalue_t *fv, const char *value)
{
g_assert(value != NULL);
/* Free up the old value, if we have one */
gregex_fvalue_free(fv);
- g_assert(! already_copied);
- val_from_unparsed(fv, (char *)value, FALSE, NULL);
+ val_from_unparsed(fv, value, FALSE, NULL);
}
static gpointer
@@ -167,7 +166,12 @@ ftype_register_pcre(void)
gregex_to_repr, /* val_to_string_repr */
gregex_repr_len, /* len_string_repr */
- gregex_fvalue_set, /* set_value */
+ NULL, /* set_value_byte_array */
+ NULL, /* set_value_bytes */
+ NULL, /* set_value_guid */
+ NULL, /* set_value_time */
+ gregex_fvalue_set, /* set_value_string */
+ NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
NULL, /* set_value_integer64 */
diff --git a/epan/ftypes/ftype-string.c b/epan/ftypes/ftype-string.c
index db0c627960..03bb1647a5 100644
--- a/epan/ftypes/ftype-string.c
+++ b/epan/ftypes/ftype-string.c
@@ -45,17 +45,14 @@ string_fvalue_free(fvalue_t *fv)
}
static void
-string_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied)
+string_fvalue_set_string(fvalue_t *fv, const gchar *value)
{
DISSECTOR_ASSERT(value != NULL);
/* Free up the old value, if we have one */
string_fvalue_free(fv);
- if (already_copied)
- fv->value.string = (gchar *)value; /* must be g_ allocated */
- else
- fv->value.string = (gchar *)g_strdup((const gchar *)value);
+ fv->value.string = (gchar *)g_strdup(value);
}
static int
@@ -95,7 +92,7 @@ value_get(fvalue_t *fv)
}
static gboolean
-val_from_string(fvalue_t *fv, char *s, LogFunc logfunc _U_)
+val_from_string(fvalue_t *fv, const char *s, LogFunc logfunc _U_)
{
/* Free up the old value, if we have one */
string_fvalue_free(fv);
@@ -105,7 +102,7 @@ val_from_string(fvalue_t *fv, char *s, LogFunc logfunc _U_)
}
static gboolean
-val_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
+val_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
{
fvalue_t *fv_bytes;
@@ -247,7 +244,12 @@ ftype_register_string(void)
string_to_repr, /* val_to_string_repr */
string_repr_len, /* len_string_repr */
- string_fvalue_set, /* set_value */
+ NULL, /* set_value_byte_array */
+ NULL, /* set_value_bytes */
+ NULL, /* set_value_guid */
+ NULL, /* set_value_time */
+ string_fvalue_set_string, /* set_value_string */
+ NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
NULL, /* set_value_integer64 */
@@ -284,7 +286,12 @@ ftype_register_string(void)
string_to_repr, /* val_to_string_repr */
string_repr_len, /* len_string_repr */
- string_fvalue_set, /* set_value */
+ NULL, /* set_value_byte_array */
+ NULL, /* set_value_bytes */
+ NULL, /* set_value_guid */
+ NULL, /* set_value_time */
+ string_fvalue_set_string, /* set_value_string */
+ NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
NULL, /* set_value_integer64 */
@@ -321,7 +328,12 @@ ftype_register_string(void)
string_to_repr, /* val_to_string_repr */
string_repr_len, /* len_string_repr */
- string_fvalue_set, /* set_value */
+ NULL, /* set_value_byte_array */
+ NULL, /* set_value_bytes */
+ NULL, /* set_value_guid */
+ NULL, /* set_value_time */
+ string_fvalue_set_string, /* set_value_string */
+ NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
NULL, /* set_value_integer64 */
diff --git a/epan/ftypes/ftype-time.c b/epan/ftypes/ftype-time.c
index 16a946f646..e0493535ec 100644
--- a/epan/ftypes/ftype-time.c
+++ b/epan/ftypes/ftype-time.c
@@ -113,11 +113,11 @@ cmp_le(const fvalue_t *a, const fvalue_t *b)
* Returns true on success, false on failure.
*/
static gboolean
-get_nsecs(char *startp, int *nsecs)
+get_nsecs(const char *startp, int *nsecs)
{
int ndigits;
int scale;
- char *p;
+ const char *p;
int val;
int digit;
int i;
@@ -171,9 +171,10 @@ get_nsecs(char *startp, int *nsecs)
}
static gboolean
-relative_val_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
+relative_val_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
{
- char *curptr, *endptr;
+ const char *curptr;
+ char *endptr;
gboolean negative = FALSE;
curptr = s;
@@ -236,7 +237,7 @@ fail:
static gboolean
-absolute_val_from_string(fvalue_t *fv, char *s, LogFunc logfunc)
+absolute_val_from_string(fvalue_t *fv, const char *s, LogFunc logfunc)
{
struct tm tm;
char *curptr;
@@ -300,7 +301,7 @@ fail:
}
static gboolean
-absolute_val_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
+absolute_val_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
{
return absolute_val_from_string(fv, s, logfunc);
}
@@ -313,10 +314,9 @@ time_fvalue_new(fvalue_t *fv)
}
static void
-time_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied)
+time_fvalue_set(fvalue_t *fv, const nstime_t *value)
{
- g_assert(!already_copied);
- memcpy(&(fv->value.time), value, sizeof(nstime_t));
+ fv->value.time = *value;
}
static gpointer
@@ -374,7 +374,12 @@ ftype_register_time(void)
absolute_val_to_repr, /* val_to_string_repr */
absolute_val_repr_len, /* len_string_repr */
- time_fvalue_set, /* set_value */
+ NULL, /* set_value_byte_array */
+ NULL, /* set_value_bytes */
+ NULL, /* set_value_guid */
+ time_fvalue_set, /* set_value_time */
+ NULL, /* set_value_string */
+ NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
NULL, /* set_value_integer64 */
@@ -411,7 +416,12 @@ ftype_register_time(void)
relative_val_to_repr, /* val_to_string_repr */
relative_val_repr_len, /* len_string_repr */
- time_fvalue_set, /* set_value */
+ NULL, /* set_value_byte_array */
+ NULL, /* set_value_bytes */
+ NULL, /* set_value_guid */
+ time_fvalue_set, /* set_value_time */
+ NULL, /* set_value_string */
+ NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
NULL, /* set_value_integer64 */
diff --git a/epan/ftypes/ftype-tvbuff.c b/epan/ftypes/ftype-tvbuff.c
index e7bacae062..83fa643f01 100644
--- a/epan/ftypes/ftype-tvbuff.c
+++ b/epan/ftypes/ftype-tvbuff.c
@@ -48,14 +48,12 @@ value_free(fvalue_t *fv)
}
static void
-value_set(fvalue_t *fv, gpointer value, gboolean already_copied)
+value_set(fvalue_t *fv, tvbuff_t *value)
{
- g_assert(already_copied);
-
/* Free up the old value, if we have one */
value_free(fv);
- fv->value.tvb = (tvbuff_t *)value;
+ fv->value.tvb = value;
}
static void
@@ -65,7 +63,7 @@ free_tvb_data(void *data)
}
static gboolean
-val_from_string(fvalue_t *fv, char *s, LogFunc logfunc _U_)
+val_from_string(fvalue_t *fv, const char *s, LogFunc logfunc _U_)
{
tvbuff_t *new_tvb;
guint8 *private_data;
@@ -89,7 +87,7 @@ val_from_string(fvalue_t *fv, char *s, LogFunc logfunc _U_)
}
static gboolean
-val_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
+val_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
{
fvalue_t *fv_bytes;
tvbuff_t *new_tvb;
@@ -429,7 +427,12 @@ ftype_register_tvbuff(void)
val_to_repr, /* val_to_string_repr */
val_repr_len, /* len_string_repr */
- value_set, /* set_value */
+ NULL, /* set_value_byte_array */
+ NULL, /* set_value_bytes */
+ NULL, /* set_value_guid */
+ NULL, /* set_value_time */
+ NULL, /* set_value_string */
+ value_set, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
NULL, /* set_value_integer64 */
diff --git a/epan/ftypes/ftypes-int.h b/epan/ftypes/ftypes-int.h
index cdc19c546f..fb4ae31a36 100644
--- a/epan/ftypes/ftypes-int.h
+++ b/epan/ftypes/ftypes-int.h
@@ -49,12 +49,17 @@ void ftype_register_pcre(void);
typedef void (*FvalueNewFunc)(fvalue_t*);
typedef void (*FvalueFreeFunc)(fvalue_t*);
-typedef gboolean (*FvalueFromUnparsed)(fvalue_t*, char*, gboolean, LogFunc);
-typedef gboolean (*FvalueFromString)(fvalue_t*, char*, LogFunc);
+typedef gboolean (*FvalueFromUnparsed)(fvalue_t*, const char*, gboolean, LogFunc);
+typedef gboolean (*FvalueFromString)(fvalue_t*, const char*, LogFunc);
typedef void (*FvalueToStringRepr)(fvalue_t*, ftrepr_t, char*volatile);
typedef int (*FvalueStringReprLen)(fvalue_t*, ftrepr_t);
-typedef void (*FvalueSetFunc)(fvalue_t*, gpointer, gboolean);
+typedef void (*FvalueSetByteArrayFunc)(fvalue_t*, GByteArray *);
+typedef void (*FvalueSetBytesFunc)(fvalue_t*, const guint8 *);
+typedef void (*FvalueSetGuidFunc)(fvalue_t*, const e_guid_t *);
+typedef void (*FvalueSetTimeFunc)(fvalue_t*, const nstime_t *);
+typedef void (*FvalueSetStringFunc)(fvalue_t*, const gchar *value);
+typedef void (*FvalueSetTvbuffFunc)(fvalue_t*, tvbuff_t *value);
typedef void (*FvalueSetUnsignedIntegerFunc)(fvalue_t*, guint32);
typedef void (*FvalueSetSignedIntegerFunc)(fvalue_t*, gint32);
typedef void (*FvalueSetInteger64Func)(fvalue_t*, guint64);
@@ -84,7 +89,12 @@ struct _ftype_t {
FvalueStringReprLen len_string_repr;
/* could be union */
- FvalueSetFunc set_value;
+ FvalueSetByteArrayFunc set_value_byte_array;
+ FvalueSetBytesFunc set_value_bytes;
+ FvalueSetGuidFunc set_value_guid;
+ FvalueSetTimeFunc set_value_time;
+ FvalueSetStringFunc set_value_string;
+ FvalueSetTvbuffFunc set_value_tvbuff;
FvalueSetUnsignedIntegerFunc set_value_uinteger;
FvalueSetSignedIntegerFunc set_value_sinteger;
FvalueSetInteger64Func set_value_integer64;
diff --git a/epan/ftypes/ftypes.c b/epan/ftypes/ftypes.c
index a409c9ce1e..2ea1428746 100644
--- a/epan/ftypes/ftypes.c
+++ b/epan/ftypes/ftypes.c
@@ -227,7 +227,7 @@ fvalue_init(fvalue_t *fv, ftenum_t ftype)
}
fvalue_t*
-fvalue_from_unparsed(ftenum_t ftype, char *s, gboolean allow_partial_value, LogFunc logfunc)
+fvalue_from_unparsed(ftenum_t ftype, const char *s, gboolean allow_partial_value, LogFunc logfunc)
{
fvalue_t *fv;
@@ -246,7 +246,7 @@ fvalue_from_unparsed(ftenum_t ftype, char *s, gboolean allow_partial_value, LogF
}
fvalue_t*
-fvalue_from_string(ftenum_t ftype, char *s, LogFunc logfunc)
+fvalue_from_string(ftenum_t ftype, const char *s, LogFunc logfunc)
{
fvalue_t *fv;
@@ -408,16 +408,51 @@ fvalue_slice(fvalue_t *fv, drange_t *d_range)
drange_foreach_drange_node(d_range, slice_func, &slice_data);
new_fv = fvalue_new(FT_BYTES);
- fvalue_set(new_fv, slice_data.bytes, TRUE);
+ fvalue_set_byte_array(new_fv, slice_data.bytes);
return new_fv;
}
void
-fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied)
+fvalue_set_byte_array(fvalue_t *fv, GByteArray *value)
{
- g_assert(fv->ftype->set_value);
- fv->ftype->set_value(fv, value, already_copied);
+ g_assert(fv->ftype->set_value_byte_array);
+ fv->ftype->set_value_byte_array(fv, value);
+}
+
+void
+fvalue_set_bytes(fvalue_t *fv, const guint8 *value)
+{
+ g_assert(fv->ftype->set_value_bytes);
+ fv->ftype->set_value_bytes(fv, value);
+}
+
+void
+fvalue_set_guid(fvalue_t *fv, const e_guid_t *value)
+{
+ g_assert(fv->ftype->set_value_guid);
+ fv->ftype->set_value_guid(fv, value);
+}
+
+void
+fvalue_set_time(fvalue_t *fv, const nstime_t *value)
+{
+ g_assert(fv->ftype->set_value_time);
+ fv->ftype->set_value_time(fv, value);
+}
+
+void
+fvalue_set_string(fvalue_t *fv, const gchar *value)
+{
+ g_assert(fv->ftype->set_value_string);
+ fv->ftype->set_value_string(fv, value);
+}
+
+void
+fvalue_set_tvbuff(fvalue_t *fv, tvbuff_t *value)
+{
+ g_assert(fv->ftype->set_value_tvbuff);
+ fv->ftype->set_value_tvbuff(fv, value);
}
void
diff --git a/epan/ftypes/ftypes.h b/epan/ftypes/ftypes.h
index 05bd42513e..dcfeb0b3f3 100644
--- a/epan/ftypes/ftypes.h
+++ b/epan/ftypes/ftypes.h
@@ -208,10 +208,10 @@ fvalue_init(fvalue_t *fv, ftenum_t ftype);
WS_DLL_PUBLIC
fvalue_t*
-fvalue_from_unparsed(ftenum_t ftype, char *s, gboolean allow_partial_value, LogFunc logfunc);
+fvalue_from_unparsed(ftenum_t ftype, const char *s, gboolean allow_partial_value, LogFunc logfunc);
fvalue_t*
-fvalue_from_string(ftenum_t ftype, char *s, LogFunc logfunc);
+fvalue_from_string(ftenum_t ftype, const char *s, LogFunc logfunc);
/* Returns the length of the string required to hold the
* string representation of the the field value.
@@ -243,7 +243,22 @@ const char*
fvalue_type_name(fvalue_t *fv);
void
-fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied);
+fvalue_set_byte_array(fvalue_t *fv, GByteArray *value);
+
+void
+fvalue_set_bytes(fvalue_t *fv, const guint8 *value);
+
+void
+fvalue_set_guid(fvalue_t *fv, const e_guid_t *value);
+
+void
+fvalue_set_time(fvalue_t *fv, const nstime_t *value);
+
+void
+fvalue_set_string(fvalue_t *fv, const gchar *value);
+
+void
+fvalue_set_tvbuff(fvalue_t *fv, tvbuff_t *value);
void
fvalue_set_uinteger(fvalue_t *fv, guint32 value);