diff options
author | Gerald Combs <gerald@wireshark.org> | 2010-10-05 22:16:29 +0000 |
---|---|---|
committer | Gerald Combs <gerald@wireshark.org> | 2010-10-05 22:16:29 +0000 |
commit | fff19c8383c544cb5c08e78ac042f16a6ea8f1ed (patch) | |
tree | 7b14fd8f2c750413ba92495306ab152025b12cff | |
parent | 710f41b08596fe303a0aed12522f51b1e5aa62d5 (diff) |
Improve the ND flag display.
svn path=/trunk/; revision=34388
-rw-r--r-- | epan/dissectors/packet-icmpv6.c | 21 |
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; |