aboutsummaryrefslogtreecommitdiffstats
path: root/epan/ftypes
diff options
context:
space:
mode:
authorJC Wren <jcwren@jcwren.com>2014-12-17 15:19:20 -0500
committerAnders Broman <a.broman58@gmail.com>2015-02-21 16:57:52 +0000
commite2bcee6ac442e6eb66dd3b09186070de4acb0010 (patch)
treee38e70de1a7160c6833601584774f12936559568 /epan/ftypes
parent13531d36fb91f3abbd6e62add83faf863e62d974 (diff)
Make FT_{U}INT64 behave more like FT_{U}INT32, add support for FT_{U}INT{40,48,56}
Change-Id: I57354c309ecf3a0c8f0c7cff485638027f30bb19 Reviewed-on: https://code.wireshark.org/review/5813 Reviewed-by: Michael Mann <mmann78@netscape.net> Petri-Dish: Michael Mann <mmann78@netscape.net> Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan/ftypes')
-rw-r--r--epan/ftypes/ftype-bytes.c54
-rw-r--r--epan/ftypes/ftype-double.c12
-rw-r--r--epan/ftypes/ftype-guid.c6
-rw-r--r--epan/ftypes/ftype-integer.c492
-rw-r--r--epan/ftypes/ftype-ipv4.c6
-rw-r--r--epan/ftypes/ftype-ipv6.c6
-rw-r--r--epan/ftypes/ftype-none.c6
-rw-r--r--epan/ftypes/ftype-pcre.c6
-rw-r--r--epan/ftypes/ftype-string.c24
-rw-r--r--epan/ftypes/ftype-time.c12
-rw-r--r--epan/ftypes/ftype-tvbuff.c6
-rw-r--r--epan/ftypes/ftypes-int.h12
-rw-r--r--epan/ftypes/ftypes.c40
-rw-r--r--epan/ftypes/ftypes.h25
14 files changed, 589 insertions, 118 deletions
diff --git a/epan/ftypes/ftype-bytes.c b/epan/ftypes/ftype-bytes.c
index 692a38412f..e63276c336 100644
--- a/epan/ftypes/ftype-bytes.c
+++ b/epan/ftypes/ftype-bytes.c
@@ -749,13 +749,15 @@ ftype_register_bytes(void)
NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
- NULL, /* set_value_integer64 */
+ NULL, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
NULL, /* set_value_floating */
value_get, /* get_value */
NULL, /* get_value_uinteger */
NULL, /* get_value_sinteger */
- NULL, /* get_value_integer64 */
+ NULL, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
NULL, /* get_value_floating */
cmp_eq,
@@ -792,13 +794,15 @@ ftype_register_bytes(void)
NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
- NULL, /* set_value_integer64 */
+ NULL, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
NULL, /* set_value_floating */
value_get, /* get_value */
NULL, /* get_value_uinteger */
NULL, /* get_value_sinteger */
- NULL, /* get_value_integer64 */
+ NULL, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
NULL, /* get_value_floating */
cmp_eq,
@@ -835,13 +839,15 @@ ftype_register_bytes(void)
NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_integer */
- NULL, /* set_value_integer64 */
+ NULL, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
NULL, /* set_value_floating */
value_get, /* get_value */
NULL, /* set_value_uinteger */
NULL, /* get_value_integer */
- NULL, /* get_value_integer64 */
+ NULL, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
NULL, /* get_value_floating */
cmp_eq,
@@ -878,13 +884,15 @@ ftype_register_bytes(void)
NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_integer */
- NULL, /* set_value_integer64 */
+ NULL, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
NULL, /* set_value_floating */
value_get, /* get_value */
NULL, /* set_value_uinteger */
NULL, /* get_value_integer */
- NULL, /* get_value_integer64 */
+ NULL, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
NULL, /* get_value_floating */
cmp_eq,
@@ -921,13 +929,15 @@ ftype_register_bytes(void)
NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
- NULL, /* set_value_integer64 */
+ NULL, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
NULL, /* set_value_floating */
value_get, /* get_value */
NULL, /* get_value_uinteger */
NULL, /* get_value_sinteger */
- NULL, /* get_value_integer64 */
+ NULL, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
NULL, /* get_value_floating */
cmp_eq,
@@ -964,13 +974,15 @@ ftype_register_bytes(void)
NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
- NULL, /* set_value_integer64 */
+ NULL, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
NULL, /* set_value_floating */
value_get, /* get_value */
NULL, /* get_value_uinteger */
NULL, /* get_value_sinteger */
- NULL, /* get_value_integer64 */
+ NULL, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
NULL, /* get_value_floating */
cmp_eq,
@@ -1007,13 +1019,15 @@ ftype_register_bytes(void)
NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
- NULL, /* set_value_integer64 */
+ NULL, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
NULL, /* set_value_floating */
value_get, /* get_value */
NULL, /* get_value_uinteger */
NULL, /* get_value_sinteger */
- NULL, /* get_value_integer64 */
+ NULL, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
NULL, /* get_value_floating */
cmp_eq,
@@ -1050,13 +1064,15 @@ ftype_register_bytes(void)
NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
- NULL, /* set_value_integer64 */
+ NULL, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
NULL, /* set_value_floating */
value_get, /* get_value */
NULL, /* get_value_uinteger */
NULL, /* get_value_sinteger */
- NULL, /* get_value_integer64 */
+ NULL, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
NULL, /* get_value_floating */
cmp_eq,
@@ -1093,13 +1109,15 @@ ftype_register_bytes(void)
NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
- NULL, /* set_value_integer64 */
+ NULL, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
NULL, /* set_value_floating */
value_get, /* get_value */
NULL, /* get_value_uinteger */
NULL, /* get_value_sinteger */
- NULL, /* get_value_integer64 */
+ NULL, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
NULL, /* get_value_floating */
cmp_eq,
diff --git a/epan/ftypes/ftype-double.c b/epan/ftypes/ftype-double.c
index d4778b55ce..bb5a2e475c 100644
--- a/epan/ftypes/ftype-double.c
+++ b/epan/ftypes/ftype-double.c
@@ -176,13 +176,15 @@ ftype_register_double(void)
NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_snteger */
- NULL, /* set_value_integer64 */
+ NULL, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
double_fvalue_set_floating, /* set_value_floating */
NULL, /* get_value */
NULL, /* get_value_uinteger */
NULL, /* get_value_sinteger */
- NULL, /* get_value_integer64 */
+ NULL, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
value_get_floating, /* get_value_floating */
cmp_eq,
@@ -219,13 +221,15 @@ ftype_register_double(void)
NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
- NULL, /* set_value_integer64 */
+ NULL, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
double_fvalue_set_floating, /* set_value_floating */
NULL, /* get_value */
NULL, /* get_value_uinteger */
NULL, /* get_value_snteger */
- NULL, /* get_value_integer64 */
+ NULL, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
value_get_floating, /* get_value_floating */
cmp_eq,
diff --git a/epan/ftypes/ftype-guid.c b/epan/ftypes/ftype-guid.c
index f72cb8bcac..c1f2f20c42 100644
--- a/epan/ftypes/ftype-guid.c
+++ b/epan/ftypes/ftype-guid.c
@@ -146,13 +146,15 @@ ftype_register_guid(void)
NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
- NULL, /* set_value_integer64 */
+ NULL, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
NULL, /* set_value_floating */
value_get, /* get_value */
NULL, /* get_value_uinteger */
NULL, /* get_value_sinteger */
- NULL, /* get_value_integer64 */
+ NULL, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
NULL, /* get_value_floating */
cmp_eq,
diff --git a/epan/ftypes/ftype-integer.c b/epan/ftypes/ftype-integer.c
index 5d5787be21..f4463deb71 100644
--- a/epan/ftypes/ftype-integer.c
+++ b/epan/ftypes/ftype-integer.c
@@ -65,7 +65,7 @@ uint_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_
guint32 max)
{
unsigned long value;
- char *endptr;
+ char *endptr;
if (strchr (s, '-') && strtol(s, NULL, 0) < 0) {
/*
@@ -257,7 +257,7 @@ uinteger_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, int field_display _U_, char *
static gboolean
ipxnet_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, gchar **err_msg)
{
- guint32 val;
+ guint32 val;
gboolean known;
/*
@@ -361,26 +361,39 @@ cmp_bitwise_and(const fvalue_t *a, const fvalue_t *b)
static void
int64_fvalue_new(fvalue_t *fv)
{
- fv->value.integer64 = 0;
+ fv->value.uinteger64 = 0;
+}
+
+static void
+set_uinteger64(fvalue_t *fv, guint64 value)
+{
+ fv->value.uinteger64 = value;
}
static void
-set_integer64(fvalue_t *fv, guint64 value)
+set_sinteger64(fvalue_t *fv, gint64 value)
{
- fv->value.integer64 = value;
+ fv->value.sinteger64 = value;
}
static guint64
-get_integer64(fvalue_t *fv)
+get_uinteger64(fvalue_t *fv)
{
- return fv->value.integer64;
+ return fv->value.uinteger64;
+}
+
+static gint64
+get_sinteger64(fvalue_t *fv)
+{
+ return fv->value.sinteger64;
}
static gboolean
-uint64_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, gchar **err_msg)
+_uint64_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, gchar **err_msg,
+ guint64 max)
{
guint64 value;
- char *endptr;
+ char *endptr;
if (strchr (s, '-') && g_ascii_strtoll(s, NULL, 0) < 0) {
/*
@@ -417,12 +430,43 @@ uint64_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _
return FALSE;
}
- fv->value.integer64 = value;
+ if (value > max) {
+ if (err_msg != NULL)
+ *err_msg = g_strdup_printf("\"%s\" too big for this field, maximum %" G_GINT64_MODIFIER "u.", s, max);
+ return FALSE;
+ }
+
+ fv->value.uinteger64 = value;
return TRUE;
}
static gboolean
-sint64_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, gchar **err_msg)
+uint64_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, gchar **err_msg)
+{
+ return _uint64_from_unparsed (fv, s, allow_partial_value, err_msg, G_MAXUINT64);
+}
+
+static gboolean
+uint56_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, gchar **err_msg)
+{
+ return _uint64_from_unparsed (fv, s, allow_partial_value, err_msg, 0xFFFFFFFFFFFFFF);
+}
+
+static gboolean
+uint48_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, gchar **err_msg)
+{
+ return _uint64_from_unparsed (fv, s, allow_partial_value, err_msg, 0xFFFFFFFFFFFF);
+}
+
+static gboolean
+uint40_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, gchar **err_msg)
+{
+ return _uint64_from_unparsed (fv, s, allow_partial_value, err_msg, 0xFFFFFFFFFF);
+}
+
+static gboolean
+_sint64_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, gchar **err_msg,
+ gint64 max, gint64 min)
{
gint64 value;
char *endptr;
@@ -465,10 +509,44 @@ sint64_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _
return FALSE;
}
- fv->value.integer64 = (guint64)value;
+ if (value > max) {
+ if (err_msg != NULL)
+ *err_msg = g_strdup_printf("\"%s\" too big for this field, maximum %" G_GINT64_MODIFIER "u.", s, max);
+ return FALSE;
+ } else if (value < min) {
+ if (err_msg != NULL)
+ *err_msg = g_strdup_printf("\"%s\" too small for this field, maximum %" G_GINT64_MODIFIER "u.", s, max);
+ return FALSE;
+ }
+
+ fv->value.sinteger64 = (guint64)value;
return TRUE;
}
+static gboolean
+sint64_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, gchar **err_msg)
+{
+ return _sint64_from_unparsed (fv, s, allow_partial_value, err_msg, G_MAXINT64, G_MININT64);
+}
+
+static gboolean
+sint56_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, gchar **err_msg)
+{
+ return _sint64_from_unparsed (fv, s, allow_partial_value, err_msg, 0x7FFFFFFFFFFFFF, -0x80000000000000);
+}
+
+static gboolean
+sint48_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, gchar **err_msg)
+{
+ return _sint64_from_unparsed (fv, s, allow_partial_value, err_msg, 0x7FFFFFFFFFFF, -0x800000000000);
+}
+
+static gboolean
+sint40_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, gchar **err_msg)
+{
+ return _sint64_from_unparsed (fv, s, allow_partial_value, err_msg, 0x7FFFFFFFFF, -0x8000000000);
+}
+
static int
integer64_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_, int field_display _U_)
{
@@ -478,7 +556,15 @@ integer64_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_, int field_display _U_)
static void
integer64_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, int field_display _U_, char *buf)
{
- sprintf(buf, "%" G_GINT64_MODIFIER "d", (gint64)fv->value.integer64);
+ guint64 val;
+
+ if (fv->value.sinteger < 0) {
+ *buf++ = '-';
+ val = -fv->value.sinteger;
+ } else
+ val = fv->value.sinteger;
+
+ guint64_to_str_buf(val, buf, 20);
}
static int
@@ -490,73 +576,73 @@ uinteger64_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_, int field_display _U_)
static void
uinteger64_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, int field_display _U_, char *buf)
{
- sprintf(buf, "%" G_GINT64_MODIFIER "u", fv->value.integer64);
+ guint64_to_str_buf(fv->value.uinteger, buf, 21);
}
static gboolean
cmp_eq64(const fvalue_t *a, const fvalue_t *b)
{
- return a->value.integer64 == b->value.integer64;
+ return a->value.uinteger64 == b->value.uinteger64;
}
static gboolean
cmp_ne64(const fvalue_t *a, const fvalue_t *b)
{
- return a->value.integer64 != b->value.integer64;
+ return a->value.uinteger64 != b->value.uinteger64;
}
static gboolean
u_cmp_gt64(const fvalue_t *a, const fvalue_t *b)
{
- return a->value.integer64 > b->value.integer64;
+ return a->value.uinteger64 > b->value.uinteger64;
}
static gboolean
u_cmp_ge64(const fvalue_t *a, const fvalue_t *b)
{
- return a->value.integer64 >= b->value.integer64;
+ return a->value.uinteger64 >= b->value.uinteger64;
}
static gboolean
u_cmp_lt64(const fvalue_t *a, const fvalue_t *b)
{
- return a->value.integer64 < b->value.integer64;
+ return a->value.uinteger64 < b->value.uinteger64;
}
static gboolean
u_cmp_le64(const fvalue_t *a, const fvalue_t *b)
{
- return a->value.integer64 <= b->value.integer64;
+ return a->value.uinteger64 <= b->value.uinteger64;
}
static gboolean
s_cmp_gt64(const fvalue_t *a, const fvalue_t *b)
{
- return (gint64)a->value.integer64 > (gint64)b->value.integer64;
+ return (gint64)a->value.sinteger64 > (gint64)b->value.sinteger64;
}
static gboolean
s_cmp_ge64(const fvalue_t *a, const fvalue_t *b)
{
- return (gint64)a->value.integer64 >= (gint64)b->value.integer64;
+ return (gint64)a->value.sinteger64 >= (gint64)b->value.sinteger64;
}
static gboolean
s_cmp_lt64(const fvalue_t *a, const fvalue_t *b)
{
- return (gint64)a->value.integer64 < (gint64)b->value.integer64;
+ return (gint64)a->value.sinteger64 < (gint64)b->value.sinteger64;
}
static gboolean
s_cmp_le64(const fvalue_t *a, const fvalue_t *b)
{
- return (gint64)a->value.integer64 <= (gint64)b->value.integer64;
+ return (gint64)a->value.sinteger64 <= (gint64)b->value.sinteger64;
}
static gboolean
cmp_bitwise_and64(const fvalue_t *a, const fvalue_t *b)
{
- return ((a->value.integer64 & b->value.integer64) != 0);
+ return ((a->value.uinteger64 & b->value.uinteger64) != 0);
}
/* BOOLEAN-specific */
@@ -674,13 +760,15 @@ ftype_register_integers(void)
NULL, /* set_value_tvbuff */
set_uinteger, /* set_value_uinteger */
NULL, /* set_value_sinteger */
- NULL, /* set_value_integer64 */
+ NULL, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
NULL, /* set_value_floating */
NULL, /* get_value */
get_uinteger, /* get_value_uinteger */
NULL, /* get_value_sinteger */
- NULL, /* get_value_integer64 */
+ NULL, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
NULL, /* get_value_floating */
cmp_eq,
@@ -716,13 +804,15 @@ ftype_register_integers(void)
NULL, /* set_value_tvbuff */
set_uinteger, /* set_value_uinteger */
NULL, /* set_value_sinteger */
- NULL, /* set_value_integer64 */
+ NULL, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
NULL, /* set_value_floating */
NULL, /* get_value */
get_uinteger, /* get_value_integer */
NULL, /* get_value_sinteger */
- NULL, /* get_value_integer64 */
+ NULL, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
NULL, /* get_value_floating */
cmp_eq,
@@ -756,15 +846,17 @@ ftype_register_integers(void)
NULL, /* set_value_time */
NULL, /* set_value_string */
NULL, /* set_value_tvbuff */
- set_uinteger, /* set_value_integer */
+ set_uinteger, /* set_value_uinteger */
NULL, /* set_value_sinteger */
- NULL, /* set_value_integer64 */
+ NULL, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
NULL, /* set_value_floating */
NULL, /* get_value */
get_uinteger, /* get_value_integer */
NULL, /* get_value_sinteger */
- NULL, /* get_value_integer64 */
+ NULL, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
NULL, /* get_value_floating */
cmp_eq,
@@ -800,13 +892,15 @@ ftype_register_integers(void)
NULL, /* set_value_tvbuff */
set_uinteger, /* set_value_uinteger */
NULL, /* set_value_sinteger */
- NULL, /* set_value_integer64 */
+ NULL, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
NULL, /* set_value_floating */
NULL, /* get_value */
get_uinteger, /* get_value_integer */
NULL, /* get_value_sinteger */
- NULL, /* get_value_integer64 */
+ NULL, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
NULL, /* get_value_floating */
cmp_eq,
@@ -822,6 +916,138 @@ ftype_register_integers(void)
NULL, /* len */
NULL, /* slice */
};
+ static ftype_t uint40_type = {
+ FT_UINT40, /* ftype */
+ "FT_UINT40", /* name */
+ "Unsigned integer, 5 bytes", /* pretty_name */
+ 5, /* wire_size */
+ int64_fvalue_new, /* new_value */
+ NULL, /* free_value */
+ uint40_from_unparsed, /* val_from_unparsed */
+ NULL, /* val_from_string */
+ uinteger64_to_repr, /* val_to_string_repr */
+ uinteger64_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_uinteger64, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
+ NULL, /* set_value_floating */
+
+ NULL, /* get_value */
+ NULL, /* get_value_uinteger */
+ NULL, /* get_value_sinteger */
+ get_uinteger64, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
+ NULL, /* get_value_floating */
+
+ cmp_eq64,
+ cmp_ne64,
+ u_cmp_gt64,
+ u_cmp_ge64,
+ u_cmp_lt64,
+ u_cmp_le64,
+ cmp_bitwise_and64,
+ NULL, /* cmp_contains */
+ NULL, /* cmp_matches */
+
+ NULL,
+ NULL,
+ };
+ static ftype_t uint48_type = {
+ FT_UINT48, /* ftype */
+ "FT_UINT48", /* name */
+ "Unsigned integer, 6 bytes", /* pretty_name */
+ 6, /* wire_size */
+ int64_fvalue_new, /* new_value */
+ NULL, /* free_value */
+ uint48_from_unparsed, /* val_from_unparsed */
+ NULL, /* val_from_string */
+ uinteger64_to_repr, /* val_to_string_repr */
+ uinteger64_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_uinteger64, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
+ NULL, /* set_value_floating */
+
+ NULL, /* get_value */
+ NULL, /* get_value_uinteger */
+ NULL, /* get_value_sinteger */
+ get_uinteger64, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
+ NULL, /* get_value_floating */
+
+ cmp_eq64,
+ cmp_ne64,
+ u_cmp_gt64,
+ u_cmp_ge64,
+ u_cmp_lt64,
+ u_cmp_le64,
+ cmp_bitwise_and64,
+ NULL, /* cmp_contains */
+ NULL, /* cmp_matches */
+
+ NULL,
+ NULL,
+ };
+ static ftype_t uint56_type = {
+ FT_UINT56, /* ftype */
+ "FT_UINT56", /* name */
+ "Unsigned integer, 7 bytes", /* pretty_name */
+ 7, /* wire_size */
+ int64_fvalue_new, /* new_value */
+ NULL, /* free_value */
+ uint56_from_unparsed, /* val_from_unparsed */
+ NULL, /* val_from_string */
+ uinteger64_to_repr, /* val_to_string_repr */
+ uinteger64_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_uinteger64, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
+ NULL, /* set_value_floating */
+
+ NULL, /* get_value */
+ NULL, /* get_value_uinteger */
+ NULL, /* get_value_sinteger */
+ get_uinteger64, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
+ NULL, /* get_value_floating */
+
+ cmp_eq64,
+ cmp_ne64,
+ u_cmp_gt64,
+ u_cmp_ge64,
+ u_cmp_lt64,
+ u_cmp_le64,
+ cmp_bitwise_and64,
+ NULL, /* cmp_contains */
+ NULL, /* cmp_matches */
+
+ NULL,
+ NULL,
+ };
static ftype_t uint64_type = {
FT_UINT64, /* ftype */
"FT_UINT64", /* name */
@@ -842,13 +1068,15 @@ ftype_register_integers(void)
NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
- set_integer64, /* set_value_integer64 */
+ set_uinteger64, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
NULL, /* set_value_floating */
NULL, /* get_value */
NULL, /* get_value_uinteger */
NULL, /* get_value_sinteger */
- get_integer64, /* get_value_integer64 */
+ get_uinteger64, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
NULL, /* get_value_floating */
cmp_eq64,
@@ -884,13 +1112,15 @@ ftype_register_integers(void)
NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
set_sinteger, /* set_value_sinteger */
- NULL, /* set_value_integer64 */
+ NULL, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
NULL, /* set_value_floating */
NULL, /* get_value */
NULL, /* get_value_uinteger */
get_sinteger, /* get_value_sinteger */
- NULL, /* get_value_integer64 */
+ NULL, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
NULL, /* get_value_floating */
cmp_eq,
@@ -926,13 +1156,15 @@ ftype_register_integers(void)
NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
set_sinteger, /* set_value_sinteger */
- NULL, /* set_value_integer64 */
+ NULL, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
NULL, /* set_value_floating */
NULL, /* get_value */
NULL, /* get_value_uinteger */
get_sinteger, /* get_value_sinteger */
- NULL, /* get_value_integer64 */
+ NULL, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
NULL, /* get_value_floating */
cmp_eq,
@@ -968,13 +1200,15 @@ ftype_register_integers(void)
NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
set_sinteger, /* set_value_sinteger */
- NULL, /* set_value_integer64 */
+ NULL, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
NULL, /* set_value_floating */
NULL, /* get_value */
NULL, /* get_value_uinteger */
get_sinteger, /* get_value_integer */
- NULL, /* get_value_integer64 */
+ NULL, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
NULL, /* get_value_floating */
cmp_eq,
@@ -1010,13 +1244,15 @@ ftype_register_integers(void)
NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
set_sinteger, /* set_value_sinteger */
- NULL, /* set_value_integer64 */
+ NULL, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
NULL, /* set_value_floating */
NULL, /* get_value */
NULL, /* get_value_uinteger */
get_sinteger, /* get_value_sinteger */
- NULL, /* get_value_integer64 */
+ NULL, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
NULL, /* get_value_floating */
cmp_eq,
@@ -1032,6 +1268,138 @@ ftype_register_integers(void)
NULL, /* len */
NULL, /* slice */
};
+ static ftype_t int40_type = {
+ FT_INT40, /* ftype */
+ "FT_INT40", /* name */
+ "Signed integer, 5 bytes", /* pretty_name */
+ 5, /* wire_size */
+ int64_fvalue_new, /* new_value */
+ NULL, /* free_value */
+ sint40_from_unparsed, /* val_from_unparsed */
+ NULL, /* val_from_string */
+ integer64_to_repr, /* val_to_string_repr */
+ integer64_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 */
+ NULL, /* set_value_uinteger64 */
+ set_sinteger64, /* set_value_sinteger64 */
+ NULL, /* set_value_floating */
+
+ NULL, /* get_value */
+ NULL, /* get_value_uinteger */
+ NULL, /* get_value_sinteger */
+ NULL, /* get_value_uinteger64 */
+ get_sinteger64, /* get_value_sinteger64 */
+ NULL, /* get_value_floating */
+
+ cmp_eq64,
+ cmp_ne64,
+ s_cmp_gt64,
+ s_cmp_ge64,
+ s_cmp_lt64,
+ s_cmp_le64,
+ cmp_bitwise_and64,
+ NULL, /* cmp_contains */
+ NULL, /* cmp_matches */
+
+ NULL,
+ NULL,
+ };
+ static ftype_t int48_type = {
+ FT_INT48, /* ftype */
+ "FT_INT48", /* name */
+ "Signed integer, 6 bytes", /* pretty_name */
+ 6, /* wire_size */
+ int64_fvalue_new, /* new_value */
+ NULL, /* free_value */
+ sint48_from_unparsed, /* val_from_unparsed */
+ NULL, /* val_from_string */
+ integer64_to_repr, /* val_to_string_repr */
+ integer64_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 */
+ NULL, /* set_value_uinteger64 */
+ set_sinteger64, /* set_value_sinteger64 */
+ NULL, /* set_value_floating */
+
+ NULL, /* get_value */
+ NULL, /* get_value_uinteger */
+ NULL, /* get_value_sinteger */
+ NULL, /* get_value_uinteger64 */
+ get_sinteger64, /* get_value_sinteger64 */
+ NULL, /* get_value_floating */
+
+ cmp_eq64,
+ cmp_ne64,
+ s_cmp_gt64,
+ s_cmp_ge64,
+ s_cmp_lt64,
+ s_cmp_le64,
+ cmp_bitwise_and64,
+ NULL, /* cmp_contains */
+ NULL, /* cmp_matches */
+
+ NULL,
+ NULL,
+ };
+ static ftype_t int56_type = {
+ FT_INT56, /* ftype */
+ "FT_INT56", /* name */
+ "Signed integer, 7 bytes", /* pretty_name */
+ 7, /* wire_size */
+ int64_fvalue_new, /* new_value */
+ NULL, /* free_value */
+ sint56_from_unparsed, /* val_from_unparsed */
+ NULL, /* val_from_string */
+ integer64_to_repr, /* val_to_string_repr */
+ integer64_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 */
+ NULL, /* set_value_uinteger64 */
+ set_sinteger64, /* set_value_sinteger64 */
+ NULL, /* set_value_floating */
+
+ NULL, /* get_value */
+ NULL, /* get_value_uinteger */
+ NULL, /* get_value_sinteger */
+ NULL, /* get_value_uinteger64 */
+ get_sinteger64, /* get_value_sinteger64 */
+ NULL, /* get_value_floating */
+
+ cmp_eq64,
+ cmp_ne64,
+ s_cmp_gt64,
+ s_cmp_ge64,
+ s_cmp_lt64,
+ s_cmp_le64,
+ cmp_bitwise_and64,
+ NULL, /* cmp_contains */
+ NULL, /* cmp_matches */
+
+ NULL,
+ NULL,
+ };
static ftype_t int64_type = {
FT_INT64, /* ftype */
"FT_INT64", /* name */
@@ -1052,13 +1420,15 @@ ftype_register_integers(void)
NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
- set_integer64, /* set_value_integer64 */
+ NULL, /* set_value_uinteger64 */
+ set_sinteger64, /* set_value_sinteger64 */
NULL, /* set_value_floating */
NULL, /* get_value */
NULL, /* get_value_uinteger */
NULL, /* get_value_sinteger */
- get_integer64, /* get_value_integer64 */
+ NULL, /* get_value_uinteger64 */
+ get_sinteger64, /* get_value_sinteger64 */
NULL, /* get_value_floating */
cmp_eq64,
@@ -1094,13 +1464,15 @@ ftype_register_integers(void)
NULL, /* set_value_tvbuff */
set_uinteger, /* set_value_uinteger */
NULL, /* set_value_sinteger */
- set_integer64, /* set_value_integer64 */
+ set_uinteger64, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
NULL, /* set_value_floating */
NULL, /* get_value */
get_uinteger, /* get_value_uinteger */
NULL, /* get_value_sinteger */
- get_integer64, /* get_value_integer64 */
+ get_uinteger64, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
NULL, /* get_value_floating */
bool_eq, /* cmp_eq */
@@ -1137,13 +1509,15 @@ ftype_register_integers(void)
NULL, /* set_value_tvbuff */
set_uinteger, /* set_value_uinteger */
NULL, /* get_value_sinteger */
- NULL, /* set_value_integer64 */
+ NULL, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
NULL, /* set_value_floating */
NULL, /* get_value */
get_uinteger, /* get_value_uinteger */
NULL, /* get_value_sinteger */
- NULL, /* get_value_integer64 */
+ NULL, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
NULL, /* get_value_floating */
cmp_eq,
@@ -1180,13 +1554,15 @@ ftype_register_integers(void)
NULL, /* set_value_tvbuff */
set_uinteger, /* set_value_uinteger */
NULL, /* set_value_sinteger */
- NULL, /* set_value_integer64 */
+ NULL, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
NULL, /* set_value_floating */
NULL, /* get_value */
get_uinteger, /* get_value_uinteger */
NULL, /* get_value_sinteger */
- NULL, /* get_value_integer64 */
+ NULL, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
NULL, /* get_value_floating */
cmp_eq,
@@ -1223,13 +1599,15 @@ ftype_register_integers(void)
NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
- set_integer64, /* set_value_integer64 */
+ set_uinteger64, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
NULL, /* set_value_floating */
NULL, /* get_value */
NULL, /* get_value_uinteger */
NULL, /* get_value_sinteger */
- get_integer64, /* get_value_integer64 */
+ get_uinteger64, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
NULL, /* get_value_floating */
cmp_eq64,
@@ -1250,11 +1628,17 @@ ftype_register_integers(void)
ftype_register(FT_UINT16, &uint16_type);
ftype_register(FT_UINT24, &uint24_type);
ftype_register(FT_UINT32, &uint32_type);
+ ftype_register(FT_UINT40, &uint40_type);
+ ftype_register(FT_UINT48, &uint48_type);
+ ftype_register(FT_UINT56, &uint56_type);
ftype_register(FT_UINT64, &uint64_type);
ftype_register(FT_INT8, &int8_type);
ftype_register(FT_INT16, &int16_type);
ftype_register(FT_INT24, &int24_type);
ftype_register(FT_INT32, &int32_type);
+ ftype_register(FT_INT40, &int40_type);
+ ftype_register(FT_INT48, &int48_type);
+ ftype_register(FT_INT56, &int56_type);
ftype_register(FT_INT64, &int64_type);
ftype_register(FT_BOOLEAN, &boolean_type);
ftype_register(FT_IPXNET, &ipxnet_type);
diff --git a/epan/ftypes/ftype-ipv4.c b/epan/ftypes/ftype-ipv4.c
index c582455da4..4ea6f27a5f 100644
--- a/epan/ftypes/ftype-ipv4.c
+++ b/epan/ftypes/ftype-ipv4.c
@@ -193,13 +193,15 @@ ftype_register_ipv4(void)
NULL, /* set_value_tvbuff */
set_uinteger, /* set_value_uinteger */
NULL, /* set_value_sinteger */
- NULL, /* set_value_integer64 */
+ NULL, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
NULL, /* set_value_floating */
value_get, /* get_value */
NULL, /* get_value_uinteger */
NULL, /* get_value_sinteger */
- NULL, /* get_value_integer64 */
+ NULL, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
NULL, /* get_value_floating */
cmp_eq,
diff --git a/epan/ftypes/ftype-ipv6.c b/epan/ftypes/ftype-ipv6.c
index 80a5e02904..34f619325b 100644
--- a/epan/ftypes/ftype-ipv6.c
+++ b/epan/ftypes/ftype-ipv6.c
@@ -242,13 +242,15 @@ ftype_register_ipv6(void)
NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
- NULL, /* set_value_integer64 */
+ NULL, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
NULL, /* set_value_floating */
value_get, /* get_value */
NULL, /* get_value_uinteger */
NULL, /* get_value_sinteger */
- NULL, /* get_value_integer64 */
+ NULL, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
NULL, /* get_value_floating */
cmp_eq,
diff --git a/epan/ftypes/ftype-none.c b/epan/ftypes/ftype-none.c
index 6b318452d9..351c692b7a 100644
--- a/epan/ftypes/ftype-none.c
+++ b/epan/ftypes/ftype-none.c
@@ -47,13 +47,15 @@ ftype_register_none(void)
NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
- NULL, /* set_value_integer64 */
+ NULL, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
NULL, /* set_value_floating */
NULL, /* get_value */
NULL, /* get_value_uinteger */
NULL, /* get_value_sinteger */
- NULL, /* get_value_integer64 */
+ NULL, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
NULL, /* get_value_floating */
NULL, /* cmp_eq */
diff --git a/epan/ftypes/ftype-pcre.c b/epan/ftypes/ftype-pcre.c
index 88ecb104d4..0f4b02fb04 100644
--- a/epan/ftypes/ftype-pcre.c
+++ b/epan/ftypes/ftype-pcre.c
@@ -171,13 +171,15 @@ ftype_register_pcre(void)
NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
- NULL, /* set_value_integer64 */
+ NULL, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
NULL, /* set_value_floating */
gregex_fvalue_get, /* get_value */
NULL, /* get_value_uinteger */
NULL, /* get_value_sinteger */
- NULL, /* get_value_integer64 */
+ NULL, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
NULL, /* get_value_floating */
NULL, /* cmp_eq */
diff --git a/epan/ftypes/ftype-string.c b/epan/ftypes/ftype-string.c
index 35c3357c57..143d481958 100644
--- a/epan/ftypes/ftype-string.c
+++ b/epan/ftypes/ftype-string.c
@@ -248,13 +248,15 @@ ftype_register_string(void)
NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
- NULL, /* set_value_integer64 */
+ NULL, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
NULL, /* set_value_floating */
value_get, /* get_value */
NULL, /* get_value_uinteger */
NULL, /* get_value_sinteger */
- NULL, /* get_value_integer64 */
+ NULL, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
NULL, /* get_value_floating */
cmp_eq,
@@ -290,13 +292,15 @@ ftype_register_string(void)
NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
- NULL, /* set_value_integer64 */
+ NULL, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
NULL, /* set_value_floating */
value_get, /* get_value */
NULL, /* get_value_uinteger */
NULL, /* get_value_sinteger */
- NULL, /* get_value_integer64 */
+ NULL, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
NULL, /* get_value_floating */
cmp_eq,
@@ -332,13 +336,15 @@ ftype_register_string(void)
NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
- NULL, /* set_value_integer64 */
+ NULL, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
NULL, /* set_value_floating */
value_get, /* get_value */
NULL, /* get_value_uinteger */
NULL, /* get_value_sinteger */
- NULL, /* get_value_integer64 */
+ NULL, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
NULL, /* get_value_floating */
cmp_eq,
@@ -374,13 +380,15 @@ ftype_register_string(void)
NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
- NULL, /* set_value_integer64 */
+ NULL, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
NULL, /* set_value_floating */
value_get, /* get_value */
NULL, /* get_value_uinteger */
NULL, /* get_value_sinteger */
- NULL, /* get_value_integer64 */
+ NULL, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
NULL, /* get_value_floating */
cmp_eq,
diff --git a/epan/ftypes/ftype-time.c b/epan/ftypes/ftype-time.c
index 6ee8907142..8aaac3aebd 100644
--- a/epan/ftypes/ftype-time.c
+++ b/epan/ftypes/ftype-time.c
@@ -397,13 +397,15 @@ ftype_register_time(void)
NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
- NULL, /* set_value_integer64 */
+ NULL, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
NULL, /* set_value_floating */
value_get, /* get_value */
NULL, /* get_value_uinteger */
NULL, /* get_value_sinteger */
- NULL, /* get_value_integer64 */
+ NULL, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
NULL, /* get_value_floating */
cmp_eq,
@@ -439,13 +441,15 @@ ftype_register_time(void)
NULL, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
- NULL, /* set_value_integer64 */
+ NULL, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
NULL, /* set_value_floating */
value_get, /* get_value */
NULL, /* get_value_uinteger */
NULL, /* get_value_sinteger */
- NULL, /* get_value_integer64 */
+ NULL, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
NULL, /* get_value_floating */
cmp_eq,
diff --git a/epan/ftypes/ftype-tvbuff.c b/epan/ftypes/ftype-tvbuff.c
index f99132746a..a1376475bd 100644
--- a/epan/ftypes/ftype-tvbuff.c
+++ b/epan/ftypes/ftype-tvbuff.c
@@ -433,13 +433,15 @@ ftype_register_tvbuff(void)
value_set, /* set_value_tvbuff */
NULL, /* set_value_uinteger */
NULL, /* set_value_sinteger */
- NULL, /* set_value_integer64 */
+ NULL, /* set_value_uinteger64 */
+ NULL, /* set_value_sinteger64 */
NULL, /* set_value_floating */
value_get, /* get_value */
NULL, /* get_value_uinteger */
NULL, /* get_value_sinteger */
- NULL, /* get_value_integer64 */
+ NULL, /* get_value_uinteger64 */
+ NULL, /* get_value_sinteger64 */
NULL, /* get_value_floating */
cmp_eq,
diff --git a/epan/ftypes/ftypes-int.h b/epan/ftypes/ftypes-int.h
index 98cf9052b6..912a0dbdbc 100644
--- a/epan/ftypes/ftypes-int.h
+++ b/epan/ftypes/ftypes-int.h
@@ -61,13 +61,15 @@ 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);
+typedef void (*FvalueSetUnsignedInteger64Func)(fvalue_t*, guint64);
+typedef void (*FvalueSetSignedInteger64Func)(fvalue_t*, gint64);
typedef void (*FvalueSetFloatingFunc)(fvalue_t*, gdouble);
typedef gpointer (*FvalueGetFunc)(fvalue_t*);
typedef guint32 (*FvalueGetUnsignedIntegerFunc)(fvalue_t*);
typedef gint32 (*FvalueGetSignedIntegerFunc)(fvalue_t*);
-typedef guint64 (*FvalueGetInteger64Func)(fvalue_t*);
+typedef guint64 (*FvalueGetUnsignedInteger64Func)(fvalue_t*);
+typedef gint64 (*FvalueGetSignedInteger64Func)(fvalue_t*);
typedef double (*FvalueGetFloatingFunc)(fvalue_t*);
typedef gboolean (*FvalueCmp)(const fvalue_t*, const fvalue_t*);
@@ -96,14 +98,16 @@ struct _ftype_t {
FvalueSetTvbuffFunc set_value_tvbuff;
FvalueSetUnsignedIntegerFunc set_value_uinteger;
FvalueSetSignedIntegerFunc set_value_sinteger;
- FvalueSetInteger64Func set_value_integer64;
+ FvalueSetUnsignedInteger64Func set_value_uinteger64;
+ FvalueSetSignedInteger64Func set_value_sinteger64;
FvalueSetFloatingFunc set_value_floating;
/* could be union */
FvalueGetFunc get_value;
FvalueGetUnsignedIntegerFunc get_value_uinteger;
FvalueGetSignedIntegerFunc get_value_sinteger;
- FvalueGetInteger64Func get_value_integer64;
+ FvalueGetUnsignedInteger64Func get_value_uinteger64;
+ FvalueGetSignedInteger64Func get_value_sinteger64;
FvalueGetFloatingFunc get_value_floating;
FvalueCmp cmp_eq;
diff --git a/epan/ftypes/ftypes.c b/epan/ftypes/ftypes.c
index 53e2944584..9dc8f9afe1 100644
--- a/epan/ftypes/ftypes.c
+++ b/epan/ftypes/ftypes.c
@@ -93,6 +93,18 @@ same_ftype(const enum ftenum ftype)
case FT_UINT32:
return FT_UINT32;
+ case FT_INT40:
+ case FT_INT48:
+ case FT_INT56:
+ case FT_INT64:
+ return FT_INT64;
+
+ case FT_UINT40:
+ case FT_UINT48:
+ case FT_UINT56:
+ case FT_UINT64:
+ return FT_UINT64;
+
case FT_STRING:
case FT_STRINGZ:
case FT_UINT_STRING:
@@ -111,8 +123,6 @@ same_ftype(const enum ftenum ftype)
return FT_OID;
/* XXX: the folowing are unqiue for now */
- case FT_INT64:
- case FT_UINT64:
case FT_IPv4:
case FT_IPv6:
@@ -540,12 +550,18 @@ fvalue_set_sinteger(fvalue_t *fv, gint32 value)
fv->ftype->set_value_sinteger(fv, value);
}
+void
+fvalue_set_uinteger64(fvalue_t *fv, guint64 value)
+{
+ g_assert(fv->ftype->set_value_uinteger64);
+ fv->ftype->set_value_uinteger64(fv, value);
+}
void
-fvalue_set_integer64(fvalue_t *fv, guint64 value)
+fvalue_set_sinteger64(fvalue_t *fv, gint64 value)
{
- g_assert(fv->ftype->set_value_integer64);
- fv->ftype->set_value_integer64(fv, value);
+ g_assert(fv->ftype->set_value_sinteger64);
+ fv->ftype->set_value_sinteger64(fv, value);
}
void
@@ -577,12 +593,18 @@ fvalue_get_sinteger(fvalue_t *fv)
return fv->ftype->get_value_sinteger(fv);
}
-
guint64
-fvalue_get_integer64(fvalue_t *fv)
+fvalue_get_uinteger64(fvalue_t *fv)
+{
+ g_assert(fv->ftype->get_value_uinteger64);
+ return fv->ftype->get_value_uinteger64(fv);
+}
+
+gint64
+fvalue_get_sinteger64(fvalue_t *fv)
{
- g_assert(fv->ftype->get_value_integer64);
- return fv->ftype->get_value_integer64(fv);
+ g_assert(fv->ftype->get_value_sinteger64);
+ return fv->ftype->get_value_sinteger64(fv);
}
double
diff --git a/epan/ftypes/ftypes.h b/epan/ftypes/ftypes.h
index 33f36a4b6c..71f6e9386c 100644
--- a/epan/ftypes/ftypes.h
+++ b/epan/ftypes/ftypes.h
@@ -40,11 +40,17 @@ enum ftenum {
FT_UINT16,
FT_UINT24, /* really a UINT32, but displayed as 3 hex-digits if FD_HEX*/
FT_UINT32,
+ FT_UINT40, /* really a UINT64, but displayed as 10 hex-digits if FD_HEX*/
+ FT_UINT48, /* really a UINT64, but displayed as 12 hex-digits if FD_HEX*/
+ FT_UINT56, /* really a UINT64, but displayed as 14 hex-digits if FD_HEX*/
FT_UINT64,
FT_INT8,
FT_INT16,
FT_INT24, /* same as for UINT24 */
FT_INT32,
+ FT_INT40, /* same as for UINT40 */
+ FT_INT48, /* same as for UINT48 */
+ FT_INT56, /* same as for UINT56 */
FT_INT64,
FT_FLOAT,
FT_DOUBLE,
@@ -73,8 +79,8 @@ enum ftenum {
FT_NUM_TYPES /* last item number plus one */
};
-#define IS_FT_INT(ft) ((ft)==FT_INT8||(ft)==FT_INT16||(ft)==FT_INT24||(ft)==FT_INT32||(ft)==FT_INT64)
-#define IS_FT_UINT(ft) ((ft)==FT_UINT8||(ft)==FT_UINT16||(ft)==FT_UINT24||(ft)==FT_UINT32||(ft)==FT_UINT64||(ft)==FT_FRAMENUM)
+#define IS_FT_INT(ft) ((ft)==FT_INT8||(ft)==FT_INT16||(ft)==FT_INT24||(ft)==FT_INT32||(ft)==FT_INT40||(ft)==FT_INT48||(ft)==FT_INT56||(ft)==FT_INT64)
+#define IS_FT_UINT(ft) ((ft)==FT_UINT8||(ft)==FT_UINT16||(ft)==FT_UINT24||(ft)==FT_UINT32||(ft)==FT_UINT40||(ft)==FT_UINT48||(ft)==FT_UINT56||(ft)==FT_UINT64||(ft)==FT_FRAMENUM)
#define IS_FT_TIME(ft) ((ft)==FT_ABSOLUTE_TIME||(ft)==FT_RELATIVE_TIME)
#define IS_FT_STRING(ft) ((ft)==FT_STRING||(ft)==FT_STRINGZ||(ft)==FT_STRINGZPAD)
@@ -86,7 +92,7 @@ enum ftenum {
#define FT_IPXNET_LEN 4
#define FT_EUI64_LEN 8
#define FT_AX25_ADDR_LEN 7
-#define FT_VINES_ADDR_LEN 6
+#define FT_VINES_ADDR_LEN 6
#define FT_FCWWN_LEN 8
typedef enum ftenum ftenum_t;
@@ -185,6 +191,8 @@ typedef struct _fvalue_t {
guint32 uinteger;
gint32 sinteger;
guint64 integer64;
+ guint64 uinteger64;
+ gint64 sinteger64;
gdouble floating;
gchar *string;
guchar *ustring;
@@ -273,7 +281,10 @@ void
fvalue_set_sinteger(fvalue_t *fv, gint32 value);
void
-fvalue_set_integer64(fvalue_t *fv, guint64 value);
+fvalue_set_uinteger64(fvalue_t *fv, guint64 value);
+
+void
+fvalue_set_sinteger64(fvalue_t *fv, gint64 value);
void
fvalue_set_floating(fvalue_t *fv, gdouble value);
@@ -290,7 +301,11 @@ fvalue_get_sinteger(fvalue_t *fv);
WS_DLL_PUBLIC
guint64
-fvalue_get_integer64(fvalue_t *fv);
+fvalue_get_uinteger64(fvalue_t *fv);
+
+WS_DLL_PUBLIC
+gint64
+fvalue_get_sinteger64(fvalue_t *fv);
WS_DLL_PUBLIC double
fvalue_get_floating(fvalue_t *fv);