aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2014-07-08 14:47:17 -0400
committerMichael Mann <mmann78@netscape.net>2014-07-09 00:25:04 +0000
commit6691293a655645dcd98c9cb55618b8e41bef41a4 (patch)
tree495dccc6e708c0f22c129ccbe4dd495a1716f585 /epan/dissectors
parentcfee2019c63f33cff3564c2266c9586c86b61baa (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')
-rw-r--r--epan/dissectors/packet-s5066dts.c20
-rw-r--r--epan/dissectors/packet-s5066sis.c19
-rw-r--r--epan/dissectors/packet-sasp.c73
-rw-r--r--epan/dissectors/packet-sbc.c26
-rw-r--r--epan/dissectors/packet-sbus.c76
-rw-r--r--epan/dissectors/packet-sccp.c34
-rw-r--r--epan/dissectors/packet-scriptingservice.c13
-rw-r--r--epan/dissectors/packet-scsi-mmc.c9
-rw-r--r--epan/dissectors/packet-scsi-osd.c56
-rw-r--r--epan/dissectors/packet-scsi-sbc.c6
-rw-r--r--epan/dissectors/packet-scsi.c77
-rw-r--r--epan/dissectors/packet-sctp.c28
-rw-r--r--epan/dissectors/packet-sdp.c5
-rw-r--r--epan/dissectors/packet-selfm.c96
-rw-r--r--epan/dissectors/packet-sercosiii.c51
-rw-r--r--epan/dissectors/packet-ses.c10
-rw-r--r--epan/dissectors/packet-sflow.c32
-rw-r--r--epan/dissectors/packet-sip.c5
-rw-r--r--epan/dissectors/packet-sita.c4
-rw-r--r--epan/dissectors/packet-skinny.c137
-rw-r--r--epan/dissectors/packet-smb-logon.c10
-rw-r--r--epan/dissectors/packet-smb-pipe.c17
-rw-r--r--epan/dissectors/packet-smb.c344
-rw-r--r--epan/dissectors/packet-smb2.c284
-rw-r--r--epan/dissectors/packet-sml.c386
-rw-r--r--epan/dissectors/packet-smpp.c10
-rw-r--r--epan/dissectors/packet-sna.c24
-rw-r--r--epan/dissectors/packet-sndcp-xid.c29
-rw-r--r--epan/dissectors/packet-sndcp.c26
-rw-r--r--epan/dissectors/packet-socks.c3
-rw-r--r--epan/dissectors/packet-spdy.c5
-rw-r--r--epan/dissectors/packet-spice.c210
-rw-r--r--epan/dissectors/packet-srvloc.c7
-rw-r--r--epan/dissectors/packet-sscop.c4
-rw-r--r--epan/dissectors/packet-ssh.c28
-rw-r--r--epan/dissectors/packet-ssl-utils.c75
-rw-r--r--epan/dissectors/packet-ssl.c14
-rw-r--r--epan/dissectors/packet-starteam.c14
-rw-r--r--epan/dissectors/packet-stat.c45
-rw-r--r--epan/dissectors/packet-sua.c79
-rw-r--r--epan/dissectors/packet-synphasor.c47
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, &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, &parameter_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, &parameterName, "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, &parameterTree,
+ "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, &parameterTree,
+ "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, &parameter_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, &parameter_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, &parameter_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++) {