diff options
author | Michael Mann <mmann78@netscape.net> | 2014-07-08 14:47:17 -0400 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2014-07-09 00:25:04 +0000 |
commit | 6691293a655645dcd98c9cb55618b8e41bef41a4 (patch) | |
tree | 495dccc6e708c0f22c129ccbe4dd495a1716f585 /epan/dissectors | |
parent | cfee2019c63f33cff3564c2266c9586c86b61baa (diff) |
convert to proto_tree_add_subtree[_format]
Change-Id: I8d66b1bc7dbdfee3d4bf6fd3b3c21c6323b66f44
Reviewed-on: https://code.wireshark.org/review/2946
Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan/dissectors')
41 files changed, 850 insertions, 1588 deletions
diff --git a/epan/dissectors/packet-s5066dts.c b/epan/dissectors/packet-s5066dts.c index 188adfb6c5..d9151dd605 100644 --- a/epan/dissectors/packet-s5066dts.c +++ b/epan/dissectors/packet-s5066dts.c @@ -423,13 +423,11 @@ static void dissect_s5066dts_eow_hftrp(tvbuff_t *tvb, packet_info * pinfo, guin static guint dissect_s5066dts_eow(tvbuff_t *tvb, packet_info * pinfo, guint offset, proto_tree *tree, guint pdu_type) { - proto_item *ti = NULL; - proto_tree *eow_tree = NULL; + proto_tree *eow_tree; guint eow_type; eow_type = tvb_get_guint8(tvb, offset) & 0x0F; - ti = proto_tree_add_text(tree, tvb, offset, 2, "EOW Field"); - eow_tree = proto_item_add_subtree(ti, ett_s5066dts_eow); + eow_tree = proto_tree_add_subtree(tree, tvb, offset, 2, ett_s5066dts_eow, NULL, "EOW Field"); proto_tree_add_item(eow_tree, hf_s5066dts_eow_type, tvb, offset, 1, ENC_BIG_ENDIAN); offset++; switch (eow_type) @@ -460,8 +458,7 @@ static guint dissect_s5066dts_address(tvbuff_t *tvb, guint offset, proto_tree *t guint addr_size) { guint32 source_address = 0, destination_address = 0; - proto_item *ti; - proto_tree *address_tree = NULL; + proto_tree *address_tree; unsigned int i; for ( i = 0; i < addr_size; i++) @@ -474,8 +471,7 @@ static guint dissect_s5066dts_address(tvbuff_t *tvb, guint offset, proto_tree *t : (tvb_get_guint8(tvb, offset + (i + addr_size) / 2))) & 0x0F); } - ti = proto_tree_add_text(tree, tvb, offset, addr_size, "Destination & Source Addresses"); - address_tree = proto_item_add_subtree(ti, ett_s5066dts_address); + address_tree = proto_tree_add_subtree(tree, tvb, offset, addr_size, ett_s5066dts_address, NULL, "Destination & Source Addresses"); proto_tree_add_text(address_tree, tvb, @@ -644,7 +640,6 @@ static guint dissect_s5066dts_exp_ack_only(tvbuff_t *tvb, guint offset, proto_tr static guint dissect_s5066dts_management(tvbuff_t *tvb, guint offset, proto_tree *tree, guint header_size) { guint8 eow_content; - proto_item *hftrp_proto_item = NULL; proto_tree *hftrp_token_tree = NULL; guint eow_type; guint extended_message_size; @@ -674,9 +669,9 @@ static guint dissect_s5066dts_management(tvbuff_t *tvb, guint offset, proto_tree if (eow_type == S5066_EOW_HFTRP_TOKEN) { /* Add a new subtree for HFTRP token details */ - hftrp_proto_item = proto_tree_add_text(tree, tvb, offset, extended_message_size, "HFTRP Token (%s)", + hftrp_token_tree = proto_tree_add_subtree_format(tree, tvb, offset, extended_message_size, + ett_s5066dts_hftrp_token, NULL, "HFTRP Token (%s)", val_to_str_const(eow_content, s5066dts_eow_hftrp_frame_control, "UNKNOWN_HFTRP_TOKEN")); - hftrp_token_tree = proto_item_add_subtree(hftrp_proto_item, ett_s5066dts_hftrp_token); proto_tree_add_item(hftrp_token_tree, hf_s5066dts_management_extended_message_hftrp_payload_size, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2; proto_tree_add_item(hftrp_token_tree, @@ -869,8 +864,7 @@ static int dissect_s5066dts(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree_add_item(s5066dts_tree, hf_s5066dts_header_size, tvb, offset, 1, ENC_BIG_ENDIAN); offset++; offset = dissect_s5066dts_address(tvb, offset, s5066dts_tree, pinfo, address_size); header_size = tvb_get_guint8(tvb, S5066_DPDU_SIZE_OF_HEADER_INDEX) & 0x1F; - ti = proto_tree_add_text(s5066dts_tree, tvb, offset, header_size - 6, "D_PDU Type Specific Header"); - pdu_tree = proto_item_add_subtree(ti, ett_s5066dts_pdu); + pdu_tree = proto_tree_add_subtree(s5066dts_tree, tvb, offset, header_size - 6, ett_s5066dts_pdu, NULL, "D_PDU Type Specific Header"); switch (pdu_type) { diff --git a/epan/dissectors/packet-s5066sis.c b/epan/dissectors/packet-s5066sis.c index 832a027a75..6b95708b30 100644 --- a/epan/dissectors/packet-s5066sis.c +++ b/epan/dissectors/packet-s5066sis.c @@ -823,18 +823,17 @@ proto_reg_handoff_s5066(void) static guint dissect_s5066_address(tvbuff_t *tvb, guint offset, proto_tree *tree, gint source) { - proto_item *ti = NULL; - proto_tree *s5066_tree_address = NULL; + proto_tree *s5066_tree_address; guint32 addr; - if (source) { - ti = proto_tree_add_text(tree, tvb, offset, 4, "Source Address"); + if (source) { + s5066_tree_address = proto_tree_add_subtree(tree, tvb, offset, 4, ett_s5066_address, NULL, "Source Address"); } else { - ti = proto_tree_add_text(tree, tvb, offset, 4, "Destination Address"); + s5066_tree_address = proto_tree_add_subtree(tree, tvb, offset, 4, ett_s5066_address, NULL, "Destination Address"); } - s5066_tree_address = proto_item_add_subtree(ti, ett_s5066_address); - proto_tree_add_item(s5066_tree_address, hf_s5066_ad_size, tvb, offset, 1, ENC_BIG_ENDIAN); + + proto_tree_add_item(s5066_tree_address, hf_s5066_ad_size, tvb, offset, 1, ENC_BIG_ENDIAN); proto_tree_add_item(s5066_tree_address, hf_s5066_ad_group, tvb, offset, 1, ENC_BIG_ENDIAN); addr = tvb_get_ntohl(tvb, offset); addr = addr & 0x1FFFFFFF; @@ -846,11 +845,9 @@ dissect_s5066_address(tvbuff_t *tvb, guint offset, proto_tree *tree, gint source static guint dissect_s5066_servicetype(tvbuff_t *tvb, guint offset, proto_tree *tree) { - proto_item *ti = NULL; - proto_tree *s5066_tree_servicetype = NULL; + proto_tree *s5066_tree_servicetype; - ti = proto_tree_add_text(tree, tvb, offset, 2, "Service type"); - s5066_tree_servicetype = proto_item_add_subtree(ti, ett_s5066_servicetype); + s5066_tree_servicetype = proto_tree_add_subtree(tree, tvb, offset, 2, ett_s5066_servicetype, NULL, "Service type"); proto_tree_add_item(s5066_tree_servicetype, hf_s5066_st_txmode, tvb, offset, 1, ENC_BIG_ENDIAN); proto_tree_add_item(s5066_tree_servicetype, hf_s5066_st_delivery_confirmation, tvb, offset, 1, ENC_BIG_ENDIAN); diff --git a/epan/dissectors/packet-sasp.c b/epan/dissectors/packet-sasp.c index 6ac2eaf07b..77266a4670 100644 --- a/epan/dissectors/packet-sasp.c +++ b/epan/dissectors/packet-sasp.c @@ -478,12 +478,10 @@ dissect_sasp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data) static void dissect_reg_req(tvbuff_t *tvb, proto_tree *pay_load, guint32 offset) { - proto_item *reg_tree; proto_tree *reg_req_data; guint16 gmd_cnt, i; - reg_tree = proto_tree_add_text(pay_load, tvb, offset, -1, "Reg Request"); - reg_req_data = proto_item_add_subtree(reg_tree, ett_sasp_reg_req_sz); + reg_req_data = proto_tree_add_subtree(pay_load, tvb, offset, -1, ett_sasp_reg_req_sz, NULL, "Reg Request"); /* Reg Req Size */ proto_tree_add_item(reg_req_data, hf_sasp_reg_req_sz, tvb, offset, 2, ENC_BIG_ENDIAN); @@ -506,11 +504,9 @@ static void dissect_reg_req(tvbuff_t *tvb, proto_tree *pay_load, guint32 offset) static void dissect_reg_rep(tvbuff_t *tvb, proto_tree *pay_load, guint32 offset) { - proto_item *reg_rep; proto_tree *reg_rep_tree; - reg_rep = proto_tree_add_text(pay_load, tvb, offset, -1 , "Reg Reply"); - reg_rep_tree = proto_item_add_subtree(reg_rep, ett_sasp_reg_rep); + reg_rep_tree = proto_tree_add_subtree(pay_load, tvb, offset, -1 , ett_sasp_reg_rep, NULL, "Reg Reply"); /* Size */ proto_tree_add_item(reg_rep_tree, hf_sasp_reg_rep_sz, tvb, offset, 2, ENC_BIG_ENDIAN); @@ -526,15 +522,13 @@ static void dissect_dereg_req(tvbuff_t *tvb, proto_tree *pay_load, guint32 offse /*proto_item *dereg_req_reason_flag;*/ /*proto_tree *dereg_req_reason_flag_tree;*/ guint16 gmd_cnt, i; - proto_item *dereg_tree; proto_tree *dereg_req_data; guint8 reason_flag; static gboolean first_flag = TRUE; wmem_strbuf_t *reasonflags_strbuf = wmem_strbuf_new_label(wmem_packet_scope()); static const gchar *fstr[] = {"No Reason", "Learned & Purposeful" }; - dereg_tree = proto_tree_add_text(pay_load, tvb, offset, -1 , "DeReg Request"); - dereg_req_data = proto_item_add_subtree(dereg_tree, ett_sasp_dereg_req_sz); + dereg_req_data = proto_tree_add_subtree(pay_load, tvb, offset, -1, ett_sasp_dereg_req_sz, NULL, "DeReg Request"); /* Size */ proto_tree_add_item(dereg_req_data, hf_sasp_dereg_req_sz, tvb, offset, 2, ENC_BIG_ENDIAN); @@ -577,11 +571,9 @@ static void dissect_dereg_req(tvbuff_t *tvb, proto_tree *pay_load, guint32 offse static void dissect_dereg_rep(tvbuff_t *tvb, proto_tree *pay_load, guint32 offset) { - proto_item *dereg_rep; proto_tree *dereg_rep_tree; - dereg_rep = proto_tree_add_text(pay_load, tvb, offset, -1 , "Dereg Reply"); - dereg_rep_tree = proto_item_add_subtree(dereg_rep, ett_sasp_dereg_rep); + dereg_rep_tree = proto_tree_add_subtree(pay_load, tvb, offset, -1, ett_sasp_dereg_rep, NULL, "Dereg Reply"); /* Size */ proto_tree_add_item(dereg_rep_tree, hf_sasp_dereg_rep_sz, tvb, offset, 2, ENC_BIG_ENDIAN); @@ -594,12 +586,10 @@ static void dissect_dereg_rep(tvbuff_t *tvb, proto_tree *pay_load, guint32 offse static void dissect_sendwt(tvbuff_t *tvb, proto_tree *pay_load, guint32 offset) { - proto_item *sendwt; proto_tree *sendwt_tree; guint16 gwed_cnt, i; - sendwt = proto_tree_add_text(pay_load, tvb, offset, -1 , "Send Weight"); - sendwt_tree = proto_item_add_subtree(sendwt, ett_sasp_sendwt); + sendwt_tree = proto_tree_add_subtree(pay_load, tvb, offset, -1, ett_sasp_sendwt, NULL, "Send Weight"); /* Size */ proto_tree_add_item(sendwt_tree, hf_sasp_sendwt_sz, tvb, offset, 2, ENC_BIG_ENDIAN); @@ -618,12 +608,10 @@ static void dissect_sendwt(tvbuff_t *tvb, proto_tree *pay_load, guint32 offset) static void dissect_setmemstate_req(tvbuff_t *tvb, proto_tree *pay_load, guint32 offset) { - proto_item *setmemstate; proto_tree *setmemstate_req_data; guint16 gmsd_cnt, i; - setmemstate = proto_tree_add_text(pay_load, tvb, offset, -1 , "Set Mem State Request"); - setmemstate_req_data = proto_item_add_subtree(setmemstate, ett_sasp_setmemstate_req); + setmemstate_req_data = proto_tree_add_subtree(pay_load, tvb, offset, -1, ett_sasp_setmemstate_req, NULL, "Set Mem State Request"); /* Size */ proto_tree_add_item(setmemstate_req_data, hf_sasp_setmemstate_req_sz, tvb, offset, 2, ENC_BIG_ENDIAN); @@ -644,11 +632,9 @@ static void dissect_setmemstate_req(tvbuff_t *tvb, proto_tree *pay_load, guint32 static void dissect_setmemstate_rep(tvbuff_t *tvb, proto_tree *pay_load, guint32 offset) { - proto_item *setmemstate_rep; proto_tree *setmemstate_rep_tree; - setmemstate_rep = proto_tree_add_text(pay_load, tvb, offset, -1 , "Set Mem State Reply"); - setmemstate_rep_tree = proto_item_add_subtree(setmemstate_rep, ett_sasp_setmemstate_rep); + setmemstate_rep_tree = proto_tree_add_subtree(pay_load, tvb, offset, -1, ett_sasp_setmemstate_rep, NULL, "Set Mem State Reply"); /* Size */ proto_tree_add_item(setmemstate_rep_tree, hf_sasp_setmemstate_rep_sz, tvb, offset, 2, ENC_BIG_ENDIAN); @@ -715,13 +701,11 @@ static guint32 dissect_memdatacomp(tvbuff_t *tvb, proto_tree *pay_load, guint32 static guint32 dissect_grpdatacomp(tvbuff_t *tvb, proto_tree *pay_load, guint32 offset) { - proto_item *grpdatacomp; proto_tree *grpdatacomp_tree; guint8 LB_uid_len; guint8 grp_name_len; - grpdatacomp = proto_tree_add_text(pay_load, tvb, offset, -1 , "Group Data Component"); - grpdatacomp_tree = proto_item_add_subtree(grpdatacomp, ett_sasp_grpdatacomp); + grpdatacomp_tree = proto_tree_add_subtree(pay_load, tvb, offset, -1, ett_sasp_grpdatacomp, NULL, "Group Data Component"); /*Type*/ proto_tree_add_item(grpdatacomp_tree, hf_sasp_grpdatacomp, tvb, offset, 2, ENC_BIG_ENDIAN); @@ -760,13 +744,11 @@ static guint32 dissect_grpdatacomp(tvbuff_t *tvb, proto_tree *pay_load, guint32 static guint32 dissect_grp_memdatacomp(tvbuff_t *tvb, proto_tree *pay_load, guint32 offset) { - proto_item *grp_memdatacomp; proto_tree *grp_memdatacomp_tree; guint16 mem_cnt; guint16 i; - grp_memdatacomp = proto_tree_add_text(pay_load, tvb, offset, -1 , "Group Of Member Data"); - grp_memdatacomp_tree = proto_item_add_subtree(grp_memdatacomp, ett_sasp_grp_memdatacomp); + grp_memdatacomp_tree = proto_tree_add_subtree(pay_load, tvb, offset, -1, ett_sasp_grp_memdatacomp, NULL, "Group Of Member Data"); /* Group MEM Data */ proto_tree_add_item(grp_memdatacomp_tree, hf_sasp_grp_memdatacomp, tvb, offset, 2, ENC_BIG_ENDIAN); @@ -794,12 +776,10 @@ static guint32 dissect_grp_memdatacomp(tvbuff_t *tvb, proto_tree *pay_load, guin static void dissect_wt_req(tvbuff_t *tvb, proto_tree *pay_load, guint32 offset) { - proto_item *get_wt_data; proto_tree *get_wt_tree; guint16 gd_cnt, i; - get_wt_data = proto_tree_add_text(pay_load, tvb, offset, -1 , "Get Wt Req"); - get_wt_tree = proto_item_add_subtree(get_wt_data, ett_sasp_getwt); + get_wt_tree = proto_tree_add_subtree(pay_load, tvb, offset, -1, ett_sasp_getwt, NULL, "Get Wt Req"); /* Size */ proto_tree_add_item(get_wt_tree, hf_sasp_wt_req_sz, tvb, offset, 2, ENC_BIG_ENDIAN); @@ -818,12 +798,10 @@ static void dissect_wt_req(tvbuff_t *tvb, proto_tree *pay_load, guint32 offset) static void dissect_wt_rep(tvbuff_t *tvb, proto_tree *pay_load, guint32 offset) { - proto_item *wt_rep; proto_tree *wt_rep_tree; guint16 gwed_cnt, i; - wt_rep = proto_tree_add_text(pay_load, tvb, offset, -1 , "Get Weights Reply"); - wt_rep_tree = proto_item_add_subtree(wt_rep, ett_sasp_wt_rep); + wt_rep_tree = proto_tree_add_subtree(pay_load, tvb, offset, -1, ett_sasp_wt_rep, NULL, "Get Weights Reply"); /* Size */ proto_tree_add_item(wt_rep_tree, hf_sasp_wt_rep_sz, tvb, offset, 2, ENC_BIG_ENDIAN); @@ -859,11 +837,9 @@ static void dissect_setlbstate_req(tvbuff_t *tvb, proto_tree *pay_load, guint32 NULL }; - proto_item *setlbstate_req; proto_tree *setlbstate_req_tree; - setlbstate_req = proto_tree_add_text(pay_load, tvb, offset, -1 , "Set LB State Req"); - setlbstate_req_tree = proto_item_add_subtree(setlbstate_req, ett_sasp_setlbstate_req); + setlbstate_req_tree = proto_tree_add_subtree(pay_load, tvb, offset, -1, ett_sasp_setlbstate_req, NULL, "Set LB State Req"); /* Size*/ proto_tree_add_item(setlbstate_req_tree, hf_sasp_setlbstate_req_sz, @@ -894,11 +870,9 @@ static void dissect_setlbstate_req(tvbuff_t *tvb, proto_tree *pay_load, guint32 static void dissect_setlbstate_rep(tvbuff_t *tvb, proto_tree *pay_load, guint32 offset) { - proto_item *setlbstate_rep; proto_tree *setlbstate_rep_tree; - setlbstate_rep = proto_tree_add_text(pay_load, tvb, offset, -1 , "Set LB State Rep"); - setlbstate_rep_tree = proto_item_add_subtree(setlbstate_rep, ett_sasp_setlbstate_rep); + setlbstate_rep_tree = proto_tree_add_subtree(pay_load, tvb, offset, -1, ett_sasp_setlbstate_rep, NULL, "Set LB State Rep"); /* Size */ proto_tree_add_item(setlbstate_rep_tree, hf_sasp_setlbstate_rep_sz, @@ -913,14 +887,12 @@ static void dissect_setlbstate_rep(tvbuff_t *tvb, proto_tree *pay_load, guint32 static guint32 dissect_grp_memstatedatacomp(tvbuff_t *tvb, proto_tree *pay_load, guint32 offset) { - proto_item *grp_memstatedatacomp; proto_tree *grp_memstatedatacomp_tree; guint16 mem_cnt; guint16 i; - grp_memstatedatacomp = proto_tree_add_text(pay_load, tvb, offset, -1 , "Group Mem State Comp"); - grp_memstatedatacomp_tree = proto_item_add_subtree(grp_memstatedatacomp, - ett_sasp_grp_memstatedatacomp); + grp_memstatedatacomp_tree = proto_tree_add_subtree(pay_load, tvb, offset, -1, + ett_sasp_grp_memstatedatacomp, NULL, "Group Mem State Comp"); /* Type */ proto_tree_add_item(grp_memstatedatacomp_tree, hf_sasp_grp_memstatedatacomp, @@ -953,14 +925,12 @@ static guint32 dissect_grp_memstatedatacomp(tvbuff_t *tvb, proto_tree *pay_load, static guint32 dissect_memstatedatacomp(tvbuff_t *tvb, proto_tree *pay_load, guint32 offset) { proto_tree *memstatedatacomp_tree; - proto_item *memstatedatacomp; proto_tree *memdatacomp_tree; guint8 memstate_flag; offset = dissect_memdatacomp(tvb, pay_load, offset, &memdatacomp_tree); - memstatedatacomp = proto_tree_add_text(memdatacomp_tree, tvb, offset, -1 , "Member State Data"); - memstatedatacomp_tree = proto_item_add_subtree(memstatedatacomp, ett_sasp_memstatedatacomp); + memstatedatacomp_tree = proto_tree_add_subtree(memdatacomp_tree, tvb, offset, -1, ett_sasp_memstatedatacomp, NULL, "Member State Data"); /* Type */ proto_tree_add_item(memstatedatacomp_tree, hf_sasp_memstatedatacomp_instance, @@ -990,7 +960,6 @@ static guint32 dissect_memstatedatacomp(tvbuff_t *tvb, proto_tree *pay_load, gui static guint32 dissect_weight_entry_data_comp(tvbuff_t *tvb, proto_tree *pay_load, guint32 offset) { proto_tree *weight_entry_data_comp_tree; - proto_item *weight_entry_data_comp; static const int *wtflags[] = { &hf_sasp_wed_contactsuccess_flag, @@ -1002,9 +971,8 @@ static guint32 dissect_weight_entry_data_comp(tvbuff_t *tvb, proto_tree *pay_loa offset = dissect_memdatacomp(tvb, pay_load, offset, NULL); - weight_entry_data_comp = proto_tree_add_text(pay_load, tvb, offset, -1 , "Weight Entry Data"); - weight_entry_data_comp_tree = proto_item_add_subtree(weight_entry_data_comp, - ett_sasp_weight_entry_data_comp); + weight_entry_data_comp_tree = proto_tree_add_subtree(pay_load, tvb, offset, -1, + ett_sasp_weight_entry_data_comp, NULL, "Weight Entry Data"); /* Type */ proto_tree_add_item(weight_entry_data_comp_tree, hf_sasp_weight_entry_data_comp_type, @@ -1035,14 +1003,11 @@ static guint32 dissect_weight_entry_data_comp(tvbuff_t *tvb, proto_tree *pay_loa static guint32 dissect_grp_wt_entry_datacomp(tvbuff_t *tvb, proto_tree *pay_load, guint32 offset) { - proto_item *grp_wt_entry_datacomp; proto_tree *grp_wt_entry_datacomp_tree; guint16 wt_entry_cnt; guint16 i; - grp_wt_entry_datacomp = proto_tree_add_text(pay_load, tvb, offset, -1 , "Group of Wt Entry Data"); - grp_wt_entry_datacomp_tree = proto_item_add_subtree(grp_wt_entry_datacomp, - ett_sasp_grp_wt_entry_datacomp); + grp_wt_entry_datacomp_tree = proto_tree_add_subtree(pay_load, tvb, offset, -1, ett_sasp_grp_wt_entry_datacomp, NULL, "Group of Wt Entry Data"); /* Type */ proto_tree_add_item(grp_wt_entry_datacomp_tree, hf_sasp_grp_wt_entry_datacomp_type, diff --git a/epan/dissectors/packet-sbc.c b/epan/dissectors/packet-sbc.c index e23765094f..8e57f58942 100644 --- a/epan/dissectors/packet-sbc.c +++ b/epan/dissectors/packet-sbc.c @@ -116,7 +116,6 @@ dissect_sbc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) proto_item *ti; proto_tree *sbc_tree; proto_item *pitem; - proto_item *ritem; proto_tree *rtree; gint offset = 0; guint8 number_of_frames; @@ -199,9 +198,8 @@ dissect_sbc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) expected_speed_data = (frame_length * frequency) / (sbc_subbands * sbc_blocks); - ritem = proto_tree_add_text(sbc_tree, tvb, offset, 4 + frame_length, - "Frame: %3u/%3u", counter, number_of_frames); - rtree = proto_item_add_subtree(ritem, ett_sbc_list); + rtree = proto_tree_add_subtree_format(sbc_tree, tvb, offset, 4 + frame_length, + ett_sbc_list, NULL, "Frame: %3u/%3u", counter, number_of_frames); pitem = proto_tree_add_item(rtree, hf_sbc_syncword, tvb, offset, 1, ENC_BIG_ENDIAN); syncword = tvb_get_guint8(tvb, offset); @@ -210,32 +208,32 @@ dissect_sbc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } offset += 1; - proto_tree_add_item(ritem, hf_sbc_sampling_frequency, tvb, offset, 1, ENC_BIG_ENDIAN); - proto_tree_add_item(ritem, hf_sbc_blocks, tvb, offset, 1, ENC_BIG_ENDIAN); - proto_tree_add_item(ritem, hf_sbc_channel_mode, tvb, offset, 1, ENC_BIG_ENDIAN); - proto_tree_add_item(ritem, hf_sbc_allocation_method, tvb, offset, 1, ENC_BIG_ENDIAN); - proto_tree_add_item(ritem, hf_sbc_subbands, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(rtree, hf_sbc_sampling_frequency, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(rtree, hf_sbc_blocks, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(rtree, hf_sbc_channel_mode, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(rtree, hf_sbc_allocation_method, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(rtree, hf_sbc_subbands, tvb, offset, 1, ENC_BIG_ENDIAN); offset += 1; - proto_tree_add_item(ritem, hf_sbc_bitpool, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(rtree, hf_sbc_bitpool, tvb, offset, 1, ENC_BIG_ENDIAN); offset += 1; - proto_tree_add_item(ritem, hf_sbc_crc_check, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(rtree, hf_sbc_crc_check, tvb, offset, 1, ENC_BIG_ENDIAN); offset += 1; - proto_tree_add_item(ritem, hf_sbc_data, tvb, offset, frame_length, ENC_NA); + proto_tree_add_item(rtree, hf_sbc_data, tvb, offset, frame_length, ENC_NA); offset += frame_length; /* TODO: expert_info for invalid CRC */ - pitem = proto_tree_add_uint(ritem, hf_sbc_expected_data_speed, tvb, offset, 0, expected_speed_data / 1024); + pitem = proto_tree_add_uint(rtree, hf_sbc_expected_data_speed, tvb, offset, 0, expected_speed_data / 1024); proto_item_append_text(pitem, " KiB/s"); PROTO_ITEM_SET_GENERATED(pitem); frame_duration = (((double) frame_length / (double) expected_speed_data) * 1000.0); cummulative_frame_duration += frame_duration; - pitem = proto_tree_add_double(ritem, hf_sbc_frame_duration, tvb, offset, 0, frame_duration); + pitem = proto_tree_add_double(rtree, hf_sbc_frame_duration, tvb, offset, 0, frame_duration); proto_item_append_text(pitem, " ms"); PROTO_ITEM_SET_GENERATED(pitem); diff --git a/epan/dissectors/packet-sbus.c b/epan/dissectors/packet-sbus.c index 6ffa97f0c3..f70cc2330e 100644 --- a/epan/dissectors/packet-sbus.c +++ b/epan/dissectors/packet-sbus.c @@ -649,7 +649,7 @@ dissect_sbus(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_ { /* Set up structures needed to add the protocol subtree and manage it */ - proto_item *ti, *et, *dt, *hi, *cs; + proto_item *ti, *hi, *cs; proto_tree *sbus_tree, *ethsbus_tree, *sbusdata_tree; gint i; /*for CRC calculation*/ @@ -903,8 +903,7 @@ dissect_sbus(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_ sbus_tree = proto_item_add_subtree(ti, ett_sbus); /*Add subtree for Ether-S-Bus header*/ - et = proto_tree_add_text(sbus_tree, tvb, offset, 8, "Ether-S-Bus header"); - ethsbus_tree = proto_item_add_subtree(et, ett_sbus_ether); + ethsbus_tree = proto_tree_add_subtree(sbus_tree, tvb, offset, 8, ett_sbus_ether, NULL, "Ether-S-Bus header"); /* add an item to the subtree*/ sbus_eth_len = tvb_get_ntohl(tvb,offset); @@ -993,10 +992,8 @@ dissect_sbus(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_ hf_sbus_addr_rtc, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2; /*Add subtree for Data*/ - dt = proto_tree_add_text(sbus_tree, tvb, offset, - ((sbus_media_cnt) * 4),"Data"); - - sbusdata_tree = proto_item_add_subtree(dt, ett_sbus_data); + sbusdata_tree = proto_tree_add_subtree(sbus_tree, tvb, offset, + ((sbus_media_cnt) * 4), ett_sbus_data, NULL, "Data"); for (i=((sbus_media_cnt)); i>0; i--) { proto_tree_add_item(sbusdata_tree, hf_sbus_data_rtc, tvb, offset, @@ -1025,10 +1022,9 @@ dissect_sbus(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_ hf_sbus_fio_count, tvb, offset, 1, sbus_fio_cnt); offset += 1; /*Add subtree for Data*/ - dt = proto_tree_add_text(sbus_tree, tvb, offset, - sbus_media_cnt,"Data"); + sbusdata_tree = proto_tree_add_subtree(sbus_tree, tvb, offset, + sbus_media_cnt, ett_sbus_data, NULL, "Data"); - sbusdata_tree = proto_item_add_subtree(dt, ett_sbus_data); for (i=sbus_media_cnt; i>0; i--) { sbus_helper = 1; sbus_show_bin = 0; @@ -1066,9 +1062,8 @@ dissect_sbus(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_ proto_tree_add_text(sbus_tree, tvb, offset, 2, "Calendar week: %x, Week day: %x", sbus_helper, sbus_helper1); /*Add subtree for Data*/ - dt = proto_tree_add_text(sbus_tree, tvb, offset, - 8, "Clock data"); - sbusdata_tree = proto_item_add_subtree(dt, ett_sbus_data); + sbusdata_tree = proto_tree_add_subtree(sbus_tree, tvb, offset, + 8, ett_sbus_data, NULL, "Clock data"); proto_tree_add_item(sbusdata_tree, hf_sbus_week_day, tvb, offset, 2, ENC_BIG_ENDIAN); @@ -1107,10 +1102,9 @@ dissect_sbus(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_ hf_sbus_addr_68k, tvb, offset, 3, ENC_BIG_ENDIAN); offset += 3; /*Add subtree for Data*/ - dt = proto_tree_add_text(sbus_tree, tvb, offset, - ((sbus_media_cnt) * 4),"Program lines"); + sbusdata_tree = proto_tree_add_subtree(sbus_tree, tvb, offset, + ((sbus_media_cnt) * 4), ett_sbus_data, NULL, "Program lines"); - sbusdata_tree = proto_item_add_subtree(dt, ett_sbus_data); for (i=((sbus_media_cnt)); i>0; i--) { proto_tree_add_item(sbusdata_tree, hf_sbus_data_rtc, tvb, offset, @@ -1145,10 +1139,9 @@ dissect_sbus(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_ hf_sbus_addr_68k, tvb, offset, 3, ENC_BIG_ENDIAN); offset += 3; /*Add subtree for Data*/ - dt = proto_tree_add_text(sbus_tree, tvb, offset, - ((sbus_media_cnt) * 4),"Data (bytes)"); + sbusdata_tree = proto_tree_add_subtree(sbus_tree, tvb, offset, + ((sbus_media_cnt) * 4), ett_sbus_data, NULL, "Data (bytes)"); - sbusdata_tree = proto_item_add_subtree(dt, ett_sbus_data); for (i=sbus_media_cnt; i>0; i--) { proto_tree_add_item(sbusdata_tree, hf_sbus_data_byte, tvb, offset, @@ -1203,10 +1196,9 @@ dissect_sbus(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_ offset += 1; if (sbus_web_size > 1) { - dt = proto_tree_add_text(sbus_tree, tvb, offset, - (sbus_web_size - 1),"Data (bytes)"); + sbusdata_tree = proto_tree_add_subtree(sbus_tree, tvb, offset, + (sbus_web_size - 1), ett_sbus_data, NULL, "Data (bytes)"); - sbusdata_tree = proto_item_add_subtree(dt, ett_sbus_data); for (i=sbus_web_size -1 ; i>0; i--) { proto_tree_add_item(sbusdata_tree, hf_sbus_data_byte, tvb, offset, @@ -1507,9 +1499,8 @@ dissect_sbus(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_ case SBUS_RD_PROGRAM_LINE: case SBUS_RD_USER_EEPROM_REGISTER: /*Add subtree for Data*/ - dt = proto_tree_add_text(sbus_tree, tvb, offset, - ((request_val->count) * 4),"Data"); - sbusdata_tree = proto_item_add_subtree(dt, ett_sbus_data); + sbusdata_tree = proto_tree_add_subtree(sbus_tree, tvb, offset, + ((request_val->count) * 4), ett_sbus_data, NULL, "Data"); for (i=(request_val->count); i>0; i--) { proto_tree_add_item(sbusdata_tree, hf_sbus_data_rtc, tvb, offset, @@ -1530,9 +1521,8 @@ dissect_sbus(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_ case SBUS_RD_INPUT: case SBUS_RD_OUTPUT: /*Add subtree for Data*/ - dt = proto_tree_add_text(sbus_tree, tvb, offset, - (((request_val->count) + 7) / 8), "Data"); - sbusdata_tree = proto_item_add_subtree(dt, ett_sbus_data); + sbusdata_tree = proto_tree_add_subtree(sbus_tree, tvb, offset, + (((request_val->count) + 7) / 8), ett_sbus_data, NULL, "Data"); for (i=(((request_val->count) + 7) / 8); i>0; i--) { sbus_helper = 1; @@ -1571,9 +1561,8 @@ dissect_sbus(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_ proto_tree_add_text(sbus_tree, tvb, offset, 2, "Calendar week: %x, Week day: %x", sbus_helper, sbus_helper1); /*Add subtree for Data*/ - dt = proto_tree_add_text(sbus_tree, tvb, offset, - 8, "Clock data"); - sbusdata_tree = proto_item_add_subtree(dt, ett_sbus_data); + sbusdata_tree = proto_tree_add_subtree(sbus_tree, tvb, offset, + 8, ett_sbus_data, NULL, "Clock data"); proto_tree_add_item(sbusdata_tree, hf_sbus_week_day, tvb, offset, 2, ENC_BIG_ENDIAN); @@ -1624,9 +1613,8 @@ dissect_sbus(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_ /* Response for Status Flags*/ case SBUS_RD_STATUSFLAG_ACCU: /*Add subtree for Data*/ - dt = proto_tree_add_text(sbus_tree, tvb, offset, - 1,"ACCU and arithmetic status"); - sbusdata_tree = proto_item_add_subtree(dt, ett_sbus_data); + sbusdata_tree = proto_tree_add_subtree(sbus_tree, tvb, offset, + 1, ett_sbus_data, NULL, "ACCU and arithmetic status"); proto_tree_add_item(sbusdata_tree, hf_sbus_flags_accu, tvb, offset, 1, ENC_BIG_ENDIAN); @@ -1642,10 +1630,9 @@ dissect_sbus(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_ /* Response for Read byte */ case SBUS_RD_BYTE: /*Add subtree for Data*/ - dt = proto_tree_add_text(sbus_tree, tvb, offset, - (request_val->count),"Data (bytes)"); + sbusdata_tree = proto_tree_add_subtree(sbus_tree, tvb, offset, + (request_val->count), ett_sbus_data, NULL, "Data (bytes)"); - sbusdata_tree = proto_item_add_subtree(dt, ett_sbus_data); for (i=(request_val->count); i>0; i--) { proto_tree_add_item(sbusdata_tree, hf_sbus_data_byte, tvb, offset, @@ -1657,10 +1644,9 @@ dissect_sbus(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_ /* Response for Read Index register */ case SBUS_RD_INDEX_REGISTER: /*Add subtree for Data*/ - dt = proto_tree_add_text(sbus_tree, tvb, offset, - 2,"Data (hex bytes)"); + sbusdata_tree = proto_tree_add_subtree(sbus_tree, tvb, offset, + 2, ett_sbus_data, NULL, "Data (hex bytes)"); - sbusdata_tree = proto_item_add_subtree(dt, ett_sbus_data); for (i=0; i<2; i++) { /*2 bytes*/ proto_tree_add_item(sbusdata_tree, hf_sbus_data_byte_hex, tvb, offset, @@ -1701,9 +1687,8 @@ dissect_sbus(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_ if (request_val->sysinfo == 0x00){ /*sysinfo 0*/ offset += 1; /* this byte is always 0x01*/ /*Add subtree for Data*/ - dt = proto_tree_add_text(sbus_tree, tvb, offset, - 1,"System info"); - sbusdata_tree = proto_item_add_subtree(dt, ett_sbus_data); + sbusdata_tree = proto_tree_add_subtree(sbus_tree, tvb, offset, + 1, ett_sbus_data, NULL, "System info"); proto_tree_add_item(sbusdata_tree, hf_sbus_sysinfo0_1, tvb, offset, 1, ENC_BIG_ENDIAN); @@ -1743,10 +1728,9 @@ dissect_sbus(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_ 1, sbus_web_seq); offset += 1; - dt = proto_tree_add_text(sbus_tree, tvb, offset, - (sbus_web_size - 2),"Data (bytes)"); + sbusdata_tree = proto_tree_add_subtree(sbus_tree, tvb, offset, + (sbus_web_size - 2), ett_sbus_data, NULL, "Data (bytes)"); - sbusdata_tree = proto_item_add_subtree(dt, ett_sbus_data); for (i=sbus_web_size - 2; i>0; i--) { proto_tree_add_item(sbusdata_tree, hf_sbus_data_byte, tvb, offset, diff --git a/epan/dissectors/packet-sccp.c b/epan/dissectors/packet-sccp.c index ce912feb99..34b27b76ec 100644 --- a/epan/dissectors/packet-sccp.c +++ b/epan/dissectors/packet-sccp.c @@ -1697,11 +1697,10 @@ dissect_sccp_global_title(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g /* Shift GTI to where we can work with it */ gti >>= GTI_SHIFT; - gt_item = proto_tree_add_text(tree, tvb, offset, length, + gt_tree = proto_tree_add_subtree_format(tree, tvb, offset, length, + called ? ett_sccp_called_gt : ett_sccp_calling_gt, >_item, "Global Title 0x%x (%u byte%s)", gti, length, plurality(length,"", "s")); - gt_tree = proto_item_add_subtree(gt_item, called ? ett_sccp_called_gt - : ett_sccp_calling_gt); /* Decode Transation Type (if present) */ if ((gti == AI_GTI_TT) || @@ -1841,8 +1840,8 @@ static void dissect_sccp_called_calling_param(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint length, gboolean called) { - proto_item *call_item = 0, *call_ai_item = 0, *item, *hidden_item, *expert_item; - proto_tree *call_tree = 0, *call_ai_tree = 0; + proto_item *call_ai_item, *item, *hidden_item, *expert_item; + proto_tree *call_tree, *call_ai_tree; guint offset; guint8 national = 0xFFU, routing_ind, gti, pci, ssni, ssn; tvbuff_t *gt_tvb; @@ -1850,16 +1849,15 @@ dissect_sccp_called_calling_param(tvbuff_t *tvb, proto_tree *tree, packet_info * const char *ssn_dissector_short_name = NULL; const char *tcap_ssn_dissector_short_name = NULL; - call_item = proto_tree_add_text(tree, tvb, 0, length, + call_tree = proto_tree_add_subtree_format(tree, tvb, 0, length, + called ? ett_sccp_called : ett_sccp_calling, NULL, "%s Party address (%u byte%s)", called ? "Called" : "Calling", length, plurality(length, "", "s")); - call_tree = proto_item_add_subtree(call_item, called ? ett_sccp_called : ett_sccp_calling); - call_ai_item = proto_tree_add_text(call_tree, tvb, 0, + call_ai_tree = proto_tree_add_subtree(call_tree, tvb, 0, ADDRESS_INDICATOR_LENGTH, - "Address Indicator"); - call_ai_tree = proto_item_add_subtree(call_ai_item, called ? ett_sccp_called_ai : ett_sccp_calling_ai); + called ? ett_sccp_called_ai : ett_sccp_calling_ai, &call_ai_item, "Address Indicator"); if (decode_mtp3_standard == ANSI_STANDARD) { national = tvb_get_guint8(tvb, 0) & ANSI_NATIONAL_MASK; @@ -2187,17 +2185,14 @@ static void dissect_sccp_sequencing_segmenting_param(tvbuff_t *tvb, proto_tree *tree, guint length) { guint8 rsn, ssn; - proto_item *param_item; proto_tree *param_tree; ssn = tvb_get_guint8(tvb, 0) >> 1; rsn = tvb_get_guint8(tvb, SEQUENCING_SEGMENTING_SSN_LENGTH) >> 1; - param_item = proto_tree_add_text(tree, tvb, 0, length, "%s", + param_tree = proto_tree_add_subtree(tree, tvb, 0, length, ett_sccp_sequencing_segmenting, NULL, val_to_str(PARAMETER_SEQUENCING_SEGMENTING, sccp_parameter_values, "Unknown: %d")); - param_tree = proto_item_add_subtree(param_item, - ett_sccp_sequencing_segmenting); proto_tree_add_uint(param_tree, hf_sccp_sequencing_segmenting_ssn, tvb, 0, SEQUENCING_SEGMENTING_SSN_LENGTH, ssn); @@ -2396,13 +2391,11 @@ dissect_sccp_data_param(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) static void dissect_sccp_segmentation_param(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint length) { - proto_item *param_item; proto_tree *param_tree; - param_item = proto_tree_add_text(tree, tvb, 0, length, "%s", + param_tree = proto_tree_add_subtree(tree, tvb, 0, length, ett_sccp_segmentation, NULL, val_to_str(PARAMETER_SEGMENTATION, sccp_parameter_values, "Unknown: %d")); - param_tree = proto_item_add_subtree(param_item, ett_sccp_segmentation); proto_tree_add_item(param_tree, hf_sccp_segmentation_first, tvb, 0, 1, ENC_NA); proto_tree_add_item(param_tree, hf_sccp_segmentation_class, tvb, 0, 1, ENC_NA); @@ -2443,14 +2436,11 @@ dissect_sccp_isni_param(tvbuff_t *tvb, proto_tree *tree, guint length) { guint8 ti; guint offset = 0; - proto_item *param_item; proto_tree *param_tree; /* Create a subtree for ISNI Routing Control */ - param_item = proto_tree_add_text(tree, tvb, offset, ANSI_ISNI_ROUTING_CONTROL_LENGTH, - "ISNI Routing Control"); - param_tree = proto_item_add_subtree(param_item, - ett_sccp_ansi_isni_routing_control); + param_tree = proto_tree_add_subtree(tree, tvb, offset, ANSI_ISNI_ROUTING_CONTROL_LENGTH, + ett_sccp_ansi_isni_routing_control, NULL, "ISNI Routing Control"); proto_tree_add_item(param_tree, hf_sccp_ansi_isni_mi, tvb, offset, ANSI_ISNI_ROUTING_CONTROL_LENGTH, ENC_NA); diff --git a/epan/dissectors/packet-scriptingservice.c b/epan/dissectors/packet-scriptingservice.c index a241a00efa..c630ce5565 100644 --- a/epan/dissectors/packet-scriptingservice.c +++ b/epan/dissectors/packet-scriptingservice.c @@ -177,15 +177,10 @@ dissect_ssprotocol(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *tree, col_set_str(pinfo->cinfo, COL_PROTOCOL, "SSP"); - /* In the interest of speed, if "tree" is NULL, don't do any work not - necessary to generate protocol tree items. */ - if (tree) { - /* create the ssprotocol protocol tree */ - ssprotocol_item = proto_tree_add_item(tree, proto_ssprotocol, message_tvb, 0, -1, ENC_NA); - ssprotocol_tree = proto_item_add_subtree(ssprotocol_item, ett_ssprotocol); - } else { - ssprotocol_tree = NULL; - }; + /* create the ssprotocol protocol tree */ + ssprotocol_item = proto_tree_add_item(tree, proto_ssprotocol, message_tvb, 0, -1, ENC_NA); + ssprotocol_tree = proto_item_add_subtree(ssprotocol_item, ett_ssprotocol); + /* dissect the message */ return dissect_ssprotocol_message(message_tvb, pinfo, ssprotocol_tree); } diff --git a/epan/dissectors/packet-scsi-mmc.c b/epan/dissectors/packet-scsi-mmc.c index ccf86dff07..3c3f334660 100644 --- a/epan/dissectors/packet-scsi-mmc.c +++ b/epan/dissectors/packet-scsi-mmc.c @@ -429,15 +429,12 @@ dissect_mmc4_getconfiguration (tvbuff_t *tvb_a, packet_info *pinfo, switch(feature){ case 0x0000: /* profile list */ while(try_offset<(old_offset+additional_length)){ - proto_item *it=NULL; - proto_tree *tr=NULL; + proto_item *it; + proto_tree *tr; guint16 profile; guint8 cur_profile; - if(tree){ - it=proto_tree_add_text(tree, try_tvb, try_offset, 4, "Profile:"); - tr=proto_item_add_subtree(it, ett_scsi_mmc_profile); - } + tr=proto_tree_add_subtree(tree, try_tvb, try_offset, 4, ett_scsi_mmc_profile, &it, "Profile:"); profile=tvb_get_ntohs(try_tvb, try_offset); proto_tree_add_item (tr, hf_scsi_mmc_feature_profile, try_tvb, try_offset, 2, ENC_BIG_ENDIAN); diff --git a/epan/dissectors/packet-scsi-osd.c b/epan/dissectors/packet-scsi-osd.c index 73a71fd2aa..052ea1fcb7 100644 --- a/epan/dissectors/packet-scsi-osd.c +++ b/epan/dissectors/packet-scsi-osd.c @@ -544,8 +544,7 @@ dissect_osd_attributes_list(packet_info *pinfo, tvbuff_t *tvb, int offset, } if ((guint32)(offset-start_offset)+attribute_entry_length>length) break; - ti = proto_tree_add_text(tree, tvb, offset, attribute_entry_length, "Attribute:"); - tt = proto_item_add_subtree(ti, ett_osd_attribute); + tt = proto_tree_add_subtree(tree, tvb, offset, attribute_entry_length, ett_osd_attribute, &ti, "Attribute:"); switch (type) { case 0x01: /* retrieving attributes 7.1.3.2 */ @@ -589,16 +588,14 @@ dissect_osd_attributes_list(packet_info *pinfo, tvbuff_t *tvb, int offset, static void dissect_osd_option(tvbuff_t *tvb, int offset, proto_tree *parent_tree) { - proto_tree *tree = NULL; - proto_item *it = NULL; + proto_tree *tree; + proto_item *it; guint8 option; option = tvb_get_guint8(tvb, offset); - if (parent_tree) { - it = proto_tree_add_item(parent_tree, hf_scsi_osd_option, tvb, offset, 1, ENC_BIG_ENDIAN); - tree = proto_item_add_subtree(it, ett_osd_option); - } + it = proto_tree_add_item(parent_tree, hf_scsi_osd_option, tvb, offset, 1, ENC_BIG_ENDIAN); + tree = proto_item_add_subtree(it, ett_osd_option); proto_tree_add_item(tree, hf_scsi_osd_option_dpo, tvb, offset, 1, ENC_BIG_ENDIAN); if (option&0x10) { @@ -689,16 +686,12 @@ static int dissect_osd_attribute_parameters(packet_info *pinfo, tvbuff_t *tvb, int offset, proto_tree *parent_tree, scsi_task_data_t *cdata) { guint8 gsatype = 0; - proto_item *item = NULL; - proto_tree *tree = NULL; + proto_tree *tree; scsi_osd_extra_data_t *extra_data = NULL; gboolean osd2; - if (parent_tree) { - item = proto_tree_add_text(parent_tree, tvb, offset, 28, - "Attribute Parameters"); - tree = proto_item_add_subtree(item, ett_osd_attribute_parameters); - } + tree = proto_tree_add_subtree(parent_tree, tvb, offset, 28, + ett_osd_attribute_parameters, NULL, "Attribute Parameters"); if (cdata && cdata->itlq && cdata->itlq->extra_data) { extra_data = (scsi_osd_extra_data_t *)cdata->itlq->extra_data; @@ -792,7 +785,6 @@ dissect_osd_attribute_data_out(packet_info *pinfo, tvbuff_t *tvb, int offset _U_ { guint8 gsatype = 0; proto_tree *subtree; - proto_item *item; scsi_osd_extra_data_t *extra_data = NULL; if (cdata && cdata->itlq && cdata->itlq->extra_data) { @@ -808,13 +800,13 @@ dissect_osd_attribute_data_out(packet_info *pinfo, tvbuff_t *tvb, int offset _U_ break; case 3: /* 5.2.2.3 attribute list */ if (extra_data->u.al.get_list_length) { - item = proto_tree_add_text(tree, tvb, extra_data->u.al.get_list_offset, extra_data->u.al.get_list_length, "Get Attributes Segment"); - subtree= proto_item_add_subtree(item, ett_osd_get_attributes); + subtree = proto_tree_add_subtree(tree, tvb, extra_data->u.al.get_list_offset, extra_data->u.al.get_list_length, + ett_osd_get_attributes, NULL, "Get Attributes Segment"); dissect_osd_attributes_list(pinfo, tvb, extra_data->u.al.get_list_offset, subtree, lun_info, extra_data->osd2); } if (extra_data->u.al.set_list_length) { - item = proto_tree_add_text(tree, tvb, extra_data->u.al.set_list_offset, extra_data->u.al.set_list_length, "Set Attributes Segment"); - subtree= proto_item_add_subtree(item, ett_osd_set_attributes); + subtree = proto_tree_add_subtree(tree, tvb, extra_data->u.al.set_list_offset, extra_data->u.al.set_list_length, + ett_osd_get_attributes, NULL, "Set Attributes Segment"); dissect_osd_attributes_list(pinfo, tvb, extra_data->u.al.set_list_offset, subtree, lun_info, extra_data->osd2); } break; @@ -1113,15 +1105,11 @@ dissect_osd_permissions(tvbuff_t *tvb, int offset, proto_tree *parent_tree) static void dissect_osd_capability(tvbuff_t *tvb, int offset, proto_tree *parent_tree) { - proto_item *item = NULL; - proto_tree *tree = NULL; + proto_tree *tree; guint8 format; - if (parent_tree) { - item = proto_tree_add_text(parent_tree, tvb, offset, 80, - "Capability"); - tree = proto_item_add_subtree(item, ett_osd_capability); - } + tree = proto_tree_add_subtree(parent_tree, tvb, offset, 80, + ett_osd_capability, NULL, "Capability"); /* capability format */ proto_tree_add_item(tree, hf_scsi_osd_capability_format, tvb, offset, 1, ENC_BIG_ENDIAN); @@ -1186,14 +1174,10 @@ dissect_osd_capability(tvbuff_t *tvb, int offset, proto_tree *parent_tree) static int dissect_osd_security_parameters(tvbuff_t *tvb, int offset, proto_tree *parent_tree) { - proto_item *item = NULL; - proto_tree *tree = NULL; + proto_tree *tree; - if (parent_tree) { - item = proto_tree_add_text(parent_tree, tvb, offset, 40, - "Security Parameters"); - tree = proto_item_add_subtree(item, ett_osd_security_parameters); - } + tree = proto_tree_add_subtree(parent_tree, tvb, offset, 40, + ett_osd_security_parameters, NULL, "Security Parameters"); /* request integrity check value */ proto_tree_add_item(tree, hf_scsi_osd_ricv, tvb, offset, 20, ENC_NA); @@ -1695,8 +1679,8 @@ dissect_osd_list(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, if (attr_list_end>additional_length+8) break; while (offset+16<attr_list_end) { guint32 attribute_length = tvb_get_ntohs(tvb, offset+14); - proto_item *att_item = proto_tree_add_text(subtree, tvb, offset, 16+attribute_length, "Attribute:"); - proto_tree *att_tree = proto_item_add_subtree(att_item, ett_osd_attribute); + proto_item *att_item; + proto_tree *att_tree = proto_tree_add_subtree(subtree, tvb, offset, 16+attribute_length, ett_osd_attribute, &att_item, "Attribute:"); offset = dissect_osd_attribute_list_entry(pinfo, tvb, att_tree, att_item, offset, lun_info, TRUE); } offset = attr_list_end; diff --git a/epan/dissectors/packet-scsi-sbc.c b/epan/dissectors/packet-scsi-sbc.c index 87c309532a..ff30e6ba01 100644 --- a/epan/dissectors/packet-scsi-sbc.c +++ b/epan/dissectors/packet-scsi-sbc.c @@ -1166,8 +1166,7 @@ dissect_sbc_unmap (tvbuff_t *tvb, packet_info *pinfo _U_, gint64 lba; gint32 num_blocks; - it = proto_tree_add_text(tree, tvb, offset, 16, "UNMAP Block Descriptor: LBA "); - tr = proto_item_add_subtree(it, ett_scsi_unmap_block_descriptor); + tr = proto_tree_add_subtree(tree, tvb, offset, 16, ett_scsi_unmap_block_descriptor, &it, "UNMAP Block Descriptor: LBA "); proto_tree_add_item (tr, hf_scsi_sbc_unmap_lba, tvb, offset, 8, ENC_BIG_ENDIAN); lba = tvb_get_ntoh64 (tvb, offset); @@ -1489,8 +1488,7 @@ dissect_sbc_serviceactionin16 (tvbuff_t *tvb, packet_info *pinfo _U_, guint32 num_blocks; guint8 type; - it = proto_tree_add_text(tree, tvb, offset, 16, "LBA Status Descriptor: "); - tr = proto_item_add_subtree(it, ett_scsi_lba_status_descriptor); + tr = proto_tree_add_subtree(tree, tvb, offset, 16, ett_scsi_lba_status_descriptor, &it, "LBA Status Descriptor: "); proto_tree_add_item (tr, hf_scsi_sbc_get_lba_status_lba, tvb, offset, 8, ENC_BIG_ENDIAN); lba = tvb_get_ntoh64(tvb, offset); diff --git a/epan/dissectors/packet-scsi.c b/epan/dissectors/packet-scsi.c index 1b1cc514b9..f2d5458432 100644 --- a/epan/dissectors/packet-scsi.c +++ b/epan/dissectors/packet-scsi.c @@ -2676,10 +2676,10 @@ dissect_scsi_evpd(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, if (tree) { pcode = tvb_get_guint8(tvb, offset+1); plen = tvb_get_guint8(tvb, offset+3); - ti = proto_tree_add_text(tree, tvb, offset, plen+4, "Page Code: %s", + evpd_tree = proto_tree_add_subtree_format(tree, tvb, offset, plen+4, + ett_scsi_page, NULL, "Page Code: %s", val_to_str(pcode, scsi_evpd_pagecode_val, "Unknown (0x%08x)")); - evpd_tree = proto_item_add_subtree(ti, ett_scsi_page); proto_tree_add_item(evpd_tree, hf_scsi_inq_qualifier, tvb, offset, 1, ENC_BIG_ENDIAN); @@ -2848,13 +2848,11 @@ dissect_scsi_cmddt(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint offset, guint tot_len _U_) { proto_tree *cmdt_tree; - proto_item *ti; guint plen; if (tree) { plen = tvb_get_guint8(tvb, offset+5); - ti = proto_tree_add_text(tree, tvb, offset, plen, "Command Data"); - cmdt_tree = proto_item_add_subtree(ti, ett_scsi_page); + cmdt_tree = proto_tree_add_subtree_format(tree, tvb, offset, plen, ett_scsi_page, NULL, "Command Data"); proto_tree_add_item(cmdt_tree, hf_scsi_inq_qualifier, tvb, offset, 1, ENC_BIG_ENDIAN); @@ -3317,7 +3315,6 @@ dissect_spc_extcopy(tvbuff_t *tvb, packet_info *pinfo _U_, guint16 cscd_desc_list_len, seg_desc_len; guint32 /*param_list_len,*/ seg_desc_list_len, inline_data_len, i; proto_tree *cscds_tree = NULL, *dev_tree = NULL, *cscd_tree = NULL, *segs_tree = NULL, *seg_tree = NULL, *seg_param_tree = NULL; - proto_item *ti; if (isreq && iscdb) { proto_tree_add_item(tree, hf_scsi_spc_xcopy_service, tvb, offset, 1, ENC_NA); @@ -3363,18 +3360,17 @@ dissect_spc_extcopy(tvbuff_t *tvb, packet_info *pinfo _U_, inline_data_len = tvb_get_ntohl(tvb, offset); offset += 4; if (cscd_desc_list_len > 0) { - ti = proto_tree_add_text(tree, tvb, offset, cscd_desc_list_len, "CSCD (Copy Source and Copy Destination) descriptors (%u bytes)", cscd_desc_list_len); - cscds_tree = proto_item_add_subtree(ti, ett_scsi_xcopy_cscds); + cscds_tree = proto_tree_add_subtree_format(tree, tvb, offset, cscd_desc_list_len, ett_scsi_xcopy_cscds, NULL, + "CSCD (Copy Source and Copy Destination) descriptors (%u bytes)", cscd_desc_list_len); i = 1; while(cscd_desc_list_len > 0) { cscd_desc_type = tvb_get_guint8(tvb, offset); if (cscd_desc_type == 0xEA || cscd_desc_type == 0xEB) { /* both types occupy 64 bytes overall, everything else is 32 bytes */ - ti = proto_tree_add_text(cscds_tree, tvb, offset, 64, "CSCD descriptor #%u", i); + cscd_tree = proto_tree_add_subtree_format(cscds_tree, tvb, offset, 64, ett_scsi_xcopy_cscd, NULL, "CSCD descriptor #%u", i); } else { - ti = proto_tree_add_text(cscds_tree, tvb, offset, 32, "CSCD descriptor #%u", i); + cscd_tree = proto_tree_add_subtree_format(cscds_tree, tvb, offset, 32, ett_scsi_xcopy_cscd, NULL, "CSCD descriptor #%u", i); } i++; - cscd_tree = proto_item_add_subtree(ti, ett_scsi_xcopy_cscd); proto_tree_add_item(cscd_tree, hf_scsi_spc_xcopy_cscd_desc_type_code, tvb, offset, 1, ENC_NA); offset += 1; proto_tree_add_bitmask(cscd_tree, tvb, offset, hf_scsi_spc_xcopy_per_dev_type_byte, ett_xcopy_per_dev_type, per_dev_type_bitmask_fields, ENC_NA); @@ -3400,8 +3396,7 @@ dissect_spc_extcopy(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree_add_text(cscd_tree, tvb, offset, des_len, "WWN: %s", tvb_fcwwn_to_str(tvb, offset)); } offset += 20; - ti = proto_tree_add_text(cscd_tree, tvb, offset, 4, "Device type specific parameters"); - dev_tree = proto_item_add_subtree(ti, ett_scsi_xcopy_dev_params); + dev_tree = proto_tree_add_subtree(cscd_tree, tvb, offset, 4, ett_scsi_xcopy_dev_params, NULL, "Device type specific parameters"); if (dev_type == BLOCK_DEV_0 || dev_type == BLOCK_DEV_4 || dev_type == BLOCK_DEV_5 || dev_type == BLOCK_DEV_7 || dev_type == BLOCK_DEV_E) { proto_tree_add_text(dev_tree, tvb, offset, 1, "Reserved|PAD|Reserved"); offset += 1; /*TODO: dissect this byte */ @@ -3418,14 +3413,14 @@ dissect_spc_extcopy(tvbuff_t *tvb, packet_info *pinfo _U_, } } if (seg_desc_list_len > 0) { - ti = proto_tree_add_text(tree, tvb, offset, seg_desc_list_len, "Segment descriptor list (%u bytes)", seg_desc_list_len); - segs_tree = proto_item_add_subtree(ti, ett_scsi_xcopy_segs); + segs_tree = proto_tree_add_subtree_format(tree, tvb, offset, seg_desc_list_len, + ett_scsi_xcopy_segs, NULL, "Segment descriptor list (%u bytes)", seg_desc_list_len); i = 1; while(seg_desc_list_len > 0) { seg_desc_len = tvb_get_ntohs(tvb, offset + 2); - ti = proto_tree_add_text(segs_tree, tvb, offset, seg_desc_len + 4, "Segment descriptor #%u", i); + seg_tree = proto_tree_add_subtree_format(segs_tree, tvb, offset, seg_desc_len + 4, + ett_scsi_xcopy_seg, NULL, "Segment descriptor #%u", i); i++; - seg_tree = proto_item_add_subtree(ti, ett_scsi_xcopy_seg); proto_tree_add_item(seg_tree, hf_scsi_spc_xcopy_seg_desc_type, tvb, offset, 1, ENC_NA); seg_type = tvb_get_guint8(tvb, offset); offset += 1; @@ -3438,8 +3433,8 @@ dissect_spc_extcopy(tvbuff_t *tvb, packet_info *pinfo _U_, offset += 2; proto_tree_add_item(seg_tree, hf_scsi_spc_xcopy_seg_des_dest_desc_id, tvb, offset, 2, ENC_NA); offset += 2; - ti = proto_tree_add_text(seg_tree, tvb, offset, seg_desc_len - 4, "Segment descriptor parameters"); - seg_param_tree = proto_item_add_subtree(ti, ett_scsi_xcopy_seg_param); + seg_param_tree = proto_tree_add_subtree(seg_tree, tvb, offset, seg_desc_len - 4, + ett_scsi_xcopy_seg_param, NULL, "Segment descriptor parameters"); seg_desc_list_len -= (seg_desc_len + 4); if (seg_type == BLOCK_TO_BLOCK) { proto_tree_add_item(seg_param_tree, hf_scsi_reserved_16, tvb, offset, 2, ENC_NA); @@ -3575,18 +3570,15 @@ dissect_scsi_log_page(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, }; guint16 pagelen, pagecode; guint8 paramlen; - proto_tree *log_tree = NULL; - proto_item *ti = NULL; + proto_tree *log_tree; + proto_item *ti; guint old_offset = offset; const log_pages_t *log_page; pagecode = tvb_get_guint8(tvb, offset) & 0x3f; - if (tree) { - ti = proto_tree_add_text(tree, tvb, offset, -1, - "Log Page: %s", val_to_str(pagecode, scsi_log_page_val, "Unknown (0x%04x)")); - log_tree = proto_item_add_subtree(ti, ett_scsi_log); - } + log_tree = proto_tree_add_subtree_format(tree, tvb, offset, -1, ett_scsi_log, &ti, + "Log Page: %s", val_to_str(pagecode, scsi_log_page_val, "Unknown (0x%04x)")); /* page code */ proto_tree_add_bitmask(log_tree, tvb, offset, hf_scsi_log_pc_flags, ett_scsi_log_pc, pcflags_fields, ENC_BIG_ENDIAN); @@ -4287,7 +4279,6 @@ dissect_scsi_modepage(tvbuff_t *tvb, packet_info *pinfo, guint16 plen; guint8 pcode, spf, subpcode = 0; proto_tree *tree; - proto_item *ti; const value_string *modepage_val; int hf_pagecode; gboolean (*dissect_modepage)(tvbuff_t *, packet_info *, proto_tree *, @@ -4351,11 +4342,10 @@ dissect_scsi_modepage(tvbuff_t *tvb, packet_info *pinfo, dissect_modepage = dissect_scsi_spc_modepage; } - ti = proto_tree_add_text(scsi_tree, tvb, offset, plen + (spf ? 4 : 2), - "%s Mode Page", + tree = proto_tree_add_subtree_format(scsi_tree, tvb, offset, plen + (spf ? 4 : 2), + ett_scsi_page, NULL, "%s Mode Page", val_to_str(pcode & SCSI_MS_PCODE_BITS, modepage_val, "Unknown (0x%08x)")); - tree = proto_item_add_subtree(ti, ett_scsi_page); proto_tree_add_item(tree, hf_scsi_modepage_ps, tvb, offset, 1, ENC_BIG_ENDIAN); proto_tree_add_item(tree, hf_scsi_modepage_spf, tvb, offset, 1, ENC_BIG_ENDIAN); proto_tree_add_item(tree, hf_pagecode, tvb, offset, 1, ENC_BIG_ENDIAN); @@ -4979,8 +4969,8 @@ dissect_spc_reportdeviceidentifier(tvbuff_t *tvb _U_, packet_info *pinfo _U_, void dissect_scsi_lun(proto_tree *tree, tvbuff_t *tvb, guint offset) { - proto_item *ti = proto_tree_add_text(tree, tvb, offset, 8, "LUN: "); - proto_tree *tt = proto_item_add_subtree(ti, ett_scsi_lun); + proto_item *ti; + proto_tree *tt = proto_tree_add_subtree(tree, tvb, offset, 8, ett_scsi_lun, &ti, "LUN: "); guint8 address_mode; guint16 lun = 0; @@ -5142,11 +5132,8 @@ dissect_spc_mgmt_protocol_in(tvbuff_t *tvb_a, packet_info *pinfo _U_, if (ctdp) { proto_tree *tr; - it = proto_tree_add_text(tree, try_tvb, try_offset, - 12, "Timeout Descriptor"); - - tr = proto_item_add_subtree(it, - ett_timeout_descriptor); + tr = proto_tree_add_subtree(tree, try_tvb, try_offset, + 12, ett_timeout_descriptor, NULL, "Timeout Descriptor"); proto_tree_add_item(tr, hf_scsi_report_opcodes_tdl, try_tvb, try_offset, 2, ENC_BIG_ENDIAN); @@ -5167,11 +5154,9 @@ dissect_spc_mgmt_protocol_in(tvbuff_t *tvb_a, packet_info *pinfo _U_, while (length >= 20) { proto_tree *tr; - it = proto_tree_add_text(tree, try_tvb, try_offset, - 20, "Command Descriptor: %s", + tr = proto_tree_add_subtree_format(tree, try_tvb, try_offset, + 20, ett_command_descriptor, NULL, "Command Descriptor: %s", val_to_str_ext_const(tvb_get_guint8(try_tvb, try_offset+0), csdata->cdb_vals_ext, "Unknown")); - tr = proto_item_add_subtree(it, - ett_command_descriptor); proto_tree_add_item(tr, csdata->hf_opcode, try_tvb, try_offset+0, 1, ENC_BIG_ENDIAN); @@ -5196,11 +5181,8 @@ dissect_spc_mgmt_protocol_in(tvbuff_t *tvb_a, packet_info *pinfo _U_, continue; } - it = proto_tree_add_text(tree, try_tvb, try_offset, - 12, "Timeout Descriptor"); - - tr = proto_item_add_subtree(it, - ett_timeout_descriptor); + tr = proto_tree_add_subtree(tree, try_tvb, try_offset, + 12, ett_timeout_descriptor, NULL, "Timeout Descriptor"); proto_tree_add_item(tr, hf_scsi_report_opcodes_tdl, try_tvb, try_offset, 2, ENC_BIG_ENDIAN); @@ -5285,9 +5267,8 @@ dissect_scsi_descriptor_snsinfo(tvbuff_t *tvb, proto_tree *sns_tree, guint offse desc_type = tvb_get_guint8(tvb, offset); desc_length = tvb_get_guint8(tvb, offset+1); desc_end = offset+desc_length+2; - item = proto_tree_add_text(sns_tree, tvb, offset, desc_length+2, "%s", + desc_tree = proto_tree_add_subtree(sns_tree, tvb, offset, desc_length+2, ett_sense_descriptor, NULL, val_to_str(desc_type, scsi_sense_desc_type_val, "Unknown (0x%02x)")); - desc_tree = proto_item_add_subtree(item, ett_sense_descriptor); proto_tree_add_item(desc_tree, hf_scsi_sns_desc_type, tvb, offset, 1, ENC_BIG_ENDIAN); proto_tree_add_item(desc_tree, hf_scsi_sns_desc_length, tvb, offset+1, 1, ENC_BIG_ENDIAN); switch (desc_type) { diff --git a/epan/dissectors/packet-sctp.c b/epan/dissectors/packet-sctp.c index 90376861b3..baccc47b23 100644 --- a/epan/dissectors/packet-sctp.c +++ b/epan/dissectors/packet-sctp.c @@ -1807,8 +1807,9 @@ dissect_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, reported_length = tvb_reported_length(parameter_tvb); padding_length = reported_length - length; - parameter_item = proto_tree_add_text(chunk_tree, parameter_tvb, PARAMETER_HEADER_OFFSET, tvb_reported_length(parameter_tvb), "%s parameter", val_to_str_const(type, parameter_identifier_values, "Unknown")); - parameter_tree = proto_item_add_subtree(parameter_item, ett_sctp_chunk_parameter); + parameter_tree = proto_tree_add_subtree_format(chunk_tree, parameter_tvb, PARAMETER_HEADER_OFFSET, -1, + ett_sctp_chunk_parameter, ¶meter_item, "%s parameter", + val_to_str_const(type, parameter_identifier_values, "Unknown")); if (final_parameter) { if (padding_length > 0) { expert_add_info(pinfo, parameter_item, &ei_sctp_parameter_padding); @@ -2257,8 +2258,8 @@ dissect_error_cause(tvbuff_t *cause_tvb, packet_info *pinfo, proto_tree *chunk_t length = tvb_get_ntohs(cause_tvb, CAUSE_LENGTH_OFFSET); padding_length = tvb_reported_length(cause_tvb) - length; - cause_item = proto_tree_add_text(chunk_tree, cause_tvb, CAUSE_HEADER_OFFSET, tvb_reported_length(cause_tvb), "%s cause", val_to_str_const(code, cause_code_values, "Unknown")); - cause_tree = proto_item_add_subtree(cause_item, ett_sctp_chunk_cause); + cause_tree = proto_tree_add_subtree_format(chunk_tree, cause_tvb, CAUSE_HEADER_OFFSET, -1, + ett_sctp_chunk_cause, &cause_item, "%s cause", val_to_str_const(code, cause_code_values, "Unknown")); proto_tree_add_item(cause_tree, hf_cause_code, cause_tvb, CAUSE_CODE_OFFSET, CAUSE_CODE_LENGTH, ENC_BIG_ENDIAN); proto_tree_add_item(cause_tree, hf_cause_length, cause_tvb, CAUSE_LENGTH_OFFSET, CAUSE_LENGTH_LENGTH, ENC_BIG_ENDIAN); @@ -3421,7 +3422,6 @@ dissect_sack_chunk(packet_info *pinfo, tvbuff_t *chunk_tvb, proto_tree *chunk_tr guint16 gap_block_number, dup_tsn_number, start, end; gint gap_block_offset, dup_tsn_offset; guint32 cum_tsn_ack; - proto_item *block_item; proto_tree *block_tree; proto_tree *flags_tree; proto_item *ctsa_item; @@ -3461,8 +3461,8 @@ dissect_sack_chunk(packet_info *pinfo, tvbuff_t *chunk_tvb, proto_tree *chunk_tr end = tvb_get_ntohs(chunk_tvb, gap_block_offset + SACK_CHUNK_GAP_BLOCK_START_LENGTH); tsn_start = cum_tsn_ack + start; - block_item = proto_tree_add_text(chunk_tree, chunk_tvb, gap_block_offset, SACK_CHUNK_GAP_BLOCK_LENGTH, "Gap Acknowledgement for TSN %u to %u", cum_tsn_ack + start, cum_tsn_ack + end); - block_tree = proto_item_add_subtree(block_item, ett_sctp_sack_chunk_gap_block); + block_tree = proto_tree_add_subtree_format(chunk_tree, chunk_tvb, gap_block_offset, SACK_CHUNK_GAP_BLOCK_LENGTH, + ett_sctp_sack_chunk_gap_block, NULL, "Gap Acknowledgement for TSN %u to %u", cum_tsn_ack + start, cum_tsn_ack + end); pi = proto_tree_add_item(block_tree, hf_sack_chunk_gap_block_start, chunk_tvb, gap_block_offset, SACK_CHUNK_GAP_BLOCK_START_LENGTH, ENC_BIG_ENDIAN); pt = proto_item_add_subtree(pi, ett_sctp_sack_chunk_gap_block_start); @@ -3558,7 +3558,6 @@ dissect_nr_sack_chunk(packet_info *pinfo, tvbuff_t *chunk_tvb, proto_tree *chunk guint16 gap_block_number, nr_gap_block_number, dup_tsn_number, start, end; gint gap_block_offset, nr_gap_block_offset, dup_tsn_offset; guint32 cum_tsn_ack; - proto_item *block_item; proto_tree *block_tree; proto_tree *flags_tree; proto_item *ctsa_item; @@ -3597,8 +3596,8 @@ dissect_nr_sack_chunk(packet_info *pinfo, tvbuff_t *chunk_tvb, proto_tree *chunk end = tvb_get_ntohs(chunk_tvb, gap_block_offset + NR_SACK_CHUNK_GAP_BLOCK_START_LENGTH); tsn_start = cum_tsn_ack + start; - block_item = proto_tree_add_text(chunk_tree, chunk_tvb, gap_block_offset, NR_SACK_CHUNK_GAP_BLOCK_LENGTH, "Gap Acknowledgement for TSN %u to %u", cum_tsn_ack + start, cum_tsn_ack + end); - block_tree = proto_item_add_subtree(block_item, ett_sctp_nr_sack_chunk_gap_block); + block_tree = proto_tree_add_subtree_format(chunk_tree, chunk_tvb, gap_block_offset, NR_SACK_CHUNK_GAP_BLOCK_LENGTH, + ett_sctp_nr_sack_chunk_gap_block, NULL, "Gap Acknowledgement for TSN %u to %u", cum_tsn_ack + start, cum_tsn_ack + end); pi = proto_tree_add_item(block_tree, hf_nr_sack_chunk_gap_block_start, chunk_tvb, gap_block_offset, NR_SACK_CHUNK_GAP_BLOCK_START_LENGTH, ENC_BIG_ENDIAN); pt = proto_item_add_subtree(pi, ett_sctp_nr_sack_chunk_gap_block_start); @@ -3654,8 +3653,8 @@ dissect_nr_sack_chunk(packet_info *pinfo, tvbuff_t *chunk_tvb, proto_tree *chunk end = tvb_get_ntohs(chunk_tvb, nr_gap_block_offset + NR_SACK_CHUNK_NR_GAP_BLOCK_START_LENGTH); /*tsn_start = cum_tsn_ack + start;*/ - block_item = proto_tree_add_text(chunk_tree, chunk_tvb, nr_gap_block_offset, NR_SACK_CHUNK_NR_GAP_BLOCK_LENGTH, "NR-Gap Acknowledgement for TSN %u to %u", cum_tsn_ack + start, cum_tsn_ack + end); - block_tree = proto_item_add_subtree(block_item, ett_sctp_nr_sack_chunk_nr_gap_block); + block_tree = proto_tree_add_subtree_format(chunk_tree, chunk_tvb, nr_gap_block_offset, NR_SACK_CHUNK_NR_GAP_BLOCK_LENGTH, + ett_sctp_nr_sack_chunk_nr_gap_block, NULL, "NR-Gap Acknowledgement for TSN %u to %u", cum_tsn_ack + start, cum_tsn_ack + end); pi = proto_tree_add_item(block_tree, hf_nr_sack_chunk_nr_gap_block_start, chunk_tvb, nr_gap_block_offset, NR_SACK_CHUNK_NR_GAP_BLOCK_START_LENGTH, ENC_BIG_ENDIAN); pt = proto_item_add_subtree(pi, ett_sctp_nr_sack_chunk_nr_gap_block_start); @@ -4104,8 +4103,9 @@ dissect_sctp_chunk(tvbuff_t *chunk_tvb, col_append_fstr(pinfo->cinfo, COL_INFO, "%s ", val_to_str_const(type, chunk_type_values, "RESERVED")); /* create proto_tree stuff */ - chunk_item = proto_tree_add_text(sctp_tree, chunk_tvb, CHUNK_HEADER_OFFSET, reported_length, "%s chunk", val_to_str_const(type, chunk_type_values, "RESERVED")); - chunk_tree = proto_item_add_subtree(chunk_item, ett_sctp_chunk); + chunk_tree = proto_tree_add_subtree_format(sctp_tree, chunk_tvb, CHUNK_HEADER_OFFSET, reported_length, + ett_sctp_chunk, &chunk_item, "%s chunk", + val_to_str_const(type, chunk_type_values, "RESERVED")); if (reported_length % 4) expert_add_info_format(pinfo, chunk_item, &ei_sctp_chunk_length_bad, "Chunk length is not padded to a multiple of 4 bytes (length=%d).", reported_length); diff --git a/epan/dissectors/packet-sdp.c b/epan/dissectors/packet-sdp.c index c5555d8b57..66ee7a866f 100644 --- a/epan/dissectors/packet-sdp.c +++ b/epan/dissectors/packet-sdp.c @@ -1647,9 +1647,8 @@ static void dissect_sdp_media_attribute(tvbuff_t *tvb, packet_info *pinfo, proto } if (tvb_strncaseeql(tvb, offset, "inline", next_offset-offset) == 0) { - parameter_item = proto_tree_add_text(sdp_media_attribute_tree, - tvb, offset, param_end_offset-offset, "Key parameters"); - parameter_tree = proto_item_add_subtree(parameter_item, ett_sdp_crypto_key_parameters); + parameter_tree = proto_tree_add_subtree(sdp_media_attribute_tree, tvb, offset, + param_end_offset-offset, ett_sdp_crypto_key_parameters, NULL, "Key parameters"); /* XXX only for SRTP? */ /* srtp-key-info = key-salt ["|" lifetime] ["|" mki] */ offset = next_offset +1; diff --git a/epan/dissectors/packet-selfm.c b/epan/dissectors/packet-selfm.c index 5512034b9e..c39c92ad36 100644 --- a/epan/dissectors/packet-selfm.c +++ b/epan/dissectors/packet-selfm.c @@ -963,7 +963,7 @@ static int dissect_relaydef_frame(tvbuff_t *tvb, proto_tree *tree, int offset) { /* Set up structures needed to add the protocol subtree and manage it */ - proto_item *relaydef_item, *relaydef_fm_item, *relaydef_flags_item, *relaydef_proto_item; + proto_item *relaydef_fm_item, *relaydef_flags_item, *relaydef_proto_item; proto_tree *relaydef_tree, *relaydef_fm_tree, *relaydef_flags_tree, *relaydef_proto_tree; guint8 len, num_proto, num_fm, num_flags; int count; @@ -974,8 +974,7 @@ dissect_relaydef_frame(tvbuff_t *tvb, proto_tree *tree, int offset) num_flags = tvb_get_guint8(tvb, offset+3); /* Add items to protocol tree specific to Relay Definition Block */ - relaydef_item = proto_tree_add_text(tree, tvb, offset, len-2, "Relay Definition Block Details"); - relaydef_tree = proto_item_add_subtree(relaydef_item, ett_selfm_relaydef); + relaydef_tree = proto_tree_add_subtree(tree, tvb, offset, len-2, ett_selfm_relaydef, NULL, "Relay Definition Block Details"); /* Reported length */ proto_tree_add_item(relaydef_tree, hf_selfm_relaydef_len, tvb, offset, 1, ENC_BIG_ENDIAN); @@ -1034,7 +1033,6 @@ static int dissect_fmconfig_frame(tvbuff_t *tvb, proto_tree *tree, int offset) { /* Set up structures needed to add the protocol subtree and manage it */ - proto_item *fmconfig_item, *fmconfig_ai_item=NULL, *fmconfig_calc_item=NULL; proto_tree *fmconfig_tree, *fmconfig_ai_tree=NULL, *fmconfig_calc_tree=NULL; guint count; guint8 len, sf_loc, num_sf, num_ai, num_calc; @@ -1049,8 +1047,7 @@ dissect_fmconfig_frame(tvbuff_t *tvb, proto_tree *tree, int offset) /* skip num_dig, position offset+6 */ num_calc = tvb_get_guint8(tvb, offset+7); - fmconfig_item = proto_tree_add_text(tree, tvb, offset, len, "Fast Meter Configuration Details"); - fmconfig_tree = proto_item_add_subtree(fmconfig_item, ett_selfm_fmconfig); + fmconfig_tree = proto_tree_add_subtree(tree, tvb, offset, len, ett_selfm_fmconfig, NULL, "Fast Meter Configuration Details"); /* Add items to protocol tree specific to Fast Meter Configuration Block */ @@ -1078,8 +1075,8 @@ dissect_fmconfig_frame(tvbuff_t *tvb, proto_tree *tree, int offset) tvb_memcpy(tvb, &ai_name, offset, 6); ai_name[FM_CONFIG_ANA_CHNAME_LEN] = '\0'; /* Put a terminating null onto the end of the AI name, in case none exists */ - fmconfig_ai_item = proto_tree_add_text(fmconfig_tree, tvb, offset, 10, "Analog Channel: %s", ai_name); - fmconfig_ai_tree = proto_item_add_subtree(fmconfig_ai_item, ett_selfm_fmconfig_ai); + fmconfig_ai_tree = proto_tree_add_subtree_format(fmconfig_tree, tvb, offset, 10, + ett_selfm_fmconfig_ai, NULL, "Analog Channel: %s", ai_name); /* Add Channel Name, Channel Data Type, Scale Factor Type and Scale Factor Offset to tree */ proto_tree_add_text(fmconfig_ai_tree, tvb, offset, 6, "Analog Channel Name: %s", ai_name); @@ -1093,8 +1090,8 @@ dissect_fmconfig_frame(tvbuff_t *tvb, proto_tree *tree, int offset) /* 14-byte Calculation block instances based on num_calc */ for (count = 0; count < num_calc; count++) { - fmconfig_calc_item = proto_tree_add_text(fmconfig_tree, tvb, offset, 14, "Calculation Block: %d", count+1); - fmconfig_calc_tree = proto_item_add_subtree(fmconfig_calc_item, ett_selfm_fmconfig_calc); + fmconfig_calc_tree = proto_tree_add_subtree_format(fmconfig_tree, tvb, offset, 14, + ett_selfm_fmconfig_calc, NULL, "Calculation Block: %d", count+1); /* Rotation, Voltage Connection and Current Connection are all bit-masked on the same byte */ proto_tree_add_item(fmconfig_calc_tree, hf_selfm_fmconfig_cblk_rot, tvb, offset, 1, ENC_BIG_ENDIAN); @@ -1143,8 +1140,8 @@ static int dissect_fmdata_frame(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, int offset, guint16 config_cmd_match) { /* Set up structures needed to add the protocol subtree and manage it */ - proto_item *fmdata_item, *fmdata_ai_item=NULL, *fmdata_dig_item=NULL, *fmdata_ai_ch_item=NULL, *fmdata_dig_ch_item=NULL; - proto_item *fmdata_ai_sf_item=NULL; + proto_item *fmdata_item, *fmdata_dig_ch_item; + proto_item *fmdata_ai_sf_item; proto_tree *fmdata_tree, *fmdata_ai_tree=NULL, *fmdata_dig_tree=NULL, *fmdata_ai_ch_tree=NULL, *fmdata_dig_ch_tree=NULL; guint8 len, idx=0, j=0, ts_mon, ts_day, ts_year, ts_hour, ts_min, ts_sec; guint16 config_cmd, ts_msec; @@ -1158,8 +1155,7 @@ dissect_fmdata_frame(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, int of len = tvb_get_guint8(tvb, offset); - fmdata_item = proto_tree_add_text(tree, tvb, offset, len-2, "Fast Meter Data Details"); - fmdata_tree = proto_item_add_subtree(fmdata_item, ett_selfm_fmdata); + fmdata_tree = proto_tree_add_subtree_format(tree, tvb, offset, len-2, ett_selfm_fmdata, &fmdata_item, "Fast Meter Data Details"); /* Reported length */ proto_tree_add_item(fmdata_tree, hf_selfm_fmdata_len, tvb, offset, 1, ENC_BIG_ENDIAN); @@ -1207,22 +1203,19 @@ dissect_fmdata_frame(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, int of /* Use different lookup strings, depending on how many samples are available per Analog Channel */ if (cfg_data->num_ai_samples == 1) { - fmdata_ai_item = proto_tree_add_text(fmdata_tree, tvb, offset, ((cfg_data->offset_ts - cfg_data->offset_ai)/cfg_data->num_ai_samples), - "Analog Channels (%d), Sample: %d (%s)", + fmdata_ai_tree = proto_tree_add_subtree_format(fmdata_tree, tvb, offset, ((cfg_data->offset_ts - cfg_data->offset_ai)/cfg_data->num_ai_samples), + ett_selfm_fmdata_ai, NULL, "Analog Channels (%d), Sample: %d (%s)", cfg_data->num_ai, j+1, val_to_str_const(j+1, selfm_fmconfig_numsamples1_vals, "Unknown")); - fmdata_ai_tree = proto_item_add_subtree(fmdata_ai_item, ett_selfm_fmdata_ai); } else if (cfg_data->num_ai_samples == 2) { - fmdata_ai_item = proto_tree_add_text(fmdata_tree, tvb, offset, ((cfg_data->offset_ts - cfg_data->offset_ai)/cfg_data->num_ai_samples), - "Analog Channels (%d), Sample: %d (%s)", + fmdata_ai_tree = proto_tree_add_subtree_format(fmdata_tree, tvb, offset, ((cfg_data->offset_ts - cfg_data->offset_ai)/cfg_data->num_ai_samples), + ett_selfm_fmdata_ai, NULL, "Analog Channels (%d), Sample: %d (%s)", cfg_data->num_ai, j+1, val_to_str_const(j+1, selfm_fmconfig_numsamples2_vals, "Unknown")); - fmdata_ai_tree = proto_item_add_subtree(fmdata_ai_item, ett_selfm_fmdata_ai); } else if (cfg_data->num_ai_samples == 4) { - fmdata_ai_item = proto_tree_add_text(fmdata_tree, tvb, offset, ((cfg_data->offset_ts - cfg_data->offset_ai)/cfg_data->num_ai_samples), - "Analog Channels (%d), Sample: %d (%s)", + fmdata_ai_tree = proto_tree_add_subtree_format(fmdata_tree, tvb, offset, ((cfg_data->offset_ts - cfg_data->offset_ai)/cfg_data->num_ai_samples), + ett_selfm_fmdata_ai, NULL, "Analog Channels (%d), Sample: %d (%s)", cfg_data->num_ai, j+1, val_to_str_const(j+1, selfm_fmconfig_numsamples4_vals, "Unknown")); - fmdata_ai_tree = proto_item_add_subtree(fmdata_ai_item, ett_selfm_fmdata_ai); } /* For each analog channel we encounter... */ @@ -1246,8 +1239,8 @@ dissect_fmdata_frame(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, int of } /* Build sub-tree for each Analog Channel */ - fmdata_ai_ch_item = proto_tree_add_text(fmdata_ai_tree, tvb, offset, ch_size, "Analog Channel %d: %s", idx+1, ai->name); - fmdata_ai_ch_tree = proto_item_add_subtree(fmdata_ai_ch_item, ett_selfm_fmdata_ai_ch); + fmdata_ai_ch_tree = proto_tree_add_subtree_format(fmdata_ai_tree, tvb, offset, ch_size, + ett_selfm_fmdata_ai_ch, NULL, "Analog Channel %d: %s", idx+1, ai->name); /* XXX - Need more decoding options here for different data types, but I need packet capture examples first */ /* Decode analog value appropriately, according to data type */ @@ -1317,13 +1310,12 @@ dissect_fmdata_frame(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, int of /* Check that we actually have digital data */ if (cfg_data->num_dig > 0) { - fmdata_dig_item = proto_tree_add_text(fmdata_tree, tvb, offset, cfg_data->num_dig, "Digital Channels (%d)", cfg_data->num_dig); - fmdata_dig_tree = proto_item_add_subtree(fmdata_dig_item, ett_selfm_fmdata_dig); + fmdata_dig_tree = proto_tree_add_subtree_format(fmdata_tree, tvb, offset, cfg_data->num_dig, + ett_selfm_fmdata_dig, NULL, "Digital Channels (%d)", cfg_data->num_dig); for (idx=0; idx < cfg_data->num_dig; idx++) { - fmdata_dig_ch_item = proto_tree_add_text(fmdata_dig_tree, tvb, offset, 1, "Digital Word Bit Row: %2d", idx+1); - fmdata_dig_ch_tree = proto_item_add_subtree(fmdata_dig_ch_item, ett_selfm_fmdata_dig_ch); + fmdata_dig_ch_tree = proto_tree_add_subtree_format(fmdata_dig_tree, tvb, offset, 1, ett_selfm_fmdata_dig_ch, &fmdata_dig_ch_item, "Digital Word Bit Row: %2d", idx+1); /* Display the bit pattern on the digital channel proto_item */ proto_item_append_text(fmdata_dig_ch_item, " [ %d %d %d %d %d %d %d %d ]", @@ -1375,7 +1367,7 @@ static int dissect_foconfig_frame(tvbuff_t *tvb, proto_tree *tree, int offset) { /* Set up structures needed to add the protocol subtree and manage it */ - proto_item *foconfig_item, *foconfig_brkr_item, *foconfig_rb_item; + proto_item *foconfig_brkr_item, *foconfig_rb_item; proto_tree *foconfig_tree, *foconfig_brkr_tree=NULL, *foconfig_rb_tree=NULL; guint count; guint8 len, num_brkr, prb_supp; @@ -1386,8 +1378,7 @@ dissect_foconfig_frame(tvbuff_t *tvb, proto_tree *tree, int offset) num_rb = tvb_get_ntohs(tvb, offset+2); prb_supp = tvb_get_guint8(tvb, offset+4); - foconfig_item = proto_tree_add_text(tree, tvb, offset, len-2, "Fast Operate Configuration Details"); - foconfig_tree = proto_item_add_subtree(foconfig_item, ett_selfm_foconfig); + foconfig_tree = proto_tree_add_subtree(tree, tvb, offset, len-2, ett_selfm_foconfig, NULL, "Fast Operate Configuration Details"); /* Add items to protocol tree specific to Fast Operate Configuration Block */ @@ -1460,14 +1451,13 @@ static int dissect_alt_fastop_config_frame(tvbuff_t *tvb, proto_tree *tree, int offset) { /* Set up structures needed to add the protocol subtree and manage it */ - proto_item *foconfig_item=NULL; - proto_tree *foconfig_tree=NULL; + proto_tree *foconfig_tree; guint8 len; len = tvb_get_guint8(tvb, offset); - foconfig_item = proto_tree_add_text(tree, tvb, offset, len-2, "Alternate Fast Operate Configuration Details"); - foconfig_tree = proto_item_add_subtree(foconfig_item, ett_selfm_foconfig); + foconfig_tree = proto_tree_add_subtree(tree, tvb, offset, len-2, + ett_selfm_foconfig, NULL, "Alternate Fast Operate Configuration Details"); /* Add items to protocol tree specific to Fast Operate Configuration Block */ @@ -1501,7 +1491,6 @@ static int dissect_fastop_frame(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, int offset) { /* Set up structures needed to add the protocol subtree and manage it */ - proto_item *fastop_item; proto_tree *fastop_tree; guint8 len, opcode; guint16 msg_type; @@ -1509,8 +1498,7 @@ dissect_fastop_frame(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, int of msg_type = tvb_get_ntohs(tvb, offset-2); len = tvb_get_guint8(tvb, offset); - fastop_item = proto_tree_add_text(tree, tvb, offset, len-2, "Fast Operate Details"); - fastop_tree = proto_item_add_subtree(fastop_item, ett_selfm_fastop); + fastop_tree = proto_tree_add_subtree(tree, tvb, offset, len-2, ett_selfm_fastop, NULL, "Fast Operate Details"); /* Add Reported length to tree*/ proto_tree_add_item(fastop_tree, hf_selfm_fastop_len, tvb, offset, 1, ENC_BIG_ENDIAN); @@ -1552,15 +1540,13 @@ static int dissect_alt_fastop_frame(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, int offset) { /* Set up structures needed to add the protocol subtree and manage it */ - proto_item *fastop_item; proto_tree *fastop_tree; guint8 len; guint16 opcode; len = tvb_get_guint8(tvb, offset); - fastop_item = proto_tree_add_text(tree, tvb, offset, len-2, "Alternate Fast Operate Details"); - fastop_tree = proto_item_add_subtree(fastop_item, ett_selfm_fastop); + fastop_tree = proto_tree_add_subtree(tree, tvb, offset, len-2, ett_selfm_fastop, NULL, "Alternate Fast Operate Details"); /* Add Reported length to tree */ proto_tree_add_item(fastop_tree, hf_selfm_alt_fastop_len, tvb, offset, 1, ENC_BIG_ENDIAN); @@ -1595,7 +1581,7 @@ dissect_alt_fastop_frame(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, in static int dissect_fastser_readresp_frame(tvbuff_t *tvb, proto_tree *fastser_tree, packet_info *pinfo, int offset, guint8 seq_byte) { - proto_item *fastser_tag_item=NULL, *fastser_tag_value_item=NULL, *fmdata_dig_item=NULL; + proto_item *fastser_tag_value_item=NULL, *fmdata_dig_item=NULL; proto_item *pi_baseaddr=NULL, *pi_fnum=NULL, *pi_type=NULL, *pi_qty=NULL; proto_tree *fastser_tag_tree=NULL, *fmdata_dig_tree=NULL; guint32 base_addr; @@ -1709,8 +1695,8 @@ dissect_fastser_readresp_frame(tvbuff_t *tvb, proto_tree *fastser_tree, packet_i break; } - fastser_tag_item = proto_tree_add_text(fastser_tree, payload_tvb, payload_offset, data_size, "Data Item Name: %s", dataitem->name); - fastser_tag_tree = proto_item_add_subtree(fastser_tag_item, ett_selfm_fastser_tag); + fastser_tag_tree = proto_tree_add_subtree_format(fastser_tree, payload_tvb, payload_offset, data_size, + ett_selfm_fastser_tag, NULL, "Data Item Name: %s", dataitem->name); /* Load some information from the stored Data Format Response message into the tree for reference */ pi_fnum = proto_tree_add_text(fastser_tag_tree, payload_tvb, payload_offset, data_size, "Using frame number %d (Index Pos: %d) as Data Format Reference",dataitem->fnum, dataitem->index_pos ); @@ -1730,8 +1716,8 @@ dissect_fastser_readresp_frame(tvbuff_t *tvb, proto_tree *fastser_tree, packet_i for (cnt=1; cnt <= dataitem->quantity; cnt++) { - fmdata_dig_item = proto_tree_add_text(fastser_tag_tree, payload_tvb, payload_offset, 1, "8-bit Binary Items (Row: %2d)", cnt); - fmdata_dig_tree = proto_item_add_subtree(fmdata_dig_item, ett_selfm_fmdata_dig); + fmdata_dig_tree = proto_tree_add_subtree_format(fastser_tag_tree, payload_tvb, payload_offset, 1, + ett_selfm_fmdata_dig, &fmdata_dig_item, "8-bit Binary Items (Row: %2d)", cnt); /* Display the bit pattern on the digital channel proto_item */ proto_item_append_text(fmdata_dig_item, " [ %d %d %d %d %d %d %d %d ]", @@ -1832,9 +1818,9 @@ static int dissect_fastser_frame(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, int offset) { /* Set up structures needed to add the protocol subtree and manage it */ - proto_item *fastser_item, *fastser_def_fc_item=NULL, *fastser_seq_item=NULL, *fastser_elementlist_item=NULL; - proto_item *fastser_element_item=NULL, *fastser_datareg_item=NULL, *fastser_tag_item=NULL; - proto_item *pi_baseaddr=NULL, *fastser_crc16_item=NULL; + proto_item *fastser_def_fc_item, *fastser_seq_item, *fastser_elementlist_item; + proto_item *fastser_tag_item; + proto_item *pi_baseaddr, *fastser_crc16_item; proto_tree *fastser_tree, *fastser_def_fc_tree=NULL, *fastser_seq_tree=NULL, *fastser_elementlist_tree=NULL; proto_tree *fastser_element_tree=NULL, *fastser_datareg_tree=NULL, *fastser_tag_tree=NULL; gint cnt, num_elements, elmt_status32_ofs=0, elmt_status, null_offset; @@ -1847,8 +1833,7 @@ dissect_fastser_frame(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, int o len = tvb_get_guint8(tvb, offset); - fastser_item = proto_tree_add_text(tree, tvb, offset, len-2, "Fast SER Message Details"); - fastser_tree = proto_item_add_subtree(fastser_item, ett_selfm_fastser); + fastser_tree = proto_tree_add_subtree(tree, tvb, offset, len-2, ett_selfm_fastser, NULL, "Fast SER Message Details"); /* Reported length */ proto_tree_add_item(fastser_tree, hf_selfm_fastser_len, tvb, offset, 1, ENC_BIG_ENDIAN); @@ -2008,9 +1993,8 @@ dissect_fastser_frame(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, int o elmt_status = ((elmt_status32 >> cnt) & 0x01); /* Build the tree */ - fastser_element_item = proto_tree_add_text(fastser_elementlist_tree, tvb, offset, 4, + fastser_element_tree = proto_tree_add_subtree_format(fastser_elementlist_tree, tvb, offset, 4, ett_selfm_fastser_element, NULL, "Reported Event %d (Index: %d, New State: %s)", cnt+1, elmt_idx, val_to_str_const(elmt_status, selfm_ser_status_vals, "Unknown")); - fastser_element_tree = proto_item_add_subtree(fastser_element_item, ett_selfm_fastser_element); /* Add Index Number and Timestamp offset to tree */ proto_tree_add_item(fastser_element_tree, hf_selfm_fastser_unsresp_elmt_idx, tvb, offset, 1, ENC_BIG_ENDIAN); @@ -2186,8 +2170,8 @@ dissect_fastser_frame(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, int o /* 16-bit message word count and 16-bit flag field */ for (cnt=0; cnt<num_reg; cnt++) { - fastser_datareg_item = proto_tree_add_text(fastser_tree, tvb, offset, 18, "Fast SER Data Region #%d", cnt+1); - fastser_datareg_tree = proto_item_add_subtree(fastser_datareg_item, ett_selfm_fastser_datareg); + fastser_datareg_tree = proto_tree_add_subtree_format(fastser_tree, tvb, offset, 18, + ett_selfm_fastser_datareg, NULL, "Fast SER Data Region #%d", cnt+1); /* 10-Byte Region description */ region_name_ptr = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, 10, ENC_ASCII); diff --git a/epan/dissectors/packet-sercosiii.c b/epan/dissectors/packet-sercosiii.c index 8b80b519a7..8019f46b55 100644 --- a/epan/dissectors/packet-sercosiii.c +++ b/epan/dissectors/packet-sercosiii.c @@ -777,23 +777,19 @@ static const value_string siii_at_hotplug_status_error_text[]= static void dissect_siii_mst(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) { - proto_item *ti; proto_tree *subtree; proto_tree *subtree2; - ti = proto_tree_add_text(tree, tvb, 0, 6, "MST"); - subtree = proto_item_add_subtree(ti, ett_siii_mst); + subtree = proto_tree_add_subtree(tree, tvb, 0, 6, ett_siii_mst, NULL, "MST"); - ti = proto_tree_add_text(subtree, tvb, 0, 1, "Telegram Type"); - subtree2 = proto_item_add_subtree(ti, ett_siii_mst_teltype); + subtree2 = proto_tree_add_subtree(subtree, tvb, 0, 1, ett_siii_mst_teltype, NULL, "Telegram Type"); proto_tree_add_item(subtree2, hf_siii_mst_channel, tvb, 0, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item(subtree2, hf_siii_mst_type, tvb, 0, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item(subtree2, hf_siii_mst_cyclecntvalid, tvb, 0, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item(subtree2, hf_siii_mst_telno, tvb, 0, 1, ENC_LITTLE_ENDIAN); - ti = proto_tree_add_text(subtree, tvb, 1, 1, "Phase Field"); - subtree2 = proto_item_add_subtree(ti, ett_siii_mst_phase); + subtree2 = proto_tree_add_subtree(subtree, tvb, 1, 1, ett_siii_mst_phase, NULL, "Phase Field"); proto_tree_add_item(subtree2, hf_siii_mst_phase, tvb, 1, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item(subtree2, hf_siii_mst_cyclecnt, tvb, 1, 1, ENC_LITTLE_ENDIAN); @@ -807,8 +803,7 @@ static void dissect_siii_mdt_hp(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre proto_tree *subtree2; proto_item *ti; - ti = proto_tree_add_text(tree, tvb, 0, 8, "Hot-Plug"); - subtree = proto_item_add_subtree(ti, ett_siii_mdt_hp); + subtree = proto_tree_add_subtree(tree, tvb, 0, 8, ett_siii_mdt_hp, NULL, "Hot-Plug"); proto_tree_add_item(subtree, hf_siii_mdt_hotplug_address, tvb, 2, 2, ENC_LITTLE_ENDIAN); @@ -886,30 +881,24 @@ static void dissect_siii_mdt_cp1_2(tvbuff_t *tvb, packet_info *pinfo, proto_tree tvbuff_t *tvb_n; guint idx; - - proto_item *ti; proto_tree *subtree; proto_tree *subtree_svc; proto_tree *subtree_devctrl; - ti = proto_tree_add_text(tree, tvb, 0, SERCOS_SLAVE_GROUP_SIZE * 6, "Service Channels"); - subtree_svc = proto_item_add_subtree(ti, ett_siii_mdt_svc); + subtree_svc = proto_tree_add_subtree(tree, tvb, 0, SERCOS_SLAVE_GROUP_SIZE * 6, ett_siii_mdt_svc, NULL, "Service Channels"); - ti = proto_tree_add_text(tree, tvb, SERCOS_SLAVE_GROUP_SIZE * 6, 512, "Device Control"); - subtree_devctrl = proto_item_add_subtree(ti, ett_siii_mdt_svc); + subtree_devctrl = proto_tree_add_subtree(tree, tvb, SERCOS_SLAVE_GROUP_SIZE * 6, 512, ett_siii_mdt_svc, NULL, "Device Control"); for (idx = 0; idx < SERCOS_SLAVE_GROUP_SIZE; ++idx) /* each MDT of CP1/2 has data for 128 different slaves */ { tvb_n = tvb_new_subset_length(tvb, 6 * idx, 6); /* subset for service channel data */ - ti = proto_tree_add_text(subtree_svc, tvb_n, 0, 6, "Device %u", idx + devstart); - subtree = proto_item_add_subtree(ti, ett_siii_mdt_svc_channel); + subtree = proto_tree_add_subtree_format(subtree_svc, tvb_n, 0, 6, ett_siii_mdt_svc_channel, NULL, "Device %u", idx + devstart); dissect_siii_mdt_svc(tvb_n, pinfo, subtree, idx + devstart); tvb_n = tvb_new_subset_length(tvb, SERCOS_SLAVE_GROUP_SIZE * 6 + 4 * idx, 2); /* subset for device control information */ - ti = proto_tree_add_text(subtree_devctrl, tvb_n, 0, 2, "Device %u", idx + devstart); - subtree = proto_item_add_subtree(ti, ett_siii_mdt_dev_control); + subtree = proto_tree_add_subtree_format(subtree_devctrl, tvb_n, 0, 2, ett_siii_mdt_dev_control, NULL, "Device %u", idx + devstart); dissect_siii_mdt_devctrl(tvb_n, pinfo, subtree); } @@ -932,7 +921,6 @@ static void dissect_siii_mdt_cp3_4(tvbuff_t *tvb, packet_info *pinfo, proto_tree static void dissect_siii_mdt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { - proto_item *ti; proto_tree *subtree; tvbuff_t *tvb_n; @@ -955,8 +943,7 @@ static void dissect_siii_mdt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree (t_phase&0x0f)); } - ti = proto_tree_add_text(tree, tvb, 0, -1, "MDT%u", telno); - subtree = proto_item_add_subtree(ti, ett_siii_mdt); + subtree = proto_tree_add_subtree_format(tree, tvb, 0, -1, ett_siii_mdt, NULL, "MDT%u", telno); dissect_siii_mst(tvb, pinfo, subtree); /* dissect SERCOS III header */ @@ -1024,8 +1011,7 @@ static void dissect_siii_at_hp(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree proto_tree *subtree2; proto_item *ti; - ti = proto_tree_add_text(tree, tvb, 0, 8, "Hot-Plug"); - subtree = proto_item_add_subtree(ti, ett_siii_at_hp); + subtree = proto_tree_add_subtree(tree, tvb, 0, 8, ett_siii_at_hp, NULL, "Hot-Plug"); proto_tree_add_item(subtree, hf_siii_at_hotplug_address, tvb, 2, 2, ENC_LITTLE_ENDIAN); @@ -1082,29 +1068,24 @@ static void dissect_siii_at_cp1_2(tvbuff_t *tvb, packet_info *pinfo, proto_tree guint idx; - proto_item *ti; proto_tree *subtree; proto_tree *subtree_svc; proto_tree *subtree_devstat; - ti = proto_tree_add_text(tree, tvb, 0, SERCOS_SLAVE_GROUP_SIZE * 6, "Service Channel"); - subtree_svc = proto_item_add_subtree(ti, ett_siii_at_svc); + subtree_svc = proto_tree_add_subtree(tree, tvb, 0, SERCOS_SLAVE_GROUP_SIZE * 6, ett_siii_at_svc, NULL, "Service Channel"); - ti = proto_tree_add_text(tree, tvb, SERCOS_SLAVE_GROUP_SIZE * 6, 512, "Device Status"); - subtree_devstat = proto_item_add_subtree(ti, ett_siii_at_devstats); + subtree_devstat = proto_tree_add_subtree(tree, tvb, SERCOS_SLAVE_GROUP_SIZE * 6, 512, ett_siii_at_devstats, NULL, "Device Status"); for (idx = 0; idx < SERCOS_SLAVE_GROUP_SIZE; ++idx) /* each AT of CP1/2 has data of 128 different slaves */ { tvb_n = tvb_new_subset_length(tvb, 6 * idx, 6); /* subset for service channel data */ - ti = proto_tree_add_text(subtree_svc, tvb_n, 0, 6, "Device %u", idx + devstart); - subtree = proto_item_add_subtree(ti, ett_siii_at_svc_channel); + subtree = proto_tree_add_subtree_format(subtree_svc, tvb_n, 0, 6, ett_siii_at_svc_channel, NULL, "Device %u", idx + devstart); dissect_siii_at_svc(tvb_n, pinfo, subtree, idx + devstart); tvb_n = tvb_new_subset_length(tvb, SERCOS_SLAVE_GROUP_SIZE * 6 + 4 * idx, 2); /* subset for device status information */ - ti = proto_tree_add_text(subtree_devstat, tvb_n, 0, 2, "Device %u", idx + devstart); - subtree = proto_item_add_subtree(ti, ett_siii_at_dev_status); + subtree = proto_tree_add_subtree_format(subtree_devstat, tvb_n, 0, 2, ett_siii_at_dev_status, NULL, "Device %u", idx + devstart); dissect_siii_at_devstat(tvb_n, pinfo, subtree); } } @@ -1124,7 +1105,6 @@ static void dissect_siii_at_cp3_4(tvbuff_t *tvb, packet_info *pinfo, proto_tree static void dissect_siii_at(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { - proto_item *ti; proto_tree *subtree; tvbuff_t *tvb_n; @@ -1147,8 +1127,7 @@ static void dissect_siii_at(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) (phase&0x0f)); } - ti = proto_tree_add_text(tree, tvb, 0, -1, "AT%u", telno); - subtree = proto_item_add_subtree(ti, ett_siii_at); + subtree = proto_tree_add_subtree_format(tree, tvb, 0, -1, ett_siii_at, NULL, "AT%u", telno); dissect_siii_mst(tvb, pinfo, subtree); /* dissect SERCOS III header */ diff --git a/epan/dissectors/packet-ses.c b/epan/dissectors/packet-ses.c index 2a0814dbe0..7dc574b75e 100644 --- a/epan/dissectors/packet-ses.c +++ b/epan/dissectors/packet-ses.c @@ -859,10 +859,9 @@ dissect_parameter_group(tvbuff_t *tvb, int offset, proto_tree *tree, while(pg_len != 0) { param_type = tvb_get_guint8(tvb, offset); - ti = proto_tree_add_text(pg_tree, tvb, offset, -1, "%s", - val_to_str(param_type, param_vals, - "Unknown parameter type (0x%02x)")); - param_tree = proto_item_add_subtree(ti, ett_ses_param); + param_tree = proto_tree_add_subtree(pg_tree, tvb, offset, -1, + ett_ses_param, &ti, + val_to_str(param_type, param_vals, "Unknown parameter type (0x%02x)")); param_str = val_to_str_const(param_type, param_vals, "Unknown"); proto_tree_add_text(param_tree, tvb, offset, 1, "Parameter type: %s", param_str); @@ -937,10 +936,9 @@ dissect_parameters(tvbuff_t *tvb, int offset, guint16 len, proto_tree *tree, while (len != 0) { param_type = tvb_get_guint8(tvb, offset); - ti = proto_tree_add_text(ses_tree, tvb, offset, -1, "%s", + param_tree = proto_tree_add_subtree(ses_tree, tvb, offset, -1, ett_ses_param, &ti, val_to_str(param_type, param_vals, "Unknown parameter type (0x%02x)")); - param_tree = proto_item_add_subtree(ti, ett_ses_param); param_str = val_to_str_const(param_type, param_vals, "Unknown"); proto_tree_add_text(param_tree, tvb, offset, 1, "Parameter type: %s", param_str); diff --git a/epan/dissectors/packet-sflow.c b/epan/dissectors/packet-sflow.c index 4b14b30182..f8c6f06348 100644 --- a/epan/dissectors/packet-sflow.c +++ b/epan/dissectors/packet-sflow.c @@ -896,9 +896,7 @@ static gint dissect_sflow_5_extended_mpls_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset) { guint32 in_label_count, out_label_count, label, i, j; proto_tree *in_stack; - proto_item *ti_in; proto_tree *out_stack; - proto_item *ti_out; struct sflow_address_type addr_type; addr_type.hf_addr_v4 = hf_sflow_245_nexthop_v4; @@ -910,8 +908,7 @@ dissect_sflow_5_extended_mpls_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree proto_tree_add_item(tree, hf_sflow_245_extended_mpls_in_label_stack_entries, tvb, offset, 4, ENC_BIG_ENDIAN); offset += 4; - ti_in = proto_tree_add_text(tree, tvb, offset, -1, "In Label Stack"); - in_stack = proto_item_add_subtree(ti_in, ett_sflow_5_mpls_in_label_stack); + in_stack = proto_tree_add_subtree(tree, tvb, offset, -1, ett_sflow_5_mpls_in_label_stack, NULL, "In Label Stack"); /* by applying the mask, we avoid possible corrupted data that causes huge number of loops * 255 is a sensible limit of label count */ @@ -926,8 +923,7 @@ dissect_sflow_5_extended_mpls_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree proto_tree_add_item(tree, hf_sflow_245_extended_mpls_out_label_stack_entries, tvb, offset, 4, ENC_BIG_ENDIAN); offset += 4; - ti_out = proto_tree_add_text(tree, tvb, offset, -1, "Out Label Stack"); - out_stack = proto_item_add_subtree(ti_out, ett_sflow_5_mpls_in_label_stack); + out_stack = proto_tree_add_subtree(tree, tvb, offset, -1, ett_sflow_5_mpls_in_label_stack, NULL, "Out Label Stack"); /* by applying the mask, we avoid possible corrupted data that causes huge number of loops * 255 is a sensible limit of label count */ @@ -1612,9 +1608,8 @@ dissect_sflow_5_flow_record(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, /* only accept default enterprise 0 (InMon sFlow) */ if (enterprise == ENTERPRISE_DEFAULT) { - ti = proto_tree_add_text(tree, tvb, offset, -1, "%s", + flow_data_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_sflow_5_flow_record, &ti, val_to_str_ext_const(format, &sflow_5_flow_record_type_ext, "Unknown sample format")); - flow_data_tree = proto_item_add_subtree(ti, ett_sflow_5_flow_record); proto_tree_add_uint_format_value(flow_data_tree, hf_sflow_enterprise, tvb, offset, 4, enterprise, "standard sFlow (%u)", enterprise); @@ -1690,8 +1685,8 @@ dissect_sflow_5_flow_record(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, } } else { /* unknown enterprise format, what to do?? */ - ti = proto_tree_add_text(tree, tvb, offset, -1, "Unknown enterprise format"); - flow_data_tree = proto_item_add_subtree(ti, ett_sflow_5_flow_record); + flow_data_tree = proto_tree_add_subtree(tree, tvb, offset, -1, + ett_sflow_5_flow_record, &ti, "Unknown enterprise format"); proto_tree_add_uint_format_value(flow_data_tree, hf_sflow_enterprise, tvb, offset, -1, enterprise, "Non-standard sFlow (%u)", enterprise); } @@ -1974,9 +1969,8 @@ dissect_sflow_5_counters_record(tvbuff_t *tvb, proto_tree *tree, gint offset) { format = enterprise_format & 0x00000fff; if (enterprise == ENTERPRISE_DEFAULT) { /* only accept default enterprise 0 (InMon sFlow) */ - ti = proto_tree_add_text(tree, tvb, offset, -1, "%s", + counter_data_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_sflow_5_counters_record, &ti, val_to_str_const(format, sflow_5_counters_record_type, "Unknown sample format")); - counter_data_tree = proto_item_add_subtree(ti, ett_sflow_5_counters_record); proto_tree_add_uint_format_value(counter_data_tree, hf_sflow_enterprise, tvb, offset, 4, enterprise, "standard sFlow (%u)", enterprise); @@ -2016,8 +2010,8 @@ dissect_sflow_5_counters_record(tvbuff_t *tvb, proto_tree *tree, gint offset) { break; } } else { /* unknown enterprise format, what to do?? */ - ti = proto_tree_add_text(tree, tvb, offset, -1, "Unknown enterprise format"); - counter_data_tree = proto_item_add_subtree(ti, ett_sflow_5_counters_record); + counter_data_tree = proto_tree_add_subtree(tree, tvb, offset, -1, + ett_sflow_5_counters_record, &ti, "Unknown enterprise format"); proto_tree_add_uint_format_value(counter_data_tree, hf_sflow_enterprise, tvb, offset, -1, enterprise, "Non-standard sFlow (%u)", enterprise); } @@ -2274,9 +2268,8 @@ dissect_sflow_245_samples(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g format = sample_type & 0x00000fff; if (enterprise == ENTERPRISE_DEFAULT) { /* only accept default enterprise 0 (InMon sFlow) */ - ti = proto_tree_add_text(tree, tvb, offset, -1, "%s", + sflow_245_sample_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_sflow_245_sample, &ti, val_to_str_const(format, sflow_245_sampletype, "Unknown sample format")); - sflow_245_sample_tree = proto_item_add_subtree(ti, ett_sflow_245_sample); proto_tree_add_uint_format_value(sflow_245_sample_tree, hf_sflow_enterprise, tvb, offset, 4, enterprise, "standard sFlow (%u)", enterprise); proto_tree_add_item(sflow_245_sample_tree, hf_sflow_245_sampletype12, tvb, offset, 4, ENC_BIG_ENDIAN); @@ -2307,16 +2300,15 @@ dissect_sflow_245_samples(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g /* current offset points to sample length field, which is 4 bytes from the beginning of the packet*/ offset += length; } else { /* unknown enterprise format, what to do?? */ - ti = proto_tree_add_text(tree, tvb, offset, -1, "Unknown enterprise format"); - sflow_245_sample_tree = proto_item_add_subtree(ti, ett_sflow_245_sample); + sflow_245_sample_tree = proto_tree_add_subtree(tree, tvb, offset, -1, + ett_sflow_245_sample, &ti, "Unknown enterprise format"); proto_tree_add_uint_format_value(sflow_245_sample_tree, hf_sflow_enterprise, tvb, offset, -1, enterprise, "Non-standard sFlow (%u)", enterprise); } } else { /* version 2 or 4 */ - ti = proto_tree_add_text(tree, tvb, offset, -1, "%s", + sflow_245_sample_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_sflow_245_sample, &ti, val_to_str_const(sample_type, sflow_245_sampletype, "Unknown sample type")); - sflow_245_sample_tree = proto_item_add_subtree(ti, ett_sflow_245_sample); proto_tree_add_item(sflow_245_sample_tree, hf_sflow_245_sampletype, tvb, offset, 4, ENC_BIG_ENDIAN); offset += 4; diff --git a/epan/dissectors/packet-sip.c b/epan/dissectors/packet-sip.c index c5cc5f95b6..659f4d73ab 100644 --- a/epan/dissectors/packet-sip.c +++ b/epan/dissectors/packet-sip.c @@ -2617,10 +2617,9 @@ dissect_sip_common(tvbuff_t *tvb, int offset, int remaining_length, packet_info case OTHER_LINE: if (sip_tree) { - ti_a = proto_tree_add_text(sip_tree, tvb, offset, next_offset, - "%s line: %s", descr, + reqresp_tree = proto_tree_add_subtree_format(sip_tree, tvb, offset, next_offset, + ett_sip_reqresp, NULL, "%s line: %s", descr, tvb_format_text(tvb, offset, linelen)); - reqresp_tree = proto_item_add_subtree(ti_a, ett_sip_reqresp); /* XXX: Is adding to 'reqresp_tree as intended ? Changed from original 'sip_tree' */ proto_tree_add_text(reqresp_tree, tvb, offset, -1, "Continuation data"); } diff --git a/epan/dissectors/packet-sita.c b/epan/dissectors/packet-sita.c index d35424b88e..2007993ea7 100644 --- a/epan/dissectors/packet-sita.c +++ b/epan/dissectors/packet-sita.c @@ -143,12 +143,12 @@ dissect_sita(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) proto_tree_add_uint(sita_tree, hf_proto, tvb, 0, 0, proto); flags_string = format_flags_string(flags, flags_str); - ti = proto_tree_add_text(sita_tree, tvb, 0, 0, "Flags: 0x%02x (From %s)%s%s", + sita_flags_tree = proto_tree_add_subtree_format(sita_tree, tvb, 0, 0, + ett_sita_flags, NULL, "Flags: 0x%02x (From %s)%s%s", flags, ((flags & SITA_FRAME_DIR) == SITA_FRAME_DIR_TXED) ? IOP : REMOTE, strlen(flags_string) ? ", " : "", flags_string); - sita_flags_tree = proto_item_add_subtree(ti, ett_sita_flags); proto_tree_add_boolean(sita_flags_tree, hf_droppedframe, tvb, 0, 0, flags); proto_tree_add_boolean(sita_flags_tree, hf_dir, tvb, 0, 0, flags); diff --git a/epan/dissectors/packet-skinny.c b/epan/dissectors/packet-skinny.c index 47d09825cf..aa6ab687df 100644 --- a/epan/dissectors/packet-skinny.c +++ b/epan/dissectors/packet-skinny.c @@ -1449,7 +1449,6 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da /* Set up structures we will need to add the protocol subtree and manage it */ proto_item *ti; proto_tree *skinny_tree = NULL; - proto_item *ti_sub; proto_tree *skinny_sub_tree; proto_tree *skinny_sub_tree_sav; proto_tree *skinny_sub_tree_sav_sav; @@ -1795,8 +1794,8 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da capCount=tvb_get_letohl(tvb, offset+28); for ( i = 0; i < MAX_CUSTOM_PICTURES; i++ ) { if (i < capCount) { - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 20, "customPictureFormat[%d]", i); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree_format(skinny_tree, tvb, offset, 20, ett_skinny_tree, NULL, + "customPictureFormat[%d]", i); proto_tree_add_item(skinny_sub_tree, hf_skinny_pictureWidth, tvb, count, 4, ENC_LITTLE_ENDIAN); count+= 4; proto_tree_add_item(skinny_sub_tree, hf_skinny_pictureHeight, tvb, count, 4, ENC_LITTLE_ENDIAN); @@ -1811,8 +1810,7 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da count+=20; } } - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 8, "confResources"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree(skinny_tree, tvb, offset, 8, ett_skinny_tree, NULL, "confResources"); proto_tree_add_item(skinny_sub_tree, hf_skinny_activeStreamsOnRegistration, tvb, count, 4, ENC_LITTLE_ENDIAN); count+= 4; proto_tree_add_item(skinny_sub_tree, hf_skinny_maxBW, tvb, count, 4, ENC_LITTLE_ENDIAN); @@ -1821,14 +1819,13 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da count+= 4; skinny_sub_tree_sav = skinny_sub_tree; for ( i = 0; i < MAX_SERVICE_TYPE; i++ ) { - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 20, "serviceResource[%d]", i); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree_format(skinny_sub_tree_sav, tvb, offset, 20, ett_skinny_tree, NULL, + "serviceResource[%d]", i); proto_tree_add_item(skinny_sub_tree, hf_skinny_layoutCount, tvb, count, 4, ENC_LITTLE_ENDIAN); count+= 4; skinny_sub_tree_sav_sav = skinny_sub_tree_sav; for ( t = 0; t < MAX_LAYOUT_WITH_SAME_SERVICE; t++ ) { - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 20, "layouts[%d]", t); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree_format(skinny_sub_tree_sav, tvb, offset, 20, ett_skinny_tree, NULL, "layouts[%d]", t); proto_tree_add_item(skinny_sub_tree, hf_skinny_layout, tvb, count, 4, ENC_LITTLE_ENDIAN); count+= 4; } @@ -1845,8 +1842,7 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da capCount=tvb_get_letohl(tvb, offset+12); for ( i = 0; i < StationMaxCapabilities; i++ ) { if (i < capCount) { - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 20, "audiocaps[%d]", i); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree_format(skinny_tree, tvb, offset, 20, ett_skinny_tree, NULL, "audiocaps[%d]", i); proto_tree_add_item(skinny_sub_tree, hf_skinny_payloadCapability, tvb, count, 4, ENC_LITTLE_ENDIAN); count+= 4; proto_tree_add_item(skinny_sub_tree, hf_skinny_maxFramesPerPacket, tvb, count, 2, ENC_LITTLE_ENDIAN); @@ -1862,8 +1858,7 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da capCount=tvb_get_letohl(tvb, offset+16); for ( i = 0; i < StationMaxVideoCapabilities; i++ ) { if (i < capCount) { - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 20, "vidCaps[%d]", i); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree_format(skinny_tree, tvb, offset, 20, ett_skinny_tree, NULL, "vidCaps[%d]", i); proto_tree_add_item(skinny_sub_tree, hf_skinny_payloadCapability, tvb, count, 4, ENC_LITTLE_ENDIAN); count+= 4; proto_tree_add_item(skinny_sub_tree, hf_skinny_transmitOrReceive, tvb, count, 4, ENC_LITTLE_ENDIAN); @@ -1872,8 +1867,7 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da count+= 4; skinny_sub_tree_sav = skinny_sub_tree; for ( t = 0; t < MAX_LEVEL_PREFERENCE; t++ ) { - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 20, "levelPreference[%d]", t); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree_format(skinny_sub_tree_sav, tvb, offset, 20, ett_skinny_tree, NULL, "levelPreference[%d]", t); proto_tree_add_item(skinny_sub_tree, hf_skinny_transmitPreference, tvb, count, 4, ENC_LITTLE_ENDIAN); count+= 4; proto_tree_add_item(skinny_sub_tree, hf_skinny_format, tvb, count, 4, ENC_LITTLE_ENDIAN); @@ -1890,8 +1884,7 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da val = count; /* H.261 */ - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "h261VideoCapability"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree(skinny_sub_tree_sav, tvb, offset, 8, ett_skinny_tree, NULL, "h261VideoCapability"); proto_tree_add_item(skinny_sub_tree, hf_skinny_temporalSpatialTradeOffCapability, tvb, count, 4, ENC_LITTLE_ENDIAN); count+= 4; proto_tree_add_item(skinny_sub_tree, hf_skinny_stillImageTransmission, tvb, count, 4, ENC_LITTLE_ENDIAN); @@ -1899,8 +1892,7 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da /* H.263 */ count = val; - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "h263VideoCapability"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree(skinny_sub_tree_sav, tvb, offset, 8, ett_skinny_tree, NULL, "h263VideoCapability"); proto_tree_add_item(skinny_sub_tree, hf_skinny_h263_capability_bitfield, tvb, count, 4, ENC_LITTLE_ENDIAN); count+= 4; proto_tree_add_item(skinny_sub_tree, hf_skinny_annexNandWFutureUse, tvb, count, 4, ENC_LITTLE_ENDIAN); @@ -1908,8 +1900,7 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da /* Video */ count = val; - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "vieoVideoCapability"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree(skinny_sub_tree_sav, tvb, offset, 8, ett_skinny_tree, NULL, "vieoVideoCapability"); proto_tree_add_item(skinny_sub_tree, hf_skinny_modelNumber, tvb, count, 4, ENC_LITTLE_ENDIAN); count+= 4; proto_tree_add_item(skinny_sub_tree, hf_skinny_bandwidth, tvb, count, 4, ENC_LITTLE_ENDIAN); @@ -1921,8 +1912,7 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da capCount=tvb_get_letohl(tvb, offset+20); for ( i = 0; i < StationMaxDataCapabilities; i++ ) { if ( i < capCount) { - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 20, "dataCaps[%d]", i); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree_format(skinny_tree, tvb, offset, 20, ett_skinny_tree, NULL, "dataCaps[%d]", i); proto_tree_add_item(skinny_sub_tree, hf_skinny_payloadCapability, tvb, count, 4, ENC_LITTLE_ENDIAN); count+= 4; proto_tree_add_item(skinny_sub_tree, hf_skinny_transmitOrReceive, tvb, count, 4, ENC_LITTLE_ENDIAN); @@ -2065,8 +2055,7 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da capCount=tvb_get_letohl(tvb, offset+28); for ( i = 0; i < MAX_CUSTOM_PICTURES; i++ ) { if (i < capCount) { - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 20, "customPictureFormat[%d]", i); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree_format(skinny_tree, tvb, offset, 20, ett_skinny_tree, NULL, "customPictureFormat[%d]", i); proto_tree_add_item(skinny_sub_tree, hf_skinny_pictureWidth, tvb, count, 4, ENC_LITTLE_ENDIAN); count+= 4; proto_tree_add_item(skinny_sub_tree, hf_skinny_pictureHeight, tvb, count, 4, ENC_LITTLE_ENDIAN); @@ -2081,8 +2070,7 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da count+=20; } } - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 8, "confResources"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree(skinny_tree, tvb, offset, 8, ett_skinny_tree, NULL, "confResources"); proto_tree_add_item(skinny_sub_tree, hf_skinny_activeStreamsOnRegistration, tvb, count, 4, ENC_LITTLE_ENDIAN); count+= 4; proto_tree_add_item(skinny_sub_tree, hf_skinny_maxBW, tvb, count, 4, ENC_LITTLE_ENDIAN); @@ -2091,14 +2079,12 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da count+= 4; skinny_sub_tree_sav = skinny_sub_tree; for ( i = 0; i < MAX_SERVICE_TYPE; i++ ) { - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 20, "serviceResource[%d]", i); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree_format(skinny_sub_tree_sav, tvb, offset, 20, ett_skinny_tree, NULL, "serviceResource[%d]", i); proto_tree_add_item(skinny_sub_tree, hf_skinny_layoutCount, tvb, count, 4, ENC_LITTLE_ENDIAN); count+= 4; skinny_sub_tree_sav_sav = skinny_sub_tree_sav; for ( t = 0; t < MAX_LAYOUT_WITH_SAME_SERVICE; t++ ) { - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 20, "layouts[%d]", t); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree_format(skinny_sub_tree_sav, tvb, offset, 20, ett_skinny_tree, NULL, "layouts[%d]", t); proto_tree_add_item(skinny_sub_tree, hf_skinny_layout, tvb, count, 4, ENC_LITTLE_ENDIAN); count+= 4; } @@ -2115,8 +2101,7 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da capCount=tvb_get_letohl(tvb, offset+12); for ( i = 0; i < StationMaxCapabilities; i++ ) { if (i < capCount) { - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 20, "audiocaps[%d]", i); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree_format(skinny_tree, tvb, offset, 20, ett_skinny_tree, NULL, "audiocaps[%d]", i); proto_tree_add_item(skinny_sub_tree, hf_skinny_payloadCapability, tvb, count, 4, ENC_LITTLE_ENDIAN); count+= 4; proto_tree_add_item(skinny_sub_tree, hf_skinny_maxFramesPerPacket, tvb, count, 2, ENC_LITTLE_ENDIAN); @@ -2132,8 +2117,7 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da capCount=tvb_get_letohl(tvb, offset+16); for ( i = 0; i < StationMaxVideoCapabilities; i++ ) { if (i < capCount) { - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 20, "vidCaps[%d]", i); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree_format(skinny_tree, tvb, offset, 20, ett_skinny_tree, NULL, "vidCaps[%d]", i); proto_tree_add_item(skinny_sub_tree, hf_skinny_payloadCapability, tvb, count, 4, ENC_LITTLE_ENDIAN); count+= 4; proto_tree_add_item(skinny_sub_tree, hf_skinny_transmitOrReceive, tvb, count, 4, ENC_LITTLE_ENDIAN); @@ -2142,8 +2126,7 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da count+= 4; skinny_sub_tree_sav = skinny_sub_tree; for ( t = 0; t < MAX_LEVEL_PREFERENCE; t++ ) { - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 20, "levelPreference[%d]", t); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree_format(skinny_sub_tree_sav, tvb, offset, 20, ett_skinny_tree, NULL, "levelPreference[%d]", t); proto_tree_add_item(skinny_sub_tree, hf_skinny_transmitPreference, tvb, count, 4, ENC_LITTLE_ENDIAN); count+= 4; proto_tree_add_item(skinny_sub_tree, hf_skinny_format, tvb, count, 4, ENC_LITTLE_ENDIAN); @@ -2160,8 +2143,7 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da val = count; /* H.261 */ - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "h261VideoCapability"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree(skinny_sub_tree_sav, tvb, offset, 8, ett_skinny_tree, NULL, "h261VideoCapability"); proto_tree_add_item(skinny_sub_tree, hf_skinny_temporalSpatialTradeOffCapability, tvb, count, 4, ENC_LITTLE_ENDIAN); count+= 4; proto_tree_add_item(skinny_sub_tree, hf_skinny_stillImageTransmission, tvb, count, 4, ENC_LITTLE_ENDIAN); @@ -2169,8 +2151,7 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da /* H.263 */ count = val; - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "h263VideoCapability"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree(skinny_sub_tree_sav, tvb, offset, 8, ett_skinny_tree, NULL, "h263VideoCapability"); proto_tree_add_item(skinny_sub_tree, hf_skinny_h263_capability_bitfield, tvb, count, 4, ENC_LITTLE_ENDIAN); count+= 4; proto_tree_add_item(skinny_sub_tree, hf_skinny_annexNandWFutureUse, tvb, count, 4, ENC_LITTLE_ENDIAN); @@ -2178,8 +2159,7 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da /* Video */ count = val; - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "vieoVideoCapability"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree(skinny_sub_tree_sav, tvb, offset, 8, ett_skinny_tree, NULL, "vieoVideoCapability"); proto_tree_add_item(skinny_sub_tree, hf_skinny_modelNumber, tvb, count, 4, ENC_LITTLE_ENDIAN); count+= 4; proto_tree_add_item(skinny_sub_tree, hf_skinny_bandwidth, tvb, count, 4, ENC_LITTLE_ENDIAN); @@ -2191,8 +2171,7 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da capCount=tvb_get_letohl(tvb, offset+20); for ( i = 0; i < StationMaxDataCapabilities; i++ ) { if ( i < capCount) { - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 20, "dataCaps[%d]", i); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree_format(skinny_tree, tvb, offset, 20, ett_skinny_tree, NULL, "dataCaps[%d]", i); proto_tree_add_item(skinny_sub_tree, hf_skinny_payloadCapability, tvb, count, 4, ENC_LITTLE_ENDIAN); count+= 4; proto_tree_add_item(skinny_sub_tree, hf_skinny_transmitOrReceive, tvb, count, 4, ENC_LITTLE_ENDIAN); @@ -2416,8 +2395,7 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da i += 4; proto_tree_add_item(skinny_tree, hf_skinny_callSecurityStatus, tvb, i, 4, ENC_LITTLE_ENDIAN); i += 4; - ti_sub = proto_tree_add_text(skinny_tree, tvb, i, 8, "partyPIRestrictionBits"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree(skinny_tree, tvb, i, 8, ett_skinny_tree, NULL, "partyPIRestrictionBits"); proto_tree_add_item(skinny_sub_tree, hf_skinny_partyPIRestrictionBits_CallingPartyName, tvb, i, 4, ENC_LITTLE_ENDIAN); proto_tree_add_item(skinny_sub_tree, hf_skinny_partyPIRestrictionBits_CallingPartyNumber, tvb, i, 4, ENC_LITTLE_ENDIAN); proto_tree_add_item(skinny_sub_tree, hf_skinny_partyPIRestrictionBits_CalledPartyName, tvb, i, 4, ENC_LITTLE_ENDIAN); @@ -2910,22 +2888,20 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da si->callId = tvb_get_letohl(tvb, offset+28); /* add audio part of union */ - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 12, "audioParameters"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree(skinny_tree, tvb, offset, 12, ett_skinny_tree, NULL, "audioParameters"); proto_tree_add_item(skinny_sub_tree, hf_skinny_millisecondPacketSize, tvb, offset+44, 4, ENC_LITTLE_ENDIAN); proto_tree_add_item(skinny_sub_tree, hf_skinny_echoCancelType, tvb, offset+48, 4, ENC_LITTLE_ENDIAN); proto_tree_add_item(skinny_sub_tree, hf_skinny_g723BitRate, tvb, offset+52, 4, ENC_LITTLE_ENDIAN); /* add video part of union */ - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 30, "vidParameters"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree(skinny_tree, tvb, offset, 30, ett_skinny_tree, NULL, "vidParameters"); proto_tree_add_item(skinny_sub_tree, hf_skinny_bitRate, tvb, offset+44, 4, ENC_LITTLE_ENDIAN); proto_tree_add_item(skinny_sub_tree, hf_skinny_pictureFormatCount, tvb, offset+48, 4, ENC_LITTLE_ENDIAN); skinny_sub_tree_sav = skinny_sub_tree; count = offset+52; for ( i = 0; i < MAX_PICTURE_FORMAT; i++ ) { - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8 * MAX_PICTURE_FORMAT, "pictureFormat[%d]", i); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree_format(skinny_sub_tree_sav, tvb, offset, 8 * MAX_PICTURE_FORMAT, + ett_skinny_tree, NULL, "pictureFormat[%d]", i); proto_tree_add_item(skinny_sub_tree, hf_skinny_format, tvb, count, 4, ENC_LITTLE_ENDIAN); count += 4; proto_tree_add_item(skinny_sub_tree, hf_skinny_MPI, tvb, count, 4, ENC_LITTLE_ENDIAN); @@ -2937,31 +2913,27 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da val = count; /* add H261 part of union */ - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "h261VideoCapability"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree(skinny_sub_tree_sav, tvb, offset, 8, ett_skinny_tree, NULL, "h261VideoCapability"); proto_tree_add_item(skinny_sub_tree, hf_skinny_temporalSpatialTradeOffCapability, tvb, count, 4, ENC_LITTLE_ENDIAN); count += 4; proto_tree_add_item(skinny_sub_tree, hf_skinny_stillImageTransmission, tvb, count, 4, ENC_LITTLE_ENDIAN); /* add H263 part of union */ count = val; - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "h263VideoCapability"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree(skinny_sub_tree_sav, tvb, offset, 8, ett_skinny_tree, NULL, "h263VideoCapability"); proto_tree_add_item(skinny_sub_tree, hf_skinny_h263_capability_bitfield, tvb, count, 4, ENC_LITTLE_ENDIAN); count += 4; proto_tree_add_item(skinny_sub_tree, hf_skinny_annexNandWFutureUse, tvb, count, 4, ENC_LITTLE_ENDIAN); /* add Vieo part of union */ count = val; - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "vieoVideoCapability"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree(skinny_sub_tree_sav, tvb, offset, 8, ett_skinny_tree, NULL, "vieoVideoCapability"); proto_tree_add_item(skinny_sub_tree, hf_skinny_modelNumber, tvb, count, 4, ENC_LITTLE_ENDIAN); count += 4; proto_tree_add_item(skinny_sub_tree, hf_skinny_bandwidth, tvb, count, 4, ENC_LITTLE_ENDIAN); /* add data part of union */ - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 8, "dataParameters"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree(skinny_tree, tvb, offset, 8, ett_skinny_tree, NULL, "dataParameters"); proto_tree_add_item(skinny_sub_tree, hf_skinny_protocolDependentData, tvb, offset+44, 4, ENC_LITTLE_ENDIAN); proto_tree_add_item(skinny_sub_tree, hf_skinny_maxBitRate, tvb, offset+48, 4, ENC_LITTLE_ENDIAN); break; @@ -2980,22 +2952,20 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da si->callId = tvb_get_letohl(tvb, offset+32); /* add audio part of union */ - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 12, "audioParameters"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree(skinny_tree, tvb, offset, 12, ett_skinny_tree, NULL, "audioParameters"); proto_tree_add_item(skinny_sub_tree, hf_skinny_millisecondPacketSize, tvb, offset+48, 4, ENC_LITTLE_ENDIAN); proto_tree_add_item(skinny_sub_tree, hf_skinny_echoCancelType, tvb, offset+52, 4, ENC_LITTLE_ENDIAN); proto_tree_add_item(skinny_sub_tree, hf_skinny_g723BitRate, tvb, offset+56, 4, ENC_LITTLE_ENDIAN); /* add video part of union */ - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 30, "vidParameters"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree(skinny_tree, tvb, offset, 30, ett_skinny_tree, NULL, "vidParameters"); proto_tree_add_item(skinny_sub_tree, hf_skinny_bitRate, tvb, offset+48, 4, ENC_LITTLE_ENDIAN); proto_tree_add_item(skinny_sub_tree, hf_skinny_pictureFormatCount, tvb, offset+52, 4, ENC_LITTLE_ENDIAN); skinny_sub_tree_sav = skinny_sub_tree; count = offset+56; for ( i = 0; i < MAX_PICTURE_FORMAT; i++ ) { - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8 * MAX_PICTURE_FORMAT, "pictureFormat[%d]", i); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree_format(skinny_sub_tree_sav, tvb, offset, 8 * MAX_PICTURE_FORMAT, + ett_skinny_tree, NULL, "pictureFormat[%d]", i); proto_tree_add_item(skinny_sub_tree, hf_skinny_format, tvb, count, 4, ENC_LITTLE_ENDIAN); count += 4; proto_tree_add_item(skinny_sub_tree, hf_skinny_MPI, tvb, count, 4, ENC_LITTLE_ENDIAN); @@ -3007,31 +2977,27 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da val = count; /* add H261 part of union */ - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "h261VideoCapability"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree(skinny_sub_tree_sav, tvb, offset, 8, ett_skinny_tree, NULL, "h261VideoCapability"); proto_tree_add_item(skinny_sub_tree, hf_skinny_temporalSpatialTradeOffCapability, tvb, count, 4, ENC_LITTLE_ENDIAN); count += 4; proto_tree_add_item(skinny_sub_tree, hf_skinny_stillImageTransmission, tvb, count, 4, ENC_LITTLE_ENDIAN); /* add H263 part of union */ count = val; - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "h263VideoCapability"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree(skinny_sub_tree_sav, tvb, offset, 8, ett_skinny_tree, NULL, "h263VideoCapability"); proto_tree_add_item(skinny_sub_tree, hf_skinny_h263_capability_bitfield, tvb, count, 4, ENC_LITTLE_ENDIAN); count += 4; proto_tree_add_item(skinny_sub_tree, hf_skinny_annexNandWFutureUse, tvb, count, 4, ENC_LITTLE_ENDIAN); /* add Vieo part of union */ count = val; - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "vieoVideoCapability"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree(skinny_sub_tree_sav, tvb, offset, 8, ett_skinny_tree, NULL, "vieoVideoCapability"); proto_tree_add_item(skinny_sub_tree, hf_skinny_modelNumber, tvb, count, 4, ENC_LITTLE_ENDIAN); count += 4; proto_tree_add_item(skinny_sub_tree, hf_skinny_bandwidth, tvb, count, 4, ENC_LITTLE_ENDIAN); /* add data part of union */ - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 8, "dataParameters"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree(skinny_tree, tvb, offset, 8, ett_skinny_tree, NULL, "dataParameters"); proto_tree_add_item(skinny_sub_tree, hf_skinny_protocolDependentData, tvb, offset+48, 4, ENC_LITTLE_ENDIAN); proto_tree_add_item(skinny_sub_tree, hf_skinny_maxBitRate, tvb, offset+52, 4, ENC_LITTLE_ENDIAN); break; @@ -3059,47 +3025,40 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da /* not sure of format */ /* show videoFastUpdateGOB */ - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 8, "videoFastUpdateGOB"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree(skinny_tree, tvb, offset, 8, ett_skinny_tree, NULL, "videoFastUpdateGOB"); proto_tree_add_item(skinny_sub_tree, hf_skinny_firstGOB, tvb, offset+28, 4, ENC_LITTLE_ENDIAN); proto_tree_add_item(skinny_sub_tree, hf_skinny_numberOfGOBs, tvb, offset+32, 4, ENC_LITTLE_ENDIAN); /* show videoFastUpdateMB */ - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 8, "videoFastUpdateGOB"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree(skinny_tree, tvb, offset, 8, ett_skinny_tree, NULL, "videoFastUpdateGOB"); proto_tree_add_item(skinny_sub_tree, hf_skinny_firstGOB, tvb, offset+28, 4, ENC_LITTLE_ENDIAN); proto_tree_add_item(skinny_sub_tree, hf_skinny_firstMB, tvb, offset+32, 4, ENC_LITTLE_ENDIAN); proto_tree_add_item(skinny_sub_tree, hf_skinny_numberOfMBs, tvb, offset+36, 4, ENC_LITTLE_ENDIAN); /* show lostPicture */ - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 8, "lostPicture"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree(skinny_tree, tvb, offset, 8, ett_skinny_tree, NULL, "lostPicture"); proto_tree_add_item(skinny_sub_tree, hf_skinny_pictureNumber, tvb, offset+28, 4, ENC_LITTLE_ENDIAN); proto_tree_add_item(skinny_sub_tree, hf_skinny_longTermPictureIndex, tvb, offset+32, 4, ENC_LITTLE_ENDIAN); /* show lostPartialPicture */ - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 8, "lostPartialPicture"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree(skinny_tree, tvb, offset, 8, ett_skinny_tree, NULL, "lostPartialPicture"); proto_tree_add_item(skinny_sub_tree, hf_skinny_pictureNumber, tvb, offset+28, 4, ENC_LITTLE_ENDIAN); proto_tree_add_item(skinny_sub_tree, hf_skinny_longTermPictureIndex, tvb, offset+32, 4, ENC_LITTLE_ENDIAN); proto_tree_add_item(skinny_sub_tree, hf_skinny_firstMB, tvb, offset+36, 4, ENC_LITTLE_ENDIAN); proto_tree_add_item(skinny_sub_tree, hf_skinny_numberOfMBs, tvb, offset+40, 4, ENC_LITTLE_ENDIAN); /* show recoveryReferencePicture */ - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 8, "recoveryReferencePicture"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree(skinny_tree, tvb, offset, 8, ett_skinny_tree, NULL, "recoveryReferencePicture"); proto_tree_add_item(skinny_sub_tree, hf_skinny_recoveryReferencePictureCount, tvb, offset+28, 4, ENC_LITTLE_ENDIAN); skinny_sub_tree_sav = skinny_sub_tree; for ( i = 0; i < MAX_REFERENCE_PICTURE; i++ ) { - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "recoveryReferencePicture[%d]", i); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree_format(skinny_sub_tree_sav, tvb, offset, 8, ett_skinny_tree, NULL, "recoveryReferencePicture[%d]", i); proto_tree_add_item(skinny_sub_tree, hf_skinny_pictureNumber, tvb, offset+32+(i*8), 4, ENC_LITTLE_ENDIAN); proto_tree_add_item(skinny_sub_tree, hf_skinny_longTermPictureIndex, tvb, offset+36+(i*8), 4, ENC_LITTLE_ENDIAN); } /* show temporalSpatialTradeOff */ - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 4, "temporalSpatialTradeOff"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); + skinny_sub_tree = proto_tree_add_subtree(skinny_tree, tvb, offset, 4, ett_skinny_tree, NULL, "temporalSpatialTradeOff"); proto_tree_add_item(skinny_sub_tree, hf_skinny_temporalSpatialTradeOff, tvb, offset+28, 4, ENC_LITTLE_ENDIAN); break; diff --git a/epan/dissectors/packet-smb-logon.c b/epan/dissectors/packet-smb-logon.c index 37800312c3..3cf9e9d762 100644 --- a/epan/dissectors/packet-smb-logon.c +++ b/epan/dissectors/packet-smb-logon.c @@ -442,8 +442,7 @@ dissect_announce_change(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, { /*** 0x0A ( Announce change to UAS or SAM ) ***/ guint32 info_count; - proto_item *ti = NULL; - proto_tree *info_tree = NULL; + proto_tree *info_tree; guint32 db_index; guint32 domain_sid_size; @@ -490,11 +489,8 @@ dissect_announce_change(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, while (info_count != 0) { db_index = tvb_get_letohl(tvb, offset); - if (tree) { - ti = proto_tree_add_text(tree, tvb, offset, 20, - "DBChange Info Structure: index %u", db_index); - info_tree = proto_item_add_subtree(ti, ett_smb_db_info); - } + info_tree = proto_tree_add_subtree_format(tree, tvb, offset, 20, + ett_smb_db_info, NULL, "DBChange Info Structure: index %u", db_index); proto_tree_add_uint(info_tree, hf_db_index, tvb, offset, 4, db_index); diff --git a/epan/dissectors/packet-smb-pipe.c b/epan/dissectors/packet-smb-pipe.c index aabb34fc45..d255fe98a4 100644 --- a/epan/dissectors/packet-smb-pipe.c +++ b/epan/dissectors/packet-smb-pipe.c @@ -2456,8 +2456,8 @@ dissect_response_data(tvbuff_t *tvb, packet_info *pinfo, int convert, const char *label; gint ett; const item_t *resp_data; - proto_item *data_item; - proto_tree *data_tree; + proto_item *data_item = NULL; + proto_tree *data_tree = NULL; proto_item *entry_item; proto_tree *entry_tree; guint i, j; @@ -2489,18 +2489,9 @@ dissect_response_data(tvbuff_t *tvb, packet_info *pinfo, int convert, ett = *lanman->ett_data_entry_list; else ett = ett_lanman_unknown_entries; - data_item = proto_tree_add_text(tree, tvb, offset, -1, "%s", label); - data_tree = proto_item_add_subtree(data_item, ett); - } else { - data_item = NULL; - data_tree = NULL; + + data_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett, &data_item, label); } - } else { - /* - * Just leave it at the top level. - */ - data_item = NULL; - data_tree = tree; } if (trp->data_descrip == NULL) { diff --git a/epan/dissectors/packet-smb.c b/epan/dissectors/packet-smb.c index 18169cfa22..951ba8009a 100644 --- a/epan/dissectors/packet-smb.c +++ b/epan/dissectors/packet-smb.c @@ -2297,7 +2297,6 @@ struct negprot_dialects { static int dissect_negprot_request(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, proto_tree *smb_tree _U_, smb_info_t *si) { - proto_item *it = NULL; proto_tree *tr = NULL; guint16 bc; guint8 wc; @@ -2311,8 +2310,7 @@ dissect_negprot_request(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int if (tree) { tvb_ensure_bytes_exist(tvb, offset, bc); - it = proto_tree_add_text(tree, tvb, offset, bc, "Requested Dialects"); - tr = proto_item_add_subtree(it, ett_smb_dialects); + tr = proto_tree_add_subtree(tree, tvb, offset, bc, ett_smb_dialects, NULL, "Requested Dialects"); } if (!pinfo->fd->flags.visited && si->sip) { @@ -5396,19 +5394,15 @@ dissect_search_resume_key(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *parent_tree, int offset, guint16 *bcp, gboolean *trunc, gboolean has_find_id, smb_info_t *si) { - proto_item *item = NULL; - proto_tree *tree = NULL; + proto_tree *tree; int fn_len; const char *fn; char fname[11+1]; DISSECTOR_ASSERT(si); - if (parent_tree) { - item = proto_tree_add_text(parent_tree, tvb, offset, 21, - "Resume Key"); - tree = proto_item_add_subtree(item, ett_smb_search_resume_key); - } + tree = proto_tree_add_subtree(parent_tree, tvb, offset, 21, + ett_smb_search_resume_key, NULL, "Resume Key"); /* reserved byte */ CHECK_BYTE_COUNT_SUBR(1); @@ -5456,19 +5450,15 @@ dissect_search_dir_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, int offset, guint16 *bcp, gboolean *trunc, gboolean has_find_id, smb_info_t *si) { - proto_item *item = NULL; - proto_tree *tree = NULL; + proto_tree *tree; int fn_len; const char *fn; char fname[13+1]; DISSECTOR_ASSERT(si); - if (parent_tree) { - item = proto_tree_add_text(parent_tree, tvb, offset, 46, - "Directory Information"); - tree = proto_item_add_subtree(item, ett_smb_search_dir_info); - } + tree = proto_tree_add_subtree(parent_tree, tvb, offset, 46, + ett_smb_search_dir_info, NULL, "Directory Information"); /* resume key */ offset = dissect_search_resume_key(tvb, pinfo, tree, offset, bcp, @@ -5821,11 +5811,9 @@ dissect_locking_andx_request(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree if (un) { old_offset = offset; - it = proto_tree_add_text(tree, tvb, offset, -1, "Unlocks"); - tr = proto_item_add_subtree(it, ett_smb_unlocks); + tr = proto_tree_add_subtree(tree, tvb, offset, -1, ett_smb_unlocks, &it, "Unlocks"); while (un--) { - proto_item *litem_2 = NULL; - proto_tree *ltree_2 = NULL; + proto_tree *ltree_2; if (lt&0x10) { guint64 val; guint16 lock_pid; @@ -5833,8 +5821,7 @@ dissect_locking_andx_request(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree guint64 lock_length; /* large lock format */ - litem_2 = proto_tree_add_text(tr, tvb, offset, 20, "Unlock"); - ltree_2 = proto_item_add_subtree(litem_2, ett_smb_unlock); + ltree_2 = proto_tree_add_subtree(tr, tvb, offset, 20, ett_smb_unlock, NULL, "Unlock"); /* PID */ CHECK_BYTE_COUNT(2); @@ -5875,8 +5862,7 @@ dissect_locking_andx_request(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree } } else { /* normal lock format */ - litem_2 = proto_tree_add_text(tr, tvb, offset, 10, "Unlock"); - ltree_2 = proto_item_add_subtree(litem_2, ett_smb_unlock); + ltree_2 = proto_tree_add_subtree(tr, tvb, offset, 10, ett_smb_unlock, NULL, "Unlock"); /* PID */ CHECK_BYTE_COUNT(2); @@ -5902,11 +5888,9 @@ dissect_locking_andx_request(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree if (ln) { old_offset = offset; - it = proto_tree_add_text(tree, tvb, offset, -1, "Locks"); - tr = proto_item_add_subtree(it, ett_smb_locks); + tr = proto_tree_add_subtree(tree, tvb, offset, -1, ett_smb_locks, &it, "Locks"); while (ln--) { - proto_item *litem_2 = NULL; - proto_tree *ltree_2 = NULL; + proto_tree *ltree_2; if (lt&0x10) { guint64 val; guint16 lock_pid; @@ -5914,8 +5898,7 @@ dissect_locking_andx_request(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree guint64 lock_length; /* large lock format */ - litem_2 = proto_tree_add_text(tr, tvb, offset, 20, "Lock"); - ltree_2 = proto_item_add_subtree(litem_2, ett_smb_lock); + ltree_2 = proto_tree_add_subtree(tr, tvb, offset, 20, ett_smb_lock, NULL, "Lock"); /* PID */ CHECK_BYTE_COUNT(2); @@ -5956,8 +5939,7 @@ dissect_locking_andx_request(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree } } else { /* normal lock format */ - litem_2 = proto_tree_add_text(tr, tvb, offset, 10, "Lock"); - ltree_2 = proto_item_add_subtree(litem_2, ett_smb_lock); + ltree_2 = proto_tree_add_subtree(tr, tvb, offset, 10, ett_smb_lock, NULL, "Lock"); /* PID */ CHECK_BYTE_COUNT(2); @@ -6017,7 +5999,6 @@ dissect_locking_andx_response(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre ld = (smb_locking_saved_info_t *)si->sip->extra_info; if (ld != NULL) { - proto_item *lit; proto_tree *ltr; smb_lock_info_t *li; if (tree) { @@ -6034,8 +6015,7 @@ dissect_locking_andx_response(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre proto_tree_add_uint(ltree, hf_smb_number_of_unlocks, tvb, 0, 0, ld->num_unlock); proto_tree_add_uint(ltree, hf_smb_number_of_locks, tvb, 0, 0, ld->num_lock); - lit = proto_tree_add_text(ltree, tvb, 0, 0, "Locks"); - ltr = proto_item_add_subtree(lit, ett_smb_lock); + ltr = proto_tree_add_subtree(ltree, tvb, 0, 0, ett_smb_lock, NULL, "Locks"); li = ld->locks; while (li) { proto_tree_add_uint(ltr, hf_smb_pid, tvb, 0, 0, li->pid); @@ -6043,8 +6023,7 @@ dissect_locking_andx_response(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre proto_tree_add_uint64(ltr, hf_smb_lock_long_length, tvb, 0, 0, li->length); li = li->next; } - lit = proto_tree_add_text(ltree, tvb, 0, 0, "Unlocks"); - ltr = proto_item_add_subtree(lit, ett_smb_unlock); + ltr = proto_tree_add_subtree(ltree, tvb, 0, 0, ett_smb_unlock, NULL, "Unlocks"); li = ld->unlocks; while (li) { proto_tree_add_uint(ltr, hf_smb_pid, tvb, 0, 0, li->pid); @@ -7793,7 +7772,6 @@ dissect_tree_connect_andx_response(tvbuff_t *tvb, packet_info *pinfo, proto_tree guint16 bc; int an_len; int count = 0; - proto_item *it = NULL; proto_tree *tr = NULL; const char *an; @@ -7847,13 +7825,12 @@ dissect_tree_connect_andx_response(tvbuff_t *tvb, packet_info *pinfo, proto_tree * has added. */ if (count == 0) { - it = proto_tree_add_text(tree, tvb, offset, 4, - "Maximal Share Access Rights"); + tr = proto_tree_add_subtree(tree, tvb, offset, 4, + ett_smb_nt_access_mask, NULL, "Maximal Share Access Rights"); } else { - it = proto_tree_add_text(tree, tvb, offset, 4, - "Guest Maximal Share Access Rights"); + tr = proto_tree_add_subtree(tree, tvb, offset, 4, + ett_smb_nt_access_mask, NULL, "Guest Maximal Share Access Rights"); } - tr = proto_item_add_subtree(it, ett_smb_nt_access_mask); offset = dissect_smb_access_mask(tvb, tr, offset); wleft -= 2; @@ -8571,8 +8548,7 @@ dissect_nt_user_quota(tvbuff_t *tvb, proto_tree *tree, int offset, guint16 *bcp) static int dissect_nt_trans_data_request(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, int bc, nt_trans_data *ntd, smb_nt_transact_info_t *nti, smb_info_t *si) { - proto_item *item = NULL; - proto_tree *tree = NULL; + proto_tree *tree; int old_offset = offset; guint16 bcp = bc; /* XXX fixme */ struct access_mask_info *ami = NULL; @@ -8580,15 +8556,9 @@ dissect_nt_trans_data_request(tvbuff_t *tvb, packet_info *pinfo, int offset, pro DISSECTOR_ASSERT(si); - if (parent_tree) { - guint32 bytes = 0; - bytes = tvb_length_remaining(tvb, offset); - /*tvb_ensure_bytes_exist(tvb, offset, bc);*/ - item = proto_tree_add_text(parent_tree, tvb, offset, bytes, - "%s Data", + tree = proto_tree_add_subtree_format(parent_tree, tvb, offset, -1, + ett_smb_nt_trans_data, NULL, "%s Data", val_to_str_ext(ntd->subcmd, &nt_cmd_vals_ext, "Unknown NT transaction (%u)")); - tree = proto_item_add_subtree(item, ett_smb_nt_trans_data); - } switch(ntd->subcmd) { case NT_TRANS_CREATE: @@ -8673,19 +8643,15 @@ dissect_nt_trans_data_request(tvbuff_t *tvb, packet_info *pinfo, int offset, pro static int dissect_nt_trans_param_request(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, int len, nt_trans_data *ntd, guint16 bc, smb_nt_transact_info_t *nti, smb_info_t *si) { - proto_item *item = NULL; - proto_tree *tree = NULL; + proto_tree *tree; guint32 fn_len, create_flags, access_mask, share_access, create_options; const char *fn; DISSECTOR_ASSERT(si); - if (parent_tree) { - item = proto_tree_add_text(parent_tree, tvb, offset, len, - "%s Parameters", + tree = proto_tree_add_subtree_format(parent_tree, tvb, offset, len, + ett_smb_nt_trans_param, NULL, "%s Parameters", val_to_str_ext(ntd->subcmd, &nt_cmd_vals_ext, "Unknown NT transaction (%u)")); - tree = proto_item_add_subtree(item, ett_smb_nt_trans_param); - } switch(ntd->subcmd) { case NT_TRANS_CREATE: @@ -8826,8 +8792,7 @@ dissect_nt_trans_param_request(tvbuff_t *tvb, packet_info *pinfo, int offset, pr static int dissect_nt_trans_setup_request(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, int len, nt_trans_data *ntd, smb_info_t *si) { - proto_item *item = NULL; - proto_tree *tree = NULL; + proto_tree *tree; smb_nt_transact_info_t *nti = NULL; smb_saved_info_t *sip; @@ -8837,13 +8802,9 @@ dissect_nt_trans_setup_request(tvbuff_t *tvb, packet_info *pinfo, int offset, pr nti = (smb_nt_transact_info_t *)sip->extra_info; } - if (parent_tree) { - tvb_ensure_bytes_exist(tvb, offset, len); - item = proto_tree_add_text(parent_tree, tvb, offset, len, - "%s Setup", + tree = proto_tree_add_subtree_format(parent_tree, tvb, offset, len, + ett_smb_nt_trans_setup, NULL, "%s Setup", val_to_str_ext(ntd->subcmd, &nt_cmd_vals_ext, "Unknown NT transaction (%u)")); - tree = proto_item_add_subtree(item, ett_smb_nt_trans_setup); - } switch(ntd->subcmd) { case NT_TRANS_CREATE: @@ -9168,7 +9129,6 @@ dissect_nt_trans_data_response(tvbuff_t *tvb, packet_info *pinfo, nt_trans_data *ntd _U_, smb_nt_transact_info_t *nti, smb_info_t *si) { - proto_item *item = NULL; proto_tree *tree = NULL; guint16 bcp; struct access_mask_info *ami = NULL; @@ -9179,18 +9139,17 @@ dissect_nt_trans_data_response(tvbuff_t *tvb, packet_info *pinfo, if (parent_tree) { tvb_ensure_bytes_exist(tvb, offset, len); if (nti != NULL) { - item = proto_tree_add_text(parent_tree, tvb, offset, len, - "%s Data", + tree = proto_tree_add_subtree_format(parent_tree, tvb, offset, len, + ett_smb_nt_trans_data, NULL, "%s Data", val_to_str_ext(nti->subcmd, &nt_cmd_vals_ext, "Unknown NT Transaction (%u)")); } else { /* * We never saw the request to which this is a * response. */ - item = proto_tree_add_text(parent_tree, tvb, offset, len, - "Unknown NT Transaction Data (matching request not seen)"); + tree = proto_tree_add_subtree(parent_tree, tvb, offset, len, + ett_smb_nt_trans_data, NULL, "Unknown NT Transaction Data (matching request not seen)"); } - tree = proto_item_add_subtree(item, ett_smb_nt_trans_data); } if (nti == NULL) { @@ -9246,7 +9205,6 @@ dissect_nt_trans_param_response(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, int len, nt_trans_data *ntd _U_, guint16 bc, smb_info_t *si) { - proto_item *item = NULL; proto_tree *tree = NULL; guint32 fn_len; const char *fn; @@ -9269,18 +9227,17 @@ dissect_nt_trans_param_response(tvbuff_t *tvb, packet_info *pinfo, if (parent_tree) { tvb_ensure_bytes_exist(tvb, offset, len); if (nti != NULL) { - item = proto_tree_add_text(parent_tree, tvb, offset, len, - "%s Parameters", + tree = proto_tree_add_subtree_format(parent_tree, tvb, offset, len, + ett_smb_nt_trans_param, NULL, "%s Parameters", val_to_str_ext(nti->subcmd, &nt_cmd_vals_ext, "Unknown NT Transaction (%u)")); } else { /* * We never saw the request to which this is a * response. */ - item = proto_tree_add_text(parent_tree, tvb, offset, len, - "Unknown NT Transaction Parameters (matching request not seen)"); + tree = proto_tree_add_subtree(parent_tree, tvb, offset, len, + ett_smb_nt_trans_param, NULL, "Unknown NT Transaction Parameters (matching request not seen)"); } - tree = proto_item_add_subtree(item, ett_smb_nt_trans_param); } if (nti == NULL) { @@ -9825,18 +9782,14 @@ static int dissect_print_queue_element(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *parent_tree, int offset, guint16 *bcp, gboolean *trunc, smb_info_t *si) { - proto_item *item = NULL; - proto_tree *tree = NULL; + proto_tree *tree; int fn_len; const char *fn; DISSECTOR_ASSERT(si); - if (parent_tree) { - item = proto_tree_add_text(parent_tree, tvb, offset, 28, - "Queue entry"); - tree = proto_item_add_subtree(item, ett_smb_print_queue_entry); - } + tree = proto_tree_add_subtree(parent_tree, tvb, offset, 28, + ett_smb_print_queue_entry, NULL, "Queue entry"); /* queued time */ CHECK_BYTE_COUNT_SUBR(4); @@ -10357,8 +10310,6 @@ dissect_nt_create_andx_response(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t if ExtendedResponses requested. */ if ((si->sip != NULL) && (si->sip->extra_info_type == SMB_EI_FILEDATA) && (((smb_fid_saved_info_t *)(si->sip->extra_info))->create_flags & 0x10)) { - proto_item *mar = NULL; - proto_item *gmar = NULL; proto_tree *tr = NULL; /* The first field is a Volume GUID ... */ @@ -10372,17 +10323,13 @@ dissect_nt_create_andx_response(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t tvb, offset, 8, ENC_LITTLE_ENDIAN); offset += 8; - mar = proto_tree_add_text(tree, tvb, offset, 4, - "Maximal Access Rights"); - - tr = proto_item_add_subtree(mar, ett_smb_nt_access_mask); + tr = proto_tree_add_subtree(tree, tvb, offset, 4, + ett_smb_nt_access_mask, NULL, "Maximal Access Rights"); offset = dissect_smb_access_mask(tvb, tr, offset); - gmar = proto_tree_add_text(tree, tvb, offset, 4, - "Guest Maximal Access Rights"); - - tr = proto_item_add_subtree(gmar, ett_smb_nt_access_mask); + tr = proto_tree_add_subtree(tree, tvb, offset, 4, + ett_smb_nt_access_mask, NULL, "Guest Maximal Access Rights"); offset = dissect_smb_access_mask(tvb, tr, offset); } @@ -10902,8 +10849,7 @@ static int dissect_transaction2_request_parameters(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, int offset, int subcmd, guint16 bc, smb_info_t *si) { - proto_item *item = NULL; - proto_tree *tree = NULL; + proto_tree *tree; smb_transact2_info_t *t2i; int fn_len; const char *fn; @@ -10915,14 +10861,10 @@ dissect_transaction2_request_parameters(tvbuff_t *tvb, packet_info *pinfo, else t2i = NULL; - if (parent_tree) { - tvb_ensure_bytes_exist(tvb, offset, bc); - item = proto_tree_add_text(parent_tree, tvb, offset, bc, - "%s Parameters", + tree = proto_tree_add_subtree_format(parent_tree, tvb, offset, bc, + ett_smb_transaction_params, NULL, "%s Parameters", val_to_str_ext(subcmd, &trans2_cmd_vals_ext, "Unknown (0x%02x)")); - tree = proto_item_add_subtree(item, ett_smb_transaction_params); - } switch(subcmd) { case 0x0000: /*TRANS2_OPEN2*/ @@ -11597,11 +11539,9 @@ dissect_dfs_referral_entry_v3(tvbuff_t *tvb, proto_tree *tree, int oldoffset, in } /* expanded names */ if (expoffset) { - proto_item *expitem = NULL; - proto_tree *exptree = NULL; + proto_tree *exptree; - expitem = proto_tree_add_text(tree, tvb, offset, *bcp, "Expanded Names"); - exptree = proto_item_add_subtree(expitem, ett_smb_dfs_referral_expnames); + exptree = proto_tree_add_subtree(tree, tvb, offset, *bcp, ett_smb_dfs_referral_expnames, NULL, "Expanded Names"); dissect_dfs_referral_strings(tvb, exptree, hf_smb_dfs_referral_expname, nexpnames, expoffset+oldoffset, oldoffset, offset, @@ -11697,32 +11637,22 @@ dissect_get_dfs_referral_data(tvbuff_t *tvb, packet_info *pinfo _U_, /* if there are any referrals */ if (numref) { - proto_item *ref_item = NULL; - proto_tree *ref_tree = NULL; + proto_item *ref_item; + proto_tree *ref_tree; int old_offset = offset; - if (tree) { - tvb_ensure_bytes_exist(tvb, offset, *bcp); - ref_item = proto_tree_add_text(tree, - tvb, offset, *bcp, "Referrals"); - ref_tree = proto_item_add_subtree(ref_item, - ett_smb_dfs_referrals); - } + ref_tree = proto_tree_add_subtree(tree, + tvb, offset, *bcp, ett_smb_dfs_referrals, &ref_item, "Referrals"); ucstring_end = -1; while (numref--) { - proto_item *ri = NULL; - proto_tree *rt = NULL; + proto_item *ri; + proto_tree *rt; int old_offset_2 = offset; guint16 version; - if (tree) { - tvb_ensure_bytes_exist(tvb, offset, *bcp); - ri = proto_tree_add_text(ref_tree, - tvb, offset, *bcp, "Referral"); - rt = proto_item_add_subtree(ri, - ett_smb_dfs_referral); - } + rt = proto_tree_add_subtree(ref_tree, + tvb, offset, *bcp, ett_smb_dfs_referral, &ri, "Referral"); /* referral version */ CHECK_BYTE_COUNT_TRANS_SUBR(2); @@ -12002,9 +11932,8 @@ dissect_4_2_16_2(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int start_offset = offset; guint8 *name; - item = proto_tree_add_text( - tree, tvb, offset, 0, "Extended Attribute"); - subtree = proto_item_add_subtree(item, ett_smb_ea); + subtree = proto_tree_add_subtree( + tree, tvb, offset, 0, ett_smb_ea, &item, "Extended Attribute"); /* EA flags */ @@ -12391,14 +12320,7 @@ dissect_qfi_SMB_FILE_STREAM_INFO(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tr /* next entry offset */ CHECK_BYTE_COUNT_SUBR(4); - if (parent_tree) { - tvb_ensure_bytes_exist(tvb, offset, *bcp); - item = proto_tree_add_text(parent_tree, tvb, offset, *bcp, "Stream Info"); - tree = proto_item_add_subtree(item, ett_smb_ff2_data); - } else { - item = NULL; - tree = NULL; - } + tree = proto_tree_add_subtree(parent_tree, tvb, offset, *bcp, ett_smb_ff2_data, &item, "Stream Info"); neo = tvb_get_letohl(tvb, offset); proto_tree_add_uint(tree, hf_smb_next_entry_offset, tvb, offset, 4, neo); @@ -12644,8 +12566,7 @@ dissect_qspi_unix_acl(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int old_offset = offset; guint8 ace_type; - it = proto_tree_add_text(tree, tvb, offset, 0, "ACE"); - tr = proto_item_add_subtree(it, ett_smb_posix_ace); + tr = proto_tree_add_subtree(tree, tvb, offset, 0, ett_smb_posix_ace, &it, "ACE"); /* ace type */ CHECK_BYTE_COUNT_SUBR(1); @@ -13580,19 +13501,15 @@ static int dissect_transaction2_request_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, int offset, int subcmd, guint16 dc, smb_info_t *si) { - proto_item *item = NULL; - proto_tree *tree = NULL; + proto_item *item; + proto_tree *tree; DISSECTOR_ASSERT(si); - if (parent_tree) { - tvb_ensure_bytes_exist(tvb, offset, dc); - item = proto_tree_add_text(parent_tree, tvb, offset, dc, - "%s Data", + tree = proto_tree_add_subtree_format(parent_tree, tvb, offset, dc, + ett_smb_transaction_data, &item, "%s Data", val_to_str_ext(subcmd, &trans2_cmd_vals_ext, "Unknown (0x%02x)")); - tree = proto_item_add_subtree(item, ett_smb_transaction_data); - } switch(subcmd) { case 0x0000: /*TRANS2_OPEN2*/ @@ -14181,8 +14098,8 @@ dissect_4_3_4_1(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, int fn_len; const char *fn; int old_offset = offset; - proto_item *item = NULL; - proto_tree *tree = NULL; + proto_item *item; + proto_tree *tree; smb_transact2_info_t *t2i; gboolean resume_keys = FALSE; guint32 bytes_needed = 0; @@ -14195,11 +14112,8 @@ dissect_4_3_4_1(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, resume_keys = t2i->resume_keys; } - if (parent_tree) { - item = proto_tree_add_text(parent_tree, tvb, offset, *bcp, "%s", + tree = proto_tree_add_subtree(parent_tree, tvb, offset, *bcp, ett_smb_ff2_data, &item, val_to_str(si->info_level, ff2_il_vals, "Unknown (0x%02x)")); - tree = proto_item_add_subtree(item, ett_smb_ff2_data); - } /* * Figure out of there are enough bytes to display the whole entry. @@ -14290,8 +14204,8 @@ dissect_4_3_4_2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, int fn_len; const char *fn; int old_offset = offset; - proto_item *item = NULL; - proto_tree *tree = NULL; + proto_item *item; + proto_tree *tree; smb_transact2_info_t *t2i; gboolean resume_keys = FALSE; guint32 bytes_needed = 0; @@ -14304,11 +14218,8 @@ dissect_4_3_4_2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, resume_keys = t2i->resume_keys; } - if (parent_tree) { - item = proto_tree_add_text(parent_tree, tvb, offset, *bcp, "%s", + tree = proto_tree_add_subtree(parent_tree, tvb, offset, *bcp, ett_smb_ff2_data, &item, val_to_str(si->info_level, ff2_il_vals, "Unknown (0x%02x)")); - tree = proto_item_add_subtree(item, ett_smb_ff2_data); - } /* * Figure out of there are enough bytes to display the whole entry. @@ -14412,8 +14323,8 @@ dissect_4_3_4_3(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, const char *fn; int old_offset = offset; int ea_size = 0; - proto_item *item = NULL; - proto_tree *tree = NULL; + proto_item *item; + proto_tree *tree; smb_transact2_info_t *t2i; gboolean resume_keys = FALSE; @@ -14426,12 +14337,8 @@ dissect_4_3_4_3(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, resume_keys = t2i->resume_keys; } - if (parent_tree) { - tvb_ensure_bytes_exist(tvb, offset, *bcp); - item = proto_tree_add_text(parent_tree, tvb, offset, *bcp, "%s", + tree = proto_tree_add_subtree(parent_tree, tvb, offset, *bcp, ett_smb_ff2_data, &item, val_to_str(si->info_level, ff2_il_vals, "Unknown (0x%02x)")); - tree = proto_item_add_subtree(item, ett_smb_ff2_data); - } if (resume_keys) { /* resume key */ @@ -14520,8 +14427,8 @@ dissect_4_3_4_4(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, int fn_len; const char *fn; int old_offset = offset; - proto_item *item = NULL; - proto_tree *tree = NULL; + proto_item *item; + proto_tree *tree; guint32 neo; int padcnt; @@ -14539,11 +14446,8 @@ dissect_4_3_4_4(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, /* Ensure we have the bytes we need, which is up to neo */ tvb_ensure_bytes_exist(tvb, offset, neo ? neo : *bcp); - if (parent_tree) { - item = proto_tree_add_text(parent_tree, tvb, offset, *bcp, "%s", + tree = proto_tree_add_subtree(parent_tree, tvb, offset, *bcp, ett_smb_ff2_data, &item, val_to_str(si->info_level, ff2_il_vals, "Unknown (0x%02x)")); - tree = proto_item_add_subtree(item, ett_smb_ff2_data); - } /* * We assume that the presence of a next entry offset implies the @@ -14624,8 +14528,8 @@ dissect_4_3_4_5(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, int fn_len; const char *fn; int old_offset = offset; - proto_item *item = NULL; - proto_tree *tree = NULL; + proto_item *item; + proto_tree *tree; guint32 neo; int padcnt; @@ -14643,11 +14547,8 @@ dissect_4_3_4_5(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, /* Ensure we have the bytes we need, which is up to neo */ tvb_ensure_bytes_exist(tvb, offset, neo ? neo : *bcp); - if (parent_tree) { - item = proto_tree_add_text(parent_tree, tvb, offset, *bcp, "%s", + tree = proto_tree_add_subtree(parent_tree, tvb, offset, *bcp, ett_smb_ff2_data, &item, val_to_str(si->info_level, ff2_il_vals, "Unknown (0x%02x)")); - tree = proto_item_add_subtree(item, ett_smb_ff2_data); - } /* * We assume that the presence of a next entry offset implies the @@ -14734,8 +14635,8 @@ dissect_4_3_4_6(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, int fn_len, sfn_len; const char *fn, *sfn; int old_offset = offset; - proto_item *item = NULL; - proto_tree *tree = NULL; + proto_item *item; + proto_tree *tree; guint32 neo; int padcnt; @@ -14753,11 +14654,8 @@ dissect_4_3_4_6(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, /* Ensure we have the bytes we need, which is up to neo */ tvb_ensure_bytes_exist(tvb, offset, neo ? neo : *bcp); - if (parent_tree) { - item = proto_tree_add_text(parent_tree, tvb, offset, *bcp, "%s", + tree = proto_tree_add_subtree(parent_tree, tvb, offset, *bcp, ett_smb_ff2_data, &item, val_to_str(si->info_level, ff2_il_vals, "Unknown (0x%02x)")); - tree = proto_item_add_subtree(item, ett_smb_ff2_data); - } /* * XXX - I have not seen any of these that contain a resume @@ -14870,8 +14768,8 @@ dissect_4_3_4_6full(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, int fn_len; const char *fn; int old_offset = offset; - proto_item *item = NULL; - proto_tree *tree = NULL; + proto_item *item; + proto_tree *tree; guint32 neo; int padcnt; @@ -14889,11 +14787,8 @@ dissect_4_3_4_6full(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, /* Ensure we have the bytes we need, which is up to neo */ tvb_ensure_bytes_exist(tvb, offset, neo ? neo : *bcp); - if (parent_tree) { - item = proto_tree_add_text(parent_tree, tvb, offset, *bcp, "%s", + tree = proto_tree_add_subtree(parent_tree, tvb, offset, *bcp, ett_smb_ff2_data, &item, val_to_str(si->info_level, ff2_il_vals, "Unknown (0x%02x)")); - tree = proto_item_add_subtree(item, ett_smb_ff2_data); - } /* * XXX - I have not seen any of these that contain a resume @@ -14995,8 +14890,8 @@ dissect_4_3_4_6_id_both(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tr int fn_len, sfn_len; const char *fn, *sfn; int old_offset = offset; - proto_item *item = NULL; - proto_tree *tree = NULL; + proto_item *item; + proto_tree *tree; guint32 neo; int padcnt; @@ -15014,11 +14909,8 @@ dissect_4_3_4_6_id_both(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tr /* Ensure we have the bytes we need, which is up to neo */ tvb_ensure_bytes_exist(tvb, offset, neo ? neo : *bcp); - if (parent_tree) { - item = proto_tree_add_text(parent_tree, tvb, offset, *bcp, "%s", + tree = proto_tree_add_subtree(parent_tree, tvb, offset, *bcp, ett_smb_ff2_data, &item, val_to_str(si->info_level, ff2_il_vals, "Unknown (0x%02x)")); - tree = proto_item_add_subtree(item, ett_smb_ff2_data); - } /* * XXX - I have not seen any of these that contain a resume @@ -15141,8 +15033,8 @@ dissect_4_3_4_7(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, int fn_len; const char *fn; int old_offset = offset; - proto_item *item = NULL; - proto_tree *tree = NULL; + proto_item *item; + proto_tree *tree; guint32 neo; int padcnt; @@ -15160,11 +15052,8 @@ dissect_4_3_4_7(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, /* Ensure we have the bytes we need, which is up to neo */ tvb_ensure_bytes_exist(tvb, offset, neo ? neo : *bcp); - if (parent_tree) { - item = proto_tree_add_text(parent_tree, tvb, offset, *bcp, "%s", + tree = proto_tree_add_subtree(parent_tree, tvb, offset, *bcp, ett_smb_ff2_data, &item, val_to_str(si->info_level, ff2_il_vals, "Unknown (0x%02x)")); - tree = proto_item_add_subtree(item, ett_smb_ff2_data); - } /* * We assume that the presence of a next entry offset implies the @@ -15848,12 +15737,10 @@ dissect_qfsi_vals(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, } case 0x202: { /* SMB_QUERY_POSIX_WHOAMI */ - proto_item *it_gids = NULL; - proto_tree *st_gids = NULL; + proto_tree *st_gids; guint32 num_gids; guint i; - proto_item *it_sids = NULL; - proto_tree *st_sids = NULL; + proto_tree *st_sids; int old_sid_offset; guint32 num_sids; guint32 sids_buflen; @@ -15910,9 +15797,8 @@ dissect_qfsi_vals(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, /* GIDs */ - it_gids = proto_tree_add_text(tree, tvb, offset, num_gids * 8, - "Supplementary UNIX GIDs"); - st_gids = proto_item_add_subtree(it_gids, ett_smb_unix_whoami_gids); + st_gids = proto_tree_add_subtree(tree, tvb, offset, num_gids * 8, + ett_smb_unix_whoami_gids, NULL, "Supplementary UNIX GIDs"); for (i = 0; i < num_gids; i++) { CHECK_BYTE_COUNT_TRANS_SUBR(8); @@ -15922,9 +15808,8 @@ dissect_qfsi_vals(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, } /* SIDs */ - it_sids = proto_tree_add_text(tree, tvb, offset, sids_buflen, - "List of SIDs"); - st_sids = proto_item_add_subtree(it_sids, ett_smb_unix_whoami_sids); + st_sids = proto_tree_add_subtree(tree, tvb, offset, sids_buflen, + ett_smb_unix_whoami_sids, NULL, "List of SIDs"); for (i = 0; i < num_sids; i++) { old_sid_offset = offset; @@ -16047,11 +15932,10 @@ dissect_transaction2_response_data(tvbuff_t *tvb, packet_info *pinfo, if (parent_tree) { if ((t2i != NULL) && (t2i->subcmd != -1)) { - item = proto_tree_add_text(parent_tree, tvb, offset, dc, - "%s Data", + tree = proto_tree_add_subtree_format(parent_tree, tvb, offset, dc, + ett_smb_transaction_data, &item, "%s Data", val_to_str_ext(t2i->subcmd, &trans2_cmd_vals_ext, "Unknown (0x%02x)")); - tree = proto_item_add_subtree(item, ett_smb_transaction_data); } else { proto_tree_add_text(parent_tree, tvb, offset, dc, "Unknown Transaction2 Data"); @@ -16224,11 +16108,10 @@ dissect_transaction2_response_parameters(tvbuff_t *tvb, packet_info *pinfo, prot if (parent_tree) { if ((t2i != NULL) && (t2i->subcmd != -1)) { - item = proto_tree_add_text(parent_tree, tvb, offset, pc, - "%s Parameters", + tree = proto_tree_add_subtree_format(parent_tree, tvb, offset, pc, + ett_smb_transaction_params, &item, "%s Parameters", val_to_str_ext(t2i->subcmd, &trans2_cmd_vals_ext, "Unknown (0x%02x)")); - tree = proto_item_add_subtree(item, ett_smb_transaction_params); } else { proto_tree_add_text(parent_tree, tvb, offset, pc, "Unknown Transaction2 Parameters"); @@ -17183,14 +17066,12 @@ dissect_smb_command(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *s val_to_str_ext(cmd, &smb_cmd_vals_ext, "Unknown (0x%02x)")); } - cmd_item = proto_tree_add_text(smb_tree, tvb, offset, -1, - "%s %s (0x%02x)", + cmd_tree = proto_tree_add_subtree_format(smb_tree, tvb, offset, -1, + ett_smb_command, &cmd_item, "%s %s (0x%02x)", val_to_str_ext_const(cmd, &smb_cmd_vals_ext, "Unknown"), (si->request)?"Request":"Response", cmd); - cmd_tree = proto_item_add_subtree(cmd_item, ett_smb_command); - /* we track FIDs on a per transaction basis. if this was a request and the fid was seen in a reply we add a "generated" fid tree for this pdu and v.v. @@ -17646,8 +17527,8 @@ static void dissect_smb(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree) { int offset = 0; - proto_item *item = NULL, *hitem = NULL; - proto_tree *tree = NULL, *htree = NULL; + proto_item *item; + proto_tree *tree, *htree; proto_item *tmp_item = NULL; guint8 flags; guint16 flags2; @@ -17694,16 +17575,13 @@ dissect_smb(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree) si->info_level = -1; si->info_count = -1; - if (parent_tree) { - item = proto_tree_add_item(parent_tree, proto_smb, tvb, offset, + item = proto_tree_add_item(parent_tree, proto_smb, tvb, offset, -1, ENC_NA); - tree = proto_item_add_subtree(item, ett_smb); + tree = proto_item_add_subtree(item, ett_smb); - hitem = proto_tree_add_text(tree, tvb, offset, 32, - "SMB Header"); + htree = proto_tree_add_subtree(tree, tvb, offset, 32, + ett_smb_hdr, NULL, "SMB Header"); - htree = proto_item_add_subtree(hitem, ett_smb_hdr); - } proto_tree_add_text(htree, tvb, offset, 4, "Server Component: SMB"); offset += 4; /* Skip the marker */ diff --git a/epan/dissectors/packet-smb2.c b/epan/dissectors/packet-smb2.c index aa4e3dc324..f8ef9126f7 100644 --- a/epan/dissectors/packet-smb2.c +++ b/epan/dissectors/packet-smb2.c @@ -1919,13 +1919,10 @@ dissect_smb2_file_full_ea_info(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree const char *data = ""; guint16 bc; int start_offset = offset; - proto_item *ea_item = NULL; - proto_tree *ea_tree = NULL; + proto_item *ea_item; + proto_tree *ea_tree; - if (tree) { - ea_item = proto_tree_add_text(tree, tvb, offset, -1, "EA:"); - ea_tree = proto_item_add_subtree(ea_item, ett_smb2_ea); - } + ea_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_smb2_ea, &ea_item, "EA:"); /* next offset */ next_offset = tvb_get_letohl(tvb, offset); @@ -4094,13 +4091,10 @@ dissect_smb2_rdma_v1_blob(tvbuff_t *tvb, packet_info *pinfo _U_, int len; int i; int num; - proto_item *sub_item = NULL; - proto_tree *sub_tree = NULL; - proto_item *parent_item = NULL; + proto_tree *sub_tree; + proto_item *parent_item; - if (parent_tree) { - parent_item = proto_tree_get_parent(parent_tree); - } + parent_item = proto_tree_get_parent(parent_tree); len = tvb_reported_length(tvb); @@ -4111,10 +4105,7 @@ dissect_smb2_rdma_v1_blob(tvbuff_t *tvb, packet_info *pinfo _U_, } for (i = 0; i < num; i++) { - if (parent_tree) { - sub_item = proto_tree_add_text(parent_tree, tvb, offset, 8, "RDMA V1"); - sub_tree = proto_item_add_subtree(sub_item, ett_smb2_rdma_v1); - } + sub_tree = proto_tree_add_subtree(parent_tree, tvb, offset, 8, ett_smb2_rdma_v1, NULL, "RDMA V1"); proto_tree_add_item(sub_tree, hf_smb2_rdma_v1_offset, tvb, offset, 8, ENC_LITTLE_ENDIAN); offset += 8; @@ -4279,20 +4270,16 @@ dissect_smb2_FSCTL_LMR_REQUEST_RESILIENCY(tvbuff_t *tvb, packet_info *pinfo _U_, static void dissect_windows_sockaddr_in(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *parent_tree, int offset, int len) { - proto_item *sub_item = NULL; - proto_tree *sub_tree = NULL; - proto_item *parent_item = NULL; - guint32 addr; + proto_item *sub_item; + proto_tree *sub_tree; + proto_item *parent_item; if (len == -1) { len = 16; } - if (parent_tree) { - sub_item = proto_tree_add_text(parent_tree, tvb, offset, len, "Socket Address"); - sub_tree = proto_item_add_subtree(sub_item, ett_windows_sockaddr); - parent_item = proto_tree_get_parent(parent_tree); - } + sub_tree = proto_tree_add_subtree(parent_tree, tvb, offset, len, ett_windows_sockaddr, &sub_item, "Socket Address"); + parent_item = proto_tree_get_parent(parent_tree); /* family */ proto_tree_add_item(sub_tree, hf_windows_sockaddr_family, tvb, offset, 2, ENC_LITTLE_ENDIAN); @@ -4303,33 +4290,25 @@ dissect_windows_sockaddr_in(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *p offset += 2; /* IPv4 address */ - addr = tvb_get_ipv4(tvb, offset); - proto_tree_add_ipv4(sub_tree, hf_windows_sockaddr_in_addr, tvb, offset, 4, addr); - if (sub_item) { - proto_item_append_text(sub_item, ", IPv4: %s", tvb_ip_to_str(tvb, offset)); - } - if (parent_item) { - proto_item_append_text(parent_item, ", IPv4: %s", tvb_ip_to_str(tvb, offset)); - } + proto_tree_add_item(sub_tree, hf_windows_sockaddr_in_addr, tvb, offset, 4, ENC_LITTLE_ENDIAN); + + proto_item_append_text(sub_item, ", IPv4: %s", tvb_ip_to_str(tvb, offset)); + proto_item_append_text(parent_item, ", IPv4: %s", tvb_ip_to_str(tvb, offset)); } static void dissect_windows_sockaddr_in6(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *parent_tree, int offset, int len) { - struct e_in6_addr addr; - proto_item *sub_item = NULL; - proto_tree *sub_tree = NULL; - proto_item *parent_item = NULL; + proto_item *sub_item; + proto_tree *sub_tree; + proto_item *parent_item; if (len == -1) { len = 16; } - if (parent_tree) { - sub_item = proto_tree_add_text(parent_tree, tvb, offset, len, "Socket Address"); - sub_tree = proto_item_add_subtree(sub_item, ett_windows_sockaddr); - parent_item = proto_tree_get_parent(parent_tree); - } + sub_tree = proto_tree_add_subtree(parent_tree, tvb, offset, len, ett_windows_sockaddr, &sub_item, "Socket Address"); + parent_item = proto_tree_get_parent(parent_tree); /* family */ proto_tree_add_item(sub_tree, hf_windows_sockaddr_family, tvb, offset, 2, ENC_LITTLE_ENDIAN); @@ -4344,14 +4323,9 @@ dissect_windows_sockaddr_in6(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree * offset += 4; /* IPv4 address */ - tvb_get_ipv6(tvb, offset, &addr); - proto_tree_add_ipv6(sub_tree, hf_windows_sockaddr_in6_addr, tvb, offset, 16, (guint8 *)&addr); - if (sub_item) { - proto_item_append_text(sub_item, ", IPv6: %s", tvb_ip6_to_str(tvb, offset)); - } - if (parent_item) { - proto_item_append_text(parent_item, ", IPv6: %s", tvb_ip6_to_str(tvb, offset)); - } + proto_tree_add_item(sub_tree, hf_windows_sockaddr_in6_addr, tvb, offset, 16, ENC_NA); + proto_item_append_text(sub_item, ", IPv6: %s", tvb_ip6_to_str(tvb, offset)); + proto_item_append_text(parent_item, ", IPv6: %s", tvb_ip6_to_str(tvb, offset)); offset += 16; /* sin6_scope_id */ @@ -4362,9 +4336,9 @@ static void dissect_windows_sockaddr_storage(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, int offset) { int len = 128; - proto_item *sub_item = NULL; - proto_tree *sub_tree = NULL; - proto_item *parent_item = NULL; + proto_item *sub_item; + proto_tree *sub_tree; + proto_item *parent_item; guint16 family; family = tvb_get_letohs(tvb, offset); @@ -4377,20 +4351,13 @@ dissect_windows_sockaddr_storage(tvbuff_t *tvb, packet_info *pinfo, proto_tree * return; } - if (parent_tree) { - sub_item = proto_tree_add_text(parent_tree, tvb, offset, len, "Socket Address"); - sub_tree = proto_item_add_subtree(sub_item, ett_windows_sockaddr); - parent_item = proto_tree_get_parent(parent_tree); - } + sub_tree = proto_tree_add_subtree(parent_tree, tvb, offset, len, ett_windows_sockaddr, &sub_item, "Socket Address"); + parent_item = proto_tree_get_parent(parent_tree); /* ss_family */ proto_tree_add_item(sub_tree, hf_windows_sockaddr_family, tvb, offset, 2, ENC_LITTLE_ENDIAN); - if (sub_item) { - proto_item_append_text(sub_item, ", Family: %d (0x%04x)", family, family); - } - if (parent_item) { - proto_item_append_text(sub_item, ", Family: %d (0x%04x)", family, family); - } + proto_item_append_text(sub_item, ", Family: %d (0x%04x)", family, family); + proto_item_append_text(parent_item, ", Family: %d (0x%04x)", family, family); /*offset += 2;*/ /* unknown */ @@ -4406,9 +4373,9 @@ dissect_smb2_NETWORK_INTERFACE_INFO(tvbuff_t *tvb, packet_info *pinfo, proto_tre guint32 next_offset; int offset = 0; int len = -1; - proto_item *sub_item = NULL; - proto_tree *sub_tree = NULL; - proto_item *item = NULL; + proto_item *sub_item; + proto_tree *sub_tree; + proto_item *item; guint32 capabilities; guint64 link_speed; gfloat val = 0; @@ -4419,10 +4386,8 @@ dissect_smb2_NETWORK_INTERFACE_INFO(tvbuff_t *tvb, packet_info *pinfo, proto_tre len = next_offset; } - if (parent_tree) { - sub_item = proto_tree_add_text(parent_tree, tvb, offset, len, "Network Interface"); - sub_tree = proto_item_add_subtree(sub_item, ett_smb2_ioctl_network_interface); - } + sub_tree = proto_tree_add_subtree(parent_tree, tvb, offset, len, ett_smb2_ioctl_network_interface, &sub_item, "Network Interface"); + item = proto_tree_get_parent(parent_tree); /* next offset */ proto_tree_add_item(sub_tree, hf_smb2_ioctl_network_interface_next_offset, tvb, offset, 4, ENC_LITTLE_ENDIAN); @@ -4441,11 +4406,9 @@ dissect_smb2_NETWORK_INTERFACE_INFO(tvbuff_t *tvb, packet_info *pinfo, proto_tre proto_item_append_text(item, "%s%s", (capabilities & NETWORK_INTERFACE_CAP_RDMA)?", RDMA":"", (capabilities & NETWORK_INTERFACE_CAP_RSS)?", RSS":""); - if (sub_item) { - proto_item_append_text(sub_item, "%s%s", + proto_item_append_text(sub_item, "%s%s", (capabilities & NETWORK_INTERFACE_CAP_RDMA)?", RDMA":"", (capabilities & NETWORK_INTERFACE_CAP_RSS)?", RSS":""); - } } offset += 4; @@ -4470,9 +4433,7 @@ dissect_smb2_NETWORK_INTERFACE_INFO(tvbuff_t *tvb, packet_info *pinfo, proto_tre unit = ""; } proto_item_append_text(item, ", %.1f %sBits/s", val, unit); - if (sub_item) { - proto_item_append_text(sub_item, ", %.1f %sBits/s", val, unit); - } + proto_item_append_text(sub_item, ", %.1f %sBits/s", val, unit); offset += 8; @@ -5138,19 +5099,13 @@ static void dissect_smb2_QFid_buffer_response(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, smb2_info_t *si _U_) { int offset = 0; - proto_item *item = NULL; - proto_item *sub_item = NULL; - proto_item *sub_tree = NULL; + proto_item *item; + proto_item *sub_tree; - if (tree) { - item = proto_tree_get_parent(tree); - } + item = proto_tree_get_parent(tree); - if (item) { - proto_item_append_text(item, ": QFid INFO"); - sub_item = proto_tree_add_text(tree, tvb, offset, -1, "QFid INFO"); - sub_tree = proto_item_add_subtree(sub_item, ett_smb2_QFid_buffer); - } + proto_item_append_text(item, ": QFid INFO"); + sub_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_smb2_QFid_buffer, NULL, "QFid INFO"); proto_tree_add_item(sub_tree, hf_smb2_qfid_fid, tvb, offset, 32, ENC_NA); } @@ -5220,19 +5175,13 @@ dissect_smb2_DH2Q_buffer_request(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tr NULL }; int offset = 0; - proto_item *item = NULL; - proto_item *sub_item = NULL; - proto_item *sub_tree = NULL; + proto_item *item; + proto_item *sub_tree; - if (tree) { - item = proto_tree_get_parent(tree); - } + item = proto_tree_get_parent(tree); - if (item) { - proto_item_append_text(item, ": DH2Q Request"); - sub_item = proto_tree_add_text(tree, tvb, offset, -1, "DH2Q Request"); - sub_tree = proto_item_add_subtree(sub_item, ett_smb2_DH2Q_buffer); - } + proto_item_append_text(item, ": DH2Q Request"); + sub_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_smb2_DH2Q_buffer, NULL, "DH2Q Request"); /* timeout */ proto_tree_add_item(sub_tree, hf_smb2_dh2x_buffer_timeout, tvb, offset, 4, ENC_LITTLE_ENDIAN); @@ -5255,19 +5204,13 @@ static void dissect_smb2_DH2Q_buffer_response(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, smb2_info_t *si _U_) { int offset = 0; - proto_item *item = NULL; - proto_item *sub_item = NULL; - proto_item *sub_tree = NULL; + proto_item *item; + proto_item *sub_tree; - if (tree) { - item = proto_tree_get_parent(tree); - } + item = proto_tree_get_parent(tree); - if (item) { - proto_item_append_text(item, ": DH2Q Response"); - sub_item = proto_tree_add_text(tree, tvb, offset, -1, "DH2Q Response"); - sub_tree = proto_item_add_subtree(sub_item, ett_smb2_DH2Q_buffer); - } + proto_item_append_text(item, ": DH2Q Response"); + sub_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_smb2_DH2Q_buffer, NULL, "DH2Q Response"); /* timeout */ proto_tree_add_item(sub_tree, hf_smb2_dh2x_buffer_timeout, tvb, offset, 4, ENC_LITTLE_ENDIAN); @@ -5281,19 +5224,13 @@ static void dissect_smb2_DH2C_buffer_request(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, smb2_info_t *si) { int offset = 0; - proto_item *item = NULL; - proto_item *sub_item = NULL; - proto_item *sub_tree = NULL; + proto_item *item; + proto_item *sub_tree; - if (tree) { - item = proto_tree_get_parent(tree); - } + item = proto_tree_get_parent(tree); - if (item) { - proto_item_append_text(item, ": DH2C Request"); - sub_item = proto_tree_add_text(tree, tvb, offset, -1, "DH2C Request"); - sub_tree = proto_item_add_subtree(sub_item, ett_smb2_DH2C_buffer); - } + proto_item_append_text(item, ": DH2C Request"); + sub_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_smb2_DH2C_buffer, NULL, "DH2C Request"); /* file id */ dissect_smb2_fid(tvb, pinfo, sub_tree, offset, si, FID_MODE_DHNC); @@ -5341,26 +5278,18 @@ static void dissect_smb2_MxAc_buffer_response(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, smb2_info_t *si _U_) { int offset = 0; - proto_item *item = NULL; - proto_item *sub_item = NULL; - proto_tree *sub_tree = NULL; + proto_item *item; + proto_tree *sub_tree; - if (tree) { - item = proto_tree_get_parent(tree); - } + item = proto_tree_get_parent(tree); if (tvb_length(tvb) == 0) { - if (item) { - proto_item_append_text(item, ": NO DATA"); - } + proto_item_append_text(item, ": NO DATA"); return; } - if (item) { - proto_item_append_text(item, ": MxAc INFO"); - sub_item = proto_tree_add_text(tree, tvb, offset, -1, "MxAc INFO"); - sub_tree = proto_item_add_subtree(sub_item, ett_smb2_MxAc_buffer); - } + proto_item_append_text(item, ": MxAc INFO"); + sub_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_smb2_MxAc_buffer, NULL, "MxAc INFO"); proto_tree_add_item(sub_tree, hf_smb2_mxac_status, tvb, offset, 4, ENC_BIG_ENDIAN); offset += 4; @@ -5410,32 +5339,21 @@ dissect_SMB2_CREATE_LEASE_VX(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree * { int offset = 0; int len; - proto_item *sub_item = NULL; proto_tree *sub_tree = NULL; - proto_item *parent_item = NULL; + proto_item *parent_item; - if (parent_tree) { - parent_item = proto_tree_get_parent(parent_tree); - } + parent_item = proto_tree_get_parent(parent_tree); len = tvb_length(tvb); switch (len) { case 32: /* SMB2_CREATE_REQUEST/RESPONSE_LEASE */ - if (parent_item) { - proto_item_append_text(parent_item, ": LEASE_V1"); - sub_item = proto_tree_add_text(parent_tree, tvb, offset, len, "LEASE_V1"); - sub_tree = proto_item_add_subtree(sub_item, ett_smb2_RqLs_buffer); - } - + proto_item_append_text(parent_item, ": LEASE_V1"); + sub_tree = proto_tree_add_subtree(parent_tree, tvb, offset, len, ett_smb2_RqLs_buffer, NULL, "LEASE_V1"); break; case 52: /* SMB2_CREATE_REQUEST/RESPONSE_LEASE_V2 */ - if (parent_item) { - proto_item_append_text(parent_item, ": LEASE_V2"); - sub_item = proto_tree_add_text(parent_tree, tvb, offset, len, "LEASE_V2"); - sub_tree = proto_item_add_subtree(sub_item, ett_smb2_RqLs_buffer); - } - + proto_item_append_text(parent_item, ": LEASE_V2"); + sub_tree = proto_tree_add_subtree(parent_tree, tvb, offset, len, ett_smb2_RqLs_buffer, NULL, "LEASE_V2"); break; default: report_create_context_malformed_buffer(tvb, pinfo, parent_tree, "RqLs"); @@ -5492,19 +5410,13 @@ static void dissect_smb2_APP_INSTANCE_buffer_request(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, smb2_info_t *si _U_) { int offset = 0; - proto_item *item = NULL; - proto_item *sub_item = NULL; - proto_item *sub_tree = NULL; + proto_item *item; + proto_item *sub_tree; - if (tree) { - item = proto_tree_get_parent(tree); - } + item = proto_tree_get_parent(tree); - if (item) { - proto_item_append_text(item, ": APP INSTANCE ID"); - sub_item = proto_tree_add_text(tree, tvb, offset, -1, "APP INSTANCE ID"); - sub_tree = proto_item_add_subtree(sub_item, ett_smb2_APP_INSTANCE_buffer); - } + proto_item_append_text(item, ": APP INSTANCE ID"); + sub_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_smb2_APP_INSTANCE_buffer, NULL, "APP INSTANCE ID"); /* struct size */ proto_tree_add_item(sub_tree, hf_smb2_APP_INSTANCE_buffer_struct_size, @@ -5591,8 +5503,8 @@ dissect_smb2_create_extra_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *pa guint16 chain_offset; int offset = 0; int len = -1; - proto_item *sub_item = NULL; - proto_tree *sub_tree = NULL; + proto_item *sub_item; + proto_tree *sub_tree; proto_item *parent_item = NULL; create_context_data_dissectors_t *dissectors = NULL; create_context_data_dissector_t dissector = NULL; @@ -5603,11 +5515,8 @@ dissect_smb2_create_extra_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *pa len = chain_offset; } - if (parent_tree) { - sub_item = proto_tree_add_text(parent_tree, tvb, offset, len, "Chain Element"); - sub_tree = proto_item_add_subtree(sub_item, ett_smb2_create_chain_element); - parent_item = proto_tree_get_parent(parent_tree); - } + sub_tree = proto_tree_add_subtree(parent_tree, tvb, offset, len, ett_smb2_create_chain_element, &sub_item, "Chain Element"); + parent_item = proto_tree_get_parent(parent_tree); /* chain offset */ proto_tree_add_item(sub_tree, hf_smb2_create_chain_offset, tvb, offset, 4, ENC_LITTLE_ENDIAN); @@ -6662,9 +6571,7 @@ dissect_smb2_transform_header(packet_info *pinfo _U_, proto_tree *tree, sesid_offset = offset; sti->sesid = tvb_get_letoh64(tvb, offset); sesid_item = proto_tree_add_item(tree, hf_smb2_sesid, tvb, offset, 8, ENC_LITTLE_ENDIAN); - if (tree) { - sesid_tree = proto_item_add_subtree(sesid_item, ett_smb2_sesid_tree); - } + sesid_tree = proto_item_add_subtree(sesid_item, ett_smb2_sesid_tree); offset += 8; /* now we need to first lookup the uid session */ @@ -6765,13 +6672,11 @@ dissect_smb2_command(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int of proto_tree *cmd_tree; int old_offset = offset; - cmd_item = proto_tree_add_text(tree, tvb, offset, -1, - "%s %s (0x%02x)", + cmd_tree = proto_tree_add_subtree_format(tree, tvb, offset, -1, + ett_smb2_command, &cmd_item, "%s %s (0x%02x)", decode_smb2_name(si->opcode), (si->flags & SMB2_FLAGS_RESPONSE)?"Response":"Request", si->opcode); - cmd_tree = proto_item_add_subtree(cmd_item, ett_smb2_command); - cmd_dissector = (si->flags & SMB2_FLAGS_RESPONSE)? smb2_dissector[si->opcode&0xff].response: @@ -6814,9 +6719,7 @@ dissect_smb2_tid_sesid(packet_info *pinfo _U_, proto_tree *tree, tvbuff_t *tvb, tid_offset = offset; si->tid = tvb_get_letohl(tvb, offset); tid_item = proto_tree_add_item(tree, hf_smb2_tid, tvb, offset, 4, ENC_LITTLE_ENDIAN); - if (tree) { - tid_tree = proto_item_add_subtree(tid_item, ett_smb2_tid_tree); - } + tid_tree = proto_item_add_subtree(tid_item, ett_smb2_tid_tree); offset += 4; } @@ -6824,9 +6727,7 @@ dissect_smb2_tid_sesid(packet_info *pinfo _U_, proto_tree *tree, tvbuff_t *tvb, sesid_offset = offset; si->sesid = tvb_get_letoh64(tvb, offset); sesid_item = proto_tree_add_item(tree, hf_smb2_sesid, tvb, offset, 8, ENC_LITTLE_ENDIAN); - if (tree) { - sesid_tree = proto_item_add_subtree(sesid_item, ett_smb2_sesid_tree); - } + sesid_tree = proto_item_add_subtree(sesid_item, ett_smb2_sesid_tree); offset += 8; /* now we need to first lookup the uid session */ @@ -6958,17 +6859,10 @@ dissect_smb2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, gboolea col_append_str(pinfo->cinfo, COL_INFO, ";"); } - if (parent_tree) { - item = proto_tree_add_item(parent_tree, proto_smb2, tvb, offset, - -1, ENC_NA); - tree = proto_item_add_subtree(item, ett_smb2); - } - + item = proto_tree_add_item(parent_tree, proto_smb2, tvb, offset, -1, ENC_NA); + tree = proto_item_add_subtree(item, ett_smb2); - if (tree) { - header_item = proto_tree_add_text(tree, tvb, offset, -1, "%s", label); - header_tree = proto_item_add_subtree(header_item, ett_smb2_header); - } + header_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_smb2_header, &header_item, label); /* Decode the header */ @@ -7160,7 +7054,6 @@ dissect_smb2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, gboolea /* Decode the payload */ offset = dissect_smb2_command(pinfo, tree, tvb, offset, si); } else { - proto_item *enc_item; proto_tree *enc_tree; tvbuff_t *enc_tvb = NULL; tvbuff_t *plain_tvb = NULL; @@ -7172,8 +7065,7 @@ dissect_smb2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, gboolea offset = dissect_smb2_transform_header(pinfo, header_tree, tvb, offset, sti, &enc_tvb, &plain_tvb); - enc_item = proto_tree_add_text(tree, enc_tvb, 0, sti->size, "Encrypted SMB3 data"); - enc_tree = proto_item_add_subtree(enc_item, ett_smb2_encrypted); + enc_tree = proto_tree_add_subtree(tree, enc_tvb, 0, sti->size, ett_smb2_encrypted, NULL, "Encrypted SMB3 data"); if (plain_tvb != NULL) { col_append_str(pinfo->cinfo, COL_INFO, "Decrypted SMB3"); dissect_smb2(plain_tvb, pinfo, enc_tree, FALSE); diff --git a/epan/dissectors/packet-sml.c b/epan/dissectors/packet-sml.c index 52e225bda7..8b2852fd1e 100644 --- a/epan/dissectors/packet-sml.c +++ b/epan/dissectors/packet-sml.c @@ -1,4 +1,4 @@ -/* packet-SML.c +/* packet-sml.c * Routines for SML dissection * Copyright 2013, Alexander Gaertner <gaertner.alex@gmx.de> * @@ -421,11 +421,9 @@ static void sml_value(tvbuff_t *tvb,proto_tree *insert_tree,guint *offset, guint } static void sml_time_type(tvbuff_t *tvb, proto_tree *SML_time_tree, guint *offset){ - proto_item *timetype = NULL; - proto_tree *timetype_tree = NULL; + proto_tree *timetype_tree; - timetype = proto_tree_add_text (SML_time_tree, tvb, *offset, 2, "SML-Time Type"); - timetype_tree = proto_item_add_subtree (timetype, ett_sml_timetype); + timetype_tree = proto_tree_add_subtree(SML_time_tree, tvb, *offset, 2, ett_sml_timetype, NULL, "SML-Time Type"); proto_tree_add_item (timetype_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; @@ -471,13 +469,11 @@ static void field_clientId(tvbuff_t *tvb, proto_tree *insert_tree, guint *offset } static void field_reqFileId(tvbuff_t *tvb, proto_tree *insert_tree, guint *offset, guint *data, guint *length){ - proto_item *reqFileId = NULL; - proto_tree *reqFileId_tree = NULL; + proto_tree *reqFileId_tree; get_length(tvb, offset, data, length); - reqFileId = proto_tree_add_text (insert_tree, tvb, *offset, *length + *data, "reqFileId"); + reqFileId_tree = proto_tree_add_subtree(insert_tree, tvb, *offset, *length + *data, ett_sml_reqFileId, NULL, "reqFileId"); - reqFileId_tree = proto_item_add_subtree (reqFileId, ett_sml_reqFileId); proto_tree_add_text (reqFileId_tree, tvb, *offset, *length, "Length: %d %s", *data, plurality(*data, "octet", "octets")); *offset+=*length; proto_tree_add_item (reqFileId_tree, hf_sml_reqFileId, tvb, *offset, *data, ENC_NA); @@ -601,14 +597,12 @@ static void field_listName(tvbuff_t *tvb, proto_tree *insert_tree, guint *offset } static void field_objName(tvbuff_t *tvb, proto_tree *insert_tree, guint *offset, guint *data, guint *length){ - proto_item *objName = NULL; - proto_tree *objName_tree = NULL; + proto_tree *objName_tree; /*Objectname*/ get_length(tvb, offset, data, length); - objName = proto_tree_add_text (insert_tree, tvb, *offset, *length + *data ,"Objectname"); + objName_tree = proto_tree_add_subtree(insert_tree, tvb, *offset, *length + *data, ett_sml_objName, NULL, "Objectname"); - objName_tree = proto_item_add_subtree (objName, ett_sml_objName); proto_tree_add_text (objName_tree, tvb, *offset, *length, "Length: %d %s", *data ,plurality(*data, "octet", "octets")); *offset+=*length; proto_tree_add_item (objName_tree, hf_sml_objName, tvb, *offset, *data, ENC_NA); @@ -616,14 +610,13 @@ static void field_objName(tvbuff_t *tvb, proto_tree *insert_tree, guint *offset, } static void field_status(tvbuff_t *tvb, proto_tree *insert_tree, guint *offset, guint *data, guint *length){ - proto_item *status = NULL; proto_tree *status_tree = NULL; get_length(tvb, offset, data, length); - status = proto_tree_add_text (insert_tree, tvb, *offset, *length + *data ,"status %s", (*data == 0)? ": NOT SET" : ""); + status_tree = proto_tree_add_subtree_format(insert_tree, tvb, *offset, *length + *data, + ett_sml_status, NULL, "status %s", (*data == 0)? ": NOT SET" : ""); if (*data > 0){ - status_tree = proto_item_add_subtree (status, ett_sml_status); proto_tree_add_item (status_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; proto_tree_add_item (status_tree, hf_sml_status, tvb, *offset, *data, ENC_BIG_ENDIAN); @@ -705,13 +698,11 @@ static void field_parameterTreePath(tvbuff_t *tvb, proto_tree *insert_tree, guin } static void field_ObjReqEntry(tvbuff_t *tvb, proto_tree *insert_tree, guint *offset, guint *data, guint *length){ - proto_item *object_list_Entry = NULL; - proto_tree *object_list_Entry_tree = NULL; + proto_tree *object_list_Entry_tree; /*parameterTreePath*/ get_length(tvb, offset, data, length); - object_list_Entry = proto_tree_add_text (insert_tree, tvb ,*offset, *length + *data, "object_list_Entry"); - object_list_Entry_tree = proto_item_add_subtree (object_list_Entry, ett_sml_object_list_Entry); + object_list_Entry_tree = proto_tree_add_subtree(insert_tree, tvb ,*offset, *length + *data, ett_sml_object_list_Entry, NULL, "object_list_Entry"); proto_tree_add_text (object_list_Entry_tree, tvb, *offset, *length, "Length: %d %s", *data ,plurality(*data, "octet", "octets")); *offset+=*length; proto_tree_add_item (object_list_Entry_tree, hf_sml_object_list_Entry, tvb, *offset, *data, ENC_NA); @@ -719,13 +710,11 @@ static void field_ObjReqEntry(tvbuff_t *tvb, proto_tree *insert_tree, guint *off } static void field_regPeriod(tvbuff_t *tvb, proto_tree *insert_tree, guint *offset, guint *data, guint *length){ - proto_item *regPeriod = NULL; - proto_tree *regPeriod_tree = NULL; + proto_tree *regPeriod_tree; get_length(tvb, offset, data, length); - regPeriod = proto_tree_add_text (insert_tree, tvb, *offset, *length + *data, "regPeriod"); + regPeriod_tree = proto_tree_add_subtree(insert_tree, tvb, *offset, *length + *data, ett_sml_regPeriod, NULL, "regPeriod"); - regPeriod_tree = proto_item_add_subtree (regPeriod, ett_sml_regPeriod); proto_tree_add_item (regPeriod_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; proto_tree_add_item (regPeriod_tree, hf_sml_regPeriod, tvb, *offset, *data, ENC_BIG_ENDIAN); @@ -771,12 +760,10 @@ static void field_periodSignature(tvbuff_t *tvb, proto_tree *insert_tree, guint } static void field_actTime(tvbuff_t *tvb, proto_tree *insert_tree, guint *offset, guint *data, guint *length){ - proto_item *actTime = NULL; - proto_tree *actTime_tree = NULL; + proto_tree *actTime_tree; get_length(tvb, offset, data, length); - actTime = proto_tree_add_text (insert_tree, tvb, *offset, *length + *data, "actTime"); - actTime_tree = proto_item_add_subtree (actTime, ett_sml_actTime); + actTime_tree = proto_tree_add_subtree(insert_tree, tvb, *offset, *length + *data, ett_sml_actTime, NULL, "actTime"); proto_tree_add_item (actTime_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; proto_tree_add_item(actTime_tree, hf_sml_actTime, tvb, *offset, *data, ENC_BIG_ENDIAN); @@ -784,12 +771,10 @@ static void field_actTime(tvbuff_t *tvb, proto_tree *insert_tree, guint *offset, } static void field_valTime(tvbuff_t *tvb, proto_tree *insert_tree, guint *offset, guint *data, guint *length){ - proto_item *valTime = NULL; - proto_tree *valTime_tree = NULL; + proto_tree *valTime_tree; get_length(tvb, offset, data, length); - valTime = proto_tree_add_text (insert_tree, tvb, *offset, *length + *data, "valTime"); - valTime_tree = proto_item_add_subtree (valTime, ett_sml_valTime); + valTime_tree = proto_tree_add_subtree(insert_tree, tvb, *offset, *length + *data, ett_sml_valTime, NULL, "valTime"); proto_tree_add_item (valTime_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; proto_tree_add_item(valTime_tree, hf_sml_valTime, tvb, *offset, *data, ENC_BIG_ENDIAN); @@ -797,29 +782,8 @@ static void field_valTime(tvbuff_t *tvb, proto_tree *insert_tree, guint *offset, } static void TupelEntryTree(tvbuff_t *tvb, proto_tree *procParValue_tree, guint *offset){ - proto_item *TupelEntry = NULL; - proto_item *SML_time = NULL; - proto_item *secIndex = NULL; - proto_item *unit_pA = NULL; - proto_item *scaler_pA = NULL; - proto_item *value_pA = NULL; - proto_item *unit_mA = NULL; - proto_item *scaler_mA = NULL; - proto_item *value_mA = NULL; - proto_item *unit_R1 = NULL; - proto_item *scaler_R1 = NULL; - proto_item *value_R1 = NULL; - proto_item *unit_R2 = NULL; - proto_item *scaler_R2 = NULL; - proto_item *value_R2 = NULL; - proto_item *unit_R3 = NULL; - proto_item *scaler_R3 = NULL; - proto_item *value_R3 = NULL; - proto_item *unit_R4 = NULL; - proto_item *scaler_R4 = NULL; - proto_item *value_R4 = NULL; - proto_item *signature_pA_R1_R4 = NULL; - proto_item *signature_mA_R2_R3 = NULL; + proto_item *SML_time; + proto_item *TupelEntry; proto_tree *TupelEntry_list = NULL; proto_tree *SML_time_tree = NULL; @@ -849,8 +813,7 @@ static void TupelEntryTree(tvbuff_t *tvb, proto_tree *procParValue_tree, guint * guint length = 0; /*Tupel_List*/ - TupelEntry = proto_tree_add_text (procParValue_tree, tvb, *offset, -1, "TupelEntry"); - TupelEntry_list = proto_item_add_subtree (TupelEntry, ett_sml_tupel); + TupelEntry_list = proto_tree_add_subtree(procParValue_tree, tvb, *offset, -1, ett_sml_tupel, &TupelEntry, "TupelEntry"); get_length(tvb, offset, &data, &length); *offset+=length; @@ -858,13 +821,11 @@ static void TupelEntryTree(tvbuff_t *tvb, proto_tree *procParValue_tree, guint * field_serverId(tvb, TupelEntry_list, offset, &data, &length); /*secindex*/ - SML_time = proto_tree_add_text (procParValue_tree, tvb, *offset, -1, "secIndex"); - SML_time_tree = proto_item_add_subtree (SML_time, ett_sml_time); + SML_time_tree = proto_tree_add_subtree(procParValue_tree, tvb, *offset, -1, ett_sml_time, &SML_time, "secIndex"); *offset+=1; sml_time_type(tvb, SML_time_tree, offset); get_length(tvb, offset, &data, &length); - secIndex = proto_tree_add_text (SML_time_tree, tvb, *offset, length + data, "secIndex"); - secIndex_tree = proto_item_add_subtree (secIndex, ett_sml_secIndex); + secIndex_tree = proto_tree_add_subtree(SML_time_tree, tvb, *offset, length + data, ett_sml_secIndex, NULL, "secIndex"); proto_tree_add_item (secIndex_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; proto_tree_add_item(secIndex_tree, hf_sml_secIndex, tvb, *offset, data, ENC_BIG_ENDIAN); @@ -875,16 +836,14 @@ static void TupelEntryTree(tvbuff_t *tvb, proto_tree *procParValue_tree, guint * field_status(tvb, TupelEntry_list, offset, &data, &length); /*unit_pA*/ - unit_pA= proto_tree_add_text (TupelEntry_list, tvb, *offset, 2, "unit_pA"); - unit_pA_tree = proto_item_add_subtree(unit_pA, ett_sml_unit_pA); + unit_pA_tree = proto_tree_add_subtree(TupelEntry_list, tvb, *offset, 2, ett_sml_unit_pA, NULL, "unit_pA"); proto_tree_add_item (unit_pA_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; proto_tree_add_item (unit_pA_tree, hf_sml_unit_pA, tvb, *offset, 1, ENC_NA); *offset+=1; /*scaler_pA*/ - scaler_pA= proto_tree_add_text (TupelEntry_list, tvb, *offset, 2, "scaler_pA"); - scaler_pA_tree = proto_item_add_subtree(scaler_pA, ett_sml_scaler_pA); + scaler_pA_tree = proto_tree_add_subtree(TupelEntry_list, tvb, *offset, 2, ett_sml_scaler_pA, NULL, "scaler_pA"); proto_tree_add_item (scaler_pA_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; proto_tree_add_item (scaler_pA_tree, hf_sml_scaler_pA, tvb, *offset, 1, ENC_NA); @@ -892,24 +851,21 @@ static void TupelEntryTree(tvbuff_t *tvb, proto_tree *procParValue_tree, guint * /*value_pA*/ get_length(tvb, offset, &data, &length); - value_pA= proto_tree_add_text (TupelEntry_list, tvb, *offset, length+data, "value_pA"); - value_pA_tree = proto_item_add_subtree(value_pA, ett_sml_value_pA); + value_pA_tree = proto_tree_add_subtree(TupelEntry_list, tvb, *offset, length+data, ett_sml_value_pA, NULL, "value_pA"); proto_tree_add_item (value_pA_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; proto_tree_add_item (value_pA_tree, hf_sml_value_pA, tvb, *offset, data, ENC_NA); *offset+=data; /*unit_R1*/ - unit_R1= proto_tree_add_text (TupelEntry_list, tvb, *offset, 2, "unit_R1"); - unit_R1_tree = proto_item_add_subtree(unit_R1, ett_sml_unit_R1); + unit_R1_tree = proto_tree_add_subtree(TupelEntry_list, tvb, *offset, 2, ett_sml_unit_R1, NULL, "unit_R1"); proto_tree_add_item (unit_R1_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; proto_tree_add_item (unit_R1_tree, hf_sml_unit_R1, tvb, *offset, 1, ENC_NA); *offset+=1; /*scaler_R1*/ - scaler_R1= proto_tree_add_text (TupelEntry_list, tvb, *offset, 1, "scaler_R1"); - scaler_R1_tree = proto_item_add_subtree(scaler_R1, ett_sml_scaler_R1); + scaler_R1_tree = proto_tree_add_subtree(TupelEntry_list, tvb, *offset, 1, ett_sml_scaler_R1, NULL, "scaler_R1"); proto_tree_add_item (scaler_R1_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; proto_tree_add_item (scaler_R1_tree, hf_sml_scaler_R1, tvb, *offset, 1, ENC_NA); @@ -917,24 +873,21 @@ static void TupelEntryTree(tvbuff_t *tvb, proto_tree *procParValue_tree, guint * /*value_R1*/ get_length(tvb, offset, &data, &length); - value_R1= proto_tree_add_text (TupelEntry_list, tvb, *offset, length+data, "value_R1"); - value_R1_tree = proto_item_add_subtree(value_R1, ett_sml_value_R1); + value_R1_tree = proto_tree_add_subtree(TupelEntry_list, tvb, *offset, length+data, ett_sml_value_R1, NULL, "value_R1"); proto_tree_add_item (value_R1_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; proto_tree_add_item (value_R1_tree, hf_sml_value_R1, tvb, *offset, data, ENC_NA); *offset+=data; /*unit_R4*/ - unit_R4= proto_tree_add_text (TupelEntry_list, tvb, *offset, 2, "unit_R4"); - unit_R4_tree = proto_item_add_subtree(unit_R4, ett_sml_unit_R4); + unit_R4_tree = proto_tree_add_subtree(TupelEntry_list, tvb, *offset, 2, ett_sml_unit_R4, NULL, "unit_R4"); proto_tree_add_item (unit_R4_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; proto_tree_add_item (unit_R4_tree, hf_sml_unit_R4, tvb, *offset, 1, ENC_NA); *offset+=1; /*scaler_R4*/ - scaler_R4= proto_tree_add_text (TupelEntry_list, tvb, *offset, 2, "scaler_R4"); - scaler_R4_tree = proto_item_add_subtree(scaler_R4, ett_sml_scaler_R4); + scaler_R4_tree = proto_tree_add_subtree(TupelEntry_list, tvb, *offset, 2, ett_sml_scaler_R4, NULL, "scaler_R4"); proto_tree_add_item (scaler_R4_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; proto_tree_add_item (scaler_R4_tree, hf_sml_scaler_R4, tvb, *offset, 1, ENC_NA); @@ -942,8 +895,7 @@ static void TupelEntryTree(tvbuff_t *tvb, proto_tree *procParValue_tree, guint * /*value_R4*/ get_length(tvb, offset, &data, &length); - value_R4= proto_tree_add_text (TupelEntry_list, tvb, *offset, length+data, "value_R4"); - value_R4_tree = proto_item_add_subtree(value_R4, ett_sml_value_R4); + value_R4_tree = proto_tree_add_subtree(TupelEntry_list, tvb, *offset, length+data, ett_sml_value_R4, NULL, "value_R4"); proto_tree_add_item (value_R4_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; proto_tree_add_item (value_R4_tree, hf_sml_value_R4, tvb, *offset, data, ENC_NA); @@ -951,24 +903,21 @@ static void TupelEntryTree(tvbuff_t *tvb, proto_tree *procParValue_tree, guint * /*signature_pA_R1_R4*/ get_length(tvb, offset, &data, &length); - signature_pA_R1_R4= proto_tree_add_text (TupelEntry_list, tvb, *offset, length+data, "signature_pa_R1_R4"); - signature_pA_R1_R4_tree = proto_item_add_subtree(signature_pA_R1_R4, ett_sml_signature_pA_R1_R4); + signature_pA_R1_R4_tree = proto_tree_add_subtree(TupelEntry_list, tvb, *offset, length+data, ett_sml_signature_pA_R1_R4, NULL, "signature_pa_R1_R4"); proto_tree_add_text (signature_pA_R1_R4_tree, tvb, *offset, length, "Length: %d %s", data ,plurality(data, "octet", "octets")); *offset+=length; proto_tree_add_item (signature_pA_R1_R4_tree, hf_sml_signature_pA_R1_R4, tvb, *offset, data, ENC_NA); *offset+=data; /*unit_mA*/ - unit_mA= proto_tree_add_text (TupelEntry_list, tvb, *offset, 2, "unit_mA"); - unit_mA_tree = proto_item_add_subtree(unit_mA, ett_sml_unit_mA); + unit_mA_tree = proto_tree_add_subtree(TupelEntry_list, tvb, *offset, 2, ett_sml_unit_mA, NULL, "unit_mA"); proto_tree_add_item (unit_mA_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; proto_tree_add_item (unit_mA_tree, hf_sml_unit_mA, tvb, *offset, 1, ENC_NA); *offset+=1; /*scaler_mA*/ - scaler_mA= proto_tree_add_text (TupelEntry_list, tvb, *offset, 2, "scaler_mA"); - scaler_mA_tree = proto_item_add_subtree(scaler_mA, ett_sml_scaler_mA); + scaler_mA_tree = proto_tree_add_subtree(TupelEntry_list, tvb, *offset, 2, ett_sml_scaler_mA, NULL, "scaler_mA"); proto_tree_add_item (scaler_mA_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; proto_tree_add_item (scaler_mA_tree, hf_sml_scaler_mA, tvb, *offset, 1, ENC_NA); @@ -976,24 +925,21 @@ static void TupelEntryTree(tvbuff_t *tvb, proto_tree *procParValue_tree, guint * /*value_mA*/ get_length(tvb, offset, &data, &length); - value_mA= proto_tree_add_text (TupelEntry_list, tvb, *offset, length+data, "value_mA"); - value_mA_tree = proto_item_add_subtree(value_mA, ett_sml_value_mA); + value_mA_tree = proto_tree_add_subtree(TupelEntry_list, tvb, *offset, length+data, ett_sml_value_mA, NULL, "value_mA"); proto_tree_add_item (value_mA_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; proto_tree_add_item (value_mA_tree, hf_sml_value_mA, tvb, *offset, data, ENC_NA); *offset+=data; /*unit_R2*/ - unit_R2= proto_tree_add_text (TupelEntry_list, tvb, *offset, 2, "unit_R2"); - unit_R2_tree = proto_item_add_subtree(unit_R2, ett_sml_unit_R2); + unit_R2_tree = proto_tree_add_subtree(TupelEntry_list, tvb, *offset, 2, ett_sml_unit_R2, NULL, "unit_R2"); proto_tree_add_item (unit_R2_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; proto_tree_add_item (unit_R2_tree, hf_sml_unit_R2, tvb, *offset, 1, ENC_NA); *offset+=1; /*scaler_R2*/ - scaler_R2= proto_tree_add_text (TupelEntry_list, tvb, *offset, 2, "scaler_R2"); - scaler_R2_tree = proto_item_add_subtree(scaler_R2, ett_sml_scaler_R2); + scaler_R2_tree = proto_tree_add_subtree(TupelEntry_list, tvb, *offset, 2, ett_sml_scaler_R2, NULL, "scaler_R2"); proto_tree_add_item (scaler_R2_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; proto_tree_add_item (scaler_R2_tree, hf_sml_scaler_R2, tvb, *offset, 1, ENC_NA); @@ -1001,24 +947,21 @@ static void TupelEntryTree(tvbuff_t *tvb, proto_tree *procParValue_tree, guint * /*value_R2*/ get_length(tvb, offset, &data, &length); - value_R2= proto_tree_add_text (TupelEntry_list, tvb, *offset, length+data, "value_R2"); - value_R2_tree = proto_item_add_subtree(value_R2, ett_sml_value_R2); + value_R2_tree = proto_tree_add_subtree(TupelEntry_list, tvb, *offset, length+data, ett_sml_value_R2, NULL, "value_R2"); proto_tree_add_item (value_R2_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; proto_tree_add_item (value_R2_tree, hf_sml_value_R2, tvb, *offset, data, ENC_NA); *offset+=data; /*unit_R3*/ - unit_R3= proto_tree_add_text (TupelEntry_list, tvb, *offset, 2, "unit_R3"); - unit_R3_tree = proto_item_add_subtree(unit_R3, ett_sml_unit_R3); + unit_R3_tree = proto_tree_add_subtree(TupelEntry_list, tvb, *offset, 2, ett_sml_unit_R3, NULL, "unit_R3"); proto_tree_add_item (unit_R3_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; proto_tree_add_item (unit_R3_tree, hf_sml_unit_R3, tvb, *offset, 1, ENC_NA); *offset+=1; /*scaler_R3*/ - scaler_R3= proto_tree_add_text (TupelEntry_list, tvb, *offset, 2, "scaler_R3"); - scaler_R3_tree = proto_item_add_subtree(scaler_R3, ett_sml_scaler_R3); + scaler_R3_tree = proto_tree_add_subtree(TupelEntry_list, tvb, *offset, 2, ett_sml_scaler_R3, NULL, "scaler_R3"); proto_tree_add_item (scaler_R3_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; proto_tree_add_item (scaler_R3_tree, hf_sml_scaler_R3, tvb, *offset, 1, ENC_NA); @@ -1026,8 +969,7 @@ static void TupelEntryTree(tvbuff_t *tvb, proto_tree *procParValue_tree, guint * /*value_R3*/ get_length(tvb, offset, &data, &length); - value_R3= proto_tree_add_text (TupelEntry_list, tvb, *offset, length+data, "value_R3"); - value_R3_tree = proto_item_add_subtree(value_R3, ett_sml_value_R3); + value_R3_tree = proto_tree_add_subtree(TupelEntry_list, tvb, *offset, length+data, ett_sml_value_R3, NULL, "value_R3"); proto_tree_add_item (value_R3_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; proto_tree_add_item (value_R3_tree, hf_sml_value_R3, tvb, *offset, data, ENC_NA); @@ -1035,9 +977,8 @@ static void TupelEntryTree(tvbuff_t *tvb, proto_tree *procParValue_tree, guint * /*signature_mA_R2_R3*/ get_length(tvb, offset, &data, &length); - signature_mA_R2_R3= proto_tree_add_text (TupelEntry_list, tvb, *offset, length+data, "signature_mA_R2_R3"); - signature_mA_R2_R3_tree = proto_item_add_subtree(signature_mA_R2_R3, ett_sml_signature_mA_R2_R3); - proto_tree_add_text (signature_mA_R2_R3_tree, tvb, *offset, length, "Length: %d %s", data ,plurality(data, "octet", "octets")); + signature_mA_R2_R3_tree = proto_tree_add_subtree(TupelEntry_list, tvb, *offset, length+data, ett_sml_signature_mA_R2_R3, NULL, "signature_mA_R2_R3"); + proto_tree_add_text (signature_mA_R2_R3_tree, tvb, *offset, length, "Length: %d %s", data, plurality(data, "octet", "octets")); *offset+=length; proto_tree_add_item (signature_mA_R2_R3_tree, hf_sml_signature_mA_R2_R3, tvb, *offset, data, ENC_NA); *offset+=data; @@ -1046,14 +987,12 @@ static void TupelEntryTree(tvbuff_t *tvb, proto_tree *procParValue_tree, guint * } static void child_tree(tvbuff_t *tvb, packet_info *pinfo, proto_tree *insert_tree, guint *offset, guint *data, guint *length){ - proto_item *parameterName = NULL; - proto_item *procParValue = NULL; - proto_item *child = NULL; - proto_item *procParValuetype = NULL; - proto_item *periodEntry = NULL; - proto_item *SML_time = NULL; - proto_item *procParValueTime = NULL; - proto_item *tree_Entry = NULL; + proto_item *parameterName; + proto_item *procParValue; + proto_item *child; + proto_item *periodEntry; + proto_item *SML_time; + proto_item *tree_Entry; proto_tree *parameterName_tree = NULL; proto_tree *procParValue_tree = NULL; @@ -1070,8 +1009,7 @@ static void child_tree(tvbuff_t *tvb, packet_info *pinfo, proto_tree *insert_tre /*parameterName*/ get_length(tvb, offset, data, length); - parameterName = proto_tree_add_text (insert_tree, tvb, *offset, *length + *data ,"parameterName"); - parameterName_tree = proto_item_add_subtree (parameterName, ett_sml_parameterName); + parameterName_tree = proto_tree_add_subtree(insert_tree, tvb, *offset, *length + *data, ett_sml_parameterName, ¶meterName, "parameterName"); proto_tree_add_text (parameterName_tree, tvb, *offset, *length, "Length: %d %s", *data ,plurality(*data, "octet", "octets")); *offset+=*length; proto_tree_add_item (parameterName_tree, hf_sml_parameterName, tvb, *offset, *data, ENC_NA); @@ -1087,13 +1025,11 @@ static void child_tree(tvbuff_t *tvb, packet_info *pinfo, proto_tree *insert_tre } else if (check == 0x72){ get_length(tvb, offset, data, length); - procParValue = proto_tree_add_text(insert_tree, tvb, *offset, -1, "ProcParValue"); - procParValue_tree = proto_item_add_subtree (procParValue, ett_sml_procParValue); + procParValue_tree = proto_tree_add_subtree(insert_tree, tvb, *offset, -1, ett_sml_procParValue, &procParValue, "ProcParValue"); *offset+=1; /*procParValue CHOOSE*/ - procParValuetype = proto_tree_add_text (procParValue_tree, tvb, *offset, 2, "ProcParValueType"); - procParValuetype_tree = proto_item_add_subtree (procParValuetype, ett_sml_procParValuetype); + procParValuetype_tree = proto_tree_add_subtree(procParValue_tree, tvb, *offset, 2, ett_sml_procParValuetype, NULL, "ProcParValueType"); proto_tree_add_item (procParValuetype_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; check = tvb_get_guint8(tvb, *offset); @@ -1109,8 +1045,8 @@ static void child_tree(tvbuff_t *tvb, packet_info *pinfo, proto_tree *insert_tre case PROC_PERIOD: /*period*/ get_length(tvb, offset, data, length); - periodEntry = proto_tree_add_text(procParValue_tree, tvb, *offset, -1, "PeriodEntry List with %d %s", *length + *data, plurality(*length + *data, "element", "elements")); - periodEntry_tree = proto_item_add_subtree(periodEntry, ett_sml_periodEntry); + periodEntry_tree = proto_tree_add_subtree_format(procParValue_tree, tvb, *offset, -1, ett_sml_periodEntry, &periodEntry, + "PeriodEntry List with %d %s", *length + *data, plurality(*length + *data, "element", "elements")); *offset+=*length; /*objName*/ @@ -1143,16 +1079,14 @@ static void child_tree(tvbuff_t *tvb, packet_info *pinfo, proto_tree *insert_tre break; case PROC_TIME: - SML_time = proto_tree_add_text (procParValue_tree, tvb, *offset, -1, "Time"); - SML_time_tree = proto_item_add_subtree (SML_time, ett_sml_time); + SML_time_tree = proto_tree_add_subtree(procParValue_tree, tvb, *offset, -1, ett_sml_time, &SML_time, "Time"); *offset+=1; sml_time_type(tvb, SML_time_tree, offset); /*Time*/ get_length(tvb, offset, data, length); - procParValueTime = proto_tree_add_text (SML_time_tree, tvb, *offset, *length + *data, "procParValueTime"); - procParValueTime_tree = proto_item_add_subtree (procParValueTime, ett_sml_procParValueTime); + procParValueTime_tree = proto_tree_add_subtree(SML_time_tree, tvb, *offset, *length + *data, ett_sml_procParValueTime, NULL, "procParValueTime"); proto_tree_add_item (procParValueTime_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; proto_tree_add_item(procParValueTime_tree, hf_sml_procParValueTime, tvb, *offset, *data, ENC_BIG_ENDIAN); @@ -1182,12 +1116,11 @@ static void child_tree(tvbuff_t *tvb, packet_info *pinfo, proto_tree *insert_tre else if ((check & 0x0F) != 0){ if (check == 0x71){ get_length(tvb, offset, data, length); - child = proto_tree_add_text(insert_tree, tvb, *offset, -1, "Child List with %d %s", *length + *data, plurality(*length + *data, "element", "elements")); - child_list = proto_item_add_subtree(child, ett_sml_child); + child_list = proto_tree_add_subtree_format(insert_tree, tvb, *offset, -1, ett_sml_child, &child, + "Child List with %d %s", *length + *data, plurality(*length + *data, "element", "elements")); *offset+=1; - tree_Entry = proto_tree_add_text (child_list, tvb, *offset, -1, "tree_Entry"); - tree_Entry_list = proto_item_add_subtree(tree_Entry, ett_sml_tree_Entry); + tree_Entry_list = proto_tree_add_subtree(child_list, tvb, *offset, -1, ett_sml_tree_Entry, &tree_Entry, "tree_Entry"); *offset+=1; child_tree(tvb, pinfo,tree_Entry_list, offset, data, length); @@ -1198,8 +1131,8 @@ static void child_tree(tvbuff_t *tvb, packet_info *pinfo, proto_tree *insert_tre else if ((check & 0xF0) == SHORT_LIST || (check & 0xF0) == LONG_LIST){ get_length(tvb, offset, data, length); repeat = *length + *data; - child = proto_tree_add_text(insert_tree, tvb, *offset, -1, "Child List with %d %s", *length + *data, plurality(*length + *data, "element", "elements")); - child_list = proto_item_add_subtree(child, ett_sml_child); + child_list = proto_tree_add_subtree_format(insert_tree, tvb, *offset, -1, ett_sml_child, &child, + "Child List with %d %s", *length + *data, plurality(*length + *data, "element", "elements")); if (repeat <= 0){ expert_add_info_format(pinfo, child, &ei_sml_invalid_count, "invalid loop count"); return; @@ -1207,8 +1140,7 @@ static void child_tree(tvbuff_t *tvb, packet_info *pinfo, proto_tree *insert_tre *offset+=*length; for(i =0 ; i < repeat; i++){ - tree_Entry = proto_tree_add_text (child_list, tvb, *offset, -1, "tree_Entry"); - tree_Entry_list = proto_item_add_subtree(tree_Entry, ett_sml_tree_Entry); + tree_Entry_list = proto_tree_add_subtree(child_list, tvb, *offset, -1, ett_sml_tree_Entry, &tree_Entry, "tree_Entry"); if (tvb_get_guint8(tvb, *offset) != 0x73){ expert_add_info_format(pinfo, tree_Entry, &ei_sml_invalid_count, "invalid count of elements in tree_Entry"); @@ -1255,7 +1187,6 @@ static void decode_PublicOpenReq (tvbuff_t *tvb, proto_tree *messagebodytree_lis } static void decode_PublicOpenRes (tvbuff_t *tvb, proto_tree *messagebodytree_list, guint *offset){ - proto_item *refTime = NULL; proto_item *SML_time = NULL; proto_tree *refTime_tree = NULL; @@ -1285,16 +1216,14 @@ static void decode_PublicOpenRes (tvbuff_t *tvb, proto_tree *messagebodytree_lis } else{ /*SML TIME*/ - SML_time = proto_tree_add_text (messagebodytree_list, tvb, *offset, -1, "refTime"); - SML_time_tree = proto_item_add_subtree (SML_time, ett_sml_time); + SML_time_tree = proto_tree_add_subtree(messagebodytree_list, tvb, *offset, -1, ett_sml_time, &SML_time, "refTime"); *offset+=1; sml_time_type(tvb, SML_time_tree, offset); /*refTime*/ get_length(tvb, offset, &data, &length); - refTime = proto_tree_add_text (SML_time_tree, tvb, *offset, length+data, "refTime"); - refTime_tree = proto_item_add_subtree (refTime, ett_sml_refTime); + refTime_tree = proto_tree_add_subtree(SML_time_tree, tvb, *offset, length+data, ett_sml_refTime, NULL, "refTime"); proto_tree_add_item (refTime_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; proto_tree_add_item(refTime_tree, hf_sml_refTime, tvb, *offset, data, ENC_BIG_ENDIAN); @@ -1308,10 +1237,8 @@ static void decode_PublicOpenRes (tvbuff_t *tvb, proto_tree *messagebodytree_lis static gboolean decode_GetProfile_List_Pack_Req (tvbuff_t *tvb, packet_info *pinfo, proto_tree *messagebodytree_list, guint *offset){ proto_item *withRawdata = NULL; proto_item *SML_time = NULL; - proto_item *beginTime = NULL; proto_item *treepath = NULL; proto_item *object_list = NULL; - proto_item *endTime = NULL; proto_item *dasDetails = NULL; proto_tree *withRawdata_tree = NULL; @@ -1360,16 +1287,14 @@ static gboolean decode_GetProfile_List_Pack_Req (tvbuff_t *tvb, packet_info *pin } else { /*SML TIME*/ - SML_time = proto_tree_add_text (messagebodytree_list, tvb, *offset, -1, "beginTime"); - SML_time_tree = proto_item_add_subtree (SML_time, ett_sml_time); + SML_time_tree = proto_tree_add_subtree(messagebodytree_list, tvb, *offset, -1, ett_sml_time, &SML_time, "beginTime"); *offset+=1; sml_time_type(tvb, SML_time_tree, offset); /*beginTime*/ get_length(tvb, offset, &data, &length); - beginTime = proto_tree_add_text (SML_time_tree, tvb, *offset, length + data, "beginTime"); - beginTime_tree = proto_item_add_subtree (beginTime, ett_sml_beginTime); + beginTime_tree = proto_tree_add_subtree(SML_time_tree, tvb, *offset, length + data, ett_sml_beginTime, NULL, "beginTime"); proto_tree_add_item (beginTime_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; proto_tree_add_item(beginTime_tree, hf_sml_beginTime, tvb, *offset, data, ENC_BIG_ENDIAN); @@ -1386,16 +1311,14 @@ static gboolean decode_GetProfile_List_Pack_Req (tvbuff_t *tvb, packet_info *pin } else { /*SML TIME*/ - SML_time = proto_tree_add_text (messagebodytree_list, tvb, *offset, -1, "endTime"); - SML_time_tree = proto_item_add_subtree (SML_time, ett_sml_time); + SML_time_tree = proto_tree_add_subtree(messagebodytree_list, tvb, *offset, -1, ett_sml_time, &SML_time, "endTime"); *offset+=1; sml_time_type(tvb, SML_time_tree, offset); /*endTime*/ get_length(tvb, offset, &data, &length); - endTime = proto_tree_add_text (SML_time_tree, tvb, *offset, length + data, "endTime"); - endTime_tree = proto_item_add_subtree (endTime, ett_sml_beginTime); + endTime_tree = proto_tree_add_subtree(SML_time_tree, tvb, *offset, length + data, ett_sml_beginTime, NULL, "endTime"); proto_tree_add_item (endTime_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; proto_tree_add_item(endTime_tree, hf_sml_endTime, tvb, *offset, data, ENC_BIG_ENDIAN); @@ -1406,8 +1329,8 @@ static gboolean decode_GetProfile_List_Pack_Req (tvbuff_t *tvb, packet_info *pin /*Treepath List*/ get_length(tvb, offset, &data, &length); repeat = (data+length); - treepath = proto_tree_add_text (messagebodytree_list, tvb, *offset, -1, "parameterTreePath with %d %s", length+data, plurality(length+data, "element", "elements")); - treepath_list = proto_item_add_subtree(treepath, ett_sml_treepath); + treepath_list = proto_tree_add_subtree_format(messagebodytree_list, tvb, *offset, -1, ett_sml_treepath, &treepath, + "parameterTreePath with %d %s", length+data, plurality(length+data, "element", "elements")); if ((tvb_get_guint8(tvb,*offset) & 0xF0) != LONG_LIST && (tvb_get_guint8(tvb,*offset) & 0xF0) != SHORT_LIST){ expert_add_info_format(pinfo, treepath, &ei_sml_invalid_count, "invalid count of elements in Treepath"); @@ -1432,8 +1355,8 @@ static gboolean decode_GetProfile_List_Pack_Req (tvbuff_t *tvb, packet_info *pin else{ get_length(tvb, offset, &data, &length); repeat = (data+length); - object_list = proto_tree_add_text (messagebodytree_list, tvb, *offset, -1, "object_List with %d %s", length+data, plurality(length+data, "element", "elements")); - object_list_list = proto_item_add_subtree(object_list, ett_sml_object_list); + object_list_list = proto_tree_add_subtree_format(messagebodytree_list, tvb, *offset, -1, ett_sml_object_list, &object_list, + "object_List with %d %s", length+data, plurality(length+data, "element", "elements")); if ((tvb_get_guint8(tvb,*offset) & 0xF0) != LONG_LIST && (tvb_get_guint8(tvb,*offset) & 0xF0) != SHORT_LIST){ expert_add_info_format(pinfo, object_list, &ei_sml_invalid_count, "invalid count of elements in object_List"); @@ -1461,8 +1384,8 @@ static gboolean decode_GetProfile_List_Pack_Req (tvbuff_t *tvb, packet_info *pin } else if ((check & 0xF0) == LONG_LIST || (check & 0xF0) == SHORT_LIST){ get_length(tvb, offset, &data, &length); - dasDetails = proto_tree_add_text(messagebodytree_list, tvb, *offset, -1, "dasDetails with %d %s", length+data, plurality(length+data, "element", "elements")); - dasDetails_list = proto_item_add_subtree(dasDetails, ett_sml_dasDetails); + dasDetails_list = proto_tree_add_subtree_format(messagebodytree_list, tvb, *offset, -1, ett_sml_dasDetails, &dasDetails, + "dasDetails with %d %s", length+data, plurality(length+data, "element", "elements")); *offset+=length; child_tree(tvb, pinfo, dasDetails_list, offset, &data, &length); @@ -1508,8 +1431,8 @@ static gboolean decode_GetProfilePackRes(tvbuff_t *tvb, packet_info *pinfo, prot /*actTime*/ get_length(tvb, offset, &data, &length); - SML_time = proto_tree_add_text (messagebodytree_list, tvb, *offset, -1, "actTime List with %d %s", length+data, plurality(length+data, "element", "elements")); - SML_time_tree = proto_item_add_subtree (SML_time, ett_sml_time); + SML_time_tree = proto_tree_add_subtree_format(messagebodytree_list, tvb, *offset, -1, ett_sml_time, &SML_time, + "actTime List with %d %s", length+data, plurality(length+data, "element", "elements")); *offset+=1; sml_time_type(tvb, SML_time_tree, offset); field_actTime(tvb, SML_time_tree, offset, &data, &length); @@ -1521,8 +1444,8 @@ static gboolean decode_GetProfilePackRes(tvbuff_t *tvb, packet_info *pinfo, prot /*Treepath List*/ get_length(tvb, offset, &data, &length); repeat = (data+length); - treepath = proto_tree_add_text (messagebodytree_list, tvb, *offset, -1, "parameterTreePath with %d %s", length+data, plurality(length+data, "element", "elements")); - treepath_list = proto_item_add_subtree(treepath, ett_sml_treepath); + treepath_list = proto_tree_add_subtree_format(messagebodytree_list, tvb, *offset, -1, ett_sml_treepath, &treepath, + "parameterTreePath with %d %s", length+data, plurality(length+data, "element", "elements")); if ((tvb_get_guint8(tvb,*offset) & 0xF0) != LONG_LIST && (tvb_get_guint8(tvb,*offset) & 0xF0) != SHORT_LIST){ expert_add_info_format(pinfo, treepath, &ei_sml_invalid_count, "invalid count of elements in Treepath"); @@ -1543,8 +1466,8 @@ static gboolean decode_GetProfilePackRes(tvbuff_t *tvb, packet_info *pinfo, prot /*headerList*/ get_length(tvb, offset, &data, &length); repeat = (data+length); - headerList = proto_tree_add_text (messagebodytree_list, tvb, *offset, -1, "header_List with %d %s", length+data, plurality(length+data, "element", "elements")); - headerList_subtree = proto_item_add_subtree(headerList, ett_sml_headerList); + headerList_subtree = proto_tree_add_subtree_format(messagebodytree_list, tvb, *offset, -1, ett_sml_headerList, &headerList, + "header_List with %d %s", length+data, plurality(length+data, "element", "elements")); if ((tvb_get_guint8(tvb,*offset) & 0xF0) != LONG_LIST && (tvb_get_guint8(tvb,*offset) & 0xF0) != SHORT_LIST){ expert_add_info_format(pinfo, headerList, &ei_sml_invalid_count, "invalid count of elements in headerlist"); @@ -1559,8 +1482,8 @@ static gboolean decode_GetProfilePackRes(tvbuff_t *tvb, packet_info *pinfo, prot for (i=0; i< repeat; i++) { get_length(tvb, offset, &data, &length); - header_List_Entry = proto_tree_add_text (headerList_subtree, tvb, *offset, -1, "header_List_Entry with %d %s", length+data, plurality(length+data, "element", "elements")); - header_List_Entry_list = proto_item_add_subtree(header_List_Entry, ett_sml_header_List_Entry); + header_List_Entry_list = proto_tree_add_subtree_format(headerList_subtree, tvb, *offset, -1, ett_sml_header_List_Entry, &header_List_Entry, + "header_List_Entry with %d %s", length+data, plurality(length+data, "element", "elements")); *offset+=1; /*objname*/ @@ -1579,8 +1502,8 @@ static gboolean decode_GetProfilePackRes(tvbuff_t *tvb, packet_info *pinfo, prot /*period List*/ get_length(tvb, offset, &data, &length); repeat = (data+length); - periodList = proto_tree_add_text (messagebodytree_list, tvb, *offset, -1, "period_List with %d %s", length+data, plurality(length+data, "element", "elements")); - periodList_list = proto_item_add_subtree(periodList, ett_sml_periodList); + periodList_list = proto_tree_add_subtree_format(messagebodytree_list, tvb, *offset, -1, ett_sml_periodList, &periodList, + "period_List with %d %s", length+data, plurality(length+data, "element", "elements")); if ((tvb_get_guint8(tvb,*offset) & 0xF0) != LONG_LIST && (tvb_get_guint8(tvb,*offset) & 0xF0) != SHORT_LIST){ expert_add_info_format(pinfo, periodList, &ei_sml_invalid_count, "invalid count of elements in periodList"); @@ -1595,14 +1518,13 @@ static gboolean decode_GetProfilePackRes(tvbuff_t *tvb, packet_info *pinfo, prot for (i=0; i< repeat; i++) { get_length(tvb, offset, &data, &length); - period_List_Entry = proto_tree_add_text (periodList_list, tvb, *offset, -1, "period_List_Entry with %d %s", length+data, plurality(length+data, "element", "elements")); - period_List_Entry_list = proto_item_add_subtree(period_List_Entry, ett_sml_period_List_Entry); + period_List_Entry_list = proto_tree_add_subtree_format(periodList_list, tvb, *offset, -1, ett_sml_period_List_Entry, &period_List_Entry, + "period_List_Entry with %d %s", length+data, plurality(length+data, "element", "elements")); *offset+=1; /*valTime*/ get_length(tvb, offset, &data, &length); - SML_time = proto_tree_add_text (period_List_Entry, tvb, *offset, -1, "valTime"); - SML_time_tree = proto_item_add_subtree (SML_time, ett_sml_time); + SML_time_tree = proto_tree_add_subtree(period_List_Entry, tvb, *offset, -1, ett_sml_time, &SML_time, "valTime"); *offset+=1; sml_time_type(tvb, SML_time_tree, offset); field_valTime(tvb, SML_time_tree, offset, &data, &length); @@ -1614,8 +1536,8 @@ static gboolean decode_GetProfilePackRes(tvbuff_t *tvb, packet_info *pinfo, prot /*value List*/ get_length(tvb, offset, &data, &length); repeat2 = data + length; - valuelist = proto_tree_add_text (period_List_Entry_list, tvb, *offset, -1, "period_List with %d %s", length+data, plurality(length+data, "element", "elements")); - valuelist_list = proto_item_add_subtree(valuelist, ett_sml_valuelist); + valuelist_list = proto_tree_add_subtree_format(period_List_Entry_list, tvb, *offset, -1, ett_sml_valuelist, &valuelist, + "period_List with %d %s", length+data, plurality(length+data, "element", "elements")); if ((tvb_get_guint8(tvb,*offset) & 0xF0) != LONG_LIST && (tvb_get_guint8(tvb,*offset) & 0xF0) != SHORT_LIST){ expert_add_info_format(pinfo, valuelist, &ei_sml_invalid_count, "invalid count of elements in valueList"); @@ -1630,8 +1552,8 @@ static gboolean decode_GetProfilePackRes(tvbuff_t *tvb, packet_info *pinfo, prot for (d=0; d< repeat2; d++) { get_length(tvb, offset, &data, &length); - value_List_Entry = proto_tree_add_text (valuelist_list, tvb, *offset, -1, "value_List_Entry with %d %s", length+data, plurality(length+data, "element", "elements")); - value_List_Entry_list = proto_item_add_subtree(value_List_Entry, ett_sml_value_List_Entry); + value_List_Entry_list = proto_tree_add_subtree_format(valuelist_list, tvb, *offset, -1, ett_sml_value_List_Entry, NULL, + "value_List_Entry with %d %s", length+data, plurality(length+data, "element", "elements")); *offset+=1; /*value*/ @@ -1692,8 +1614,7 @@ static gboolean decode_GetProfileListRes(tvbuff_t *tvb, packet_info *pinfo, prot /*actTime*/ get_length(tvb, offset, &data, &length); - SML_time = proto_tree_add_text (messagebodytree_list, tvb, *offset, -1, "actTime"); - SML_time_tree = proto_item_add_subtree (SML_time, ett_sml_time); + SML_time_tree = proto_tree_add_subtree(messagebodytree_list, tvb, *offset, -1, ett_sml_time, &SML_time, "actTime"); *offset+=1; sml_time_type(tvb, SML_time_tree, offset); field_actTime(tvb, SML_time_tree, offset, &data, &length); @@ -1705,8 +1626,8 @@ static gboolean decode_GetProfileListRes(tvbuff_t *tvb, packet_info *pinfo, prot /*Treepath List*/ get_length(tvb, offset, &data, &length); repeat = (data+length); - treepath = proto_tree_add_text (messagebodytree_list, tvb, *offset, -1, "parameterTreePath with %d %s", length+data, plurality(length+data, "element", "elements")); - treepath_list = proto_item_add_subtree(treepath, ett_sml_treepath); + treepath_list = proto_tree_add_subtree_format(messagebodytree_list, tvb, *offset, -1, ett_sml_treepath, &treepath, + "parameterTreePath with %d %s", length+data, plurality(length+data, "element", "elements")); if ((tvb_get_guint8(tvb,*offset) & 0xF0) != LONG_LIST && (tvb_get_guint8(tvb,*offset) & 0xF0) != SHORT_LIST){ expert_add_info_format(pinfo, treepath, &ei_sml_invalid_count, "invalid count of elements in parameterTreePath"); @@ -1733,8 +1654,7 @@ static gboolean decode_GetProfileListRes(tvbuff_t *tvb, packet_info *pinfo, prot } else { /*SML TIME*/ - SML_time = proto_tree_add_text (messagebodytree_list, tvb, *offset, -1, "valTime"); - SML_time_tree = proto_item_add_subtree (SML_time, ett_sml_time); + SML_time_tree = proto_tree_add_subtree(messagebodytree_list, tvb, *offset, -1, ett_sml_time, &SML_time, "valTime"); *offset+=1; sml_time_type(tvb, SML_time_tree, offset); @@ -1748,8 +1668,8 @@ static gboolean decode_GetProfileListRes(tvbuff_t *tvb, packet_info *pinfo, prot /*period-List*/ get_length(tvb, offset, &data, &length); repeat = (data+length); - periodList = proto_tree_add_text (messagebodytree_list, tvb, *offset, -1, "period-List with %d %s", length+data, plurality(length+data, "element", "elements")); - periodList_list = proto_item_add_subtree(periodList, ett_sml_periodList); + periodList_list = proto_tree_add_subtree_format(messagebodytree_list, tvb, *offset, -1, ett_sml_periodList, &periodList, + "period-List with %d %s", length+data, plurality(length+data, "element", "elements")); if ((tvb_get_guint8(tvb,*offset) & 0xF0) != LONG_LIST && (tvb_get_guint8(tvb,*offset) & 0xF0) != SHORT_LIST){ expert_add_info_format(pinfo, periodList, &ei_sml_invalid_count, "invalid count of elements in periodList"); @@ -1764,8 +1684,7 @@ static gboolean decode_GetProfileListRes(tvbuff_t *tvb, packet_info *pinfo, prot for (i=0; i< repeat; i++) { get_length(tvb, offset, &data, &length); - periodList_Entry = proto_tree_add_text (periodList_list, tvb, *offset, -1, "PeriodEntry"); - periodList_Entry_list = proto_item_add_subtree(periodList_Entry, ett_sml_period_List_Entry); + periodList_Entry_list = proto_tree_add_subtree(periodList_list, tvb, *offset, -1, ett_sml_period_List_Entry, &periodList_Entry, "PeriodEntry"); *offset+=1; /*ObjName*/ @@ -1817,11 +1736,9 @@ static void decode_GetListReq (tvbuff_t *tvb, proto_tree *messagebodytree_list, } static gboolean decode_GetListRes (tvbuff_t *tvb, packet_info *pinfo, proto_tree *messagebodytree_list, guint *offset){ - proto_item *actSensorTime = NULL; proto_item *valList = NULL; proto_item *listSignature = NULL; proto_item *valtree = NULL; - proto_item *actGatewayTime = NULL; proto_item *SML_time; proto_tree *actSensorTime_tree = NULL; @@ -1854,16 +1771,14 @@ static gboolean decode_GetListRes (tvbuff_t *tvb, packet_info *pinfo, proto_tree } else { /*SML TIME*/ - SML_time = proto_tree_add_text (messagebodytree_list, tvb, *offset, -1, "actSensorTime"); - SML_time_tree = proto_item_add_subtree (SML_time, ett_sml_time); + SML_time_tree = proto_tree_add_subtree(messagebodytree_list, tvb, *offset, -1, ett_sml_time, &SML_time, "actSensorTime"); *offset+=1; sml_time_type(tvb, SML_time_tree, offset); /*actSensorTime*/ get_length(tvb, offset, &data, &length); - actSensorTime = proto_tree_add_text (SML_time_tree, tvb, *offset, length + data, "actSensorTime"); - actSensorTime_tree = proto_item_add_subtree (actSensorTime, ett_sml_actSensorTime); + actSensorTime_tree = proto_tree_add_subtree(SML_time_tree, tvb, *offset, length + data, ett_sml_actSensorTime, NULL, "actSensorTime"); proto_tree_add_item (actSensorTime_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; proto_tree_add_item(actSensorTime_tree, hf_sml_actSensorTime, tvb, *offset, data, ENC_BIG_ENDIAN); @@ -1874,8 +1789,8 @@ static gboolean decode_GetListRes (tvbuff_t *tvb, packet_info *pinfo, proto_tree /*valList*/ get_length(tvb, offset, &data, &length); repeat = (length + data); - valtree = proto_tree_add_text (messagebodytree_list, tvb, *offset, -1, "valList with %d %s", length+data, plurality(length+data, "element", "elements")); - valtree_list = proto_item_add_subtree (valtree, ett_sml_valtree); + valtree_list = proto_tree_add_subtree_format(messagebodytree_list, tvb, *offset, -1, ett_sml_valtree, &valtree, + "valList with %d %s", length+data, plurality(length+data, "element", "elements")); if ((tvb_get_guint8(tvb,*offset) & 0xF0) != LONG_LIST && (tvb_get_guint8(tvb,*offset) & 0xF0) != SHORT_LIST){ expert_add_info_format(pinfo, valtree, &ei_sml_invalid_count, "invalid count of elements in valList"); @@ -1890,8 +1805,7 @@ static gboolean decode_GetListRes (tvbuff_t *tvb, packet_info *pinfo, proto_tree for (i=0; i < repeat; i++){ get_length(tvb, offset, &data, &length); - valList = proto_tree_add_text (valtree_list, tvb, *offset, -1, "valListEntry"); - valList_list = proto_item_add_subtree (valList, ett_sml_valList); + valList_list = proto_tree_add_subtree(valtree_list, tvb, *offset, -1, ett_sml_valList, &valList, "valListEntry"); *offset+=length; /*objName*/ @@ -1909,8 +1823,7 @@ static gboolean decode_GetListRes (tvbuff_t *tvb, packet_info *pinfo, proto_tree } else { /*SML TIME*/ - SML_time = proto_tree_add_text (valList_list, tvb, *offset, -1, "valTime"); - SML_time_tree = proto_item_add_subtree (SML_time, ett_sml_time); + SML_time_tree = proto_tree_add_subtree(valList_list, tvb, *offset, -1, ett_sml_time, &SML_time, "valTime"); *offset+=1; sml_time_type(tvb, SML_time_tree, offset); @@ -1957,15 +1870,13 @@ static gboolean decode_GetListRes (tvbuff_t *tvb, packet_info *pinfo, proto_tree } else{ /*SML TIME*/ - SML_time = proto_tree_add_text (messagebodytree_list, tvb, *offset, -1, "actGatewayTime"); - SML_time_tree = proto_item_add_subtree (SML_time, ett_sml_time); + SML_time_tree = proto_tree_add_subtree(messagebodytree_list, tvb, *offset, -1, ett_sml_time, &SML_time, "actGatewayTime"); *offset+=1; sml_time_type(tvb, SML_time_tree, offset); get_length(tvb, offset, &data, &length); - actGatewayTime = proto_tree_add_text (SML_time_tree, tvb, *offset, length + data, "actGatewayTime"); - actGatewayTime_tree = proto_item_add_subtree (actGatewayTime, ett_sml_actSensorTime); + actGatewayTime_tree = proto_tree_add_subtree(SML_time_tree, tvb, *offset, length + data, ett_sml_actSensorTime, NULL, "actGatewayTime"); proto_tree_add_item (actGatewayTime_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; proto_tree_add_item(actGatewayTime_tree, hf_sml_actGatewayTime, tvb, *offset, data, ENC_BIG_ENDIAN); @@ -1999,8 +1910,8 @@ static gboolean decode_GetProcParameterReq(tvbuff_t *tvb, packet_info *pinfo, pr /*Treepath List*/ get_length(tvb, offset, &data, &length); repeat = data+length; - treepath = proto_tree_add_text (messagebodytree_list, tvb, *offset, -1, "ParameterTreePath with %d %s", length+data, plurality(length+data, "element", "elements")); - treepath_list = proto_item_add_subtree(treepath, ett_sml_treepath); + treepath_list = proto_tree_add_subtree_format(messagebodytree_list, tvb, *offset, -1, ett_sml_treepath, &treepath, + "ParameterTreePath with %d %s", length+data, plurality(length+data, "element", "elements")); if ((tvb_get_guint8(tvb,*offset) & 0xF0) != LONG_LIST && (tvb_get_guint8(tvb,*offset) & 0xF0) != SHORT_LIST){ expert_add_info_format(pinfo, treepath, &ei_sml_invalid_count, "invalid count of elements in ParameterTreePath"); @@ -2053,8 +1964,8 @@ static gboolean decode_GetProcParameterRes(tvbuff_t *tvb, packet_info *pinfo, pr /*Treepath List*/ get_length(tvb, offset, &data, &length); repeat = (data+length); - treepath = proto_tree_add_text (messagebodytree_list, tvb, *offset, -1, "parameterTreePath with %d %s", length+data, plurality(length+data, "element", "elements")); - treepath_list = proto_item_add_subtree(treepath, ett_sml_treepath); + treepath_list = proto_tree_add_subtree_format(messagebodytree_list, tvb, *offset, -1, ett_sml_treepath, &treepath, + "parameterTreePath with %d %s", length+data, plurality(length+data, "element", "elements")); if ((tvb_get_guint8(tvb,*offset) & 0xF0) != LONG_LIST && (tvb_get_guint8(tvb,*offset) & 0xF0) != SHORT_LIST){ expert_add_info_format(pinfo, treepath, &ei_sml_invalid_count, "invalid count of elements in ParameterTreePath"); @@ -2074,8 +1985,8 @@ static gboolean decode_GetProcParameterRes(tvbuff_t *tvb, packet_info *pinfo, pr /*parameterTree*/ get_length(tvb, offset, &data, &length); - parameterTree = proto_tree_add_text(messagebodytree_list, tvb, *offset, -1, "parameterTree with %d %s", length+data, plurality(length+data, "element", "elements")); - parameterTree_list = proto_item_add_subtree(parameterTree, ett_sml_parameterTree); + parameterTree_list = proto_tree_add_subtree_format(messagebodytree_list, tvb, *offset, -1, ett_sml_parameterTree, ¶meterTree, + "parameterTree with %d %s", length+data, plurality(length+data, "element", "elements")); if ((tvb_get_guint8(tvb,*offset) & 0xF0) != LONG_LIST && (tvb_get_guint8(tvb,*offset) & 0xF0) != SHORT_LIST){ expert_add_info_format(pinfo, parameterTree, &ei_sml_invalid_count, "invalid count of elements in parameterTree"); @@ -2114,8 +2025,8 @@ static gboolean decode_SetProcParameterReq(tvbuff_t *tvb, packet_info *pinfo,pro /*Treepath List*/ get_length(tvb, offset, &data, &length); repeat = (data+length); - treepath = proto_tree_add_text (messagebodytree_list, tvb, *offset, -1, "parameterTreePath with %d %s", length+data, plurality(length+data, "element", "elements")); - treepath_list = proto_item_add_subtree(treepath, ett_sml_treepath); + treepath_list = proto_tree_add_subtree_format(messagebodytree_list, tvb, *offset, -1, ett_sml_treepath, &treepath, + "parameterTreePath with %d %s", length+data, plurality(length+data, "element", "elements")); if ((tvb_get_guint8(tvb,*offset) & 0xF0) != LONG_LIST && (tvb_get_guint8(tvb,*offset) & 0xF0) != SHORT_LIST){ expert_add_info_format(pinfo, treepath, &ei_sml_invalid_count, "invalid count of elements in ParameterTreePath"); @@ -2135,8 +2046,8 @@ static gboolean decode_SetProcParameterReq(tvbuff_t *tvb, packet_info *pinfo,pro /*parameterTree*/ get_length(tvb, offset, &data, &length); - parameterTree = proto_tree_add_text(messagebodytree_list, tvb, *offset, -1, "parameterTree with %d %s", length+data, plurality(length+data, "element", "elements")); - parameterTree_list = proto_item_add_subtree(parameterTree, ett_sml_parameterTree); + parameterTree_list = proto_tree_add_subtree_format(messagebodytree_list, tvb, *offset, -1, ett_sml_parameterTree, ¶meterTree, + "parameterTree with %d %s", length+data, plurality(length+data, "element", "elements")); if ((tvb_get_guint8(tvb,*offset) & 0xF0) != LONG_LIST && (tvb_get_guint8(tvb,*offset) & 0xF0) != SHORT_LIST){ expert_add_info_format(pinfo, parameterTree, &ei_sml_invalid_count, "invalid count of elements in parameterTree"); @@ -2152,7 +2063,6 @@ static gboolean decode_SetProcParameterReq(tvbuff_t *tvb, packet_info *pinfo,pro } static gboolean decode_AttentionRes(tvbuff_t *tvb, packet_info *pinfo, proto_tree *messagebodytree_list, guint *offset){ - proto_item *attentionNo = NULL; proto_item *attentionMsg = NULL; proto_item *attentionDetails = NULL; @@ -2168,8 +2078,7 @@ static gboolean decode_AttentionRes(tvbuff_t *tvb, packet_info *pinfo, proto_tre /*attention NO*/ get_length(tvb, offset, &data, &length); - attentionNo = proto_tree_add_text (messagebodytree_list, tvb ,*offset, length+data, "attentionNo"); - attentionNo_tree = proto_item_add_subtree (attentionNo, ett_sml_attentionNo); + attentionNo_tree = proto_tree_add_subtree(messagebodytree_list, tvb ,*offset, length+data, ett_sml_attentionNo, NULL, "attentionNo"); proto_tree_add_text (attentionNo_tree, tvb, *offset, length, "Length: %d %s", data ,plurality(data, "octet", "octets")); *offset+=length; @@ -2204,8 +2113,8 @@ static gboolean decode_AttentionRes(tvbuff_t *tvb, packet_info *pinfo, proto_tre } else{ get_length(tvb, offset, &data, &length); - attentionDetails = proto_tree_add_text(messagebodytree_list, tvb, *offset, -1, "attentionDetails with %d %s", length+data, plurality(length+data, "element", "elements")); - attentionDetails_list = proto_item_add_subtree(attentionDetails, ett_sml_attentionDetails); + attentionDetails_list = proto_tree_add_subtree_format(messagebodytree_list, tvb, *offset, -1, ett_sml_attentionDetails, &attentionDetails, + "attentionDetails with %d %s", length+data, plurality(length+data, "element", "elements")); if ((tvb_get_guint8(tvb,*offset) & 0xF0) != LONG_LIST && (tvb_get_guint8(tvb,*offset) & 0xF0) != SHORT_LIST){ expert_add_info_format(pinfo, attentionDetails, &ei_sml_invalid_count, "invalid count of elements in attentionDetails"); @@ -2224,15 +2133,12 @@ static gboolean decode_AttentionRes(tvbuff_t *tvb, packet_info *pinfo, proto_tre /*dissect SML-File*/ static void dissect_sml_file(tvbuff_t *tvb, packet_info *pinfo, gint *offset, proto_tree *sml_tree){ proto_item *file = NULL; - proto_item *mainlist = NULL; - proto_item *trans = NULL; - proto_item *groupNo = NULL; - proto_item *abortOnError = NULL; - proto_item *sublist = NULL; - proto_item *messagebody = NULL; - proto_item *crc16 = NULL; - proto_item *messagebodytree = NULL; - proto_item *msgend = NULL; + proto_item *mainlist; + proto_item *sublist; + proto_item *messagebody; + proto_item *crc16; + proto_item *messagebodytree; + proto_item *msgend; proto_tree *mainlist_list = NULL; proto_tree *trans_tree = NULL; @@ -2312,9 +2218,9 @@ static void dissect_sml_file(tvbuff_t *tvb, packet_info *pinfo, gint *offset, pr /*List*/ get_length(tvb, offset, &data, &length); - mainlist = proto_tree_add_text (sml_tree, tvb, *offset, -1, "List with %d %s", length+data, plurality(length+data, "element", "elements")); + mainlist_list = proto_tree_add_subtree_format(sml_tree, tvb, *offset, -1, ett_sml_mainlist, &mainlist, "List with %d %s", + length+data, plurality(length+data, "element", "elements")); - mainlist_list = proto_item_add_subtree (mainlist, ett_sml_mainlist); if (tvb_get_guint8(tvb, *offset) != LIST_6_ELEMENTS) { expert_add_info_format(pinfo, mainlist, &ei_sml_invalid_count, "invalid count of elements"); return; @@ -2323,38 +2229,33 @@ static void dissect_sml_file(tvbuff_t *tvb, packet_info *pinfo, gint *offset, pr /*Transaction ID*/ get_length(tvb, offset, &data, &length); - trans = proto_tree_add_text (mainlist_list, tvb, *offset, length + data ,"Transaction ID"); - trans_tree = proto_item_add_subtree (trans, ett_sml_trans); + trans_tree = proto_tree_add_subtree_format(mainlist_list, tvb, *offset, length + data, ett_sml_trans, NULL, "Transaction ID"); proto_tree_add_text (trans_tree, tvb, *offset, length, "Length: %d %s", data, plurality(data, "octet", "octets")); *offset+=length; proto_tree_add_item (trans_tree, hf_sml_transactionId, tvb, *offset, data, ENC_NA); *offset+=data; /*Group No*/ - groupNo = proto_tree_add_text (mainlist_list, tvb, *offset, 2, "Group No"); - groupNo_tree = proto_item_add_subtree (groupNo, ett_sml_group); + groupNo_tree = proto_tree_add_subtree(mainlist_list, tvb, *offset, 2, ett_sml_group, NULL, "Group No"); proto_tree_add_item (groupNo_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; proto_tree_add_item (groupNo_tree, hf_sml_groupNo, tvb, *offset, 1, ENC_NA); *offset+=1; /*abort on Error*/ - abortOnError = proto_tree_add_text (mainlist_list, tvb, *offset, 2, "Abort on Error"); - abortOnError_tree = proto_item_add_subtree (abortOnError ,ett_sml_abort); + abortOnError_tree = proto_tree_add_subtree(mainlist_list, tvb, *offset, 2, ett_sml_abort, NULL, "Abort on Error"); proto_tree_add_item(abortOnError_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; proto_tree_add_item(abortOnError_tree, hf_sml_abortOnError, tvb, *offset, 1, ENC_NA); *offset+=1; /*Sub List*/ - sublist = proto_tree_add_text (mainlist_list, tvb, *offset, -1, "MessageBody"); - sublist_list = proto_item_add_subtree (sublist, ett_sml_sublist); + sublist_list = proto_tree_add_subtree(mainlist_list, tvb, *offset, -1, ett_sml_sublist, &sublist, "MessageBody"); *offset+=1; /*Zero Cutting Check*/ get_length(tvb, offset, &data, &length); - messagebody = proto_tree_add_text (sublist_list, tvb, *offset, length + data, "Messagetype"); - messagebody_tree = proto_item_add_subtree (messagebody , ett_sml_mttree); + messagebody_tree = proto_tree_add_subtree(sublist_list, tvb, *offset, length + data, ett_sml_mttree, &messagebody, "Messagetype"); proto_tree_add_item (messagebody_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; @@ -2372,8 +2273,8 @@ static void dissect_sml_file(tvbuff_t *tvb, packet_info *pinfo, gint *offset, pr /*MessageBody List*/ get_length(tvb, offset, &data, &length); - messagebodytree = proto_tree_add_text (sublist_list, tvb, *offset, -1, "List with %d %s", length+data, plurality(length+data, "element", "elements")); - messagebodytree_list = proto_item_add_subtree (messagebodytree, ett_sml_mblist); + messagebodytree_list = proto_tree_add_subtree_format(sublist_list, tvb, *offset, -1, ett_sml_mblist, &messagebodytree, + "List with %d %s", length+data, plurality(length+data, "element", "elements")); *offset+=length; switch (messagebody_switch){ @@ -2462,8 +2363,7 @@ static void dissect_sml_file(tvbuff_t *tvb, packet_info *pinfo, gint *offset, pr /* CRC 16*/ get_length(tvb, offset, &data, &length); - crc16 = proto_tree_add_text (mainlist_list, tvb, *offset, data + length, "CRC"); - crc16_tree = proto_item_add_subtree (crc16, ett_sml_crc16); + crc16_tree = proto_tree_add_subtree(mainlist_list, tvb, *offset, data + length, ett_sml_crc16, &crc16, "CRC"); if(tvb_get_guint8(tvb, *offset) != UNSIGNED8 && tvb_get_guint8(tvb, *offset) != UNSIGNED16){ expert_add_info(pinfo, crc16, &ei_sml_crc_error_length); @@ -2473,7 +2373,7 @@ static void dissect_sml_file(tvbuff_t *tvb, packet_info *pinfo, gint *offset, pr proto_tree_add_item (crc16_tree, hf_sml_datatype, tvb, *offset, 1, ENC_NA); *offset+=1; - proto_tree_add_item (crc16_tree, hf_sml_crc16, tvb, *offset, data, ENC_BIG_ENDIAN); + crc16 = proto_tree_add_item (crc16_tree, hf_sml_crc16, tvb, *offset, data, ENC_BIG_ENDIAN); *offset+=data; if (sml_crc_enabled) { @@ -2486,17 +2386,17 @@ static void dissect_sml_file(tvbuff_t *tvb, packet_info *pinfo, gint *offset, pr } if (crc_check == crc_ref) { - proto_tree_add_text (crc16_tree, tvb, *offset, 0, "[CRC Okay]"); + proto_item_append_text(crc16, " [CRC Okay]"); } else { /*(little to big endian convert) to display in correct order*/ crc_check = ((crc_check >> 8) & 0xFF) + ((crc_check << 8 & 0xFF00)); - proto_tree_add_text (crc16_tree, tvb, *offset, 0, "[CRC Bad 0x%X]", crc_check); + proto_item_append_text(crc16, " [CRC Bad 0x%X]", crc_check); expert_add_info(pinfo, crc16, &ei_sml_crc_error); } } else { - proto_tree_add_text (crc16_tree, tvb, *offset, 0, "[CRC validation disabled]"); + proto_item_append_text(crc16, " [CRC validation disabled]"); } /*Message END*/ @@ -2559,7 +2459,7 @@ static void dissect_sml_file(tvbuff_t *tvb, packet_info *pinfo, gint *offset, pr *offset+=1; proto_tree_add_item (msgend_tree, hf_sml_padding, tvb, *offset, 1, ENC_NA); *offset+=1; - proto_tree_add_item (msgend_tree, hf_sml_crc16, tvb, *offset, 2, ENC_BIG_ENDIAN); + crc16 = proto_tree_add_item (msgend_tree, hf_sml_crc16, tvb, *offset, 2, ENC_BIG_ENDIAN); *offset+=2; if (sml_crc_enabled && sml_reassemble){ @@ -2568,17 +2468,17 @@ static void dissect_sml_file(tvbuff_t *tvb, packet_info *pinfo, gint *offset, pr crc_ref = tvb_get_letohs(tvb, *offset-2); if (crc_check == crc_ref){ - proto_tree_add_text (msgend_tree, tvb, *offset, 0, "[CRC Okay]"); + proto_item_append_text(crc16, " [CRC Okay]"); } else{ /*(little to big endian convert) to display in correct order*/ crc_check = ((crc_check >> 8) & 0xFF) + ((crc_check << 8) & 0xFF00); - proto_tree_add_text (msgend_tree, tvb, *offset, 0, "[CRC Bad 0x%X]", crc_check); + proto_item_append_text(crc16, " [CRC Bad 0x%X]", crc_check); expert_add_info_format(pinfo, msgend, &ei_sml_crc_error, "CRC error (messages not reassembled ?)"); } } else { - proto_tree_add_text (msgend_tree, tvb, *offset, 0, "[CRC validation disabled]"); + proto_item_append_text(crc16, " [CRC validation disabled]"); } available = tvb_reported_length_remaining(tvb, *offset); diff --git a/epan/dissectors/packet-smpp.c b/epan/dissectors/packet-smpp.c index de5642cc78..fe4cfce571 100644 --- a/epan/dissectors/packet-smpp.c +++ b/epan/dissectors/packet-smpp.c @@ -2445,8 +2445,8 @@ dissect_smpp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data const gchar *command_str; const gchar *command_status_str = NULL; /* Set up structures needed to add the protocol subtree and manage it */ - proto_item *ti = NULL; - proto_tree *smpp_tree = NULL; + proto_item *ti; + proto_tree *smpp_tree; /* * Safety: don't even try to dissect the PDU @@ -2485,10 +2485,8 @@ dissect_smpp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data /* * Create display subtree for the protocol */ - if (tree) { - ti = proto_tree_add_item (tree, proto_smpp, tvb, 0, tvb_length(tvb), ENC_NA); - smpp_tree = proto_item_add_subtree (ti, ett_smpp); - } + ti = proto_tree_add_item (tree, proto_smpp, tvb, 0, tvb_length(tvb), ENC_NA); + smpp_tree = proto_item_add_subtree (ti, ett_smpp); /* * Cycle over the encapsulated PDUs diff --git a/epan/dissectors/packet-sna.c b/epan/dissectors/packet-sna.c index fa460ca173..d453322283 100644 --- a/epan/dissectors/packet-sna.c +++ b/epan/dissectors/packet-sna.c @@ -938,7 +938,7 @@ static void dissect_optional_14(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { proto_tree *sub_tree, *bf_tree; - proto_item *sub_item, *bf_item; + proto_item *bf_item; int len, pad, type, bits, offset, num, sublen; if (!tree) @@ -957,9 +957,8 @@ dissect_optional_14(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) tvb_new_subset_remaining(tvb, offset), pinfo, tree); return; } - sub_item = proto_tree_add_text(tree, tvb, offset, len, - "Switching Information Control Vector"); - sub_tree = proto_item_add_subtree(sub_item, ett_sna_nlp_opti_14_si); + sub_tree = proto_tree_add_subtree(tree, tvb, offset, len, + ett_sna_nlp_opti_14_si, NULL, "Switching Information Control Vector"); proto_tree_add_uint(sub_tree, hf_sna_nlp_opti_14_si_len, tvb, offset, 1, len); @@ -1009,9 +1008,8 @@ dissect_optional_14(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) tvb_new_subset_remaining(tvb, offset), pinfo, tree); return; } - sub_item = proto_tree_add_text(tree, tvb, offset, len, - "Return Route TG Descriptor Control Vector"); - sub_tree = proto_item_add_subtree(sub_item, ett_sna_nlp_opti_14_rr); + sub_tree = proto_tree_add_subtree(tree, tvb, offset, len, + ett_sna_nlp_opti_14_rr, NULL, "Return Route TG Descriptor Control Vector"); proto_tree_add_uint(sub_tree, hf_sna_nlp_opti_14_rr_len, tvb, offset, 1, len); @@ -1111,7 +1109,6 @@ static void dissect_optional(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { proto_tree *sub_tree; - proto_item *sub_item; int offset, type, len; gint ett; @@ -1140,11 +1137,10 @@ dissect_optional(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) if(type == 0x14) ett = ett_sna_nlp_opti_14; if(type == 0x22) ett = ett_sna_nlp_opti_22; if (tree) { - sub_item = proto_tree_add_text(tree, tvb, - offset, len << 2, "%s", + sub_tree = proto_tree_add_subtree(tree, tvb, + offset, len << 2, ett, NULL, val_to_str(type, sna_nlp_opti_vals, "Unknown Segment Type")); - sub_tree = proto_item_add_subtree(sub_item, ett); proto_tree_add_uint(sub_tree, hf_sna_nlp_opti_len, tvb, offset, 1, len); proto_tree_add_uint(sub_tree, hf_sna_nlp_opti_type, @@ -2402,7 +2398,6 @@ dissect_control(tvbuff_t *parent_tvb, int offset, int control_len, tvbuff_t *tvb; gint length, reported_length; proto_tree *sub_tree; - proto_item *sub_item; int len, key; gint ett; @@ -2433,14 +2428,13 @@ dissect_control(tvbuff_t *parent_tvb, int offset, int control_len, if (key == 0x0e) ett = ett_sna_control_0e; if (((key == 0) || (key == 3) || (key == 5)) && hpr) - sub_item = proto_tree_add_text(tree, tvb, 0, -1, "%s", + sub_tree = proto_tree_add_subtree(tree, tvb, 0, -1, ett, NULL, val_to_str_const(key, sna_control_hpr_vals, "Unknown Control Vector")); else - sub_item = proto_tree_add_text(tree, tvb, 0, -1, "%s", + sub_tree = proto_tree_add_subtree(tree, tvb, 0, -1, ett, NULL, val_to_str_const(key, sna_control_vals, "Unknown Control Vector")); - sub_tree = proto_item_add_subtree(sub_item, ett); if (parse == LT) { proto_tree_add_uint(sub_tree, hf_sna_control_len, tvb, 0, 1, len); diff --git a/epan/dissectors/packet-sndcp-xid.c b/epan/dissectors/packet-sndcp-xid.c index 6053fe091c..42dde20917 100644 --- a/epan/dissectors/packet-sndcp-xid.c +++ b/epan/dissectors/packet-sndcp-xid.c @@ -475,7 +475,7 @@ dissect_sndcp_xid(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) { /* Set up structures needed to add the protocol subtree and manage it */ - proto_item *ti, *version_item, *dcomp_item, *pcomp_item; + proto_item *ti, *dcomp_item; proto_tree *sndcp_tree, *version_tree, *dcomp_tree, *pcomp_tree; guint16 offset = 0, l3_param_len; guint8 parameter_type, parameter_len; @@ -494,10 +494,9 @@ dissect_sndcp_xid(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) if (parameter_type == SNDCP_VERSION_PAR_TYPE) { guint8 value = tvb_get_guint8(tvb, offset+2); - version_item = proto_tree_add_text(sndcp_tree, tvb, offset, parameter_len+2, - "Version (SNDCP version number) - Value %d", value); + version_tree = proto_tree_add_subtree_format(sndcp_tree, tvb, offset, parameter_len+2, + ett_sndcp_xid_version_field, NULL, "Version (SNDCP version number) - Value %d", value); - version_tree = proto_item_add_subtree(version_item, ett_sndcp_xid_version_field); proto_tree_add_uint(version_tree, hf_sndcp_xid_type, tvb, offset, 1, parameter_type); proto_tree_add_uint(version_tree, hf_sndcp_xid_len, tvb, offset+1, @@ -511,9 +510,8 @@ dissect_sndcp_xid(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) { tvbuff_t * dcomp_tvb; - dcomp_item = proto_tree_add_text(sndcp_tree, tvb, offset, parameter_len+2, - "Data Compression"); - dcomp_tree = proto_item_add_subtree(dcomp_item, ett_sndcp_comp_field); + dcomp_tree = proto_tree_add_subtree(sndcp_tree, tvb, offset, parameter_len+2, + ett_sndcp_comp_field, &dcomp_item, "Data Compression"); proto_tree_add_uint(dcomp_tree, hf_sndcp_xid_type, tvb, offset, 1, parameter_type); proto_tree_add_uint(dcomp_tree, hf_sndcp_xid_len, tvb, offset+1, @@ -530,9 +528,8 @@ dissect_sndcp_xid(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) { tvbuff_t * pcomp_tvb; - pcomp_item = proto_tree_add_text(sndcp_tree, tvb, offset, parameter_len+2, - "Protocol Control Information Compression"); - pcomp_tree = proto_item_add_subtree(pcomp_item, ett_sndcp_comp_field); + pcomp_tree = proto_tree_add_subtree(sndcp_tree, tvb, offset, parameter_len+2, + ett_sndcp_comp_field, NULL, "Protocol Control Information Compression"); proto_tree_add_uint(pcomp_tree, hf_sndcp_xid_type, tvb, offset, 1, parameter_type); proto_tree_add_uint(pcomp_tree, hf_sndcp_xid_len, tvb, offset+1, @@ -559,7 +556,6 @@ static void parse_compression_parameters(tvbuff_t *tvb, proto_tree *tree, gboole gboolean p_bit_set; algo_parameters_t * algo_pars; guint8 function_index; - proto_item *comp_entity_field = NULL; proto_tree *comp_entity_tree = NULL; guint16 tvb_len, offset=0 , new_offset, entity_offset; value_string const * comp_algo_str; @@ -606,10 +602,9 @@ static void parse_compression_parameters(tvbuff_t *tvb, proto_tree *tree, gboole /* Read the length */ len = tvb_get_guint8(tvb, offset+2); - comp_entity_field = proto_tree_add_text(tree, tvb, offset, len + 3, - "Entity %d, Algorithm %s", + comp_entity_tree = proto_tree_add_subtree_format(tree, tvb, offset, len + 3, + ett_sndcp_comp_field, NULL, "Entity %d, Algorithm %s", entity & 0x1F, val_to_str(algo_id & 0x1F, comp_algo_str,"Undefined Algorithm Identifier:%X")); - comp_entity_tree = proto_item_add_subtree(comp_entity_field, ett_sndcp_comp_field); proto_tree_add_uint(comp_entity_tree, hf_sndcp_xid_comp_pbit, tvb, offset, 1, p_bit_set << 7); proto_tree_add_uint(comp_entity_tree, hf_sndcp_xid_comp_spare_byte1, tvb, offset, 1, entity); @@ -671,12 +666,10 @@ static void parse_compression_parameters(tvbuff_t *tvb, proto_tree *tree, gboole algo_id = pcomp_entity_algo_id[entity]; comp_algo_str = sndcp_xid_pcomp_algo_str; } - comp_entity_field = proto_tree_add_text(tree, tvb, offset, len + 2, - "Entity %d decoded as Algorithm %s", + comp_entity_tree = proto_tree_add_subtree_format(tree, tvb, offset, len + 2, + ett_sndcp_comp_field, NULL, "Entity %d decoded as Algorithm %s", entity & 0x1F, val_to_str(algo_id & 0x1F, comp_algo_str,"Undefined Algorithm Identifier:%X")); - comp_entity_tree = proto_item_add_subtree(comp_entity_field, ett_sndcp_comp_field); - proto_tree_add_uint(comp_entity_tree, hf_sndcp_xid_comp_pbit, tvb, offset, 1, p_bit_set << 7); proto_tree_add_uint(comp_entity_tree, hf_sndcp_xid_comp_spare_byte1, tvb, offset, 1, entity); proto_tree_add_uint(comp_entity_tree, hf_sndcp_xid_comp_entity, tvb, offset, 1, entity); diff --git a/epan/dissectors/packet-sndcp.c b/epan/dissectors/packet-sndcp.c index caf8a2a375..ac8c9b0b85 100644 --- a/epan/dissectors/packet-sndcp.c +++ b/epan/dissectors/packet-sndcp.c @@ -202,8 +202,8 @@ dissect_sndcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) /* Set up structures needed to add the protocol subtree and manage it */ - proto_item *ti, *address_field_item, *compression_field_item, *npdu_field_item; - proto_tree *sndcp_tree = NULL, *address_field_tree, *compression_field_tree, *npdu_field_tree; + proto_item *ti, *address_field_item; + proto_tree *sndcp_tree, *address_field_tree, *compression_field_tree, *npdu_field_tree; /* Make entries in Protocol column and clear Info column on summary display */ @@ -212,10 +212,8 @@ dissect_sndcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) /* create display subtree for the protocol */ - if (tree) { - ti = proto_tree_add_item(tree, proto_sndcp, tvb, 0, -1, ENC_NA); - sndcp_tree = proto_item_add_subtree(ti, ett_sndcp); - } + ti = proto_tree_add_item(tree, proto_sndcp, tvb, 0, -1, ENC_NA); + sndcp_tree = proto_item_add_subtree(ti, ett_sndcp); /* get address field from next byte */ @@ -252,21 +250,20 @@ dissect_sndcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) if (tree) { if (!pcomp) { if (!dcomp) { - compression_field_item = proto_tree_add_text(sndcp_tree, tvb, offset,1, "No compression"); + compression_field_tree = proto_tree_add_subtree(sndcp_tree, tvb, offset, 1, ett_sndcp_compression_field, NULL, "No compression"); } else { - compression_field_item = proto_tree_add_text(sndcp_tree, tvb, offset,1, "Data compression"); + compression_field_tree = proto_tree_add_subtree(sndcp_tree, tvb, offset, 1, ett_sndcp_compression_field, NULL, "Data compression"); } } else { if (!dcomp) { - compression_field_item = proto_tree_add_text(sndcp_tree, tvb, offset,1, "Protocol compression"); + compression_field_tree = proto_tree_add_subtree(sndcp_tree, tvb, offset, 1, ett_sndcp_compression_field, NULL, "Protocol compression"); } else { - compression_field_item = proto_tree_add_text(sndcp_tree, tvb, offset,1, "Data and Protocol compression"); + compression_field_tree = proto_tree_add_subtree(sndcp_tree, tvb, offset, 1, ett_sndcp_compression_field, NULL, "Data and Protocol compression"); } } - compression_field_tree = proto_item_add_subtree(compression_field_item, ett_sndcp_compression_field); proto_tree_add_uint(compression_field_tree, hf_sndcp_dcomp, tvb, offset, 1, comp_field ); proto_tree_add_uint(compression_field_tree, hf_sndcp_pcomp, tvb, offset, 1, comp_field ); } @@ -278,8 +275,7 @@ dissect_sndcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) npdu = npdu_field1 = tvb_get_guint8(tvb,offset); col_add_fstr(pinfo->cinfo, COL_INFO, "SN-DATA N-PDU %d", npdu_field1); if (tree) { - npdu_field_item = proto_tree_add_text(sndcp_tree, tvb, offset,1, "Acknowledged mode, N-PDU %d", npdu_field1 ); - npdu_field_tree = proto_item_add_subtree(npdu_field_item, ett_sndcp_npdu_field); + npdu_field_tree = proto_tree_add_subtree_format(sndcp_tree, tvb, offset, 1, ett_sndcp_npdu_field, NULL, "Acknowledged mode, N-PDU %d", npdu_field1 ); proto_tree_add_uint(npdu_field_tree, hf_sndcp_npdu1, tvb, offset, 1, npdu_field1 ); } offset++; @@ -294,8 +290,8 @@ dissect_sndcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) npdu = (npdu_field2 & 0x0FFF); col_add_fstr(pinfo->cinfo, COL_INFO, "SN-UNITDATA N-PDU %d (segment %d)", npdu, segment); if (tree) { - npdu_field_item = proto_tree_add_text(sndcp_tree, tvb, offset,2, "Unacknowledged mode, N-PDU %d (segment %d)", npdu, segment ); - npdu_field_tree = proto_item_add_subtree(npdu_field_item, ett_sndcp_npdu_field); + npdu_field_tree = proto_tree_add_subtree_format(sndcp_tree, tvb, offset, 2, ett_sndcp_npdu_field, NULL, + "Unacknowledged mode, N-PDU %d (segment %d)", npdu, segment ); proto_tree_add_uint(npdu_field_tree, hf_sndcp_segment, tvb, offset, 2, npdu_field2 ); proto_tree_add_uint(npdu_field_tree, hf_sndcp_npdu2, tvb, offset, 2, npdu_field2 ); } diff --git a/epan/dissectors/packet-socks.c b/epan/dissectors/packet-socks.c index e692558604..0226f6e7d1 100644 --- a/epan/dissectors/packet-socks.c +++ b/epan/dissectors/packet-socks.c @@ -519,8 +519,7 @@ client_display_socks_v5(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_item *ti; guint8 num_auth_methods, auth; - ti = proto_tree_add_text( tree, tvb, offset, -1, "Client Authentication Methods"); - AuthTree = proto_item_add_subtree(ti, ett_socks_auth); + AuthTree = proto_tree_add_subtree( tree, tvb, offset, -1, ett_socks_auth, &ti, "Client Authentication Methods"); num_auth_methods = tvb_get_guint8(tvb, offset); proto_item_set_len(ti, num_auth_methods+1); diff --git a/epan/dissectors/packet-spdy.c b/epan/dissectors/packet-spdy.c index 07c94c7243..eea6f22c11 100644 --- a/epan/dissectors/packet-spdy.c +++ b/epan/dissectors/packet-spdy.c @@ -829,12 +829,11 @@ static int dissect_spdy_data_payload(tvbuff_t *tvb, /* * Add the encoded entity to the protocol tree */ - e_ti = proto_tree_add_text(spdy_tree, data_tvb, - 0, tvb_reported_length(data_tvb), + e_tree = proto_tree_add_subtree_format(spdy_tree, data_tvb, + 0, tvb_reported_length(data_tvb), ett_spdy_encoded_entity, &e_ti, "Content-encoded entity body (%s): %u bytes", si->content_encoding, tvb_reported_length(data_tvb)); - e_tree = proto_item_add_subtree(e_ti, ett_spdy_encoded_entity); if (si->num_data_frames > 1) { wmem_list_t *dflist = si->data_frames; wmem_list_frame_t *frame_item; diff --git a/epan/dissectors/packet-spice.c b/epan/dissectors/packet-spice.c index c2fa858882..3ae4f54abb 100644 --- a/epan/dissectors/packet-spice.c +++ b/epan/dissectors/packet-spice.c @@ -690,11 +690,10 @@ static dissector_handle_t jpeg_handle; static guint32 dissect_SpiceHead(tvbuff_t *tvb, proto_tree *tree, guint32 offset, const guint16 num) { - proto_item *ti; proto_tree *SpiceHead_tree; - ti = proto_tree_add_text(tree, tvb, offset, sizeof_SpiceHead, "Display Head #%u", num); - SpiceHead_tree = proto_item_add_subtree(ti, ett_SpiceHead); + SpiceHead_tree = proto_tree_add_subtree_format(tree, tvb, offset, sizeof_SpiceHead, + ett_SpiceHead, NULL, "Display Head #%u", num); proto_tree_add_item(SpiceHead_tree, hf_display_head_id, tvb, offset, 4, ENC_LITTLE_ENDIAN); offset += 4; proto_tree_add_item(SpiceHead_tree, hf_display_head_surface_id, tvb, offset, 4, ENC_LITTLE_ENDIAN); @@ -717,11 +716,10 @@ dissect_SpiceHead(tvbuff_t *tvb, proto_tree *tree, guint32 offset, const guint16 static guint32 dissect_AgentMonitorConfig(tvbuff_t *tvb, proto_tree *tree, guint32 offset, const guint16 num) { - proto_item *ti; proto_tree *subtree; - ti = proto_tree_add_text(tree, tvb, offset, sizeof_AgentMonitorConfig, "Monitor Config #%u", num); - subtree = proto_item_add_subtree(ti, ett_SpiceHead); + subtree = proto_tree_add_subtree_format(tree, tvb, offset, sizeof_AgentMonitorConfig, + ett_SpiceHead, NULL, "Monitor Config #%u", num); proto_tree_add_item(subtree, hf_agent_monitor_height, tvb, offset, 4, ENC_LITTLE_ENDIAN); offset += 4; proto_tree_add_item(subtree, hf_agent_monitor_width, tvb, offset, 4, ENC_LITTLE_ENDIAN); @@ -745,8 +743,7 @@ dissect_Pixmap(tvbuff_t *tvb, proto_tree *tree, guint32 offset) guint32 PixmapSize; guint32 strides, height, pallete_ptr; - ti = proto_tree_add_text(tree, tvb, offset, 0, "Pixmap"); /* size is fixed later */ - Pixmap_tree = proto_item_add_subtree(ti, ett_Pixmap); + Pixmap_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_Pixmap, &ti, "Pixmap"); /* size is fixed later */ proto_tree_add_item(Pixmap_tree, hf_pixmap_format, tvb, offset, 1, ENC_LITTLE_ENDIAN); offset += 1; proto_tree_add_item(Pixmap_tree, hf_pixmap_flags, tvb, offset, 1, ENC_LITTLE_ENDIAN); @@ -783,11 +780,9 @@ dissect_CursorHeader(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint16 *w *height = tvb_get_letohs(tvb, offset + 8 + 1 + 2); if (tree) { - proto_item *ti; proto_tree *CursorHeader_tree; - ti = proto_tree_add_text(tree, tvb, offset, sizeof_CursorHeader, "Cursor Header"); - CursorHeader_tree = proto_item_add_subtree(ti, ett_cursor_header); + CursorHeader_tree = proto_tree_add_subtree(tree, tvb, offset, sizeof_CursorHeader, ett_cursor_header, NULL, "Cursor Header"); proto_tree_add_item(CursorHeader_tree, hf_cursor_unique, tvb, offset, 8, ENC_LITTLE_ENDIAN); offset += 8; proto_tree_add_item(CursorHeader_tree, hf_cursor_type, tvb, offset, 1, ENC_LITTLE_ENDIAN); @@ -808,7 +803,7 @@ dissect_CursorHeader(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint16 *w static guint32 dissect_RedCursor(tvbuff_t *tvb, proto_tree *tree, guint32 offset) { - proto_item *ti; + proto_item *ti; proto_tree *RedCursor_tree; guint8 type; guint16 height, width; @@ -816,8 +811,7 @@ dissect_RedCursor(tvbuff_t *tvb, proto_tree *tree, guint32 offset) const guint16 flags = tvb_get_letohs(tvb, offset); guint32 data_size = 0; - ti = proto_tree_add_text(tree, tvb, offset, 2, "RedCursor"); /* FIXME - fix size if flag is not NONE */ - RedCursor_tree = proto_item_add_subtree(ti, ett_RedCursor); + RedCursor_tree = proto_tree_add_subtree(tree, tvb, offset, 2, ett_RedCursor, &ti, "RedCursor"); /* FIXME - fix size if flag is not NONE */ proto_tree_add_item(RedCursor_tree, hf_cursor_flags, tvb, offset, 2, ENC_LITTLE_ENDIAN); if (flags == SPICE_CURSOR_FLAGS_NONE) { @@ -871,11 +865,9 @@ dissect_ImageDescriptor(tvbuff_t *tvb, proto_tree *tree, guint32 offset) const guint8 type = tvb_get_guint8(tvb, offset + 8); if (tree) { - proto_item *ti; proto_tree *ImageDescriptor_tree; - ti = proto_tree_add_text(tree, tvb, offset, sizeof_ImageDescriptor, "Image Descriptor"); - ImageDescriptor_tree = proto_item_add_subtree(ti, ett_imagedesc); + ImageDescriptor_tree = proto_tree_add_subtree(tree, tvb, offset, sizeof_ImageDescriptor, ett_imagedesc, NULL, "Image Descriptor"); proto_tree_add_item(ImageDescriptor_tree, hf_image_desc_id, tvb, offset, 8, ENC_LITTLE_ENDIAN); offset += 8; @@ -897,11 +889,9 @@ dissect_ImageQuic(tvbuff_t *tvb, proto_tree *tree, guint32 offset) const guint32 QuicSize = tvb_get_letohl(tvb, offset); if (tree) { - proto_item *ti; proto_tree *ImageQuic_tree; - ti = proto_tree_add_text(tree, tvb, offset, QuicSize + 4, "QUIC Image"); - ImageQuic_tree = proto_item_add_subtree(ti, ett_imageQuic); + ImageQuic_tree = proto_tree_add_subtree(tree, tvb, offset, QuicSize + 4, ett_imageQuic, NULL, "QUIC Image"); proto_tree_add_text(ImageQuic_tree, tvb, offset, 4, "QUIC image size: %u bytes", QuicSize); offset += 4; @@ -997,12 +987,10 @@ dissect_ImageLZ_common(tvbuff_t *tvb, proto_tree *tree, guint32 offset, const gb static guint32 dissect_ImageLZ_JPEG(tvbuff_t *tvb, proto_tree *tree, guint32 offset) { - proto_item *ti; proto_tree *LZ_JPEG_tree; const guint32 LZ_JPEGSize = tvb_get_letohl(tvb, offset); - ti = proto_tree_add_text(tree, tvb, offset, LZ_JPEGSize + 4, "LZ_JPEG Image"); - LZ_JPEG_tree = proto_item_add_subtree(ti, ett_LZ_JPEG); + LZ_JPEG_tree = proto_tree_add_subtree(tree, tvb, offset, LZ_JPEGSize + 4, ett_LZ_JPEG, NULL, "LZ_JPEG Image"); proto_tree_add_text(LZ_JPEG_tree, tvb, offset, 4, "LZ JPEG image size: %u bytes", LZ_JPEGSize); offset += 4; offset += dissect_ImageLZ_common_header(tvb, LZ_JPEG_tree, offset); @@ -1014,20 +1002,17 @@ dissect_ImageLZ_JPEG(tvbuff_t *tvb, proto_tree *tree, guint32 offset) static guint32 dissect_ImageGLZ_RGB(tvbuff_t *tvb, proto_tree *tree, guint32 offset, const guint32 size) { - proto_item *ti = NULL; proto_tree *GLZ_RGB_tree; guint32 GLZ_RGBSize; if (size == 0) { /* if no size was passed to us, need to fetch it. Otherwise, we already have it from the callee */ GLZ_RGBSize = tvb_get_letohl(tvb, offset); - ti = proto_tree_add_text(tree, tvb, offset, GLZ_RGBSize + 4, "GLZ_RGB Image"); - GLZ_RGB_tree = proto_item_add_subtree(ti, ett_GLZ_RGB); + GLZ_RGB_tree = proto_tree_add_subtree(tree, tvb, offset, GLZ_RGBSize + 4, ett_GLZ_RGB, NULL, "GLZ_RGB Image"); proto_tree_add_text(GLZ_RGB_tree, tvb, offset, 4, "GLZ RGB image size: %u bytes", GLZ_RGBSize); offset += 4; } else { GLZ_RGBSize = size; - ti = proto_tree_add_text(tree, tvb, offset, GLZ_RGBSize, "GLZ_RGB Image"); - GLZ_RGB_tree = proto_item_add_subtree(ti, ett_GLZ_RGB); + GLZ_RGB_tree = proto_tree_add_subtree(tree, tvb, offset, GLZ_RGBSize, ett_GLZ_RGB, NULL, "GLZ_RGB Image"); } dissect_ImageLZ_common(tvb, GLZ_RGB_tree, offset, FALSE, GLZ_RGBSize); @@ -1038,12 +1023,10 @@ dissect_ImageGLZ_RGB(tvbuff_t *tvb, proto_tree *tree, guint32 offset, const guin static guint32 dissect_ImageLZ_RGB(tvbuff_t *tvb, proto_tree *tree, guint32 offset) { - proto_item *ti; proto_tree *LZ_RGB_tree; const guint32 LZ_RGBSize = tvb_get_letohl(tvb, offset); - ti = proto_tree_add_text(tree, tvb, offset, LZ_RGBSize + 4, "LZ_RGB Image"); - LZ_RGB_tree = proto_item_add_subtree(ti, ett_LZ_RGB); + LZ_RGB_tree = proto_tree_add_subtree(tree, tvb, offset, LZ_RGBSize + 4, ett_LZ_RGB, NULL, "LZ_RGB Image"); proto_tree_add_text(LZ_RGB_tree, tvb, offset, 4, "LZ RGB image size: %u bytes", LZ_RGBSize); offset += 4; @@ -1055,15 +1038,13 @@ dissect_ImageLZ_RGB(tvbuff_t *tvb, proto_tree *tree, guint32 offset) static guint32 dissect_ImageLZ_PLT(tvbuff_t *tvb, proto_tree *tree, guint32 offset) { - proto_item *ti; proto_tree *LZ_PLT_tree; guint32 LZ_PLTSize, pal_size; const guint32 current_offset = offset; LZ_PLTSize = tvb_get_letohl(tvb, offset + 1); /* for some reason, it reports two extra bytes */ - ti = proto_tree_add_text(tree, tvb, offset, (LZ_PLTSize - 2)+ 1 + 4 + 4 + 8 + 4 + 4 + 4 + 4 + 4, "LZ_PLT Image"); - LZ_PLT_tree = proto_item_add_subtree(ti, ett_LZ_PLT); + LZ_PLT_tree = proto_tree_add_subtree(tree, tvb, offset, (LZ_PLTSize - 2)+ 1 + 4 + 4 + 8 + 4 + 4 + 4 + 4 + 4, ett_LZ_PLT, NULL, "LZ_PLT Image"); proto_tree_add_text(LZ_PLT_tree, tvb, offset, 1, "LZ_PLT Flag"); /* TODO: dissect */ offset += 1; @@ -1101,7 +1082,6 @@ dissect_ImageLZ_PLT(tvbuff_t *tvb, proto_tree *tree, guint32 offset) static guint32 dissect_ImageJPEG_Alpha(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset) { - proto_item *ti; proto_tree *JPEG_tree; tvbuff_t *jpeg_tvb; guint32 JPEG_Size, Data_Size; @@ -1115,8 +1095,8 @@ dissect_ImageJPEG_Alpha(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui Data_Size = tvb_get_letohl(tvb, offset); offset += 4; - ti = proto_tree_add_text(tree, tvb, offset - 9, Data_Size + 9, "RGB JPEG Image, Alpha channel (%u bytes)", Data_Size); - JPEG_tree = proto_item_add_subtree(ti, ett_JPEG); + JPEG_tree = proto_tree_add_subtree_format(tree, tvb, offset - 9, Data_Size + 9, + ett_JPEG, NULL, "RGB JPEG Image, Alpha channel (%u bytes)", Data_Size); jpeg_tvb = tvb_new_subset_length(tvb, offset, JPEG_Size); call_dissector(jpeg_handle, jpeg_tvb, pinfo, JPEG_tree); @@ -1130,13 +1110,11 @@ dissect_ImageJPEG_Alpha(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui static guint32 dissect_ImageJPEG(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, const guint32 offset) { - proto_item *ti = NULL; proto_tree *JPEG_tree; tvbuff_t *jpeg_tvb; const guint32 JPEG_Size = tvb_get_letohl(tvb, offset); - ti = proto_tree_add_text(tree, tvb, offset, JPEG_Size + 4, "JPEG Image (%u bytes)", JPEG_Size); - JPEG_tree = proto_item_add_subtree(ti, ett_JPEG); + JPEG_tree = proto_tree_add_subtree_format(tree, tvb, offset, JPEG_Size + 4, ett_JPEG, NULL, "JPEG Image (%u bytes)", JPEG_Size); jpeg_tvb = tvb_new_subset_length(tvb, offset + 4, JPEG_Size); call_dissector(jpeg_handle, jpeg_tvb, pinfo, JPEG_tree); @@ -1153,11 +1131,10 @@ dissect_ImageZLIB_GLZ_stream(tvbuff_t *tvb, proto_tree *ZLIB_GLZ_tree, packet_in proto_tree *Uncomp_tree; tvbuff_t *uncompressed_tvb; - ti = proto_tree_add_text(ZLIB_GLZ_tree, tvb, offset, ZLIB_GLZSize, "ZLIB stream (%u bytes)", ZLIB_GLZSize); + Uncomp_tree = proto_tree_add_subtree_format(ZLIB_GLZ_tree, tvb, offset, ZLIB_GLZSize, ett_Uncomp_tree, &ti, "ZLIB stream (%u bytes)", ZLIB_GLZSize); uncompressed_tvb = tvb_child_uncompress(tvb, tvb, offset, ZLIB_GLZSize); if (uncompressed_tvb != NULL) { add_new_data_source(pinfo, uncompressed_tvb, "Uncompressed GLZ stream"); - Uncomp_tree = proto_item_add_subtree(ti, ett_Uncomp_tree); dissect_ImageGLZ_RGB(uncompressed_tvb, Uncomp_tree, 0, ZLIB_uncompSize); } else { expert_add_info(pinfo, ti, &ei_spice_decompress_error); @@ -1175,15 +1152,14 @@ dissect_ImageZLIB_GLZ_stream(tvbuff_t *tvb, proto_tree *ZLIB_GLZ_tree, packet_in static guint32 dissect_ImageZLIB_GLZ(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset) { - proto_item *ti = NULL; + proto_item *ti; proto_tree *ZLIB_GLZ_tree; guint32 ZLIB_GLZSize, ZLIB_uncompSize; ZLIB_uncompSize = tvb_get_letohl(tvb, offset); ZLIB_GLZSize = tvb_get_letohl(tvb, offset + 4); /* compressed size */ if (tree) { - ti = proto_tree_add_text(tree, tvb, offset, ZLIB_GLZSize + 8, "ZLIB over GLZ Image"); - ZLIB_GLZ_tree = proto_item_add_subtree(ti, ett_ZLIB_GLZ); + ZLIB_GLZ_tree = proto_tree_add_subtree(tree, tvb, offset, ZLIB_GLZSize + 8, ett_ZLIB_GLZ, NULL, "ZLIB over GLZ Image"); ti = proto_tree_add_item(ZLIB_GLZ_tree, hf_zlib_uncompress_size, tvb, offset, 4, ENC_LITTLE_ENDIAN); proto_item_append_text(ti, " bytes"); @@ -1251,7 +1227,6 @@ dissect_Image(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offse static SpiceRect dissect_SpiceRect(tvbuff_t *tvb, proto_tree *tree, const guint32 offset, const gint32 id) { - proto_item *ti = NULL; proto_tree *rect_tree; SpiceRect rect; @@ -1262,13 +1237,12 @@ dissect_SpiceRect(tvbuff_t *tvb, proto_tree *tree, const guint32 offset, const g if (tree) { if (id != -1) { - ti = proto_tree_add_text(tree, tvb, offset, sizeof_SpiceRect, + rect_tree = proto_tree_add_subtree_format(tree, tvb, offset, sizeof_SpiceRect, ett_rect, NULL, "RECT %u: (%u-%u, %u-%u)", id, rect.left, rect.top, rect.right, rect.bottom); } else { /* single rectangle */ - ti = proto_tree_add_text(tree, tvb, offset, sizeof_SpiceRect, + rect_tree = proto_tree_add_subtree_format(tree, tvb, offset, sizeof_SpiceRect, ett_rect, NULL, "RECT: (%u-%u, %u-%u)", rect.left, rect.top, rect.right, rect.bottom); } - rect_tree = proto_item_add_subtree(ti, ett_rect); proto_tree_add_item(rect_tree, hf_rect_left, tvb, offset, 4, ENC_LITTLE_ENDIAN); proto_tree_add_item(rect_tree, hf_rect_top, tvb, offset + 4, 4, ENC_LITTLE_ENDIAN); @@ -1288,15 +1262,13 @@ rect_is_empty(const SpiceRect r) static guint32 dissect_RectList(tvbuff_t *tvb, proto_tree *tree, guint32 offset) { - proto_item *ti = NULL; proto_tree *rectlist_tree; guint32 i; const guint32 rectlist_size = tvb_get_letohl(tvb, offset); if (tree) { - ti = proto_tree_add_text(tree, tvb, offset, 4 + (rectlist_size * sizeof_SpiceRect), - "RectList (%d rects)", rectlist_size); - rectlist_tree = proto_item_add_subtree(ti, ett_rectlist); + rectlist_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4 + (rectlist_size * sizeof_SpiceRect), + ett_rectlist, NULL, "RectList (%d rects)", rectlist_size); proto_tree_add_item(rectlist_tree, hf_rectlist_size, tvb, offset, 4, ENC_LITTLE_ENDIAN); offset += 4; @@ -1313,13 +1285,11 @@ dissect_RectList(tvbuff_t *tvb, proto_tree *tree, guint32 offset) static guint8 dissect_Clip(tvbuff_t *tvb, proto_tree *tree, const guint32 offset) { - proto_item *ti = NULL; proto_tree *Clip_tree; const guint8 type = tvb_get_guint8(tvb, offset); if (tree) { - ti = proto_tree_add_text(tree, tvb, offset, 1, "SpiceClip"); - Clip_tree = proto_item_add_subtree(ti, ett_Clip); + Clip_tree = proto_tree_add_subtree(tree, tvb, offset, 1, ett_Clip, NULL, "SpiceClip"); proto_tree_add_item(Clip_tree, hf_Clip_type, tvb, offset, sizeof_Clip, ENC_LITTLE_ENDIAN); } @@ -1329,7 +1299,6 @@ dissect_Clip(tvbuff_t *tvb, proto_tree *tree, const guint32 offset) static point32_t dissect_POINT32(tvbuff_t *tvb, proto_tree *tree, const guint32 offset) { - proto_item *ti = NULL; proto_tree *point_tree; point32_t point; @@ -1337,8 +1306,7 @@ dissect_POINT32(tvbuff_t *tvb, proto_tree *tree, const guint32 offset) point.y = tvb_get_letohl(tvb, offset + 4); if (tree) { - ti = proto_tree_add_text(tree, tvb, offset, sizeof(point32_t), "POINT (%u, %u)", point.x, point.y); - point_tree = proto_item_add_subtree(ti, ett_point); + point_tree = proto_tree_add_subtree_format(tree, tvb, offset, sizeof(point32_t), ett_point, NULL, "POINT (%u, %u)", point.x, point.y); proto_tree_add_item(point_tree, hf_point32_x, tvb, offset, 4, ENC_LITTLE_ENDIAN); proto_tree_add_item(point_tree, hf_point32_y, tvb, offset + 4, 4, ENC_LITTLE_ENDIAN); @@ -1350,7 +1318,6 @@ dissect_POINT32(tvbuff_t *tvb, proto_tree *tree, const guint32 offset) static point16_t dissect_POINT16(tvbuff_t *tvb, proto_tree *tree, const guint32 offset) { - proto_item *ti = NULL; proto_tree *point16_tree; point16_t point16; @@ -1358,8 +1325,7 @@ dissect_POINT16(tvbuff_t *tvb, proto_tree *tree, const guint32 offset) point16.y = tvb_get_letohs(tvb, offset + 2); if (tree) { - ti = proto_tree_add_text(tree, tvb, offset, sizeof(point16_t), "POINT16 (%u, %u)", point16.x, point16.y); - point16_tree = proto_item_add_subtree(ti, ett_point16); + point16_tree = proto_tree_add_subtree_format(tree, tvb, offset, sizeof(point16_t), ett_point16, NULL, "POINT16 (%u, %u)", point16.x, point16.y); proto_tree_add_item(point16_tree, hf_point16_x, tvb, offset, 2, ENC_LITTLE_ENDIAN); proto_tree_add_item(point16_tree, hf_point16_y, tvb, offset + 2, 2, ENC_LITTLE_ENDIAN); @@ -1371,12 +1337,11 @@ dissect_POINT16(tvbuff_t *tvb, proto_tree *tree, const guint32 offset) static guint32 dissect_Mask(tvbuff_t *tvb, proto_tree *tree, guint32 offset) { - proto_item *ti = NULL; + proto_item *ti; proto_tree *Mask_tree; guint32 bitmap; - ti = proto_tree_add_text(tree, tvb, offset, sizeof_Mask, "Mask"); - Mask_tree = proto_item_add_subtree(ti, ett_Mask); + Mask_tree = proto_tree_add_subtree(tree, tvb, offset, sizeof_Mask, ett_Mask, &ti, "Mask"); bitmap = tvb_get_letohl(tvb, offset + (int)sizeof(point32_t) + 1); if (bitmap != 0) { @@ -1403,22 +1368,19 @@ dissect_Mask(tvbuff_t *tvb, proto_tree *tree, guint32 offset) static guint32 dissect_Brush(tvbuff_t *tvb, proto_tree *tree, guint32 offset) { - proto_item *ti = NULL; proto_tree *brush_tree; const guint8 type = tvb_get_guint8(tvb, offset); switch (type) { case SPICE_BRUSH_TYPE_SOLID: - ti = proto_tree_add_text(tree, tvb, offset, 5, "Brush - SOLID"); - brush_tree = proto_item_add_subtree(ti, ett_brush); + brush_tree = proto_tree_add_subtree(tree, tvb, offset, 5, ett_brush, NULL, "Brush - SOLID"); proto_tree_add_item(brush_tree, hf_brush_type, tvb, offset, 1, ENC_LITTLE_ENDIAN); offset += 1; proto_tree_add_item(brush_tree, hf_brush_rgb, tvb, offset, 4, ENC_LITTLE_ENDIAN); return 5; break; case SPICE_BRUSH_TYPE_PATTERN: - ti = proto_tree_add_text(tree, tvb, offset, 17, "Brush - PATTERN"); - brush_tree = proto_item_add_subtree(ti, ett_brush); + brush_tree = proto_tree_add_subtree(tree, tvb, offset, 17, ett_brush, NULL, "Brush - PATTERN"); proto_tree_add_item(brush_tree, hf_brush_type, tvb, offset, 1, ENC_LITTLE_ENDIAN); offset += 1; /* FIXME: this is supposed to be the offset to the image to be used as the pattern. */ @@ -1445,14 +1407,13 @@ dissect_Brush(tvbuff_t *tvb, proto_tree *tree, guint32 offset) static guint32 dissect_DisplayBase(tvbuff_t *tvb, proto_tree *tree, guint32 offset) { - proto_item *ti = NULL; + proto_item *ti; proto_tree *DisplayBase_tree; SpiceRect rect; guint8 clip_type; guint32 clip_size = 0; - ti = proto_tree_add_text(tree, tvb, offset, sizeof_DisplayBase, "SpiceMsgDisplayBase"); - DisplayBase_tree = proto_item_add_subtree(ti, ett_DisplayBase); + DisplayBase_tree = proto_tree_add_subtree(tree, tvb, offset, sizeof_DisplayBase, ett_DisplayBase, &ti, "SpiceMsgDisplayBase"); proto_tree_add_item(DisplayBase_tree, hf_display_surface_id, tvb, offset, 4, ENC_LITTLE_ENDIAN); offset += 4; rect = dissect_SpiceRect(tvb, DisplayBase_tree, offset, -1); @@ -1473,11 +1434,10 @@ dissect_DisplayBase(tvbuff_t *tvb, proto_tree *tree, guint32 offset) static guint32 dissect_SpiceResourceId(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint16 count) { - proto_item *ti; proto_tree *resource_tree; - ti = proto_tree_add_text(tree, tvb, offset, sizeof_ResourceId, "Resource #%d", count); - resource_tree = proto_item_add_subtree(ti, ett_cursor_header); + resource_tree = proto_tree_add_subtree_format(tree, tvb, offset, sizeof_ResourceId, + ett_cursor_header, NULL, "Resource #%d", count); proto_tree_add_item(resource_tree, hf_resource_type, tvb, offset, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item(resource_tree, hf_resource_id, tvb, offset, 8, ENC_LITTLE_ENDIAN); @@ -1572,12 +1532,11 @@ static void dissect_spice_mini_data_header(tvbuff_t *tvb, proto_tree *tree, const spice_conversation_t *spice_info, const gboolean client_message, const guint16 message_type, guint32 offset) { - proto_item* ti; proto_tree* subtree; if (tree) { - ti = proto_tree_add_text(tree, tvb, offset, 2, "Message type: %s (%d)", get_message_type_string(message_type, spice_info, client_message), message_type); - subtree = proto_item_add_subtree(ti, ett_common_client_message); + subtree = proto_tree_add_subtree_format(tree, tvb, offset, 2, ett_common_client_message, NULL, + "Message type: %s (%d)", get_message_type_string(message_type, spice_info, client_message), message_type); proto_tree_add_item(subtree, hf_message_type, tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2; proto_tree_add_item(tree, hf_data_size, tvb, offset, 4, ENC_LITTLE_ENDIAN); @@ -1588,15 +1547,14 @@ static void dissect_spice_data_header(tvbuff_t *tvb, proto_tree *tree, const spice_conversation_t *spice_info, const gboolean client_message, const guint16 message_type, guint32 *sublist_size, guint32 offset) { - proto_item* ti; proto_tree* subtree; *sublist_size = tvb_get_letohl(tvb, offset + 14); if (tree) { proto_tree_add_item(tree, hf_serial, tvb, offset, 8, ENC_LITTLE_ENDIAN); offset += 8; - ti = proto_tree_add_text(tree, tvb, offset, 2, "Message type: %s (%d)", get_message_type_string(message_type, spice_info, client_message), message_type); - subtree = proto_item_add_subtree(ti, ett_common_client_message); + subtree = proto_tree_add_subtree_format(tree, tvb, offset, 2, ett_common_client_message, NULL, + "Message type: %s (%d)", get_message_type_string(message_type, spice_info, client_message), message_type); proto_tree_add_item(subtree, hf_message_type, tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2; offset += 2; @@ -1691,13 +1649,11 @@ dissect_spice_common_server_messages(tvbuff_t *tvb, proto_tree *tree, const guin static guint32 dissect_spice_record_client(tvbuff_t *tvb, proto_tree *tree, const guint16 message_type, guint32 offset) { - proto_item *ti; proto_tree *record_tree; switch (message_type) { case SPICE_MSGC_RECORD_MODE: - ti = proto_tree_add_text(tree, tvb, offset, 8, "Client RECORD_MODE message"); /* size is incorrect, fixed later */ - record_tree = proto_item_add_subtree(ti, ett_record_client); + record_tree = proto_tree_add_subtree(tree, tvb, offset, 8, ett_record_client, NULL, "Client RECORD_MODE message"); /* size is incorrect, fixed later */ proto_tree_add_item(record_tree, hf_audio_timestamp, tvb, offset, 4, ENC_LITTLE_ENDIAN); offset += 4; proto_tree_add_item(record_tree, hf_audio_mode, tvb, offset, 2, ENC_LITTLE_ENDIAN); @@ -2024,7 +1980,6 @@ static guint32 dissect_spice_playback_server(tvbuff_t *tvb, proto_tree *tree, const guint16 message_type, guint32 message_size, spice_conversation_t *spice_info, guint32 offset) { guint8 num_channels, i; - proto_item* ti; proto_tree* subtree; switch (message_type) { @@ -2058,8 +2013,7 @@ dissect_spice_playback_server(tvbuff_t *tvb, proto_tree *tree, const guint16 mes num_channels = tvb_get_guint8(tvb, offset); proto_tree_add_item(tree, hf_audio_channels, tvb, offset, 1, ENC_LITTLE_ENDIAN); offset += 1; - ti = proto_tree_add_text(tree, tvb, offset, 2 * num_channels, "Channel volume array"); - subtree = proto_item_add_subtree(ti, ett_record_server); + subtree = proto_tree_add_subtree(tree, tvb, offset, 2 * num_channels, ett_record_server, NULL, "Channel volume array"); for (i = 0; i < num_channels; i++) { proto_tree_add_item(subtree, hf_audio_volume, tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2; @@ -2136,7 +2090,6 @@ static guint32 dissect_spice_record_server(tvbuff_t *tvb, proto_tree *tree, const guint16 message_type, guint32 offset) { guint8 num_channels, i; - proto_item* ti; proto_tree* subtree; switch (message_type) { @@ -2146,8 +2099,7 @@ dissect_spice_record_server(tvbuff_t *tvb, proto_tree *tree, const guint16 messa num_channels = tvb_get_guint8(tvb, offset); proto_tree_add_item(tree, hf_audio_channels, tvb, offset, 1, ENC_LITTLE_ENDIAN); offset += 1; - ti = proto_tree_add_text(tree, tvb, offset, 2 * num_channels, "Volume Array"); - subtree = proto_item_add_subtree(ti, ett_record_server); + subtree = proto_tree_add_subtree(tree, tvb, offset, 2 * num_channels, ett_record_server, NULL, "Volume Array"); for (i = 0; i < num_channels; i++) { proto_tree_add_item(subtree, hf_audio_volume, tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2; @@ -2167,7 +2119,6 @@ dissect_spice_record_server(tvbuff_t *tvb, proto_tree *tree, const guint16 messa static guint32 dissect_spice_agent_message(tvbuff_t *tvb, proto_tree *tree, const guint32 message_type, guint32 message_len, guint32 offset) { - proto_item *ti=NULL; proto_tree *agent_tree; guint32 n_monitors = 0, i; @@ -2223,16 +2174,14 @@ dissect_spice_agent_message(tvbuff_t *tvb, proto_tree *tree, const guint32 messa offset += 4; break; case VD_AGENT_CLIPBOARD_GRAB: - ti = proto_tree_add_text(tree, tvb, offset, 4, "VD_AGENT_CLIPBOARD_GRAB message"); - agent_tree = proto_item_add_subtree(ti, ett_spice_agent); + agent_tree = proto_tree_add_subtree(tree, tvb, offset, 4, ett_spice_agent, NULL, "VD_AGENT_CLIPBOARD_GRAB message"); proto_tree_add_item(agent_tree, hf_agent_clipboard_selection, tvb, offset, 1, ENC_LITTLE_ENDIAN); offset += 1; proto_tree_add_text(agent_tree, tvb, offset, 3, "reserved"); offset += 3; break; case VD_AGENT_CLIPBOARD_REQUEST: - ti = proto_tree_add_text(tree, tvb, offset, 8, "VD_AGENT_CLIPBOARD_REQUEST message"); - agent_tree = proto_item_add_subtree(ti, ett_spice_agent); + agent_tree = proto_tree_add_subtree(tree, tvb, offset, 8, ett_spice_agent, NULL, "VD_AGENT_CLIPBOARD_REQUEST message"); proto_tree_add_item(agent_tree, hf_agent_clipboard_selection, tvb, offset, 1, ENC_LITTLE_ENDIAN); offset += 1; proto_tree_add_text(agent_tree, tvb, offset, 3, "reserved"); @@ -2277,7 +2226,6 @@ dissect_spice_main_server(tvbuff_t *tvb, proto_tree *tree, const guint16 message { guint32 num_channels, i, agent_msg_type, agent_msg_len, name_len, data_size; proto_tree *subtree = NULL; - proto_item *ti = NULL; switch (message_type) { case SPICE_MSG_MAIN_MIGRATE_BEGIN: @@ -2324,13 +2272,11 @@ dissect_spice_main_server(tvbuff_t *tvb, proto_tree *tree, const guint16 message num_channels = tvb_get_letohl(tvb, offset); proto_tree_add_item(tree, hf_main_num_channels, tvb, offset, 4, ENC_LITTLE_ENDIAN); offset += 4; - ti = proto_tree_add_text(tree, tvb, offset, 2 * num_channels, "Channel Array"); - subtree = proto_item_add_subtree(ti, ett_main_client); + subtree = proto_tree_add_subtree(tree, tvb, offset, 2 * num_channels, ett_main_client, NULL, "Channel Array"); for (i = 0; i < num_channels; i++ ) { - proto_tree *subsubtree = NULL; + proto_tree *subsubtree; - ti = proto_tree_add_text(subtree, tvb, offset, 2, "channels[%u]", i); - subsubtree = proto_item_add_subtree(ti, ett_main_client); + subsubtree = proto_tree_add_subtree_format(subtree, tvb, offset, 2, ett_main_client, NULL, "channels[%u]", i); proto_tree_add_item(subsubtree, hf_channel_type, tvb, offset, 1, ENC_LITTLE_ENDIAN); offset += 1; @@ -2397,7 +2343,6 @@ dissect_spice_main_server(tvbuff_t *tvb, proto_tree *tree, const guint16 message static guint32 dissect_spice_main_client(tvbuff_t *tvb, proto_tree *tree, const guint16 message_type, guint32 offset) { - proto_item *ti = NULL; proto_tree *main_tree; guint32 agent_msg_type, agent_msg_len; @@ -2409,14 +2354,12 @@ dissect_spice_main_client(tvbuff_t *tvb, proto_tree *tree, const guint16 message case SPICE_MSGC_MAIN_ATTACH_CHANNELS: break; case SPICE_MSGC_MAIN_AGENT_START: - ti = proto_tree_add_text(tree, tvb, offset, 4, "Client AGENT_START message"); - main_tree = proto_item_add_subtree(ti, ett_main_client); + main_tree = proto_tree_add_subtree(tree, tvb, offset, 4, ett_main_client, NULL, "Client AGENT_START message"); proto_tree_add_item(main_tree, hf_main_client_agent_tokens, tvb, offset, 4, ENC_LITTLE_ENDIAN); offset += 4; break; case SPICE_MSGC_MAIN_AGENT_DATA: - ti = proto_tree_add_text(tree, tvb, offset, 24, "Client AGENT_DATA message"); - main_tree = proto_item_add_subtree(ti, ett_main_client); + main_tree = proto_tree_add_subtree(tree, tvb, offset, 24, ett_main_client, NULL, "Client AGENT_DATA message"); proto_tree_add_item(main_tree, hf_agent_protocol, tvb, offset, 4, ENC_LITTLE_ENDIAN); offset += 4; proto_tree_add_item(main_tree, hf_agent_type, tvb, offset, 4, ENC_LITTLE_ENDIAN); @@ -2439,8 +2382,8 @@ dissect_spice_main_client(tvbuff_t *tvb, proto_tree *tree, const guint16 message static int dissect_spice_keyboard_modifiers(tvbuff_t *tvb, proto_tree *tree, guint32 offset) { - proto_item *ti = NULL; - proto_tree *subtree = NULL; + proto_item *ti; + proto_tree *subtree; ti = proto_tree_add_item(tree, hf_keyboard_modifiers, tvb, offset, 2, ENC_LITTLE_ENDIAN); subtree = proto_item_add_subtree(ti, ett_link_caps); @@ -2454,19 +2397,16 @@ dissect_spice_keyboard_modifiers(tvbuff_t *tvb, proto_tree *tree, guint32 offset static guint32 dissect_spice_inputs_client(tvbuff_t *tvb, proto_tree *tree, const guint16 message_type, guint32 offset) { - proto_item *ti=NULL; proto_tree *inputs_tree; switch (message_type) { case SPICE_MSGC_INPUTS_KEY_DOWN: - ti = proto_tree_add_text(tree, tvb, offset, 4, "Client KEY_DOWN message"); - inputs_tree = proto_item_add_subtree(ti, ett_inputs_client); + inputs_tree = proto_tree_add_subtree(tree, tvb, offset, 4, ett_inputs_client, NULL, "Client KEY_DOWN message"); proto_tree_add_item(inputs_tree, hf_keyboard_code, tvb, offset, 4, ENC_LITTLE_ENDIAN); offset += 4; break; case SPICE_MSGC_INPUTS_KEY_UP: - ti = proto_tree_add_text(tree, tvb, offset, 4, "Client KEY_UP message"); - inputs_tree = proto_item_add_subtree(ti, ett_inputs_client); + inputs_tree = proto_tree_add_subtree(tree, tvb, offset, 4, ett_inputs_client, NULL, "Client KEY_UP message"); proto_tree_add_item(inputs_tree, hf_keyboard_code, tvb, offset, 4, ENC_LITTLE_ENDIAN); offset += 4; break; @@ -2474,8 +2414,7 @@ dissect_spice_inputs_client(tvbuff_t *tvb, proto_tree *tree, const guint16 messa offset += dissect_spice_keyboard_modifiers(tvb, tree, offset); break; case SPICE_MSGC_INPUTS_MOUSE_POSITION: - ti = proto_tree_add_text(tree, tvb, offset, sizeof(point32_t) + 3, "Client MOUSE_POSITION message"); - inputs_tree = proto_item_add_subtree(ti, ett_inputs_client); + inputs_tree = proto_tree_add_subtree(tree, tvb, offset, sizeof(point32_t) + 3, ett_inputs_client, NULL, "Client MOUSE_POSITION message"); dissect_POINT32(tvb, inputs_tree, offset); offset += (int)sizeof(point32_t); proto_tree_add_item(inputs_tree, hf_button_state, tvb, offset, 2, ENC_LITTLE_ENDIAN); @@ -2484,24 +2423,21 @@ dissect_spice_inputs_client(tvbuff_t *tvb, proto_tree *tree, const guint16 messa offset += 1; break; case SPICE_MSGC_INPUTS_MOUSE_MOTION: - ti = proto_tree_add_text(tree, tvb, offset, sizeof(point32_t) + 4, "Client MOUSE_MOTION message"); - inputs_tree = proto_item_add_subtree(ti, ett_inputs_client); + inputs_tree = proto_tree_add_subtree(tree, tvb, offset, sizeof(point32_t) + 4, ett_inputs_client, NULL, "Client MOUSE_MOTION message"); dissect_POINT32(tvb, inputs_tree, offset); offset += (int)sizeof(point32_t); proto_tree_add_item(inputs_tree, hf_button_state, tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2; break; case SPICE_MSGC_INPUTS_MOUSE_PRESS: - ti = proto_tree_add_text(tree, tvb, offset, 3, "Client MOUSE_PRESS message"); - inputs_tree = proto_item_add_subtree(ti, ett_inputs_client); + inputs_tree = proto_tree_add_subtree(tree, tvb, offset, 3, ett_inputs_client, NULL, "Client MOUSE_PRESS message"); proto_tree_add_item(inputs_tree, hf_button_state, tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2; proto_tree_add_item(inputs_tree, hf_mouse_display_id, tvb, offset, 1, ENC_NA); offset += 1; break; case SPICE_MSGC_INPUTS_MOUSE_RELEASE: - ti = proto_tree_add_text(tree, tvb, offset, 3, "Client MOUSE_RELEASE message"); - inputs_tree = proto_item_add_subtree(ti, ett_inputs_client); + inputs_tree = proto_tree_add_subtree(tree, tvb, offset, 3, ett_inputs_client, NULL, "Client MOUSE_RELEASE message"); proto_tree_add_item(inputs_tree, hf_button_state, tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2; proto_tree_add_item(inputs_tree, hf_mouse_display_id, tvb, offset, 1, ENC_NA); @@ -2675,11 +2611,10 @@ dissect_spice_data_server_pdu(tvbuff_t *tvb, proto_tree *tree, packet_info *pinf header_size = sizeof_SpiceMiniDataHeader; message_type = tvb_get_letohs(tvb, offset); message_size = tvb_get_letohl(tvb, offset +2); - msg_ti = proto_tree_add_text(tree, tvb, offset, 0, - "%s (%d bytes)", + message_tree = proto_tree_add_subtree_format(tree, tvb, offset, 0, + ett_message, &msg_ti, "%s (%d bytes)", get_message_type_string(message_type, spice_info, FALSE), message_size + header_size); - message_tree = proto_item_add_subtree(msg_ti, ett_message); ti = proto_tree_add_item(message_tree, hf_data, tvb, offset, header_size, ENC_NA); data_header_tree = proto_item_add_subtree(ti, ett_data); dissect_spice_mini_data_header(tvb, data_header_tree, spice_info, FALSE, message_type, offset); @@ -2688,11 +2623,10 @@ dissect_spice_data_server_pdu(tvbuff_t *tvb, proto_tree *tree, packet_info *pinf header_size = sizeof_SpiceDataHeader; message_type = tvb_get_letohs(tvb, offset + 8); message_size = tvb_get_letohl(tvb, offset + 10); - msg_ti = proto_tree_add_text(tree, tvb, offset, 0, - "%s (%d bytes)", + message_tree = proto_tree_add_subtree_format(tree, tvb, offset, 0, + ett_message, &msg_ti, "%s (%d bytes)", get_message_type_string(message_type, spice_info, FALSE), message_size + header_size); - message_tree = proto_item_add_subtree(msg_ti, ett_message); ti = proto_tree_add_item(message_tree, hf_data, tvb, offset, header_size, ENC_NA); data_header_tree = proto_item_add_subtree(ti, ett_data); dissect_spice_data_header(tvb, data_header_tree, spice_info, FALSE, message_type, &sublist_size, offset); @@ -2975,18 +2909,16 @@ dissect_spice_link_client_pdu(tvbuff_t *tvb, proto_tree *tree, spice_conversatio offset += 4; if (common_caps_len > 0) { - ti = proto_tree_add_text(tree, tvb, offset, common_caps_len * 4, - "Client Common Capabilities (%d bytes)", + caps_tree = proto_tree_add_subtree_format(tree, tvb, offset, common_caps_len * 4, + ett_link_caps, NULL, "Client Common Capabilities (%d bytes)", common_caps_len * 4); /* caps_len multiplied by 4 as length is in UINT32 units */ - caps_tree = proto_item_add_subtree(ti, ett_link_caps); dissect_spice_common_capabilities(tvb, caps_tree, offset, common_caps_len, spice_info, TRUE); offset += (common_caps_len * 4); } if (channel_caps_len > 0) { - ti = proto_tree_add_text(tree, tvb, offset, channel_caps_len * 4, - "Client Channel-specific Capabilities (%d bytes)", + caps_tree = proto_tree_add_subtree_format(tree, tvb, offset, channel_caps_len * 4, + ett_link_caps, NULL, "Client Channel-specific Capabilities (%d bytes)", channel_caps_len * 4); /* caps_len multiplied by 4 as length is in UINT32 units */ - caps_tree = proto_item_add_subtree(ti, ett_link_caps); dissect_spice_link_capabilities(tvb, caps_tree, offset, channel_caps_len, spice_info); } } @@ -3023,18 +2955,16 @@ dissect_spice_link_server_pdu(tvbuff_t *tvb, proto_tree *tree, spice_conversatio offset += (int)sizeof_SpiceLinkHeader + SPICE_TICKET_PUBKEY_BYTES; if (common_caps_len > 0) { - ti = proto_tree_add_text(tree, tvb, offset, common_caps_len * 4, - "Common Capabilities (%d bytes)", + caps_tree = proto_tree_add_subtree_format(tree, tvb, offset, common_caps_len * 4, + ett_link_caps, NULL, "Common Capabilities (%d bytes)", common_caps_len * 4); /* caps_len multiplied by 4 as length is in UINT32 units */ - caps_tree = proto_item_add_subtree(ti, ett_link_caps); dissect_spice_common_capabilities(tvb, caps_tree, offset, common_caps_len, spice_info, FALSE); offset += (common_caps_len * 4); } if (channel_caps_len > 0) { - ti = proto_tree_add_text(tree, tvb, offset, channel_caps_len * 4, - "Channel Capabilities (%d bytes)", + caps_tree = proto_tree_add_subtree_format(tree, tvb, offset, channel_caps_len * 4, + ett_link_caps, NULL, "Channel Capabilities (%d bytes)", channel_caps_len * 4); /* caps_len multiplied by 4 as length is in UINT32 units */ - caps_tree = proto_item_add_subtree(ti, ett_link_caps); dissect_spice_link_capabilities(tvb, caps_tree, offset, channel_caps_len, spice_info); } } diff --git a/epan/dissectors/packet-srvloc.c b/epan/dissectors/packet-srvloc.c index d3d73697b2..944f1bb08f 100644 --- a/epan/dissectors/packet-srvloc.c +++ b/epan/dissectors/packet-srvloc.c @@ -509,7 +509,6 @@ attr_list(proto_tree *tree, int hf, tvbuff_t *tvb, int offset, int length, int i, svc, ss, type_len, foffset=offset; guint32 prot; const guint8 *byte_value; - proto_item *ti; proto_tree *srvloc_tree; char *tmp; @@ -561,8 +560,7 @@ attr_list(proto_tree *tree, int hf, tvbuff_t *tvb, int offset, int length, i=1; for (foffset = offset; foffset<length; foffset += 2) { - ti = proto_tree_add_text(tree, tvb, foffset, -1, "Item %d", i); - srvloc_tree = proto_item_add_subtree(ti, ett_srvloc_attr); + srvloc_tree = proto_tree_add_subtree_format(tree, tvb, foffset, -1, ett_srvloc_attr, NULL, "Item %d", i); svc = tvb_get_guint8(tvb, foffset+1); proto_tree_add_text(srvloc_tree, tvb, foffset+1, 1, @@ -635,8 +633,7 @@ attr_list(proto_tree *tree, int hf, tvbuff_t *tvb, int offset, int length, i=1; for (foffset = offset + (type_len); foffset<length; foffset++) { - ti = proto_tree_add_text(tree, tvb, foffset, -1, "Item %d", i); - srvloc_tree = proto_item_add_subtree(ti, ett_srvloc_attr); + srvloc_tree = proto_tree_add_subtree_format(tree, tvb, foffset, -1, ett_srvloc_attr, NULL, "Item %d", i); svc = tvb_get_guint8(tvb, foffset+1); proto_tree_add_text(srvloc_tree, tvb, foffset+1, 1, diff --git a/epan/dissectors/packet-sscop.c b/epan/dissectors/packet-sscop.c index c598c080ac..88ef48d759 100644 --- a/epan/dissectors/packet-sscop.c +++ b/epan/dissectors/packet-sscop.c @@ -164,11 +164,9 @@ static const value_string sscop_type_vals[] = { static void dissect_stat_list(proto_tree *tree, tvbuff_t *tvb,guint h) { gint n,i; - proto_item* pi; if ((n = (tvb_reported_length(tvb))/4 - h)) { - pi = proto_tree_add_text(tree,tvb,0,n*4,"SD List"); - tree = proto_item_add_subtree(pi,ett_stat); + tree = proto_tree_add_subtree(tree,tvb,0,n*4,ett_stat,NULL,"SD List"); for (i = 0; i < n; i++) { proto_tree_add_item(tree, hf_sscop_stat_s, tvb, i*4 + 1,3,ENC_BIG_ENDIAN); diff --git a/epan/dissectors/packet-ssh.c b/epan/dissectors/packet-ssh.c index 6a81252b3b..0bf294953a 100644 --- a/epan/dissectors/packet-ssh.c +++ b/epan/dissectors/packet-ssh.c @@ -438,7 +438,6 @@ ssh_dissect_ssh2(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree, int is_response, gboolean *need_desegmentation) { - proto_item *ti; proto_item *ssh2_tree=NULL; struct ssh_peer_data *peer_data = &global_data->peer_data[is_response]; @@ -463,8 +462,7 @@ ssh_dissect_ssh2(tvbuff_t *tvb, packet_info *pinfo, wmem_strbuf_append_printf(title, ")"); } - ti=proto_tree_add_text(tree, tvb, offset, -1, "%s", wmem_strbuf_get_str(title)); - ssh2_tree = proto_item_add_subtree(ti, ett_ssh2); + ssh2_tree=proto_tree_add_subtree(tree, tvb, offset, -1, ett_ssh2, NULL, wmem_strbuf_get_str(title)); } if ((peer_data->frame_key_start == 0) || @@ -490,15 +488,11 @@ ssh_dissect_ssh1(tvbuff_t *tvb, packet_info *pinfo, guint8 msg_code; guint remain_length; - proto_item *ti; - proto_item *ssh1_tree =NULL; + proto_item *ssh1_tree; struct ssh_peer_data *peer_data = &global_data->peer_data[is_response]; - if (tree) { - ti=proto_tree_add_text(tree, tvb, offset, -1, "SSH Version 1"); - ssh1_tree = proto_item_add_subtree(ti, ett_ssh1); - } + ssh1_tree=proto_tree_add_subtree(tree, tvb, offset, -1, ett_ssh1, NULL, "SSH Version 1"); /* * We use "tvb_ensure_length_remaining()" to make sure there @@ -639,7 +633,7 @@ ssh_dissect_key_exchange(tvbuff_t *tvb, packet_info *pinfo, int last_offset=offset; guint msg_code; - proto_item *tf, *ti; + proto_item *ti; proto_item *key_ex_tree =NULL; struct ssh_peer_data *peer_data = &global_data->peer_data[is_response]; @@ -701,8 +695,7 @@ ssh_dissect_key_exchange(tvbuff_t *tvb, packet_info *pinfo, proto_tree_add_uint(tree, hf_ssh_padding_length, tvb, offset, 1, padding_length); offset += 1; - tf=proto_tree_add_text(tree, tvb, offset, -1, "Key Exchange"); - key_ex_tree = proto_item_add_subtree(tf, ett_key_exchange); + key_ex_tree=proto_tree_add_subtree(tree, tvb, offset, -1, ett_key_exchange, NULL, "Key Exchange"); /* msg_code */ msg_code = tvb_get_guint8(tvb, offset); @@ -1049,17 +1042,14 @@ ssh_dissect_key_init(tvbuff_t *tvb, int offset, proto_tree *tree, { int start_offset = offset; - proto_item *tf = NULL; - proto_item *key_init_tree=NULL; + proto_item *tf; + proto_tree *key_init_tree; struct ssh_peer_data *peer_data = &global_data->peer_data[is_response]; - if (tree) { - tf=proto_tree_add_text(tree, tvb, offset, -1, "Algorithms"); - key_init_tree = proto_item_add_subtree(tf, ett_key_init); - proto_tree_add_item(key_init_tree, hf_ssh_cookie, + key_init_tree=proto_tree_add_subtree(tree, tvb, offset, -1, ett_key_init, &tf, "Algorithms"); + proto_tree_add_item(key_init_tree, hf_ssh_cookie, tvb, offset, 16, ENC_NA); - } offset += 16; offset = ssh_dissect_proposal(tvb, offset, key_init_tree, diff --git a/epan/dissectors/packet-ssl-utils.c b/epan/dissectors/packet-ssl-utils.c index 210a64a48e..d225de81cf 100644 --- a/epan/dissectors/packet-ssl-utils.c +++ b/epan/dissectors/packet-ssl-utils.c @@ -4890,14 +4890,12 @@ ssl_dissect_hnd_hello_ext_npn(ssl_common_dissect_t *hf, tvbuff_t *tvb, { guint8 npn_length; proto_tree *npn_tree; - proto_item *ti; if (ext_len == 0) { return offset; } - ti = proto_tree_add_text(tree, tvb, offset, ext_len, "Next Protocol Negotiation"); - npn_tree = proto_item_add_subtree(ti, hf->ett.hs_ext_npn); + npn_tree = proto_tree_add_subtree(tree, tvb, offset, ext_len, hf->ett.hs_ext_npn, NULL, "Next Protocol Negotiation"); while (ext_len > 0) { npn_length = tvb_get_guint8(tvb, offset); @@ -4924,14 +4922,12 @@ ssl_dissect_hnd_hello_ext_reneg_info(ssl_common_dissect_t *hf, tvbuff_t *tvb, { guint8 reneg_info_length; proto_tree *reneg_info_tree; - proto_item *ti; if (ext_len == 0) { return offset; } - ti = proto_tree_add_text(tree, tvb, offset, ext_len, "Renegotiation Info extension"); - reneg_info_tree = proto_item_add_subtree(ti, hf->ett.hs_ext_reneg_info); + reneg_info_tree = proto_tree_add_subtree(tree, tvb, offset, ext_len, hf->ett.hs_ext_reneg_info, NULL, "Renegotiation Info extension"); reneg_info_length = tvb_get_guint8(tvb, offset); proto_tree_add_item(reneg_info_tree, hf->hf.hs_ext_reneg_info_len, @@ -4953,15 +4949,13 @@ ssl_dissect_hnd_hello_ext_server_name(ssl_common_dissect_t *hf, tvbuff_t *tvb, { guint16 server_name_length; proto_tree *server_name_tree; - proto_item *ti; if (ext_len == 0) { return offset; } - ti = proto_tree_add_text(tree, tvb, offset, ext_len, "Server Name Indication extension"); - server_name_tree = proto_item_add_subtree(ti, hf->ett.hs_ext_server_name); + server_name_tree = proto_tree_add_subtree(tree, tvb, offset, ext_len, hf->ett.hs_ext_server_name, NULL, "Server Name Indication extension"); proto_tree_add_item(server_name_tree, hf->hf.hs_ext_server_name_list_len, tvb, offset, 2, ENC_BIG_ENDIAN); @@ -5292,7 +5286,6 @@ ssl_dissect_hnd_hello_ext(ssl_common_dissect_t *hf, tvbuff_t *tvb, proto_tree *t guint16 extension_length; guint16 ext_type; guint16 ext_len; - proto_item *pi; proto_tree *ext_tree; if (left < 2) @@ -5309,13 +5302,10 @@ ssl_dissect_hnd_hello_ext(ssl_common_dissect_t *hf, tvbuff_t *tvb, proto_tree *t ext_type = tvb_get_ntohs(tvb, offset); ext_len = tvb_get_ntohs(tvb, offset + 2); - pi = proto_tree_add_text(tree, tvb, offset, 4 + ext_len, "Extension: %s", - val_to_str(ext_type, + ext_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4 + ext_len, hf->ett.hs_ext, NULL, + "Extension: %s", val_to_str(ext_type, tls_hello_extension_types, "Unknown %u")); - ext_tree = proto_item_add_subtree(pi, hf->ett.hs_ext); - if (!ext_tree) - ext_tree = tree; proto_tree_add_uint(ext_tree, hf->hf.hs_ext_type, tvb, offset, 2, ext_type); @@ -5399,12 +5389,10 @@ dissect_ssl3_hnd_cli_keyex_ecdh(ssl_common_dissect_t *hf, tvbuff_t *tvb, guint32 length) { gint point_len; - proto_item *ti_ecdh; proto_tree *ssl_ecdh_tree; - ti_ecdh = proto_tree_add_text(tree, tvb, offset, length, - "EC Diffie-Hellman Client Params"); - ssl_ecdh_tree = proto_item_add_subtree(ti_ecdh, hf->ett.keyex_params); + ssl_ecdh_tree = proto_tree_add_subtree(tree, tvb, offset, length, + hf->ett.keyex_params, NULL, "EC Diffie-Hellman Client Params"); /* point */ point_len = tvb_get_guint8(tvb, offset); @@ -5419,12 +5407,10 @@ dissect_ssl3_hnd_cli_keyex_dh(ssl_common_dissect_t *hf, tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint32 length) { gint yc_len; - proto_item *ti_dh; proto_tree *ssl_dh_tree; - ti_dh = proto_tree_add_text(tree, tvb, offset, length, - "Diffie-Hellman Client Params"); - ssl_dh_tree = proto_item_add_subtree(ti_dh, hf->ett.keyex_params); + ssl_dh_tree = proto_tree_add_subtree(tree, tvb, offset, length, + hf->ett.keyex_params, NULL, "Diffie-Hellman Client Params"); /* ClientDiffieHellmanPublic.dh_public (explicit) */ yc_len = tvb_get_ntohs(tvb, offset); @@ -5440,12 +5426,10 @@ dissect_ssl3_hnd_cli_keyex_rsa(ssl_common_dissect_t *hf, tvbuff_t *tvb, guint32 length, const SslSession *session) { gint epms_len; - proto_item *ti_rsa; proto_tree *ssl_rsa_tree; - ti_rsa = proto_tree_add_text(tree, tvb, offset, length, - "RSA Encrypted PreMaster Secret"); - ssl_rsa_tree = proto_item_add_subtree(ti_rsa, hf->ett.keyex_params); + ssl_rsa_tree = proto_tree_add_subtree(tree, tvb, offset, length, + hf->ett.keyex_params, NULL, "RSA Encrypted PreMaster Secret"); /* EncryptedPreMasterSecret.pre_master_secret */ switch (session->version) { @@ -5476,13 +5460,10 @@ dissect_ssl3_hnd_cli_keyex_psk(ssl_common_dissect_t *hf, tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint32 length) { guint identity_len; - proto_item *ti_psk; proto_tree *ssl_psk_tree; - ti_psk = proto_tree_add_text(tree, tvb, offset, length, - "PSK Client Params"); - ssl_psk_tree = proto_item_add_subtree(ti_psk, hf->ett.keyex_params); - + ssl_psk_tree = proto_tree_add_subtree(tree, tvb, offset, length, + hf->ett.keyex_params, NULL, "PSK Client Params"); /* identity */ identity_len = tvb_get_ntohs(tvb, offset); proto_tree_add_item(ssl_psk_tree, hf->hf.hs_client_keyex_identity_len, tvb, @@ -5498,12 +5479,10 @@ dissect_ssl3_hnd_cli_keyex_rsa_psk(ssl_common_dissect_t *hf, tvbuff_t *tvb, guint32 length) { gint identity_len, epms_len; - proto_item *ti_psk; proto_tree *ssl_psk_tree; - ti_psk = proto_tree_add_text(tree, tvb, offset, length, - "RSA PSK Client Params"); - ssl_psk_tree = proto_item_add_subtree(ti_psk, hf->ett.keyex_params); + ssl_psk_tree = proto_tree_add_subtree(tree, tvb, offset, length, + hf->ett.keyex_params, NULL, "RSA PSK Client Params"); /* identity */ identity_len = tvb_get_ntohs(tvb, offset); @@ -5599,12 +5578,10 @@ dissect_ssl3_hnd_srv_keyex_ecdh(ssl_common_dissect_t *hf, tvbuff_t *tvb, gint curve_type; gint point_len; - proto_item *ti_ecdh; proto_tree *ssl_ecdh_tree; - ti_ecdh = proto_tree_add_text(tree, tvb, offset, length, - "EC Diffie-Hellman Server Params"); - ssl_ecdh_tree = proto_item_add_subtree(ti_ecdh, hf->ett.keyex_params); + ssl_ecdh_tree = proto_tree_add_subtree(tree, tvb, offset, length, + hf->ett.keyex_params, NULL, "EC Diffie-Hellman Server Params"); /* ECParameters.curve_type */ curve_type = tvb_get_guint8(tvb, offset); @@ -5637,12 +5614,10 @@ dissect_ssl3_hnd_srv_keyex_dhe(ssl_common_dissect_t *hf, tvbuff_t *tvb, const SslSession *session) { gint p_len, g_len, ys_len; - proto_item *ti_dh; proto_tree *ssl_dh_tree; - ti_dh = proto_tree_add_text(tree, tvb, offset, length, - "Diffie-Hellman Server Params"); - ssl_dh_tree = proto_item_add_subtree(ti_dh, hf->ett.keyex_params); + ssl_dh_tree = proto_tree_add_subtree(tree, tvb, offset, length, + hf->ett.keyex_params, NULL, "Diffie-Hellman Server Params"); /* p */ p_len = tvb_get_ntohs(tvb, offset); @@ -5679,12 +5654,10 @@ dissect_ssl3_hnd_srv_keyex_rsa(ssl_common_dissect_t *hf, tvbuff_t *tvb, const SslSession *session) { gint modulus_len, exponent_len; - proto_item *ti_rsa; proto_tree *ssl_rsa_tree; - ti_rsa = proto_tree_add_text(tree, tvb, offset, length, - "RSA-EXPORT Server Params"); - ssl_rsa_tree = proto_item_add_subtree(ti_rsa, hf->ett.keyex_params); + ssl_rsa_tree = proto_tree_add_subtree(tree, tvb, offset, length, + hf->ett.keyex_params, NULL, "RSA-EXPORT Server Params"); /* modulus */ modulus_len = tvb_get_ntohs(tvb, offset); @@ -5712,7 +5685,6 @@ dissect_ssl3_hnd_srv_keyex_psk(ssl_common_dissect_t *hf, tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint32 length) { guint hint_len; - proto_item *ti_psk; proto_tree *ssl_psk_tree; hint_len = tvb_get_ntohs(tvb, offset); @@ -5721,9 +5693,8 @@ dissect_ssl3_hnd_srv_keyex_psk(ssl_common_dissect_t *hf, tvbuff_t *tvb, return; } - ti_psk = proto_tree_add_text(tree, tvb, offset, length, - "PSK Server Params"); - ssl_psk_tree = proto_item_add_subtree(ti_psk, hf->ett.keyex_params); + ssl_psk_tree = proto_tree_add_subtree(tree, tvb, offset, length, + hf->ett.keyex_params, NULL, "PSK Server Params"); /* hint */ proto_tree_add_item(ssl_psk_tree, hf->hf.hs_server_keyex_hint_len, tvb, diff --git a/epan/dissectors/packet-ssl.c b/epan/dissectors/packet-ssl.c index ce0105667a..c69cfa5548 100644 --- a/epan/dissectors/packet-ssl.c +++ b/epan/dissectors/packet-ssl.c @@ -2161,7 +2161,6 @@ dissect_ssl3_hnd_hello_common(tvbuff_t *tvb, proto_tree *tree, /* show the client's random challenge */ nstime_t gmt_unix_time; guint8 session_id_length; - proto_item *ti_rnd; proto_tree *ssl_rnd_tree; session_id_length = 0; @@ -2213,8 +2212,7 @@ dissect_ssl3_hnd_hello_common(tvbuff_t *tvb, proto_tree *tree, if (tree) { - ti_rnd = proto_tree_add_text(tree, tvb, offset, 32, "Random"); - ssl_rnd_tree = proto_item_add_subtree(ti_rnd, ett_ssl_random); + ssl_rnd_tree = proto_tree_add_subtree(tree, tvb, offset, 32, ett_ssl_random, NULL, "Random"); /* show the time */ gmt_unix_time.secs = tvb_get_ntohl(tvb, offset); @@ -2456,7 +2454,6 @@ dissect_ssl3_hnd_new_ses_ticket(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint32 length, SslDecryptSession *ssl) { guint nst_len; - proto_item *ti; proto_tree *subtree; guint16 session_ticket_length = 0; @@ -2465,8 +2462,7 @@ dissect_ssl3_hnd_new_ses_ticket(tvbuff_t *tvb, proto_tree *tree, return; } - ti = proto_tree_add_text(tree, tvb, offset, 6+nst_len, "TLS Session Ticket"); - subtree = proto_item_add_subtree(ti, ett_ssl_new_ses_ticket); + subtree = proto_tree_add_subtree(tree, tvb, offset, 6+nst_len, ett_ssl_new_ses_ticket, NULL, "TLS Session Ticket"); proto_tree_add_item(subtree, hf_ssl_handshake_session_ticket_lifetime_hint, tvb, offset, 4, ENC_BIG_ENDIAN); @@ -2709,7 +2705,6 @@ static void dissect_ssl3_hnd_cli_cert_verify(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint32 length) { - proto_item *ti_sig; proto_tree *ssl_sig_tree; /* @@ -2730,9 +2725,8 @@ dissect_ssl3_hnd_cli_cert_verify(tvbuff_t *tvb, proto_tree *tree, */ - ti_sig = proto_tree_add_text(tree, tvb, offset, length, - "Signature with client's private key"); - ssl_sig_tree = proto_item_add_subtree(ti_sig, ett_ssl_cli_sig); + ssl_sig_tree = proto_tree_add_subtree(tree, tvb, offset, length, + ett_ssl_cli_sig, NULL, "Signature with client's private key"); proto_tree_add_item(ssl_sig_tree, hf_ssl_handshake_client_cert_vrfy_sig_len, tvb, offset, 2, ENC_BIG_ENDIAN); diff --git a/epan/dissectors/packet-starteam.c b/epan/dissectors/packet-starteam.c index 16fb5cca95..fdd133ad74 100644 --- a/epan/dissectors/packet-starteam.c +++ b/epan/dissectors/packet-starteam.c @@ -529,8 +529,7 @@ dissect_starteam(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data if(bRequest){ if(tvb_length_remaining(tvb, offset) >= 20){ - ti = proto_tree_add_text(starteamroot_tree, tvb, offset, 20, STARTEAM_TEXT_MDH); - starteam_tree = proto_item_add_subtree(ti, ett_starteam_mdh); + starteam_tree = proto_tree_add_subtree(starteamroot_tree, tvb, offset, 20, ett_starteam_mdh, NULL, STARTEAM_TEXT_MDH); proto_tree_add_item(starteam_tree, hf_starteam_mdh_session_tag, tvb, offset + 0, 4, ENC_LITTLE_ENDIAN); proto_tree_add_item(starteam_tree, hf_starteam_mdh_ctimestamp, tvb, offset + 4, 4, ENC_LITTLE_ENDIAN); @@ -542,8 +541,7 @@ dissect_starteam(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data } if(tvb_length_remaining(tvb, offset) >= 16){ - ti = proto_tree_add_text(starteamroot_tree, tvb, offset, 16, STARTEAM_TEXT_PH); - starteam_tree = proto_item_add_subtree(ti, ett_starteam_ph); + starteam_tree = proto_tree_add_subtree(starteamroot_tree, tvb, offset, 16, ett_starteam_ph, NULL, STARTEAM_TEXT_PH); proto_tree_add_item(starteam_tree, hf_starteam_ph_signature, tvb, offset + 0, 4, ENC_ASCII|ENC_NA); proto_tree_add_item(starteam_tree, hf_starteam_ph_packet_size, tvb, offset + 4, 4, ENC_LITTLE_ENDIAN); @@ -553,8 +551,7 @@ dissect_starteam(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data if(bRequest){ if(tvb_length_remaining(tvb, offset) >= 38){ - ti = proto_tree_add_text(starteamroot_tree, tvb, offset, 38, STARTEAM_TEXT_ID); - starteam_tree = proto_item_add_subtree(ti, ett_starteam_id); + starteam_tree = proto_tree_add_subtree(starteamroot_tree, tvb, offset, 38, ett_starteam_id, NULL, STARTEAM_TEXT_ID); proto_tree_add_item(starteam_tree, hf_starteam_id_revision_level, tvb, offset + 0, 2, ENC_LITTLE_ENDIAN); proto_tree_add_item(starteam_tree, hf_starteam_id_client, tvb, offset + 2, 16, ENC_ASCII|ENC_NA); @@ -567,9 +564,8 @@ dissect_starteam(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data } } if(tvb_length_remaining(tvb, offset) > 0){ - ti = proto_tree_add_text(starteamroot_tree, tvb, offset, -1, STARTEAM_TEXT_DATA); - starteam_tree = proto_item_add_subtree(ti, ett_starteam_data); - proto_tree_add_item(starteam_tree, hf_starteam_data_data, tvb, offset, tvb_length_remaining(tvb, offset), ENC_ASCII|ENC_NA); + starteam_tree = proto_tree_add_subtree(starteamroot_tree, tvb, offset, -1, ett_starteam_data, NULL, STARTEAM_TEXT_DATA); + proto_tree_add_item(starteam_tree, hf_starteam_data_data, tvb, offset, -1, ENC_ASCII|ENC_NA); } } } diff --git a/epan/dissectors/packet-stat.c b/epan/dissectors/packet-stat.c index 29c9199213..8db649f26a 100644 --- a/epan/dissectors/packet-stat.c +++ b/epan/dissectors/packet-stat.c @@ -178,16 +178,13 @@ dissect_stat_stat(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree static int dissect_stat_stat_res(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, void* data _U_) { - proto_item* sub_item = NULL; - proto_tree* sub_tree = NULL; + proto_item* sub_item; + proto_tree* sub_tree; gint32 res; - if (tree) { - sub_item = proto_tree_add_item(tree, &hfi_stat_stat_res, tvb, + sub_item = proto_tree_add_item(tree, &hfi_stat_stat_res, tvb, offset, -1, ENC_NA); - if (sub_item) - sub_tree = proto_item_add_subtree(sub_item, ett_stat_stat_res); - } + sub_tree = proto_item_add_subtree(sub_item, ett_stat_stat_res); res = tvb_get_ntohl(tvb, offset); offset = dissect_rpc_uint32(tvb,sub_tree,hfi_stat_stat_res_res.id,offset); @@ -204,15 +201,12 @@ dissect_stat_stat_res(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_t static int dissect_stat_my_id(tvbuff_t *tvb, int offset, proto_tree *tree) { - proto_item* sub_item = NULL; - proto_tree* sub_tree = NULL; + proto_item* sub_item; + proto_tree* sub_tree; - if (tree) { - sub_item = proto_tree_add_item(tree, &hfi_stat_my_id, tvb, + sub_item = proto_tree_add_item(tree, &hfi_stat_my_id, tvb, offset, my_id_len(tvb,offset), ENC_NA); - if (sub_item) - sub_tree = proto_item_add_subtree(sub_item, ett_stat_my_id); - } + sub_tree = proto_item_add_subtree(sub_item, ett_stat_my_id); offset = dissect_rpc_string(tvb,sub_tree,hfi_stat_my_id_hostname.id,offset,NULL); offset = dissect_rpc_uint32(tvb,sub_tree,hfi_stat_my_id_prog.id,offset); @@ -225,16 +219,12 @@ dissect_stat_my_id(tvbuff_t *tvb, int offset, proto_tree *tree) static int dissect_stat_mon_id(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, void* data _U_) { - proto_item* sub_item = NULL; - proto_tree* sub_tree = NULL; + proto_item* sub_item; + proto_tree* sub_tree; - if (tree) { - sub_item = proto_tree_add_item(tree, &hfi_stat_mon, tvb, + sub_item = proto_tree_add_item(tree, &hfi_stat_mon, tvb, offset, mon_id_len(tvb,offset), ENC_NA); - if (sub_item) - sub_tree = proto_item_add_subtree(sub_item, ett_stat_mon); - } - + sub_tree = proto_item_add_subtree(sub_item, ett_stat_mon); offset = dissect_rpc_string(tvb,sub_tree,hfi_stat_mon_id_name.id,offset,NULL); @@ -273,16 +263,13 @@ dissect_stat_state(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree static int dissect_stat_notify(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, void* data _U_) { - proto_item* sub_item = NULL; - proto_tree* sub_tree = NULL; + proto_item* sub_item; + proto_tree* sub_tree; int start_offset = offset; - if (tree) { - sub_item = proto_tree_add_item(tree, &hfi_stat_stat_chge, tvb, + sub_item = proto_tree_add_item(tree, &hfi_stat_stat_chge, tvb, offset, -1, ENC_NA); - if (sub_item) - sub_tree = proto_item_add_subtree(sub_item, ett_stat_stat_chge); - } + sub_tree = proto_item_add_subtree(sub_item, ett_stat_stat_chge); offset = dissect_rpc_string(tvb,sub_tree,hfi_stat_mon_id_name.id,offset,NULL); diff --git a/epan/dissectors/packet-sua.c b/epan/dissectors/packet-sua.c index 01b55e489e..ea9642002d 100644 --- a/epan/dissectors/packet-sua.c +++ b/epan/dissectors/packet-sua.c @@ -926,7 +926,6 @@ static const value_string routing_indicator_values[] = { static void dissect_source_address_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *parameter_tree, guint8 *ssn) { - proto_item *address_indicator_item; proto_tree *address_indicator_tree; tvbuff_t *parameters_tvb; @@ -934,8 +933,7 @@ dissect_source_address_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, pr if(parameter_tree) { proto_tree_add_item(parameter_tree, hf_sua_source_address_routing_indicator, parameter_tvb, ROUTING_INDICATOR_OFFSET, ROUTING_INDICATOR_LENGTH, ENC_BIG_ENDIAN); - address_indicator_item = proto_tree_add_text(parameter_tree, parameter_tvb, ADDRESS_INDICATOR_OFFSET, ADDRESS_INDICATOR_LENGTH, "Address Indicator"); - address_indicator_tree = proto_item_add_subtree(address_indicator_item, ett_sua_source_address_indicator); + address_indicator_tree = proto_tree_add_subtree(parameter_tree, parameter_tvb, ADDRESS_INDICATOR_OFFSET, ADDRESS_INDICATOR_LENGTH, ett_sua_source_address_indicator, NULL, "Address Indicator"); proto_tree_add_item(address_indicator_tree, hf_sua_source_address_reserved_bits, parameter_tvb, ADDRESS_INDICATOR_OFFSET, ADDRESS_INDICATOR_LENGTH, ENC_BIG_ENDIAN); proto_tree_add_item(address_indicator_tree, hf_sua_source_address_gt_bit, parameter_tvb, ADDRESS_INDICATOR_OFFSET, ADDRESS_INDICATOR_LENGTH, ENC_BIG_ENDIAN); proto_tree_add_item(address_indicator_tree, hf_sua_source_address_pc_bit, parameter_tvb, ADDRESS_INDICATOR_OFFSET, ADDRESS_INDICATOR_LENGTH, ENC_BIG_ENDIAN); @@ -949,7 +947,6 @@ dissect_source_address_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, pr static void dissect_destination_address_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *parameter_tree, guint8 *ssn) { - proto_item *address_indicator_item; proto_tree *address_indicator_tree; tvbuff_t *parameters_tvb; @@ -957,8 +954,7 @@ dissect_destination_address_parameter(tvbuff_t *parameter_tvb, packet_info *pinf if(parameter_tree) { proto_tree_add_item(parameter_tree, hf_sua_destination_address_routing_indicator, parameter_tvb, ROUTING_INDICATOR_OFFSET, ROUTING_INDICATOR_LENGTH, ENC_BIG_ENDIAN); - address_indicator_item = proto_tree_add_text(parameter_tree, parameter_tvb, ADDRESS_INDICATOR_OFFSET, ADDRESS_INDICATOR_LENGTH, "Address Indicator"); - address_indicator_tree = proto_item_add_subtree(address_indicator_item, ett_sua_destination_address_indicator); + address_indicator_tree = proto_tree_add_subtree(parameter_tree, parameter_tvb, ADDRESS_INDICATOR_OFFSET, ADDRESS_INDICATOR_LENGTH, ett_sua_destination_address_indicator, NULL, "Address Indicator"); proto_tree_add_item(address_indicator_tree, hf_sua_destination_address_reserved_bits, parameter_tvb, ADDRESS_INDICATOR_OFFSET, ADDRESS_INDICATOR_LENGTH, ENC_BIG_ENDIAN); proto_tree_add_item(address_indicator_tree, hf_sua_destination_address_gt_bit, parameter_tvb, ADDRESS_INDICATOR_OFFSET, ADDRESS_INDICATOR_LENGTH, ENC_BIG_ENDIAN); proto_tree_add_item(address_indicator_tree, hf_sua_destination_address_pc_bit, parameter_tvb, ADDRESS_INDICATOR_OFFSET, ADDRESS_INDICATOR_LENGTH, ENC_BIG_ENDIAN); @@ -1064,20 +1060,18 @@ static const true_false_string more_data_bit_value = { static void dissect_sequence_number_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree) { - proto_item *sent_sequence_number_item; proto_tree *sent_sequence_number_tree; - proto_item *receive_sequence_number_item; proto_tree *receive_sequence_number_tree; proto_tree_add_item(parameter_tree, hf_sua_sequence_number_reserved, parameter_tvb, PARAMETER_VALUE_OFFSET, RESERVED_2_LENGTH, ENC_NA); - receive_sequence_number_item = proto_tree_add_text(parameter_tree, parameter_tvb, SEQUENCE_NUMBER_REC_SEQ_OFFSET, SEQUENCE_NUMBER_REC_SEQ_LENGTH, "Receive Sequence Number"); - receive_sequence_number_tree = proto_item_add_subtree(receive_sequence_number_item, ett_sua_sequence_number_rec_number); + receive_sequence_number_tree = proto_tree_add_subtree(parameter_tree, parameter_tvb, SEQUENCE_NUMBER_REC_SEQ_OFFSET, SEQUENCE_NUMBER_REC_SEQ_LENGTH, + ett_sua_sequence_number_rec_number, NULL, "Receive Sequence Number"); proto_tree_add_item(receive_sequence_number_tree, hf_sua_sequence_number_rec_number, parameter_tvb, SEQUENCE_NUMBER_REC_SEQ_OFFSET, SEQUENCE_NUMBER_REC_SEQ_LENGTH, ENC_BIG_ENDIAN); proto_tree_add_item(receive_sequence_number_tree, hf_sua_sequence_number_more_data_bit, parameter_tvb, SEQUENCE_NUMBER_REC_SEQ_OFFSET, SEQUENCE_NUMBER_REC_SEQ_LENGTH, ENC_BIG_ENDIAN); - sent_sequence_number_item = proto_tree_add_text(parameter_tree, parameter_tvb, SEQUENCE_NUMBER_SENT_SEQ_OFFSET, SEQUENCE_NUMBER_SENT_SEQ_LENGTH, "Sent Sequence Number"); - sent_sequence_number_tree = proto_item_add_subtree(sent_sequence_number_item, ett_sua_sequence_number_sent_number); + sent_sequence_number_tree = proto_tree_add_subtree(parameter_tree, parameter_tvb, SEQUENCE_NUMBER_SENT_SEQ_OFFSET, SEQUENCE_NUMBER_SENT_SEQ_LENGTH, + ett_sua_sequence_number_sent_number, NULL, "Sent Sequence Number"); proto_tree_add_item(sent_sequence_number_tree, hf_sua_sequence_number_sent_number, parameter_tvb, SEQUENCE_NUMBER_SENT_SEQ_OFFSET, SEQUENCE_NUMBER_SENT_SEQ_LENGTH, ENC_BIG_ENDIAN); proto_tree_add_item(sent_sequence_number_tree, hf_sua_sequence_number_spare_bit, parameter_tvb, SEQUENCE_NUMBER_SENT_SEQ_OFFSET, SEQUENCE_NUMBER_SENT_SEQ_LENGTH, ENC_BIG_ENDIAN); } @@ -1088,12 +1082,11 @@ dissect_sequence_number_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter static void dissect_receive_sequence_number_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree) { - proto_item *receive_sequence_number_item; proto_tree *receive_sequence_number_tree; proto_tree_add_item(parameter_tree, hf_sua_receive_sequence_number_reserved, parameter_tvb, PARAMETER_VALUE_OFFSET, RESERVED_3_LENGTH, ENC_NA); - receive_sequence_number_item = proto_tree_add_text(parameter_tree, parameter_tvb, RECEIVE_SEQUENCE_NUMBER_REC_SEQ_OFFSET, RECEIVE_SEQUENCE_NUMBER_REC_SEQ_LENGTH, "Receive Sequence Number"); - receive_sequence_number_tree = proto_item_add_subtree(receive_sequence_number_item, ett_sua_receive_sequence_number_number); + receive_sequence_number_tree = proto_tree_add_subtree(parameter_tree, parameter_tvb, RECEIVE_SEQUENCE_NUMBER_REC_SEQ_OFFSET, RECEIVE_SEQUENCE_NUMBER_REC_SEQ_LENGTH, + ett_sua_receive_sequence_number_number, NULL, "Receive Sequence Number"); proto_tree_add_item(receive_sequence_number_tree, hf_sua_receive_sequence_number_number, parameter_tvb, RECEIVE_SEQUENCE_NUMBER_REC_SEQ_OFFSET, RECEIVE_SEQUENCE_NUMBER_REC_SEQ_LENGTH, ENC_BIG_ENDIAN); proto_tree_add_item(receive_sequence_number_tree, hf_sua_receive_sequence_number_spare_bit, parameter_tvb, RECEIVE_SEQUENCE_NUMBER_REC_SEQ_OFFSET, RECEIVE_SEQUENCE_NUMBER_REC_SEQ_LENGTH, ENC_BIG_ENDIAN); } @@ -1638,18 +1631,12 @@ dissect_v8_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *tr length = tvb_get_ntohs(parameter_tvb, PARAMETER_LENGTH_OFFSET); padding_length = tvb_length(parameter_tvb) - length; - if (tree) { - /* create proto_tree stuff */ - parameter_item = proto_tree_add_text(tree, parameter_tvb, PARAMETER_HEADER_OFFSET, tvb_length(parameter_tvb), "%s", val_to_str_const(tag, v8_parameter_tag_values, "Unknown parameter")); - parameter_tree = proto_item_add_subtree(parameter_item, ett_sua_parameter); + /* create proto_tree stuff */ + parameter_tree = proto_tree_add_subtree(tree, parameter_tvb, PARAMETER_HEADER_OFFSET, -1, ett_sua_parameter, ¶meter_item, val_to_str_const(tag, v8_parameter_tag_values, "Unknown parameter")); - /* add tag and length to the sua tree */ - proto_tree_add_item(parameter_tree, hf_sua_v8_parameter_tag, parameter_tvb, PARAMETER_TAG_OFFSET, PARAMETER_TAG_LENGTH, ENC_BIG_ENDIAN); - proto_tree_add_item(parameter_tree, hf_sua_parameter_length, parameter_tvb, PARAMETER_LENGTH_OFFSET, PARAMETER_LENGTH_LENGTH, ENC_BIG_ENDIAN); - } else { - parameter_tree = NULL; - parameter_item = NULL; - } + /* add tag and length to the sua tree */ + proto_tree_add_item(parameter_tree, hf_sua_v8_parameter_tag, parameter_tvb, PARAMETER_TAG_OFFSET, PARAMETER_TAG_LENGTH, ENC_BIG_ENDIAN); + proto_tree_add_item(parameter_tree, hf_sua_parameter_length, parameter_tvb, PARAMETER_LENGTH_OFFSET, PARAMETER_LENGTH_LENGTH, ENC_BIG_ENDIAN); /* ** If no tree, only the data and ssn parameters in the source and destination @@ -1923,32 +1910,26 @@ dissect_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *tree length = tvb_get_ntohs(parameter_tvb, PARAMETER_LENGTH_OFFSET); padding_length = tvb_length(parameter_tvb) - length; - if (tree) { - /* Create proto_tree stuff */ - /* If it's a known parameter it's present in the value_string. - * If param_tag_str = NULL then this is an unknown parameter - */ - param_tag_str = try_val_to_str(tag, parameter_tag_values); - if(param_tag_str) { - /* The parameter exists */ - parameter_item = proto_tree_add_text(tree, parameter_tvb, PARAMETER_HEADER_OFFSET, tvb_length(parameter_tvb), "%s", param_tag_str); - } else { - if(dissector_try_uint(sua_parameter_table, tag, parameter_tvb, pinfo,tree)) { - return; - } else { - parameter_item = proto_tree_add_text(tree, parameter_tvb, PARAMETER_HEADER_OFFSET, tvb_length(parameter_tvb), "Unknown parameter"); - } - } - parameter_tree = proto_item_add_subtree(parameter_item, ett_sua_parameter); - - /* Add tag and length to the sua tree */ - proto_tree_add_item(parameter_tree, hf_sua_parameter_tag, parameter_tvb, PARAMETER_TAG_OFFSET, PARAMETER_TAG_LENGTH, ENC_BIG_ENDIAN); - proto_tree_add_item(parameter_tree, hf_sua_parameter_length, parameter_tvb, PARAMETER_LENGTH_OFFSET, PARAMETER_LENGTH_LENGTH, ENC_BIG_ENDIAN); + /* Create proto_tree stuff */ + /* If it's a known parameter it's present in the value_string. + * If param_tag_str = NULL then this is an unknown parameter + */ + param_tag_str = try_val_to_str(tag, parameter_tag_values); + if(param_tag_str) { + /* The parameter exists */ + parameter_tree = proto_tree_add_subtree(tree, parameter_tvb, PARAMETER_HEADER_OFFSET, -1, ett_sua_parameter, ¶meter_item, param_tag_str); } else { - parameter_tree = NULL; - parameter_item = NULL; + if(dissector_try_uint(sua_parameter_table, tag, parameter_tvb, pinfo,tree)) { + return; + } + + parameter_tree = proto_tree_add_subtree(tree, parameter_tvb, PARAMETER_HEADER_OFFSET, -1, ett_sua_parameter, ¶meter_item, "Unknown parameter"); } + /* Add tag and length to the sua tree */ + proto_tree_add_item(parameter_tree, hf_sua_parameter_tag, parameter_tvb, PARAMETER_TAG_OFFSET, PARAMETER_TAG_LENGTH, ENC_BIG_ENDIAN); + proto_tree_add_item(parameter_tree, hf_sua_parameter_length, parameter_tvb, PARAMETER_LENGTH_OFFSET, PARAMETER_LENGTH_LENGTH, ENC_BIG_ENDIAN); + /* ** If no tree, only the data, ssn, PC, and GT parameters in the source and destination ** addresses need to be dissected. This in order to make dissection of the data diff --git a/epan/dissectors/packet-synphasor.c b/epan/dissectors/packet-synphasor.c index a6fd003aa4..f7f95fa556 100644 --- a/epan/dissectors/packet-synphasor.c +++ b/epan/dissectors/packet-synphasor.c @@ -670,8 +670,8 @@ static int dissect_config_frame(tvbuff_t *tvb, proto_item *config_item) /* STN with new tree to add the rest of the PMU block */ str = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, CHNAM_LEN, ENC_ASCII); - station_item = proto_tree_add_text(config_tree, tvb, offset, CHNAM_LEN, "Station #%i: \"%s\"", j + 1, str); - station_tree = proto_item_add_subtree(station_item, ett_conf_station); + station_tree = proto_tree_add_subtree_format(config_tree, tvb, offset, CHNAM_LEN, + ett_conf_station, &station_item, "Station #%i: \"%s\"", j + 1, str); offset += CHNAM_LEN; /* IDCODE */ @@ -782,9 +782,9 @@ static int dissect_data_frame(tvbuff_t *tvb, for (i = 0; i < wmem_array_get_count(conf->config_blocks); i++) { config_block *block = (config_block*)wmem_array_index(conf->config_blocks, i); - proto_item *block_item = proto_tree_add_text(data_tree, tvb, offset, BLOCKSIZE(*block), - "Station: \"%s\"", block->name); - proto_tree *block_tree = proto_item_add_subtree(block_item, ett_data_block); + proto_item *block_item; + proto_tree *block_tree = proto_tree_add_subtree_format(data_tree, tvb, offset, BLOCKSIZE(*block), + ett_data_block, &block_item, "Station: \"%s\"", block->name); /* STAT */ proto_item *temp_item = proto_tree_add_text(block_tree, tvb, offset, 2, "Flags"); @@ -905,8 +905,7 @@ static gint dissect_PHASORS(tvbuff_t *tvb, proto_tree *tree, config_block *block return offset; length = wmem_array_get_count(block->phasors) * (floating_point == block->format_ph ? 8 : 4); - temp_item = proto_tree_add_text(tree, tvb, offset, length, "Phasors (%u)", cnt); - phasor_tree = proto_item_add_subtree(temp_item, ett_data_phasors); + phasor_tree = proto_tree_add_subtree_format(tree, tvb, offset, length, ett_data_phasors, NULL, "Phasors (%u)", cnt); /* dissect a phasor for every phasor_info saved in the config_block */ for (j = 0; j < cnt; j++) { @@ -984,9 +983,7 @@ static gint dissect_ANALOG(tvbuff_t *tvb, proto_tree *tree, config_block *block, return offset; length = wmem_array_get_count(block->analogs) * (floating_point == block->format_an ? 4 : 2); - temp_item = proto_tree_add_text(tree, tvb, offset, length, "Analog values (%u)", cnt); - - analog_tree = proto_item_add_subtree(temp_item, ett_data_analog); + analog_tree = proto_tree_add_subtree_format(tree, tvb, offset, length, ett_data_analog, NULL, "Analog values (%u)", cnt); for (j = 0; j < cnt; j++) { analog_info *ai = (analog_info *)wmem_array_index(block->analogs, j); @@ -1014,15 +1011,13 @@ static gint dissect_ANALOG(tvbuff_t *tvb, proto_tree *tree, config_block *block, /* used by 'dissect_data_frame()' to dissect the DIGITAL field */ static gint dissect_DIGITAL(tvbuff_t *tvb, proto_tree *tree, config_block *block, gint offset) { - proto_item *digital_item = NULL; gint j, cnt = block->num_dg; /* number of digital status words to dissect */ if (0 == cnt) return offset; - digital_item = proto_tree_add_text(tree, tvb, offset, cnt * 2, "Digital status words (%u)", cnt); - tree = proto_item_add_subtree(digital_item, ett_data_digital); + tree = proto_tree_add_subtree_format(tree, tvb, offset, cnt * 2, ett_data_digital, NULL, "Digital status words (%u)", cnt); for (j = 0; j < cnt; j++) { guint16 tmp = tvb_get_ntohs(tvb, offset); @@ -1039,15 +1034,13 @@ static gint dissect_DIGITAL(tvbuff_t *tvb, proto_tree *tree, config_block *block /* used by 'dissect_config_frame()' to dissect the PHUNIT field */ static gint dissect_PHUNIT(tvbuff_t *tvb, proto_tree *tree, gint offset, gint cnt) { - proto_item *temp_item = NULL; - proto_tree *temp_tree = NULL; + proto_tree *temp_tree; int i; if (0 == cnt) return offset; - temp_item = proto_tree_add_text(tree, tvb, offset, 4 * cnt, "Phasor conversation factors (%u)", cnt); - temp_tree = proto_item_add_subtree(temp_item, ett_conf_phconv); + temp_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4 * cnt, ett_conf_phconv, NULL, "Phasor conversation factors (%u)", cnt); /* Conversion factor for phasor channels. Four bytes for each phasor. * MSB: 0 = voltage, 1 = current @@ -1069,15 +1062,14 @@ static gint dissect_PHUNIT(tvbuff_t *tvb, proto_tree *tree, gint offset, gint cn /* used by 'dissect_config_frame()' to dissect the ANUNIT field */ static gint dissect_ANUNIT(tvbuff_t *tvb, proto_tree *tree, gint offset, gint cnt) { - proto_item *temp_item = NULL; - proto_tree *temp_tree = NULL; + proto_item *temp_item; + proto_tree *temp_tree; int i; if (0 == cnt) return offset; - temp_item = proto_tree_add_text(tree, tvb, offset, 4 * cnt, "Analog values conversation factors (%u)", cnt); - temp_tree = proto_item_add_subtree(temp_item, ett_conf_anconv); + temp_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4 * cnt, ett_conf_anconv, NULL, "Analog values conversation factors (%u)", cnt); /* Conversation factor for analog channels. Four bytes for each analog value. * MSB: see 'synphasor_conf_anconvnames' in 'synphasor_strings.c' @@ -1105,15 +1097,14 @@ static gint dissect_ANUNIT(tvbuff_t *tvb, proto_tree *tree, gint offset, gint cn /* used by 'dissect_config_frame()' to dissect the DIGUNIT field */ static gint dissect_DIGUNIT(tvbuff_t *tvb, proto_tree *tree, gint offset, gint cnt) { - proto_item *temp_item = NULL; - proto_tree *temp_tree = NULL; + proto_item *temp_item; + proto_tree *temp_tree; int i; if (0 == cnt) return offset; - temp_item = proto_tree_add_text(tree, tvb, offset, 4 * cnt, "Masks for digital status words (%u)", cnt); - temp_tree = proto_item_add_subtree(temp_item, ett_conf_dgmask); + temp_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4 * cnt, ett_conf_dgmask, NULL, "Masks for digital status words (%u)", cnt); /* Mask words for digital status words. Two 16-bit words for each digital word. The first * inidcates the normal status of the inputs, the second indicated the valid bits in @@ -1135,15 +1126,13 @@ static gint dissect_DIGUNIT(tvbuff_t *tvb, proto_tree *tree, gint offset, gint c /* used by 'dissect_config_frame()' to dissect the "channel name"-fields */ static gint dissect_CHNAM(tvbuff_t *tvb, proto_tree *tree, gint offset, gint cnt, const char *prefix) { - proto_item *temp_item = NULL; - proto_tree *temp_tree = NULL; + proto_tree *temp_tree; int i; if (0 == cnt) return offset; - temp_item = proto_tree_add_text(tree, tvb, offset, CHNAM_LEN * cnt, "%ss (%u)", prefix, cnt); - temp_tree = proto_item_add_subtree(temp_item, ett_conf_phnam); + temp_tree = proto_tree_add_subtree_format(tree, tvb, offset, CHNAM_LEN * cnt, ett_conf_phnam, NULL, "%ss (%u)", prefix, cnt); /* dissect the 'cnt' channel names */ for (i = 0; i < cnt; i++) { |