aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-eigrp.c
diff options
context:
space:
mode:
authorJaap Keuter <jaap.keuter@xs4all.nl>2009-10-26 07:00:15 +0000
committerJaap Keuter <jaap.keuter@xs4all.nl>2009-10-26 07:00:15 +0000
commit4bc128003303b538ff9a81be04da632d30be63ae (patch)
treec562ebfd85faeb8a0fa5fdcf96677825e92450bb /epan/dissectors/packet-eigrp.c
parent565b8c922c3130680e60a3d19e0b3a955b161fb6 (diff)
From Jochen Bartl:
This patch fixes the display filter for the prefix length of IPv6 external route updates and the length calculation of the destination address in IPv6 route updates. svn path=/trunk/; revision=30703
Diffstat (limited to 'epan/dissectors/packet-eigrp.c')
-rw-r--r--epan/dissectors/packet-eigrp.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/epan/dissectors/packet-eigrp.c b/epan/dissectors/packet-eigrp.c
index 40270e0a8f..2118266d54 100644
--- a/epan/dissectors/packet-eigrp.c
+++ b/epan/dissectors/packet-eigrp.c
@@ -909,6 +909,11 @@ static void dissect_eigrp_ip6_int(tvbuff_t *tvb, proto_tree *tree, proto_item *t
} else {
proto_tree_add_item(tree, hf_eigrp_ip6_int_prefixlen, tvb, offset, 1, FALSE);
offset += 1;
+
+ if ((length < 128) && (length % 8 == 0)) {
+ addr_len++;
+ }
+
proto_tree_add_text(tree, tvb, offset, addr_len, "Destination: %s", ip6_to_str(&addr));
proto_item_append_text(ti, " %c %s/%u%s", offset == 33 ? '=':',',
ip6_to_str(&addr), length, ((tvb_get_ntohl(tvb, 16) == 0xffffffff) ? " - Destination unreachable":""));
@@ -971,13 +976,18 @@ static void dissect_eigrp_ip6_ext(tvbuff_t *tvb, proto_tree *tree, proto_item *t
addr_len = ipv6_addr_and_mask(tvb, offset + 1, &addr, length);
if (addr_len < 0) {
- prefixlenti = proto_tree_add_item(tree, hf_eigrp_ip6_int_prefixlen, tvb, offset, 1, FALSE);
+ prefixlenti = proto_tree_add_item(tree, hf_eigrp_ip6_ext_prefixlen, tvb, offset, 1, FALSE);
proto_item_append_text(prefixlenti, " (invalid, must be <= 128)");
proto_item_append_text(ti, " [Invalid prefix length %u > 128]", length);
addr_len = 16; /* assure we can exit the loop */
} else {
- proto_tree_add_item(tree, hf_eigrp_ip6_int_prefixlen, tvb, offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_eigrp_ip6_ext_prefixlen, tvb, offset, 1, FALSE);
offset += 1;
+
+ if ((length < 128) && (length % 8 == 0)) {
+ addr_len++;
+ }
+
proto_tree_add_text(tree, tvb, offset, addr_len, "Destination: %s", ip6_to_str(&addr));
proto_item_append_text(eigrp_ip6_ext_ti, " %c %s/%u%s", offset == 53 ? '=':',',
ip6_to_str(&addr), length, ((tvb_get_ntohl(tvb, 36) == 0xffffffff) ? " - Destination unreachable":""));