diff options
author | JC Wren <jcwren@jcwren.com> | 2014-12-17 15:19:20 -0500 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2015-02-21 16:57:52 +0000 |
commit | e2bcee6ac442e6eb66dd3b09186070de4acb0010 (patch) | |
tree | e38e70de1a7160c6833601584774f12936559568 /epan/ftypes | |
parent | 13531d36fb91f3abbd6e62add83faf863e62d974 (diff) | |
download | wireshark-e2bcee6ac442e6eb66dd3b09186070de4acb0010.tar.gz |
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.c | 54 | ||||
-rw-r--r-- | epan/ftypes/ftype-double.c | 12 | ||||
-rw-r--r-- | epan/ftypes/ftype-guid.c | 6 | ||||
-rw-r--r-- | epan/ftypes/ftype-integer.c | 492 | ||||
-rw-r--r-- | epan/ftypes/ftype-ipv4.c | 6 | ||||
-rw-r--r-- | epan/ftypes/ftype-ipv6.c | 6 | ||||
-rw-r--r-- | epan/ftypes/ftype-none.c | 6 | ||||
-rw-r--r-- | epan/ftypes/ftype-pcre.c | 6 | ||||
-rw-r--r-- | epan/ftypes/ftype-string.c | 24 | ||||
-rw-r--r-- | epan/ftypes/ftype-time.c | 12 | ||||
-rw-r--r-- | epan/ftypes/ftype-tvbuff.c | 6 | ||||
-rw-r--r-- | epan/ftypes/ftypes-int.h | 12 | ||||
-rw-r--r-- | epan/ftypes/ftypes.c | 40 | ||||
-rw-r--r-- | epan/ftypes/ftypes.h | 25 |
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); |