diff options
author | Ulf Lamping <ulf.lamping@web.de> | 2005-06-02 18:52:55 +0000 |
---|---|---|
committer | Ulf Lamping <ulf.lamping@web.de> | 2005-06-02 18:52:55 +0000 |
commit | e2c3b60280ff697553e360089ee84af905a311c3 (patch) | |
tree | eff0348fc3925c767288ab7d60e5d5944d061234 /epan/reassemble.c | |
parent | 5c4f8770318963d77a7829cb2113d625bb654a50 (diff) | |
download | wireshark-e2c3b60280ff697553e360089ee84af905a311c3.tar.gz wireshark-e2c3b60280ff697553e360089ee84af905a311c3.tar.bz2 wireshark-e2c3b60280ff697553e360089ee84af905a311c3.zip |
add a generated toplevel line between the TCP protocol and the desegmented content, to better understand what's going on while desegmenting.
We'll have to add similar mechanisms for other protocols as well...
svn path=/trunk/; revision=14527
Diffstat (limited to 'epan/reassemble.c')
-rw-r--r-- | epan/reassemble.c | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/epan/reassemble.c b/epan/reassemble.c index fb8de997b7..3c3b62b93a 100644 --- a/epan/reassemble.c +++ b/epan/reassemble.c @@ -1612,6 +1612,7 @@ process_reassembled_data(tvbuff_t *tvb, int offset, packet_info *pinfo, { tvbuff_t *next_tvb; gboolean update_col_info; + proto_item *frag_tree_item; if (fd_head != NULL && pinfo->fd->num == fd_head->reassembled_in) { /* @@ -1649,7 +1650,7 @@ process_reassembled_data(tvbuff_t *tvb, int offset, packet_info *pinfo, fd_head, fit, tree, pinfo, next_tvb); } else { update_col_info = !show_fragment_tree(fd_head, - fit, tree, pinfo, next_tvb); + fit, tree, pinfo, next_tvb, &frag_tree_item); } } else { /* @@ -1780,22 +1781,30 @@ show_fragment_errs_in_col(fragment_data *fd_head, const fragment_items *fit, */ gboolean show_fragment_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) { fragment_data *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); + PROTO_ITEM_SET_GENERATED(*fi); - ft = proto_item_add_subtree(fi, *(fit->ett_fragments)); - for (fd = fd_head->next; fd != NULL; fd = fd->next) + ft = proto_item_add_subtree(*fi, *(fit->ett_fragments)); + for (fd = fd_head->next; fd != NULL; fd = fd->next) { show_fragment(fd, 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); } |