diff options
author | Alexis La Goutte <alexis.lagoutte@gmail.com> | 2014-03-13 12:52:41 +0100 |
---|---|---|
committer | Alexis La Goutte <alexis.lagoutte@gmail.com> | 2014-03-13 21:45:03 +0000 |
commit | e204e9aefb8ec36638d55efee93f73eec8a3e7d8 (patch) | |
tree | f2a528b471649d1400182ae0458060bb3f28e538 /epan/dissectors/packet-zbee-zdp-management.c | |
parent | ba32257cb6226d15d310080071c698f2d6903c88 (diff) |
Enhance ZigBee Routing Table
Make field filterable and use value_string for status
Based from capture available in bug 9855
Need to continue... lot of enhance is possible in ZigBee dissector...
Change-Id: I0ac84e05a7b8b54e9879abbb7495034318188394
Reviewed-on: https://code.wireshark.org/review/631
Reviewed-by: Anders Broman <a.broman58@gmail.com>
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Tested-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-zbee-zdp-management.c')
-rw-r--r-- | epan/dissectors/packet-zbee-zdp-management.c | 31 |
1 files changed, 15 insertions, 16 deletions
diff --git a/epan/dissectors/packet-zbee-zdp-management.c b/epan/dissectors/packet-zbee-zdp-management.c index 4513f268c0..09fef0469a 100644 --- a/epan/dissectors/packet-zbee-zdp-management.c +++ b/epan/dissectors/packet-zbee-zdp-management.c @@ -230,31 +230,30 @@ zdp_parse_neighbor_table_entry(proto_tree *tree, tvbuff_t *tvb, guint *offset, g static void zdp_parse_routing_table_entry(proto_tree *tree, tvbuff_t *tvb, guint *offset) { - proto_item *ti = NULL; guint len = 0; - + proto_item *ti; + proto_tree *field_tree; guint16 dest; guint8 status; guint16 next; + ti = proto_tree_add_item(tree, hf_zbee_zdp_rtg_entry, tvb, *offset + len, 2 + 1 + 2, ENC_NA); + field_tree = proto_item_add_subtree(ti, ett_zbee_zdp_rtg); + + proto_tree_add_item(field_tree, hf_zbee_zdp_rtg_destination, tvb, *offset + len, 2, ENC_LITTLE_ENDIAN); dest = tvb_get_letohs(tvb, *offset + len); - if (tree) ti = proto_tree_add_text(tree, tvb, *offset, 2*2 + 1, "{Destination: 0x%04x", dest); len += 2; + proto_tree_add_item(field_tree, hf_zbee_zdp_rtg_status, tvb, *offset + len , 1, ENC_LITTLE_ENDIAN); status = tvb_get_guint8(tvb, *offset + len); - next = tvb_get_letohs(tvb, *offset + len + 1); - if (tree) { - /* Display the next hop first, because it looks a lot cleaner that way. */ - proto_item_append_text(ti, ", Next Hop: 0x%04x", next); - - if (status == 0x00) proto_item_append_text(ti, ", Status: Active}"); - else if (status == 0x01)proto_item_append_text(ti, ", Status: Discovery Underway}"); - else if (status == 0x02)proto_item_append_text(ti, ", Status: Discovery Failed}"); - else if (status == 0x03)proto_item_append_text(ti, ", Status: Inactive}"); - else proto_item_append_text(ti, ", Status: Unknown}"); - } - len += 1 + 2; + len += 1; + + proto_tree_add_item(field_tree, hf_zbee_zdp_rtg_next_hop, tvb, *offset + len , 2, ENC_LITTLE_ENDIAN); + next = tvb_get_letohs(tvb, *offset + len); + len += 2; + /* Display the next hop first, because it looks a lot cleaner that way. */ + proto_item_append_text(ti, " {Destination: 0x%04x, Next Hop: 0x%04x, Status: %s}", dest, next, val_to_str_const(status, zbee_zdp_rtg_status_vals, "Unknown")); *offset += len; } /* zdp_parse_routing_table_entry */ @@ -686,7 +685,7 @@ dissect_zbee_zdp_rsp_mgmt_rtg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre table_count = zbee_parse_uint(tree, hf_zbee_zdp_table_count, tvb, &offset, 1, NULL); if (tree && table_count) { - ti = proto_tree_add_text(tree, tvb, offset, tvb_length_remaining(tvb, offset), "Routing Table"); + ti = proto_tree_add_item(tree, hf_zbee_zdp_rtg, tvb, offset, -1, ENC_NA); field_tree = proto_item_add_subtree(ti, ett_zbee_zdp_rtg); } for (i=0; i<table_count; i++) { |