Expand the ability of fvalue_to_string_repr, and modify more FT_* types
to provide that method. svn path=/trunk/; revision=7849
This commit is contained in:
parent
03731079ca
commit
6823d063ee
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* $Id: ftype-bytes.c,v 1.14 2003/02/08 04:22:37 gram Exp $
|
* $Id: ftype-bytes.c,v 1.15 2003/06/11 21:24:53 gram Exp $
|
||||||
*
|
*
|
||||||
* Ethereal - Network traffic analyzer
|
* Ethereal - Network traffic analyzer
|
||||||
* By Gerald Combs <gerald@ethereal.com>
|
* By Gerald Combs <gerald@ethereal.com>
|
||||||
|
@ -58,23 +58,21 @@ bytes_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
bytes_strlen(fvalue_t *fv)
|
bytes_repr_len(fvalue_t *fv, ftrepr_t rtype _U_)
|
||||||
{
|
{
|
||||||
/* 3 bytes for each byte of the byte "NN:" minus 1 byte
|
/* 3 bytes for each byte of the byte "NN:" minus 1 byte
|
||||||
* as there's no trailing ":" */
|
* as there's no trailing ":". */
|
||||||
return fv->value.bytes->len * 3 - 1;
|
return fv->value.bytes->len * 3 - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *
|
static void
|
||||||
bytes_to_string(fvalue_t *fv)
|
bytes_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, char *buf)
|
||||||
{
|
{
|
||||||
guint8 *c;
|
guint8 *c;
|
||||||
char *buf;
|
|
||||||
char *write_cursor;
|
char *write_cursor;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
c = fv->value.bytes->data;
|
c = fv->value.bytes->data;
|
||||||
buf = g_malloc0(bytes_strlen(fv));
|
|
||||||
write_cursor = buf;
|
write_cursor = buf;
|
||||||
|
|
||||||
for (i = 0; i < fv->value.bytes->len; i++) {
|
for (i = 0; i < fv->value.bytes->len; i++) {
|
||||||
|
@ -88,7 +86,6 @@ bytes_to_string(fvalue_t *fv)
|
||||||
write_cursor += 3;
|
write_cursor += 3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return buf;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -591,8 +588,8 @@ ftype_register_bytes(void)
|
||||||
bytes_fvalue_new, /* new_value */
|
bytes_fvalue_new, /* new_value */
|
||||||
bytes_fvalue_free, /* free_value */
|
bytes_fvalue_free, /* free_value */
|
||||||
val_from_string, /* val_from_string */
|
val_from_string, /* val_from_string */
|
||||||
bytes_to_string, /* val_to_string_repr */
|
bytes_to_repr, /* val_to_string_repr */
|
||||||
bytes_strlen, /* len_string_repr */
|
bytes_repr_len, /* len_string_repr */
|
||||||
|
|
||||||
bytes_fvalue_set, /* set_value */
|
bytes_fvalue_set, /* set_value */
|
||||||
NULL, /* set_value_integer */
|
NULL, /* set_value_integer */
|
||||||
|
@ -620,8 +617,8 @@ ftype_register_bytes(void)
|
||||||
bytes_fvalue_new, /* new_value */
|
bytes_fvalue_new, /* new_value */
|
||||||
bytes_fvalue_free, /* free_value */
|
bytes_fvalue_free, /* free_value */
|
||||||
val_from_string, /* val_from_string */
|
val_from_string, /* val_from_string */
|
||||||
bytes_to_string, /* val_to_string_repr */
|
bytes_to_repr, /* val_to_string_repr */
|
||||||
bytes_strlen, /* len_string_repr */
|
bytes_repr_len, /* len_string_repr */
|
||||||
|
|
||||||
bytes_fvalue_set, /* set_value */
|
bytes_fvalue_set, /* set_value */
|
||||||
NULL, /* set_value_integer */
|
NULL, /* set_value_integer */
|
||||||
|
@ -649,8 +646,8 @@ ftype_register_bytes(void)
|
||||||
bytes_fvalue_new, /* new_value */
|
bytes_fvalue_new, /* new_value */
|
||||||
bytes_fvalue_free, /* free_value */
|
bytes_fvalue_free, /* free_value */
|
||||||
ether_from_string, /* val_from_string */
|
ether_from_string, /* val_from_string */
|
||||||
bytes_to_string, /* val_to_string_repr */
|
bytes_to_repr, /* val_to_string_repr */
|
||||||
bytes_strlen, /* len_string_repr */
|
bytes_repr_len, /* len_string_repr */
|
||||||
|
|
||||||
ether_fvalue_set, /* set_value */
|
ether_fvalue_set, /* set_value */
|
||||||
NULL, /* set_value_integer */
|
NULL, /* set_value_integer */
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* $Id: ftype-integer.c,v 1.12 2003/02/08 04:22:37 gram Exp $
|
* $Id: ftype-integer.c,v 1.13 2003/06/11 21:24:53 gram Exp $
|
||||||
*
|
*
|
||||||
* Ethereal - Network traffic analyzer
|
* Ethereal - Network traffic analyzer
|
||||||
* By Gerald Combs <gerald@ethereal.com>
|
* By Gerald Combs <gerald@ethereal.com>
|
||||||
|
@ -170,6 +170,18 @@ boolean_fvalue_new(fvalue_t *fv)
|
||||||
fv->value.integer = TRUE;
|
fv->value.integer = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
boolean_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
boolean_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, char *buf)
|
||||||
|
{
|
||||||
|
sprintf(buf, "%s", fv->value.integer ? "1" : "0");
|
||||||
|
}
|
||||||
|
|
||||||
/* Checks for equality with zero or non-zero */
|
/* Checks for equality with zero or non-zero */
|
||||||
static gboolean
|
static gboolean
|
||||||
bool_eq(fvalue_t *a, fvalue_t *b)
|
bool_eq(fvalue_t *a, fvalue_t *b)
|
||||||
|
@ -206,22 +218,22 @@ ftype_register_integers(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
static ftype_t uint8_type = {
|
static ftype_t uint8_type = {
|
||||||
"FT_UINT8",
|
"FT_UINT8", /* name */
|
||||||
"unsigned, 1 byte",
|
"unsigned, 1 byte", /* pretty name */
|
||||||
1,
|
1, /* wire_size */
|
||||||
int_fvalue_new,
|
int_fvalue_new, /* new_value */
|
||||||
NULL,
|
NULL, /* free_value */
|
||||||
val_from_string,
|
val_from_string, /* val_from_string */
|
||||||
NULL, /* val_to_string_repr */
|
NULL, /* val_to_string_repr */
|
||||||
NULL, /* len_string_repr */
|
NULL, /* len_string_repr */
|
||||||
|
|
||||||
NULL,
|
NULL, /* set_value */
|
||||||
set_integer,
|
set_integer, /* set_value_integer */
|
||||||
NULL,
|
NULL, /* set_value_floating */
|
||||||
|
|
||||||
NULL,
|
NULL, /* get_value */
|
||||||
get_integer,
|
get_integer, /* get_value_integer */
|
||||||
NULL,
|
NULL, /* get_value_floating */
|
||||||
|
|
||||||
cmp_eq,
|
cmp_eq,
|
||||||
cmp_ne,
|
cmp_ne,
|
||||||
|
@ -230,26 +242,26 @@ ftype_register_integers(void)
|
||||||
u_cmp_lt,
|
u_cmp_lt,
|
||||||
u_cmp_le,
|
u_cmp_le,
|
||||||
|
|
||||||
NULL,
|
NULL, /* len */
|
||||||
NULL,
|
NULL, /* slice */
|
||||||
};
|
};
|
||||||
static ftype_t uint16_type = {
|
static ftype_t uint16_type = {
|
||||||
"FT_UINT16",
|
"FT_UINT16", /* name */
|
||||||
"unsigned, 2 bytes",
|
"unsigned, 2 bytes", /* pretty_name */
|
||||||
2,
|
2, /* wire_size */
|
||||||
int_fvalue_new,
|
int_fvalue_new, /* new_value */
|
||||||
NULL,
|
NULL, /* free_value */
|
||||||
val_from_string,
|
val_from_string, /* val_from_string */
|
||||||
NULL, /* val_to_string_repr */
|
NULL, /* val_to_string_repr */
|
||||||
NULL, /* len_string_repr */
|
NULL, /* len_string_repr */
|
||||||
|
|
||||||
NULL,
|
NULL, /* set_value */
|
||||||
set_integer,
|
set_integer, /* set_value_integer */
|
||||||
NULL,
|
NULL, /* set_value_floating */
|
||||||
|
|
||||||
NULL,
|
NULL, /* get_value */
|
||||||
get_integer,
|
get_integer, /* get_value_integer */
|
||||||
NULL,
|
NULL, /* get_value_floating */
|
||||||
|
|
||||||
cmp_eq,
|
cmp_eq,
|
||||||
cmp_ne,
|
cmp_ne,
|
||||||
|
@ -258,26 +270,26 @@ ftype_register_integers(void)
|
||||||
u_cmp_lt,
|
u_cmp_lt,
|
||||||
u_cmp_le,
|
u_cmp_le,
|
||||||
|
|
||||||
NULL,
|
NULL, /* len */
|
||||||
NULL,
|
NULL, /* slice */
|
||||||
};
|
};
|
||||||
static ftype_t uint24_type = {
|
static ftype_t uint24_type = {
|
||||||
"FT_UINT24",
|
"FT_UINT24", /* name */
|
||||||
"unsigned, 3 bytes",
|
"unsigned, 3 bytes", /* pretty_name */
|
||||||
3,
|
3, /* wire_size */
|
||||||
int_fvalue_new,
|
int_fvalue_new, /* new_value */
|
||||||
NULL,
|
NULL, /* free_value */
|
||||||
val_from_string,
|
val_from_string, /* val_from_string */
|
||||||
NULL, /* val_to_string_repr */
|
NULL, /* val_to_string_repr */
|
||||||
NULL, /* len_string_repr */
|
NULL, /* len_string_repr */
|
||||||
|
|
||||||
NULL,
|
NULL, /* set_value */
|
||||||
set_integer,
|
set_integer, /* set_value_integer */
|
||||||
NULL,
|
NULL, /* set_value_floating */
|
||||||
|
|
||||||
NULL,
|
NULL, /* get_value */
|
||||||
get_integer,
|
get_integer, /* get_value_integer */
|
||||||
NULL,
|
NULL, /* get_value_floating */
|
||||||
|
|
||||||
cmp_eq,
|
cmp_eq,
|
||||||
cmp_ne,
|
cmp_ne,
|
||||||
|
@ -286,26 +298,26 @@ ftype_register_integers(void)
|
||||||
u_cmp_lt,
|
u_cmp_lt,
|
||||||
u_cmp_le,
|
u_cmp_le,
|
||||||
|
|
||||||
NULL,
|
NULL, /* len */
|
||||||
NULL,
|
NULL, /* slice */
|
||||||
};
|
};
|
||||||
static ftype_t uint32_type = {
|
static ftype_t uint32_type = {
|
||||||
"FT_UINT32",
|
"FT_UINT32", /* name */
|
||||||
"unsigned, 4 bytes",
|
"unsigned, 4 bytes", /* pretty_name */
|
||||||
4,
|
4, /* wire_size */
|
||||||
int_fvalue_new,
|
int_fvalue_new, /* new_value */
|
||||||
NULL,
|
NULL, /* free_value */
|
||||||
val_from_string,
|
val_from_string, /* val_from_string */
|
||||||
NULL, /* val_to_string_repr */
|
NULL, /* val_to_string_repr */
|
||||||
NULL, /* len_string_repr */
|
NULL, /* len_string_repr */
|
||||||
|
|
||||||
NULL,
|
NULL, /* set_value */
|
||||||
set_integer,
|
set_integer, /* set_value_integer */
|
||||||
NULL,
|
NULL, /* set_value_floating */
|
||||||
|
|
||||||
NULL,
|
NULL, /* get_value */
|
||||||
get_integer,
|
get_integer, /* get_value_integer */
|
||||||
NULL,
|
NULL, /* get_value_floating */
|
||||||
|
|
||||||
cmp_eq,
|
cmp_eq,
|
||||||
cmp_ne,
|
cmp_ne,
|
||||||
|
@ -314,26 +326,26 @@ ftype_register_integers(void)
|
||||||
u_cmp_lt,
|
u_cmp_lt,
|
||||||
u_cmp_le,
|
u_cmp_le,
|
||||||
|
|
||||||
NULL,
|
NULL, /* len */
|
||||||
NULL,
|
NULL, /* slice */
|
||||||
};
|
};
|
||||||
static ftype_t int8_type = {
|
static ftype_t int8_type = {
|
||||||
"FT_INT8",
|
"FT_INT8", /* name */
|
||||||
"signed, 1 byte",
|
"signed, 1 byte", /* pretty_name */
|
||||||
1,
|
1, /* wire_size */
|
||||||
int_fvalue_new,
|
int_fvalue_new, /* new_value */
|
||||||
NULL,
|
NULL, /* free_value */
|
||||||
val_from_string,
|
val_from_string, /* val_from_string */
|
||||||
NULL, /* val_to_string_repr */
|
NULL, /* val_to_string_repr */
|
||||||
NULL, /* len_string_repr */
|
NULL, /* len_string_repr */
|
||||||
|
|
||||||
NULL,
|
NULL, /* set_value */
|
||||||
set_integer,
|
set_integer, /* set_value_integer */
|
||||||
NULL,
|
NULL, /* set_value_floating */
|
||||||
|
|
||||||
NULL,
|
NULL, /* get_value */
|
||||||
get_integer,
|
get_integer, /* get_value_integer */
|
||||||
NULL,
|
NULL, /* get_value_floating */
|
||||||
|
|
||||||
cmp_eq,
|
cmp_eq,
|
||||||
cmp_ne,
|
cmp_ne,
|
||||||
|
@ -342,26 +354,26 @@ ftype_register_integers(void)
|
||||||
s_cmp_lt,
|
s_cmp_lt,
|
||||||
s_cmp_le,
|
s_cmp_le,
|
||||||
|
|
||||||
NULL,
|
NULL, /* len */
|
||||||
NULL,
|
NULL, /* slice */
|
||||||
};
|
};
|
||||||
static ftype_t int16_type = {
|
static ftype_t int16_type = {
|
||||||
"FT_INT16",
|
"FT_INT16", /* name */
|
||||||
"signed, 2 bytes",
|
"signed, 2 bytes", /* pretty_name */
|
||||||
2,
|
2, /* wire_size */
|
||||||
int_fvalue_new,
|
int_fvalue_new, /* new_value */
|
||||||
NULL,
|
NULL, /* free_value */
|
||||||
val_from_string,
|
val_from_string, /* val_from_string */
|
||||||
NULL, /* val_to_string_repr */
|
NULL, /* val_to_string_repr */
|
||||||
NULL, /* len_string_repr */
|
NULL, /* len_string_repr */
|
||||||
|
|
||||||
NULL,
|
NULL, /* set_value */
|
||||||
set_integer,
|
set_integer, /* set_value_integer */
|
||||||
NULL,
|
NULL, /* set_value_floating */
|
||||||
|
|
||||||
NULL,
|
NULL, /* get_value */
|
||||||
get_integer,
|
get_integer, /* get_value_integer */
|
||||||
NULL,
|
NULL, /* get_value_floating */
|
||||||
|
|
||||||
cmp_eq,
|
cmp_eq,
|
||||||
cmp_ne,
|
cmp_ne,
|
||||||
|
@ -370,26 +382,26 @@ ftype_register_integers(void)
|
||||||
s_cmp_lt,
|
s_cmp_lt,
|
||||||
s_cmp_le,
|
s_cmp_le,
|
||||||
|
|
||||||
NULL,
|
NULL, /* len */
|
||||||
NULL,
|
NULL, /* slice */
|
||||||
};
|
};
|
||||||
static ftype_t int24_type = {
|
static ftype_t int24_type = {
|
||||||
"FT_INT24",
|
"FT_INT24", /* name */
|
||||||
"signed, 3 bytes",
|
"signed, 3 bytes", /* pretty_name */
|
||||||
3,
|
3, /* wire_size */
|
||||||
int_fvalue_new,
|
int_fvalue_new, /* new_value */
|
||||||
NULL,
|
NULL, /* free_value */
|
||||||
val_from_string,
|
val_from_string, /* val_from_string */
|
||||||
NULL, /* val_to_string_repr */
|
NULL, /* val_to_string_repr */
|
||||||
NULL, /* len_string_repr */
|
NULL, /* len_string_repr */
|
||||||
|
|
||||||
NULL,
|
NULL, /* set_value */
|
||||||
set_integer,
|
set_integer, /* set_value_integer */
|
||||||
NULL,
|
NULL, /* set_value_floating */
|
||||||
|
|
||||||
NULL,
|
NULL, /* get_value */
|
||||||
get_integer,
|
get_integer, /* get_value_integer */
|
||||||
NULL,
|
NULL, /* get_value_floating */
|
||||||
|
|
||||||
cmp_eq,
|
cmp_eq,
|
||||||
cmp_ne,
|
cmp_ne,
|
||||||
|
@ -398,26 +410,26 @@ ftype_register_integers(void)
|
||||||
s_cmp_lt,
|
s_cmp_lt,
|
||||||
s_cmp_le,
|
s_cmp_le,
|
||||||
|
|
||||||
NULL,
|
NULL, /* len */
|
||||||
NULL,
|
NULL, /* slice */
|
||||||
};
|
};
|
||||||
static ftype_t int32_type = {
|
static ftype_t int32_type = {
|
||||||
"FT_INT32",
|
"FT_INT32", /* name */
|
||||||
"signed, 4 bytes",
|
"signed, 4 bytes", /* pretty_name */
|
||||||
4,
|
4, /* wire_size */
|
||||||
int_fvalue_new,
|
int_fvalue_new, /* new_value */
|
||||||
NULL,
|
NULL, /* free_value */
|
||||||
val_from_string,
|
val_from_string, /* val_from_string */
|
||||||
NULL, /* val_to_string_repr */
|
NULL, /* val_to_string_repr */
|
||||||
NULL, /* len_string_repr */
|
NULL, /* len_string_repr */
|
||||||
|
|
||||||
NULL,
|
NULL, /* set_value */
|
||||||
set_integer,
|
set_integer, /* set_value_integer */
|
||||||
NULL,
|
NULL, /* set_value_floating */
|
||||||
|
|
||||||
NULL,
|
NULL, /* get_value */
|
||||||
get_integer,
|
get_integer, /* get_value_integer */
|
||||||
NULL,
|
NULL, /* get_value_floating */
|
||||||
|
|
||||||
cmp_eq,
|
cmp_eq,
|
||||||
cmp_ne,
|
cmp_ne,
|
||||||
|
@ -426,55 +438,55 @@ ftype_register_integers(void)
|
||||||
s_cmp_lt,
|
s_cmp_lt,
|
||||||
s_cmp_le,
|
s_cmp_le,
|
||||||
|
|
||||||
NULL,
|
NULL, /* len */
|
||||||
NULL,
|
NULL, /* slice */
|
||||||
};
|
};
|
||||||
static ftype_t boolean_type = {
|
static ftype_t boolean_type = {
|
||||||
"FT_BOOLEAN",
|
"FT_BOOLEAN", /* name */
|
||||||
"Boolean",
|
"Boolean", /* pretty_name */
|
||||||
0,
|
0, /* wire_size */
|
||||||
boolean_fvalue_new,
|
boolean_fvalue_new, /* new_value */
|
||||||
NULL,
|
NULL, /* free_value */
|
||||||
val_from_string,
|
val_from_string, /* val_from_string */
|
||||||
NULL, /* val_to_string_repr */
|
boolean_to_repr, /* val_to_string_repr */
|
||||||
NULL, /* len_string_repr */
|
boolean_repr_len, /* len_string_repr */
|
||||||
|
|
||||||
NULL,
|
NULL, /* set_value */
|
||||||
set_integer,
|
set_integer, /* set_value_integer */
|
||||||
NULL,
|
NULL, /* set_value_floating */
|
||||||
|
|
||||||
NULL,
|
NULL, /* get_value */
|
||||||
get_integer,
|
get_integer, /* get_value_integer */
|
||||||
NULL,
|
NULL, /* get_value_floating */
|
||||||
|
|
||||||
bool_eq,
|
bool_eq, /* cmp_eq */
|
||||||
bool_ne,
|
bool_ne, /* cmp_ne */
|
||||||
NULL,
|
NULL, /* cmp_gt */
|
||||||
NULL,
|
NULL, /* cmp_ge */
|
||||||
NULL,
|
NULL, /* cmp_lt */
|
||||||
NULL,
|
NULL, /* cmp_le */
|
||||||
|
|
||||||
NULL,
|
NULL, /* len */
|
||||||
NULL,
|
NULL, /* slice */
|
||||||
};
|
};
|
||||||
|
|
||||||
static ftype_t ipxnet_type = {
|
static ftype_t ipxnet_type = {
|
||||||
"FT_IPXNET",
|
"FT_IPXNET", /* name */
|
||||||
"IPX network number",
|
"IPX network number", /* pretty_name */
|
||||||
4,
|
4, /* wire_size */
|
||||||
int_fvalue_new,
|
int_fvalue_new, /* new_value */
|
||||||
NULL,
|
NULL, /* free_value */
|
||||||
ipxnet_from_string,
|
ipxnet_from_string, /* val_from_string */
|
||||||
NULL, /* val_to_string_repr */
|
NULL, /* val_to_string_repr */
|
||||||
NULL, /* len_string_repr */
|
NULL, /* len_string_repr */
|
||||||
|
|
||||||
NULL,
|
NULL, /* set_value */
|
||||||
set_integer,
|
set_integer, /* set_value_integer */
|
||||||
NULL,
|
NULL, /* set_value_floating */
|
||||||
|
|
||||||
NULL,
|
NULL, /* get_value */
|
||||||
get_integer,
|
get_integer, /* get_value_integer */
|
||||||
NULL,
|
NULL, /* get_value_floating */
|
||||||
|
|
||||||
cmp_eq,
|
cmp_eq,
|
||||||
cmp_ne,
|
cmp_ne,
|
||||||
|
@ -483,27 +495,27 @@ ftype_register_integers(void)
|
||||||
u_cmp_lt,
|
u_cmp_lt,
|
||||||
u_cmp_le,
|
u_cmp_le,
|
||||||
|
|
||||||
NULL,
|
NULL, /* len */
|
||||||
NULL,
|
NULL, /* slice */
|
||||||
};
|
};
|
||||||
|
|
||||||
static ftype_t framenum_type = {
|
static ftype_t framenum_type = {
|
||||||
"FT_FRAMENUM",
|
"FT_FRAMENUM", /* name */
|
||||||
"frame number",
|
"frame number", /* pretty_name */
|
||||||
4,
|
4, /* wire_size */
|
||||||
int_fvalue_new,
|
int_fvalue_new, /* new_value */
|
||||||
NULL,
|
NULL, /* free_value */
|
||||||
val_from_string,
|
val_from_string, /* val_from_string */
|
||||||
NULL, /* val_to_string_repr */
|
NULL, /* val_to_string_repr */
|
||||||
NULL, /* len_string_repr */
|
NULL, /* len_string_repr */
|
||||||
|
|
||||||
NULL,
|
NULL, /* set_value */
|
||||||
set_integer,
|
set_integer, /* set_value_integer */
|
||||||
NULL,
|
NULL, /* set_value_floating */
|
||||||
|
|
||||||
NULL,
|
NULL, /* get_value */
|
||||||
get_integer,
|
get_integer, /* get_value_integer */
|
||||||
NULL,
|
NULL, /* get_value_floating */
|
||||||
|
|
||||||
cmp_eq,
|
cmp_eq,
|
||||||
cmp_ne,
|
cmp_ne,
|
||||||
|
@ -512,8 +524,8 @@ ftype_register_integers(void)
|
||||||
u_cmp_lt,
|
u_cmp_lt,
|
||||||
u_cmp_le,
|
u_cmp_le,
|
||||||
|
|
||||||
NULL,
|
NULL, /* len */
|
||||||
NULL,
|
NULL, /* slice */
|
||||||
};
|
};
|
||||||
|
|
||||||
ftype_register(FT_UINT8, &uint8_type);
|
ftype_register(FT_UINT8, &uint8_type);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* $Id: ftype-string.c,v 1.8 2003/02/08 04:22:37 gram Exp $
|
* $Id: ftype-string.c,v 1.9 2003/06/11 21:24:53 gram Exp $
|
||||||
*
|
*
|
||||||
* Ethereal - Network traffic analyzer
|
* Ethereal - Network traffic analyzer
|
||||||
* By Gerald Combs <gerald@ethereal.com>
|
* By Gerald Combs <gerald@ethereal.com>
|
||||||
|
@ -53,6 +53,31 @@ string_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
string_repr_len(fvalue_t *fv, ftrepr_t rtype)
|
||||||
|
{
|
||||||
|
switch (rtype) {
|
||||||
|
case FTREPR_DISPLAY:
|
||||||
|
return strlen(fv->value.string);
|
||||||
|
case FTREPR_DFILTER:
|
||||||
|
return strlen(fv->value.string) + 2;
|
||||||
|
}
|
||||||
|
g_assert_not_reached();
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
string_to_repr(fvalue_t *fv, ftrepr_t rtype, char *buf)
|
||||||
|
{
|
||||||
|
if (rtype == FTREPR_DFILTER) {
|
||||||
|
sprintf(buf, "\"%s\"", fv->value.string);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
strcpy(buf, fv->value.string);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static gpointer
|
static gpointer
|
||||||
value_get(fvalue_t *fv)
|
value_get(fvalue_t *fv)
|
||||||
{
|
{
|
||||||
|
@ -124,22 +149,22 @@ ftype_register_string(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
static ftype_t string_type = {
|
static ftype_t string_type = {
|
||||||
"FT_STRING",
|
"FT_STRING", /* name */
|
||||||
"character string",
|
"character string", /* pretty_name */
|
||||||
0,
|
0, /* wire_size */
|
||||||
string_fvalue_new,
|
string_fvalue_new, /* new_value */
|
||||||
string_fvalue_free,
|
string_fvalue_free, /* free_value */
|
||||||
val_from_string,
|
val_from_string, /* val_from_string */
|
||||||
NULL, /* val_to_string_repr */
|
string_to_repr, /* val_to_string_repr */
|
||||||
NULL, /* len_string_repr */
|
string_repr_len, /* len_string_repr */
|
||||||
|
|
||||||
string_fvalue_set,
|
string_fvalue_set, /* set_value */
|
||||||
NULL,
|
NULL, /* set_value_integer */
|
||||||
NULL,
|
NULL, /* set_value_floating */
|
||||||
|
|
||||||
value_get,
|
value_get, /* get_value */
|
||||||
NULL,
|
NULL, /* get_value_integer */
|
||||||
NULL,
|
NULL, /* get_value_floating */
|
||||||
|
|
||||||
cmp_eq,
|
cmp_eq,
|
||||||
cmp_ne,
|
cmp_ne,
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* $Id: ftypes-int.h,v 1.7 2003/02/08 04:22:37 gram Exp $
|
* $Id: ftypes-int.h,v 1.8 2003/06/11 21:24:54 gram Exp $
|
||||||
*
|
*
|
||||||
* Ethereal - Network traffic analyzer
|
* Ethereal - Network traffic analyzer
|
||||||
* By Gerald Combs <gerald@ethereal.com>
|
* By Gerald Combs <gerald@ethereal.com>
|
||||||
|
@ -30,8 +30,8 @@ typedef void (*FvalueNewFunc)(fvalue_t*);
|
||||||
typedef void (*FvalueFreeFunc)(fvalue_t*);
|
typedef void (*FvalueFreeFunc)(fvalue_t*);
|
||||||
|
|
||||||
typedef gboolean (*FvalueFromString)(fvalue_t*, char*, LogFunc);
|
typedef gboolean (*FvalueFromString)(fvalue_t*, char*, LogFunc);
|
||||||
typedef char* (*FvalueToStringRepr)(fvalue_t*);
|
typedef void (*FvalueToStringRepr)(fvalue_t*, ftrepr_t, char*);
|
||||||
typedef int (*FvalueStringReprLen)(fvalue_t*);
|
typedef int (*FvalueStringReprLen)(fvalue_t*, ftrepr_t);
|
||||||
|
|
||||||
typedef void (*FvalueSetFunc)(fvalue_t*, gpointer, gboolean);
|
typedef void (*FvalueSetFunc)(fvalue_t*, gpointer, gboolean);
|
||||||
typedef void (*FvalueSetIntegerFunc)(fvalue_t*, guint32);
|
typedef void (*FvalueSetIntegerFunc)(fvalue_t*, guint32);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* $Id: ftypes.c,v 1.8 2003/02/08 04:22:37 gram Exp $
|
* $Id: ftypes.c,v 1.9 2003/06/11 21:24:54 gram Exp $
|
||||||
*
|
*
|
||||||
* Ethereal - Network traffic analyzer
|
* Ethereal - Network traffic analyzer
|
||||||
* By Gerald Combs <gerald@ethereal.com>
|
* By Gerald Combs <gerald@ethereal.com>
|
||||||
|
@ -25,6 +25,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <ftypes-int.h>
|
#include <ftypes-int.h>
|
||||||
|
#include <glib.h>
|
||||||
|
|
||||||
/* Keep track of ftype_t's via their ftenum number */
|
/* Keep track of ftype_t's via their ftenum number */
|
||||||
static ftype_t* type_list[FT_NUM_TYPES];
|
static ftype_t* type_list[FT_NUM_TYPES];
|
||||||
|
@ -272,17 +273,21 @@ fvalue_length(fvalue_t *fv)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
fvalue_string_repr_len(fvalue_t *fv)
|
fvalue_string_repr_len(fvalue_t *fv, ftrepr_t rtype)
|
||||||
{
|
{
|
||||||
g_assert(fv->ftype->len_string_repr);
|
g_assert(fv->ftype->len_string_repr);
|
||||||
return fv->ftype->len_string_repr(fv);
|
return fv->ftype->len_string_repr(fv, rtype);
|
||||||
}
|
}
|
||||||
|
|
||||||
char *
|
char *
|
||||||
fvalue_to_string_repr(fvalue_t *fv)
|
fvalue_to_string_repr(fvalue_t *fv, ftrepr_t rtype, char *buf)
|
||||||
{
|
{
|
||||||
g_assert(fv->ftype->val_to_string_repr);
|
g_assert(fv->ftype->val_to_string_repr);
|
||||||
return fv->ftype->val_to_string_repr(fv);
|
if (!buf) {
|
||||||
|
buf = g_malloc0(fvalue_string_repr_len(fv, rtype) + 1);
|
||||||
|
}
|
||||||
|
fv->ftype->val_to_string_repr(fv, rtype, buf);
|
||||||
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* ftypes.h
|
/* ftypes.h
|
||||||
* Definitions for field types
|
* Definitions for field types
|
||||||
*
|
*
|
||||||
* $Id: ftypes.h,v 1.16 2003/02/08 04:22:37 gram Exp $
|
* $Id: ftypes.h,v 1.17 2003/06/11 21:24:54 gram Exp $
|
||||||
*
|
*
|
||||||
* Ethereal - Network traffic analyzer
|
* Ethereal - Network traffic analyzer
|
||||||
* By Gerald Combs <gerald@ethereal.com>
|
* By Gerald Combs <gerald@ethereal.com>
|
||||||
|
@ -65,6 +65,14 @@ enum ftenum {
|
||||||
typedef enum ftenum ftenum_t;
|
typedef enum ftenum ftenum_t;
|
||||||
typedef struct _ftype_t ftype_t;
|
typedef struct _ftype_t ftype_t;
|
||||||
|
|
||||||
|
/* String representation types. */
|
||||||
|
enum ftrepr {
|
||||||
|
FTREPR_DISPLAY,
|
||||||
|
FTREPR_DFILTER
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef enum ftrepr ftrepr_t;
|
||||||
|
|
||||||
/* Initialize the ftypes subsytem. Called once. */
|
/* Initialize the ftypes subsytem. Called once. */
|
||||||
void
|
void
|
||||||
ftypes_initialize(void);
|
ftypes_initialize(void);
|
||||||
|
@ -145,11 +153,22 @@ typedef void (*LogFunc)(char*,...);
|
||||||
fvalue_t*
|
fvalue_t*
|
||||||
fvalue_from_string(ftenum_t ftype, char *s, LogFunc log);
|
fvalue_from_string(ftenum_t ftype, char *s, LogFunc log);
|
||||||
|
|
||||||
|
/* Returns the length of the string required to hold the
|
||||||
|
* string representation of the the field value.
|
||||||
|
* The length DOES NOT include the terminating NUL. */
|
||||||
int
|
int
|
||||||
fvalue_string_repr_len(fvalue_t *fv);
|
fvalue_string_repr_len(fvalue_t *fv, ftrepr_t rtype);
|
||||||
|
|
||||||
|
/* Creates the string representation of the field value.
|
||||||
|
* If given non-NULL 'buf', the string is written at the memory
|
||||||
|
* location pointed to by 'buf'. If 'buf' is NULL, new memory
|
||||||
|
* is malloc'ed and the string representation is written there.
|
||||||
|
* The pointer to the beginning of the string representation is
|
||||||
|
* returned. If 'buf' was NULL, this points to the newly-allocated
|
||||||
|
* memory. if 'buf' was non-NULL, then the return value will be
|
||||||
|
* 'buf'. */
|
||||||
char *
|
char *
|
||||||
fvalue_to_string_repr(fvalue_t *fv);
|
fvalue_to_string_repr(fvalue_t *fv, ftrepr_t rtype, char *buf);
|
||||||
|
|
||||||
const char*
|
const char*
|
||||||
fvalue_type_name(fvalue_t *fv);
|
fvalue_type_name(fvalue_t *fv);
|
||||||
|
|
53
epan/proto.c
53
epan/proto.c
|
@ -1,7 +1,7 @@
|
||||||
/* proto.c
|
/* proto.c
|
||||||
* Routines for protocol tree
|
* Routines for protocol tree
|
||||||
*
|
*
|
||||||
* $Id: proto.c,v 1.90 2003/06/10 18:03:23 guy Exp $
|
* $Id: proto.c,v 1.91 2003/06/11 21:24:53 gram Exp $
|
||||||
*
|
*
|
||||||
* Ethereal - Network traffic analyzer
|
* Ethereal - Network traffic analyzer
|
||||||
* By Gerald Combs <gerald@ethereal.com>
|
* By Gerald Combs <gerald@ethereal.com>
|
||||||
|
@ -3421,6 +3421,7 @@ proto_can_match_selected(field_info *finfo, epan_dissect_t *edt)
|
||||||
case FT_ETHER:
|
case FT_ETHER:
|
||||||
case FT_BYTES:
|
case FT_BYTES:
|
||||||
case FT_UINT_BYTES:
|
case FT_UINT_BYTES:
|
||||||
|
case FT_PROTOCOL:
|
||||||
/*
|
/*
|
||||||
* These all have values, so we can match.
|
* These all have values, so we can match.
|
||||||
*/
|
*/
|
||||||
|
@ -3511,19 +3512,6 @@ proto_construct_dfilter_string(field_info *finfo, epan_dissect_t *edt)
|
||||||
*/
|
*/
|
||||||
switch(hfinfo->type) {
|
switch(hfinfo->type) {
|
||||||
|
|
||||||
case FT_BOOLEAN:
|
|
||||||
/*
|
|
||||||
* 4 bytes for " == ".
|
|
||||||
* 1 byte for 1 or 0.
|
|
||||||
* 1 byte for the trailing '\0'.
|
|
||||||
*/
|
|
||||||
dfilter_len = abbrev_len + 4 + 1 + 1;
|
|
||||||
buf = g_malloc0(dfilter_len);
|
|
||||||
snprintf(buf, dfilter_len, "%s == %s",
|
|
||||||
hfinfo->abbrev,
|
|
||||||
fvalue_get_integer(finfo->value) ? "1" : "0");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case FT_UINT8:
|
case FT_UINT8:
|
||||||
case FT_UINT16:
|
case FT_UINT16:
|
||||||
case FT_UINT24:
|
case FT_UINT24:
|
||||||
|
@ -3680,38 +3668,33 @@ proto_construct_dfilter_string(field_info *finfo, epan_dissect_t *edt)
|
||||||
hfinfo->abbrev, value_str);
|
hfinfo->abbrev, value_str);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FT_STRING:
|
|
||||||
case FT_STRINGZ:
|
|
||||||
case FT_UINT_STRING:
|
|
||||||
/*
|
|
||||||
* 4 bytes for " == ".
|
|
||||||
* N bytes for the string.
|
|
||||||
* 2 bytes for the opening and closing quotes.
|
|
||||||
* 1 byte for the trailing '\0'.
|
|
||||||
*/
|
|
||||||
value_str = fvalue_get(finfo->value);
|
|
||||||
dfilter_len = abbrev_len + strlen(value_str) + 4 + 2 + 1;
|
|
||||||
buf = g_malloc0(dfilter_len);
|
|
||||||
snprintf(buf, dfilter_len, "%s == \"%s\"",
|
|
||||||
hfinfo->abbrev, value_str);
|
|
||||||
break;
|
|
||||||
|
|
||||||
|
/* These use the fvalue's "to_string_repr" method. */
|
||||||
|
case FT_BOOLEAN:
|
||||||
|
case FT_STRING:
|
||||||
case FT_ETHER:
|
case FT_ETHER:
|
||||||
case FT_BYTES:
|
case FT_BYTES:
|
||||||
case FT_UINT_BYTES:
|
case FT_UINT_BYTES:
|
||||||
/*
|
/* Figure out the string length needed.
|
||||||
|
* The ft_repr length.
|
||||||
* 4 bytes for " == ".
|
* 4 bytes for " == ".
|
||||||
* 1 byte for the trailing '\0'.
|
* 1 byte for trailing NUL.
|
||||||
*/
|
*/
|
||||||
dfilter_len = fvalue_string_repr_len(finfo->value);
|
dfilter_len = fvalue_string_repr_len(finfo->value,
|
||||||
|
FTREPR_DFILTER);
|
||||||
dfilter_len += abbrev_len + 4 + 1;
|
dfilter_len += abbrev_len + 4 + 1;
|
||||||
buf = g_malloc0(dfilter_len);
|
buf = g_malloc0(dfilter_len);
|
||||||
|
|
||||||
|
/* Create the string */
|
||||||
snprintf(buf, dfilter_len, "%s == ", hfinfo->abbrev);
|
snprintf(buf, dfilter_len, "%s == ", hfinfo->abbrev);
|
||||||
stringified = fvalue_to_string_repr(finfo->value);
|
fvalue_to_string_repr(finfo->value,
|
||||||
strcat(buf, stringified);
|
FTREPR_DFILTER,
|
||||||
g_free(stringified);
|
&buf[abbrev_len + 4]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case FT_PROTOCOL:
|
||||||
|
buf = g_strdup(finfo->hfinfo->abbrev);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
/*
|
/*
|
||||||
* This doesn't have a value, so we'd match
|
* This doesn't have a value, so we'd match
|
||||||
|
|
Loading…
Reference in New Issue