aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-fcct.c
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2013-11-25 16:04:57 +0000
committerMichael Mann <mmann78@netscape.net>2013-11-25 16:04:57 +0000
commita9dd765d474264d86c9809f943fb872f29aa9b06 (patch)
treecc6f3db65a0eee0a790d7a35e5745ba364ceb1bf /epan/dissectors/packet-fcct.c
parentd4c4e24351173085ba78ebdb461f15a9c2f96c5b (diff)
Remove Fibre Channel specific fields from packet_info and just have the fc_hdr or fc_data_t structure passed between all necessary dissectors.
svn path=/trunk/; revision=53569
Diffstat (limited to 'epan/dissectors/packet-fcct.c')
-rw-r--r--epan/dissectors/packet-fcct.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/epan/dissectors/packet-fcct.c b/epan/dissectors/packet-fcct.c
index 169c5bf474..11bd002df3 100644
--- a/epan/dissectors/packet-fcct.c
+++ b/epan/dissectors/packet-fcct.c
@@ -134,8 +134,8 @@ get_gs_server (guint8 gstype, guint8 gssubtype)
}
/* Code to actually dissect the packets */
-static void
-dissect_fcct (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+static int
+dissect_fcct (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
{
/* Set up structures needed to add the protocol subtree and manage it */
@@ -208,12 +208,15 @@ dissect_fcct (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
/* We do not change the starting offset for the next protocol in the
* chain since the fc_ct header is common to the sub-protocols.
+ * Pass the fchdr* received from parent dissector through to sub-protocols
*/
next_tvb = tvb_new_subset_remaining (tvb, 0);
- if (!dissector_try_uint (fcct_gserver_table, server, next_tvb, pinfo,
- tree)) {
+ if (!dissector_try_uint_new(fcct_gserver_table, server, next_tvb, pinfo,
+ tree, TRUE, data)) {
call_dissector (data_handle, next_tvb, pinfo, tree);
}
+
+ return tvb_length(tvb);
}
/* Register the protocol with Wireshark */
@@ -291,7 +294,7 @@ proto_reg_handoff_fcct (void)
{
dissector_handle_t fcct_handle;
- fcct_handle = create_dissector_handle (dissect_fcct, proto_fcct);
+ fcct_handle = new_create_dissector_handle (dissect_fcct, proto_fcct);
dissector_add_uint("fc.ftype", FC_FTYPE_FCCT, fcct_handle);
data_handle = find_dissector ("data");