aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-lisp.c
diff options
context:
space:
mode:
Diffstat (limited to 'epan/dissectors/packet-lisp.c')
-rw-r--r--epan/dissectors/packet-lisp.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/epan/dissectors/packet-lisp.c b/epan/dissectors/packet-lisp.c
index b5dbc74f3e..2a1ec05b25 100644
--- a/epan/dissectors/packet-lisp.c
+++ b/epan/dissectors/packet-lisp.c
@@ -1,5 +1,5 @@
/* packet-lisp.c
- * Routines for LISP Control Message dissection
+ * Routines for Locator/ID Separation Protocol (LISP) Control Message dissection
* Copyright 2011, Lorand Jakab <lj@lispmon.net>
*
* $Id$
@@ -319,11 +319,12 @@ dissect_lcaf_elp_hop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
{
guint16 addr_len = 0;
guint16 hop_afi;
+ guint16 hop_flags;
const gchar *hop_str;
+ proto_item *ti;
hop_afi = tvb_get_ntohs(tvb, offset); offset += 2;
- /* hop flags */
- offset += 2;
+ hop_flags = tvb_get_ntohs(tvb, offset); offset += 2;
hop_str = get_addr_str(tvb, offset, hop_afi, &addr_len);
if (hop_str == NULL) {
@@ -333,10 +334,16 @@ dissect_lcaf_elp_hop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
}
if (idx) {
- proto_tree_add_text(tree, tvb, offset - 4, addr_len + 4, "Reencap hop %d: %s", idx, hop_str);
+ ti = proto_tree_add_text(tree, tvb, offset - 4, addr_len + 4, "Reencap hop %d: %s", idx, hop_str);
} else {
- proto_tree_add_text(tree, tvb, offset - 4, addr_len + 4, "Reencap hop: %s", hop_str);
+ ti = proto_tree_add_text(tree, tvb, offset - 4, addr_len + 4, "Reencap hop: %s", hop_str);
}
+ if (hop_flags & 0x04)
+ proto_item_append_text(ti, ", Lookup");
+ if (hop_flags & 0x02)
+ proto_item_append_text(ti, ", RLOC-Probe");
+ if (hop_flags & 0x01)
+ proto_item_append_text(ti, ", Strict");
return addr_len + 4;
}