diff options
author | Bill Meier <wmeier@newsguy.com> | 2012-08-10 22:55:02 +0000 |
---|---|---|
committer | Bill Meier <wmeier@newsguy.com> | 2012-08-10 22:55:02 +0000 |
commit | 638d74d43f9baf45dc3641939eec36f801414187 (patch) | |
tree | 5bfcabbb83a6e7359cfc302cdc604264560d66a0 /epan/dissectors/packet-auto_rp.c | |
parent | e6ffe7b59b9f36c534d3b2d6cc78b05dfe517f67 (diff) |
Use val_to_str_const() where appropriate;
Also (for a few files):
- create/use some extended value strings;
- remove unneeded #include files;
- remove unneeded variable initialization;
- re-order fcns slightly so prefs_reg_handoff...() at end, etc
svn path=/trunk/; revision=44438
Diffstat (limited to 'epan/dissectors/packet-auto_rp.c')
-rw-r--r-- | epan/dissectors/packet-auto_rp.c | 133 |
1 files changed, 66 insertions, 67 deletions
diff --git a/epan/dissectors/packet-auto_rp.c b/epan/dissectors/packet-auto_rp.c index fa78047f5e..3cbb85e53b 100644 --- a/epan/dissectors/packet-auto_rp.c +++ b/epan/dissectors/packet-auto_rp.c @@ -31,7 +31,6 @@ #include <glib.h> #include <epan/packet.h> -#include <epan/addr_resolv.h> static gint proto_auto_rp = -1; static gint ett_auto_rp = -1; @@ -119,24 +118,24 @@ static void dissect_auto_rp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) ver_type = tvb_get_guint8(tvb, 0); rp_count = tvb_get_guint8(tvb, 1); - col_add_fstr(pinfo->cinfo, COL_INFO, "%s (v%s) for %u RP%s", - val_to_str(lo_nibble(ver_type), auto_rp_type_vals, "Unknown"), - val_to_str(hi_nibble(ver_type), auto_rp_ver_vals, "Unknown"), - rp_count, plurality(rp_count, "", "s")); + col_add_fstr(pinfo->cinfo, COL_INFO, "%s (v%s) for %u RP%s", + val_to_str_const(lo_nibble(ver_type), auto_rp_type_vals, "Unknown"), + val_to_str_const(hi_nibble(ver_type), auto_rp_ver_vals, "Unknown"), + rp_count, plurality(rp_count, "", "s")); if (tree) { proto_item *ti, *tv; proto_tree *auto_rp_tree, *ver_type_tree; - int i, offset; - guint16 holdtime; + int i, offset; + guint16 holdtime; offset = 0; ti = proto_tree_add_item(tree, proto_auto_rp, tvb, offset, -1, ENC_NA); auto_rp_tree = proto_item_add_subtree(ti, ett_auto_rp); tv = proto_tree_add_text(auto_rp_tree, tvb, offset, 1, "Version: %s, Packet type: %s", - val_to_str(hi_nibble(ver_type), auto_rp_ver_vals, "Unknown"), - val_to_str(lo_nibble(ver_type), auto_rp_type_vals, "Unknown")); + val_to_str_const(hi_nibble(ver_type), auto_rp_ver_vals, "Unknown"), + val_to_str_const(lo_nibble(ver_type), auto_rp_type_vals, "Unknown")); ver_type_tree = proto_item_add_subtree(tv, ett_auto_rp_ver_type); proto_tree_add_uint(ver_type_tree, hf_auto_rp_version, tvb, offset, 1, ver_type); proto_tree_add_uint(ver_type_tree, hf_auto_rp_type, tvb, offset, 1, ver_type); @@ -163,6 +162,59 @@ static void dissect_auto_rp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) return; } +/* + * Handles one Auto-RP map entry. Returns the new offset. + */ +static int do_auto_rp_map(tvbuff_t *tvb, int offset, proto_tree *auto_rp_tree) +{ + proto_item *ti; + proto_tree *map_tree; + guint8 group_count; + guint32 rp_addr; /* In network byte order */ + int i; + + rp_addr = tvb_get_ipv4(tvb, offset); + group_count = tvb_get_guint8(tvb, offset + 5); + + /* sizeof map header + n * sizeof encoded group addresses */ + ti = proto_tree_add_text(auto_rp_tree, tvb, offset, 6 + group_count * 6, + "RP %s: %u group%s", ip_to_str((void *)&rp_addr), + group_count, plurality(group_count, "", "s")); + map_tree = proto_item_add_subtree(ti, ett_auto_rp_map); + + proto_tree_add_ipv4(map_tree, hf_auto_rp_rp_addr, tvb, offset, 4, rp_addr); + offset += 4; + proto_tree_add_uint(map_tree, hf_auto_rp_pim_ver, tvb, offset, 1, tvb_get_guint8(tvb, offset)); + offset++; + proto_tree_add_text(map_tree, tvb, offset, 1, "Number of groups this RP maps to: %u", group_count); + offset++; + + for (i = 0; i < group_count; i++) { + proto_item *gi; + proto_tree *grp_tree; + guint8 sign, mask_len; + guint32 group_addr; /* In network byte order */ + + sign = tvb_get_guint8(tvb, offset); + mask_len = tvb_get_guint8(tvb, offset + 1); + group_addr = tvb_get_ipv4(tvb, offset + 2); + gi = proto_tree_add_text(map_tree, tvb, offset, 6, "Group %s/%u (%s)", + ip_to_str((void *)&group_addr), mask_len, + val_to_str_const(sign&AUTO_RP_SIGN_MASK, auto_rp_mask_sign_vals, "")); + grp_tree = proto_item_add_subtree(gi, ett_auto_rp_group); + + proto_tree_add_uint(grp_tree, hf_auto_rp_prefix_sgn, tvb, offset, 1, sign); + offset++; + proto_tree_add_uint(grp_tree, hf_auto_rp_mask_len, tvb, offset, 1, mask_len); + offset++; + proto_tree_add_ipv4(grp_tree, hf_auto_rp_group_prefix, tvb, offset, 4, group_addr); + offset += 4; + + } + + return offset; +} + void proto_register_auto_rp(void) { static hf_register_info hf[] = { @@ -220,7 +272,7 @@ void proto_register_auto_rp(void) }; proto_auto_rp = proto_register_protocol("Cisco Auto-RP", - "Auto-RP", "auto_rp"); + "Auto-RP", "auto_rp"); proto_register_field_array(proto_auto_rp, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); @@ -230,62 +282,9 @@ void proto_register_auto_rp(void) void proto_reg_handoff_auto_rp(void) { - dissector_handle_t auto_rp_handle; + dissector_handle_t auto_rp_handle; - auto_rp_handle = create_dissector_handle(dissect_auto_rp, - proto_auto_rp); - dissector_add_uint("udp.port", UDP_PORT_PIM_RP_DISC, auto_rp_handle); -} - -/* - * Handles one Auto-RP map entry. Returns the new offset. - */ -static int do_auto_rp_map(tvbuff_t *tvb, int offset, proto_tree *auto_rp_tree) -{ - proto_item *ti; - proto_tree *map_tree; - guint8 group_count; - guint32 rp_addr; /* In network byte order */ - int i; - - rp_addr = tvb_get_ipv4(tvb, offset); - group_count = tvb_get_guint8(tvb, offset + 5); - - /* sizeof map header + n * sizeof encoded group addresses */ - ti = proto_tree_add_text(auto_rp_tree, tvb, offset, 6 + group_count * 6, - "RP %s: %u group%s", ip_to_str((void *)&rp_addr), - group_count, plurality(group_count, "", "s")); - map_tree = proto_item_add_subtree(ti, ett_auto_rp_map); - - proto_tree_add_ipv4(map_tree, hf_auto_rp_rp_addr, tvb, offset, 4, rp_addr); - offset += 4; - proto_tree_add_uint(map_tree, hf_auto_rp_pim_ver, tvb, offset, 1, tvb_get_guint8(tvb, offset)); - offset++; - proto_tree_add_text(map_tree, tvb, offset, 1, "Number of groups this RP maps to: %u", group_count); - offset++; - - for (i = 0; i < group_count; i++) { - proto_item *gi; - proto_tree *grp_tree; - guint8 sign, mask_len; - guint32 group_addr; /* In network byte order */ - - sign = tvb_get_guint8(tvb, offset); - mask_len = tvb_get_guint8(tvb, offset + 1); - group_addr = tvb_get_ipv4(tvb, offset + 2); - gi = proto_tree_add_text(map_tree, tvb, offset, 6, "Group %s/%u (%s)", - ip_to_str((void *)&group_addr), mask_len, - val_to_str(sign&AUTO_RP_SIGN_MASK, auto_rp_mask_sign_vals, "")); - grp_tree = proto_item_add_subtree(gi, ett_auto_rp_group); - - proto_tree_add_uint(grp_tree, hf_auto_rp_prefix_sgn, tvb, offset, 1, sign); - offset++; - proto_tree_add_uint(grp_tree, hf_auto_rp_mask_len, tvb, offset, 1, mask_len); - offset++; - proto_tree_add_ipv4(grp_tree, hf_auto_rp_group_prefix, tvb, offset, 4, group_addr); - offset += 4; - - } - - return offset; + auto_rp_handle = create_dissector_handle(dissect_auto_rp, + proto_auto_rp); + dissector_add_uint("udp.port", UDP_PORT_PIM_RP_DISC, auto_rp_handle); } |