aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-aodv.c
diff options
context:
space:
mode:
authorguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>2009-04-22 03:07:37 +0000
committerguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>2009-04-22 03:07:37 +0000
commitd7309178edc5a7d207aeba33f8a74e3a54e542da (patch)
treedf299ef604107c294e223b6c40431136cdb90cd4 /epan/dissectors/packet-aodv.c
parent21a93663afaad80b1bf016e8761e8d5432952b68 (diff)
Clean up some 64-bit issues.
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@28117 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'epan/dissectors/packet-aodv.c')
-rw-r--r--epan/dissectors/packet-aodv.c36
1 files changed, 15 insertions, 21 deletions
diff --git a/epan/dissectors/packet-aodv.c b/epan/dissectors/packet-aodv.c
index 5d319dc14c..288d74566e 100644
--- a/epan/dissectors/packet-aodv.c
+++ b/epan/dissectors/packet-aodv.c
@@ -152,8 +152,7 @@ dissect_aodv_ext(tvbuff_t * tvb, int offset, proto_tree * tree)
{
proto_tree *ext_tree;
proto_item *ti;
- aodv_ext_t aodvext, *ext;
- int len;
+ guint8 type, len;
if (!tree)
return;
@@ -162,32 +161,27 @@ dissect_aodv_ext(tvbuff_t * tvb, int offset, proto_tree * tree)
if ((int) tvb_reported_length(tvb) <= offset)
return; /* No more options left */
- ext = &aodvext;
- tvb_memcpy(tvb, (guint8 *) ext, offset, sizeof(*ext));
- len = ext->length;
+ type = tvb_get_guint8(tvb, offset);
+ len = tvb_get_guint8(tvb, offset + 1);
- ti = proto_tree_add_text(tree, tvb, offset, sizeof(aodv_ext_t) +
- len, "Extensions");
+ ti = proto_tree_add_text(tree, tvb, offset, 2 + len, "Extensions");
ext_tree = proto_item_add_subtree(ti, ett_aodv_extensions);
+ proto_tree_add_text(ext_tree, tvb, offset, 1,
+ "Type: %u (%s)", type,
+ val_to_str(type, exttype_vals, "Unknown"));
+
if (len == 0) {
- proto_tree_add_text(ext_tree, tvb,
- offset + offsetof(aodv_ext_t, length), 1,
- "Invalid option length: %u", ext->length);
+ proto_tree_add_text(ext_tree, tvb, offset + 1, 1,
+ "Invalid option length: %u", len);
return; /* we must not try to decode this */
}
+ proto_tree_add_text(ext_tree, tvb, offset + 1, 1,
+ "Length: %u bytes", len);
- proto_tree_add_text(ext_tree, tvb,
- offset + offsetof(aodv_ext_t, type), 1,
- "Type: %u (%s)", ext->type,
- val_to_str(ext->type, exttype_vals, "Unknown"));
- proto_tree_add_text(ext_tree, tvb,
- offset + offsetof(aodv_ext_t, length), 1,
- "Length: %u bytes", ext->length);
-
- offset += sizeof(aodv_ext_t);
+ offset += 2;
- switch (ext->type) {
+ switch (type) {
case AODV_EXT_INT:
proto_tree_add_uint(ext_tree, hf_aodv_ext_interval,
tvb, offset, 4, tvb_get_ntohl(tvb, offset));
@@ -202,7 +196,7 @@ dissect_aodv_ext(tvbuff_t * tvb, int offset, proto_tree * tree)
/* If multifield extensions appear, we need more
* sophisticated handler. For now, this is okay. */
- offset += ext->length;
+ offset += len;
goto again;
}