diff options
author | Michael Mann <mmann78@netscape.net> | 2015-09-13 18:38:35 -0400 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2015-09-15 02:24:30 +0000 |
commit | a0a3cd62e13c15a2a0cb303b28fa0edf5180612b (patch) | |
tree | 6ed2783bf70f63d89bf93aa67194be47fd873762 /epan/dissectors/packet-fc.c | |
parent | 51360b538016523bb2d2670c7bcb51f127a757e7 (diff) |
Make fchdr "packet" scoped.
Broken in ge450b9b, when it stopped being static (which fixed other bugs). Conversations still need the fchdr "address" data to remain in scope.
Bug:11457
Change-Id: I17a3814bf76d2940124a2700fb6b12c6d7d834c1
Reviewed-on: https://code.wireshark.org/review/10518
Petri-Dish: Michael Mann <mmann78@netscape.net>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan/dissectors/packet-fc.c')
-rw-r--r-- | epan/dissectors/packet-fc.c | 178 |
1 files changed, 89 insertions, 89 deletions
diff --git a/epan/dissectors/packet-fc.c b/epan/dissectors/packet-fc.c index 1a32bd998f..40bca87989 100644 --- a/epan/dissectors/packet-fc.c +++ b/epan/dissectors/packet-fc.c @@ -711,7 +711,7 @@ dissect_fc_helper (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean guint16 real_seqcnt; guint8 ftype; - fc_hdr fchdr; + fc_hdr* fchdr = wmem_new(wmem_packet_scope(), fc_hdr); /* Needed by conversations, not just tap */ fc_exchange_t *fc_ex; fc_conv_data_t *fc_conv_data=NULL; @@ -722,8 +722,8 @@ dissect_fc_helper (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean /* Make entries in Protocol column and Info column on summary display */ col_set_str(pinfo->cinfo, COL_PROTOCOL, "FC"); - fchdr.r_ctl = tvb_get_guint8 (tvb, offset); - fchdr.fc_ex = NULL; + fchdr->r_ctl = tvb_get_guint8 (tvb, offset); + fchdr->fc_ex = NULL; /* * If the frame contains a VFT (virtual fabric tag), decode it @@ -732,10 +732,10 @@ dissect_fc_helper (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean * This used to be called the Cisco-proprietary EISL field, but is now * standardized in FC-FS-2. See section 10.2.4. */ - if (fchdr.r_ctl == FC_RCTL_VFT) { + if (fchdr->r_ctl == FC_RCTL_VFT) { vft_offset = offset; offset += 8; - fchdr.r_ctl = tvb_get_guint8 (tvb, offset); + fchdr->r_ctl = tvb_get_guint8 (tvb, offset); } /* Each fc endpoint pair gets its own TCP session in iFCP but @@ -752,16 +752,16 @@ dissect_fc_helper (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean pinfo->srcport=0; pinfo->destport=0; } - SET_ADDRESS(&fchdr.d_id, pinfo->dst.type, pinfo->dst.len, pinfo->dst.data); - SET_ADDRESS(&fchdr.s_id, pinfo->src.type, pinfo->src.len, pinfo->src.data); - - fchdr.cs_ctl = tvb_get_guint8 (tvb, offset+4); - fchdr.type = tvb_get_guint8 (tvb, offset+8); - fchdr.fctl=tvb_get_ntoh24(tvb,offset+9); - fchdr.seqcnt = tvb_get_ntohs (tvb, offset+14); - fchdr.oxid=tvb_get_ntohs(tvb,offset+16); - fchdr.rxid=tvb_get_ntohs(tvb,offset+18); - fchdr.relative_offset=0; + SET_ADDRESS(&fchdr->d_id, pinfo->dst.type, pinfo->dst.len, pinfo->dst.data); + SET_ADDRESS(&fchdr->s_id, pinfo->src.type, pinfo->src.len, pinfo->src.data); + + fchdr->cs_ctl = tvb_get_guint8 (tvb, offset+4); + fchdr->type = tvb_get_guint8 (tvb, offset+8); + fchdr->fctl=tvb_get_ntoh24(tvb,offset+9); + fchdr->seqcnt = tvb_get_ntohs (tvb, offset+14); + fchdr->oxid=tvb_get_ntohs(tvb,offset+16); + fchdr->rxid=tvb_get_ntohs(tvb,offset+18); + fchdr->relative_offset=0; param = tvb_get_ntohl (tvb, offset+20); seq_id = tvb_get_guint8 (tvb, offset+12); @@ -780,9 +780,9 @@ dissect_fc_helper (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean /* Set up LUN data. OXID + LUN make up unique exchanges, but LUN is populated in subdissectors and not necessarily in every frame. Stub it here for now */ - fchdr.lun = 0xFFFF; + fchdr->lun = 0xFFFF; if (!pinfo->fd->flags.visited) { - fchdr.lun = (guint16)GPOINTER_TO_UINT(wmem_tree_lookup32(fc_conv_data->luns, fchdr.oxid)); + fchdr->lun = (guint16)GPOINTER_TO_UINT(wmem_tree_lookup32(fc_conv_data->luns, fchdr->oxid)); } /* In the interest of speed, if "tree" is NULL, don't do any work not @@ -790,7 +790,7 @@ dissect_fc_helper (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean ti = proto_tree_add_protocol_format (tree, proto_fc, tvb, offset, FC_HEADER_SIZE, "Fibre Channel"); fc_tree = proto_item_add_subtree (ti, ett_fc); - /*is_ack = ((fchdr.r_ctl == 0xC0) || (fchdr.r_ctl == 0xC1));*/ + /*is_ack = ((fchdr->r_ctl == 0xC0) || (fchdr->r_ctl == 0xC1));*/ /* There are two ways to determine if this is the first frame of a * sequence. Either: @@ -799,117 +799,117 @@ dissect_fc_helper (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean */ is_1frame_inseq = (((fc_data->sof_eof & FC_DATA_SOF_FIRST_FRAME) == FC_DATA_SOF_FIRST_FRAME) || (((fc_data->sof_eof & FC_DATA_SOF_SOFF) == FC_DATA_SOF_SOFF) && - (fchdr.seqcnt == 0))); + (fchdr->seqcnt == 0))); is_lastframe_inseq = ((fc_data->sof_eof & FC_DATA_EOF_LAST_FRAME) == FC_DATA_EOF_LAST_FRAME); - is_lastframe_inseq |= fchdr.fctl & FC_FCTL_SEQ_LAST; + is_lastframe_inseq |= fchdr->fctl & FC_FCTL_SEQ_LAST; /*is_valid_frame = ((pinfo->sof_eof & 0x40) == 0x40);*/ - ftype = fc_get_ftype (fchdr.r_ctl, fchdr.type); + ftype = fc_get_ftype (fchdr->r_ctl, fchdr->type); col_add_str (pinfo->cinfo, COL_INFO, val_to_str (ftype, fc_ftype_vals, "Unknown Type (0x%x)")); if (ftype == FC_FTYPE_LINKCTL) col_append_fstr (pinfo->cinfo, COL_INFO, ", %s", - val_to_str ((fchdr.r_ctl & 0x0F), + val_to_str ((fchdr->r_ctl & 0x0F), fc_lctl_proto_val, "LCTL 0x%x")); if (vft_offset >= 0) { dissect_fc_vft(fc_tree, tvb, vft_offset); } - switch (fchdr.r_ctl & 0xF0) { + switch (fchdr->r_ctl & 0xF0) { case FC_RCTL_DEV_DATA: case FC_RCTL_LINK_DATA: case FC_RCTL_VIDEO: /* the lower 4 bits of R_CTL are the information category */ proto_tree_add_uint_format_value(fc_tree, hf_fc_rctl, tvb, offset, - FC_RCTL_SIZE, fchdr.r_ctl, + FC_RCTL_SIZE, fchdr->r_ctl, "0x%x(%s/%s)", - fchdr.r_ctl, - val_to_str ((fchdr.r_ctl & 0xF0), + fchdr->r_ctl, + val_to_str ((fchdr->r_ctl & 0xF0), fc_routing_val, "0x%x"), - val_to_str ((fchdr.r_ctl & 0x0F), + val_to_str ((fchdr->r_ctl & 0x0F), fc_iu_val, "0x%x")); break; case FC_RCTL_LINK_CTL: /* the lower 4 bits of R_CTL indicate the type of link ctl frame */ proto_tree_add_uint_format_value(fc_tree, hf_fc_rctl, tvb, offset, - FC_RCTL_SIZE, fchdr.r_ctl, + FC_RCTL_SIZE, fchdr->r_ctl, "0x%x(%s/%s)", - fchdr.r_ctl, - val_to_str ((fchdr.r_ctl & 0xF0), + fchdr->r_ctl, + val_to_str ((fchdr->r_ctl & 0xF0), fc_routing_val, "0x%x"), - val_to_str ((fchdr.r_ctl & 0x0F), + val_to_str ((fchdr->r_ctl & 0x0F), fc_lctl_proto_val, "0x%x")); break; case FC_RCTL_BLS: - switch (fchdr.type) { + switch (fchdr->type) { case 0x00: /* the lower 4 bits of R_CTL indicate the type of BLS frame */ proto_tree_add_uint_format_value(fc_tree, hf_fc_rctl, tvb, offset, - FC_RCTL_SIZE, fchdr.r_ctl, + FC_RCTL_SIZE, fchdr->r_ctl, "0x%x(%s/%s)", - fchdr.r_ctl, - val_to_str ((fchdr.r_ctl & 0xF0), + fchdr->r_ctl, + val_to_str ((fchdr->r_ctl & 0xF0), fc_routing_val, "0x%x"), - val_to_str ((fchdr.r_ctl & 0x0F), + val_to_str ((fchdr->r_ctl & 0x0F), fc_bls_proto_val, "0x%x")); break; default: proto_tree_add_uint_format_value(fc_tree, hf_fc_rctl, tvb, offset, - FC_RCTL_SIZE, fchdr.r_ctl, + FC_RCTL_SIZE, fchdr->r_ctl, "0x%x(%s/0x%x)", - fchdr.r_ctl, - val_to_str ((fchdr.r_ctl & 0xF0), + fchdr->r_ctl, + val_to_str ((fchdr->r_ctl & 0xF0), fc_routing_val, "0x%x"), - fchdr.r_ctl & 0x0F); + fchdr->r_ctl & 0x0F); break; } break; case FC_RCTL_ELS: - switch (fchdr.type) { + switch (fchdr->type) { case 0x01: /* the lower 4 bits of R_CTL indicate the type of ELS frame */ proto_tree_add_uint_format_value(fc_tree, hf_fc_rctl, tvb, offset, - FC_RCTL_SIZE, fchdr.r_ctl, + FC_RCTL_SIZE, fchdr->r_ctl, "0x%x(%s/%s)", - fchdr.r_ctl, - val_to_str ((fchdr.r_ctl & 0xF0), + fchdr->r_ctl, + val_to_str ((fchdr->r_ctl & 0xF0), fc_routing_val, "0x%x"), - val_to_str ((fchdr.r_ctl & 0x0F), + val_to_str ((fchdr->r_ctl & 0x0F), fc_els_proto_val, "0x%x")); break; default: proto_tree_add_uint_format_value(fc_tree, hf_fc_rctl, tvb, offset, - FC_RCTL_SIZE, fchdr.r_ctl, + FC_RCTL_SIZE, fchdr->r_ctl, "0x%x(%s/0x%x)", - fchdr.r_ctl, - val_to_str ((fchdr.r_ctl & 0xF0), + fchdr->r_ctl, + val_to_str ((fchdr->r_ctl & 0xF0), fc_routing_val, "0x%x"), - fchdr.r_ctl & 0x0F); + fchdr->r_ctl & 0x0F); break; } break; default: proto_tree_add_uint_format_value(fc_tree, hf_fc_rctl, tvb, offset, - FC_RCTL_SIZE, fchdr.r_ctl, + FC_RCTL_SIZE, fchdr->r_ctl, "0x%x(%s/0x%x)", - fchdr.r_ctl, - val_to_str ((fchdr.r_ctl & 0xF0), + fchdr->r_ctl, + val_to_str ((fchdr->r_ctl & 0xF0), fc_routing_val, "0x%x"), - fchdr.r_ctl & 0x0F); + fchdr->r_ctl & 0x0F); break; } @@ -918,30 +918,30 @@ dissect_fc_helper (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean PROTO_ITEM_SET_HIDDEN(hidden_item); /* XXX - use "fc_wka_vals[]" on this? */ - SET_ADDRESS(&addr, AT_FC, 3, fchdr.d_id.data); + SET_ADDRESS(&addr, AT_FC, 3, fchdr->d_id.data); proto_tree_add_item(fc_tree, hf_fc_did, tvb, offset+1, 3, ENC_NA); hidden_item = proto_tree_add_item (fc_tree, hf_fc_id, tvb, offset+1, 3, ENC_NA); PROTO_ITEM_SET_HIDDEN(hidden_item); - proto_tree_add_uint (fc_tree, hf_fc_csctl, tvb, offset+4, 1, fchdr.cs_ctl); + proto_tree_add_uint (fc_tree, hf_fc_csctl, tvb, offset+4, 1, fchdr->cs_ctl); /* XXX - use "fc_wka_vals[]" on this? */ - SET_ADDRESS(&addr, AT_FC, 3, fchdr.s_id.data); + SET_ADDRESS(&addr, AT_FC, 3, fchdr->s_id.data); proto_tree_add_item(fc_tree, hf_fc_sid, tvb, offset+5, 3, ENC_NA); hidden_item = proto_tree_add_item (fc_tree, hf_fc_id, tvb, offset+5, 3, ENC_NA); PROTO_ITEM_SET_HIDDEN(hidden_item); if (ftype == FC_FTYPE_LINKCTL) { - if (((fchdr.r_ctl & 0x0F) == FC_LCTL_FBSYB) || - ((fchdr.r_ctl & 0x0F) == FC_LCTL_FBSYL)) { + if (((fchdr->r_ctl & 0x0F) == FC_LCTL_FBSYB) || + ((fchdr->r_ctl & 0x0F) == FC_LCTL_FBSYL)) { /* for F_BSY frames, the upper 4 bits of the type field specify the * reason for the BSY. */ proto_tree_add_uint_format_value(fc_tree, hf_fc_type, tvb, offset+8, FC_TYPE_SIZE, - fchdr.type,"0x%x(%s)", fchdr.type, - fclctl_get_typestr ((guint8) (fchdr.r_ctl & 0x0F), - fchdr.type)); + fchdr->type,"0x%x(%s)", fchdr->type, + fclctl_get_typestr ((guint8) (fchdr->r_ctl & 0x0F), + fchdr->type)); } else { proto_tree_add_item (fc_tree, hf_fc_type, tvb, offset+8, 1, ENC_BIG_ENDIAN); } @@ -959,27 +959,27 @@ dissect_fc_helper (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean df_ctl = tvb_get_guint8(tvb, offset+13); proto_tree_add_uint (fc_tree, hf_fc_dfctl, tvb, offset+13, 1, df_ctl); - proto_tree_add_uint (fc_tree, hf_fc_seqcnt, tvb, offset+14, 2, fchdr.seqcnt); - proto_tree_add_uint (fc_tree, hf_fc_oxid, tvb, offset+16, 2, fchdr.oxid); - proto_tree_add_uint (fc_tree, hf_fc_rxid, tvb, offset+18, 2, fchdr.rxid); + proto_tree_add_uint (fc_tree, hf_fc_seqcnt, tvb, offset+14, 2, fchdr->seqcnt); + proto_tree_add_uint (fc_tree, hf_fc_oxid, tvb, offset+16, 2, fchdr->oxid); + proto_tree_add_uint (fc_tree, hf_fc_rxid, tvb, offset+18, 2, fchdr->rxid); if (ftype == FC_FTYPE_LINKCTL) { - if (((fchdr.r_ctl & 0x0F) == FC_LCTL_FRJT) || - ((fchdr.r_ctl & 0x0F) == FC_LCTL_PRJT) || - ((fchdr.r_ctl & 0x0F) == FC_LCTL_PBSY)) { + if (((fchdr->r_ctl & 0x0F) == FC_LCTL_FRJT) || + ((fchdr->r_ctl & 0x0F) == FC_LCTL_PRJT) || + ((fchdr->r_ctl & 0x0F) == FC_LCTL_PBSY)) { /* In all these cases of Link Ctl frame, the parameter field * encodes the detailed error message */ proto_tree_add_uint_format_value(fc_tree, hf_fc_param, tvb, offset+20, 4, param, "0x%x(%s)", param, - fclctl_get_paramstr ((fchdr.r_ctl & 0x0F), + fclctl_get_paramstr ((fchdr->r_ctl & 0x0F), param)); } else { proto_tree_add_item (fc_tree, hf_fc_param, tvb, offset+20, 4, ENC_BIG_ENDIAN); } } else if (ftype == FC_FTYPE_BLS) { - if ((fchdr.r_ctl & 0x0F) == FC_BLS_ABTS) { + if ((fchdr->r_ctl & 0x0F) == FC_BLS_ABTS) { proto_tree_add_uint_format_value(fc_tree, hf_fc_param, tvb, offset+20, 4, param, "0x%x(%s)", param, @@ -992,7 +992,7 @@ dissect_fc_helper (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean } else if (ftype == FC_FTYPE_SCSI ) { if (f_ctl&FC_FCTL_REL_OFFSET){ proto_tree_add_item (fc_tree, hf_fc_relative_offset, tvb, offset+20, 4, ENC_BIG_ENDIAN); - fchdr.relative_offset=tvb_get_ntohl(tvb, offset+20); + fchdr->relative_offset=tvb_get_ntohl(tvb, offset+20); } else { proto_tree_add_item (fc_tree, hf_fc_param, tvb, offset+20, 4, ENC_BIG_ENDIAN); } @@ -1088,24 +1088,24 @@ dissect_fc_helper (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean * case of another request using the same exchange as a previous * req. */ - cdata->seq_cnt = fchdr.seqcnt; + cdata->seq_cnt = fchdr->seqcnt; } else { req_key = wmem_new(wmem_file_scope(), fcseq_conv_key_t); req_key->conv_idx = conversation->index; cdata = wmem_new(wmem_file_scope(), fcseq_conv_data_t); - cdata->seq_cnt = fchdr.seqcnt; + cdata->seq_cnt = fchdr->seqcnt; g_hash_table_insert (fcseq_req_hash, req_key, cdata); } real_seqcnt = 0; } else if (cdata != NULL) { - real_seqcnt = fchdr.seqcnt - cdata->seq_cnt ; + real_seqcnt = fchdr->seqcnt - cdata->seq_cnt ; } else { - real_seqcnt = fchdr.seqcnt; + real_seqcnt = fchdr->seqcnt; } /* Verify that this is a valid fragment */ @@ -1118,7 +1118,7 @@ dissect_fc_helper (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean col_append_str (pinfo->cinfo, COL_INFO, " (Bogus Fragment)"); } else { - frag_id = ((fchdr.oxid << 16) ^ seq_id) | is_exchg_resp ; + frag_id = ((fchdr->oxid << 16) ^ seq_id) | is_exchg_resp ; /* We assume that all frames are of the same max size */ fcfrag_head = fragment_add (&fc_reassembly_table, @@ -1157,20 +1157,20 @@ dissect_fc_helper (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean if ((ftype != FC_FTYPE_LINKCTL) && (ftype != FC_FTYPE_BLS)) { /* If relative offset is used, only dissect the pdu with * offset 0 (param) */ - if( (fchdr.fctl&FC_FCTL_REL_OFFSET) && param ){ + if( (fchdr->fctl&FC_FCTL_REL_OFFSET) && param ){ call_dissector (data_handle, next_tvb, pinfo, tree); } else { if (!dissector_try_uint_new (fcftype_dissector_table, ftype, - next_tvb, pinfo, tree, FALSE, &fchdr)) { + next_tvb, pinfo, tree, FALSE, fchdr)) { call_dissector (data_handle, next_tvb, pinfo, tree); } } } else if (ftype == FC_FTYPE_BLS) { - if ((fchdr.r_ctl & 0x0F) == FC_BLS_BAACC) { + if ((fchdr->r_ctl & 0x0F) == FC_BLS_BAACC) { dissect_fc_ba_acc (next_tvb, pinfo, tree); - } else if ((fchdr.r_ctl & 0x0F) == FC_BLS_BARJT) { + } else if ((fchdr->r_ctl & 0x0F) == FC_BLS_BARJT) { dissect_fc_ba_rjt (next_tvb, pinfo, tree); - } else if ((fchdr.r_ctl & 0x0F) == FC_BLS_ABTS) { + } else if ((fchdr->r_ctl & 0x0F) == FC_BLS_ABTS) { col_set_str(pinfo->cinfo, COL_PROTOCOL, "BLS"); col_set_str(pinfo->cinfo, COL_INFO, "ABTS"); } @@ -1182,10 +1182,10 @@ dissect_fc_helper (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean /* Set up LUN data */ if (!pinfo->fd->flags.visited) { - wmem_tree_insert32(fc_conv_data->luns, fchdr.oxid, GUINT_TO_POINTER((guint)fchdr.lun)); + wmem_tree_insert32(fc_conv_data->luns, fchdr->oxid, GUINT_TO_POINTER((guint)fchdr->lun)); } - exchange_key = ((fchdr.oxid & 0xFFFF) | ((fchdr.lun << 16) & 0xFFFF0000)); + exchange_key = ((fchdr->oxid & 0xFFFF) | ((fchdr->lun << 16) & 0xFFFF0000)); /* set up the exchange data */ /* XXX we should come up with a way to handle when the 16bit oxid wraps @@ -1201,38 +1201,38 @@ dissect_fc_helper (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean wmem_tree_insert32(fc_conv_data->exchanges, exchange_key, fc_ex); } - fchdr.fc_ex = fc_ex; + fchdr->fc_ex = fc_ex; /* populate the exchange struct */ if(!pinfo->fd->flags.visited){ - if(fchdr.fctl&FC_FCTL_EXCHANGE_FIRST){ + if(fchdr->fctl&FC_FCTL_EXCHANGE_FIRST){ fc_ex->first_exchange_frame=pinfo->fd->num; fc_ex->fc_time = pinfo->fd->abs_ts; } - if(fchdr.fctl&FC_FCTL_EXCHANGE_LAST){ + if(fchdr->fctl&FC_FCTL_EXCHANGE_LAST){ fc_ex->last_exchange_frame=pinfo->fd->num; } } /* put some nice exchange data in the tree */ - if(!(fchdr.fctl&FC_FCTL_EXCHANGE_FIRST)){ + if(!(fchdr->fctl&FC_FCTL_EXCHANGE_FIRST)){ proto_item *it; it=proto_tree_add_uint(fc_tree, hf_fc_exchange_first_frame, tvb, 0, 0, fc_ex->first_exchange_frame); PROTO_ITEM_SET_GENERATED(it); - if(fchdr.fctl&FC_FCTL_EXCHANGE_LAST){ + if(fchdr->fctl&FC_FCTL_EXCHANGE_LAST){ nstime_t delta_ts; nstime_delta(&delta_ts, &pinfo->fd->abs_ts, &fc_ex->fc_time); it=proto_tree_add_time(ti, hf_fc_time, tvb, 0, 0, &delta_ts); PROTO_ITEM_SET_GENERATED(it); } } - if(!(fchdr.fctl&FC_FCTL_EXCHANGE_LAST)){ + if(!(fchdr->fctl&FC_FCTL_EXCHANGE_LAST)){ proto_item *it; it=proto_tree_add_uint(fc_tree, hf_fc_exchange_last_frame, tvb, 0, 0, fc_ex->last_exchange_frame); PROTO_ITEM_SET_GENERATED(it); } - tap_queue_packet(fc_tap, pinfo, &fchdr); + tap_queue_packet(fc_tap, pinfo, fchdr); } static int |