aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGerald Combs <gerald@wireshark.org>2010-10-05 22:16:29 +0000
committerGerald Combs <gerald@wireshark.org>2010-10-05 22:16:29 +0000
commitfff19c8383c544cb5c08e78ac042f16a6ea8f1ed (patch)
tree7b14fd8f2c750413ba92495306ab152025b12cff
parent710f41b08596fe303a0aed12522f51b1e5aa62d5 (diff)
Improve the ND flag display.
svn path=/trunk/; revision=34388
-rw-r--r--epan/dissectors/packet-icmpv6.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/epan/dissectors/packet-icmpv6.c b/epan/dissectors/packet-icmpv6.c
index f649765aa4..e3ad24b4ed 100644
--- a/epan/dissectors/packet-icmpv6.c
+++ b/epan/dissectors/packet-icmpv6.c
@@ -2058,6 +2058,7 @@ dissect_icmpv6(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
int flagoff, targetoff;
guint32 na_flags;
struct e_in6_addr na_target;
+ emem_strbuf_t *flags_strbuf = ep_strbuf_new_label("");
flagoff = offset + ND_NA_FLAGS_RESERVED_OFFSET;
na_flags = tvb_get_ntohl(tvb, flagoff);
@@ -2080,12 +2081,22 @@ dissect_icmpv6(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
"Target: %s (%s)",
get_hostname6(&na_target),
ip6_to_str(&na_target));
+ if (na_flags & ND_NA_FLAG_ROUTER) {
+ ep_strbuf_append(flags_strbuf, "rtr, ");
+ }
+ if (na_flags & ND_NA_FLAG_SOLICITED) {
+ ep_strbuf_append(flags_strbuf, "sol, ");
+ }
+ if (na_flags & ND_NA_FLAG_OVERRIDE) {
+ ep_strbuf_append(flags_strbuf, "ovr, ");
+ }
+ if (flags_strbuf->len > 2) {
+ ep_strbuf_truncate(flags_strbuf, flags_strbuf->len - 2);
+ } else {
+ ep_strbuf_printf(flags_strbuf, "none");
+ }
col_append_fstr(pinfo->cinfo, COL_INFO,
- " %s (%srtr, %ssol)",
- ip6_to_str(&na_target),
- na_flags & ND_NA_FLAG_ROUTER ? "" : "not ",
- na_flags & ND_NA_FLAG_SOLICITED ? "" : "not "
- );
+ " %s (%s)", ip6_to_str(&na_target), flags_strbuf->str);
dissect_icmpv6ndopt(tvb, offset + sizeof(struct nd_neighbor_advert), pinfo, icmp6_tree);
break;