aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors
diff options
context:
space:
mode:
authorPascal Quantin <pascal.quantin@gmail.com>2015-08-27 23:35:58 +0200
committerPascal Quantin <pascal.quantin@gmail.com>2015-08-28 18:54:34 +0000
commitc04d54fbd49d36213faa555d1141a7ac3196beed (patch)
treea4e75a51676b1433e7d0efe2e6a1ddc90317fd7a /epan/dissectors
parent5179406fa421ad6d8aee3b0a7e37b248ff8115d5 (diff)
Preparation Host Flows: make ICMP(v6) code and type retrieval more robust
Do not retrieve type and code base on the info column content. Instead store type and code in pinfo structure and retrieve them in sequence analysis tap. Change-Id: I71cd505d7faf713c2372731495d47b45928a41f8 Reviewed-on: https://code.wireshark.org/review/10280 Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com> Reviewed-by: Pascal Artho <pascalartho@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Diffstat (limited to 'epan/dissectors')
-rw-r--r--epan/dissectors/packet-icmp.c8
-rw-r--r--epan/dissectors/packet-icmp.h6
-rw-r--r--epan/dissectors/packet-icmpv6.c8
3 files changed, 20 insertions, 2 deletions
diff --git a/epan/dissectors/packet-icmp.c b/epan/dissectors/packet-icmp.c
index 8d41343cb1..1d4410929a 100644
--- a/epan/dissectors/packet-icmp.c
+++ b/epan/dissectors/packet-icmp.c
@@ -1590,11 +1590,17 @@ dissect_icmp(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void* data)
break;
}
+ if (!PINFO_FD_VISITED(pinfo)) {
+ icmp_info_t *p_icmp_info = wmem_new(wmem_file_scope(), icmp_info_t);
+ p_icmp_info->type = icmp_type;
+ p_icmp_info->code = icmp_code;
+ p_add_proto_data(wmem_file_scope(), pinfo, proto_icmp, 0, p_icmp_info);
+ }
+
if (trans) {
tap_queue_packet(icmp_tap, pinfo, trans);
}
- col_append_fstr(pinfo->cinfo, COL_INFO, ", Type=%d, Code=%d", icmp_type, icmp_code);
return tvb_reported_length(tvb);
}
diff --git a/epan/dissectors/packet-icmp.h b/epan/dissectors/packet-icmp.h
index 4ba8bf6611..ea72c01d08 100644
--- a/epan/dissectors/packet-icmp.h
+++ b/epan/dissectors/packet-icmp.h
@@ -33,4 +33,10 @@ typedef struct _icmp_transaction_t {
nstime_t resp_time;
} icmp_transaction_t;
+/* ICMP info ... used by sequence analysis tap and stored in pinfo with p_add_proto_data */
+typedef struct {
+ guint8 type;
+ guint8 code;
+} icmp_info_t;
+
#endif
diff --git a/epan/dissectors/packet-icmpv6.c b/epan/dissectors/packet-icmpv6.c
index ae366be5df..92596e394f 100644
--- a/epan/dissectors/packet-icmpv6.c
+++ b/epan/dissectors/packet-icmpv6.c
@@ -4114,10 +4114,16 @@ dissect_icmpv6(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
} /* switch (icmp6_type) */
} /* if (1) */
+ if (!PINFO_FD_VISITED(pinfo)) {
+ icmp_info_t *p_icmp_info = wmem_new(wmem_file_scope(), icmp_info_t);
+ p_icmp_info->type = icmp6_type;
+ p_icmp_info->code = icmp6_code;
+ p_add_proto_data(wmem_file_scope(), pinfo, proto_icmpv6, 0, p_icmp_info);
+ }
+
if (trans)
tap_queue_packet(icmpv6_tap, pinfo, trans);
- col_append_fstr(pinfo->cinfo, COL_INFO, ", Type=%d, Code=%d", icmp6_type, icmp6_code);
return offset;
}