Hi!
I continuos working on the DSR (Dynamic Source Route) protocol. The
report Malformed packet is in every packet. It will be caused by the
offset declaration, I don't know really. Perhaps you can take a look to
the code and see the problem.
This is the dissector code:
guint8 optdatalen,offset= 0x00;
guint16 header_len;
while ((header_len-offset)!=0)
{
pdu_type = tvb_get_guint8(tvb,4+offset);
optdatalen = tvb_get_guint8(tvb,5+offset);
switch (pdu_type)
{
case DSR_ROUTE_REQ:
tf = proto_tree_add_uint(dsr_tree,
hf_dsr_pdutype, tvb, 4+offset, 1, pdu_type);
pdutype_tree = proto_item_add_subtree(tf,
ett_dsr);
proto_tree_add_uint(pdutype_tree,
hf_dsr_optdatalen, tvb, 5+offset, 1, optdatalen);
break;
case DSR_SRC_ROUTE:
tf = proto_tree_add_uint(dsr_tree,
hf_dsr_pdutype, tvb, 4+offset, 1, pdu_type);
pdutype_tree = proto_item_add_subtree(tf,
ett_dsr);
proto_tree_add_uint(pdutype_tree,
hf_dsr_optdatalen, tvb, 5+offset, 1, optdatalen);
break;
case DSR_ROUTE_REPLY:
tf = proto_tree_add_uint(dsr_tree,
hf_dsr_pdutype, tvb, 4+offset, 1, pdu_type);
pdutype_tree = proto_item_add_subtree(tf,
ett_dsr);
proto_tree_add_uint(pdutype_tree,
hf_dsr_optdatalen, tvb, 5+offset, 1, optdatalen);
break;
}
header_len-=(optdatalen+2);
if (pdu_type==DSR_PAD0)
optdatalen+=1;
else
optdatalen+=2;
offset+=optdatalen;
}
Hope toy can help me.
Thanks in advanced,
Ana Rodriguez
Spain