add support to link from specially marked fields to related packets,

a doubleclick will follow the link

svn path=/trunk/; revision=10897
This commit is contained in:
Ulf Lamping 2004-05-14 17:34:51 +00:00
parent 276794e038
commit ae82f88d98
2 changed files with 23 additions and 8 deletions

View File

@ -1,7 +1,7 @@
/* packet-tcp.c
* Routines for TCP packet disassembly
*
* $Id: packet-tcp.c,v 1.233 2004/05/14 15:55:36 ulfl Exp $
* $Id: packet-tcp.c,v 1.234 2004/05/14 17:34:51 ulfl Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@ -1557,6 +1557,7 @@ desegment_tcp(tvbuff_t *tvb, packet_info *pinfo, int offset,
int deseg_offset;
guint32 deseg_seq;
gint nbytes;
proto_item *item;
/*
* Initialize these to assume no desegmentation.
@ -1876,8 +1877,10 @@ desegment_tcp(tvbuff_t *tvb, packet_info *pinfo, int offset,
* We know what frame this PDU is reassembled in;
* let the user know.
*/
proto_tree_add_uint(tcp_tree, hf_tcp_reassembled_in,
item=proto_tree_add_uint(tcp_tree, hf_tcp_reassembled_in,
tvb, 0, 0, ipfd_head->reassembled_in);
PROTO_ITEM_SET_GENERATED(item);
PROTO_ITEM_SET_LINK(item);
}
/*

View File

@ -1,7 +1,7 @@
/* reassemble.c
* Routines for {fragment,segment} reassembly
*
* $Id: reassemble.c,v 1.46 2004/04/24 06:46:04 ulfl Exp $
* $Id: reassemble.c,v 1.47 2004/05/14 17:34:51 ulfl Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@ -1568,34 +1568,41 @@ show_fragment(fragment_data *fd, int offset, const fragment_items *fit,
offset,
offset+fd->len-1,
fd->len);
PROTO_ITEM_SET_GENERATED(fei);
PROTO_ITEM_SET_LINK(fei);
fet = proto_item_add_subtree(fei, *(fit->ett_fragment));
if (fd->flags&FD_OVERLAP) {
proto_tree_add_boolean(fet,
fei=proto_tree_add_boolean(fet,
*(fit->hf_fragment_overlap),
tvb, 0, 0,
TRUE);
PROTO_ITEM_SET_GENERATED(fei);
}
if (fd->flags&FD_OVERLAPCONFLICT) {
proto_tree_add_boolean(fet,
fei=proto_tree_add_boolean(fet,
*(fit->hf_fragment_overlap_conflict),
tvb, 0, 0,
TRUE);
PROTO_ITEM_SET_GENERATED(fei);
}
if (fd->flags&FD_MULTIPLETAILS) {
proto_tree_add_boolean(fet,
fei=proto_tree_add_boolean(fet,
*(fit->hf_fragment_multiple_tails),
tvb, 0, 0,
TRUE);
PROTO_ITEM_SET_GENERATED(fei);
}
if (fd->flags&FD_TOOLONGFRAGMENT) {
proto_tree_add_boolean(fet,
fei=proto_tree_add_boolean(fet,
*(fit->hf_fragment_too_long_fragment),
tvb, 0, 0,
TRUE);
PROTO_ITEM_SET_GENERATED(fei);
}
} else {
proto_item *fei;
/* nothing of interest for this fragment */
proto_tree_add_uint_format(ft, *(fit->hf_fragment),
fei=proto_tree_add_uint_format(ft, *(fit->hf_fragment),
tvb, offset, fd->len,
fd->frame,
"Frame: %u, payload: %u-%u (%u bytes)",
@ -1604,6 +1611,8 @@ show_fragment(fragment_data *fd, int offset, const fragment_items *fit,
offset+fd->len-1,
fd->len
);
PROTO_ITEM_SET_GENERATED(fei);
PROTO_ITEM_SET_LINK(fei);
}
}
@ -1642,6 +1651,8 @@ show_fragment_tree(fragment_data *fd_head, const fragment_items *fit,
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));
for (fd = fd_head->next; fd != NULL; fd = fd->next)
show_fragment(fd, fd->offset, fit, ft, tvb);
@ -1669,6 +1680,7 @@ show_fragment_seq_tree(fragment_data *fd_head, const fragment_items *fit,
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));
offset = 0;
next_offset = 0;