aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2014-06-24 23:24:14 -0400
committerMichael Mann <mmann78@netscape.net>2014-06-25 16:35:14 +0000
commit888f22de1669e75702c23fe377b1ed166bd89308 (patch)
tree87de06ca92a86a103ab5724da7f8b910422b7afc /epan
parent8ac87dccde4544e5397f0d741d2ec9f230971b43 (diff)
convert to proto_tree_add_subtree[_format]
Change-Id: I2ea1892b5963cc5578cbdd2b03029ca8424f2267 Reviewed-on: https://code.wireshark.org/review/2640 Tested-by: Michael Mann <mmann78@netscape.net> Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan')
-rw-r--r--epan/dissectors/packet-dcm.c38
-rw-r--r--epan/dissectors/packet-dcom-sysact.c56
-rw-r--r--epan/dissectors/packet-devicenet.c33
-rw-r--r--epan/dissectors/packet-dhcpv6.c18
-rw-r--r--epan/dissectors/packet-diameter_3gpp.c4
-rw-r--r--epan/dissectors/packet-dis.c167
-rw-r--r--epan/dissectors/packet-dlsw.c12
-rw-r--r--epan/dissectors/packet-dmp.c3
-rw-r--r--epan/dissectors/packet-dnp.c66
-rw-r--r--epan/dissectors/packet-dns.c19
-rw-r--r--epan/dissectors/packet-dplay.c58
-rw-r--r--epan/dissectors/packet-dpnss.c21
-rw-r--r--epan/dissectors/packet-drda.c8
-rw-r--r--epan/dissectors/packet-dsi.c7
-rw-r--r--epan/dissectors/packet-dtcp-ip.c7
-rw-r--r--epan/dissectors/packet-dtls.c8
-rw-r--r--epan/dissectors/packet-dtn.c25
-rw-r--r--epan/dissectors/packet-dtp.c13
-rw-r--r--epan/dissectors/packet-dtpt.c130
-rw-r--r--epan/dissectors/packet-dua.c5
-rw-r--r--epan/dissectors/packet-dvb-ait.c13
-rw-r--r--epan/dissectors/packet-dvb-bat.c5
-rw-r--r--epan/dissectors/packet-dvb-eit.c4
-rw-r--r--epan/dissectors/packet-dvb-nit.c5
-rw-r--r--epan/dissectors/packet-dvb-sdt.c5
-rw-r--r--epan/dissectors/packet-dvbci.c94
26 files changed, 288 insertions, 536 deletions
diff --git a/epan/dissectors/packet-dcm.c b/epan/dissectors/packet-dcm.c
index 363c5ab4e3..64713ee757 100644
--- a/epan/dissectors/packet-dcm.c
+++ b/epan/dissectors/packet-dcm.c
@@ -4674,8 +4674,8 @@ dissect_dcm_assoc_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gu
* Decode association header
*/
- proto_item *assoc_header_pitem = NULL;
- proto_tree *assoc_header_ptree = NULL; /* Tree for item details */
+ proto_item *assoc_header_pitem;
+ proto_tree *assoc_header_ptree; /* Tree for item details */
guint16 assoc_ver;
@@ -4692,8 +4692,7 @@ dissect_dcm_assoc_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gu
guint8 abort_source;
guint8 abort_reason;
- assoc_header_pitem = proto_tree_add_text(tree, tvb, offset, pdu_len, "Association Header");
- assoc_header_ptree = proto_item_add_subtree(assoc_header_pitem, ett_assoc_header);
+ assoc_header_ptree = proto_tree_add_subtree(tree, tvb, offset, pdu_len, ett_assoc_header, &assoc_header_pitem, "Association Header");
switch (pdu_type) {
case 1: /* Association Request */
@@ -4900,8 +4899,8 @@ dissect_dcm_assoc_item(tvbuff_t *tvb, proto_tree *tree, guint32 offset,
*
*/
- proto_tree *assoc_item_ptree = NULL; /* Tree for item details */
- proto_item *assoc_item_pitem = NULL;
+ proto_tree *assoc_item_ptree; /* Tree for item details */
+ proto_item *assoc_item_pitem;
dcm_uid_t *uid = NULL;
guint32 item_number = 0;
@@ -4919,8 +4918,7 @@ dissect_dcm_assoc_item(tvbuff_t *tvb, proto_tree *tree, guint32 offset,
item_type = tvb_get_guint8(tvb, offset);
item_len = tvb_get_ntohs(tvb, offset+2);
- assoc_item_pitem = proto_tree_add_text(tree, tvb, offset, item_len+4, "%s", pitem_prefix);
- assoc_item_ptree = proto_item_add_subtree(assoc_item_pitem, ett_subtree);
+ assoc_item_ptree = proto_tree_add_subtree(tree, tvb, offset, item_len+4, ett_subtree, &assoc_item_pitem, pitem_prefix);
proto_tree_add_uint(assoc_item_ptree, *hf_type, tvb, offset, 1, item_type);
proto_tree_add_uint(assoc_item_ptree, *hf_len, tvb, offset+2, 2, item_len);
@@ -5175,8 +5173,8 @@ dissect_dcm_pctx(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
In the response, set the accepted transfer syntax, if any
*/
- proto_tree *pctx_ptree = NULL; /* Tree for presentation context details */
- proto_item *pctx_pitem = NULL;
+ proto_tree *pctx_ptree; /* Tree for presentation context details */
+ proto_item *pctx_pitem;
dcm_state_pctx_t *pctx = NULL;
@@ -5207,8 +5205,7 @@ dissect_dcm_pctx(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
item_type = tvb_get_guint8(tvb, offset-4);
item_len = tvb_get_ntohs(tvb, offset-2);
- pctx_pitem = proto_tree_add_text(tree, tvb, offset-4, item_len+4, "%s", pitem_prefix);
- pctx_ptree = proto_item_add_subtree(pctx_pitem, ett_assoc_pctx);
+ pctx_ptree = proto_tree_add_subtree(tree, tvb, offset-4, item_len+4, ett_assoc_pctx, &pctx_pitem, pitem_prefix);
pctx_id = tvb_get_guint8(tvb, offset);
pctx_result = tvb_get_guint8(tvb, 2 + offset); /* only set in responses, otherwise reserved and 0x00 */
@@ -6306,18 +6303,20 @@ dissect_dcm_tag(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
if (is_sequence | is_item) {
if (global_dcm_seq_subtree) {
- /* Use different ett_ for Sequences & Items, so that fold/unfold state makes sense */
- seq_ptree = proto_item_add_subtree(tag_pitem, (is_sequence ? ett_dcm_data_seq : ett_dcm_data_item));
- if (global_dcm_tag_subtree) tag_ptree = seq_ptree;
- else tag_ptree = NULL;
+ /* Use different ett_ for Sequences & Items, so that fold/unfold state makes sense */
+ seq_ptree = proto_item_add_subtree(tag_pitem, (is_sequence ? ett_dcm_data_seq : ett_dcm_data_item));
+ if (global_dcm_tag_subtree)
+ tag_ptree = seq_ptree;
+ else
+ tag_ptree = NULL;
}
else {
seq_ptree = tree;
if (global_dcm_tag_subtree) {
- tag_ptree = proto_item_add_subtree(tag_pitem, ett_dcm_data_tag);
+ tag_ptree = proto_item_add_subtree(tag_pitem, ett_dcm_data_tag);
}
else {
- tag_ptree = NULL;
+ tag_ptree = NULL;
}
}
}
@@ -6798,8 +6797,7 @@ dissect_dcm_pdu_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
pdv_len = tvb_get_ntohl(tvb, offset);
- pdv_pitem = proto_tree_add_text(tree, tvb, offset, pdv_len+4, "PDV");
- pdv_ptree = proto_item_add_subtree(pdv_pitem, ett_dcm_data_pdv);
+ pdv_ptree = proto_tree_add_subtree(tree, tvb, offset, pdv_len+4, ett_dcm_data_pdv, &pdv_pitem, "PDV");
pdvlen_item = proto_tree_add_item(pdv_ptree, hf_dcm_pdv_len, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
diff --git a/epan/dissectors/packet-dcom-sysact.c b/epan/dissectors/packet-dcom-sysact.c
index d3a2ce4d4f..f3dc972034 100644
--- a/epan/dissectors/packet-dcom-sysact.c
+++ b/epan/dissectors/packet-dcom-sysact.c
@@ -312,9 +312,7 @@ dissect_dcom_ActivationPropertiesCustomerHdr(tvbuff_t *tvb, gint offset, packet_
proto_item *sub_item;
proto_tree *sub_tree;
- sub_item = proto_tree_add_text(tree, tvb, offset, 0, "CustomHeader");
-
- sub_tree = proto_item_add_subtree(sub_item, ett_commonheader);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_commonheader, &sub_item, "CustomHeader");
old_offset = offset;
offset = dissect_TypeSzCommPrivHdr(tvb, offset, pinfo, sub_tree, di, drep);
@@ -388,8 +386,7 @@ dissect_dcom_ActivationPropertiesBody(tvbuff_t *tvb, gint offset, packet_info *p
min_idx = MIN(pg->id_idx, pg->size_idx);
}
- sub_item = proto_tree_add_text(tree, tvb, offset, 0, "Properties");
- sub_tree = proto_item_add_subtree(sub_item, ett_properties);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_properties, &sub_item, "Properties");
old_offset = offset;
for (i = 0; i < min_idx; i++) {
@@ -442,8 +439,7 @@ dissect_dcom_ContextMarshaler(tvbuff_t *tvb, gint offset, packet_info *pinfo,
guint32 u32Count;
old_offset = offset;
- sub_item = proto_tree_add_text(tree, tvb, offset, 0, "Context");
- sub_tree = proto_item_add_subtree(sub_item, ett_dcom_context);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_dcom_context, &sub_item, "Context");
offset = dissect_dcom_COMVERSION(tvb, offset, pinfo, sub_tree, di, drep,
NULL, NULL);
@@ -478,7 +474,6 @@ static int
dissect_dcom_SpecialSystemProperties(tvbuff_t *tvb, gint offset, packet_info *pinfo,
proto_tree *tree, dcerpc_info *di, guint8 *drep, gint size)
{
- proto_item *sub_item, *it;
proto_tree *sub_tree, *tr;
gint old_offset, len, i;
@@ -489,8 +484,7 @@ dissect_dcom_SpecialSystemProperties(tvbuff_t *tvb, gint offset, packet_info *pi
size = -1;
}
- sub_item = proto_tree_add_text(tree, tvb, offset, size, "SpecialSystemProperties");
- sub_tree = proto_item_add_subtree(sub_item, ett_dcom_spclsysprop);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, size, ett_dcom_spclsysprop, NULL, "SpecialSystemProperties");
offset = dissect_TypeSzCommPrivHdr(tvb, offset, pinfo, sub_tree, di, drep);
@@ -520,9 +514,8 @@ dissect_dcom_SpecialSystemProperties(tvbuff_t *tvb, gint offset, packet_info *pi
* hf_sysact_spsysprop_hwnd, NULL);
*
*/
- it = proto_tree_add_text(sub_tree, tvb, offset, sizeof(guint32)*8,
- "Reserved: 8 DWORDs");
- tr = proto_item_add_subtree(it, ett_dcom_reserved);
+ tr = proto_tree_add_subtree(sub_tree, tvb, offset, sizeof(guint32)*8,
+ ett_dcom_reserved, NULL, "Reserved: 8 DWORDs");
for (i = 0; i < 8; i++) {
offset = dissect_dcom_DWORD(tvb, offset, pinfo, tr, di, drep,
hf_sysact_res, NULL);
@@ -565,7 +558,6 @@ static int
dissect_dcom_InstantiationInfo(tvbuff_t *tvb, gint offset, packet_info *pinfo,
proto_tree *tree, dcerpc_info *di, guint8 *drep, gint size)
{
- proto_item *sub_item;
proto_tree *sub_tree;
gint old_offset, len;
@@ -576,8 +568,7 @@ dissect_dcom_InstantiationInfo(tvbuff_t *tvb, gint offset, packet_info *pinfo,
size = -1;
}
- sub_item = proto_tree_add_text(tree, tvb, offset, size, "InstantiationInfo");
- sub_tree = proto_item_add_subtree(sub_item, ett_dcom_instantianinfo);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, size, ett_dcom_instantianinfo, NULL, "InstantiationInfo");
offset = dissect_TypeSzCommPrivHdr(tvb, offset, pinfo, sub_tree, di, drep);
@@ -645,7 +636,6 @@ static int
dissect_dcom_ActivationContextInfo(tvbuff_t *tvb, gint offset, packet_info *pinfo,
proto_tree *tree, dcerpc_info *di, guint8 *drep, gint size)
{
- proto_item *sub_item;
proto_tree *sub_tree;
gint old_offset, len;
@@ -656,8 +646,7 @@ dissect_dcom_ActivationContextInfo(tvbuff_t *tvb, gint offset, packet_info *pinf
size = -1;
}
- sub_item = proto_tree_add_text(tree, tvb, offset, size, "ActivationContextInfo");
- sub_tree = proto_item_add_subtree(sub_item, ett_dcom_actctxinfo);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, size, ett_dcom_actctxinfo, NULL, "ActivationContextInfo");
offset = dissect_TypeSzCommPrivHdr(tvb, offset, pinfo, sub_tree, di, drep);
@@ -739,7 +728,6 @@ static int
dissect_dcom_SecurtiyInfo(tvbuff_t *tvb, gint offset, packet_info *pinfo,
proto_tree *tree, dcerpc_info *di, guint8 *drep, gint size)
{
- proto_item *sub_item;
proto_tree *sub_tree;
gint old_offset, len;
@@ -750,8 +738,7 @@ dissect_dcom_SecurtiyInfo(tvbuff_t *tvb, gint offset, packet_info *pinfo,
size = -1;
}
- sub_item = proto_tree_add_text(tree, tvb, offset, size, "SecurityInfo");
- sub_tree = proto_item_add_subtree(sub_item, ett_dcom_securityinfo);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, size, ett_dcom_securityinfo, NULL, "SecurityInfo");
offset = dissect_TypeSzCommPrivHdr(tvb, offset, pinfo, sub_tree, di ,drep);
@@ -782,7 +769,6 @@ static int
dissect_dcom_LocationInfo(tvbuff_t *tvb, gint offset, packet_info *pinfo,
proto_tree *tree, dcerpc_info *di, guint8 *drep, gint size)
{
- proto_item *sub_item;
proto_tree *sub_tree;
gint old_offset, len;
@@ -793,8 +779,7 @@ dissect_dcom_LocationInfo(tvbuff_t *tvb, gint offset, packet_info *pinfo,
size = -1;
}
- sub_item = proto_tree_add_text(tree, tvb, offset, size, "LocationInfo");
- sub_tree = proto_item_add_subtree(sub_item, ett_dcom_locationinfo);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, size, ett_dcom_locationinfo, NULL, "LocationInfo");
offset = dissect_TypeSzCommPrivHdr(tvb, offset, pinfo, sub_tree, di, drep);
@@ -857,8 +842,7 @@ dissect_dcom_customREMOTE_REQUEST_SCM_INFO(tvbuff_t *tvb, gint offset,
return offset;
}
- sub_item = proto_tree_add_text(tree, tvb, offset, 0, "RemoteRequest");
- sub_tree = proto_item_add_subtree(sub_item, ett_dcom_rmtrqst);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_dcom_rmtrqst, &sub_item, "RemoteRequest");
old_offset = offset;
offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep,
@@ -878,7 +862,6 @@ static int
dissect_dcom_ScmRqstInfo(tvbuff_t *tvb, gint offset, packet_info *pinfo,
proto_tree *tree, dcerpc_info *di, guint8 *drep, gint size)
{
- proto_item *sub_item;
proto_tree *sub_tree;
gint old_offset, len;
@@ -889,8 +872,7 @@ dissect_dcom_ScmRqstInfo(tvbuff_t *tvb, gint offset, packet_info *pinfo,
size = -1;
}
- sub_item = proto_tree_add_text(tree, tvb, offset, size, "ScmRequestInfo");
- sub_tree = proto_item_add_subtree(sub_item, ett_dcom_scmrqstinfo);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, size, ett_dcom_scmrqstinfo, NULL, "ScmRequestInfo");
offset = dissect_TypeSzCommPrivHdr(tvb, offset, pinfo, sub_tree, di, drep);
@@ -989,7 +971,6 @@ static int
dissect_dcom_PropsOutInfo(tvbuff_t *tvb, gint offset, packet_info *pinfo,
proto_tree *tree, dcerpc_info *di, guint8 *drep, gint size)
{
- proto_item *sub_item;
proto_tree *sub_tree;
gint old_offset, len;
@@ -1000,8 +981,7 @@ dissect_dcom_PropsOutInfo(tvbuff_t *tvb, gint offset, packet_info *pinfo,
size = -1;
}
- sub_item = proto_tree_add_text(tree, tvb, offset, size, "PropertiesOutput");
- sub_tree = proto_item_add_subtree(sub_item, ett_dcom_propsoutput);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, size, ett_dcom_propsoutput, NULL, "PropertiesOutput");
offset = dissect_TypeSzCommPrivHdr(tvb, offset, pinfo, sub_tree, di, drep);
@@ -1052,8 +1032,7 @@ dissect_dcom_OxidBindings(tvbuff_t *tvb, gint offset,
}
old_offset = offset;
- sub_item = proto_tree_add_text(tree, tvb, offset, 0, "OxidBindings");
- sub_tree = proto_item_add_subtree(sub_item, ett_dcom_oxidbinding);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_dcom_oxidbinding, &sub_item, "OxidBindings");
offset = dissect_dcom_dcerpc_array_size(tvb, offset, pinfo, sub_tree, di, drep, NULL);
offset = dissect_dcom_DUALSTRINGARRAY(tvb, offset, pinfo, sub_tree, di, drep,
@@ -1076,8 +1055,7 @@ dissect_dcom_customREMOTE_REPLY_SCM_INFO(tvbuff_t *tvb, gint offset,
return offset;
}
- sub_item = proto_tree_add_text(tree, tvb, offset, 0, "RemoteReply");
- sub_tree = proto_item_add_subtree(sub_item, ett_dcom_rmtresp);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_dcom_rmtresp, &sub_item, "RemoteReply");
old_offset = offset;
offset = dissect_dcom_ID(tvb, offset, pinfo, sub_tree, di, drep,
@@ -1102,7 +1080,6 @@ static int
dissect_dcom_ScmReplyInfo(tvbuff_t *tvb, gint offset, packet_info *pinfo,
proto_tree *tree, dcerpc_info *di, guint8 *drep, gint size)
{
- proto_item *sub_item;
proto_tree *sub_tree;
gint old_offset, len;
@@ -1113,8 +1090,7 @@ dissect_dcom_ScmReplyInfo(tvbuff_t *tvb, gint offset, packet_info *pinfo,
size = -1;
}
- sub_item = proto_tree_add_text(tree, tvb, offset, size, "ScmReplyInfo");
- sub_tree = proto_item_add_subtree(sub_item, ett_dcom_scmrespinfo);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, size, ett_dcom_scmrespinfo, NULL, "ScmReplyInfo");
offset = dissect_TypeSzCommPrivHdr(tvb, offset, pinfo, sub_tree, di, drep);
diff --git a/epan/dissectors/packet-devicenet.c b/epan/dissectors/packet-devicenet.c
index b5c669754e..a8a8264fef 100644
--- a/epan/dissectors/packet-devicenet.c
+++ b/epan/dissectors/packet-devicenet.c
@@ -270,13 +270,11 @@ static const value_string devicenet_io_attribute_vals[] = {
static gint body_type_8_over_8_dissection(guint8 data_length, proto_tree *devicenet_tree,
tvbuff_t *tvb, packet_info *pinfo _U_, gint offset)
{
- proto_item *devicenet_8_8;
guint16 class_id, instance, attribute;
attribute_info_t* att_info;
gint start_offset = offset, length;
- devicenet_8_8 = proto_tree_add_text(devicenet_tree, tvb, offset, -1, "DeviceNet 8/8");
- devicenet_tree = proto_item_add_subtree(devicenet_8_8, ett_devicenet_8_8);
+ devicenet_tree = proto_tree_add_subtree(devicenet_tree, tvb, offset, -1, ett_devicenet_8_8, NULL, "DeviceNet 8/8");
proto_tree_add_item(devicenet_tree, hf_devicenet_class8, tvb, offset, 1, ENC_LITTLE_ENDIAN);
class_id = tvb_get_guint8(tvb, offset);
@@ -310,12 +308,10 @@ static gint body_type_8_over_8_dissection(guint8 data_length, proto_tree *device
static gint body_type_8_over_16_dissection(guint8 data_length, proto_tree *devicenet_tree,
tvbuff_t *tvb, packet_info *pinfo _U_, gint offset)
{
- proto_item *devicenet_8_16;
guint16 class_id, instance, attribute;
attribute_info_t* att_info;
- devicenet_8_16 = proto_tree_add_text(devicenet_tree, tvb, offset, -1, "DeviceNet 8/16");
- devicenet_tree = proto_item_add_subtree(devicenet_8_16, ett_devicenet_8_16);
+ devicenet_tree = proto_tree_add_subtree(devicenet_tree, tvb, offset, -1, ett_devicenet_8_16, NULL, "DeviceNet 8/16");
proto_tree_add_item(devicenet_tree, hf_devicenet_class8, tvb, offset, 1, ENC_LITTLE_ENDIAN);
class_id = tvb_get_guint8(tvb, offset);
@@ -341,12 +337,10 @@ static gint body_type_8_over_16_dissection(guint8 data_length, proto_tree *devic
static gint body_type_16_over_8_dissection(guint8 data_length, proto_tree *devicenet_tree, tvbuff_t *tvb,
packet_info *pinfo _U_, gint offset)
{
- proto_item *devicenet_16_8;
guint16 class_id, instance, attribute;
attribute_info_t* att_info;
- devicenet_16_8 = proto_tree_add_text(devicenet_tree, tvb, offset, -1, "DeviceNet 16/8");
- devicenet_tree = proto_item_add_subtree(devicenet_16_8, ett_devicenet_16_8);
+ devicenet_tree = proto_tree_add_subtree(devicenet_tree, tvb, offset, -1, ett_devicenet_16_8, NULL, "DeviceNet 16/8");
proto_tree_add_item(devicenet_tree, hf_devicenet_class16, tvb, offset, 2, ENC_LITTLE_ENDIAN);
class_id = tvb_get_letohs(tvb, offset);
@@ -373,13 +367,10 @@ static gint body_type_16_over_8_dissection(guint8 data_length, proto_tree *devic
static gint body_type_16_over_16_dissection(guint8 data_length, proto_tree *devicenet_tree, tvbuff_t *tvb,
packet_info *pinfo _U_, gint offset)
{
- proto_item *devicenet_16_16;
-
guint16 class_id, instance, attribute;
attribute_info_t* att_info;
- devicenet_16_16 = proto_tree_add_text(devicenet_tree, tvb, offset, 4, "DeviceNet 16/16");
- devicenet_tree = proto_item_add_subtree(devicenet_16_16, ett_devicenet_16_16);
+ devicenet_tree = proto_tree_add_subtree(devicenet_tree, tvb, offset, 4, ett_devicenet_16_16, NULL, "DeviceNet 16/16");
proto_tree_add_item(devicenet_tree, hf_devicenet_class16, tvb, offset, 2, ENC_LITTLE_ENDIAN);
class_id = tvb_get_letohs(tvb, offset);
@@ -410,7 +401,7 @@ struct can_identifier
static int dissect_devicenet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
{
- proto_item *ti, *can_id_item, *devicenet_contents,
+ proto_item *ti, *can_id_item,
*msg_id_item, *service_item;
proto_tree *devicenet_tree, *can_tree, *content_tree;
@@ -436,8 +427,7 @@ static int dissect_devicenet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
ti = proto_tree_add_item(tree, proto_devicenet, tvb, offset, -1, ENC_NA);
devicenet_tree = proto_item_add_subtree(ti, ett_devicenet);
- ti = proto_tree_add_text(devicenet_tree, tvb, 0, 0, "CAN Identifier: 0x%04x", can_id.id);
- can_tree = proto_item_add_subtree(ti, ett_devicenet_can);
+ can_tree = proto_tree_add_subtree_format(devicenet_tree, tvb, 0, 0, ett_devicenet_can, NULL, "CAN Identifier: 0x%04x", can_id.id);
can_id_item = proto_tree_add_uint(can_tree, hf_devicenet_can_id, tvb, 0, 0, can_id.id);
PROTO_ITEM_SET_GENERATED(can_id_item);
@@ -482,8 +472,7 @@ static int dissect_devicenet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
*src_address = (guint8)((can_id.id & MESSAGE_GROUP_2_MAC_ID_MASK) >> 3);
SET_ADDRESS(&pinfo->src, AT_DEVICENET, 1, (const void*)src_address);
- devicenet_contents = proto_tree_add_text(devicenet_tree, tvb, offset, -1, "Contents");
- content_tree = proto_item_add_subtree(devicenet_contents, ett_devicenet_contents);
+ content_tree = proto_tree_add_subtree(devicenet_tree, tvb, offset, -1, ett_devicenet_contents, NULL, "Contents");
switch (message_id)
{
@@ -551,8 +540,7 @@ static int dissect_devicenet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
{
col_set_str(pinfo->cinfo, COL_INFO, "Group 3 Message Fragment");
- devicenet_contents = proto_tree_add_text(devicenet_tree, tvb, offset, -1, "Fragmentation");
- content_tree = proto_item_add_subtree(devicenet_contents, ett_devicenet_contents);
+ content_tree = proto_tree_add_subtree(devicenet_tree, tvb, offset, -1, ett_devicenet_contents, NULL, "Fragmentation");
proto_tree_add_item(content_tree, hf_devicenet_fragment_type, tvb, offset, 1, ENC_NA);
proto_tree_add_item(content_tree, hf_devicenet_fragment_count, tvb, offset, 1, ENC_NA);
@@ -566,10 +554,9 @@ static int dissect_devicenet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
{
service_rr = tvb_get_guint8(tvb, offset);
- devicenet_contents = proto_tree_add_text(devicenet_tree, tvb, offset, -1, "Service: %s (%s)",
- val_to_str_const(service_rr & CIP_SC_MASK, devicenet_service_code_vals, "Unknown"),
+ content_tree = proto_tree_add_subtree_format(devicenet_tree, tvb, offset, -1, ett_devicenet_contents, NULL,
+ "Service: %s (%s)", val_to_str_const(service_rr & CIP_SC_MASK, devicenet_service_code_vals, "Unknown"),
service_rr & CIP_SC_RESPONSE_MASK ? "Response" : "Request");
- content_tree = proto_item_add_subtree(devicenet_contents, ett_devicenet_contents);
proto_tree_add_item(content_tree, hf_devicenet_rr_bit, tvb, offset, 1, ENC_NA);
service_item = proto_tree_add_item(content_tree, hf_devicenet_service_code, tvb, offset, 1, ENC_NA);
diff --git a/epan/dissectors/packet-dhcpv6.c b/epan/dissectors/packet-dhcpv6.c
index 66d493ce9c..59560096a7 100644
--- a/epan/dissectors/packet-dhcpv6.c
+++ b/epan/dissectors/packet-dhcpv6.c
@@ -1286,10 +1286,9 @@ dhcpv6_option(tvbuff_t *tvb, packet_info *pinfo, proto_tree *bp_tree,
return 0;
}
- option_item = proto_tree_add_text(bp_tree, tvb, off, 4 + optlen,
- "%s", val_to_str_ext(opttype, &opttype_vals_ext, "DHCP option %u"));
+ subtree = proto_tree_add_subtree(bp_tree, tvb, off, 4 + optlen, ett_dhcpv6_option, &option_item,
+ val_to_str_ext(opttype, &opttype_vals_ext, "DHCP option %u"));
- subtree = proto_item_add_subtree(option_item, ett_dhcpv6_option);
proto_tree_add_item(subtree, hf_option_type, tvb, off, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(subtree, hf_option_length, tvb, off + 2, 2, ENC_BIG_ENDIAN);
off += 4;
@@ -1368,9 +1367,8 @@ dhcpv6_option(tvbuff_t *tvb, packet_info *pinfo, proto_tree *bp_tree,
while (optlen > temp_optlen) {
subopt_type = tvb_get_ntohs(tvb, off + temp_optlen);
subopt_len = tvb_get_ntohs(tvb, off + 2 + temp_optlen);
- ti = proto_tree_add_text(subtree, tvb, off+temp_optlen, 4 + subopt_len,
- "%s", val_to_str(subopt_type, ntp_server_opttype_vals, "NTP Server suboption %u"));
- subtree_2 = proto_item_add_subtree(ti, ett_dhcpv6_netserver_option);
+ subtree_2 = proto_tree_add_subtree(subtree, tvb, off+temp_optlen, 4 + subopt_len, ett_dhcpv6_netserver_option, &ti,
+ val_to_str(subopt_type, ntp_server_opttype_vals, "NTP Server suboption %u"));
proto_tree_add_item(subtree_2, hf_option_ntpserver_type, tvb, off + temp_optlen, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(subtree_2, hf_option_ntpserver_length, tvb, off + temp_optlen + 2, 2, ENC_BIG_ENDIAN);
temp_optlen += 4;
@@ -1569,9 +1567,8 @@ dhcpv6_option(tvbuff_t *tvb, packet_info *pinfo, proto_tree *bp_tree,
while ((optlen - 4 - optoffset) > 0) {
int olen = tvb_get_ntohs(tvb, off + optoffset + 6);
- ti = proto_tree_add_text(subtree, tvb, off + optoffset + 4,
- 4 + olen, "option");
- subtree_2 = proto_item_add_subtree(ti, ett_dhcpv6_option_vsoption);
+ subtree_2 = proto_tree_add_subtree(subtree, tvb, off + optoffset + 4,
+ 4 + olen, ett_dhcpv6_option_vsoption, NULL, "option");
proto_tree_add_item(subtree_2, hf_vendoropts_enterprise_option_code, tvb, off + optoffset + 4, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(subtree_2, hf_vendoropts_enterprise_option_length, tvb, off + optoffset + 6, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(subtree_2, hf_vendoropts_enterprise_option_data, tvb, off + optoffset + 8, olen, ENC_NA);
@@ -2009,8 +2006,7 @@ dissect_dhcpv6_bulk_leasequery_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree
col_add_fstr(pinfo->cinfo, COL_INFO, "%s, Transaction ID: %5u",
val_to_str_ext_const(msg_type, &msgtype_vals_ext, "Unknown"), trans_id);
- ti = proto_tree_add_text(bulk_tree, tvb, offset, -1, "DHCPv6 Options");
- option_tree = proto_item_add_subtree(ti, ett_dhcpv6_bulk_leasequery_options);
+ option_tree = proto_tree_add_subtree(bulk_tree, tvb, offset, -1, ett_dhcpv6_bulk_leasequery_options, NULL, "DHCPv6 Options");
end = size + 2;
while ((offset < end) && !at_end)
offset += dhcpv6_option(tvb, pinfo, option_tree, FALSE, offset,
diff --git a/epan/dissectors/packet-diameter_3gpp.c b/epan/dissectors/packet-diameter_3gpp.c
index 74370a53ab..9d14cd33a8 100644
--- a/epan/dissectors/packet-diameter_3gpp.c
+++ b/epan/dissectors/packet-diameter_3gpp.c
@@ -486,13 +486,11 @@ dissect_diameter_3gpp_feature_list(tvbuff_t *tvb, packet_info *pinfo _U_, proto_
static int
dissect_diameter_3gpp_path(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_) {
- proto_item* item;
proto_tree *sub_tree;
int offset = 0, comma_offset;
int end_offset = tvb_length(tvb) - 1;
- item = proto_tree_add_text(tree, tvb, offset, -1,"Paths");
- sub_tree = proto_item_add_subtree(item,diameter_3gpp_path_ett);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, -1, diameter_3gpp_path_ett, NULL, "Paths");
while (offset < end_offset){
comma_offset = tvb_find_guint8(tvb, offset, -1, ',');
diff --git a/epan/dissectors/packet-dis.c b/epan/dissectors/packet-dis.c
index b9d9a0e77f..2e1aa051b1 100644
--- a/epan/dissectors/packet-dis.c
+++ b/epan/dissectors/packet-dis.c
@@ -3791,11 +3791,9 @@ static guint32 entityDomain;
*/
static int dissect_DIS_FIELDS_BURST_DESCRIPTOR(tvbuff_t *tvb, proto_tree *tree, int offset)
{
- proto_item *ti;
proto_tree *sub_tree;
- ti = proto_tree_add_text(tree, tvb, offset, 16, "Burst Descriptor");
- sub_tree = proto_item_add_subtree(ti, ett_burst_descriptor);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 16, ett_burst_descriptor, NULL, "Burst Descriptor");
offset = dissect_DIS_FIELDS_ENTITY_TYPE(tvb, sub_tree, offset, "Munition");
@@ -3826,8 +3824,7 @@ static int dissect_DIS_FIELDS_CLOCK_TIME(tvbuff_t *tvb, proto_tree *tree, int of
guint isAbsolute = 0;
nstime_t tv;
- ti = proto_tree_add_text(tree, tvb, offset, 8, "%s", clock_name);
- sub_tree = proto_item_add_subtree(ti, ett_clock_time);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 8, ett_clock_time, NULL, clock_name);
hour = tvb_get_ntohl(tvb, offset);
uintVal = tvb_get_ntohl(tvb, offset+4);
@@ -3859,12 +3856,10 @@ static int dissect_DIS_FIELDS_CLOCK_TIME(tvbuff_t *tvb, proto_tree *tree, int of
static int dissect_DIS_FIELDS_ENTITY_TYPE(tvbuff_t *tvb, proto_tree *tree, int offset, const char* entity_name)
{
- proto_item *ti;
proto_tree *sub_tree;
int hf_cat = hf_dis_category;
- ti = proto_tree_add_text(tree, tvb, offset, 8, "%s", entity_name);
- sub_tree = proto_item_add_subtree(ti, ett_entity_type);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 8, ett_entity_type, NULL, entity_name);
proto_tree_add_item(sub_tree, hf_dis_entityKind, tvb, offset, 1, ENC_BIG_ENDIAN);
entityKind = tvb_get_guint8(tvb, offset);
@@ -3916,11 +3911,9 @@ static int dissect_DIS_FIELDS_ENTITY_TYPE(tvbuff_t *tvb, proto_tree *tree, int o
static int dissect_DIS_FIELDS_RADIO_ENTITY_TYPE(tvbuff_t *tvb, proto_tree *tree, int offset, const char* entity_name)
{
- proto_item *ti;
proto_tree *sub_tree;
- ti = proto_tree_add_text(tree, tvb, offset, 8, "%s", entity_name);
- sub_tree = proto_item_add_subtree(ti, ett_radio_entity_type);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 8, ett_radio_entity_type, NULL, entity_name);
proto_tree_add_item(sub_tree, hf_dis_entityKind, tvb, offset, 1, ENC_BIG_ENDIAN);
entityKind = tvb_get_guint8(tvb, offset);
@@ -3947,13 +3940,11 @@ static int dissect_DIS_FIELDS_RADIO_ENTITY_TYPE(tvbuff_t *tvb, proto_tree *tree,
static int dissect_DIS_FIELDS_MODULATION_TYPE(tvbuff_t *tvb, proto_tree *tree, int offset, guint16* systemModulation)
{
- proto_item *ti;
proto_tree *sub_tree;
guint32 majorModulation;
int hf_mod_detail;
- ti = proto_tree_add_text(tree, tvb, offset, 8, "Modulation Type");
- sub_tree = proto_item_add_subtree(ti, ett_modulation_type);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 8, ett_modulation_type, NULL, "Modulation Type");
proto_tree_add_item(sub_tree, hf_dis_spread_spectrum_usage, tvb, offset, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(sub_tree, hf_dis_frequency_hopping, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -4003,11 +3994,9 @@ static int dissect_DIS_FIELDS_MODULATION_TYPE(tvbuff_t *tvb, proto_tree *tree, i
static int dissect_DIS_FIELDS_EVENT_ID(tvbuff_t *tvb, proto_tree *tree, int offset, const char* event_name)
{
- proto_item *ti;
proto_tree *sub_tree;
- ti = proto_tree_add_text(tree, tvb, offset, 6, "%s", event_name);
- sub_tree = proto_item_add_subtree(ti, ett_event_id);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 6, ett_event_id, NULL, event_name);
proto_tree_add_item(sub_tree, hf_dis_site, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
@@ -4024,11 +4013,9 @@ static int dissect_DIS_FIELDS_EVENT_ID(tvbuff_t *tvb, proto_tree *tree, int offs
static int dissect_DIS_FIELDS_SIMULATION_ADDRESS(tvbuff_t *tvb, proto_tree *tree, int offset, const char* sim_name)
{
- proto_item *ti;
proto_tree *sub_tree;
- ti = proto_tree_add_text(tree, tvb, offset, 4, "%s", sim_name);
- sub_tree = proto_item_add_subtree(ti, ett_simulation_address);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 4, ett_simulation_address, NULL, sim_name);
proto_tree_add_item(sub_tree, hf_dis_site, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
@@ -4041,11 +4028,9 @@ static int dissect_DIS_FIELDS_SIMULATION_ADDRESS(tvbuff_t *tvb, proto_tree *tree
static int dissect_DIS_FIELDS_MOD_PARAMS_CCTT_SINCGARS(tvbuff_t *tvb, proto_tree *tree, int offset)
{
- proto_item *ti;
proto_tree *sub_tree;
- ti = proto_tree_add_text(tree, tvb, offset, 16, "Modulation Parameters");
- sub_tree = proto_item_add_subtree(ti, ett_modulation_parameters);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 16, ett_modulation_parameters, NULL, "Modulation Parameters");
proto_tree_add_item(sub_tree, hf_dis_mod_param_fh_net_id, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
@@ -4079,11 +4064,9 @@ static int dissect_DIS_FIELDS_MOD_PARAMS_CCTT_SINCGARS(tvbuff_t *tvb, proto_tree
static int dissect_DIS_FIELDS_MOD_PARAMS_JTIDS_MIDS(tvbuff_t *tvb, proto_tree *tree, int offset)
{
- proto_item *ti;
proto_tree *sub_tree;
- ti = proto_tree_add_text(tree, tvb, offset, 16, "Modulation Parameters");
- sub_tree = proto_item_add_subtree(ti, ett_modulation_parameters);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 16, ett_modulation_parameters, NULL, "Modulation Parameters");
proto_tree_add_item(sub_tree, hf_dis_mod_param_ts_allocation_mode, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
@@ -4106,12 +4089,10 @@ static int dissect_DIS_FIELDS_MOD_PARAMS_JTIDS_MIDS(tvbuff_t *tvb, proto_tree *t
static gint parse_DIS_FIELDS_SIGNAL_LINK16_NETWORK_HEADER(tvbuff_t *tvb, proto_tree *tree,
gint offset, guint8* messageType)
{
- proto_item *ti;
proto_tree *sub_tree;
nstime_t tv;
- ti = proto_tree_add_text(tree, tvb, offset, 16, "Link 16 Network Header");
- sub_tree = proto_item_add_subtree(ti, ett_dis_signal_link16_network_header);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 16, ett_dis_signal_link16_network_header, NULL, "Link 16 Network Header");
proto_tree_add_item(sub_tree, hf_dis_signal_link16_npg, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
@@ -4234,14 +4215,12 @@ static gint parse_Link16_Message_Data(proto_tree *tree, tvbuff_t *tvb, gint offs
*/
static gint parseField_DIS_FIELDS_FIXED_DATUM(tvbuff_t *tvb, proto_tree *tree, gint offset, const char* field_name, guint32 num_items)
{
- proto_item *ti;
proto_tree *sub_tree;
guint32 i;
for (i = 0; i < num_items; i++)
{
- ti = proto_tree_add_text(tree, tvb, offset, 8, "%s", field_name);
- sub_tree = proto_item_add_subtree(ti, ett_fixed_datum);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 8, ett_fixed_datum, NULL, field_name);
proto_tree_add_item(sub_tree, hf_dis_datum_id, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
@@ -4261,8 +4240,7 @@ static gint parseField_DIS_FIELDS_VARIABLE_DATUM(tvbuff_t *tvb, proto_tree *tree
for (i = 0; i < num_items; i++)
{
- ti = proto_tree_add_text(tree, tvb, offset, -1, "%s", field_name);
- sub_tree = proto_item_add_subtree(ti, ett_fixed_datum);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_fixed_datum, &ti, field_name);
proto_tree_add_item(sub_tree, hf_dis_datum_id, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
@@ -4286,12 +4264,10 @@ static gint parseField_DIS_FIELDS_VARIABLE_DATUM(tvbuff_t *tvb, proto_tree *tree
static gint parseField_DIS_FIELDS_FIXED_DATUM_IDS(tvbuff_t *tvb, proto_tree *tree, gint offset, const char* field_name, guint32 num_items)
{
- proto_item *ti;
proto_tree *sub_tree;
guint32 i;
- ti = proto_tree_add_text(tree, tvb, offset, num_items*4, "%s", field_name);
- sub_tree = proto_item_add_subtree(ti, ett_fixed_datum);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, num_items*4, ett_fixed_datum, NULL, field_name);
for (i = 0; i < num_items; i++)
{
@@ -4309,11 +4285,9 @@ static gint parseField_DIS_FIELDS_VARIABLE_DATUM_IDS(tvbuff_t *tvb, proto_tree *
static gint parseField_TRACK_JAM(tvbuff_t *tvb, proto_tree *tree, gint offset, const char* entity_name)
{
- proto_item *ti;
proto_tree *sub_tree;
- ti = proto_tree_add_text(tree, tvb, offset, 8, "%s", entity_name);
- sub_tree = proto_item_add_subtree(ti, ett_trackjam);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 8, ett_trackjam, NULL, entity_name);
proto_tree_add_item(sub_tree, hf_dis_entity_id_site, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
@@ -4370,7 +4344,6 @@ static gint dissect_DIS_FIELDS_VP_ATTACHED_PART(tvbuff_t *tvb, proto_tree *tree,
static gint dissect_DIS_FIELDS_VP_ENTITY_OFFSET(tvbuff_t *tvb, proto_tree *tree, gint offset)
{
- proto_item *ti;
proto_tree *sub_tree;
proto_tree_add_item(tree, hf_dis_vp_offset_type, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -4379,8 +4352,7 @@ static gint dissect_DIS_FIELDS_VP_ENTITY_OFFSET(tvbuff_t *tvb, proto_tree *tree,
proto_tree_add_item(tree, hf_dis_padding, tvb, offset, 2, ENC_NA);
offset += 2;
- ti = proto_tree_add_text(tree, tvb, offset, 12, "Offset");
- sub_tree = proto_item_add_subtree(ti, ett_offset_vector);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 12, ett_offset_vector, NULL, "Offset");
proto_tree_add_item(sub_tree, hf_dis_vp_offset_x, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
@@ -4535,8 +4507,7 @@ static int dissect_DIS_PARSER_ENTITY_STATE_PDU(tvbuff_t *tvb, packet_info *pinfo
offset = dissect_DIS_FIELDS_ENTITY_TYPE(tvb, tree, offset, "Alternative Entity Type");
- ti = proto_tree_add_text(tree, tvb, offset, 12, "Entity Linear Velocity");
- sub_tree = proto_item_add_subtree(ti, ett_entity_linear_velocity);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 12, ett_entity_linear_velocity, NULL, "Entity Linear Velocity");
proto_tree_add_item(sub_tree, hf_dis_entity_linear_velocity_x, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
proto_tree_add_item(sub_tree, hf_dis_entity_linear_velocity_y, tvb, offset, 4, ENC_BIG_ENDIAN);
@@ -4544,8 +4515,7 @@ static int dissect_DIS_PARSER_ENTITY_STATE_PDU(tvbuff_t *tvb, packet_info *pinfo
proto_tree_add_item(sub_tree, hf_dis_entity_linear_velocity_z, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
- ti = proto_tree_add_text(tree, tvb, offset, 24, "Entity Location");
- sub_tree = proto_item_add_subtree(ti, ett_entity_location);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 24, ett_entity_location, NULL, "Entity Location");
proto_tree_add_item(sub_tree, hf_dis_entity_location_x, tvb, offset, 8, ENC_BIG_ENDIAN);
offset += 8;
proto_tree_add_item(sub_tree, hf_dis_entity_location_y, tvb, offset, 8, ENC_BIG_ENDIAN);
@@ -4553,8 +4523,7 @@ static int dissect_DIS_PARSER_ENTITY_STATE_PDU(tvbuff_t *tvb, packet_info *pinfo
proto_tree_add_item(sub_tree, hf_dis_entity_location_z, tvb, offset, 8, ENC_BIG_ENDIAN);
offset += 8;
- ti = proto_tree_add_text(tree, tvb, offset, 12, "Entity Orientation");
- sub_tree = proto_item_add_subtree(ti, ett_entity_orientation);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 12, ett_entity_orientation, NULL, "Entity Orientation");
proto_tree_add_item(sub_tree, hf_dis_entity_orientation_psi, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
proto_tree_add_item(sub_tree, hf_dis_entity_orientation_theta, tvb, offset, 4, ENC_BIG_ENDIAN);
@@ -4562,8 +4531,7 @@ static int dissect_DIS_PARSER_ENTITY_STATE_PDU(tvbuff_t *tvb, packet_info *pinfo
proto_tree_add_item(sub_tree, hf_dis_entity_orientation_phi, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
- ti = proto_tree_add_text(tree, tvb, offset, 4, "Entity Appearance");
- sub_tree = proto_item_add_subtree(ti, ett_entity_appearance);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 4, ett_entity_appearance, NULL, "Entity Appearance");
if ((entityKind == DIS_ENTITYKIND_PLATFORM) &&
(entityDomain == DIS_DOMAIN_LAND))
@@ -4601,8 +4569,7 @@ static int dissect_DIS_PARSER_ENTITY_STATE_PDU(tvbuff_t *tvb, packet_info *pinfo
for (i = 0; i < numVariable; i++)
{
- ti = proto_tree_add_text(tree, tvb, offset, 1, "Variable Parameter");
- sub_tree = proto_item_add_subtree(ti, ett_variable_parameter);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 1, ett_variable_parameter, &ti, "Variable Parameter");
proto_tree_add_item(sub_tree, hf_dis_variable_parameter_type, tvb, offset, 1, ENC_BIG_ENDIAN);
variableParameterType = tvb_get_guint8(tvb, offset);
@@ -4619,7 +4586,7 @@ static int dissect_DIS_PARSER_ENTITY_STATE_PDU(tvbuff_t *tvb, packet_info *pinfo
*/
static int dissect_DIS_PARSER_ELECTROMAGNETIC_EMISSION_PDU(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset)
{
- proto_item *ti, *emission_ti, *beam_ti;
+ proto_item *emission_ti, *beam_ti;
proto_tree *sub_tree, *sub_tree2, *fundamental_tree;
guint8 i, j, k, numVariable, numBeams, numTrackJamTargets;
@@ -4638,8 +4605,7 @@ static int dissect_DIS_PARSER_ELECTROMAGNETIC_EMISSION_PDU(tvbuff_t *tvb, packet
for (i = 0; i < numVariable; i++)
{
- emission_ti = proto_tree_add_text(tree, tvb, offset, -1, "Emission System");
- sub_tree = proto_item_add_subtree(emission_ti, ett_emission_system);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_emission_system, &emission_ti, "Emission System");
proto_tree_add_item(sub_tree, hf_dis_em_data_length, tvb, offset, 1, ENC_NA);
offset++;
@@ -4651,8 +4617,7 @@ static int dissect_DIS_PARSER_ELECTROMAGNETIC_EMISSION_PDU(tvbuff_t *tvb, packet
proto_tree_add_item(sub_tree, hf_dis_padding, tvb, offset, 2, ENC_NA);
offset += 2;
- ti = proto_tree_add_text(sub_tree, tvb, offset, 4, "Emitter System");
- sub_tree2 = proto_item_add_subtree(ti, ett_emitter_system);
+ sub_tree2 = proto_tree_add_subtree(sub_tree, tvb, offset, 4, ett_emitter_system, NULL, "Emitter System");
proto_tree_add_item(sub_tree2, hf_dis_emitter_name, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
@@ -4661,8 +4626,7 @@ static int dissect_DIS_PARSER_ELECTROMAGNETIC_EMISSION_PDU(tvbuff_t *tvb, packet
proto_tree_add_item(sub_tree2, hf_dis_emitter_id_number, tvb, offset, 1, ENC_NA);
offset++;
- ti = proto_tree_add_text(sub_tree, tvb, offset, 12, "Location");
- sub_tree2 = proto_item_add_subtree(ti, ett_emitter_location);
+ sub_tree2 = proto_tree_add_subtree(sub_tree, tvb, offset, 12, ett_emitter_location, NULL, "Location");
proto_tree_add_item(sub_tree2, hf_dis_em_location_x, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
@@ -4673,8 +4637,7 @@ static int dissect_DIS_PARSER_ELECTROMAGNETIC_EMISSION_PDU(tvbuff_t *tvb, packet
for (j = 0; j < numBeams; j++)
{
- beam_ti = proto_tree_add_text(sub_tree, tvb, offset, -1, "Beam");
- sub_tree2 = proto_item_add_subtree(beam_ti, ett_em_beam);
+ sub_tree2 = proto_tree_add_subtree(sub_tree, tvb, offset, -1, ett_em_beam, &beam_ti, "Beam");
proto_tree_add_item(sub_tree2, hf_dis_em_beam_data_length, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
@@ -4685,8 +4648,7 @@ static int dissect_DIS_PARSER_ELECTROMAGNETIC_EMISSION_PDU(tvbuff_t *tvb, packet
proto_tree_add_item(sub_tree2, hf_dis_em_beam_parameter_index, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
- ti = proto_tree_add_text(sub_tree2, tvb, offset, 40, "Fundamental Parameter Data");
- fundamental_tree = proto_item_add_subtree(ti, ett_em_fundamental_parameter_data);
+ fundamental_tree = proto_tree_add_subtree(sub_tree2, tvb, offset, 40, ett_em_fundamental_parameter_data, NULL, "Fundamental Parameter Data");
proto_tree_add_item(fundamental_tree, hf_dis_em_fund_frequency, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
@@ -4743,7 +4705,6 @@ static int dissect_DIS_PARSER_ELECTROMAGNETIC_EMISSION_PDU(tvbuff_t *tvb, packet
*/
static int dissect_DIS_PARSER_UNDERWATER_ACOUSTIC_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
{
- proto_item *ti;
proto_tree *sub_tree, *sub_tree2;
guint8 i, numShafts, numApas, numUAEmitter, numUABeams = 0;
@@ -4779,8 +4740,7 @@ static int dissect_DIS_PARSER_UNDERWATER_ACOUSTIC_PDU(tvbuff_t *tvb, packet_info
for (i = 0; i < numShafts; i++)
{
- ti = proto_tree_add_text(tree, tvb, offset, 6, "Shafts [%d of %d]", i+1, numShafts);
- sub_tree = proto_item_add_subtree(ti, ett_shafts);
+ sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, 6, ett_shafts, NULL, "Shafts [%d of %d]", i+1, numShafts);
proto_tree_add_item(sub_tree, hf_dis_shaft_rpm_current, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
@@ -4794,8 +4754,7 @@ static int dissect_DIS_PARSER_UNDERWATER_ACOUSTIC_PDU(tvbuff_t *tvb, packet_info
for (i = 0; i < numApas; i++)
{
- ti = proto_tree_add_text(tree, tvb, offset, 4, "APAs [%d of %d]", i+1, numApas);
- sub_tree = proto_item_add_subtree(ti, ett_apas);
+ sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4, ett_apas, NULL, "APAs [%d of %d]", i+1, numApas);
proto_tree_add_item(sub_tree, hf_dis_apas_parameter_index, tvb, offset, 2, ENC_BIG_ENDIAN); /*FIXME enum*/
offset += 2;
@@ -4806,8 +4765,8 @@ static int dissect_DIS_PARSER_UNDERWATER_ACOUSTIC_PDU(tvbuff_t *tvb, packet_info
for (i = 0; i < numUAEmitter; i++)
{
- ti = proto_tree_add_text(tree, tvb, offset, 20, "Underwater Acoustic Emission System [%d of %d]", i+1, numUAEmitter);
- sub_tree = proto_item_add_subtree(ti, ett_underwater_acoustic_emission);
+ sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, 20, ett_underwater_acoustic_emission, NULL,
+ "Underwater Acoustic Emission System [%d of %d]", i+1, numUAEmitter);
proto_tree_add_item(sub_tree, hf_dis_ua_emitter_data_length, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
@@ -4819,8 +4778,7 @@ static int dissect_DIS_PARSER_UNDERWATER_ACOUSTIC_PDU(tvbuff_t *tvb, packet_info
proto_tree_add_item(sub_tree, hf_dis_padding, tvb, offset, 2, ENC_NA);
offset += 2;
- ti = proto_tree_add_text(sub_tree, tvb, offset, 4, "Acoustic Emitter System");
- sub_tree2 = proto_item_add_subtree(ti, ett_acoustic_emitter_system);
+ sub_tree2 = proto_tree_add_subtree(sub_tree, tvb, offset, 4, ett_acoustic_emitter_system, NULL, "Acoustic Emitter System");
proto_tree_add_item(sub_tree2, hf_dis_ua_emission_name, tvb, offset, 2, ENC_BIG_ENDIAN); /*FIXME enum*/
offset += 2;
@@ -4829,8 +4787,7 @@ static int dissect_DIS_PARSER_UNDERWATER_ACOUSTIC_PDU(tvbuff_t *tvb, packet_info
proto_tree_add_item(sub_tree2, hf_dis_ua_emission_id_number, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
- ti = proto_tree_add_text(sub_tree, tvb, offset, 12, "Location (with respect to entity)");
- sub_tree2 = proto_item_add_subtree(ti, ett_ua_location);
+ sub_tree2 = proto_tree_add_subtree(sub_tree, tvb, offset, 12, ett_ua_location, NULL, "Location (with respect to entity)");
proto_tree_add_item(sub_tree2, hf_dis_ua_location_x, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
@@ -4844,8 +4801,7 @@ static int dissect_DIS_PARSER_UNDERWATER_ACOUSTIC_PDU(tvbuff_t *tvb, packet_info
for (i = 0; i < numUABeams; ++i)
{
- ti = proto_tree_add_text(tree, tvb, offset, 24, "Beams [%d of %d]", i+1, numUABeams);
- sub_tree = proto_item_add_subtree(ti, ett_ua_beams);
+ sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, 24, ett_ua_beams, NULL, "Beams [%d of %d]", i+1, numUABeams);
proto_tree_add_item(sub_tree, hf_dis_ua_beam_data_length, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
@@ -4856,8 +4812,7 @@ static int dissect_DIS_PARSER_UNDERWATER_ACOUSTIC_PDU(tvbuff_t *tvb, packet_info
proto_tree_add_item(sub_tree, hf_dis_padding, tvb, offset, 2, ENC_NA);
offset += 2;
- ti = proto_tree_add_text(sub_tree, tvb, offset, 20, "Fundamental Data Parameters");
- sub_tree2 = proto_item_add_subtree(ti, ett_ua_beam_data);
+ sub_tree2 = proto_tree_add_subtree_format(sub_tree, tvb, offset, 20, ett_ua_beam_data, NULL, "Fundamental Data Parameters");
proto_tree_add_item(sub_tree2, hf_dis_ua_beam_active_emission_parameter_index, tvb, offset, 2, ENC_BIG_ENDIAN); /*FIXME enum!!!*/
offset += 2;
@@ -4896,8 +4851,7 @@ static int dissect_DIS_PARSER_IFF_PDU(tvbuff_t *tvb, packet_info *pinfo _U_, pro
offset = parseField_Entity(tvb, tree, offset, "Emitting Entity ID");
offset = dissect_DIS_FIELDS_EVENT_ID(tvb, tree, offset, "Event ID");
- ti = proto_tree_add_text(tree, tvb, offset, 12, "Location (with respect to entity)");
- sub_tree = proto_item_add_subtree(ti, ett_iff_location);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 12, ett_iff_location, NULL, "Location (with respect to entity)");
proto_tree_add_item(sub_tree, hf_dis_ua_location_x, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
@@ -4908,8 +4862,7 @@ static int dissect_DIS_PARSER_IFF_PDU(tvbuff_t *tvb, packet_info *pinfo _U_, pro
proto_tree_add_item(sub_tree, hf_dis_ua_location_z, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
- ti = proto_tree_add_text(tree, tvb, offset, 6, "System ID");
- sub_tree = proto_item_add_subtree(ti, ett_iff_system_id);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 6, ett_iff_system_id, NULL, "System ID");
proto_tree_add_item(sub_tree, hf_dis_iff_system_type, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
@@ -4930,8 +4883,7 @@ static int dissect_DIS_PARSER_IFF_PDU(tvbuff_t *tvb, packet_info *pinfo _U_, pro
proto_tree_add_item(tree, hf_dis_padding, tvb, offset, 2, ENC_NA);
offset += 2;
- ti = proto_tree_add_text(tree, tvb, offset, 16, "Fundamental Operational Data");
- sub_tree = proto_item_add_subtree(ti, ett_iff_fundamental_operational_data);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 16, ett_iff_fundamental_operational_data, NULL, "Fundamental Operational Data");
ti = proto_tree_add_item(sub_tree, hf_dis_iff_system_status, tvb, offset, 1, ENC_BIG_ENDIAN);
field_tree = proto_item_add_subtree(ti, ett_iff_system_status);
@@ -5050,8 +5002,7 @@ static int dissect_DIS_PARSER_TRANSMITTER_PDU(tvbuff_t *tvb, packet_info *pinfo,
proto_tree_add_item(tree, hf_dis_padding, tvb, offset, 2, ENC_NA);
offset += 2;
- ti = proto_tree_add_text(tree, tvb, offset, 24, "Antenna Location");
- sub_tree = proto_item_add_subtree(ti, ett_antenna_location);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 24, ett_antenna_location, NULL, "Antenna Location");
proto_tree_add_item(sub_tree, hf_dis_antenna_location_x, tvb, offset, 8, ENC_BIG_ENDIAN);
offset += 8;
@@ -5060,8 +5011,7 @@ static int dissect_DIS_PARSER_TRANSMITTER_PDU(tvbuff_t *tvb, packet_info *pinfo,
proto_tree_add_item(sub_tree, hf_dis_antenna_location_z, tvb, offset, 8, ENC_BIG_ENDIAN);
offset += 8;
- ti = proto_tree_add_text(tree, tvb, offset, 12, "Relative Antenna Location");
- sub_tree = proto_item_add_subtree(ti, ett_rel_antenna_location);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 12, ett_rel_antenna_location, NULL, "Relative Antenna Location");
proto_tree_add_item(sub_tree, hf_dis_rel_antenna_location_x, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
@@ -5192,7 +5142,6 @@ static int dissect_DIS_PARSER_SIGNAL_PDU(tvbuff_t *tvb, packet_info *pinfo, prot
*/
static int dissect_DIS_PARSER_FIRE_PDU(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset)
{
- proto_item* ti;
proto_tree* sub_tree;
offset = parseField_Entity(tvb, tree, offset, "Firing Entity ID");
@@ -5203,8 +5152,7 @@ static int dissect_DIS_PARSER_FIRE_PDU(tvbuff_t *tvb, packet_info *pinfo _U_, pr
proto_tree_add_item(tree, hf_dis_fire_mission_index, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
- ti = proto_tree_add_text(tree, tvb, offset, 24, "Location in World Coordinates");
- sub_tree = proto_item_add_subtree(ti, ett_fire_location);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 24, ett_fire_location, NULL, "Location in World Coordinates");
proto_tree_add_item(sub_tree, hf_dis_fire_location_x, tvb, offset, 8, ENC_BIG_ENDIAN);
offset += 8;
@@ -5215,8 +5163,7 @@ static int dissect_DIS_PARSER_FIRE_PDU(tvbuff_t *tvb, packet_info *pinfo _U_, pr
offset = dissect_DIS_FIELDS_BURST_DESCRIPTOR(tvb, tree, offset);
- ti = proto_tree_add_text(tree, tvb, offset, 12, "Velocity");
- sub_tree = proto_item_add_subtree(ti, ett_linear_velocity);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 12, ett_linear_velocity, NULL, "Velocity");
proto_tree_add_item(sub_tree, hf_dis_linear_velocity_x, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
@@ -5243,8 +5190,7 @@ static int dissect_DIS_PARSER_DETONATION_PDU(tvbuff_t *tvb, packet_info *pinfo _
offset = parseField_Entity(tvb, tree, offset, "Munition ID");
offset = dissect_DIS_FIELDS_EVENT_ID(tvb, tree, offset, "Event ID");
- ti = proto_tree_add_text(tree, tvb, offset, 12, "Velocity");
- sub_tree = proto_item_add_subtree(ti, ett_linear_velocity);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 12, ett_linear_velocity, NULL, "Velocity");
proto_tree_add_item(sub_tree, hf_dis_linear_velocity_x, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
@@ -5253,8 +5199,7 @@ static int dissect_DIS_PARSER_DETONATION_PDU(tvbuff_t *tvb, packet_info *pinfo _
proto_tree_add_item(sub_tree, hf_dis_linear_velocity_z, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
- ti = proto_tree_add_text(tree, tvb, offset, 24, "Location in World Coordinates");
- sub_tree = proto_item_add_subtree(ti, ett_detonation_location);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 24, ett_detonation_location, NULL, "Location in World Coordinates");
proto_tree_add_item(sub_tree, hf_dis_detonation_location_x, tvb, offset, 8, ENC_BIG_ENDIAN);
offset += 8;
@@ -5265,8 +5210,7 @@ static int dissect_DIS_PARSER_DETONATION_PDU(tvbuff_t *tvb, packet_info *pinfo _
offset = dissect_DIS_FIELDS_BURST_DESCRIPTOR(tvb, tree, offset);
- ti = proto_tree_add_text(tree, tvb, offset, 12, "Location in Entity Coordinates");
- sub_tree = proto_item_add_subtree(ti, ett_linear_velocity);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 12, ett_linear_velocity, NULL, "Location in Entity Coordinates");
proto_tree_add_item(sub_tree, hf_dis_entity_location_x, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
@@ -5287,8 +5231,7 @@ static int dissect_DIS_PARSER_DETONATION_PDU(tvbuff_t *tvb, packet_info *pinfo _
for (i = 0; i < numVariable; i++)
{
- ti = proto_tree_add_text(tree, tvb, offset, 1, "Variable Parameter");
- sub_tree = proto_item_add_subtree(ti, ett_variable_parameter);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 1, ett_variable_parameter, &ti, "Variable Parameter");
proto_tree_add_item(sub_tree, hf_dis_variable_parameter_type, tvb, offset, 1, ENC_BIG_ENDIAN);
variableParameterType = tvb_get_guint8(tvb, offset);
@@ -5697,8 +5640,7 @@ static int dissect_DIS_PARSER_APPLICATION_CONTROL_PDU(tvbuff_t *tvb, packet_info
for (i = 0; i < numVariable; i++)
{
- ti = proto_tree_add_text(tree, tvb, offset, -1, "Record");
- sub_tree = proto_item_add_subtree(ti, ett_record);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_record, &ti, "Record");
variableRecordType = tvb_get_ntohl(tvb, offset);
proto_tree_add_item(tree, hf_dis_variable_record_type, tvb, offset, 4, ENC_BIG_ENDIAN);
@@ -5895,11 +5837,9 @@ static gint parseField_Timestamp(tvbuff_t *tvb, proto_tree *tree, gint offset, i
/* Parse an Entity */
static gint parseField_Entity(tvbuff_t *tvb, proto_tree *tree, gint offset, const char* entity_name)
{
- proto_item *ti;
proto_tree *sub_tree;
- ti = proto_tree_add_text(tree, tvb, offset, 6, "%s", entity_name);
- sub_tree = proto_item_add_subtree(ti, ett_entity);
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 6, ett_entity, NULL, entity_name);
proto_tree_add_item(sub_tree, hf_dis_entity_id_site, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
@@ -6078,9 +6018,9 @@ static int parsePOHeader(tvbuff_t *tvb, proto_tree *tree, int offset, guint8* pd
*/
static gint dissect_dis(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
{
- proto_item *dis_tree, *dis_header_tree;
- proto_item *dis_node, *dis_header_node;
- proto_item *dis_payload_tree = NULL;
+ proto_tree *dis_tree, *dis_header_tree;
+ proto_item *dis_node;
+ proto_tree *dis_payload_tree = NULL;
proto_item *dis_payload_node = NULL;
gint offset = 0;
const gchar *pduString = 0;
@@ -6111,8 +6051,7 @@ static gint dissect_dis(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi
/* Add a node to contain the DIS header fields.
*/
- dis_header_node = proto_tree_add_text(dis_tree, tvb, offset, 12, "Header");
- dis_header_tree = proto_item_add_subtree(dis_header_node, ett_dis_header);
+ dis_header_tree = proto_tree_add_subtree(dis_tree, tvb, offset, 12, ett_dis_header, NULL, "Header");
offset = parseDISHeader(tvb, dis_header_tree, offset, &header);
/* Locate the string name for the PDU type enumeration,
@@ -6127,10 +6066,8 @@ static gint dissect_dis(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi
case DIS_PROTOCOLFAMILY_PERSISTENT_OBJECT:
{
proto_item *dis_po_header_tree;
- proto_item *dis_po_header_node;
- dis_po_header_node = proto_tree_add_text(dis_header_tree, tvb, offset, 8, "PO Header");
- dis_po_header_tree = proto_item_add_subtree(dis_po_header_node, ett_dis_po_header);
+ dis_po_header_tree = proto_tree_add_subtree(dis_header_tree, tvb, offset, 8, ett_dis_po_header, NULL, "PO Header");
offset = parsePOHeader(tvb, dis_po_header_tree, offset, &persistentObjectPduType);
/* Locate the appropriate PO PDU parser, if type is known.
diff --git a/epan/dissectors/packet-dlsw.c b/epan/dissectors/packet-dlsw.c
index 2aec7bb2c8..4abaaba38d 100644
--- a/epan/dissectors/packet-dlsw.c
+++ b/epan/dissectors/packet-dlsw.c
@@ -292,9 +292,9 @@ dissect_dlsw_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data
hlen=tvb_get_guint8(tvb,1);
- ti2 = proto_tree_add_text (dlsw_tree, tvb, 0, hlen,"DLSw header, %s",
+ dlsw_header_tree = proto_tree_add_subtree_format(dlsw_tree, tvb, 0, hlen, ett_dlsw_header, NULL,
+ "DLSw header, %s",
val_to_str_const(version , dlsw_version_vals, "Unknown Version"));
- dlsw_header_tree = proto_item_add_subtree(ti2, ett_dlsw_header);
proto_tree_add_item(dlsw_header_tree, hf_dlsw_version, tvb, 0, 1, ENC_NA);
proto_tree_add_item(dlsw_header_tree, hf_dlsw_header_length, tvb, 1, 1, ENC_NA);
@@ -375,8 +375,7 @@ dissect_dlsw_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data
/* end of header dissector */
- ti2 = proto_tree_add_text (dlsw_tree, tvb, hlen, mlen,"DLSw data");
- dlsw_data_tree = proto_item_add_subtree(ti2, ett_dlsw_data);
+ dlsw_data_tree = proto_tree_add_subtree(dlsw_tree, tvb, hlen, mlen, ett_dlsw_data, NULL, "DLSw data");
switch (mtype)
{
@@ -413,7 +412,7 @@ static void
dissect_dlsw_capex(tvbuff_t *tvb, proto_tree *tree, proto_tree *ti2)
{
int mlen,vlen,vtype,offset=4,gdsid,sap,i=0;
- proto_tree *ti,*dlsw_vector_tree;
+ proto_tree *dlsw_vector_tree;
mlen=tvb_get_ntohs(tvb,0);
gdsid=tvb_get_ntohs(tvb,2);
proto_tree_add_item(tree, hf_dlsw_capabilities_length, tvb, 0, 2, ENC_BIG_ENDIAN);
@@ -431,9 +430,8 @@ dissect_dlsw_capex(tvbuff_t *tvb, proto_tree *tree, proto_tree *ti2)
vlen=tvb_get_guint8(tvb,offset);
if (vlen < 3) THROW(ReportedBoundsError);
vtype=tvb_get_guint8(tvb,offset+1);
- ti=proto_tree_add_text (tree,tvb,offset,vlen,"%s",
+ dlsw_vector_tree=proto_tree_add_subtree (tree,tvb,offset,vlen,ett_dlsw_vector,NULL,
val_to_str_const(vtype,dlsw_vector_vals,"Unknown vector type"));
- dlsw_vector_tree = proto_item_add_subtree(ti, ett_dlsw_vector);
proto_tree_add_item(dlsw_vector_tree, hf_dlsw_vector_length, tvb, offset, 1, ENC_NA);
proto_tree_add_item(dlsw_vector_tree, hf_dlsw_vector_type, tvb, offset+1, 1, ENC_NA);
switch (vtype){
diff --git a/epan/dissectors/packet-dmp.c b/epan/dissectors/packet-dmp.c
index fc8608bb74..981b97852b 100644
--- a/epan/dissectors/packet-dmp.c
+++ b/epan/dissectors/packet-dmp.c
@@ -1509,9 +1509,8 @@ static void dmp_add_seq_ack_analysis (tvbuff_t *tvb, packet_info *pinfo,
return;
}
- en = proto_tree_add_text (dmp_tree, tvb, 0, 0, "SEQ/ACK analysis");
+ analysis_tree = proto_tree_add_subtree(dmp_tree, tvb, 0, 0, ett_analysis, &en, "SEQ/ACK analysis");
PROTO_ITEM_SET_GENERATED (en);
- analysis_tree = proto_item_add_subtree (en, ett_analysis);
if ((dmp.msg_type == STANAG) || (dmp.msg_type == IPM) ||
(dmp.msg_type == REPORT) || (dmp.msg_type == NOTIF)) {
diff --git a/epan/dissectors/packet-dnp.c b/epan/dissectors/packet-dnp.c
index d915f08af6..16b099b169 100644
--- a/epan/dissectors/packet-dnp.c
+++ b/epan/dissectors/packet-dnp.c
@@ -1557,8 +1557,7 @@ dnp3_al_obj_quality(tvbuff_t *tvb, int offset, guint8 al_ptflags, proto_tree *po
/* Common code */
proto_item_append_text(point_item, " (Quality: ");
- quality_item = proto_tree_add_text(point_tree, tvb, offset, 1, "Quality: ");
- quality_tree = proto_item_add_subtree(quality_item, ett_dnp3_al_obj_quality);
+ quality_tree = proto_tree_add_subtree(point_tree, tvb, offset, 1, ett_dnp3_al_obj_quality, &quality_item, "Quality: ");
if (al_ptflags & AL_OBJ_BI_FLAG0) {
dnp3_append_2item_text(point_item, quality_item, "Online");
@@ -1690,7 +1689,7 @@ dnp3_al_process_object(tvbuff_t *tvb, packet_info *pinfo, int offset,
guint32 al_ptaddr = 0;
int num_items = 0;
int orig_offset, rangebytes = 0;
- proto_item *object_item, *qualifier_item, *range_item;
+ proto_item *object_item, *range_item;
proto_tree *object_tree, *qualifier_tree, *range_tree;
orig_offset = offset;
@@ -1721,18 +1720,17 @@ dnp3_al_process_object(tvbuff_t *tvb, packet_info *pinfo, int offset,
al_objq_index = al_objq_index >> 4;
al_objq_code = al_objq & AL_OBJQ_CODE;
- qualifier_item = proto_tree_add_text(object_tree, tvb, offset, 1, "Qualifier Field, Prefix: %s, Code: %s",
+ qualifier_tree = proto_tree_add_subtree_format(object_tree, tvb, offset, 1, ett_dnp3_al_obj_qualifier, NULL,
+ "Qualifier Field, Prefix: %s, Code: %s",
val_to_str_ext_const(al_objq_index, &dnp3_al_objq_index_vals_ext, "Unknown Index Type"),
val_to_str_ext_const(al_objq_code, &dnp3_al_objq_code_vals_ext, "Unknown Code Type"));
- qualifier_tree = proto_item_add_subtree(qualifier_item, ett_dnp3_al_obj_qualifier);
proto_tree_add_item(qualifier_tree, hf_dnp3_al_objq_index, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(qualifier_tree, hf_dnp3_al_objq_code, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
/* Create (possibly synthesized) number of items and range field tree */
- range_item = proto_tree_add_text(object_tree, tvb, offset, 0, "Number of Items: ");
- range_tree = proto_item_add_subtree(range_item, ett_dnp3_al_obj_range);
+ range_tree = proto_tree_add_subtree(object_tree, tvb, offset, 0, ett_dnp3_al_obj_range, &range_item, "Number of Items: ");
switch (al_objq_code)
{
@@ -1837,10 +1835,9 @@ dnp3_al_process_object(tvbuff_t *tvb, packet_info *pinfo, int offset,
/* Create Point item and Process Index */
if (al_objq_index <= AL_OBJQL_IDX_4O)
- point_item = proto_tree_add_text(object_tree, tvb, offset, -1, "Point Number");
+ point_tree = proto_tree_add_subtree(object_tree, tvb, offset, -1, ett_dnp3_al_obj_point, &point_item, "Point Number");
else
- point_item = proto_tree_add_text(object_tree, tvb, offset, -1, "Object: Size");
- point_tree = proto_item_add_subtree(point_item, ett_dnp3_al_obj_point);
+ point_tree = proto_tree_add_subtree(object_tree, tvb, offset, -1, ett_dnp3_al_obj_point, &point_item, "Object: Size");
data_pos = offset;
indexbytes = dnp3_al_obj_procindex(tvb, offset, al_objq_index, &al_ptaddr, point_tree);
@@ -2140,13 +2137,12 @@ dnp3_al_process_object(tvbuff_t *tvb, packet_info *pinfo, int offset,
case AL_OBJ_CTLOP_BLK:/* Control Relay Output Block (Obj:12, Var:01) */
{
- proto_item *tcc_item;
proto_tree *tcc_tree;
/* Add a expand/collapse for TCC */
al_tcc_code = tvb_get_guint8(tvb, data_pos);
- tcc_item = proto_tree_add_text(point_tree, tvb, data_pos, 1, "Control Code [0x%02x]",al_tcc_code);
- tcc_tree = proto_item_add_subtree(tcc_item, ett_dnp3_al_obj_point_tcc);
+ tcc_tree = proto_tree_add_subtree_format(point_tree, tvb, data_pos, 1,
+ ett_dnp3_al_obj_point_tcc, NULL, "Control Code [0x%02x]",al_tcc_code);
/* Add the Control Code to the Point number list for quick visual reference as to the operation */
proto_item_append_text(point_item, " [%s]", val_to_str_const((al_tcc_code & AL_OBJCTLC_CODE),
@@ -2817,7 +2813,7 @@ dissect_dnp3_al(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
guint8 al_ctl, al_seq, al_func, al_class = 0, i;
guint16 bytes, obj_type = 0;
guint data_len = 0, offset = 0;
- proto_item *ti, *tc, *t_robj;
+ proto_item *ti, *tc;
proto_tree *al_tree, *field_tree, *robj_tree;
const gchar *func_code_str, *obj_type_str;
nstime_t al_cto;
@@ -2838,16 +2834,13 @@ dissect_dnp3_al(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
col_set_fence(pinfo->cinfo, COL_INFO);
/* format up the text representation */
- ti = proto_tree_add_text(tree, tvb, offset, data_len, "Application Layer: (");
+ al_tree = proto_tree_add_subtree(tree, tvb, offset, data_len, ett_dnp3_al, &ti, "Application Layer: (");
if (al_ctl & DNP3_AL_FIR) proto_item_append_text(ti, "FIR, ");
if (al_ctl & DNP3_AL_FIN) proto_item_append_text(ti, "FIN, ");
if (al_ctl & DNP3_AL_CON) proto_item_append_text(ti, "CON, ");
if (al_ctl & DNP3_AL_UNS) proto_item_append_text(ti, "UNS, ");
proto_item_append_text(ti, "Sequence %u, %s)", al_seq, func_code_str);
- /* Add the al tree branch */
- al_tree = proto_item_add_subtree(ti, ett_dnp3_al);
-
/* Application Layer control byte subtree */
tc = proto_tree_add_uint_format(al_tree, hf_dnp3_al_ctl, tvb, offset, 1, al_ctl,
"Control: 0x%02x (", al_ctl);
@@ -2884,8 +2877,7 @@ dissect_dnp3_al(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case AL_FUNC_READ: /* Read Function Code 0x01 */
/* Create Read Request Data Objects Tree */
- t_robj = proto_tree_add_text(al_tree, tvb, offset, -1, "READ Request Data Objects");
- robj_tree = proto_item_add_subtree(t_robj, ett_dnp3_al_objdet);
+ robj_tree = proto_tree_add_subtree(al_tree, tvb, offset, -1, ett_dnp3_al_objdet, NULL, "READ Request Data Objects");
/* Process Data Object Details */
while (offset <= (data_len-2)) { /* 2 octet object code + CRC32 */
@@ -2923,8 +2915,7 @@ dissect_dnp3_al(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case AL_FUNC_WRITE: /* Write Function Code 0x02 */
/* Create Write Request Data Objects Tree */
- t_robj = proto_tree_add_text(al_tree, tvb, offset, -1, "WRITE Request Data Objects");
- robj_tree = proto_item_add_subtree(t_robj, ett_dnp3_al_objdet);
+ robj_tree = proto_tree_add_subtree(al_tree, tvb, offset, -1, ett_dnp3_al_objdet, NULL, "WRITE Request Data Objects");
/* Process Data Object Details */
while (offset <= (data_len-2)) { /* 2 octet object code + CRC32 */
@@ -2941,8 +2932,7 @@ dissect_dnp3_al(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case AL_FUNC_SELECT: /* Select Function Code 0x03 */
/* Create Select Request Data Objects Tree */
- t_robj = proto_tree_add_text(al_tree, tvb, offset, -1, "SELECT Request Data Objects");
- robj_tree = proto_item_add_subtree(t_robj, ett_dnp3_al_objdet);
+ robj_tree = proto_tree_add_subtree(al_tree, tvb, offset, -1, ett_dnp3_al_objdet, NULL, "SELECT Request Data Objects");
/* Process Data Object Details */
while (offset <= (data_len-2)) { /* 2 octet object code + CRC32 */
@@ -2955,8 +2945,7 @@ dissect_dnp3_al(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Functionally identical to 'SELECT' Function Code */
/* Create Operate Request Data Objects Tree */
- t_robj = proto_tree_add_text(al_tree, tvb, offset, -1, "OPERATE Request Data Objects");
- robj_tree = proto_item_add_subtree(t_robj, ett_dnp3_al_objdet);
+ robj_tree = proto_tree_add_subtree(al_tree, tvb, offset, -1, ett_dnp3_al_objdet, NULL, "OPERATE Request Data Objects");
/* Process Data Object Details */
while (offset <= (data_len-2)) { /* 2 octet object code + CRC32 */
@@ -2970,8 +2959,7 @@ dissect_dnp3_al(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Functionally identical to 'SELECT' Function Code */
/* Create Direct Operate Request Data Objects Tree */
- t_robj = proto_tree_add_text(al_tree, tvb, offset, -1, "DIRECT OPERATE Request Data Objects");
- robj_tree = proto_item_add_subtree(t_robj, ett_dnp3_al_objdet);
+ robj_tree = proto_tree_add_subtree(al_tree, tvb, offset, -1, ett_dnp3_al_objdet, NULL, "DIRECT OPERATE Request Data Objects");
/* Process Data Object Details */
while (offset <= (data_len-2)) { /* 2 octet object code + CRC32 */
@@ -2986,8 +2974,7 @@ dissect_dnp3_al(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case AL_FUNC_FRZCLRNACK: /* Freeze and Clear No ACK Function Code 0x0A */
/* Create Freeze Request Data Objects Tree */
- t_robj = proto_tree_add_text(al_tree, tvb, offset, -1, "Freeze Request Data Objects");
- robj_tree = proto_item_add_subtree(t_robj, ett_dnp3_al_objdet);
+ robj_tree = proto_tree_add_subtree(al_tree, tvb, offset, -1, ett_dnp3_al_objdet, NULL, "Freeze Request Data Objects");
/* Process Data Object Details */
while (offset <= (data_len-2)) { /* 2 octet object code + CRC32 */
@@ -2999,8 +2986,7 @@ dissect_dnp3_al(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case AL_FUNC_ENSPMSG: /* Enable Spontaneous Messages Function Code 0x14 */
/* Create Enable Spontaneous Messages Data Objects Tree */
- t_robj = proto_tree_add_text(al_tree, tvb, offset, -1, "Enable Spontaneous Msg's Data Objects");
- robj_tree = proto_item_add_subtree(t_robj, ett_dnp3_al_objdet);
+ robj_tree = proto_tree_add_subtree(al_tree, tvb, offset, -1, ett_dnp3_al_objdet, NULL, "Enable Spontaneous Msg's Data Objects");
/* Process Data Object Details */
while (offset <= (data_len-2)) { /* 2 octet object code + CRC32 */
@@ -3012,8 +2998,7 @@ dissect_dnp3_al(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case AL_FUNC_DISSPMSG: /* Disable Spontaneous Messages Function Code 0x15 */
/* Create Disable Spontaneous Messages Data Objects Tree */
- t_robj = proto_tree_add_text(al_tree, tvb, offset, -1, "Disable Spontaneous Msg's Data Objects");
- robj_tree = proto_item_add_subtree(t_robj, ett_dnp3_al_objdet);
+ robj_tree = proto_tree_add_subtree(al_tree, tvb, offset, -1, ett_dnp3_al_objdet, NULL, "Disable Spontaneous Msg's Data Objects");
/* Process Data Object Details */
while (offset <= (data_len-2)) { /* 2 octet object code + CRC32 */
@@ -3031,8 +3016,7 @@ dissect_dnp3_al(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case AL_FUNC_DELETEFILE: /* Delete File Function Code 0x1B */
/* Create File Data Objects Tree */
- t_robj = proto_tree_add_text(al_tree, tvb, offset, -1, "File Data Objects");
- robj_tree = proto_item_add_subtree(t_robj, ett_dnp3_al_objdet);
+ robj_tree = proto_tree_add_subtree(al_tree, tvb, offset, -1, ett_dnp3_al_objdet, NULL, "File Data Objects");
/* Process Data Object Details */
while (offset <= (data_len-2)) { /* 2 octet object code + CRC32 */
@@ -3055,8 +3039,7 @@ dissect_dnp3_al(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (bytes > 0)
{
/* Create Response Data Objects Tree */
- t_robj = proto_tree_add_text(al_tree, tvb, offset, -1,"RESPONSE Data Objects");
- robj_tree = proto_item_add_subtree(t_robj, ett_dnp3_al_objdet);
+ robj_tree = proto_tree_add_subtree(al_tree, tvb, offset, -1, ett_dnp3_al_objdet, NULL, "RESPONSE Data Objects");
/* Process Data Object Details */
while (offset <= (data_len-2)) { /* 2 octet object code + CRC32 */
@@ -3120,7 +3103,7 @@ dissect_dnp3_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void*
dnp3_tree = proto_item_add_subtree(ti, ett_dnp3);
/* Create Subtree for Data Link Layer */
- tdl = proto_tree_add_text(dnp3_tree, tvb, offset, DNP_HDR_LEN,
+ dl_tree = proto_tree_add_subtree_format(dnp3_tree, tvb, offset, DNP_HDR_LEN, ett_dnp3_dl, &tdl,
"Data Link Layer, Len: %u, From: %u, To: %u, ", dl_len, dl_src, dl_dst);
if (dl_prm) {
if (dl_ctl & DNP3_CTL_DIR) proto_item_append_text(tdl, "DIR, ");
@@ -3135,7 +3118,6 @@ dissect_dnp3_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void*
if (dl_ctl & DNP3_CTL_DFC) proto_item_append_text(tdl, "DFC, ");
}
proto_item_append_text(tdl, "%s", func_code_str);
- dl_tree = proto_item_add_subtree(tdl, ett_dnp3_dl);
/* start bytes */
proto_tree_add_item(dl_tree, hf_dnp3_start, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -3214,7 +3196,6 @@ dissect_dnp3_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void*
(dl_func != DL_FUNC_RESET_LINK) && (dl_func != DL_FUNC_ACK))
{
proto_tree *tr_tree, *al_tree;
- proto_item *al_chunks;
guint8 tr_ctl, tr_seq;
gboolean tr_fir, tr_fin;
guint8 *tmp, *tmp_ptr;
@@ -3243,8 +3224,7 @@ dissect_dnp3_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void*
proto_tree_add_item(tr_tree, hf_dnp3_tr_seq, tvb, offset, 1, ENC_BIG_ENDIAN);
/* Allocate AL chunk tree */
- al_chunks = proto_tree_add_text(tr_tree, tvb, offset + 1, -1, "Application data chunks");
- al_tree = proto_item_add_subtree(al_chunks, ett_dnp3_al_data);
+ al_tree = proto_tree_add_subtree(tr_tree, tvb, offset + 1, -1, ett_dnp3_al_data, NULL, "Application data chunks");
/* extract the application layer data, validating the CRCs */
diff --git a/epan/dissectors/packet-dns.c b/epan/dissectors/packet-dns.c
index 7eff3e326d..958a14f8fe 100644
--- a/epan/dissectors/packet-dns.c
+++ b/epan/dissectors/packet-dns.c
@@ -1313,12 +1313,11 @@ dissect_dns_query(tvbuff_t *tvb, int offset, int dns_data_offset,
}
}
if (dns_tree != NULL) {
- tq = proto_tree_add_text(dns_tree, tvb, offset, len, "%s: type %s, class %s",
+ q_tree = proto_tree_add_subtree_format(dns_tree, tvb, offset, len, ett_dns_qd, &tq, "%s: type %s, class %s",
name_out, type_name, dns_class_name(dns_class));
if (is_mdns) {
proto_item_append_text(tq, ", \"%s\" question", qu ? "QU" : "QM");
}
- q_tree = proto_item_add_subtree(tq, ett_dns_qd);
proto_tree_add_string(q_tree, hf_dns_qry_name, tvb, offset, name_len, name);
@@ -1654,18 +1653,16 @@ dissect_dns_answer(tvbuff_t *tvb, int offsetx, int dns_data_offset,
*/
name_out = format_text(name, strlen(name));
if (dns_type != T_OPT) {
- trr = proto_tree_add_text(dns_tree, tvb, offsetx,
+ rr_tree = proto_tree_add_subtree_format(dns_tree, tvb, offsetx,
(data_offset - data_start) + data_len,
- "%s: type %s, class %s",
+ ett_dns_rr, &trr, "%s: type %s, class %s",
name_out, type_name, class_name);
- rr_tree = proto_item_add_subtree(trr, ett_dns_rr);
add_rr_to_tree(rr_tree, tvb, offsetx, name, name_len,
dns_type, pinfo, is_mdns);
} else {
- trr = proto_tree_add_text(dns_tree, tvb, offsetx,
+ rr_tree = proto_tree_add_subtree_format(dns_tree, tvb, offsetx,
(data_offset - data_start) + data_len,
- "%s: type %s", name_out, type_name);
- rr_tree = proto_item_add_subtree(trr, ett_dns_rr);
+ ett_dns_rr, &trr, "%s: type %s", name_out, type_name);
add_opt_rr_to_tree(rr_tree, tvb, offsetx, name, name_len, is_mdns);
}
if (is_mdns && flush) {
@@ -3489,8 +3486,7 @@ dissect_query_records(tvbuff_t *tvb, int cur_off, int dns_data_offset,
start_off = cur_off;
- ti = proto_tree_add_text(dns_tree, tvb, start_off, -1, "%s", s);
- qatree = proto_item_add_subtree(ti, ett_dns_qry);
+ qatree = proto_tree_add_subtree(dns_tree, tvb, start_off, -1, ett_dns_qry, &ti, s);
while (count-- > 0) {
add_off = dissect_dns_query(tvb, cur_off, dns_data_offset, cinfo, qatree,
@@ -3514,8 +3510,7 @@ dissect_answer_records(tvbuff_t *tvb, int cur_off, int dns_data_offset,
start_off = cur_off;
if (dns_tree) {
- ti = proto_tree_add_text(dns_tree, tvb, start_off, -1, "%s", name);
- qatree = proto_item_add_subtree(ti, ett_dns_ans);
+ qatree = proto_tree_add_subtree(dns_tree, tvb, start_off, -1, ett_dns_ans, &ti, name);
}
while (count-- > 0) {
add_off = dissect_dns_answer(
diff --git a/epan/dissectors/packet-dplay.c b/epan/dissectors/packet-dplay.c
index ff29751754..7fb1e74bec 100644
--- a/epan/dissectors/packet-dplay.c
+++ b/epan/dissectors/packet-dplay.c
@@ -449,12 +449,10 @@ static gint display_unicode_string(proto_tree *tree, gint hf_index, tvbuff_t *tv
static gint dissect_sockaddr_in(proto_tree *tree, tvbuff_t *tvb, gint offset)
{
- proto_item *sa_item = NULL;
- proto_tree *sa_tree = NULL;
+ proto_tree *sa_tree;
- sa_item = proto_tree_add_text(tree, tvb, offset, 16,
+ sa_tree = proto_tree_add_subtree(tree, tvb, offset, 16, ett_dplay_sockaddr, NULL,
"DirectPlay sockaddr_in structure");
- sa_tree = proto_item_add_subtree(sa_item, ett_dplay_sockaddr);
proto_tree_add_item(sa_tree, hf_dplay_saddr_af, tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2;
proto_tree_add_item(sa_tree, hf_dplay_saddr_port, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2;
proto_tree_add_item(sa_tree, hf_dplay_saddr_ip, tvb, offset, 4, ENC_BIG_ENDIAN); offset += 4;
@@ -465,8 +463,8 @@ static gint dissect_sockaddr_in(proto_tree *tree, tvbuff_t *tvb, gint offset)
static gint dissect_session_desc(proto_tree *tree, tvbuff_t *tvb, gint offset)
{
guint32 flags;
- proto_item *flags_item = NULL;
- proto_tree *flags_tree = NULL;
+ proto_item *flags_item;
+ proto_tree *flags_tree;
flags = tvb_get_letohl(tvb, offset+4);
@@ -748,8 +746,8 @@ static gint dissect_type02_message(proto_tree *tree, tvbuff_t *tvb, gint offset)
{
guint32 passwd_offset;
guint32 flags;
- proto_item *flags_item = NULL;
- proto_tree *flags_tree = NULL;
+ proto_item *flags_item;
+ proto_tree *flags_tree;
passwd_offset = tvb_get_letohl(tvb, offset + 16);
flags = tvb_get_letohl(tvb, offset + 20);
@@ -868,8 +866,7 @@ static gint dissect_type13_message(proto_tree *tree, tvbuff_t *tvb, gint offset)
static gint dissect_type15_message(proto_tree *tree, tvbuff_t *tvb, gint offset)
{
guint16 second_message_type;
- proto_item *enc_item = NULL;
- proto_tree *enc_tree = NULL;
+ proto_tree *enc_tree;
second_message_type = tvb_get_letohs(tvb, 72);
proto_tree_add_item(tree, hf_dplay_message_guid, tvb, offset, 16, ENC_BIG_ENDIAN); offset += 16;
@@ -880,8 +877,7 @@ static gint dissect_type15_message(proto_tree *tree, tvbuff_t *tvb, gint offset)
proto_tree_add_item(tree, hf_dplay_type_15_msg_size, tvb, offset, 4, ENC_LITTLE_ENDIAN); offset += 4;
proto_tree_add_item(tree, hf_dplay_type_15_packet_offset, tvb, offset, 4, ENC_LITTLE_ENDIAN); offset += 4;
- enc_item = proto_tree_add_text(tree, tvb, offset, -1, "DirectPlay encapsulated packet");
- enc_tree = proto_item_add_subtree(enc_item, ett_dplay_enc_packet);
+ enc_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_dplay_enc_packet, NULL, "DirectPlay encapsulated packet");
proto_tree_add_item(enc_tree, hf_dplay_play_str_2, tvb, offset, 4, ENC_ASCII|ENC_NA); offset += 4;
proto_tree_add_item(enc_tree, hf_dplay_command_2, tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2;
@@ -969,29 +965,23 @@ static gint dissect_type29_message(proto_tree *tree, tvbuff_t *tvb, gint offset)
}
for (i=0; i < player_count; ++i) {
- proto_item *spp_item;
proto_tree *spp_tree;
- spp_item = proto_tree_add_text(tree, tvb, offset, 0, "Player %d", i);
- spp_tree = proto_item_add_subtree(spp_item, ett_dplay_type29_spp);
+ spp_tree = proto_tree_add_subtree_format(tree, tvb, offset, 0, ett_dplay_type29_spp, NULL, "Player %d", i);
offset = dissect_dplay_super_packed_player(spp_tree, tvb, offset);
}
for (i=0; i < group_count; ++i) {
- proto_item *spp_item;
proto_tree *spp_tree;
- spp_item = proto_tree_add_text(tree, tvb, offset, 0, "Group %d", i);
- spp_tree = proto_item_add_subtree(spp_item, ett_dplay_type29_spp);
+ spp_tree = proto_tree_add_subtree_format(tree, tvb, offset, 0, ett_dplay_type29_spp, NULL, "Group %d", i);
offset = dissect_dplay_super_packed_player(spp_tree, tvb, offset);
}
for (i=0; i < shortcut_count; ++i) {
- proto_item *spp_item;
proto_tree *spp_tree;
- spp_item = proto_tree_add_text(tree, tvb, offset, 0, "Shortcut %d", i);
- spp_tree = proto_item_add_subtree(spp_item, ett_dplay_type29_spp);
+ spp_tree = proto_tree_add_subtree_format(tree, tvb, offset, 0, ett_dplay_type29_spp, NULL, "Shortcut %d", i);
offset = dissect_dplay_super_packed_player(spp_tree, tvb, offset);
}
@@ -1042,18 +1032,15 @@ static void dissect_dplay(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if(tree)
{
- proto_item *dplay_item = NULL;
- proto_item *header_item = NULL;
- proto_item *data_item = NULL;
- proto_tree *dplay_tree = NULL;
- proto_tree *dplay_header = NULL;
- proto_tree *dplay_data = NULL;
+ proto_item *dplay_item;
+ proto_tree *dplay_tree;
+ proto_tree *dplay_header;
+ proto_tree *dplay_data;
gint offset = 0;
dplay_item = proto_tree_add_item(tree, proto_dplay, tvb, 0, -1, ENC_NA);
dplay_tree = proto_item_add_subtree(dplay_item, ett_dplay);
- header_item = proto_tree_add_text(dplay_tree, tvb, offset, DPLAY_HEADER_OFFSET, "DirectPlay header");
- dplay_header = proto_item_add_subtree(header_item, ett_dplay_header);
+ dplay_header = proto_tree_add_subtree(dplay_tree, tvb, offset, DPLAY_HEADER_OFFSET, ett_dplay_header, NULL, "DirectPlay header");
offset = dissect_dplay_header(dplay_header, tvb, offset);
@@ -1061,8 +1048,7 @@ static void dissect_dplay(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if(message_type == 0x0004)
return;
- data_item = proto_tree_add_text(dplay_tree, tvb, offset, -1, "DirectPlay data");
- dplay_data = proto_item_add_subtree(data_item, ett_dplay_data);
+ dplay_data = proto_tree_add_subtree(dplay_tree, tvb, offset, -1, ett_dplay_data, NULL, "DirectPlay data");
switch(message_type)
{
@@ -1125,16 +1111,14 @@ static void dissect_dplay_player_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tr
if(tree)
{
- proto_item *dplay_item = NULL;
- proto_item *data_item = NULL;
- proto_tree *dplay_tree = NULL;
- proto_tree *data_tree = NULL;
+ proto_item *dplay_item;
+ proto_tree *dplay_tree;
+ proto_tree *data_tree;
gint offset = 0;
dplay_item = proto_tree_add_item(tree, proto_dplay, tvb, offset, -1, ENC_NA);
dplay_tree = proto_item_add_subtree(dplay_item, ett_dplay);
- data_item = proto_tree_add_text(dplay_tree, tvb, offset, -1, "Message content");
- data_tree = proto_item_add_subtree(data_item, ett_dplay_data);
+ data_tree = proto_tree_add_subtree(dplay_tree, tvb, offset, -1, ett_dplay_data, NULL, "Message content");
mixed = tvb_get_letohl(tvb, offset);
size = mixed & 0x000FFFFF;
token = (mixed & 0xFFF00000) >> 20;
diff --git a/epan/dissectors/packet-dpnss.c b/epan/dissectors/packet-dpnss.c
index e608b01860..86f951846a 100644
--- a/epan/dissectors/packet-dpnss.c
+++ b/epan/dissectors/packet-dpnss.c
@@ -1067,7 +1067,6 @@ dissect_dpnns_sup_str_par(tvbuff_t *tvb, proto_tree * tree, int par_type_num, in
static int
dissect_dpnss_sup_info_str(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gint offset)
{
- proto_item *sup_str_item;
proto_tree *sup_str_tree;
gint start_offset, hash_offset, tvb_end_offset, sup_inf_str_end_offset, str_no;
gint par_start_offset, par_end_offset, number_of_found_par;
@@ -1090,10 +1089,9 @@ dissect_dpnss_sup_info_str(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
/* offset points to start of supplementary information string */
offset++;
hash_offset = tvb_find_guint8(tvb, offset, -1, '#');
- sup_str_item = proto_tree_add_text(tree, tvb, start_offset, hash_offset-start_offset+1,
- "Supplementary Information %u: %s",str_no,
+ sup_str_tree = proto_tree_add_subtree_format(tree, tvb, start_offset, hash_offset-start_offset+1,
+ ett_dpnss_sup_str, NULL, "Supplementary Information %u: %s",str_no,
tvb_format_text(tvb,start_offset,hash_offset-start_offset+1));
- sup_str_tree = proto_item_add_subtree(sup_str_item, ett_dpnss_sup_str);
/* SUPPLEMENTARY INFORMATION STRING IDENTIFIER
* Get the parameter number string and translate it to an index into the dpnns_sup_serv_set.
* The number may have a trailing alpha character at the end.
@@ -1160,7 +1158,7 @@ dissect_dpnss_sup_info_str(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
static int
dissect_dpnss_LbL_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *sic_field_item, *ind_field_item;
+ proto_item *ind_field_item;
proto_tree *sic_field_tree, *ind_field_tree;
int offset = 0;
int tvb_end_offset;
@@ -1205,8 +1203,7 @@ dissect_dpnss_LbL_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
* Note: On data calls the SIC may comprise more than one octet.
* The Service Indicator Code is coded in accordance with ANNEX 1.
*/
- sic_field_item = proto_tree_add_text(tree, tvb, offset, -1, "Service Indicator Code");
- sic_field_tree = proto_item_add_subtree(sic_field_item, ett_dpnss_sic_field);
+ sic_field_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_dpnss_sic_field, NULL, "Service Indicator Code");
offset =dissect_dpnss_sic(tvb, pinfo, sic_field_tree, offset);
/* Indication Field */
ind_field_item = proto_tree_add_text(tree, tvb, offset, -1,
@@ -1255,7 +1252,7 @@ dissect_dpnss_LbL_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static int
dissect_dpnss_e2e_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *sel_field_item, *sic_field_item, *ind_field_item;
+ proto_item *sel_field_item, *ind_field_item;
proto_tree *sel_field_tree, *sic_field_tree, *ind_field_tree;
int offset = 0;
int tvb_end_offset;
@@ -1305,8 +1302,7 @@ dissect_dpnss_e2e_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
* Note: On data calls the SIC may comprise more than one octet.
* The Service Indicator Code is coded in accordance with ANNEX 1.
*/
- sic_field_item = proto_tree_add_text(tree, tvb, offset, -1, "Service Indicator Code");
- sic_field_tree = proto_item_add_subtree(sic_field_item, ett_dpnss_sic_field);
+ sic_field_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_dpnss_sic_field, NULL, "Service Indicator Code");
offset =dissect_dpnss_sic(tvb, pinfo, sic_field_tree, offset);
/*
* Selection Field
@@ -1352,7 +1348,7 @@ dissect_dpnss_e2e_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static int
dissect_dpnss_cc_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *sel_field_item, *sic_field_item, *ind_field_item;
+ proto_item *sel_field_item, *ind_field_item;
proto_tree *sel_field_tree, *sic_field_tree, *ind_field_tree;
int offset = 0;
int tvb_end_offset;
@@ -1382,8 +1378,7 @@ dissect_dpnss_cc_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
* Note: On data calls the SIC may comprise more than one octet.
* The Service Indicator Code is coded in accordance with ANNEX 1.
*/
- sic_field_item = proto_tree_add_text(tree, tvb, offset, -1, "Service Indicator Code");
- sic_field_tree = proto_item_add_subtree(sic_field_item, ett_dpnss_sic_field);
+ sic_field_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_dpnss_sic_field, NULL, "Service Indicator Code");
offset =dissect_dpnss_sic(tvb, pinfo, sic_field_tree, offset);
/*
* Selection Field
diff --git a/epan/dissectors/packet-drda.c b/epan/dissectors/packet-drda.c
index c82565c771..79d14005f9 100644
--- a/epan/dissectors/packet-drda.c
+++ b/epan/dissectors/packet-drda.c
@@ -720,9 +720,8 @@ dissect_drda(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_
proto_item_append_text(ti, " (%s)", val_to_str_ext(iCommand, &drda_opcode_vals_ext, "Unknown (0x%02x)"));
drdaroot_tree = proto_item_add_subtree(ti, ett_drda);
- ti = proto_tree_add_text(drdaroot_tree, tvb, offset, 10, DRDA_TEXT_DDM);
+ drda_tree = proto_tree_add_subtree(drdaroot_tree, tvb, offset, 10, ett_drda_ddm, &ti, DRDA_TEXT_DDM);
proto_item_append_text(ti, " (%s)", val_to_str_ext(iCommand, &drda_opcode_abbr_ext, "Unknown (0x%02x)"));
- drda_tree = proto_item_add_subtree(ti, ett_drda_ddm);
proto_tree_add_item(drda_tree, hf_drda_ddm_length, tvb, offset + 0, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(drda_tree, hf_drda_ddm_magic, tvb, offset + 2, 1, ENC_BIG_ENDIAN);
@@ -754,10 +753,9 @@ dissect_drda(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_
if (tvb_length_remaining(tvb, offset) >= iLengthParam)
{
iParameterCP = tvb_get_ntohs(tvb, offset + 2);
- ti = proto_tree_add_text(drdaroot_tree, tvb, offset, iLengthParam,
- DRDA_TEXT_PARAM);
+ drda_tree_sub = proto_tree_add_subtree(drdaroot_tree, tvb, offset, iLengthParam,
+ ett_drda_param, &ti, DRDA_TEXT_PARAM);
proto_item_append_text(ti, " (%s)", val_to_str_ext(iParameterCP, &drda_opcode_vals_ext, "Unknown (0x%02x)"));
- drda_tree_sub = proto_item_add_subtree(ti, ett_drda_param);
proto_tree_add_item(drda_tree_sub, hf_drda_param_length, tvb, offset, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(drda_tree_sub, hf_drda_param_codepoint, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(drda_tree_sub, hf_drda_param_data, tvb, offset + 4, iLengthParam - 4, ENC_UTF_8|ENC_NA);
diff --git a/epan/dissectors/packet-dsi.c b/epan/dissectors/packet-dsi.c
index 3271105fec..2ed4c808f9 100644
--- a/epan/dissectors/packet-dsi.c
+++ b/epan/dissectors/packet-dsi.c
@@ -160,12 +160,10 @@ static gint
dissect_dsi_open_session(tvbuff_t *tvb, proto_tree *dsi_tree, gint offset, gint dsi_length)
{
proto_tree *tree;
- proto_item *ti;
guint8 type;
guint8 len;
- ti = proto_tree_add_text(dsi_tree, tvb, offset, -1, "Open Session");
- tree = proto_item_add_subtree(ti, ett_dsi_open);
+ tree = proto_tree_add_subtree(dsi_tree, tvb, offset, -1, ett_dsi_open, NULL, "Open Session");
while( dsi_length >2 ) {
@@ -207,8 +205,7 @@ dissect_dsi_attention(tvbuff_t *tvb, proto_tree *dsi_tree, gint offset)
return offset;
flag = tvb_get_ntohs(tvb, offset);
- ti = proto_tree_add_text(dsi_tree, tvb, offset, -1, "Attention");
- tree = proto_item_add_subtree(ti, ett_dsi_attn);
+ tree = proto_tree_add_subtree(dsi_tree, tvb, offset, -1, ett_dsi_attn, NULL, "Attention");
ti = proto_tree_add_item(tree, hf_dsi_attn_flag, tvb, offset, 2, ENC_BIG_ENDIAN);
tree = proto_item_add_subtree(ti, ett_dsi_attn_flag);
diff --git a/epan/dissectors/packet-dtcp-ip.c b/epan/dissectors/packet-dtcp-ip.c
index 8a667127aa..178a9d3e37 100644
--- a/epan/dissectors/packet-dtcp-ip.c
+++ b/epan/dissectors/packet-dtcp-ip.c
@@ -140,7 +140,7 @@ dissect_dtcp_ip(tvbuff_t *tvb, packet_info *pinfo,
{
guint offset = 0;
guint16 length;
- proto_item *pi, *pi_ctrl;
+ proto_item *pi;
proto_tree *dtcp_ip_tree, *dtcp_ip_ctrl_tree;
guint8 subfct_val;
const gchar *subfct_str;
@@ -169,9 +169,8 @@ dissect_dtcp_ip(tvbuff_t *tvb, packet_info *pinfo,
tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
- pi_ctrl = proto_tree_add_text(dtcp_ip_tree,
- tvb, offset, CTRL_LEN, "Control");
- dtcp_ip_ctrl_tree = proto_item_add_subtree(pi_ctrl, ett_dtcp_ip_ctrl);
+ dtcp_ip_ctrl_tree = proto_tree_add_subtree(dtcp_ip_tree,
+ tvb, offset, CTRL_LEN, ett_dtcp_ip_ctrl, NULL, "Control");
/* for now, we don't display the 4 reserved bits */
proto_tree_add_item(dtcp_ip_ctrl_tree, hf_dtcp_ip_ctype,
diff --git a/epan/dissectors/packet-dtls.c b/epan/dissectors/packet-dtls.c
index 71bf1eddd0..c48d7d624f 100644
--- a/epan/dissectors/packet-dtls.c
+++ b/epan/dissectors/packet-dtls.c
@@ -1568,7 +1568,6 @@ dissect_dtls_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 *dtls_rnd_tree;
if (tree || ssl)
@@ -1593,8 +1592,7 @@ dissect_dtls_hnd_hello_common(tvbuff_t *tvb, proto_tree *tree,
ssl->state);
}
- ti_rnd = proto_tree_add_text(tree, tvb, offset, 32, "Random");
- dtls_rnd_tree = proto_item_add_subtree(ti_rnd, ett_dtls_random);
+ dtls_rnd_tree = proto_tree_add_subtree(tree, tvb, offset, 32, ett_dtls_random, NULL, "Random");
/* show the time */
gmt_unix_time.secs = tvb_get_ntohl(tvb, offset);
@@ -1907,7 +1905,6 @@ dissect_dtls_hnd_new_ses_ticket(tvbuff_t *tvb,
proto_tree *tree, guint32 offset, guint32 length)
{
guint nst_len;
- proto_item *ti;
proto_tree *subtree;
@@ -1916,8 +1913,7 @@ dissect_dtls_hnd_new_ses_ticket(tvbuff_t *tvb,
return;
}
- ti = proto_tree_add_text(tree, tvb, offset, 6+nst_len, "TLS Session Ticket");
- subtree = proto_item_add_subtree(ti, ett_dtls_new_ses_ticket);
+ subtree = proto_tree_add_subtree(tree, tvb, offset, 6+nst_len, ett_dtls_new_ses_ticket, NULL, "TLS Session Ticket");
proto_tree_add_item(subtree, hf_dtls_handshake_session_ticket_lifetime_hint,
tvb, offset, 4, ENC_BIG_ENDIAN);
diff --git a/epan/dissectors/packet-dtn.c b/epan/dissectors/packet-dtn.c
index a42839ba82..5492c58e0c 100644
--- a/epan/dissectors/packet-dtn.c
+++ b/epan/dissectors/packet-dtn.c
@@ -485,13 +485,11 @@ static int
dissect_dictionary(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset, dictionary_data_t* dict_data,
guint8 pri_hdr_procflags, gchar **bundle_custodian)
{
- proto_item *ti;
proto_tree *dict_tree;
int sdnv_length;
const gchar *src_node, *dst_node;
- ti = proto_tree_add_text(tree, tvb, offset, dict_data->bundle_header_dict_length, "Dictionary");
- dict_tree = proto_item_add_subtree(ti, ett_dictionary);
+ dict_tree = proto_tree_add_subtree(tree, tvb, offset, dict_data->bundle_header_dict_length, ett_dictionary, NULL, "Dictionary");
/*
* If the dictionary length is 0, then the CBHE block compression method is applied. (RFC6260)
@@ -1068,8 +1066,7 @@ dissect_payload_header(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int
proto_tree *payload_tree;
int sdnv_length, payload_length;
- payload_item = proto_tree_add_text(tree, tvb, offset, -1, "Payload Header");
- payload_tree = proto_item_add_subtree(payload_item, ett_payload_hdr);
+ payload_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_payload_hdr, &payload_item, "Payload Header");
proto_tree_add_text(payload_tree, tvb, offset, 1, "Header Type: 1");
++offset;
@@ -1183,8 +1180,8 @@ dissect_admin_record(proto_tree *primary_tree, tvbuff_t *tvb, packet_info *pinfo
int endpoint_length;
*success = FALSE;
- admin_record_item = proto_tree_add_text(primary_tree, tvb, offset, -1, "Administrative Record");
- admin_record_tree = proto_item_add_subtree(admin_record_item, ett_admin_record);
+ admin_record_tree = proto_tree_add_subtree(primary_tree, tvb, offset, -1,
+ ett_admin_record, &admin_record_item, "Administrative Record");
record_type = tvb_get_guint8(tvb, offset);
proto_tree_add_item(admin_record_tree, hf_bundle_admin_record_type, tvb, offset, 1, ENC_NA);
@@ -1472,8 +1469,7 @@ display_metadata_block(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int
proto_item *block_flag_item;
type = tvb_get_guint8(tvb, offset);
- block_item = proto_tree_add_text(tree, tvb, offset, -1, "Metadata Block");
- block_tree = proto_item_add_subtree(block_item, ett_metadata_hdr);
+ block_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_metadata_hdr, &block_item, "Metadata Block");
proto_tree_add_item(block_tree, hf_bundle_block_type_code, tvb, offset, 1, ENC_BIG_ENDIAN);
++offset;
@@ -1741,8 +1737,7 @@ dissect_dtn_contact_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
ti = proto_tree_add_item(tree, proto_tcp_conv, tvb, offset, -1, ENC_NA);
conv_proto_tree = proto_item_add_subtree(ti, ett_tcp_conv);
- ti = proto_tree_add_text(conv_proto_tree, tvb, offset, -1, "Contact Header");
- conv_tree = proto_item_add_subtree(ti, ett_tcp_conv);
+ conv_tree = proto_tree_add_subtree(conv_proto_tree, tvb, offset, -1, ett_tcp_conv, NULL, "Contact Header");
proto_tree_add_item(conv_tree, hf_contact_hdr_magic, tvb, offset, 4, ENC_NA|ENC_ASCII);
offset += 4;
@@ -1817,7 +1812,7 @@ dissect_tcpcl_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* dat
guint8 conv_hdr;
int offset = 0;
int sdnv_length, segment_length, convergence_hdr_size;
- proto_item *ci, *conv_item, *sub_item;
+ proto_item *ci, *sub_item;
proto_tree *conv_proto_tree, *conv_tree, *sub_tree;
fragment_head *frag_msg;
tvbuff_t *new_tvb;
@@ -1829,8 +1824,7 @@ dissect_tcpcl_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* dat
ci = proto_tree_add_item(tree, proto_tcp_conv, tvb, offset, -1, ENC_NA);
conv_proto_tree = proto_item_add_subtree(ci, ett_tcp_conv);
- conv_item = proto_tree_add_text(conv_proto_tree, tvb, 0, -1, "TCP Convergence Header");
- conv_tree = proto_item_add_subtree(conv_item, ett_tcp_conv_hdr);
+ conv_tree = proto_tree_add_subtree(conv_proto_tree, tvb, 0, -1, ett_tcp_conv_hdr, NULL, "TCP Convergence Header");
conv_hdr = tvb_get_guint8(tvb, offset);
proto_tree_add_item(conv_tree, hf_tcp_convergence_pkt_type, tvb, offset, 1, ENC_NA);
@@ -2050,8 +2044,7 @@ dissect_bundle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _
ti = proto_tree_add_item(tree, proto_bundle, tvb, offset, -1, ENC_NA);
bundle_tree = proto_item_add_subtree(ti, ett_bundle);
- ti = proto_tree_add_text(tree, tvb, offset, -1, "Primary Bundle Header");
- primary_tree = proto_item_add_subtree(ti, ett_primary_hdr);
+ primary_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_primary_hdr, &ti, "Primary Bundle Header");
proto_tree_add_item(primary_tree, hf_bundle_pdu_version, tvb, offset, 1, ENC_BIG_ENDIAN);
if (version == 4) {
diff --git a/epan/dissectors/packet-dtp.c b/epan/dissectors/packet-dtp.c
index 3e4d7f95e4..f13849f603 100644
--- a/epan/dissectors/packet-dtp.c
+++ b/epan/dissectors/packet-dtp.c
@@ -186,10 +186,9 @@ dissect_dtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
type = tvb_get_ntohs(tvb, offset);
length = tvb_get_ntohs(tvb, offset + 2);
- ti = proto_tree_add_text(dtp_tree, tvb, offset, length, "%s",
+ tlv_tree = proto_tree_add_subtree(dtp_tree, tvb, offset, length, ett_dtp_tlv, NULL,
val_to_str(type, dtp_tlv_type_vals, "Unknown TLV type: 0x%02x"));
- tlv_tree = proto_item_add_subtree(ti, ett_dtp_tlv);
proto_tree_add_uint(tlv_tree, hf_dtp_tlvtype, tvb, offset, 2, type);
offset+=2;
@@ -227,7 +226,6 @@ dissect_dtp_tlv(packet_info *pinfo, tvbuff_t *tvb, int offset, int length,
case DTP_TLV_TRSTATUS:
if (length == 1) { /* Value field length must be 1 byte */
- proto_item * value_item = NULL;
proto_tree * field_tree = NULL;
guint8 trunk_status = tvb_get_guint8(tvb, offset);
@@ -236,11 +234,10 @@ dissect_dtp_tlv(packet_info *pinfo, tvbuff_t *tvb, int offset, int length,
val_to_str_const(DTP_TOSVALUE(trunk_status), dtp_tos_vals, "Unknown operating status"),
val_to_str_const(DTP_TASVALUE(trunk_status), dtp_tas_vals, "Unknown administrative status"),
trunk_status);
- value_item = proto_tree_add_text(tree, tvb, offset, length, "Value: %s/%s (0x%02x)",
+ field_tree = proto_tree_add_subtree_format(tree, tvb, offset, length, ett_dtp_status, NULL, "Value: %s/%s (0x%02x)",
val_to_str_const(DTP_TOSVALUE(trunk_status), dtp_tos_vals, "Unknown operating status"),
val_to_str_const(DTP_TASVALUE(trunk_status), dtp_tas_vals, "Unknown administrative status"),
trunk_status);
- field_tree = proto_item_add_subtree(value_item, ett_dtp_status);
proto_tree_add_item(field_tree, hf_dtp_tos, tvb, offset, length, ENC_NA);
proto_tree_add_item(field_tree, hf_dtp_tas, tvb, offset, length, ENC_NA);
}
@@ -251,19 +248,17 @@ dissect_dtp_tlv(packet_info *pinfo, tvbuff_t *tvb, int offset, int length,
case DTP_TLV_TRTYPE:
if (length == 1) { /* Value field length must be 1 byte */
- proto_item * value_item = NULL;
- proto_tree * field_tree = NULL;
+ proto_tree * field_tree;
guint8 trunk_type = tvb_get_guint8(tvb, offset);
proto_item_append_text(ti,
" (Operating/Administrative): %s/%s (0x%02x)",
val_to_str_const(DTP_TOTVALUE(trunk_type), dtp_tot_vals, "Unknown operating type"),
val_to_str_const(DTP_TATVALUE(trunk_type), dtp_tat_vals, "Unknown administrative type"),
trunk_type);
- value_item = proto_tree_add_text(tree, tvb, offset, length, "Value: %s/%s (0x%02x)",
+ field_tree = proto_tree_add_subtree_format(tree, tvb, offset, length, ett_dtp_type, NULL, "Value: %s/%s (0x%02x)",
val_to_str_const(DTP_TOTVALUE(trunk_type), dtp_tot_vals, "Unknown operating type"),
val_to_str_const(DTP_TATVALUE(trunk_type), dtp_tat_vals, "Unknown administrative type"),
trunk_type);
- field_tree = proto_item_add_subtree(value_item, ett_dtp_type);
proto_tree_add_item(field_tree, hf_dtp_tot, tvb, offset, length, ENC_NA);
proto_tree_add_item(field_tree, hf_dtp_tat, tvb, offset, length, ENC_NA);
}
diff --git a/epan/dissectors/packet-dtpt.c b/epan/dissectors/packet-dtpt.c
index ec15f36b7c..f85a329c46 100644
--- a/epan/dissectors/packet-dtpt.c
+++ b/epan/dissectors/packet-dtpt.c
@@ -240,12 +240,11 @@ dissect_dtpt_wstring(tvbuff_t *tvb, guint offset, proto_tree *tree, int hfindex)
wstring_size += wstring_padding;
}
if (tree) {
- proto_item *dtpt_wstring_item = NULL;
- proto_tree *dtpt_wstring_tree = NULL;
+ proto_item *dtpt_wstring_item;
+ proto_tree *dtpt_wstring_tree;
dtpt_wstring_item = proto_tree_add_string(tree, hfindex,
tvb, offset+0, 4+wstring_size, wstring_data);
- if (dtpt_wstring_item)
- dtpt_wstring_tree = proto_item_add_subtree(dtpt_wstring_item, ett_dtpt_wstring);
+ dtpt_wstring_tree = proto_item_add_subtree(dtpt_wstring_item, ett_dtpt_wstring);
if (dtpt_wstring_tree) {
proto_tree_add_uint(dtpt_wstring_tree, hf_dtpt_wstring_length,
tvb, offset+0, 4, wstring_length);
@@ -333,16 +332,12 @@ dissect_dtpt_sockaddr(tvbuff_t *tvb, guint offset, proto_tree *tree, int hfindex
sockaddr_length = tvb_get_letohl(tvb, offset + 0);
if (tree) {
- sockaddr_item = proto_tree_add_text(tree,
- tvb, offset, sockaddr_len1+sockaddr_len2, "%s", proto_registrar_get_name(hfindex));
-
- if (sockaddr_item)
- sockaddr_tree = proto_item_add_subtree(sockaddr_item, ett_dtpt_sockaddr);
- if (sockaddr_tree) {
- if (sockaddr_type == SOCKADDR_WITH_LEN)
- proto_tree_add_uint(sockaddr_tree, hf_dtpt_sockaddr_length,
+ sockaddr_tree = proto_tree_add_subtree(tree, tvb, offset, sockaddr_len1+sockaddr_len2,
+ ett_dtpt_sockaddr, NULL, proto_registrar_get_name(hfindex));
+
+ if (sockaddr_type == SOCKADDR_WITH_LEN)
+ proto_tree_add_uint(sockaddr_tree, hf_dtpt_sockaddr_length,
tvb, offset+0, 4, sockaddr_length);
- }
}
offset += sockaddr_len1;
@@ -431,10 +426,9 @@ dissect_dtpt_conversation(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, v
static int
dissect_dtpt_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *dtpt_item = NULL;
- proto_tree *dtpt_tree = NULL;
- proto_item *dtpt_queryset_item = NULL;
- proto_tree *dtpt_queryset_tree = NULL;
+ proto_item *dtpt_item;
+ proto_tree *dtpt_tree;
+ proto_tree *dtpt_queryset_tree;
guint offset = 0;
guint32 queryset_rawsize;
guint32 queryset_size;
@@ -444,7 +438,7 @@ dissect_dtpt_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
guint32 num_addrs;
guint32 addrs_length1 = 0;
proto_item *dtpt_addrs_item = NULL;
- proto_tree *dtpt_addrs_tree = NULL;
+ proto_tree *dtpt_addrs_tree;
guint32 blob_rawsize = 0;
guint32 blob_size = 0;
guint32 blob_data_length = 0;
@@ -457,21 +451,15 @@ dissect_dtpt_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
col_set_str(pinfo->cinfo, COL_PROTOCOL, "DTPT");
col_set_str(pinfo->cinfo, COL_INFO, "QuerySet");
- if (tree) {
- dtpt_item = proto_tree_add_item(tree, proto_dtpt,
- tvb, 0, -1, ENC_NA);
- if (dtpt_item)
- dtpt_tree = proto_item_add_subtree(dtpt_item, ett_dtpt);
- }
+ dtpt_item = proto_tree_add_item(tree, proto_dtpt, tvb, 0, -1, ENC_NA);
+ dtpt_tree = proto_item_add_subtree(dtpt_item, ett_dtpt);
if (dtpt_tree) {
proto_tree_add_uint(dtpt_tree, hf_dtpt_queryset_rawsize,
tvb, 0, 4, queryset_rawsize);
- dtpt_queryset_item = proto_tree_add_text(dtpt_tree,
- tvb, 4, 60, "QuerySet raw");
- if (dtpt_queryset_item)
- dtpt_queryset_tree = proto_item_add_subtree(dtpt_queryset_item, ett_dtpt_queryset);
+ dtpt_queryset_tree = proto_tree_add_subtree(dtpt_tree, tvb, 4, 60,
+ ett_dtpt_queryset, NULL, "QuerySet raw");
if (dtpt_queryset_tree) {
proto_tree_add_uint(dtpt_queryset_tree, hf_dtpt_queryset_size,
@@ -524,11 +512,10 @@ dissect_dtpt_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree *dtpt_protocols_tree = NULL;
guint32 i;
- dtpt_protocols_item = proto_tree_add_text(dtpt_tree,
+ dtpt_protocols_tree = proto_tree_add_subtree_format(dtpt_tree,
tvb, offset, 4+(num_protocols>0?4:0)+num_protocols*8,
- "Protocols: %d", num_protocols);
- if (dtpt_protocols_item)
- dtpt_protocols_tree = proto_item_add_subtree(dtpt_protocols_item, ett_dtpt_protocols);
+ ett_dtpt_protocols, NULL, "Protocols: %d", num_protocols);
+
if (dtpt_protocols_tree) {
proto_tree_add_uint(dtpt_protocols_tree, hf_dtpt_protocols_number,
tvb, offset, 4, num_protocols);
@@ -539,10 +526,9 @@ dissect_dtpt_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_item *dtpt_protocol_item = NULL;
proto_tree *dtpt_protocol_tree = NULL;
- dtpt_protocol_item = proto_tree_add_text(dtpt_protocols_tree,
- tvb, offset+4+4+i*8, 8, "Protocol[%d]", i+1);
- if (dtpt_protocol_item)
- dtpt_protocol_tree = proto_item_add_subtree(dtpt_protocol_item, ett_dtpt_protocol);
+ dtpt_protocol_tree = proto_tree_add_subtree_format(dtpt_protocols_tree,
+ tvb, offset+4+4+i*8, 8, ett_dtpt_protocol, NULL, "Protocol[%d]", i+1);
+
if (dtpt_protocol_tree) {
proto_tree_add_uint(dtpt_protocol_tree, hf_dtpt_protocol_family,
tvb, offset+4+4+i*8, 4, tvb_get_letohl(tvb, offset+4+4+i*8));
@@ -553,7 +539,7 @@ dissect_dtpt_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
}
offset += 4 + (num_protocols>0?4:0) + num_protocols*8;
- offset = dissect_dtpt_wstring(tvb, offset, dtpt_tree, hf_dtpt_query_string );
+ offset = dissect_dtpt_wstring(tvb, offset, dtpt_tree, hf_dtpt_query_string);
addrs_start = offset;
num_addrs = tvb_get_letohl(tvb, offset);
@@ -561,10 +547,8 @@ dissect_dtpt_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
addrs_length1 = tvb_get_letohl(tvb, offset+4);
}
if (dtpt_tree) {
- dtpt_addrs_item = proto_tree_add_text(dtpt_tree,
- tvb, offset, -1, "Addresses");
- if (dtpt_addrs_item)
- dtpt_addrs_tree = proto_item_add_subtree(dtpt_addrs_item, ett_dtpt_cs_addrs);
+ dtpt_addrs_tree = proto_tree_add_subtree(dtpt_tree,
+ tvb, offset, -1, ett_dtpt_cs_addrs, &dtpt_addrs_item, "Addresses");
if (dtpt_addrs_tree) {
proto_tree_add_uint(dtpt_addrs_tree, hf_dtpt_cs_addrs_number,
tvb, offset, 4, num_addrs);
@@ -582,18 +566,15 @@ dissect_dtpt_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
offset2 = offset + 24*num_addrs;
for (i=0;i<num_addrs;i++,offset+=24) {
- proto_item *dtpt_addr1_item = NULL;
proto_tree *dtpt_addr1_tree = NULL;
proto_item *dtpt_addr2_item = NULL;
proto_tree *dtpt_addr2_tree = NULL;
guint32 offset2_start;
if (dtpt_addrs_tree) {
- dtpt_addr1_item = proto_tree_add_text(dtpt_addrs_tree,
- tvb, offset, 24, "Address[%u] Part 1", i+1);
- if (dtpt_addr1_item)
- dtpt_addr1_tree = proto_item_add_subtree(dtpt_addr1_item,
- ett_dtpt_cs_addr1);
+ dtpt_addr1_tree = proto_tree_add_subtree_format(dtpt_addrs_tree,
+ tvb, offset, 24, ett_dtpt_cs_addr1, NULL, "Address[%u] Part 1", i+1);
+
if (dtpt_addr1_tree) {
proto_tree_add_uint(dtpt_addr1_tree, hf_dtpt_cs_addr_local_pointer,
tvb, offset+ 0, 4, tvb_get_letohl(tvb, offset+ 0));
@@ -609,11 +590,8 @@ dissect_dtpt_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
tvb, offset+20, 4, tvb_get_letohl(tvb, offset+20));
}
- dtpt_addr2_item = proto_tree_add_text(dtpt_addrs_tree,
- tvb, offset2, -1, "Address[%u] Part 2", i+1);
- if (dtpt_addr2_item)
- dtpt_addr2_tree = proto_item_add_subtree(dtpt_addr2_item,
- ett_dtpt_cs_addr2);
+ dtpt_addr2_tree = proto_tree_add_subtree_format(dtpt_addrs_tree,
+ tvb, offset2, -1, ett_dtpt_cs_addr2, &dtpt_addr2_item, "Address[%u] Part 2", i+1);
}
offset2_start = offset2;
@@ -621,35 +599,29 @@ dissect_dtpt_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
offset2 = dissect_dtpt_sockaddr(tvb, offset2, dtpt_addr2_tree, hf_dtpt_cs_addr_local, SOCKADDR_WITH_LEN);
offset2 = dissect_dtpt_sockaddr(tvb, offset2, dtpt_addr2_tree, hf_dtpt_cs_addr_remote, SOCKADDR_WITH_LEN);
- if (dtpt_addr2_item)
- proto_item_set_len(dtpt_addr2_item,
+ proto_item_set_len(dtpt_addr2_item,
offset2 - offset2_start);
}
offset = offset2;
}
- if (dtpt_addrs_item)
- proto_item_set_len(dtpt_addrs_item, offset - addrs_start);
-
- if (dtpt_item)
- proto_item_set_len(dtpt_item, offset);
+ proto_item_set_len(dtpt_addrs_item, offset - addrs_start);
+ proto_item_set_len(dtpt_item, offset);
blob_rawsize = tvb_get_letohl(tvb, offset);
if (blob_rawsize>=4) {
blob_size = tvb_get_letohl(tvb,offset+4+0);
}
+
if (dtpt_tree) {
- proto_item *dtpt_blobraw_item = NULL;
- proto_tree *dtpt_blobraw_tree = NULL;
+ proto_tree *dtpt_blobraw_tree;
proto_tree_add_uint(dtpt_tree, hf_dtpt_blob_rawsize,
tvb, offset+0, 4, blob_rawsize);
if (blob_rawsize>0) {
- dtpt_blobraw_item = proto_tree_add_text(dtpt_tree,
- tvb, offset+4, blob_rawsize, "Blob raw");
- if (dtpt_blobraw_item)
- dtpt_blobraw_tree = proto_item_add_subtree(dtpt_blobraw_item,
- ett_dtpt_blobraw);
+ dtpt_blobraw_tree = proto_tree_add_subtree(dtpt_tree,
+ tvb, offset+4, blob_rawsize, ett_dtpt_blobraw, NULL, "Blob raw");
+
if (dtpt_blobraw_tree) {
proto_tree_add_uint(dtpt_blobraw_tree, hf_dtpt_blob_size,
tvb, offset+4+0, 4, blob_size);
@@ -661,21 +633,17 @@ dissect_dtpt_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
offset += 4+blob_rawsize;
- if (dtpt_item)
- proto_item_set_len(dtpt_item, offset);
+ proto_item_set_len(dtpt_item, offset);
if (blob_size>0) {
- proto_item *dtpt_blob_item = NULL;
- proto_tree *dtpt_blob_tree = NULL;
+ proto_tree *dtpt_blob_tree;
blob_data_length = tvb_get_letohl(tvb,offset);
if (dtpt_tree) {
- dtpt_blob_item = proto_tree_add_text(dtpt_tree,
- tvb, offset, 4+blob_data_length, "Blob");
- if (dtpt_blob_item)
- dtpt_blob_tree = proto_item_add_subtree(dtpt_blob_item,
- ett_dtpt_blob);
+ dtpt_blob_tree = proto_tree_add_subtree(dtpt_tree,
+ tvb, offset, 4+blob_data_length, ett_dtpt_blob, NULL, "Blob");
+
if (dtpt_blob_tree) {
proto_tree_add_uint(dtpt_blob_tree, hf_dtpt_blob_data_length,
tvb, offset+0, 4, blob_data_length);
@@ -694,8 +662,8 @@ dissect_dtpt_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static int
dissect_dtpt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
{
- proto_tree *dtpt_tree = NULL;
- proto_item *dtpt_item = NULL;
+ proto_tree *dtpt_tree;
+ proto_item *dtpt_item;
guint8 version;
guint8 message_type;
guint32 flags;
@@ -730,12 +698,8 @@ dissect_dtpt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_
conversation_set_dissector(c, dtpt_conversation_handle);
}
- if (tree) {
- dtpt_item = proto_tree_add_item(tree, proto_dtpt,
- tvb, 0, -1, ENC_NA);
- if (dtpt_item)
- dtpt_tree = proto_item_add_subtree(dtpt_item, ett_dtpt);
- }
+ dtpt_item = proto_tree_add_item(tree, proto_dtpt, tvb, 0, -1, ENC_NA);
+ dtpt_tree = proto_item_add_subtree(dtpt_item, ett_dtpt);
if (dtpt_tree) {
proto_tree_add_uint(dtpt_tree, hf_dtpt_version,
diff --git a/epan/dissectors/packet-dua.c b/epan/dissectors/packet-dua.c
index b42b49470e..42cc6eba9b 100644
--- a/epan/dissectors/packet-dua.c
+++ b/epan/dissectors/packet-dua.c
@@ -469,10 +469,9 @@ dissect_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *tree,
padding_length = tvb_length(parameter_tvb) - length;
/* create proto_tree stuff */
- parameter_item = proto_tree_add_text(dua_tree, parameter_tvb, PARAMETER_HEADER_OFFSET,
- tvb_length(parameter_tvb), "%s",
+ parameter_tree = proto_tree_add_subtree(dua_tree, parameter_tvb, PARAMETER_HEADER_OFFSET,
+ -1, ett_dua_parameter, &parameter_item,
val_to_str_const(tag, parameter_tag_values, "Unknown parameter"));
- parameter_tree = proto_item_add_subtree(parameter_item, ett_dua_parameter);
/* add tag and length to the dua tree */
proto_tree_add_item(parameter_tree, hf_parameter_tag,
diff --git a/epan/dissectors/packet-dvb-ait.c b/epan/dissectors/packet-dvb-ait.c
index aa31bfdb25..db65844e75 100644
--- a/epan/dissectors/packet-dvb-ait.c
+++ b/epan/dissectors/packet-dvb-ait.c
@@ -284,8 +284,7 @@ dissect_dvb_ait_descriptor(tvbuff_t *tvb, guint offset,
gint ret;
guint offset_start;
guint8 tag, len;
- proto_item *descr_tree_ti = NULL;
- proto_tree *descr_tree = NULL;
+ proto_tree *descr_tree;
tag = tvb_get_guint8(tvb, offset);
len = tvb_get_guint8(tvb, offset+1);
@@ -297,9 +296,8 @@ dissect_dvb_ait_descriptor(tvbuff_t *tvb, guint offset,
if (try_val_to_str(tag, ait_descr_tag)) {
offset_start = offset;
- descr_tree_ti = proto_tree_add_text(tree, tvb, offset_start, len+2,
- "Descriptor Tag=0x%02x", tag);
- descr_tree = proto_item_add_subtree(descr_tree_ti, ett_dvb_ait_descr);
+ descr_tree = proto_tree_add_subtree_format(tree, tvb, offset_start, len+2,
+ ett_dvb_ait_descr, NULL, "Descriptor Tag=0x%02x", tag);
proto_tree_add_item(descr_tree, hf_dvb_ait_descr_tag,
tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -413,9 +411,8 @@ dissect_dvb_ait(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data
offset_app_start = offset;
org_id = tvb_get_ntohl(tvb, offset);
app_id = tvb_get_ntohs(tvb, offset+4);
- app_tree_ti = proto_tree_add_text(ait_tree, tvb, offset, -1,
- "Application: Org 0x%x, App 0x%x", org_id, app_id);
- ait_app_tree = proto_item_add_subtree(app_tree_ti, ett_dvb_ait_app);
+ ait_app_tree = proto_tree_add_subtree_format(ait_tree, tvb, offset, -1,
+ ett_dvb_ait_app, &app_tree_ti, "Application: Org 0x%x, App 0x%x", org_id, app_id);
proto_tree_add_item(ait_app_tree, hf_dvb_ait_org_id,
tvb, offset, 4, ENC_BIG_ENDIAN);
diff --git a/epan/dissectors/packet-dvb-bat.c b/epan/dissectors/packet-dvb-bat.c
index 6a0dfb5080..4dd351b1f6 100644
--- a/epan/dissectors/packet-dvb-bat.c
+++ b/epan/dissectors/packet-dvb-bat.c
@@ -105,7 +105,6 @@ dissect_dvb_bat(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_item *ti;
proto_tree *dvb_bat_tree;
- proto_item *tsi;
proto_tree *transport_stream_tree;
col_set_str(pinfo->cinfo, COL_INFO, "Bouquet Association Table (BAT)");
@@ -147,8 +146,8 @@ dissect_dvb_bat(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
ts_id = tvb_get_ntohs(tvb, offset);
descriptor_len = tvb_get_ntohs(tvb, offset + 4) & DVB_BAT_TRANSPORT_DESCRIPTORS_LENGTH_MASK;
- tsi = proto_tree_add_text(dvb_bat_tree, tvb, offset, 6 + descriptor_len, "Transport Stream 0x%04x", ts_id);
- transport_stream_tree = proto_item_add_subtree(tsi, ett_dvb_bat_transport_stream);
+ transport_stream_tree = proto_tree_add_subtree_format(dvb_bat_tree, tvb, offset, 6 + descriptor_len,
+ ett_dvb_bat_transport_stream, NULL, "Transport Stream 0x%04x", ts_id);
proto_tree_add_item(transport_stream_tree, hf_dvb_bat_transport_stream_id, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
diff --git a/epan/dissectors/packet-dvb-eit.c b/epan/dissectors/packet-dvb-eit.c
index 5f72794751..67ea0ce25f 100644
--- a/epan/dissectors/packet-dvb-eit.c
+++ b/epan/dissectors/packet-dvb-eit.c
@@ -100,7 +100,6 @@ dissect_dvb_eit(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_item *ti;
proto_tree *dvb_eit_tree;
- proto_item *ei;
proto_tree *dvb_eit_event_tree;
proto_item *duration_item;
@@ -150,8 +149,7 @@ dissect_dvb_eit(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
while (offset < length) {
evt_id = tvb_get_ntohs(tvb, offset);
- ei = proto_tree_add_text(dvb_eit_tree, tvb, offset, 12, "Event 0x%04hx", evt_id);
- dvb_eit_event_tree = proto_item_add_subtree(ei, ett_dvb_eit_event);
+ dvb_eit_event_tree = proto_tree_add_subtree_format(dvb_eit_tree, tvb, offset, 12, ett_dvb_eit_event, NULL, "Event 0x%04hx", evt_id);
proto_tree_add_item(dvb_eit_event_tree, hf_dvb_eit_event_id, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
diff --git a/epan/dissectors/packet-dvb-nit.c b/epan/dissectors/packet-dvb-nit.c
index 05907c2c62..7ccab92cd9 100644
--- a/epan/dissectors/packet-dvb-nit.c
+++ b/epan/dissectors/packet-dvb-nit.c
@@ -84,7 +84,6 @@ dissect_dvb_nit(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data
proto_item *ti;
proto_tree *dvb_nit_tree;
- proto_item *tsi;
proto_tree *dvb_nit_ts_tree;
col_set_str(pinfo->cinfo, COL_INFO, "Network Information Table (NIT)");
@@ -124,8 +123,8 @@ dissect_dvb_nit(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data
tsid = tvb_get_ntohs(tvb, offset);
ts_desc_len = 3 + (tvb_get_ntohs(tvb, offset + 4) & DVB_NIT_TRANSPORT_DESCRIPTORS_LENGTH_MASK);
- tsi = proto_tree_add_text(dvb_nit_tree, tvb, offset, ts_desc_len, "Stream ID=0x%04hx", tsid);
- dvb_nit_ts_tree = proto_item_add_subtree(tsi, ett_dvb_nit_ts);
+ dvb_nit_ts_tree = proto_tree_add_subtree_format(dvb_nit_tree, tvb, offset, ts_desc_len,
+ ett_dvb_nit_ts, NULL, "Stream ID=0x%04hx", tsid);
proto_tree_add_item(dvb_nit_ts_tree, hf_dvb_nit_transport_stream_id, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
diff --git a/epan/dissectors/packet-dvb-sdt.c b/epan/dissectors/packet-dvb-sdt.c
index 9e3f928c00..20df8cc29a 100644
--- a/epan/dissectors/packet-dvb-sdt.c
+++ b/epan/dissectors/packet-dvb-sdt.c
@@ -103,7 +103,6 @@ dissect_dvb_sdt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_item *ti;
proto_tree *dvb_sdt_tree;
- proto_item *si;
proto_tree *dvb_sdt_service_tree;
/* The TVB should start right after the section_length in the Section packet */
@@ -144,8 +143,8 @@ dissect_dvb_sdt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
while (offset < length) {
svc_id = tvb_get_ntohs(tvb, offset);
- si = proto_tree_add_text(dvb_sdt_tree, tvb, offset, 5, "Service 0x%04hx", svc_id);
- dvb_sdt_service_tree = proto_item_add_subtree(si, ett_dvb_sdt_service);
+ dvb_sdt_service_tree = proto_tree_add_subtree_format(dvb_sdt_tree, tvb, offset, 5,
+ ett_dvb_sdt_service, NULL, "Service 0x%04hx", svc_id);
proto_tree_add_item(dvb_sdt_service_tree, hf_dvb_sdt_service_id, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
diff --git a/epan/dissectors/packet-dvbci.c b/epan/dissectors/packet-dvbci.c
index 0e553c2c62..608e284d76 100644
--- a/epan/dissectors/packet-dvbci.c
+++ b/epan/dissectors/packet-dvbci.c
@@ -1754,7 +1754,6 @@ dissect_opp_cap_loop(guint8 cap_loop_len, const gchar *title,
tvbuff_t *tvb, gint offset,
packet_info *pinfo _U_, proto_tree *tree)
{
- proto_item *ti = NULL;
proto_tree *loop_tree = NULL;
guint i;
@@ -1764,8 +1763,7 @@ dissect_opp_cap_loop(guint8 cap_loop_len, const gchar *title,
return -1;
if (tree && cap_loop_len>0) {
- ti = proto_tree_add_text(tree, tvb, offset, cap_loop_len, "%s", title);
- loop_tree = proto_item_add_subtree(ti, ett_dvbci_opp_cap_loop);
+ loop_tree = proto_tree_add_subtree(tree, tvb, offset, cap_loop_len, ett_dvbci_opp_cap_loop, NULL, title);
}
for (i=0; i<cap_loop_len; i+=item_len) {
proto_tree_add_item(loop_tree, item_hf,
@@ -1825,7 +1823,7 @@ static gint
dissect_conn_desc(tvbuff_t *tvb, gint offset, circuit_t *circuit,
packet_info *pinfo, proto_tree *tree)
{
- proto_item *ti = NULL;
+ proto_item *ti;
proto_tree *conn_desc_tree = NULL;
guint32 tag;
gint offset_start, offset_body;
@@ -1842,9 +1840,8 @@ dissect_conn_desc(tvbuff_t *tvb, gint offset, circuit_t *circuit,
if (tag!= T_CONNECTION_DESCRIPTOR)
return 0;
- ti = proto_tree_add_text(tree, tvb,
- offset_start, -1, "Connection descriptor");
- conn_desc_tree = proto_item_add_subtree(ti, ett_dvbci_lsc_conn_desc);
+ conn_desc_tree = proto_tree_add_subtree(tree, tvb,
+ offset_start, -1, ett_dvbci_lsc_conn_desc, &ti, "Connection descriptor");
proto_tree_add_item(conn_desc_tree, hf_dvbci_apdu_tag,
tvb, offset, APDU_TAG_SIZE, ENC_BIG_ENDIAN);
@@ -2034,7 +2031,7 @@ static gint
dissect_cc_item(tvbuff_t *tvb, gint offset,
packet_info *pinfo, proto_tree *tree, guint8 *dat_id_ptr)
{
- proto_item *ti = NULL;
+ proto_item *ti;
proto_tree *cc_item_tree = NULL;
gint offset_start;
guint16 dat_len;
@@ -2050,9 +2047,8 @@ dissect_cc_item(tvbuff_t *tvb, gint offset,
if (dat_id_ptr)
*dat_id_ptr = dat_id;
- ti = proto_tree_add_text(tree, tvb, offset_start, -1, "CC data item: %s",
- val_to_str_const(dat_id, dvbci_cc_dat_id, "unknown"));
- cc_item_tree = proto_item_add_subtree(ti, ett_dvbci_cc_item);
+ cc_item_tree = proto_tree_add_subtree_format(tree, tvb, offset_start, -1, ett_dvbci_cc_item, &ti,
+ "CC data item: %s", val_to_str_const(dat_id, dvbci_cc_dat_id, "unknown"));
proto_tree_add_item(cc_item_tree, hf_dvbci_cc_dat_id,
tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2487,7 +2483,7 @@ dissect_ca_desc(tvbuff_t *tvb, gint offset, packet_info *pinfo,
{
gint offset_start;
guint8 tag, len_byte;
- proto_item *ti = NULL;
+ proto_item *ti;
proto_tree *ca_desc_tree = NULL;
offset_start = offset;
@@ -2499,9 +2495,8 @@ dissect_ca_desc(tvbuff_t *tvb, gint offset, packet_info *pinfo,
return 0;
}
- ti = proto_tree_add_text(
- tree, tvb, offset_start, -1, "Conditional Access descriptor");
- ca_desc_tree = proto_item_add_subtree(ti, ett_dvbci_ca_desc);
+ ca_desc_tree = proto_tree_add_subtree(
+ tree, tvb, offset_start, -1, ett_dvbci_ca_desc, &ti, "Conditional Access descriptor");
offset++;
len_byte = tvb_get_guint8(tvb,offset);
@@ -2533,7 +2528,7 @@ static gint
dissect_es(tvbuff_t *tvb, gint offset,
packet_info *pinfo, proto_tree *tree, gboolean *scrambled)
{
- proto_item *ti = NULL;
+ proto_item *ti;
proto_tree *es_tree = NULL;
gint offset_start, ca_desc_len;
gint es_info_len, all_len;
@@ -2546,8 +2541,7 @@ dissect_es(tvbuff_t *tvb, gint offset,
*scrambled = FALSE;
}
- ti = proto_tree_add_text(tree, tvb, offset_start, -1, "Elementary Stream");
- es_tree = proto_item_add_subtree(ti, ett_dvbci_application);
+ es_tree = proto_tree_add_subtree(tree, tvb, offset_start, -1, ett_dvbci_application, &ti, "Elementary Stream");
proto_tree_add_item(
es_tree, hf_dvbci_stream_type, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2590,7 +2584,7 @@ static gint
dissect_dvbci_text(const gchar *title, tvbuff_t *tvb, gint offset,
packet_info *pinfo, proto_tree *tree, int hf)
{
- proto_item *ti = NULL;
+ proto_item *ti;
proto_tree *text_tree;
guint32 tag;
gint offset_start;
@@ -2606,8 +2600,7 @@ dissect_dvbci_text(const gchar *title, tvbuff_t *tvb, gint offset,
if (tag!=T_TEXT_LAST && tag!=T_TEXT_MORE)
return 0;
- ti = proto_tree_add_text(tree, tvb, offset_start, -1, "%s", title);
- text_tree = proto_item_add_subtree(ti, ett_dvbci_text);
+ text_tree = proto_tree_add_subtree(tree, tvb, offset_start, -1, ett_dvbci_text, &ti, title);
proto_tree_add_item(text_tree, hf_dvbci_apdu_tag,
tvb, offset, APDU_TAG_SIZE, ENC_BIG_ENDIAN);
@@ -2658,9 +2651,8 @@ dissect_res_id(tvbuff_t *tvb, gint offset, packet_info *pinfo,
RES_VER(res_id));
}
- ti = proto_tree_add_text(tree, tvb, offset, tvb_data_len,
- "Resource ID: 0x%04x", res_id);
- res_tree = proto_item_add_subtree(ti, ett_dvbci_res);
+ res_tree = proto_tree_add_subtree_format(tree, tvb, offset, tvb_data_len,
+ ett_dvbci_res, &ti, "Resource ID: 0x%04x", res_id);
/* parameter "value" == complete resource id,
RES_..._MASK will be applied by the hf definition */
@@ -2754,7 +2746,6 @@ dissect_dvbci_payload_ca(guint32 tag, gint len_field,
packet_info *pinfo, proto_tree *tree)
{
const gchar *tag_str;
- proto_item *pi;
guint16 prog_num;
guint8 byte;
guint prog_info_len;
@@ -2849,8 +2840,7 @@ dissect_dvbci_payload_ca(guint32 tag, gint len_field,
offset++;
while (tvb_reported_length_remaining(tvb, offset) > 0) {
/* there's no need to check for tree==NULL */
- pi = proto_tree_add_text(tree, tvb, offset, 3, "Elementary Stream");
- es_tree = proto_item_add_subtree(pi, ett_dvbci_application);
+ es_tree = proto_tree_add_subtree(tree, tvb, offset, 3, ett_dvbci_application, NULL, "Elementary Stream");
proto_tree_add_item(es_tree, hf_dvbci_es_pid,
tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -3325,7 +3315,7 @@ dissect_sac_msg(guint32 tag, tvbuff_t *tvb, gint offset,
gint offset_start;
guint32 msg_ctr;
guint8 enc_flag, enc_cip;
- proto_item *enc_flag_pi, *ti;
+ proto_item *enc_flag_pi;
guint16 sac_payload_len; /* payload data and padding */
gint sac_payload_data_len = 0; /* just payload data */
tvbuff_t *clear_sac_body_tvb;
@@ -3380,9 +3370,8 @@ dissect_sac_msg(guint32 tag, tvbuff_t *tvb, gint offset,
if (enc_flag)
add_new_data_source(pinfo, clear_sac_body_tvb, "Clear SAC message body");
if (sac_payload_len>0) {
- ti = proto_tree_add_text(tree, clear_sac_body_tvb, 0, sac_payload_len,
- "SAC message payload");
- sac_tree = proto_item_add_subtree(ti, ett_dvbci_sac_msg_body);
+ sac_tree = proto_tree_add_subtree(tree, clear_sac_body_tvb, 0, sac_payload_len,
+ ett_dvbci_sac_msg_body, NULL, "SAC message payload");
if (tag==T_CC_SAC_DATA_REQ || tag==T_CC_SAC_DATA_CNF) {
sac_payload_data_len = dissect_cc_data_payload(tag,
clear_sac_body_tvb, 0, pinfo, sac_tree, &is_exportable);
@@ -3589,7 +3578,6 @@ dissect_dvbci_ami_file_ack(tvbuff_t *tvb, gint offset,
guint8 *file_name_str;
guint32 file_data_len;
tvbuff_t *png_file_tvb = NULL;
- proto_item *ti;
proto_tree *req_tree;
req_type = tvb_get_guint8(tvb, offset+1);
@@ -3653,11 +3641,9 @@ dissect_dvbci_ami_file_ack(tvbuff_t *tvb, gint offset,
tvb_reported_length_remaining(tvb, offset), ENC_NA);
}
else if (req_type==REQ_TYPE_REQ) {
- ti = proto_tree_add_text(tree, tvb,
+ req_tree = proto_tree_add_subtree(tree, tvb,
offset, tvb_reported_length_remaining(tvb, offset),
- "Supported request types");
- req_tree = proto_item_add_subtree(
- ti, ett_dvbci_ami_req_types);
+ ett_dvbci_ami_req_types, NULL, "Supported request types");
while (tvb_reported_length_remaining(tvb, offset) > 0) {
proto_tree_add_item(req_tree, hf_dvbci_req_type,
tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -4160,7 +4146,6 @@ static void
dissect_dvbci_apdu(tvbuff_t *tvb, circuit_t *circuit,
packet_info *pinfo, proto_tree *tree, guint8 direction)
{
- proto_item *ti;
proto_tree *app_tree;
guint32 apdu_len, tag, len_field;
const gchar *tag_str;
@@ -4173,8 +4158,7 @@ dissect_dvbci_apdu(tvbuff_t *tvb, circuit_t *circuit,
apdu_len = tvb_reported_length(tvb);
- ti = proto_tree_add_text(tree, tvb, 0, apdu_len, "Application Layer");
- app_tree = proto_item_add_subtree(ti, ett_dvbci_application);
+ app_tree = proto_tree_add_subtree(tree, tvb, 0, apdu_len, ett_dvbci_application, NULL, "Application Layer");
tag = tvb_get_ntoh24(tvb, 0);
tag_str = try_val_to_str(tag, dvbci_apdu_tag);
@@ -4277,8 +4261,7 @@ dissect_dvbci_spdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
spdu_len = tvb_reported_length(tvb);
- ti = proto_tree_add_text(tree, tvb, 0, -1, "Session Layer");
- sess_tree = proto_item_add_subtree(ti, ett_dvbci_session);
+ sess_tree = proto_tree_add_subtree(tree, tvb, 0, -1, ett_dvbci_session, &ti, "Session Layer");
tag = tvb_get_guint8(tvb,0);
tag_str = try_val_to_str(tag, dvbci_spdu_tag);
@@ -4579,8 +4562,7 @@ dissect_dvbci_tpdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
col_clear(pinfo->cinfo, COL_INFO);
- ti = proto_tree_add_text(tree, tvb, 0, -1, "Transport Layer");
- trans_tree = proto_item_add_subtree(ti, ett_dvbci_transport);
+ trans_tree = proto_tree_add_subtree(tree, tvb, 0, -1, ett_dvbci_transport, &ti, "Transport Layer");
offset = dissect_dvbci_tpdu_hdr(tvb, pinfo, trans_tree, direction,
lpdu_tcid, tpdu_len, &hdr_tag, &body_len);
@@ -4638,7 +4620,6 @@ static void
dissect_dvbci_lpdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
guint8 direction)
{
- proto_item *ti;
proto_tree *link_tree;
guint32 payload_len;
guint8 tcid, more_last;
@@ -4651,8 +4632,7 @@ dissect_dvbci_lpdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
col_set_str(pinfo->cinfo, COL_INFO, "LPDU");
- ti = proto_tree_add_text(tree, tvb, 0, 2, "Link Layer");
- link_tree = proto_item_add_subtree(ti, ett_dvbci_link);
+ link_tree = proto_tree_add_subtree(tree, tvb, 0, 2, ett_dvbci_link, NULL, "Link Layer");
tcid = tvb_get_guint8(tvb, 0);
col_append_sep_fstr(pinfo->cinfo, COL_INFO, ": ", "tcid %d", tcid);
@@ -4822,9 +4802,8 @@ dissect_dvbci_cis_payload_config(tvbuff_t *data_tvb,
while (tvb_reported_length_remaining(data_tvb, offset) > 0) {
st_code = tvb_get_guint8(data_tvb, offset);
st_code_str = val_to_str_const(st_code, dvbci_cis_subtpl_code, "unknown");
- st_item = proto_tree_add_text(tree, data_tvb, offset, -1,
- "Subtuple: %s (0x%x)", st_code_str, st_code);
- st_tree = proto_item_add_subtree(st_item, ett_dvbci_cis_subtpl);
+ st_tree = proto_tree_add_subtree_format(tree, data_tvb, offset, -1,
+ ett_dvbci_cis_subtpl, &st_item, "Subtuple: %s (0x%x)", st_code_str, st_code);
proto_tree_add_item(st_tree, hf_dvbci_cis_st_code,
data_tvb, offset, 1, ENC_LITTLE_ENDIAN);
offset++;
@@ -4902,7 +4881,7 @@ dissect_dvbci_cis(tvbuff_t *tvb, gint offset,
{
gint offset_start;
proto_tree *cis_tree = NULL, *tpl_tree = NULL;
- proto_item *ti_main = NULL, *ti_tpl;
+ proto_item *ti_main, *ti_tpl;
guint8 tpl_code;
const gchar *tpl_code_str = NULL;
guint8 len_field;
@@ -4910,17 +4889,15 @@ dissect_dvbci_cis(tvbuff_t *tvb, gint offset,
offset_start = offset;
- ti_main = proto_tree_add_text(tree, tvb, offset, -1,
- "Card Information Structure (CIS)");
- cis_tree = proto_item_add_subtree(ti_main, ett_dvbci_cis);
+ cis_tree = proto_tree_add_subtree(tree, tvb, offset, -1,
+ ett_dvbci_cis, &ti_main, "Card Information Structure (CIS)");
do {
tpl_code = tvb_get_guint8(tvb, offset);
tpl_code_str = val_to_str_const(tpl_code, dvbci_cis_tpl_code, "unknown");
- ti_tpl = proto_tree_add_text(cis_tree,
- tvb, offset, -1, "CIS tuple: %s", tpl_code_str);
- tpl_tree = proto_item_add_subtree(ti_tpl, ett_dvbci_cis_tpl);
+ tpl_tree = proto_tree_add_subtree_format(cis_tree,
+ tvb, offset, -1, ett_dvbci_cis_tpl, &ti_tpl, "CIS tuple: %s", tpl_code_str);
proto_tree_add_uint_format(tpl_tree, hf_dvbci_cis_tpl_code,
tvb, offset, 1, tpl_code, "Tuple code: %s (0x%x)",
@@ -4985,7 +4962,7 @@ dissect_dvbci(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U
guint8 version, event;
const gchar *event_str;
guint16 len_field;
- proto_item *ti, *ti_hdr;
+ proto_item *ti;
proto_tree *dvbci_tree, *hdr_tree;
tvbuff_t *payload_tvb;
guint16 cor_addr;
@@ -5020,8 +4997,7 @@ dissect_dvbci(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U
ti = proto_tree_add_protocol_format(tree, proto_dvbci,
tvb, 0, packet_len, "DVB Common Interface: %s", event_str);
dvbci_tree = proto_item_add_subtree(ti, ett_dvbci);
- ti_hdr = proto_tree_add_text(dvbci_tree, tvb, 0, offset, "Pseudo header");
- hdr_tree = proto_item_add_subtree(ti_hdr, ett_dvbci_hdr);
+ hdr_tree = proto_tree_add_subtree(dvbci_tree, tvb, 0, offset, ett_dvbci_hdr, NULL, "Pseudo header");
proto_tree_add_text(hdr_tree, tvb, offset_ver, 1, "Version: %d", version);
proto_tree_add_item(hdr_tree, hf_dvbci_event, tvb, offset_evt, 1, ENC_BIG_ENDIAN);
proto_tree_add_text(hdr_tree, tvb, offset_len_field, 2,