Wireshark-dev: [Wireshark-dev] dissection question
From: Brian Oleksa <oleksab@xxxxxxxxxxxxxxxxxxxxxx>
Date: Tue, 16 Feb 2010 14:18:23 -0500
Hello All What I am really looking to do is the following:proto_tree_add_item(helen_sub_tree, hf_helen_routername, tvb, offset, *sizeofroutername*, FALSE);
But putting in the "sizeofroutername" does not seem to work and does indeed through off the rest of the packet.
When I "hardcode" the value (which in this case it is 2... as I can see it in the hex dump window).. it appears to work ok....but I know that I cannot hard code that value. proto_tree_add_item(helen_sub_tree, hf_helen_routername, tvb, offset, 2, FALSE);
Any thoughts..??
Code snippet is below
Thanks,
Brian
//Router Ext:
if (code == 1001) {
guint8 routercount;
guint8 interfacecount;
guint8 sizeofinterfacename;
guint8 sizeofroutername;
guint i;
guint k;
//router count
routercount = tvb_get_guint8(tvb, offset);
proto_tree_add_item(helen_sub_tree,
hf_helen_routerCount, tvb, offset, 1, FALSE);
offset += 1;
//Router Data
for (i = 0; i < routercount; i++) {
nstime_t t;
guint64 msecs_since_the_epoch;
struct tm *tmp;
//Size of router name
sizeofroutername = tvb_get_guint8(tvb, offset);
proto_tree_add_item(helen_sub_tree,
hf_helen_sizeofRouterName, tvb, offset, 2, FALSE);
offset += 2;
*Here is where the problem starts:*
//Router Name
//proto_tree_add_item(helen_sub_tree,
hf_helen_routername, tvb, offset, sizeofroutername, FALSE);
proto_tree_add_item(helen_sub_tree,
hf_helen_routername, tvb, offset, 2, FALSE);
offset += 2;
//offset += sizeofroutername;
//status
proto_tree_add_uint(helen_sub_tree,
hf_helen_routerstatus, tvb, offset, 1, FALSE);
offset += 1;
//update time
msecs_since_the_epoch = tvb_get_ntoh64(tvb, offset);
t.secs = msecs_since_the_epoch / 1000;
t.nsecs = (msecs_since_the_epoch %
1000)*1000000; /* milliseconds to nanoseconds */
tmp = gmtime(&t.secs);
proto_tree_add_time(helen_sub_tree,
hf_helen_time, tvb, offset, 8, &t);
offset += 8;
//cpu % used
proto_tree_add_uint(helen_sub_tree,
hf_helen_cpuusage, tvb, offset, 1, FALSE);
offset += 1;
//interface count
interfacecount = tvb_get_guint8(tvb, offset);
proto_tree_add_uint(helen_sub_tree,
hf_helen_interface_count, tvb, offset, 1, FALSE);
offset += 1;
//Interface Data
for (k = 0; k < interfacecount; k++) {
proto_tree_add_item(helen_sub_tree,
hf_helen_sizeofInterfaceName, tvb, offset, 2, FALSE);
offset += 2;
//Interface Name
sizeofinterfacename = tvb_get_guint8(tvb,
offset);
proto_tree_add_item(helen_sub_tree,
hf_helen_interfacename, tvb, offset, 8, FALSE);
offset += sizeofinterfacename;
//incoming bytes
proto_tree_add_item(helen_sub_tree,
hf_helen_incomingBytes, tvb, offset, 4, FALSE);
offset += 4;
//outgoing bytes
proto_tree_add_item(helen_sub_tree,
hf_helen_outgoingBytes, tvb, offset, 4, FALSE);
offset += 4;
//interface active?
proto_tree_add_uint(helen_sub_tree,
hf_helen_interfaceActivity, tvb, offset, 1, FALSE);
offset += 1;
}
}
}
{ &hf_helen_routername,
{ "Router Name", "helen.routername", FT_STRING, BASE_NONE,
NULL, 0x0,
NULL, HFILL}},
- Follow-Ups:
- Re: [Wireshark-dev] dissection question
- From: Guy Harris
- Re: [Wireshark-dev] dissection question
- From: Jaap Keuter
- Re: [Wireshark-dev] dissection question
- Prev by Date: Re: [Wireshark-dev] Installation problem with wireshark 1.2.7
- Next by Date: Re: [Wireshark-dev] dissection question
- Previous by thread: [Wireshark-dev] wireshark and tshark -K option not sufficient to activate Kerberos decoding
- Next by thread: Re: [Wireshark-dev] dissection question
- Index(es):