Ethereal-dev: [Ethereal-dev] Problem with val_to_str
Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.
From: "Chua Wee Leng" <chuawl.SES@xxxxxxxxxxxxx>
Date: Thu, 3 Jul 2003 16:39:44 +0800
I encounter a problem with val_to_str function while doing my plugin. I'm
surrently using ethereal-0.9.11 on RedHat Linux 7.3.
The following is part of my code of protocol dis in packet-dis.c
#define ENTITY_STATE_PDU 1
#define FIRE_PDU 2
#define DETONATION_PDU 3
#define START_RESUME_PDU 13
#define STOP_FREEZE_PDU 14
#define ACKNOWLEDGE_PDU 15
#define SET_DATA_PDU 19
#define DATA_PDU 20
const value_string pdu[] = {
{ENTITY_STATE_PDU,
"ENTITY_STATE_PDU"},
{FIRE_PDU, "FIRE_PDU"},
{DETONATION_PDU, "DETONATION_PDU"},
{START_RESUME_PDU,
"START_RESUME_PDU"},
{STOP_FREEZE_PDU, "STOP_FREEZE_PDU"},
{ACKNOWLEDGE_PDU, "ACKNOWLEDGE_PDU"},
};
static const value_string vs_Entity_Kind[] = {
{1, "Platform"},
{2, "Munition"},
{4, "Environment"},
{9, "Sensor/Emitter"},
};
.
.
.
.
.
if (tree) {
/* Adding DIS item and subtree */
dis_ti = proto_tree_add_item(tree, proto_dis, tvb, 0,
tvb_length(tvb), FALSE);
dis_tree = proto_item_add_subtree(dis_ti, ett_dis);
proto_tree_add_uint_format (dis_tree, hf_pdu_type, tvb,
offset, 1 , pdu_type,
"PDU TYPE : %s", val_to_str
(pdu_type, pdu, "Unknown (%u)")); //here I try to get string value of
pdu_type from value_string pdu
.
.
.
.
.
void
proto_register_dis(void)
{
static hf_register_info hf[] = {
{ &hf_protocol_version, {
"Protocol Version", "dis.protocol_version", FT_UINT8,
BASE_DEC, NULL, 0x0, "", HFILL}},
{ &hf_exercise_id, {
"Exercise ID", "dis.exercise_id", FT_UINT8, BASE_DEC,
NULL, 0x0, "", HFILL}},
{ &hf_pdu_type, {
"PDU Type", "dis.pdu_type", FT_UINT8, BASE_DEC, NULL,
0x0, "", HFILL}}, // Here it define hf_pdu_type
{ &hf_protocol_family, {
"Protocol Family", "dis.protocol_family", FT_UINT8,
BASE_DEC, NULL, 0x0, "", HFILL}},
.
What had happen is when there is a unknown pdy_type value, I will take a
value 9 as an example. Looking at the valid value under string_value pdu, 9
is not inside the array of pdu, logically the decode value should be
"Unknown (%u)". From what I understand val_to_str (pdu_type, pdu, "Unknown
(%u)")), if pdu_type value is not found under pdu array, the third
argument of val_to_str will be displayed. But for my case here is show
"Sensor/Emitter" from the value_string array of vs_Entity_Kind[], as it is
the the next set of value_string array where value 9 can be found. In this
case, my plugin is not decode the right value for my application which it
leads to incorrect info to be display.
I would like to know that is this an common error in val_to_str package. Is
there any solution to counter this problem.
Thanks
_______________________________________________________________
Reduce the paperwork in your company with JustLogin's office collaborative
applications at http://www.justlogin.com
- Follow-Ups:
- Re: [Ethereal-dev] Problem with val_to_str
- From: Ronnie Sahlberg
- Re: [Ethereal-dev] Problem with val_to_str
- Prev by Date: [Ethereal-dev] FYI: ethereal with Endace DAG cards
- Next by Date: Re: [Ethereal-dev] Problem with val_to_str
- Previous by thread: [Ethereal-dev] FYI: ethereal with Endace DAG cards
- Next by thread: Re: [Ethereal-dev] Problem with val_to_str
- Index(es):