aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorulfl <ulfl@f5534014-38df-0310-8fa8-9805f1628bb7>2005-06-02 20:55:58 +0000
committerulfl <ulfl@f5534014-38df-0310-8fa8-9805f1628bb7>2005-06-02 20:55:58 +0000
commit3017b1fdb58f2e21985cceec36efb120d74b82b9 (patch)
tree302399483b99c4538315237d284ca147d9e34a53
parente596bdd4b0bb9c0d7a6f97185fc0454ca43305bd (diff)
add a generated toplevel line between the connectionless DCE/RPC protocol and the defragmented DCE/RPC content, to better understand what's going on if defragmentation is done.
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@14531 f5534014-38df-0310-8fa8-9805f1628bb7
-rw-r--r--epan/dissectors/packet-clnp.c2
-rw-r--r--epan/dissectors/packet-dcerpc.c4
-rw-r--r--epan/dissectors/packet-dnp.c4
-rw-r--r--epan/dissectors/packet-eap.c3
-rw-r--r--epan/dissectors/packet-ndps.c4
-rw-r--r--epan/dissectors/packet-netbios.c4
-rw-r--r--epan/dissectors/packet-q931.c5
-rw-r--r--epan/dissectors/packet-x25.c4
-rw-r--r--epan/reassemble.c20
-rw-r--r--epan/reassemble.h2
10 files changed, 35 insertions, 17 deletions
diff --git a/epan/dissectors/packet-clnp.c b/epan/dissectors/packet-clnp.c
index 95da85266f..54e34888ee 100644
--- a/epan/dissectors/packet-clnp.c
+++ b/epan/dissectors/packet-clnp.c
@@ -1027,7 +1027,7 @@ static int ositp_decode_DT(tvbuff_t *tvb, int offset, guint8 li, guint8 tpdu,
show_fragment_seq_tree(fd_head,
&cotp_frag_items,
cotp_tree,
- pinfo, reassembled_tvb);
+ pinfo, reassembled_tvb, &ti);
pinfo->fragmented = fragment;
next_tvb = reassembled_tvb;
}
diff --git a/epan/dissectors/packet-dcerpc.c b/epan/dissectors/packet-dcerpc.c
index 5397f3fb36..5cc8f2b8ab 100644
--- a/epan/dissectors/packet-dcerpc.c
+++ b/epan/dissectors/packet-dcerpc.c
@@ -4392,7 +4392,7 @@ dissect_dcerpc_dg_stub (tvbuff_t *tvb, int offset, packet_info *pinfo,
tvb_set_child_real_data_tvbuff(tvb, next_tvb);
add_new_data_source(pinfo, next_tvb, "Reassembled DCE/RPC");
show_fragment_seq_tree(fd_head, &dcerpc_frag_items,
- dcerpc_tree, pinfo, next_tvb);
+ tree, pinfo, next_tvb, &pi);
/*
* XXX - authentication info?
@@ -5225,7 +5225,7 @@ proto_register_dcerpc (void)
{ "Operation", "dcerpc.op", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }},
{ &hf_dcerpc_fragments,
- { "DCE/RPC Fragments", "dcerpc.fragments", FT_NONE, BASE_NONE,
+ { "Reassembled DCE/RPC Fragments", "dcerpc.fragments", FT_NONE, BASE_NONE,
NULL, 0x0, "DCE/RPC Fragments", HFILL }},
{ &hf_dcerpc_fragment,
diff --git a/epan/dissectors/packet-dnp.c b/epan/dissectors/packet-dnp.c
index 7d3dda725d..3ad470b5d6 100644
--- a/epan/dissectors/packet-dnp.c
+++ b/epan/dissectors/packet-dnp.c
@@ -390,7 +390,7 @@ dissect_dnp3(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Set up structures needed to add the protocol subtree and manage it */
proto_item *ti = NULL, *tdl, *tc, *al_chunks;
- proto_tree *dnp3_tree = NULL, *dl_tree = NULL, *tr_tree = NULL, *field_tree = NULL, *al_tree = NULL;
+ proto_tree *dnp3_tree = NULL, *dl_tree = NULL, *tr_tree = NULL, *field_tree = NULL, *al_tree = NULL, *frag_tree_item;
int offset = 0;
gboolean dl_prm, tr_fir, tr_fin;
guint8 dl_len, dl_ctl, dl_func, tr_ctl, tr_seq;
@@ -609,7 +609,7 @@ dissect_dnp3(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (tree)
/* Show all fragments. */
- show_fragment_seq_tree(fd_head, &frag_items, tr_tree, pinfo, al_tvb);
+ show_fragment_seq_tree(fd_head, &frag_items, tr_tree, pinfo, al_tvb, &frag_tree_item);
}
else {
/* We don't have the complete reassembled payload. */
diff --git a/epan/dissectors/packet-eap.c b/epan/dissectors/packet-eap.c
index 570a212400..a00c0a67bb 100644
--- a/epan/dissectors/packet-eap.c
+++ b/epan/dissectors/packet-eap.c
@@ -1003,6 +1003,7 @@ dissect_eap_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
if (fd_head != NULL) /* Reassembled */
{
+ proto_item *frag_tree_item;
next_tvb = tvb_new_real_data(fd_head->data,
fd_head->len,
@@ -1011,7 +1012,7 @@ dissect_eap_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
add_new_data_source(pinfo, next_tvb, "Reassembled EAP-TLS");
show_fragment_seq_tree(fd_head, &eaptls_frag_items,
- eap_tree, pinfo, next_tvb);
+ eap_tree, pinfo, next_tvb, &frag_tree_item);
call_dissector(ssl_handle, next_tvb, pinfo, eap_tree);
diff --git a/epan/dissectors/packet-ndps.c b/epan/dissectors/packet-ndps.c
index 9b1454aedf..fc68a853fe 100644
--- a/epan/dissectors/packet-ndps.c
+++ b/epan/dissectors/packet-ndps.c
@@ -4029,6 +4029,8 @@ ndps_defrag(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Is this the last fragment? EOM will indicate */
if (fd_head->next != NULL && spx_info->eom)
{
+ proto_item *frag_tree_item;
+
next_tvb = tvb_new_real_data(fd_head->data,
fd_head->len, fd_head->len);
tvb_set_child_real_data_tvbuff(tvb,
@@ -4042,7 +4044,7 @@ ndps_defrag(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
show_fragment_seq_tree(fd_head,
&ndps_frag_items,
tree, pinfo,
- next_tvb);
+ next_tvb, &frag_tree_item);
tid++;
}
/* Remember this fragment number so we can dissect again */
diff --git a/epan/dissectors/packet-netbios.c b/epan/dissectors/packet-netbios.c
index 1d3b29289f..863c2bc152 100644
--- a/epan/dissectors/packet-netbios.c
+++ b/epan/dissectors/packet-netbios.c
@@ -1211,10 +1211,12 @@ dissect_netbios(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
"Reassembled NetBIOS");
/* Show all fragments. */
if (tree) {
+ proto_item *frag_tree_item;
+
show_fragment_seq_tree(fd_head,
&netbios_frag_items,
netb_tree, pinfo,
- next_tvb);
+ next_tvb, &frag_tree_item);
}
} else {
next_tvb = tvb_new_subset(tvb,
diff --git a/epan/dissectors/packet-q931.c b/epan/dissectors/packet-q931.c
index ec7fec3d52..dbfb7c58c6 100644
--- a/epan/dissectors/packet-q931.c
+++ b/epan/dissectors/packet-q931.c
@@ -2483,7 +2483,10 @@ dissect_q931_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
tvb_set_child_real_data_tvbuff(tvb, next_tvb);
add_new_data_source(pinfo, next_tvb, "Reassembled Q.931 IEs");
/* Show all fragments. */
- if (tree) show_fragment_seq_tree(fd_head, &q931_frag_items, q931_tree, pinfo, next_tvb);
+ if (tree) {
+ proto_item *frag_tree_item;
+ show_fragment_seq_tree(fd_head, &q931_frag_items, q931_tree, pinfo, next_tvb, &frag_tree_item);
+ }
} else { /* only 1 segment */
next_tvb = tvb_new_subset(tvb, offset, -1, -1);
}
diff --git a/epan/dissectors/packet-x25.c b/epan/dissectors/packet-x25.c
index aba61af789..4d4db4f9ca 100644
--- a/epan/dissectors/packet-x25.c
+++ b/epan/dissectors/packet-x25.c
@@ -2175,6 +2175,8 @@ dissect_x25_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
if (fd_head) {
if (fd_head->next) {
+ proto_item *frag_tree_item;
+
/* This is the last packet */
next_tvb = tvb_new_real_data(fd_head->data,
fd_head->len,
@@ -2184,7 +2186,7 @@ dissect_x25_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
show_fragment_seq_tree(fd_head,
&x25_frag_items,
x25_tree,
- pinfo, next_tvb);
+ pinfo, next_tvb, &frag_tree_item);
}
}
diff --git a/epan/reassemble.c b/epan/reassemble.c
index 3c3b62b93a..7bcccb8127 100644
--- a/epan/reassemble.c
+++ b/epan/reassemble.c
@@ -1647,7 +1647,7 @@ process_reassembled_data(tvbuff_t *tvb, int offset, packet_info *pinfo,
/* show all fragments */
if (fd_head->flags & FD_BLOCKSEQUENCE) {
update_col_info = !show_fragment_seq_tree(
- fd_head, fit, tree, pinfo, next_tvb);
+ fd_head, fit, tree, pinfo, next_tvb, &frag_tree_item);
} else {
update_col_info = !show_fragment_tree(fd_head,
fit, tree, pinfo, next_tvb, &frag_tree_item);
@@ -1817,20 +1817,21 @@ show_fragment_tree(fragment_data *fd_head, const fragment_items *fit,
*/
gboolean
show_fragment_seq_tree(fragment_data *fd_head, const fragment_items *fit,
- proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb)
+ proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, proto_item **fi)
{
guint32 offset, next_offset;
fragment_data *fd, *last_fd;
proto_tree *ft;
- proto_item *fi;
+ int i = 0;
/* It's not fragmented. */
pinfo->fragmented = FALSE;
- fi = proto_tree_add_item(tree, *(fit->hf_fragments),
+ *fi = proto_tree_add_item(tree, *(fit->hf_fragments),
tvb, 0, -1, FALSE);
- PROTO_ITEM_SET_GENERATED(fi);
- ft = proto_item_add_subtree(fi, *(fit->ett_fragments));
+ PROTO_ITEM_SET_GENERATED(*fi);
+
+ ft = proto_item_add_subtree(*fi, *(fit->ett_fragments));
offset = 0;
next_offset = 0;
last_fd = NULL;
@@ -1841,6 +1842,13 @@ show_fragment_seq_tree(fragment_data *fd_head, const fragment_items *fit,
}
last_fd = fd;
show_fragment(fd, offset, fit, ft, tvb);
+ if(i == 0) {
+ proto_item_append_text(*fi, " (%u bytes): ", tvb_length(tvb));
+ } else {
+ proto_item_append_text(*fi, ", ");
+ }
+ proto_item_append_text(*fi, "#%u(%u)", fd->frame, fd->len);
+ i++;
}
return show_fragment_errs_in_col(fd_head, fit, pinfo);
diff --git a/epan/reassemble.h b/epan/reassemble.h
index 9e8d36df19..2478a9a6f8 100644
--- a/epan/reassemble.h
+++ b/epan/reassemble.h
@@ -241,4 +241,4 @@ show_fragment_tree(fragment_data *ipfd_head, const fragment_items *fit,
extern gboolean
show_fragment_seq_tree(fragment_data *ipfd_head, const fragment_items *fit,
- proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb);
+ proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, proto_item **fi);