convert to proto_tree_add_subtree[_format]
authorMichael Mann <mmann78@netscape.net>
Tue, 1 Jul 2014 22:31:05 +0000 (18:31 -0400)
committerMichael Mann <mmann78@netscape.net>
Fri, 4 Jul 2014 16:59:14 +0000 (16:59 +0000)
Change-Id: I621f2e2cad9403449cb78f45302388f0c874d3bc
Reviewed-on: https://code.wireshark.org/review/2852
Reviewed-by: Michael Mann <mmann78@netscape.net>
33 files changed:
epan/dissectors/packet-m2pa.c
epan/dissectors/packet-m2tp.c
epan/dissectors/packet-m2ua.c
epan/dissectors/packet-m3ua.c
epan/dissectors/packet-mac-lte.c
epan/dissectors/packet-maccontrol.c
epan/dissectors/packet-mbim.c
epan/dissectors/packet-mbtcp.c
epan/dissectors/packet-mdshdr.c
epan/dissectors/packet-megaco.c
epan/dissectors/packet-mih.c
epan/dissectors/packet-mip.c
epan/dissectors/packet-mip6.c
epan/dissectors/packet-mndp.c
epan/dissectors/packet-mojito.c
epan/dissectors/packet-mount.c
epan/dissectors/packet-mp2t.c
epan/dissectors/packet-mpeg-descriptor.c
epan/dissectors/packet-mpeg-dsmcc.c
epan/dissectors/packet-mpeg-pat.c
epan/dissectors/packet-mpeg-pmt.c
epan/dissectors/packet-mpls-echo.c
epan/dissectors/packet-mpls-y1711.c
epan/dissectors/packet-mq-pcf.c
epan/dissectors/packet-mq.c
epan/dissectors/packet-mqtt.c
epan/dissectors/packet-msdp.c
epan/dissectors/packet-msproxy.c
epan/dissectors/packet-msrp.c
epan/dissectors/packet-mtp2.c
epan/dissectors/packet-mtp3.c
epan/dissectors/packet-mtp3mg.c
epan/dissectors/packet-mux27010.c

index 7ffc180867bfc3138e5fb0920a08ec7bccaf29ba..120b1f32591d54fcde92410873565e0a9295a691 100644 (file)
@@ -224,14 +224,12 @@ dissect_header(tvbuff_t *header_tvb, packet_info *pinfo, proto_tree *m2pa_tree)
 static void
 dissect_v2_user_data_message(tvbuff_t *message_data_tvb, packet_info *pinfo, proto_item *m2pa_item, proto_tree *m2pa_tree, proto_tree *tree)
 {
-  proto_item *m2pa_li_item;
   proto_tree *m2pa_li_tree;
   tvbuff_t *payload_tvb;
 
   if (tvb_length(message_data_tvb) > 0) {
     if (m2pa_tree) {
-      m2pa_li_item = proto_tree_add_text(m2pa_tree, message_data_tvb, LI_OFFSET, LI_LENGTH, "Length Indicator");
-      m2pa_li_tree = proto_item_add_subtree(m2pa_li_item, ett_m2pa_li);
+      m2pa_li_tree = proto_tree_add_subtree(m2pa_tree, message_data_tvb, LI_OFFSET, LI_LENGTH, ett_m2pa_li, NULL, "Length Indicator");
 
       proto_tree_add_item(m2pa_li_tree, hf_v2_li_spare, message_data_tvb, LI_OFFSET, LI_LENGTH, ENC_BIG_ENDIAN);
       proto_tree_add_item(m2pa_li_tree, hf_v2_li_prio,  message_data_tvb, LI_OFFSET, LI_LENGTH, ENC_BIG_ENDIAN);
@@ -251,14 +249,12 @@ dissect_v2_user_data_message(tvbuff_t *message_data_tvb, packet_info *pinfo, pro
 static void
 dissect_v8_user_data_message(tvbuff_t *message_data_tvb, packet_info *pinfo, proto_item *m2pa_item, proto_tree *m2pa_tree, proto_tree *tree)
 {
-  proto_item *m2pa_li_item;
   proto_tree *m2pa_li_tree;
   tvbuff_t *payload_tvb;
 
   if (tvb_length(message_data_tvb) > 0) {
     if (m2pa_tree) {
-      m2pa_li_item = proto_tree_add_text(m2pa_tree, message_data_tvb, LI_OFFSET, LI_LENGTH, "Length Indicator");
-      m2pa_li_tree = proto_item_add_subtree(m2pa_li_item, ett_m2pa_li);
+      m2pa_li_tree = proto_tree_add_subtree(m2pa_tree, message_data_tvb, LI_OFFSET, LI_LENGTH, ett_m2pa_li, NULL, "Length Indicator");
       proto_tree_add_item(m2pa_li_tree, hf_v8_li_prio,  message_data_tvb, LI_OFFSET, LI_LENGTH, ENC_BIG_ENDIAN);
       proto_tree_add_item(m2pa_li_tree, hf_v8_li_spare, message_data_tvb, LI_OFFSET, LI_LENGTH, ENC_BIG_ENDIAN);
 
@@ -280,14 +276,12 @@ dissect_v8_user_data_message(tvbuff_t *message_data_tvb, packet_info *pinfo, pro
 static void
 dissect_user_data_message(tvbuff_t *message_data_tvb, packet_info *pinfo, proto_item *m2pa_item, proto_tree *m2pa_tree, proto_tree *tree)
 {
-  proto_item *m2pa_li_item;
   proto_tree *m2pa_li_tree;
   tvbuff_t *payload_tvb;
 
   if (tvb_length(message_data_tvb) > 0) {
     if (m2pa_tree) {
-      m2pa_li_item = proto_tree_add_text(m2pa_tree, message_data_tvb, PRI_OFFSET, PRI_LENGTH, "Priority");
-      m2pa_li_tree = proto_item_add_subtree(m2pa_li_item, ett_m2pa_li);
+      m2pa_li_tree = proto_tree_add_subtree(m2pa_tree, message_data_tvb, PRI_OFFSET, PRI_LENGTH, ett_m2pa_li, NULL, "Priority");
       proto_tree_add_item(m2pa_li_tree, hf_pri_prio,  message_data_tvb, PRI_OFFSET, PRI_LENGTH, ENC_BIG_ENDIAN);
       proto_tree_add_item(m2pa_li_tree, hf_pri_spare, message_data_tvb, PRI_OFFSET, PRI_LENGTH, ENC_BIG_ENDIAN);
 
index 62b030ebf9acf1075a25b047d81f4ad648009b9b..719bf0318f4138c30e8954417ec7714f82b86aca 100644 (file)
@@ -452,8 +452,8 @@ dissect_m2tp_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *
 
   if (tree) {
     /* create proto_tree stuff */
-    parameter_item   = proto_tree_add_text(m2tp_tree, parameter_tvb, PARAMETER_HEADER_OFFSET, total_length, "Incomplete parameter");
-    parameter_tree   = proto_item_add_subtree(parameter_item, ett_m2tp_parameter);
+    parameter_tree = proto_tree_add_subtree(m2tp_tree, parameter_tvb, PARAMETER_HEADER_OFFSET, total_length,
+                                        ett_m2tp_parameter, &parameter_item, "Incomplete parameter");
 
     /* add tag and length to the m2tp tree */
     proto_tree_add_uint(parameter_tree, hf_m2tp_parameter_tag, parameter_tvb, PARAMETER_TAG_OFFSET, PARAMETER_TAG_LENGTH, tag);
@@ -534,16 +534,10 @@ dissect_m2tp(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *tree)
   /* make entry in the Protocol column on summary display */
   col_set_str(pinfo->cinfo, COL_PROTOCOL, "M2TP");
 
-  /* In the interest of speed, if "tree" is NULL, don't do any work not
-     necessary to generate protocol tree items. */
-  if (tree) {
-    /* create the m2tp protocol tree */
-    m2tp_item = proto_tree_add_item(tree, proto_m2tp, message_tvb, 0, -1, ENC_NA);
-    m2tp_tree = proto_item_add_subtree(m2tp_item, ett_m2tp);
-  } else {
-    m2tp_item = NULL;
-    m2tp_tree = NULL;
-  };
+  /* create the m2tp protocol tree */
+  m2tp_item = proto_tree_add_item(tree, proto_m2tp, message_tvb, 0, -1, ENC_NA);
+  m2tp_tree = proto_item_add_subtree(m2tp_item, ett_m2tp);
+
   /* dissect the message */
   dissect_m2tp_message(message_tvb, pinfo, m2tp_item, m2tp_tree, tree);
 }
index 95ec7a62a1ffd2545c6c8af3ae545020cded2387..2c95c7b95e2a2a9864a48f51b29af3fb44e5cadd 100644 (file)
@@ -888,9 +888,8 @@ 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(m2ua_tree, parameter_tvb, PARAMETER_HEADER_OFFSET, tvb_length(parameter_tvb), "%s",
-                                         val_to_str_const(tag, parameter_tag_values, "Unknown parameter"));
-  parameter_tree   = proto_item_add_subtree(parameter_item, ett_m2ua_parameter);
+  parameter_tree = proto_tree_add_subtree(m2ua_tree, parameter_tvb, PARAMETER_HEADER_OFFSET, -1,
+                                         ett_m2ua_parameter, &parameter_item, val_to_str_const(tag, parameter_tag_values, "Unknown parameter"));
 
   if ((protocol_data_1_global == PROTOCOL_DATA_1_DRAFT_7) &&
       (tag == PROTOCOL_DATA_1_DRAFT_7))
@@ -1049,15 +1048,10 @@ dissect_m2ua(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *tree)
   /* make entry in the Protocol column on summary display */
   col_set_str(pinfo->cinfo, COL_PROTOCOL, "M2UA");
 
-  /* In the interest of speed, if "tree" is NULL, don't do any work not
-     necessary to generate protocol tree items. */
-  if (tree) {
-    /* create the m2ua protocol tree */
-    m2ua_item = proto_tree_add_item(tree, proto_m2ua, message_tvb, 0, -1, ENC_NA);
-    m2ua_tree = proto_item_add_subtree(m2ua_item, ett_m2ua);
-  } else {
-    m2ua_tree = NULL;
-  };
+  /* create the m2ua protocol tree */
+  m2ua_item = proto_tree_add_item(tree, proto_m2ua, message_tvb, 0, -1, ENC_NA);
+  m2ua_tree = proto_item_add_subtree(m2ua_item, ett_m2ua);
+
   /* dissect the message */
   dissect_message(message_tvb, pinfo, tree, m2ua_tree);
 }
index a7637c2ffbdd3b9c2e038de1299089e40afee0e1..93723459b3cdf33dfd7892eeca17295684566de2 100644 (file)
@@ -1074,8 +1074,7 @@ dissect_circuit_range_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_t
 
   point_code_offset = PARAMETER_VALUE_OFFSET;
   for(point_code_number = 0; point_code_number < number_of_point_codes; point_code_number++) {
-    cic_range_item = proto_tree_add_text(parameter_tree, parameter_tvb, point_code_offset + CIC_RANGE_MASK_OFFSET, CIC_RANGE_LENGTH, "CIC range");
-    cic_range_tree = proto_item_add_subtree(cic_range_item, ett_parameter);
+    cic_range_tree = proto_tree_add_subtree(parameter_tree, parameter_tvb, point_code_offset + CIC_RANGE_MASK_OFFSET, CIC_RANGE_LENGTH, ett_parameter, &cic_range_item, "CIC range");
 
     proto_tree_add_item(cic_range_tree, hf_cic_range_mask,  parameter_tvb, point_code_offset + CIC_RANGE_MASK_OFFSET,  CIC_RANGE_MASK_LENGTH,  ENC_BIG_ENDIAN);
 
@@ -1236,9 +1235,8 @@ dissect_protocol_data_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, pro
     proto_item_append_text(parameter_item, " (SS7 message of %u byte%s)", ulp_length, plurality(ulp_length, "", "s"));
     proto_item_set_len(parameter_item, PARAMETER_HEADER_LENGTH + DATA_HDR_LENGTH);
 
-    item = proto_tree_add_text(parameter_tree,parameter_tvb,0,0,"MTP3 equivalents");
+    parameter_tree = proto_tree_add_subtree(parameter_tree,parameter_tvb,0,0,ett_mtp3_equiv,&item,"MTP3 equivalents");
     PROTO_ITEM_SET_GENERATED(item);
-    parameter_tree = proto_item_add_subtree(item,ett_mtp3_equiv);
 
     item = proto_tree_add_item(parameter_tree, hf_protocol_data_mtp3_opc, parameter_tvb, DATA_OPC_OFFSET, DATA_OPC_LENGTH, ENC_BIG_ENDIAN);
     PROTO_ITEM_SET_GENERATED(item);
@@ -1396,8 +1394,8 @@ dissect_v5_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *tr
     return;    /* Nothing to do here */
 
   /* create proto_tree stuff */
-  parameter_item   = proto_tree_add_text(m3ua_tree, parameter_tvb, PARAMETER_HEADER_OFFSET, tvb_length(parameter_tvb), "%s", val_to_str_const(tag, v5_parameter_tag_values, "Unknown parameter"));
-  parameter_tree   = proto_item_add_subtree(parameter_item, ett_parameter);
+  parameter_tree = proto_tree_add_subtree(m3ua_tree, parameter_tvb, PARAMETER_HEADER_OFFSET, -1, ett_parameter, &parameter_item,
+                                        val_to_str_const(tag, v5_parameter_tag_values, "Unknown parameter"));
 
   /* add tag and length to the parameter tree */
   proto_tree_add_item(parameter_tree, hf_v5_parameter_tag, parameter_tvb, PARAMETER_TAG_OFFSET,    PARAMETER_TAG_LENGTH,    ENC_BIG_ENDIAN);
@@ -1523,8 +1521,8 @@ dissect_v6_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *tr
     return;    /* Nothing to do here */
 
   /* create proto_tree stuff */
-  parameter_item   = proto_tree_add_text(m3ua_tree, parameter_tvb, PARAMETER_HEADER_OFFSET, tvb_length(parameter_tvb), "%s", val_to_str_const(tag, v6_parameter_tag_values, "Unknown parameter"));
-  parameter_tree   = proto_item_add_subtree(parameter_item, ett_parameter);
+  parameter_tree = proto_tree_add_subtree(m3ua_tree, parameter_tvb, PARAMETER_HEADER_OFFSET, -1,
+            ett_parameter, &parameter_item, val_to_str_const(tag, v6_parameter_tag_values, "Unknown parameter"));
 
   /* add tag and length to the parameter tree */
   proto_tree_add_item(parameter_tree, hf_v6_parameter_tag, parameter_tvb, PARAMETER_TAG_OFFSET,    PARAMETER_TAG_LENGTH,    ENC_BIG_ENDIAN);
@@ -1690,8 +1688,8 @@ dissect_v7_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *tr
     return;    /* Nothing to do here */
 
   /* create proto_tree stuff */
-  parameter_item   = proto_tree_add_text(m3ua_tree, parameter_tvb, PARAMETER_HEADER_OFFSET, tvb_length(parameter_tvb), "%s", val_to_str_const(tag, v7_parameter_tag_values, "Unknown parameter"));
-  parameter_tree   = proto_item_add_subtree(parameter_item, ett_parameter);
+  parameter_tree = proto_tree_add_subtree(m3ua_tree, parameter_tvb, PARAMETER_HEADER_OFFSET, -1,
+        ett_parameter, &parameter_item, val_to_str_const(tag, v7_parameter_tag_values, "Unknown parameter"));
 
   /* add tag and length to the parameter tree */
   proto_tree_add_item(parameter_tree, hf_v7_parameter_tag, parameter_tvb, PARAMETER_TAG_OFFSET,    PARAMETER_TAG_LENGTH,    ENC_BIG_ENDIAN);
@@ -1857,8 +1855,8 @@ dissect_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *tree,
     return;    /* Nothing to do here */
 
   /* create proto_tree stuff */
-  parameter_item   = proto_tree_add_text(m3ua_tree, parameter_tvb, PARAMETER_HEADER_OFFSET, tvb_length(parameter_tvb), "%s", val_to_str_const(tag, parameter_tag_values, "Unknown parameter"));
-  parameter_tree   = proto_item_add_subtree(parameter_item, ett_parameter);
+  parameter_tree = proto_tree_add_subtree(m3ua_tree, parameter_tvb, PARAMETER_HEADER_OFFSET, -1,
+                ett_parameter, &parameter_item, val_to_str_const(tag, parameter_tag_values, "Unknown parameter"));
 
   /* add tag and length to the parameter tree */
   proto_tree_add_item(parameter_tree, hf_parameter_tag,    parameter_tvb, PARAMETER_TAG_OFFSET,    PARAMETER_TAG_LENGTH,    ENC_BIG_ENDIAN);
index f4f05339537eeda237985ab2f368911663e75826..c723e27011cb40a3f5d647e61c7f417645829e25 100644 (file)
@@ -4244,8 +4244,8 @@ static void dissect_ulsch_or_dlsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree
                                 break;
                             }
                             byte = tvb_get_guint8(tvb, curr_offset);
-                            ephr_cell_ti = proto_tree_add_text(ephr_tree, tvb, curr_offset, (!(byte&0x40)?2:1), "PCell PUCCH");
-                            ephr_cell_tree = proto_item_add_subtree(ephr_cell_ti, ett_mac_lte_extended_power_headroom_cell);
+                            ephr_cell_tree = proto_tree_add_subtree(ephr_tree, tvb, curr_offset, (!(byte&0x40)?2:1),
+                                            ett_mac_lte_extended_power_headroom_cell, &ephr_cell_ti, "PCell PUCCH");
                             proto_tree_add_item(ephr_cell_tree, hf_mac_lte_control_ext_power_headroom_power_backoff,
                                                 tvb, curr_offset, 1, ENC_BIG_ENDIAN);
                             proto_tree_add_item(ephr_cell_tree, hf_mac_lte_control_ext_power_headroom_value,
@@ -4274,8 +4274,8 @@ static void dissect_ulsch_or_dlsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree
                             }
                         }
                         byte = tvb_get_guint8(tvb, curr_offset);
-                        ephr_cell_ti = proto_tree_add_text(ephr_tree, tvb, curr_offset, (!(byte&0x40)?2:1), "PCell PUSCH");
-                        ephr_cell_tree = proto_item_add_subtree(ephr_cell_ti, ett_mac_lte_extended_power_headroom_cell);
+                        ephr_cell_tree = proto_tree_add_subtree(ephr_tree, tvb, curr_offset, (!(byte&0x40)?2:1),
+                                            ett_mac_lte_extended_power_headroom_cell, &ephr_cell_ti, "PCell PUSCH");
                         proto_tree_add_item(ephr_cell_tree, hf_mac_lte_control_ext_power_headroom_power_backoff,
                                             tvb, curr_offset, 1, ENC_BIG_ENDIAN);
                         proto_tree_add_item(ephr_cell_tree, hf_mac_lte_control_ext_power_headroom_value,
@@ -4305,8 +4305,8 @@ static void dissect_ulsch_or_dlsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree
                         for (i = 1, scell_bitmap>>=1; i <= 7; i++, scell_bitmap>>=1) {
                             if (scell_bitmap & 0x01) {
                                 byte = tvb_get_guint8(tvb, curr_offset);
-                                ephr_cell_ti = proto_tree_add_text(ephr_tree, tvb, curr_offset, (!(byte&0x40)?2:1), "SCell Index %u PUSCH", i);
-                                ephr_cell_tree = proto_item_add_subtree(ephr_cell_ti, ett_mac_lte_extended_power_headroom_cell);
+                                ephr_cell_tree = proto_tree_add_subtree_format(ephr_tree, tvb, curr_offset, (!(byte&0x40)?2:1),
+                                                    ett_mac_lte_extended_power_headroom_cell, &ephr_cell_ti, "SCell Index %u PUSCH", i);
                                 proto_tree_add_item(ephr_cell_tree, hf_mac_lte_control_ext_power_headroom_power_backoff,
                                                     tvb, curr_offset, 1, ENC_BIG_ENDIAN);
                                 proto_tree_add_item(ephr_cell_tree, hf_mac_lte_control_ext_power_headroom_value,
index 1c4c2effb0978efb35da6f273efa25cb39a27353..d6ccdecd787966f06bdbd7606d3e68034a6d988d 100644 (file)
@@ -210,8 +210,7 @@ dissect_macctrl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
       proto_tree_add_bitmask(macctrl_tree, tvb, 2, hf_macctrl_cbfc_enbv,
                              ett_macctrl_cbfc_enbv, macctrl_cbfc_enbv_list, ENC_BIG_ENDIAN);
 
-      ti = proto_tree_add_text(macctrl_tree, tvb, 4, 8*2, "CBFC Class Pause Times");
-      pause_times_tree = proto_item_add_subtree(ti, ett_macctrl_cbfc_pause_times);
+      pause_times_tree = proto_tree_add_subtree(macctrl_tree, tvb, 4, 8*2, ett_macctrl_cbfc_pause_times, NULL, "CBFC Class Pause Times");
 
       for (i=0; i<8; i++) {
         proto_tree_add_item(pause_times_tree, *macctrl_cbfc_pause_times_list[i], tvb, 4+i*2, 2, ENC_BIG_ENDIAN);
index 4db4340776e39494ab8e48ac894597e9da96524e..f6f45907d3d04e1ebe6cc4837b4abb2b52ad1fc4 100644 (file)
@@ -1942,7 +1942,6 @@ mbim_dissect_device_caps_info(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
 static void
 mbim_dissect_subscriber_ready_status(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gint offset)
 {
-    proto_item *ti;
     proto_tree *subtree;
     gint base_offset, tel_nb_ref_list_offset = 0;
     guint32 i, subscriber_id_offset, subscriber_id_size, sim_icc_id_offset, sim_icc_id_size, elem_count,
@@ -1970,8 +1969,7 @@ mbim_dissect_subscriber_ready_status(tvbuff_t *tvb, packet_info *pinfo _U_, prot
     offset += 4;
     if (elem_count) {
         tel_nb_ref_list_offset = offset;
-        ti = proto_tree_add_text(tree, tvb, offset, 8*elem_count, "Telephone Numbers Ref List");
-        subtree = proto_item_add_subtree(ti, ett_mbim_pair_list);
+        subtree = proto_tree_add_subtree(tree, tvb, offset, 8*elem_count, ett_mbim_pair_list, NULL, "Telephone Numbers Ref List");
         for (i = 0; i < elem_count; i++) {
             proto_tree_add_item(subtree, hf_mbim_subscr_ready_status_tel_nb_offset, tvb, offset, 4, ENC_LITTLE_ENDIAN);
             offset += 4;
@@ -2038,12 +2036,10 @@ mbim_dissect_pin_list_info(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
                                  "Custom"};
     guint i;
     guint32 length;
-    proto_item *ti;
     proto_tree *subtree;
 
     for (i = 0; i < 10; i++) {
-        ti = proto_tree_add_text(tree, tvb, offset, 16, "%s", pin_list[i]);
-        subtree = proto_item_add_subtree(ti, ett_mbim_pin);
+        subtree = proto_tree_add_subtree(tree, tvb, offset, 16, ett_mbim_pin, NULL, pin_list[i]);
         proto_tree_add_item(subtree, hf_mbim_pin_list_pin_mode, tvb, offset, 4, ENC_LITTLE_ENDIAN);
         offset += 4;
         proto_tree_add_item(subtree, hf_mbim_pin_list_pin_format, tvb, offset, 4, ENC_LITTLE_ENDIAN);
@@ -2108,7 +2104,6 @@ mbim_dissect_provider(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, g
 static void
 mbim_dissect_providers(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset)
 {
-    proto_item *ti;
     proto_tree *subtree;
     gint base_offset;
     guint32 i, elem_count, providers_list_offset, provider_offset, provider_size;
@@ -2120,8 +2115,7 @@ mbim_dissect_providers(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint
     offset += 4;
     if (elem_count) {
         providers_list_offset = offset;
-        ti = proto_tree_add_text(tree, tvb, offset, 8*elem_count, "Providers Ref List");
-        subtree = proto_item_add_subtree(ti, ett_mbim_pair_list);
+        subtree = proto_tree_add_subtree(tree, tvb, offset, 8*elem_count, ett_mbim_pair_list, NULL, "Providers Ref List");
         for (i = 0; i < elem_count; i++) {
             proto_tree_add_item(subtree, hf_mbim_providers_provider_offset, tvb, offset, 4, ENC_LITTLE_ENDIAN);
             offset += 4;
@@ -2132,8 +2126,8 @@ mbim_dissect_providers(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint
             provider_offset = tvb_get_letohl(tvb, providers_list_offset + 8*i);
             provider_size = tvb_get_letohl(tvb, providers_list_offset + 8*i + 4);
             if (provider_offset && provider_size) {
-                ti = proto_tree_add_text(tree, tvb, base_offset + provider_offset, provider_size, "Provider #%u", i+1);
-                subtree = proto_item_add_subtree(ti, ett_mbim_pair_list);
+                subtree = proto_tree_add_subtree_format(tree, tvb, base_offset + provider_offset, provider_size,
+                            ett_mbim_pair_list, NULL, "Provider #%u", i+1);
                 mbim_dissect_provider(tvb, pinfo, subtree, base_offset + provider_offset);
             }
         }
@@ -2448,7 +2442,6 @@ mbim_dissect_context(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint o
 static void
 mbim_dissect_provisioned_contexts_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset)
 {
-    proto_item *ti;
     proto_tree *subtree;
     gint base_offset;
     guint32 i, elem_count, provisioned_contexts_list_offset, provisioned_context_offset, provisioned_context_size;
@@ -2459,8 +2452,7 @@ mbim_dissect_provisioned_contexts_info(tvbuff_t *tvb, packet_info *pinfo, proto_
     offset += 4;
     if (elem_count) {
         provisioned_contexts_list_offset = offset;
-        ti = proto_tree_add_text(tree, tvb, offset, 8*elem_count, "Provisioned Context Ref List");
-        subtree = proto_item_add_subtree(ti, ett_mbim_pair_list);
+        subtree = proto_tree_add_subtree(tree, tvb, offset, 8*elem_count, ett_mbim_pair_list, NULL, "Provisioned Context Ref List");
         for (i = 0; i < elem_count; i++) {
             proto_tree_add_item(subtree, hf_mbim_provisioned_contexts_info_provisioned_context_offset,
                                 tvb, offset, 4, ENC_LITTLE_ENDIAN);
@@ -2473,9 +2465,8 @@ mbim_dissect_provisioned_contexts_info(tvbuff_t *tvb, packet_info *pinfo, proto_
             provisioned_context_offset = tvb_get_letohl(tvb, provisioned_contexts_list_offset + 8*i);
             provisioned_context_size = tvb_get_letohl(tvb, provisioned_contexts_list_offset + 8*i + 4);
             if (provisioned_context_offset && provisioned_context_size) {
-                ti = proto_tree_add_text(tree, tvb, base_offset + provisioned_context_offset,
-                                         provisioned_context_size, "Provisioned Context #%u", i+1);
-                subtree = proto_item_add_subtree(ti, ett_mbim_pair_list);
+                subtree = proto_tree_add_subtree_format(tree, tvb, base_offset + provisioned_context_offset,
+                                         provisioned_context_size, ett_mbim_pair_list, NULL, "Provisioned Context #%u", i+1);
                 mbim_dissect_context(tvb, pinfo, subtree, base_offset + provisioned_context_offset, FALSE);
             }
         }
@@ -2683,7 +2674,6 @@ mbim_dissect_device_service_element(tvbuff_t *tvb, packet_info *pinfo, proto_tre
 static void
 mbim_dissect_device_services_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset)
 {
-    proto_item *ti;
     proto_tree *subtree;
     gint base_offset;
     guint32 i, device_services_count, device_services_ref_list_base, device_service_elem_offset,
@@ -2697,8 +2687,7 @@ mbim_dissect_device_services_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree
     offset += 4;
     if (device_services_count) {
         device_services_ref_list_base = offset;
-        ti = proto_tree_add_text(tree, tvb, offset, 8*device_services_count, "Device Services Ref List");
-        subtree = proto_item_add_subtree(ti, ett_mbim_pair_list);
+        subtree = proto_tree_add_subtree(tree, tvb, offset, 8*device_services_count, ett_mbim_pair_list, NULL, "Device Services Ref List");
         for (i = 0; i < device_services_count; i++) {
             proto_tree_add_item(subtree, hf_mbim_device_services_info_device_services_offset,
                                 tvb, offset, 4, ENC_LITTLE_ENDIAN);
@@ -2711,9 +2700,8 @@ mbim_dissect_device_services_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree
             device_service_elem_offset = tvb_get_letohl(tvb, device_services_ref_list_base + 8*i);
             device_service_elem_size = tvb_get_letohl(tvb, device_services_ref_list_base + 8*i + 4);
             if (device_service_elem_offset && device_service_elem_size) {
-                ti = proto_tree_add_text(tree, tvb, base_offset + device_service_elem_offset,
-                                         device_service_elem_size, "Device Service Element #%u", i+1);
-                subtree = proto_item_add_subtree(ti, ett_mbim_pair_list);
+                subtree = proto_tree_add_subtree_format(tree, tvb, base_offset + device_service_elem_offset,
+                                         device_service_elem_size, ett_mbim_pair_list, NULL, "Device Service Element #%u", i+1);
                 mbim_dissect_device_service_element(tvb, pinfo, subtree, base_offset + device_service_elem_offset);
             }
         }
@@ -2793,7 +2781,6 @@ mbim_dissect_event_entry(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gi
 static void
 mbim_dissect_device_service_subscribe_list(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset)
 {
-    proto_item *ti;
     proto_tree *subtree;
     gint base_offset;
     guint32 i, element_count, device_service_subscribe_ref_list_base, device_service_elem_offset,
@@ -2805,8 +2792,7 @@ mbim_dissect_device_service_subscribe_list(tvbuff_t *tvb, packet_info *pinfo, pr
     offset += 4;
     if (element_count) {
         device_service_subscribe_ref_list_base = offset;
-        ti = proto_tree_add_text(tree, tvb, offset, 8*element_count, "Device Service Subscribe Ref List");
-        subtree = proto_item_add_subtree(ti, ett_mbim_pair_list);
+        subtree = proto_tree_add_subtree(tree, tvb, offset, 8*element_count, ett_mbim_pair_list, NULL, "Device Service Subscribe Ref List");
         for (i = 0; i < element_count; i++) {
             proto_tree_add_item(subtree, hf_mbim_device_service_subscribe_device_service_offset,
                                 tvb, offset, 4, ENC_LITTLE_ENDIAN);
@@ -2819,9 +2805,8 @@ mbim_dissect_device_service_subscribe_list(tvbuff_t *tvb, packet_info *pinfo, pr
             device_service_elem_offset = tvb_get_letohl(tvb, device_service_subscribe_ref_list_base + 8*i);
             device_service_elem_size = tvb_get_letohl(tvb, device_service_subscribe_ref_list_base + 8*i + 4);
             if (device_service_elem_offset && device_service_elem_size) {
-                ti = proto_tree_add_text(tree, tvb, base_offset + device_service_elem_offset,
-                                         device_service_elem_size, "Device Service Element #%u", i+1);
-                subtree = proto_item_add_subtree(ti, ett_mbim_pair_list);
+                subtree = proto_tree_add_subtree_format(tree, tvb, base_offset + device_service_elem_offset,
+                                         device_service_elem_size, ett_mbim_pair_list, NULL, "Device Service Element #%u", i+1);
                 mbim_dissect_event_entry(tvb, pinfo, subtree, base_offset + device_service_elem_offset);
             }
         }
@@ -2879,7 +2864,6 @@ mbim_dissect_single_packet_filter(tvbuff_t *tvb, packet_info *pinfo _U_, proto_t
 static void
 mbim_dissect_packet_filters(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset)
 {
-    proto_item *ti;
     proto_tree *subtree;
     gint base_offset;
     guint32 i, packet_filters_count, packet_filter_ref_list_base, packet_filter_offset, packet_filter_size;
@@ -2892,8 +2876,7 @@ mbim_dissect_packet_filters(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
     offset += 4;
     if (packet_filters_count) {
         packet_filter_ref_list_base = offset;
-        ti = proto_tree_add_text(tree, tvb, offset, 8*packet_filters_count, "Packet Filter Ref List");
-        subtree = proto_item_add_subtree(ti, ett_mbim_pair_list);
+        subtree = proto_tree_add_subtree(tree, tvb, offset, 8*packet_filters_count, ett_mbim_pair_list, NULL, "Packet Filter Ref List");
         for (i = 0; i < packet_filters_count; i++) {
             proto_tree_add_item(subtree, hf_mbim_packet_filters_packet_filters_packet_filter_offset,
                                 tvb, offset, 4, ENC_LITTLE_ENDIAN);
@@ -2906,9 +2889,8 @@ mbim_dissect_packet_filters(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
             packet_filter_offset = tvb_get_letohl(tvb, packet_filter_ref_list_base + 8*i);
             packet_filter_size = tvb_get_letohl(tvb, packet_filter_ref_list_base + 8*i + 4);
             if (packet_filter_offset && packet_filter_size) {
-                ti = proto_tree_add_text(tree, tvb, base_offset + packet_filter_offset,
-                                         packet_filter_size, "Packet Filter Element #%u", i+1);
-                subtree = proto_item_add_subtree(ti, ett_mbim_pair_list);
+                subtree = proto_tree_add_subtree_format(tree, tvb, base_offset + packet_filter_offset,
+                                         packet_filter_size, ett_mbim_pair_list, NULL, "Packet Filter Element #%u", i+1);
                 mbim_dissect_single_packet_filter(tvb, pinfo, subtree, base_offset + packet_filter_offset);
             }
         }
@@ -2993,9 +2975,8 @@ mbim_dissect_sms_pdu_record(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
                                      pdu_data_size, ENC_NA);
             subtree = proto_item_add_subtree(ti, ett_mbim_buffer);
             sc_address_size = tvb_get_guint8(tvb, base_offset + pdu_data_offset);
-            ti = proto_tree_add_text(subtree, tvb, base_offset + pdu_data_offset, 1 + sc_address_size,
-                                     "Service Center Address");
-            sc_tree = proto_item_add_subtree(ti, ett_mbim_sc_address);
+            sc_tree = proto_tree_add_subtree(subtree, tvb, base_offset + pdu_data_offset, 1 + sc_address_size,
+                                     ett_mbim_sc_address, NULL, "Service Center Address");
             proto_tree_add_uint(sc_tree, hf_mbim_sms_pdu_record_pdu_data_sc_address_size, tvb,
                                 base_offset + pdu_data_offset, 1, sc_address_size);
             if (sc_address_size) {
@@ -3126,7 +3107,6 @@ static void
 mbim_dissect_sms_read_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset,
                            struct mbim_conv_info *mbim_conv)
 {
-    proto_item *ti;
     proto_tree *subtree;
     gint base_offset;
     guint32 i, format, element_count, sms_ref_list_base, sms_offset, sms_size;
@@ -3140,8 +3120,7 @@ mbim_dissect_sms_read_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
     offset += 4;
     if (element_count) {
         sms_ref_list_base = offset;
-        ti = proto_tree_add_text(tree, tvb, offset, 8*element_count, "SMS Ref List");
-        subtree = proto_item_add_subtree(ti, ett_mbim_pair_list);
+        subtree = proto_tree_add_subtree(tree, tvb, offset, 8*element_count, ett_mbim_pair_list, NULL, "SMS Ref List");
         for (i = 0; i < element_count; i++) {
             proto_tree_add_item(subtree, hf_mbim_sms_read_info_sms_offset,
                                 tvb, offset, 4, ENC_LITTLE_ENDIAN);
@@ -3154,9 +3133,8 @@ mbim_dissect_sms_read_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
             sms_offset = tvb_get_letohl(tvb, sms_ref_list_base + 8*i);
             sms_size = tvb_get_letohl(tvb, sms_ref_list_base + 8*i + 4);
             if (sms_offset && sms_size) {
-                ti = proto_tree_add_text(tree, tvb, base_offset + sms_offset,
-                                         sms_size, "SMS Element #%u", i+1);
-                subtree = proto_item_add_subtree(ti, ett_mbim_pair_list);
+                subtree = proto_tree_add_subtree_format(tree, tvb, base_offset + sms_offset,
+                                         sms_size, ett_mbim_pair_list, NULL, "SMS Element #%u", i+1);
                 if (format == MBIM_SMS_FORMAT_PDU) {
                     mbim_dissect_sms_pdu_record(tvb, pinfo, subtree, base_offset + sms_offset, mbim_conv);
                 } else if (format == MBIM_SMS_FORMAT_CDMA) {
@@ -3195,9 +3173,8 @@ mbim_dissect_sms_send_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
                                      pdu_data_size, ENC_NA);
             subtree = proto_item_add_subtree(ti, ett_mbim_buffer);
             sc_address_size = tvb_get_guint8(tvb, base_offset + pdu_data_offset);
-            ti = proto_tree_add_text(subtree, tvb, base_offset + pdu_data_offset, 1 + sc_address_size,
-                                     "Service Center Address");
-            sc_tree = proto_item_add_subtree(ti, ett_mbim_sc_address);
+            sc_tree = proto_tree_add_subtree(subtree, tvb, base_offset + pdu_data_offset, 1 + sc_address_size,
+                                     ett_mbim_sc_address, NULL, "Service Center Address");
             proto_tree_add_uint(sc_tree, hf_mbim_sms_send_pdu_pdu_data_sc_address_size, tvb,
                                 base_offset + pdu_data_offset, 1, sc_address_size);
             if (sc_address_size) {
@@ -3435,7 +3412,6 @@ mbim_dissect_phonebook_entry(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
 static void
 mbim_dissect_phonebook_read_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset)
 {
-    proto_item *ti;
     proto_tree *subtree;
     gint base_offset;
     guint32 i, element_count, phonebook_ref_list_base, phonebook_offset, phonebook_size;
@@ -3446,8 +3422,7 @@ mbim_dissect_phonebook_read_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
     offset += 4;
     if (element_count) {
         phonebook_ref_list_base = offset;
-        ti = proto_tree_add_text(tree, tvb, offset, 8*element_count, "Phonebook Ref List");
-        subtree = proto_item_add_subtree(ti, ett_mbim_pair_list);
+        subtree = proto_tree_add_subtree(tree, tvb, offset, 8*element_count, ett_mbim_pair_list, NULL, "Phonebook Ref List");
         for (i = 0; i < element_count; i++) {
             proto_tree_add_item(subtree, hf_mbim_phonebook_read_info_phonebook_offset,
                                 tvb, offset, 4, ENC_LITTLE_ENDIAN);
@@ -3460,9 +3435,8 @@ mbim_dissect_phonebook_read_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
             phonebook_offset = tvb_get_letohl(tvb, phonebook_ref_list_base + 8*i);
             phonebook_size = tvb_get_letohl(tvb, phonebook_ref_list_base + 8*i + 4);
             if (phonebook_offset && phonebook_size) {
-                ti = proto_tree_add_text(tree, tvb, base_offset + phonebook_offset,
-                                         phonebook_size, "Phonebook Element #%u", i+1);
-                subtree = proto_item_add_subtree(ti, ett_mbim_pair_list);
+                subtree = proto_tree_add_subtree_format(tree, tvb, base_offset + phonebook_offset,
+                                         phonebook_size, ett_mbim_pair_list, NULL, "Phonebook Element #%u", i+1);
                 mbim_dissect_phonebook_entry(tvb, pinfo, subtree, base_offset + phonebook_offset);
             }
         }
@@ -3832,8 +3806,7 @@ dissect_mbim_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *
     ti = proto_tree_add_item(mbim_tree, hf_mbim_control, tvb, offset, 0, ENC_NA);
     PROTO_ITEM_SET_HIDDEN(ti);
 
-    ti = proto_tree_add_text(mbim_tree, tvb, offset, 12, "Message Header");
-    header_tree = proto_item_add_subtree(ti, ett_mbim_msg_header);
+    header_tree = proto_tree_add_subtree(mbim_tree, tvb, offset, 12, ett_mbim_msg_header, NULL, "Message Header");
     msg_type = tvb_get_letohl(tvb, offset);
     col_add_fstr(pinfo->cinfo, COL_INFO, "%-19s", val_to_str_const(msg_type, mbim_msg_type_vals, "Unknown"));
     proto_tree_add_uint(header_tree, hf_mbim_header_message_type, tvb, offset, 4, msg_type);
@@ -3874,8 +3847,7 @@ dissect_mbim_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *
                 tvbuff_t *frag_tvb;
                 struct mbim_uuid_ext *uuid_ext_info = NULL;
 
-                ti = proto_tree_add_text(mbim_tree, tvb, offset, 8, "Fragment Header");
-                subtree = proto_item_add_subtree(ti, ett_mbim_frag_header);
+                subtree = proto_tree_add_subtree(mbim_tree, tvb, offset, 8, ett_mbim_frag_header, NULL, "Fragment Header");
                 total_frag = tvb_get_letohl(tvb, offset);
                 proto_tree_add_uint(subtree, hf_mbim_fragment_total, tvb, offset, 4, total_frag);
                 offset += 4;
@@ -3933,8 +3905,7 @@ dissect_mbim_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *
                 offset += 4;
                 subtree = mbim_tree;
                 if (info_buff_len) {
-                    ti = proto_tree_add_text(mbim_tree, frag_tvb, offset, info_buff_len, "Information Buffer");
-                    subtree = proto_item_add_subtree(ti, ett_mbim_info_buffer);
+                    subtree = proto_tree_add_subtree(mbim_tree, frag_tvb, offset, info_buff_len, ett_mbim_info_buffer, NULL, "Information Buffer");
                 }
                 switch (uuid_idx) {
                     case UUID_BASIC_CONNECT:
@@ -4396,8 +4367,7 @@ dissect_mbim_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *
                 tvbuff_t *frag_tvb;
                 struct mbim_uuid_ext *uuid_ext_info = NULL;
 
-                ti = proto_tree_add_text(mbim_tree, tvb, offset, 8, "Fragment Header");
-                subtree = proto_item_add_subtree(ti, ett_mbim_frag_header);
+                subtree = proto_tree_add_subtree(mbim_tree, tvb, offset, 8, ett_mbim_frag_header, NULL, "Fragment Header");
                 total_frag = tvb_get_letohl(tvb, offset);
                 proto_tree_add_uint(subtree, hf_mbim_fragment_total, tvb, offset, 4, total_frag);
                 offset += 4;
@@ -4452,8 +4422,7 @@ dissect_mbim_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *
                 if (info_buff_len == 0) {
                     break;
                 }
-                ti = proto_tree_add_text(mbim_tree, frag_tvb, offset, info_buff_len, "Information Buffer");
-                subtree = proto_item_add_subtree(ti, ett_mbim_info_buffer);
+                subtree = proto_tree_add_subtree(mbim_tree, frag_tvb, offset, info_buff_len, ett_mbim_info_buffer, NULL, "Information Buffer");
                 switch (uuid_idx) {
                     case UUID_BASIC_CONNECT:
                         switch (cid) {
@@ -4915,8 +4884,7 @@ dissect_mbim_bulk(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat
     ti =proto_tree_add_item(mbim_tree, hf_mbim_bulk, tvb, 0, 0, ENC_NA);
     PROTO_ITEM_SET_HIDDEN(ti);
 
-    ti = proto_tree_add_text(mbim_tree, tvb, 0, 0, "NCM Transfer Header");
-    subtree = proto_item_add_subtree(ti, ett_mbim_msg_header);
+    subtree = proto_tree_add_subtree(mbim_tree, tvb, 0, 0, ett_mbim_msg_header, NULL, "NCM Transfer Header");
     proto_tree_add_item(subtree, hf_mbim_bulk_nth_signature, tvb, 0, 4, ENC_ASCII|ENC_NA);
     length = tvb_get_letohs(tvb, 4);
     proto_tree_add_uint(subtree, hf_mbim_bulk_nth_header_length, tvb, 4, 2, length);
@@ -4950,8 +4918,7 @@ dissect_mbim_bulk(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat
     while (next_index) {
         base_offset = offset = next_index;
         nb = 0;
-        ti = proto_tree_add_text(mbim_tree, tvb, offset, 0, "NCM Datagram Pointer");
-        subtree = proto_item_add_subtree(ti, ett_mbim_msg_header);
+        subtree = proto_tree_add_subtree(mbim_tree, tvb, offset, 0, ett_mbim_msg_header, NULL, "NCM Datagram Pointer");
         signature = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, 4, ENC_ASCII);
         if ((!is_32bits && !strncmp(signature, "IPS", 3)) ||
             (is_32bits && !strncmp(signature, "ips", 3))) {
index 75687b560e7085b3b3efa16c0cbbf683ffa3e7a7..3da2f63a040e207b6cc2c3d8c5f25a38b3f298ca 100644 (file)
@@ -841,7 +841,7 @@ dissect_modbus(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _
     proto_tree    *modbus_tree, *group_tree, *event_tree,
                   *event_item_tree, *device_objects_tree,
                   *device_objects_item_tree;
-    proto_item    *mi, *mf, *me, *mei, *doe, *doie;
+    proto_item    *mi, *mei;
     int           offset = 0, group_offset;
     gint          payload_start, payload_len, event_index,
                   ii, byte_cnt, len, num_objects, object_index,
@@ -885,8 +885,7 @@ dissect_modbus(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _
     }
 
     /* Add items to protocol tree specific to Modbus generic */
-    mf = proto_tree_add_text(tree, tvb, offset, len, "Modbus");
-    modbus_tree = proto_item_add_subtree(mf, ett_modbus_hdr);
+    modbus_tree = proto_tree_add_subtree(tree, tvb, offset, len, ett_modbus_hdr, NULL, "Modbus");
 
     mi = proto_tree_add_uint(modbus_tree, hf_mbtcp_functioncode, tvb, offset, 1,
                              function_code);
@@ -1093,8 +1092,7 @@ dissect_modbus(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _
                     if (byte_cnt-6 > 0) {
                         byte_cnt -= 6;
                         event_index = 0;
-                        me = proto_tree_add_text(modbus_tree, tvb, payload_start+7, byte_cnt, "Events");
-                        event_tree = proto_item_add_subtree(me, ett_events);
+                        event_tree = proto_tree_add_subtree(modbus_tree, tvb, payload_start+7, byte_cnt, ett_events, NULL, "Events");
                         while (byte_cnt > 0) {
                             event_code = tvb_get_guint8(tvb, payload_start+7+event_index);
                             if (event_code == 0) {
@@ -1185,9 +1183,8 @@ dissect_modbus(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _
                     /* add subtrees to describe each group of packet */
                     group_offset = payload_start + 1;
                     for (ii = 0; ii < byte_cnt / 7; ii++) {
-                        mi = proto_tree_add_text( modbus_tree, tvb, group_offset, 7,
-                                "Group %u", ii);
-                        group_tree = proto_item_add_subtree(mi, ett_group_hdr);
+                        group_tree = proto_tree_add_subtree_format( modbus_tree, tvb, group_offset, 7,
+                                ett_group_hdr, NULL, "Group %u", ii);
                         proto_tree_add_item(group_tree, hf_modbus_reftype, tvb, group_offset, 1, ENC_BIG_ENDIAN);
                         proto_tree_add_item(group_tree, hf_modbus_lreference, tvb, group_offset + 1, 4, ENC_BIG_ENDIAN);
                         proto_tree_add_item(group_tree, hf_modbus_wordcnt, tvb, group_offset + 5, 2, ENC_BIG_ENDIAN);
@@ -1204,9 +1201,8 @@ dissect_modbus(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _
                     ii = 0;
                     while (byte_cnt > 0) {
                         group_byte_cnt = (guint32)tvb_get_guint8(tvb, group_offset);
-                        mi = proto_tree_add_text( modbus_tree, tvb, group_offset, group_byte_cnt + 1,
-                                "Group %u", ii);
-                        group_tree = proto_item_add_subtree(mi, ett_group_hdr);
+                        group_tree = proto_tree_add_subtree_format( modbus_tree, tvb, group_offset, group_byte_cnt + 1,
+                                ett_group_hdr, NULL, "Group %u", ii);
                         proto_tree_add_uint(group_tree, hf_modbus_bytecnt, tvb, group_offset, 1,
                                 group_byte_cnt);
                         proto_tree_add_item(group_tree, hf_modbus_reftype, tvb, group_offset + 1, 1, ENC_BIG_ENDIAN);
@@ -1230,9 +1226,8 @@ dissect_modbus(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _
                     while (byte_cnt > 0) {
                         group_word_cnt = tvb_get_ntohs(tvb, group_offset + 5);
                         group_byte_cnt = (2 * group_word_cnt) + 7;
-                        mi = proto_tree_add_text( modbus_tree, tvb, group_offset,
-                                group_byte_cnt, "Group %u", ii);
-                        group_tree = proto_item_add_subtree(mi, ett_group_hdr);
+                        group_tree = proto_tree_add_subtree_format( modbus_tree, tvb, group_offset,
+                                group_byte_cnt, ett_group_hdr, NULL, "Group %u", ii);
                         proto_tree_add_item(group_tree, hf_modbus_reftype, tvb, group_offset, 1, ENC_BIG_ENDIAN);
                         proto_tree_add_item(group_tree, hf_modbus_lreference, tvb, group_offset + 1, 4, ENC_BIG_ENDIAN);
                         proto_tree_add_uint(group_tree, hf_modbus_wordcnt, tvb, group_offset + 5, 2,
@@ -1315,21 +1310,20 @@ dissect_modbus(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _
                             proto_tree_add_item(modbus_tree, hf_modbus_next_object_id, tvb, payload_start+4, 1, ENC_BIG_ENDIAN);
                             num_objects = tvb_get_guint8(tvb, payload_start+5);
                             proto_tree_add_uint(modbus_tree, hf_modbus_num_objects, tvb, payload_start+5, 1, num_objects);
-                            doe = proto_tree_add_text(modbus_tree, tvb, payload_start+6, payload_len-6, "Objects");
+                            device_objects_tree = proto_tree_add_subtree(modbus_tree, tvb, payload_start+6, payload_len-6,
+                                                                            ett_device_id_objects, NULL, "Objects");
 
                             object_index = 0;
                             for (ii = 0; ii < num_objects; ii++)
                             {
-                                device_objects_tree = proto_item_add_subtree(doe, ett_device_id_objects);
-
                                 /* add each "object item" as its own subtree */
 
                                 /* compute length of object */
                                 object_type = tvb_get_guint8(tvb, payload_start+6+object_index);
                                 object_len = tvb_get_guint8(tvb, payload_start+6+object_index+1);
 
-                                doie = proto_tree_add_text(device_objects_tree, tvb, payload_start+6+object_index, 2+object_len, "Object #%d", ii+1);
-                                device_objects_item_tree = proto_item_add_subtree(doie, ett_device_id_object_items);
+                                device_objects_item_tree = proto_tree_add_subtree_format(device_objects_tree, tvb, payload_start+6+object_index, 2+object_len,
+                                                            ett_device_id_object_items, NULL, "Object #%d", ii+1);
 
                                 proto_tree_add_item(device_objects_item_tree, hf_modbus_object_id, tvb, payload_start+6+object_index, 1, ENC_BIG_ENDIAN);
                                 object_index++;
index 7c57f915cc8ace3a765f117359433a545207d146..a3515c1912f23ccd73567e82be48a52d372e7297 100644 (file)
@@ -135,7 +135,7 @@ dissect_mdshdr(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
 {
 
 /* Set up structures needed to add the protocol subtree and manage it */
-    proto_item *ti_main, *ti_hdr, *ti_trlr;
+    proto_item *ti_main;
     proto_item *hidden_item;
     proto_tree *mdshdr_tree_main, *mdshdr_tree_hdr, *mdshdr_tree_trlr;
     int         offset        = 0;
@@ -192,10 +192,9 @@ dissect_mdshdr(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
         mdshdr_tree_main = proto_item_add_subtree(ti_main, ett_mdshdr);
 
         /* Add Header part as subtree first */
-        ti_hdr = proto_tree_add_text(mdshdr_tree_main, tvb, MDSHDR_VER_OFFSET,
-                                     MDSHDR_HEADER_SIZE, "MDS Header");
+        mdshdr_tree_hdr = proto_tree_add_subtree(mdshdr_tree_main, tvb, MDSHDR_VER_OFFSET,
+                                     MDSHDR_HEADER_SIZE, ett_mdshdr_hdr, NULL, "MDS Header");
 
-        mdshdr_tree_hdr = proto_item_add_subtree(ti_hdr, ett_mdshdr_hdr);
         hidden_item = proto_tree_add_item(mdshdr_tree_hdr, hf_mdshdr_sof, tvb, MDSHDR_SOF_OFFSET,
                                           MDSHDR_SIZE_BYTE, ENC_BIG_ENDIAN);
         PROTO_ITEM_SET_HIDDEN(hidden_item);
@@ -215,10 +214,9 @@ dissect_mdshdr(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
         /* Add Mdshdr Trailer part */
         if (tvb_length(tvb) >= MDSHDR_HEADER_SIZE + pktlen
             && 0 != trailer_start) {
-            ti_trlr = proto_tree_add_text(mdshdr_tree_main, tvb, trailer_start,
+            mdshdr_tree_trlr = proto_tree_add_subtree(mdshdr_tree_main, tvb, trailer_start,
                                           MDSHDR_TRAILER_SIZE,
-                                          "MDS Trailer");
-            mdshdr_tree_trlr = proto_item_add_subtree(ti_trlr, ett_mdshdr_trlr);
+                                          ett_mdshdr_trlr, NULL, "MDS Trailer");
 
             proto_tree_add_item(mdshdr_tree_trlr, hf_mdshdr_eof, tvb,
                                 trailer_start, MDSHDR_SIZE_BYTE, ENC_BIG_ENDIAN);
index 34ffbe0f50cf26a8d7a4eb349167053519362b60..fedfe80950e3f69c9167e9bf85107d8fbe8807bd 100644 (file)
@@ -567,9 +567,8 @@ dissect_megaco_text(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
             tvb_LBRKT  = tvb_find_guint8(tvb, tvb_offset, tvb_transaction_end_offset, '{');
             tvb_offset = tvb_LBRKT;
 
-            ti = proto_tree_add_text(megaco_tree, tvb, tvb_previous_offset, tvb_offset-tvb_previous_offset,
-                "%s",tvb_format_text(tvb, tvb_previous_offset, tvb_offset-tvb_previous_offset+1));
-            message_body_tree = proto_item_add_subtree(ti, ett_megaco_message_body);
+            message_body_tree = proto_tree_add_subtree(megaco_tree, tvb, tvb_previous_offset, tvb_offset-tvb_previous_offset,
+                ett_megaco_message_body, NULL, tvb_format_text(tvb, tvb_previous_offset, tvb_offset-tvb_previous_offset+1));
 
             my_proto_tree_add_string(message_body_tree, hf_megaco_transaction, tvb,
                 tvb_previous_offset, tokenlen,
@@ -603,9 +602,8 @@ dissect_megaco_text(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
             tvb_offset = megaco_tvb_skip_wsp(tvb, tvb_offset);
             tvb_LBRKT  = tvb_find_guint8(tvb, tvb_offset, tvb_transaction_end_offset, '{');
             tvb_current_offset = tvb_LBRKT;
-            ti = proto_tree_add_text(megaco_tree, tvb, tvb_previous_offset, tvb_current_offset-tvb_previous_offset,
-                "%s",tvb_format_text(tvb, tvb_previous_offset, tvb_current_offset-tvb_previous_offset+1));
-            message_body_tree = proto_item_add_subtree(ti, ett_megaco_message_body);
+            message_body_tree = proto_tree_add_subtree(megaco_tree, tvb, tvb_previous_offset, tvb_current_offset-tvb_previous_offset,
+                ett_megaco_message_body, NULL, tvb_format_text(tvb, tvb_previous_offset, tvb_current_offset-tvb_previous_offset+1));
 
             tvb_current_offset  = megaco_tvb_skip_wsp_return(tvb, tvb_current_offset-1);
             len = tvb_current_offset - tvb_offset;
@@ -630,9 +628,8 @@ dissect_megaco_text(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
         case REPLYTOKEN:
             trx_type = GCP_TRX_REPLY;
             tvb_LBRKT  = tvb_find_guint8(tvb, tvb_offset, tvb_transaction_end_offset, '{');
-            ti = proto_tree_add_text(megaco_tree, tvb, tvb_previous_offset, tvb_LBRKT-tvb_previous_offset,
-                    "%s",tvb_format_text(tvb, tvb_previous_offset, tvb_LBRKT-tvb_previous_offset+1));
-            message_body_tree = proto_item_add_subtree(ti, ett_megaco_message_body);
+            message_body_tree = proto_tree_add_subtree(megaco_tree, tvb, tvb_previous_offset, tvb_LBRKT-tvb_previous_offset,
+                    ett_megaco_message_body, NULL, tvb_format_text(tvb, tvb_previous_offset, tvb_LBRKT-tvb_previous_offset+1));
 
             if (tree)
                 my_proto_tree_add_string(message_body_tree, hf_megaco_transaction, tvb,
@@ -665,9 +662,8 @@ dissect_megaco_text(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
         case TRANSTOKEN:
             /* TransactionRequest   */
             trx_type = GCP_TRX_REQUEST;
-            ti = proto_tree_add_text(megaco_tree, tvb, tvb_previous_offset, tvb_current_offset-tvb_previous_offset,
-                    "%s",tvb_format_text(tvb, tvb_previous_offset, tvb_current_offset-tvb_previous_offset+1));
-            message_body_tree = proto_item_add_subtree(ti, ett_megaco_message_body);
+            message_body_tree = proto_tree_add_subtree(megaco_tree, tvb, tvb_previous_offset, tvb_current_offset-tvb_previous_offset,
+                    ett_megaco_message_body, NULL, tvb_format_text(tvb, tvb_previous_offset, tvb_current_offset-tvb_previous_offset+1));
 
             if(tree)
                 my_proto_tree_add_string(message_body_tree, hf_megaco_transaction, tvb,
@@ -1653,8 +1649,8 @@ dissect_megaco_mediadescriptor(tvbuff_t *tvb, proto_tree *megaco_tree_command_li
     proto_tree  *megaco_mediadescriptor_tree, *megaco_mediadescriptor_ti;
 
     /*
-    megaco_mediadescriptor_ti = proto_tree_add_text(megaco_tree_command_line,tvb,tvb_previous_offset,tokenlen,"Media Descriptor");
-    megaco_mediadescriptor_tree = proto_item_add_subtree(megaco_mediadescriptor_ti, ett_megaco_mediadescriptor);
+    megaco_mediadescriptor_tree = proto_tree_add_subtree(megaco_tree_command_line,tvb,tvb_previous_offset,tokenlen,
+                                                         ett_megaco_mediadescriptor, NULL, "Media Descriptor");
     */
     while ( tvb_previous_offset < tvb_last_RBRKT){
         /* Start of token */
index def52175999f3a3cc3562c5e2bb24e75c9ff6f12..9de528e211ef2e8334fced6a4e5932338a4fe89c 100644 (file)
@@ -1991,25 +1991,22 @@ static void dissect_mih(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
 
         col_set_str(pinfo->cinfo, COL_PROTOCOL, "MIH");
         col_clear(pinfo->cinfo,COL_INFO);
-        if (tree)
-        {
-                /* we are being asked for details */
-                ti = proto_tree_add_item(tree, proto_mih, tvb, 0, -1, ENC_NA);
-        }
 
+        /* we are being asked for details */
+        ti = proto_tree_add_item(tree, proto_mih, tvb, 0, -1, ENC_NA);
         mih_tree = proto_item_add_subtree(ti, ett_mih);
         if(mih_tree)
-                item = proto_tree_add_item(mih_tree, hf_mih_version, tvb, offset, 1, ENC_BIG_ENDIAN);
-        if(item)
         {
-                ver_flags_tree = proto_item_add_subtree(item, ett_ver_flags);
-                proto_tree_add_item(ver_flags_tree, hf_mih_version, tvb, offset, 1, ENC_BIG_ENDIAN);
-                proto_tree_add_item(ver_flags_tree, hf_mih_ack_req, tvb, offset, 1, ENC_BIG_ENDIAN);
-                proto_tree_add_item(ver_flags_tree, hf_mih_ack_resp, tvb, offset, 1, ENC_BIG_ENDIAN);
-                proto_tree_add_item(ver_flags_tree, hf_mih_uir, tvb, offset, 1, ENC_BIG_ENDIAN);
-                proto_tree_add_item(ver_flags_tree, hf_mih_more_frag, tvb, offset, 1, ENC_BIG_ENDIAN);
-                fragment = tvb_get_guint8(tvb, offset);
-                fragment = fragment << 7;
+            item = proto_tree_add_item(mih_tree, hf_mih_version, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+            ver_flags_tree = proto_item_add_subtree(item, ett_ver_flags);
+            proto_tree_add_item(ver_flags_tree, hf_mih_version, tvb, offset, 1, ENC_BIG_ENDIAN);
+            proto_tree_add_item(ver_flags_tree, hf_mih_ack_req, tvb, offset, 1, ENC_BIG_ENDIAN);
+            proto_tree_add_item(ver_flags_tree, hf_mih_ack_resp, tvb, offset, 1, ENC_BIG_ENDIAN);
+            proto_tree_add_item(ver_flags_tree, hf_mih_uir, tvb, offset, 1, ENC_BIG_ENDIAN);
+            proto_tree_add_item(ver_flags_tree, hf_mih_more_frag, tvb, offset, 1, ENC_BIG_ENDIAN);
+            fragment = tvb_get_guint8(tvb, offset);
+            fragment = fragment << 7;
         }
         offset += 1;
 
@@ -2150,8 +2147,8 @@ static void dissect_mih(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
                 if(len <= (guint64)payload_length)
                 {
                         /*for type...*/
-                        item = proto_tree_add_text(mih_tree, tvb, offset, 1 + len_of_len + (guint32)len, "MIH TLV : %s", val_to_str(tvb_get_guint8(tvb, offset), typevaluenames, "UNKNOWN"));
-                        tlv_tree = proto_item_add_subtree(item, ett_tlv);
+                        tlv_tree = proto_tree_add_subtree_format(mih_tree, tvb, offset, 1 + len_of_len + (guint32)len, ett_tlv, NULL,
+                                                "MIH TLV : %s", val_to_str(tvb_get_guint8(tvb, offset), typevaluenames, "UNKNOWN"));
                         if(tlv_tree)
                         {
                                 proto_tree_add_item(tlv_tree, hf_mih_type, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2176,9 +2173,9 @@ static void dissect_mih(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
                                 dissect_mih_tlv(tvb, offset, tlv_tree, type, (guint32)len);
                                 offset += (guint32)len;
                                 payload_length -= (1 + len_of_len + (guint16)len);
-                                        }else{
-                                                return;
-                                        }
+                        }else{
+                            return;
+                        }
                 }
                 else
                 {
index 8939a25f0cadd39e23ac809c19e2e880586b2eff..98ba689845bcada7f0f619cc3c8f5fc8ed2c35ca 100644 (file)
@@ -498,12 +498,10 @@ dissect_mip_priv_ext_3gpp2(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
 static void
 dissect_mip_extensions( tvbuff_t *tvb, int offset, proto_tree *tree, packet_info *pinfo)
 {
-  proto_item   *ti;
   proto_tree   *exts_tree=NULL;
   proto_tree   *ext_tree;
   proto_tree   *tf;
   proto_tree   *ext_flags_tree;
-  proto_tree   *tp;
   proto_tree   *pmipv4_tree;
   gint          ext_len;
   guint8        ext_type;
@@ -520,8 +518,7 @@ dissect_mip_extensions( tvbuff_t *tvb, int offset, proto_tree *tree, packet_info
   if (!tree) return;
 
   /* Add our tree, if we have extensions */
-  ti = proto_tree_add_text(tree, tvb, offset, -1, "Extensions");
-  exts_tree = proto_item_add_subtree(ti, ett_mip_exts);
+  exts_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_mip_exts, NULL, "Extensions");
 
   /* And, handle each extension */
   while (tvb_reported_length_remaining(tvb, offset) > 0) {
@@ -550,11 +547,10 @@ dissect_mip_extensions( tvbuff_t *tvb, int offset, proto_tree *tree, packet_info
       hdrLen = 2;
     }
 
-    ti = proto_tree_add_text(exts_tree, tvb, offset, ext_len + hdrLen,
-                 "Extension: %s",
+    ext_tree = proto_tree_add_subtree_format(exts_tree, tvb, offset, ext_len + hdrLen,
+                 ett_mip_ext, NULL, "Extension: %s",
                  val_to_str(ext_type, mip_ext_types,
                             "Unknown Extension %u"));
-    ext_tree = proto_item_add_subtree(ti, ett_mip_ext);
 
     proto_tree_add_uint(ext_tree, hf_mip_ext_type, tvb, offset, 1, ext_type);
     offset++;
@@ -676,10 +672,9 @@ dissect_mip_extensions( tvbuff_t *tvb, int offset, proto_tree *tree, packet_info
     case PMIPv4_SKIP_EXT:   /* draft-leung-mip4-proxy-mode */
       /* sub-type */
       ext_subtype = tvb_get_guint8(tvb, offset);
-      tp = proto_tree_add_text(ext_tree, tvb, offset, ext_len,
-                   "PMIPv4 Sub-Type: %s",
+      pmipv4_tree = proto_tree_add_subtree_format(ext_tree, tvb, offset, ext_len,
+                   ett_mip_pmipv4_ext, NULL, "PMIPv4 Sub-Type: %s",
                    val_to_str(ext_subtype, mip_pmipv4skipext_stypes, "Unknown Sub-Type %u"));
-      pmipv4_tree = proto_item_add_subtree(tp, ett_mip_pmipv4_ext);
       proto_tree_add_uint(pmipv4_tree, hf_mip_pmipv4skipext_stype, tvb, offset, 1, ext_subtype);
 
       if (ext_subtype == PMIPv4_SKIPEXT_STYPE_INTERFACE_ID) {
index 02f9e5aa06f964c1d607fa7878a243df83afd1da..396f90a66699601a7fd7d5b794d04cbd03021fab 100644 (file)
@@ -1224,11 +1224,9 @@ dissect_mip6_hoti(tvbuff_t *tvb, proto_tree *mip6_tree, packet_info *pinfo _U_)
 {
     if (mip6_tree) {
         proto_tree *data_tree;
-        proto_item *ti;
 
-        ti = proto_tree_add_text(mip6_tree, tvb, MIP6_DATA_OFF,
-                MIP6_HOTI_LEN, "Home Test Init");
-        data_tree = proto_item_add_subtree(ti, ett_mip6);
+        data_tree = proto_tree_add_subtree(mip6_tree, tvb, MIP6_DATA_OFF,
+                MIP6_HOTI_LEN, ett_mip6, NULL, "Home Test Init");
 
         proto_tree_add_item(data_tree, hf_mip6_hoti_cookie, tvb,
                 MIP6_HOTI_COOKIE_OFF, MIP6_HOTI_COOKIE_LEN, ENC_BIG_ENDIAN);
@@ -1242,11 +1240,9 @@ dissect_mip6_coti(tvbuff_t *tvb, proto_tree *mip6_tree, packet_info *pinfo _U_)
 {
     if (mip6_tree) {
         proto_tree *data_tree;
-        proto_item *ti;
 
-        ti = proto_tree_add_text(mip6_tree, tvb, MIP6_DATA_OFF,
-                MIP6_COTI_LEN, "Care-of Test Init");
-        data_tree = proto_item_add_subtree(ti, ett_mip6);
+        data_tree = proto_tree_add_subtree(mip6_tree, tvb, MIP6_DATA_OFF,
+                MIP6_COTI_LEN, ett_mip6, NULL, "Care-of Test Init");
 
         proto_tree_add_item(data_tree, hf_mip6_coti_cookie, tvb,
                 MIP6_COTI_COOKIE_OFF, MIP6_COTI_COOKIE_LEN, ENC_BIG_ENDIAN);
@@ -1260,11 +1256,9 @@ dissect_mip6_hot(tvbuff_t *tvb, proto_tree *mip6_tree, packet_info *pinfo _U_)
 {
     if (mip6_tree) {
         proto_tree *data_tree;
-        proto_item *ti;
 
-        ti = proto_tree_add_text(mip6_tree, tvb, MIP6_DATA_OFF,
-                MIP6_HOT_LEN, "Home Test");
-        data_tree = proto_item_add_subtree(ti, ett_mip6);
+        data_tree = proto_tree_add_subtree(mip6_tree, tvb, MIP6_DATA_OFF,
+                MIP6_HOT_LEN, ett_mip6, NULL, "Home Test");
 
         proto_tree_add_item(data_tree, hf_mip6_hot_nindex, tvb,
                 MIP6_HOT_INDEX_OFF, MIP6_HOT_INDEX_LEN, ENC_BIG_ENDIAN);
@@ -1282,11 +1276,9 @@ dissect_mip6_cot(tvbuff_t *tvb, proto_tree *mip6_tree, packet_info *pinfo _U_)
 {
     if (mip6_tree) {
         proto_tree *data_tree;
-        proto_item *ti;
 
-        ti = proto_tree_add_text(mip6_tree, tvb, MIP6_DATA_OFF,
-                MIP6_COT_LEN, "Care-of Test");
-        data_tree = proto_item_add_subtree(ti, ett_mip6);
+        data_tree = proto_tree_add_subtree(mip6_tree, tvb, MIP6_DATA_OFF,
+                MIP6_COT_LEN, ett_mip6, NULL, "Care-of Test");
 
         proto_tree_add_item(data_tree, hf_mip6_cot_nindex, tvb,
                 MIP6_COT_INDEX_OFF, MIP6_COT_INDEX_LEN, ENC_BIG_ENDIAN);
@@ -1319,12 +1311,10 @@ dissect_mip6_bu(tvbuff_t *tvb, proto_tree *mip6_tree, packet_info *pinfo _U_)
 {
     if (mip6_tree) {
         proto_tree *data_tree;
-        proto_item *ti;
         int         lifetime;
 
-        ti = proto_tree_add_text(mip6_tree, tvb, MIP6_DATA_OFF,
-                MIP6_BU_LEN, "Binding Update");
-        data_tree = proto_item_add_subtree(ti, ett_mip6);
+        data_tree = proto_tree_add_subtree(mip6_tree, tvb, MIP6_DATA_OFF,
+                MIP6_BU_LEN, ett_mip6, NULL, "Binding Update");
 
         proto_tree_add_item(data_tree, hf_mip6_bu_seqnr, tvb,
                 MIP6_BU_SEQNR_OFF, MIP6_BU_SEQNR_LEN, ENC_BIG_ENDIAN);
@@ -1369,12 +1359,10 @@ dissect_mip6_ba(tvbuff_t *tvb, proto_tree *mip6_tree, packet_info *pinfo _U_)
 {
     if (mip6_tree) {
         proto_tree *data_tree;
-        proto_item *ti;
         int         lifetime;
 
-        ti = proto_tree_add_text(mip6_tree, tvb, MIP6_DATA_OFF,
-                MIP6_BA_LEN, "Binding Acknowledgement");
-        data_tree = proto_item_add_subtree(ti, ett_mip6);
+        data_tree = proto_tree_add_subtree(mip6_tree, tvb, MIP6_DATA_OFF,
+                MIP6_BA_LEN, ett_mip6, NULL, "Binding Acknowledgement");
 
         proto_tree_add_item(data_tree, hf_mip6_ba_status, tvb,
                 MIP6_BA_STATUS_OFF, MIP6_BA_STATUS_LEN, ENC_BIG_ENDIAN);
@@ -1410,11 +1398,9 @@ dissect_mip6_be(tvbuff_t *tvb, proto_tree *mip6_tree, packet_info *pinfo _U_)
 {
     if (mip6_tree) {
         proto_tree *data_tree;
-        proto_item *ti;
 
-        ti = proto_tree_add_text(mip6_tree, tvb, MIP6_DATA_OFF,
-                MIP6_BE_LEN, "Binding Error");
-        data_tree = proto_item_add_subtree(ti, ett_mip6);
+        data_tree = proto_tree_add_subtree(mip6_tree, tvb, MIP6_DATA_OFF,
+                MIP6_BE_LEN, ett_mip6, NULL, "Binding Error");
 
         proto_tree_add_item(data_tree, hf_mip6_be_status, tvb,
                 MIP6_BE_STATUS_OFF, MIP6_BE_STATUS_LEN, ENC_BIG_ENDIAN);
@@ -1430,11 +1416,9 @@ dissect_mip6_hb(tvbuff_t *tvb, proto_tree *mip6_tree, packet_info *pinfo _U_)
 {
     if (mip6_tree) {
         proto_tree *data_tree;
-        proto_item *ti;
 
-        ti = proto_tree_add_text(mip6_tree, tvb, MIP6_DATA_OFF,
-                MIP6_HB_LEN, "Heartbeat");
-        data_tree = proto_item_add_subtree(ti, ett_mip6);
+        data_tree = proto_tree_add_subtree(mip6_tree, tvb, MIP6_DATA_OFF,
+                MIP6_HB_LEN, ett_mip6, NULL, "Heartbeat");
 
         proto_tree_add_item(data_tree, hf_mip6_hb_u_flag, tvb,
                 MIP6_HB_FLAGS_OFF, MIP6_HB_FLAGS_LEN, ENC_BIG_ENDIAN);
@@ -1471,10 +1455,8 @@ dissect_mip6_hi(tvbuff_t *tvb, proto_tree *mip6_tree, packet_info *pinfo _U_)
 {
     if (mip6_tree) {
         proto_tree *data_tree;
-        proto_item *ti;
 
-        ti = proto_tree_add_text(mip6_tree, tvb, MIP6_DATA_OFF, 4, "Handover Initiate");
-        data_tree = proto_item_add_subtree(ti, ett_mip6);
+        data_tree = proto_tree_add_subtree(mip6_tree, tvb, MIP6_DATA_OFF, 4, ett_mip6, NULL, "Handover Initiate");
 
         proto_tree_add_item(data_tree, hf_mip6_hi_seqnr, tvb,
                 MIP6_DATA_OFF, 2, ENC_BIG_ENDIAN);
@@ -1516,10 +1498,8 @@ dissect_mip6_hack(tvbuff_t *tvb, proto_tree *mip6_tree, packet_info *pinfo _U_)
 {
     if (mip6_tree) {
         proto_tree *data_tree;
-        proto_item *ti;
 
-        ti = proto_tree_add_text(mip6_tree, tvb, MIP6_DATA_OFF, 4, "Handover Acknowledge ");
-        data_tree = proto_item_add_subtree(ti, ett_mip6);
+        data_tree = proto_tree_add_subtree(mip6_tree, tvb, MIP6_DATA_OFF, 4, ett_mip6, NULL, "Handover Acknowledge ");
 
         proto_tree_add_item(data_tree, hf_mip6_hack_seqnr, tvb,
                 MIP6_DATA_OFF, 2, ENC_BIG_ENDIAN);
@@ -1553,12 +1533,10 @@ dissect_fmip6_fbu(tvbuff_t *tvb, proto_tree *mip6_tree, packet_info *pinfo _U_)
 {
     if (mip6_tree) {
         proto_tree *data_tree;
-        proto_item *ti;
         int lifetime;
 
-        ti = proto_tree_add_text(mip6_tree, tvb, MIP6_DATA_OFF,
-                MIP6_BU_LEN, "Fast Binding Update");
-        data_tree = proto_item_add_subtree(ti, ett_mip6);
+        data_tree = proto_tree_add_subtree(mip6_tree, tvb, MIP6_DATA_OFF,
+                MIP6_BU_LEN, ett_mip6, NULL, "Fast Binding Update");
 
         proto_tree_add_item(data_tree, hf_fmip6_fbu_seqnr, tvb,
                 FMIP6_FBU_SEQNR_OFF, FMIP6_FBU_SEQNR_LEN, ENC_BIG_ENDIAN);
@@ -1588,12 +1566,10 @@ dissect_fmip6_fback(tvbuff_t *tvb, proto_tree *mip6_tree, packet_info *pinfo _U_
 {
     if (mip6_tree) {
         proto_tree *data_tree;
-        proto_item *ti;
         int         lifetime;
 
-        ti = proto_tree_add_text(mip6_tree, tvb, MIP6_DATA_OFF,
-                FMIP6_FBACK_LEN, "Fast Binding Acknowledgement");
-        data_tree = proto_item_add_subtree(ti, ett_mip6);
+        data_tree = proto_tree_add_subtree(mip6_tree, tvb, MIP6_DATA_OFF,
+                FMIP6_FBACK_LEN, ett_mip6, NULL, "Fast Binding Acknowledgement");
 
         proto_tree_add_item(data_tree, hf_fmip6_fback_status, tvb,
                 FMIP6_FBACK_STATUS_OFF, FMIP6_FBACK_STATUS_LEN, ENC_BIG_ENDIAN);
@@ -1634,7 +1610,6 @@ dissect_pmip6_bri(tvbuff_t *tvb, proto_tree *mip6_tree, packet_info *pinfo)
 #define INDICATION  1
 #define ACKNOWLEDGE 2
 
-    proto_item *ti;
     proto_tree *field_tree;
     guint8      br_type;
 
@@ -1647,10 +1622,8 @@ dissect_pmip6_bri(tvbuff_t *tvb, proto_tree *mip6_tree, packet_info *pinfo)
 
         if (mip6_tree)
         {
-            ti = proto_tree_add_text(mip6_tree, tvb, MIP6_DATA_OFF,
-                PMIP6_BRI_LEN, "Binding Revocation Indication");
-
-            field_tree = proto_item_add_subtree(ti, ett_mip6);
+            field_tree = proto_tree_add_subtree(mip6_tree, tvb, MIP6_DATA_OFF,
+                PMIP6_BRI_LEN, ett_mip6, NULL, "Binding Revocation Indication");
 
             proto_tree_add_item(field_tree, hf_pmip6_bri_brtype, tvb,
                 PMIP6_BRI_BRTYPE_OFF, PMIP6_BRI_BRTYPE_LEN, ENC_BIG_ENDIAN);
@@ -1679,10 +1652,8 @@ dissect_pmip6_bri(tvbuff_t *tvb, proto_tree *mip6_tree, packet_info *pinfo)
 
         if (mip6_tree)
         {
-            ti = proto_tree_add_text(mip6_tree, tvb, MIP6_DATA_OFF,
-                PMIP6_BRI_LEN, "Binding Revocation Acknowledge");
-
-            field_tree = proto_item_add_subtree(ti, ett_mip6);
+            field_tree = proto_tree_add_subtree(mip6_tree, tvb, MIP6_DATA_OFF,
+                PMIP6_BRI_LEN, ett_mip6, NULL, "Binding Revocation Acknowledge");
 
             proto_tree_add_item(field_tree, hf_pmip6_bri_brtype, tvb,
                 PMIP6_BRI_BRTYPE_OFF, PMIP6_BRI_BRTYPE_LEN, ENC_BIG_ENDIAN);
@@ -1934,10 +1905,8 @@ dissect_mip6_opt_ni(const mip6_opt *optp, tvbuff_t *tvb, int offset,
             proto_tree *opt_tree, proto_item *hdr_item _U_ )
 {
     proto_tree *field_tree;
-    proto_item *tf;
 
-    tf = proto_tree_add_text(opt_tree, tvb, offset, optlen, "%s", optp->name);
-    field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+    field_tree = proto_tree_add_subtree(opt_tree, tvb, offset, optlen, *optp->subtree_index, NULL, optp->name);
 
     proto_tree_add_item(field_tree, hf_mip6_ni_hni, tvb,
             offset + MIP6_NI_HNI_OFF, MIP6_NI_HNI_LEN, ENC_BIG_ENDIAN);
@@ -1952,10 +1921,8 @@ dissect_mip6_opt_bad(const mip6_opt *optp _U_, tvbuff_t *tvb, int offset,
              proto_tree *opt_tree, proto_item *hdr_item _U_ )
 {
     proto_tree *field_tree;
-    proto_item *tf;
 
-    tf = proto_tree_add_text(opt_tree, tvb, offset, optlen, "%s", optp->name);
-    field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+    field_tree = proto_tree_add_subtree(opt_tree, tvb, offset, optlen, *optp->subtree_index, NULL, optp->name);
 
     proto_tree_add_item(field_tree, hf_mip6_bad_auth, tvb,
             offset + MIP6_BAD_AUTH_OFF,
@@ -1969,10 +1936,8 @@ dissect_mip6_nemo_opt_mnp(const mip6_opt *optp _U_, tvbuff_t *tvb, int offset,
               proto_tree *opt_tree, proto_item *hdr_item _U_ )
 {
     proto_tree *field_tree;
-    proto_item *tf;
 
-    tf = proto_tree_add_text(opt_tree, tvb, offset, optlen, "%s", optp->name);
-    field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+    field_tree = proto_tree_add_subtree(opt_tree, tvb, offset, optlen, *optp->subtree_index, NULL, optp->name);
     proto_tree_add_item(opt_tree, hf_mip6_nemo_mnp_pfl, tvb,
             offset + MIP6_NEMO_MNP_PL_OFF, 1, ENC_BIG_ENDIAN);
 
@@ -1987,11 +1952,9 @@ dissect_fmip6_opt_lla(const mip6_opt *optp _U_, tvbuff_t *tvb, int offset,
               proto_tree *opt_tree, proto_item *hdr_item _U_ )
 {
     proto_tree *field_tree;
-    proto_item *tf;
     int         len, p;
 
-    tf = proto_tree_add_text(opt_tree, tvb, offset, optlen, "%s", optp->name);
-    field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+    field_tree = proto_tree_add_subtree(opt_tree, tvb, offset, optlen, *optp->subtree_index, NULL, optp->name);
 
     proto_tree_add_item(field_tree, hf_mip6_opt_len, tvb, offset+1, 1, ENC_BIG_ENDIAN);
 
@@ -2427,12 +2390,10 @@ dissect_pmip6_opt_mnlli(const mip6_opt *optp _U_, tvbuff_t *tvb, int offset,
 static void dissect_pmip6_opt_lla(const mip6_opt *optp _U_, tvbuff_t *tvb, int offset,
                         guint optlen, packet_info *pinfo _U_, proto_tree *opt_tree, proto_item *hdr_item _U_ )
 {
-    proto_item *ti;
     proto_tree *field_tree;
 
     if (opt_tree) {
-    ti = proto_tree_add_text(opt_tree, tvb, offset, optlen, "%s", optp->name);
-        field_tree = proto_item_add_subtree(ti, *optp->subtree_index);
+        field_tree = proto_tree_add_subtree(opt_tree, tvb, offset, optlen, *optp->subtree_index, NULL, optp->name);
 
         proto_tree_add_item(field_tree, hf_pmip6_opt_lila_lla, tvb, offset + 2, 16, ENC_NA);
    }
@@ -2492,11 +2453,9 @@ dissect_pmip6_opt_ipv4ha(const mip6_opt *optp _U_, tvbuff_t *tvb, int offset,
              guint optlen, packet_info *pinfo _U_, proto_tree *opt_tree, proto_item *hdr_item _U_ )
 {
     proto_tree *field_tree;
-    proto_item *tf;
     int         len, p;
 
-    tf = proto_tree_add_text(opt_tree, tvb, offset, optlen, "%s", optp->name);
-    field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+    field_tree = proto_tree_add_subtree(opt_tree, tvb, offset, optlen, *optp->subtree_index, NULL, optp->name);
 
     p = offset + MIP6_IPV4HA_PREFIXL_OFF;
     len = MIP6_IPV4HA_PREFIXL_LEN;
@@ -2515,10 +2474,8 @@ dissect_pmip6_opt_ipv4aa(const mip6_opt *optp _U_, tvbuff_t *tvb, int offset,
              guint optlen, packet_info *pinfo _U_, proto_tree *opt_tree, proto_item *hdr_item _U_ )
 {
     proto_tree *field_tree;
-    proto_item *tf;
 
-    tf = proto_tree_add_text(opt_tree, tvb, offset, optlen, "%s", optp->name);
-    field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+    field_tree = proto_tree_add_subtree(opt_tree, tvb, offset, optlen, *optp->subtree_index, NULL, optp->name);
 
     proto_tree_add_item(field_tree, hf_mip6_ipv4aa_status, tvb,
             offset + MIP6_IPV4AA_STATUS_OFF, MIP6_IPV4AA_STATUS_LEN, ENC_BIG_ENDIAN);
@@ -3586,15 +3543,8 @@ dissect_mip6_options(tvbuff_t *tvb, proto_tree *mip6_tree, int offset, int len,
              packet_info *pinfo)
 {
     proto_tree *opts_tree;
-    proto_item *ti;
-
-#if 0  /* dissect_mipv6_options() calls expert...() */
-    if (!mip6_tree)
-        return len;
-#endif
 
-    ti = proto_tree_add_text(mip6_tree, tvb, offset, len, "Mobility Options");
-    opts_tree = proto_item_add_subtree(ti, ett_mip6);
+    opts_tree = proto_tree_add_subtree(mip6_tree, tvb, offset, len, ett_mip6, NULL, "Mobility Options");
 
     dissect_mipv6_options(tvb, offset, len, mip6_opts, N_MIP6_OPTS, -1, pinfo, opts_tree);
 
index 4dd58d94a723ba30c74a765a5dfa1b3098b023c7..ce3109e908ed963fca67f0f8fd52fa26b25f26e2 100644 (file)
@@ -149,7 +149,6 @@ dissect_tlv(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mndp_tree,
 {
        guint32 tlv_type;
        guint32 tlv_length;
-       proto_item *tlv_item;
        proto_item *tlv_tree;
        proto_item *type_item;
        int type_index;
@@ -159,14 +158,13 @@ dissect_tlv(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mndp_tree,
        tlv_type = tvb_get_ntohs(tvb, offset);
        tlv_length = tvb_get_ntohs(tvb, offset + 2);
        /* DISSECTOR_ASSERT(tlv_length >= 4); */
-       tlv_item = proto_tree_add_text(mndp_tree, tvb,
-               offset, tlv_length+4,
+       tlv_tree = proto_tree_add_subtree_format(mndp_tree, tvb,
+               offset, tlv_length+4, ett_mndp_tlv_header, NULL,
                "T %d, L %d: %s",
                tlv_type,
                tlv_length,
                extval_to_str_idx(tlv_type, value_array, NULL, "Unknown"));
-       tlv_tree = proto_item_add_subtree(tlv_item,
-               ett_mndp_tlv_header);
+
        type_item = proto_tree_add_item(tlv_tree, hf_mndp_tlv_type,
                tvb, offset, 2, ENC_BIG_ENDIAN);
        proto_item_append_text(type_item, " = %s",
index 3af8cd9b0348a5c59bf34952813160b5fe035f20..5f127a5d20165169c0ef1d4c1f8acace0fadd56d 100644 (file)
@@ -197,8 +197,7 @@ dissect_mojito_address(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
 
        /* new subtree for socket address*/
        socket_address_version = tvb_get_guint8(tvb, offset);
-       socket_item = proto_tree_add_text(tree, tvb, offset, 1, "%s", title);
-       socket_tree = proto_item_add_subtree(socket_item, ett_mojito_socket_address);
+       socket_tree = proto_tree_add_subtree(tree, tvb, offset, 1, ett_mojito_socket_address, &socket_item, title);
 
        proto_tree_add_item(socket_tree, hf_mojito_socketaddress_version, tvb, offset, 1, ENC_NA);
        offset += 1;
@@ -241,13 +240,12 @@ dissect_mojito_contact(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
 
        if (contact_id > 0)
        {
-               contact_item = proto_tree_add_text(tree, tvb, offset, 1, "Contact #%d", contact_id);
+               contact_tree = proto_tree_add_subtree_format(tree, tvb, offset, 1, ett_mojito_contact, &contact_item, "Contact #%d", contact_id);
        }
        else
        {
-               contact_item = proto_tree_add_text(tree, tvb, offset, 1, "Contact");
+               contact_tree = proto_tree_add_subtree(tree, tvb, offset, 1, ett_mojito_contact, &contact_item, "Contact");
        }
-       contact_tree = proto_item_add_subtree(contact_item, ett_mojito_contact);
 
        proto_tree_add_item(contact_tree, hf_mojito_contactvendor, tvb, offset, 4, ENC_ASCII|ENC_NA);
        offset += 4;
@@ -279,12 +277,11 @@ dissect_mojito_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
                       int offset, mojito_header_data_t* header_data)
 {
        proto_tree *header_tree, *version_tree, *contact_tree, *flag_tree;
-       proto_item *header_item, *version_item, *contact_item, *flag_item;
+       proto_item *header_item, *contact_item, *flag_item;
        int         start_offset = offset;
        int         contact_start_offset;
 
-       header_item = proto_tree_add_text(tree, tvb, offset, 61, "Gnutella Header");
-       header_tree = proto_item_add_subtree(header_item, ett_mojito_header);
+       header_tree = proto_tree_add_subtree(tree, tvb, offset, 61, ett_mojito_header, &header_item, "Gnutella Header");
 
        proto_tree_add_item(header_tree, hf_mojito_messageid, tvb, offset, 16, ENC_NA);
        offset += 16;
@@ -292,8 +289,7 @@ dissect_mojito_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
        proto_tree_add_item(header_tree, hf_mojito_fdhtmessage, tvb, offset, 1, ENC_BIG_ENDIAN);
        offset += 1;
 
-       version_item = proto_tree_add_text(header_tree, tvb, offset, 2, "Version");
-       version_tree = proto_item_add_subtree(version_item, ett_mojito_header_version);
+       version_tree = proto_tree_add_subtree(header_tree, tvb, offset, 2, ett_mojito_header_version, NULL, "Version");
 
        proto_tree_add_item(version_tree, hf_mojito_mjrversion, tvb, offset, 1, ENC_BIG_ENDIAN);
        offset += 1;
@@ -311,14 +307,12 @@ dissect_mojito_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
        offset += 1;
 
        contact_start_offset = offset;
-       contact_item = proto_tree_add_text(header_tree, tvb, offset, 35, "Originating Contact");
-       contact_tree = proto_item_add_subtree(contact_item, ett_mojito_contact);
+       contact_tree = proto_tree_add_subtree(header_tree, tvb, offset, 35, ett_mojito_contact, &contact_item, "Originating Contact");
 
        proto_tree_add_item(contact_tree, hf_mojito_vendor, tvb, offset, 4, ENC_ASCII|ENC_NA);
        offset += 4;
 
-       version_item = proto_tree_add_text(contact_tree, tvb, offset, 2, "Contact Version");
-       version_tree = proto_item_add_subtree(version_item, ett_mojito_contact_version);
+       version_tree = proto_tree_add_subtree(contact_tree, tvb, offset, 2, ett_mojito_contact_version, NULL, "Contact Version");
 
        proto_tree_add_item(version_tree, hf_mojito_origmjrversion, tvb, offset, 1, ENC_BIG_ENDIAN);
        offset += 1;
@@ -371,8 +365,7 @@ dissect_mojito_ping_response(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
 
        /* BigInt subtree */
        bigintlen = tvb_get_guint8(tvb, offset);
-       bigint_item = proto_tree_add_text(tree, tvb, offset, bigintlen + 1 , "Estimated DHT size");
-       bigint_tree = proto_item_add_subtree(bigint_item, ett_mojito_bigint);
+       bigint_tree = proto_tree_add_subtree(tree, tvb, offset, bigintlen + 1, ett_mojito_bigint, &bigint_item, "Estimated DHT size");
 
        proto_tree_add_item(bigint_tree, hf_mojito_bigintegerlen, tvb, offset, 1, ENC_BIG_ENDIAN);
        offset += 1;
@@ -427,8 +420,7 @@ dissect_mojito_store_request(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
        /* For each Contact, display the info */
        for (ii = 0; ii < contactcount; ii++)
        {
-               dht_item = proto_tree_add_text(tree, tvb, offset, 1, "DHTValue #%d", ii+1);
-               dht_tree = proto_item_add_subtree(dht_item, ett_mojito_dht);
+               dht_tree = proto_tree_add_subtree_format(tree, tvb, offset, 1, ett_mojito_dht, &dht_item, "DHTValue #%d", ii+1);
                start_offset = offset;
                contact_offset = dissect_mojito_contact(tvb, pinfo, dht_tree, offset, -1);
                if (contact_offset == 0)
@@ -476,8 +468,7 @@ dissect_mojito_store_response(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
        /* For each Contact, display the info */
        for (ii = 0; ii < contactcount; ii++)
        {
-               sc_item = proto_tree_add_text(tree, tvb, offset, 23, "Status Code %d", ii+1);
-               sc_tree = proto_item_add_subtree(sc_item, ett_mojito_status_code);
+               sc_tree = proto_tree_add_subtree_format(tree, tvb, offset, 23, ett_mojito_status_code, &sc_item, "Status Code %d", ii+1);
 
                start_offset = offset;
 
@@ -537,7 +528,6 @@ static void
 dissect_mojito_find_value_request(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset)
 {
        proto_tree *kuid_tree;
-       proto_item *kuid_item;
        guint8      i, kuidcount;
 
        if (!tree)
@@ -548,8 +538,7 @@ dissect_mojito_find_value_request(tvbuff_t *tvb, packet_info *pinfo _U_, proto_t
 
        kuidcount = tvb_get_guint8(tvb, offset);
 
-       kuid_item = proto_tree_add_text(tree, tvb, offset, (20 * kuidcount) + 1 , "Secondary KUID\'s");
-       kuid_tree = proto_item_add_subtree(kuid_item, ett_mojito_kuids);
+       kuid_tree = proto_tree_add_subtree(tree, tvb, offset, (20 * kuidcount) + 1, ett_mojito_kuids, NULL, "Secondary KUID\'s");
 
        proto_tree_add_item(kuid_tree, hf_mojito_kuidcount, tvb, offset, 1, ENC_BIG_ENDIAN);
        offset += 1;
@@ -569,7 +558,7 @@ static void
 dissect_mojito_find_value_response(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
 {
        proto_tree *dht_tree, *version_tree, *kuid_tree;
-       proto_item *dht_item, *version_item, *kuid_item;
+       proto_item *dht_item, *version_item;
        guint16     dhtvaluelength;
        int         contact_offset, start_offset;
        guint8      ii, dhtvaluescount, kuidcount;
@@ -584,8 +573,7 @@ dissect_mojito_find_value_response(tvbuff_t *tvb, packet_info *pinfo, proto_tree
        /* For each Contact, display the info */
        for (ii = 0; ii < dhtvaluescount; ii++)
        {
-               dht_item = proto_tree_add_text(tree, tvb, offset, 1, "DHTValue #%d", ii+1);
-               dht_tree = proto_item_add_subtree(dht_item, ett_mojito_dht);
+               dht_tree = proto_tree_add_subtree_format(tree, tvb, offset, 1, ett_mojito_dht, &dht_item, "DHTValue #%d", ii+1);
                start_offset = offset;
                contact_offset = dissect_mojito_contact(tvb, pinfo, dht_tree, offset, -1);
                if (contact_offset == 0)
@@ -622,8 +610,7 @@ dissect_mojito_find_value_response(tvbuff_t *tvb, packet_info *pinfo, proto_tree
 
        /*KUID Count */
        kuidcount = tvb_get_guint8(tvb, offset);
-       kuid_item = proto_tree_add_text(tree, tvb, offset, (20 * kuidcount) + 1 , "Secondary KUID\'s");
-       kuid_tree = proto_item_add_subtree(kuid_item, ett_mojito_kuids);
+       kuid_tree = proto_tree_add_subtree(tree, tvb, offset, (20 * kuidcount) + 1, ett_mojito_kuids, NULL, "Secondary KUID\'s");
        proto_tree_add_item(kuid_tree, hf_mojito_kuidcount, tvb, offset, 1, ENC_BIG_ENDIAN);
        offset += 1;
 
@@ -639,7 +626,7 @@ static int
 dissect_mojito(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
 {
        proto_tree           *mojito_tree, *opcode_tree;
-       proto_item           *ti, *opcode_item;
+       proto_item           *ti;
        mojito_header_data_t  header_data;
        gint                  offset = 0;
 
@@ -654,11 +641,10 @@ dissect_mojito(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _
        if (offset == 0) /* Some error occurred */
                return 0;
 
-       opcode_item = proto_tree_add_text(mojito_tree, tvb,
+       opcode_tree = proto_tree_add_subtree_format(mojito_tree, tvb,
                                          offset, header_data.payloadlength - MOJITO_HEADER_LENGTH,
-                                         "Opcode specific data (%s)",
+                                         ett_mojito_opcode, NULL, "Opcode specific data (%s)",
                                          val_to_str_const(header_data.opcode, opcodeflags, "Unknown"));
-       opcode_tree = proto_item_add_subtree(opcode_item, ett_mojito_opcode);
 
        /* Now use the opcode to figure out what to do next */
        switch (header_data.opcode)
index a535d8056b98296d3d9045f2e918ea1cd1ad4d5a..b34e40de2234e83c56d07eba184da28e80ea7545 100644 (file)
@@ -209,18 +209,16 @@ dissect_mount1_mnt_reply(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tr
 static int
 dissect_mountlist(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, void* data _U_)
 {
-       proto_item* lock_item = NULL;
-       proto_tree* lock_tree = NULL;
+       proto_item* lock_item;
+       proto_tree* lock_tree;
        int old_offset = offset;
        const char* hostname;
        const char* directory;
 
-       if (tree) {
-               lock_item = proto_tree_add_item(tree, hf_mount_mountlist, tvb,
+       lock_item = proto_tree_add_item(tree, hf_mount_mountlist, tvb,
                                        offset, -1, ENC_NA);
-               if (lock_item)
-                       lock_tree = proto_item_add_subtree(lock_item, ett_mount_mountlist);
-       }
+
+       lock_tree = proto_item_add_subtree(lock_item, ett_mount_mountlist);
 
        offset = dissect_rpc_string(tvb, lock_tree,
                        hf_mount_mountlist_hostname, offset, &hostname);
@@ -306,8 +304,7 @@ dissect_exportlist(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tr
        if (tree) {
                groups_item = proto_tree_add_item(exportlist_tree, hf_mount_groups, tvb,
                                        offset, -1, ENC_NA);
-               if (groups_item)
-                       groups_tree = proto_item_add_subtree(groups_item, ett_mount_groups);
+               groups_tree = proto_item_add_subtree(groups_item, ett_mount_groups);
        }
 
        offset = dissect_rpc_list(tvb, pinfo, groups_tree, offset,
index 676a0541fd482549ad69c6388fa3441982feea7a..2f0d0e5cc2490aa2b22a79574cbc1e0b118a258b 100644 (file)
@@ -582,7 +582,6 @@ mp2t_process_fragmented_payload(tvbuff_t *tvb, gint offset, guint remaining_len,
     guint8                     pointer       = 0;
     proto_item                *pi;
     guint                      stuff_len     = 0;
-    proto_item                *si;
     proto_tree                *stuff_tree;
     packet_analysis_data_t    *pdata         = NULL;
     subpacket_analysis_data_t *spdata        = NULL;
@@ -735,8 +734,7 @@ mp2t_process_fragmented_payload(tvbuff_t *tvb, gint offset, guint remaining_len,
             }
 
             if (stuff_len) {
-                si = proto_tree_add_text(tree, tvb, offset, stuff_len, "Stuffing");
-                stuff_tree = proto_item_add_subtree(si, ett_stuff);
+                stuff_tree = proto_tree_add_subtree_format(tree, tvb, offset, stuff_len, ett_stuff, NULL, "Stuffing");
                 proto_tree_add_item(stuff_tree, hf_mp2t_stuff_bytes, tvb, offset, stuff_len, ENC_NA);
                 offset += stuff_len;
                 if (stuff_len >= remaining_len) {
@@ -1175,9 +1173,8 @@ dissect_tsp(tvbuff_t *tvb, volatile gint offset, packet_info *pinfo,
     offset += 4;
 
     /* Create a subtree for analysis stuff */
-    item = proto_tree_add_text(mp2t_tree, tvb, offset, 0, "MPEG2 PCR Analysis");
+    mp2t_analysis_tree = proto_tree_add_subtree_format(mp2t_tree, tvb, offset, 0, ett_mp2t_analysis, &item, "MPEG2 PCR Analysis");
     PROTO_ITEM_SET_GENERATED(item);
-    mp2t_analysis_tree = proto_item_add_subtree(item, ett_mp2t_analysis);
 
     skips = detect_cc_drops(tvb, mp2t_analysis_tree, pinfo, pid, cc, mp2t_data);
 
index a517d1f20beecfc19ddbae20bdd669ead0d25bc8..ef03a71db15e766a3f41f7840760533c4aa763f1 100644 (file)
@@ -631,15 +631,14 @@ proto_mpeg_descriptor_dissect_service_list(tvbuff_t *tvb, guint offset, guint le
     guint   end = offset + len;
     guint16 svc_id;
 
-    proto_item *si;
     proto_tree *svc_tree;
 
 
     while (offset < end) {
         svc_id = tvb_get_ntohs(tvb, offset);
 
-        si = proto_tree_add_text(tree, tvb, offset, 3, "Service 0x%02x", svc_id);
-        svc_tree = proto_item_add_subtree(si, ett_mpeg_descriptor_service_list);
+        svc_tree = proto_tree_add_subtree_format(tree, tvb, offset, 3,
+                    ett_mpeg_descriptor_service_list, NULL, "Service 0x%02x", svc_id);
 
         proto_tree_add_item(svc_tree, hf_mpeg_descr_service_list_id, tvb, offset, 2, ENC_BIG_ENDIAN);
         offset += 2;
@@ -906,14 +905,13 @@ proto_mpeg_descriptor_dissect_vbi_data(tvbuff_t *tvb, guint offset, guint len, p
     guint8 svc_id, svc_len;
     guint  end = offset + len, svc_end;
 
-    proto_item *si;
     proto_tree *svc_tree;
 
     while (offset < end) {
         svc_id  = tvb_get_guint8(tvb, offset);
         svc_len = tvb_get_guint8(tvb, offset + 1);
-        si = proto_tree_add_text(tree, tvb, offset, svc_len + 2, "Service 0x%02x", svc_id);
-        svc_tree = proto_item_add_subtree(si, ett_mpeg_descriptor_vbi_data_service);
+        svc_tree = proto_tree_add_subtree_format(tree, tvb, offset, svc_len + 2,
+                    ett_mpeg_descriptor_vbi_data_service, NULL, "Service 0x%02x", svc_id);
 
         proto_tree_add_item(svc_tree, hf_mpeg_descr_vbi_data_service_id, tvb, offset, 1, ENC_BIG_ENDIAN);
         offset += 1;
@@ -1271,7 +1269,6 @@ proto_mpeg_descriptor_dissect_extended_event(tvbuff_t *tvb, guint offset, proto_
 
     guint8          items_len, item_descr_len, item_len, text_len;
     guint           items_end;
-    proto_item     *ii;
     proto_tree     *item_tree;
     guint           enc_len;
     dvb_encoding_e  encoding;
@@ -1290,8 +1287,7 @@ proto_mpeg_descriptor_dissect_extended_event(tvbuff_t *tvb, guint offset, proto_
     items_end = offset + items_len;
 
     while (offset < items_end) {
-        ii = proto_tree_add_text(tree, tvb, offset, 0, "Item");
-        item_tree = proto_item_add_subtree(ii, ett_mpeg_descriptor_extended_event_item);
+        item_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_mpeg_descriptor_extended_event_item, NULL, "Item");
 
         item_descr_len = tvb_get_guint8(tvb, offset);
         proto_tree_add_item(item_tree, hf_mpeg_descr_extended_event_item_description_length, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2165,7 +2161,6 @@ proto_mpeg_descriptor_dissect_ac3(tvbuff_t *tvb, guint offset, guint len, proto_
     guint  end = offset + len;
     guint8 flags, component_type;
 
-    proto_item *ci;
     proto_tree *component_type_tree;
 
     flags = tvb_get_guint8(tvb, offset);
@@ -2178,8 +2173,8 @@ proto_mpeg_descriptor_dissect_ac3(tvbuff_t *tvb, guint offset, guint len, proto_
 
     if (flags & MPEG_DESCR_AC3_COMPONENT_TYPE_FLAG_MASK) {
         component_type = tvb_get_guint8(tvb, offset);
-        ci = proto_tree_add_text(tree, tvb, offset, 3, "Component Type 0x%02x", component_type);
-        component_type_tree = proto_item_add_subtree(ci, ett_mpeg_descriptor_ac3_component_type);
+        component_type_tree = proto_tree_add_subtree_format(tree, tvb, offset, 3,
+                    ett_mpeg_descriptor_ac3_component_type, NULL, "Component Type 0x%02x", component_type);
         proto_tree_add_item(component_type_tree, hf_mpeg_descr_ac3_component_type_reserved_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
         proto_tree_add_item(component_type_tree, hf_mpeg_descr_ac3_component_type_full_service_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
         proto_tree_add_item(component_type_tree, hf_mpeg_descr_ac3_component_type_service_type_flags, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2267,7 +2262,6 @@ proto_mpeg_descriptor_dissect_content_identifier(tvbuff_t *tvb, guint offset, gu
     guint  end = offset + len, crid_len;
     guint8 crid, crid_location, crid_type;
 
-    proto_item *ci;
     proto_tree *crid_tree;
 
     while (offset < end) {
@@ -2283,8 +2277,8 @@ proto_mpeg_descriptor_dissect_content_identifier(tvbuff_t *tvb, guint offset, gu
             crid_len = 1;
         }
 
-        ci = proto_tree_add_text(tree, tvb, offset, crid_len, "CRID type=0%02x", crid_type);
-        crid_tree = proto_item_add_subtree(ci, ett_mpeg_descriptor_content_identifier_crid);
+        crid_tree = proto_tree_add_subtree_format(tree, tvb, offset, crid_len,
+                ett_mpeg_descriptor_content_identifier_crid, NULL, "CRID type=0%02x", crid_type);
 
         proto_tree_add_item(crid_tree, hf_mpeg_descr_content_identifier_crid_type, tvb, offset, 1, ENC_BIG_ENDIAN);
         proto_tree_add_item(crid_tree, hf_mpeg_descr_content_identifier_crid_location, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2613,8 +2607,8 @@ proto_mpeg_descriptor_dissect_private_ciplus(tvbuff_t *tvb, guint offset, proto_
     if (!tag_str)
         return 0;
 
-    di = proto_tree_add_text(tree, tvb, offset_start, -1, "CI+ private descriptor Tag=0x%02x", tag);
-    descriptor_tree = proto_item_add_subtree(di, ett_mpeg_descriptor);
+    descriptor_tree = proto_tree_add_subtree_format(tree, tvb, offset_start, -1,
+                ett_mpeg_descriptor, &di, "CI+ private descriptor Tag=0x%02x", tag);
 
     proto_tree_add_uint_format(descriptor_tree, hf_mpeg_descriptor_tag,
             tvb, offset, 1, tag, "Descriptor Tag: %s (0x%02x)", tag_str, tag);
@@ -2698,14 +2692,13 @@ proto_mpeg_descriptor_dissect(tvbuff_t *tvb, guint offset, proto_tree *tree)
 {
     guint       tag, len;
 
-    proto_item *di;
     proto_tree *descriptor_tree;
 
     tag = tvb_get_guint8(tvb, offset);
     len = tvb_get_guint8(tvb, offset + 1);
 
-    di = proto_tree_add_text(tree, tvb, offset, len + 2, "Descriptor Tag=0x%02x", tag);
-    descriptor_tree = proto_item_add_subtree(di, ett_mpeg_descriptor);
+    descriptor_tree = proto_tree_add_subtree_format(tree, tvb, offset, len + 2,
+                        ett_mpeg_descriptor, NULL, "Descriptor Tag=0x%02x", tag);
 
     proto_tree_add_item(descriptor_tree, hf_mpeg_descriptor_tag,    tvb, offset, 1, ENC_BIG_ENDIAN);
     offset += 1;
index b4b64ecaf0ed1b67dd7d9fd75a6b16bab68ef320..00ab6b685a0744ecdbb4d54f4f403b42d4b92cde 100644 (file)
@@ -263,8 +263,7 @@ dissect_dsmcc_adaptation_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
     type = tvb_get_guint8(tvb, offset);
 
     if (1 == type) {
-        pi = proto_tree_add_text(tree, tvb, offset, -1, "Adaptation Header");
-        sub_tree = proto_item_add_subtree(pi, ett_dsmcc_adaptation_header);
+        sub_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_dsmcc_adaptation_header, NULL, "Adaptation Header");
         proto_tree_add_item(sub_tree, hf_dsmcc_adaptation_type, tvb,
             offset, 1, ENC_BIG_ENDIAN);
         offset +=1;
@@ -286,8 +285,7 @@ dissect_dsmcc_adaptation_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
         sub_tvb = tvb_new_subset_length(tvb, offset, ca_len);
         call_dissector(data_handle, sub_tvb, pinfo, tree);
     } else if (2 == type) {
-        pi = proto_tree_add_text(tree, tvb, offset, -1, "Adaptation Header");
-        sub_tree = proto_item_add_subtree(pi, ett_dsmcc_adaptation_header);
+        sub_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_dsmcc_adaptation_header, NULL, "Adaptation Header");
         proto_tree_add_item(sub_tree, hf_dsmcc_adaptation_type, tvb,
             offset, 1, ENC_BIG_ENDIAN);
         offset +=1;
@@ -301,8 +299,7 @@ dissect_dsmcc_adaptation_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
         /*offset +=1;*/
         /* TODO: handle the userId */
     } else {
-        pi = proto_tree_add_text(tree, tvb, offset, -1, "Unknown Adaptation Header");
-        sub_tree = proto_item_add_subtree(pi, ett_dsmcc_adaptation_header);
+        sub_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_dsmcc_adaptation_header, NULL, "Unknown Adaptation Header");
         proto_tree_add_item(sub_tree, hf_dsmcc_adaptation_type, tvb,
             offset, 1, ENC_BIG_ENDIAN);
     }
@@ -327,8 +324,7 @@ dissect_dsmcc_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint
     reserved = tvb_get_guint8(tvb, 8+offset);
     adaptation_len = tvb_get_guint8(tvb, 9+offset);
 
-    pi = proto_tree_add_text(tree, tvb, offset, 12+adaptation_len, "DSM-CC Header");
-    sub_tree = proto_item_add_subtree(pi, ett_dsmcc_header);
+    sub_tree = proto_tree_add_subtree(tree, tvb, offset, 12+adaptation_len, ett_dsmcc_header, NULL, "DSM-CC Header");
     pi = proto_tree_add_item(sub_tree, hf_dsmcc_protocol_discriminator, tvb,
                  offset, 1, ENC_BIG_ENDIAN);
     if (DSMCC_PROT_DISC != prot_disc) {
@@ -384,7 +380,6 @@ dissect_dsmcc_dii_compat_desc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre
     gint        i, j;
     guint8      sub_count, sub_len;
     guint16     len, count;
-    proto_item *pi;
     proto_tree *compat_tree;
     proto_tree *desc_sub_tree;
 
@@ -400,8 +395,7 @@ dissect_dsmcc_dii_compat_desc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre
         offset += 2;
 
         for (i = 0; i < count; i++) {
-            pi = proto_tree_add_text(tree, tvb, offset, len, "Compatibility Descriptor");
-            compat_tree = proto_item_add_subtree(pi, ett_dsmcc_compat);
+            compat_tree = proto_tree_add_subtree(tree, tvb, offset, len, ett_dsmcc_compat, NULL, "Compatibility Descriptor");
             proto_tree_add_item(compat_tree, hf_desc_type, tvb, offset,
                         1, ENC_BIG_ENDIAN);
             offset +=1;
@@ -429,8 +423,8 @@ dissect_dsmcc_dii_compat_desc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre
             for (j = 0; j < sub_count; j++) {
                 sub_len = tvb_get_guint8(tvb, offset+1);
 
-                pi = proto_tree_add_text(compat_tree, tvb, offset, sub_len+2, "Sub Descriptor");
-                desc_sub_tree = proto_item_add_subtree(pi, ett_dsmcc_compat_sub_desc);
+                desc_sub_tree = proto_tree_add_subtree(compat_tree, tvb, offset, sub_len+2,
+                                            ett_dsmcc_compat_sub_desc, NULL, "Sub Descriptor");
                 proto_tree_add_item(desc_sub_tree, hf_desc_sub_desc_type, tvb, offset,
                             1, ENC_BIG_ENDIAN);
                 offset +=1;
@@ -460,7 +454,6 @@ dissect_dsmcc_dii(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
     guint8      module_version;
     guint       module_size;
     guint       i;
-    proto_item *pi;
     proto_tree *mod_tree;
 
     proto_tree_add_item(tree, hf_dsmcc_dii_download_id, tvb, offset, 4, ENC_BIG_ENDIAN);
@@ -485,10 +478,9 @@ dissect_dsmcc_dii(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
         module_size = tvb_get_ntohl(tvb, 2+offset);
         module_version = tvb_get_guint8(tvb, 6+offset);
 
-        pi = proto_tree_add_text(tree, tvb, offset, -1,
-                "Module Id: 0x%x, Version: %u, Size: %u",
+        mod_tree = proto_tree_add_subtree_format(tree, tvb, offset, -1,
+                ett_dsmcc_dii_module, NULL, "Module Id: 0x%x, Version: %u, Size: %u",
                 module_id, module_version, module_size);
-        mod_tree = proto_item_add_subtree(pi, ett_dsmcc_dii_module);
         proto_tree_add_item(mod_tree, hf_dsmcc_dii_module_id, tvb, offset, 2, ENC_BIG_ENDIAN);
         offset += 2;
         proto_tree_add_item(mod_tree, hf_dsmcc_dii_module_size, tvb, offset, 4, ENC_BIG_ENDIAN);
@@ -550,16 +542,14 @@ static void
 dissect_dsmcc_un_download(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
                 proto_tree *top_tree)
 {
-    proto_item *pi;
     proto_tree *sub_tree;
     guint16     msg_id;
     guint       offset = 0;
 
     msg_id = tvb_get_ntohs(tvb, offset+2);
 
-    pi = proto_tree_add_text(tree, tvb, 0, -1, "User Network Message - %s",
-            val_to_str(msg_id, dsmcc_dd_message_id_vals, "%u"));
-    sub_tree = proto_item_add_subtree(pi, ett_dsmcc_payload);
+    sub_tree = proto_tree_add_subtree_format(tree, tvb, 0, -1, ett_dsmcc_payload, NULL,
+            "User Network Message - %s", val_to_str(msg_id, dsmcc_dd_message_id_vals, "%u"));
 
     switch (msg_id) {
         case 0x1001:
@@ -630,12 +620,11 @@ dissect_dsmcc_un_session(tvbuff_t *tvb, packet_info *pinfo,
 
     msg_id = tvb_get_ntohs(tvb, offset+2);
 
-    pi = proto_tree_add_text(tree, tvb, offset, -1,
-            "User Network Message (Session) - %s",
+    sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, -1,
+            ett_dsmcc_payload, &pi, "User Network Message (Session) - %s",
             val_to_str(msg_id, dsmcc_un_sess_message_id_vals, "0x%x"));
     col_append_sep_fstr(pinfo->cinfo, COL_INFO, NULL, "%s",
             val_to_str(msg_id, dsmcc_un_sess_message_id_vals, "0x%x"));
-    sub_tree = proto_item_add_subtree(pi, ett_dsmcc_payload);
 
     switch (msg_id) {
         case DSMCC_UN_SESS_SRV_SESS_REL_REQ:
index c754bfa8cce38a189114ba73cc23f3792aec8350..61b8602f54e281a0cd2661eabbe3c9028ec70849 100644 (file)
@@ -70,7 +70,6 @@ dissect_mpeg_pat(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
 
     proto_item *ti;
     proto_tree *mpeg_pat_tree;
-    proto_item *pi;
     proto_tree *mpeg_pat_prog_tree;
 
     /* The TVB should start right after the section_length in the Section packet */
@@ -107,8 +106,8 @@ dissect_mpeg_pat(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
         prog_num = tvb_get_ntohs(tvb, offset);
         prog_pid = tvb_get_ntohs(tvb, offset + 2) & MPEG_PAT_PROGRAM_MAP_PID_MASK;
 
-        pi = proto_tree_add_text(mpeg_pat_tree, tvb, offset, 4, "Program 0x%04hx -> PID 0x%04hx", prog_num, prog_pid);
-        mpeg_pat_prog_tree = proto_item_add_subtree(pi, ett_mpeg_pat_prog);
+        mpeg_pat_prog_tree = proto_tree_add_subtree_format(mpeg_pat_tree, tvb, offset, 4,
+                        ett_mpeg_pat_prog, NULL, "Program 0x%04hx -> PID 0x%04hx", prog_num, prog_pid);
 
         proto_tree_add_item(mpeg_pat_prog_tree, hf_mpeg_pat_program_number, tvb, offset, 2, ENC_BIG_ENDIAN);
         offset += 2;
index f41102cef3d7cd1f6bf2df83767f873facabfa48..128714c7f3ef9ce2bcd97571b2e27c834b5159d1 100644 (file)
@@ -126,7 +126,6 @@ dissect_mpeg_pmt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data
 
     proto_item *ti;
     proto_tree *mpeg_pmt_tree;
-    proto_item *si;
     proto_tree *mpeg_pmt_stream_tree;
 
     /* The TVB should start right after the section_length in the Section packet */
@@ -169,8 +168,8 @@ dissect_mpeg_pmt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data
         pid = tvb_get_ntohs(tvb, offset + 1) & MPEG_PMT_STREAM_ELEMENTARY_PID_MASK;
         es_info_len = tvb_get_ntohs(tvb, offset + 3) & MPEG_PMT_STREAM_ES_INFO_LENGTH_MASK;
 
-        si = proto_tree_add_text(mpeg_pmt_tree, tvb, offset, 5 + es_info_len, "Stream PID=0x%04hx", pid);
-        mpeg_pmt_stream_tree = proto_item_add_subtree(si, ett_mpeg_pmt_stream);
+        mpeg_pmt_stream_tree = proto_tree_add_subtree_format(mpeg_pmt_tree, tvb, offset, 5 + es_info_len,
+                            ett_mpeg_pmt_stream, NULL, "Stream PID=0x%04hx", pid);
 
         proto_tree_add_item(mpeg_pmt_stream_tree, hf_mpeg_pmt_stream_type,      tvb, offset, 1, ENC_BIG_ENDIAN);
         offset += 1;
index 6e26cbd1993afd78a62f9961647ca7b7f5f24f62..d2741aee91718f9bf7fe68ad8583f3fb4f9f571b 100644 (file)
@@ -538,10 +538,10 @@ dissect_mpls_echo_tlv_fec(tvbuff_t *tvb, packet_info *pinfo, guint offset, proto
         tlv_fec_tree = NULL;
 
         if (tree) {
-            ti = proto_tree_add_text(tree, tvb, offset, length + 4 + (4-(length%4)), "FEC Element %u: %s",
+            tlv_fec_tree = proto_tree_add_subtree_format(tree, tvb, offset, length + 4 + (4-(length%4)),
+                                     ett_mpls_echo_tlv_fec, NULL, "FEC Element %u: %s",
                                      idx, val_to_str_ext(type, &mpls_echo_tlv_fec_names_ext,
                                                          "Unknown FEC type (0x%04X)"));
-            tlv_fec_tree = proto_item_add_subtree(ti, ett_mpls_echo_tlv_fec);
 
             /* FEC sub-TLV Type and Length */
             proto_tree_add_uint_format_value(tlv_fec_tree, hf_mpls_echo_tlv_fec_type, tvb,
@@ -977,9 +977,8 @@ dissect_mpls_echo_tlv_ds_map(tvbuff_t *tvb, packet_info *pinfo, guint offset, pr
                                        mplen);
                 break;
             }
-            ti = proto_tree_add_text(tree, tvb, offset, 4,
-                                     "Multipath Information");
-            tlv_ds_map_tree = proto_item_add_subtree(ti, ett_mpls_echo_tlv_ds_map);
+            tlv_ds_map_tree = proto_tree_add_subtree(tree, tvb, offset, 4,
+                                     ett_mpls_echo_tlv_ds_map, NULL, "Multipath Information");
             proto_tree_add_item(tlv_ds_map_tree, hf_mpls_echo_tlv_ds_map_mp_ip, tvb,
                                 offset, 4, ENC_BIG_ENDIAN);
             break;
@@ -990,9 +989,8 @@ dissect_mpls_echo_tlv_ds_map(tvbuff_t *tvb, packet_info *pinfo, guint offset, pr
                                        mplen);
                 break;
             }
-            ti = proto_tree_add_text(tree, tvb, offset, 8,
-                                     "Multipath Information");
-            tlv_ds_map_tree = proto_item_add_subtree(ti, ett_mpls_echo_tlv_ds_map);
+            tlv_ds_map_tree = proto_tree_add_subtree(tree, tvb, offset, 8,
+                                     ett_mpls_echo_tlv_ds_map, NULL, "Multipath Information");
             proto_tree_add_item(tlv_ds_map_tree, hf_mpls_echo_tlv_ds_map_mp_ip_low, tvb,
                                 offset, 4, ENC_BIG_ENDIAN);
             proto_tree_add_item(tlv_ds_map_tree, hf_mpls_echo_tlv_ds_map_mp_ip_high, tvb,
@@ -1012,9 +1010,8 @@ dissect_mpls_echo_tlv_ds_map(tvbuff_t *tvb, packet_info *pinfo, guint offset, pr
                                        mplen);
                 break;
             }
-            ti = proto_tree_add_text(tree, tvb, offset, mplen,
-                                     "Multipath Information");
-            tlv_ds_map_tree = proto_item_add_subtree(ti, ett_mpls_echo_tlv_ds_map);
+            tlv_ds_map_tree = proto_tree_add_subtree(tree, tvb, offset, mplen,
+                                     ett_mpls_echo_tlv_ds_map, NULL, "Multipath Information");
             proto_tree_add_item(tlv_ds_map_tree, hf_mpls_echo_tlv_ds_map_mp_ip, tvb,
                                 offset, 4, ENC_BIG_ENDIAN);
             if (mplen > 4)
@@ -1033,8 +1030,8 @@ dissect_mpls_echo_tlv_ds_map(tvbuff_t *tvb, packet_info *pinfo, guint offset, pr
     if (tree) {
         while (rem >= 4) {
             decode_mpls_label(tvb, offset, &label, &exp, &bos, &proto);
-            ti = proto_tree_add_text(tree, tvb, offset, 4, "Downstream Label Element %u", idx);
-            tlv_ds_map_tree = proto_item_add_subtree(ti, ett_mpls_echo_tlv_ds_map);
+            tlv_ds_map_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4,
+                    ett_mpls_echo_tlv_ds_map, &ti, "Downstream Label Element %u", idx);
             proto_item_append_text(ti, ", Label: %u", label);
             if (label <= MPLS_LABEL_MAX_RESERVED) {
                 proto_tree_add_uint(tlv_ds_map_tree, hf_mpls_echo_tlv_ds_map_mp_label,
@@ -1147,9 +1144,8 @@ dissect_mpls_echo_tlv_dd_map(tvbuff_t *tvb, packet_info *pinfo, guint offset, pr
         case TLV_FEC_MULTIPATH_DATA:
             multipath_type   = tvb_get_guint8(tvb, offset);
             multipath_length = tvb_get_ntohs(tvb, offset + 1);
-            ddsti = proto_tree_add_text(tree, tvb, offset - 4, multipath_length + 8,
-                                        "Multipath sub-TLV");
-            tlv_dd_map_tree = proto_item_add_subtree(ddsti, ett_mpls_echo_tlv_dd_map);
+            tlv_dd_map_tree = proto_tree_add_subtree(tree, tvb, offset - 4, multipath_length + 8,
+                                        ett_mpls_echo_tlv_dd_map, &ddsti, "Multipath sub-TLV");
 
             switch (multipath_type) {
             case TLV_MULTIPATH_NO_MULTIPATH:
@@ -1161,9 +1157,8 @@ dissect_mpls_echo_tlv_dd_map(tvbuff_t *tvb, packet_info *pinfo, guint offset, pr
                                     hf_mpls_echo_sub_tlv_multipath_length, tvb, offset + 1, 2, ENC_BIG_ENDIAN);
                 proto_tree_add_item(tlv_dd_map_tree, hf_mpls_echo_sub_tlv_resv, tvb,
                                     offset + 3, 1, ENC_BIG_ENDIAN);
-                ddsti2 = proto_tree_add_text(tlv_dd_map_tree, tvb, offset + 4, multipath_length,
-                                             "Empty (Multipath Length = 0)");
-                tlv_ddstlv_map_tree = proto_item_add_subtree(ddsti2, ett_mpls_echo_tlv_ddstlv_map);
+                tlv_ddstlv_map_tree = proto_tree_add_subtree(tlv_dd_map_tree, tvb, offset + 4, multipath_length,
+                                             ett_mpls_echo_tlv_ddstlv_map, NULL, "Empty (Multipath Length = 0)");
                 proto_tree_add_item(tlv_ddstlv_map_tree, hf_mpls_echo_sub_tlv_multipath_info,
                                     tvb, offset + 4, multipath_length, ENC_NA);
                 break;
@@ -1184,9 +1179,8 @@ dissect_mpls_echo_tlv_dd_map(tvbuff_t *tvb, packet_info *pinfo, guint offset, pr
                 proto_tree_add_item(tlv_dd_map_tree, hf_mpls_echo_sub_tlv_resv, tvb,
                                     offset + 3, 1, ENC_BIG_ENDIAN);
 
-                ddsti2 = proto_tree_add_text(tlv_dd_map_tree, tvb, offset + 4, multipath_length,
-                                             "Multipath Information (IP addresses)");
-                tlv_ddstlv_map_tree = proto_item_add_subtree(ddsti2, ett_mpls_echo_tlv_ddstlv_map);
+                tlv_ddstlv_map_tree = proto_tree_add_subtree(tlv_dd_map_tree, tvb, offset + 4, multipath_length,
+                                             ett_mpls_echo_tlv_ddstlv_map, NULL, "Multipath Information (IP addresses)");
 
                 proto_tree_add_item(tlv_ddstlv_map_tree, hf_mpls_echo_sub_tlv_multipath_ip, tvb,
                                     offset + 4, 4, ENC_BIG_ENDIAN);
@@ -1208,9 +1202,8 @@ dissect_mpls_echo_tlv_dd_map(tvbuff_t *tvb, packet_info *pinfo, guint offset, pr
                 proto_tree_add_item(tlv_dd_map_tree, hf_mpls_echo_sub_tlv_resv, tvb,
                                     offset + 3, 1, ENC_BIG_ENDIAN);
 
-                ddsti2 = proto_tree_add_text(tlv_dd_map_tree, tvb, offset + 4, multipath_length,
-                                             "Multipath Information (low/high address pairs)");
-                tlv_ddstlv_map_tree = proto_item_add_subtree(ddsti2, ett_mpls_echo_tlv_ddstlv_map);
+                tlv_ddstlv_map_tree = proto_tree_add_subtree(tlv_dd_map_tree, tvb, offset + 4, multipath_length,
+                                             ett_mpls_echo_tlv_ddstlv_map, NULL, "Multipath Information (low/high address pairs)");
 
                 proto_tree_add_item(tlv_ddstlv_map_tree, hf_mpls_echo_sub_tlv_mp_ip_low, tvb,
                                     offset + 4, 4, ENC_BIG_ENDIAN);
@@ -1234,9 +1227,8 @@ dissect_mpls_echo_tlv_dd_map(tvbuff_t *tvb, packet_info *pinfo, guint offset, pr
                 proto_tree_add_item(tlv_dd_map_tree, hf_mpls_echo_sub_tlv_resv, tvb,
                                     offset + 3, 1, ENC_BIG_ENDIAN);
 
-                ddsti2 = proto_tree_add_text(tlv_dd_map_tree, tvb, offset + 4, multipath_length,
-                                             "Multipath Information (IP address prefix and bit mask)");
-                tlv_ddstlv_map_tree = proto_item_add_subtree(ddsti2, ett_mpls_echo_tlv_ddstlv_map);
+                tlv_ddstlv_map_tree = proto_tree_add_subtree(tlv_dd_map_tree, tvb, offset + 4, multipath_length,
+                                             ett_mpls_echo_tlv_ddstlv_map, NULL, "Multipath Information (IP address prefix and bit mask)");
 
                 proto_tree_add_item(tlv_ddstlv_map_tree, hf_mpls_echo_sub_tlv_multipath_ip, tvb,
                                     offset + 4, 4, ENC_BIG_ENDIAN);
@@ -1268,16 +1260,15 @@ dissect_mpls_echo_tlv_dd_map(tvbuff_t *tvb, packet_info *pinfo, guint offset, pr
             break;
 
         case TLV_FEC_LABEL_STACK:
-            ddsti = proto_tree_add_text(tree, tvb, offset - 4, subtlv_length + 4, "Label stack sub-TLV");
-            tlv_dd_map_tree = proto_item_add_subtree(ddsti, ett_mpls_echo_tlv_dd_map);
+            tlv_dd_map_tree = proto_tree_add_subtree(tree, tvb, offset - 4, subtlv_length + 4,
+                                ett_mpls_echo_tlv_dd_map, NULL, "Label stack sub-TLV");
 
             while (rem >= 4) {
                 if (tree) {
                     decode_mpls_label(tvb, offset, &label, &tc, &s_bit, &proto);
 
-                    ddsti2 = proto_tree_add_text(tlv_dd_map_tree,
-                                                 tvb, offset, 4, "Downstream Label Element %u", idx);
-                    tlv_ddstlv_map_tree = proto_item_add_subtree(ddsti2, ett_mpls_echo_tlv_ddstlv_map);
+                    tlv_ddstlv_map_tree = proto_tree_add_subtree_format(tlv_dd_map_tree, tvb, offset, 4,
+                                                 ett_mpls_echo_tlv_ddstlv_map, &ddsti2, "Downstream Label Element %u", idx);
                     proto_item_append_text(ddsti2, ", Label: %u , Protocol: %u", label, proto);
                     proto_tree_add_text(tlv_ddstlv_map_tree, tvb, offset, 3, "Label: %u", label);
                     proto_tree_add_text(tlv_ddstlv_map_tree, tvb, offset + 2, 1, "Traffic Class: %u", tc);
@@ -1294,8 +1285,8 @@ dissect_mpls_echo_tlv_dd_map(tvbuff_t *tvb, packet_info *pinfo, guint offset, pr
         case TLV_FEC_STACK_CHANGE: {
             addr_type       = tvb_get_guint8(tvb, offset + 1);
             fec_tlv_length  = tvb_get_guint8(tvb, offset + 2);
-            ddsti           = proto_tree_add_text(tree, tvb, offset - 4, fec_tlv_length + 12, "Stack change sub-TLV");
-            tlv_dd_map_tree = proto_item_add_subtree(ddsti, ett_mpls_echo_tlv_dd_map);
+            tlv_dd_map_tree = proto_tree_add_subtree(tree, tvb, offset - 4, fec_tlv_length + 12,
+                                            ett_mpls_echo_tlv_dd_map, NULL, "Stack change sub-TLV");
 
             proto_tree_add_item(tlv_dd_map_tree, hf_mpls_echo_sub_tlv_op_type,       tvb, offset,     1, ENC_BIG_ENDIAN);
             proto_tree_add_item(tlv_dd_map_tree, hf_mpls_echo_sub_tlv_addr_type,     tvb, offset + 1, 1, ENC_BIG_ENDIAN);
@@ -1325,8 +1316,7 @@ dissect_mpls_echo_tlv_dd_map(tvbuff_t *tvb, packet_info *pinfo, guint offset, pr
         }
 
         default:
-            ddsti = proto_tree_add_text(tree, tvb, offset, subtlv_length, "Error processing sub-TLV");
-            tlv_dd_map_tree = proto_item_add_subtree(ddsti, ett_mpls_echo_tlv_dd_map);
+            tlv_dd_map_tree = proto_tree_add_subtree(tree, tvb, offset, subtlv_length, ett_mpls_echo_tlv_dd_map, NULL, "Error processing sub-TLV");
             proto_tree_add_item(tlv_dd_map_tree, hf_mpls_echo_tlv_dd_map_type,   tvb, offset - 4, 2, ENC_BIG_ENDIAN);
             proto_tree_add_item(tlv_dd_map_tree, hf_mpls_echo_tlv_dd_map_length, tvb, offset - 2, 2, ENC_BIG_ENDIAN);
             proto_tree_add_item(tlv_dd_map_tree, hf_mpls_echo_tlv_dd_map_value,  tvb, offset, subtlv_length, ENC_NA);
@@ -1400,8 +1390,7 @@ dissect_mpls_echo_tlv_ilso(tvbuff_t *tvb, packet_info *pinfo, guint offset, prot
             proto_tree *tlv_ilso;
 
             decode_mpls_label(tvb, offset, &label, &exp, &bos, &ttl);
-            ti = proto_tree_add_text(tree, tvb, offset, 4, "Label Stack Element %u", idx);
-            tlv_ilso = proto_item_add_subtree(ti, ett_mpls_echo_tlv_ilso);
+            tlv_ilso = proto_tree_add_subtree_format(tree, tvb, offset, 4, ett_mpls_echo_tlv_ilso, &ti, "Label Stack Element %u", idx);
             proto_item_append_text(ti, ", Label: %u", label);
             if (label <= MPLS_LABEL_MAX_RESERVED) {
                 proto_tree_add_uint_format_value(tlv_ilso, hf_mpls_echo_tlv_ilso_label,
@@ -1478,10 +1467,9 @@ dissect_mpls_echo_tlv(tvbuff_t *tvb, packet_info *pinfo, guint offset, proto_tre
         type = TLV_VENDOR_PRIVATE_START;
 
     if (tree) {
-        ti = proto_tree_add_text(tree, tvb, offset, length + 4, "%s%s",
-                                 in_errored ? "Errored TLV Type: " : "",
+        mpls_echo_tlv_tree = proto_tree_add_subtree_format(tree, tvb, offset, length + 4, ett_mpls_echo_tlv, NULL,
+                                  "%s%s", in_errored ? "Errored TLV Type: " : "",
                                  val_to_str_ext(type, &mpls_echo_tlv_type_names_ext, "Unknown TLV type (0x%04X)"));
-        mpls_echo_tlv_tree = proto_item_add_subtree(ti, ett_mpls_echo_tlv);
 
         /* MPLS Echo TLV Type and Length */
         if (in_errored) {
index 27f1dbda8216a042b841267888a17b1ab1eae357..cb05b867813bc1442a6bd6dd2892006c2cf29893 100644 (file)
@@ -119,7 +119,6 @@ dissect_mpls_y1711(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *da
 {
     struct mplsinfo *mplsinfo;
     int              offset          = 0;
-    proto_item      *ti;
     proto_tree      *mpls_y1711_tree;
     int              functype;
     tvbuff_t        *data_tvb;
@@ -156,8 +155,7 @@ dissect_mpls_y1711(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *da
         return tvb_reported_length(tvb);
     }
 
-    ti = proto_tree_add_text(tree, tvb, offset, 44, "Y.1711 OAM");
-    mpls_y1711_tree = proto_item_add_subtree(ti, ett_mpls_y1711);
+    mpls_y1711_tree = proto_tree_add_subtree(tree, tvb, offset, 44, ett_mpls_y1711, NULL, "Y.1711 OAM");
 
     /* checks for exp, bos and ttl encoding */
     if (mplsinfo->label != MPLS_LABEL_OAM_ALERT)
index d3e1d811dfb9929c675d013d38fc6bf4f0172685..4e9635644c946d93e4d600f5bc02dee2e98e2d00 100644 (file)
@@ -247,15 +247,14 @@ static void dissect_mqpcf_parm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mq
                     pVal = dissect_mqpcf_parm_getintval(uPrm, uVal);
                 if (pVal)
                 {
-                    ti = proto_tree_add_text(mq_tree, tvb, offset, uLen, "%s %d-%s",
-                        strPrm, uVal, pVal);
+                    tree = proto_tree_add_subtree_format(mq_tree, tvb, offset, uLen, ett_mqpcf_prm, NULL,
+                                                         "%s %d-%s", strPrm, uVal, pVal);
                 }
                 else
                 {
-                    ti = proto_tree_add_text(mq_tree, tvb, offset, uLen, "%s %8x-%d",
-                        strPrm, uVal, uVal);
+                    tree = proto_tree_add_subtree_format(mq_tree, tvb, offset, uLen, ett_mqpcf_prm, NULL,
+                                                         "%s %8x-%d", strPrm, uVal, uVal);
                 }
-                tree = proto_item_add_subtree(ti, ett_mqpcf_prm);
                 proto_tree_add_item(tree, hf_mq_pcf_prmtyp, tvb, offset    , 4, bLittleEndian);
                 proto_tree_add_item(tree, hf_mq_pcf_prmlen, tvb, offset + 4, 4, bLittleEndian);
                 proto_tree_add_item(tree, (bParse) ? hf_mq_pcf_prmid : hf_mq_pcf_prmidnovals, tvb, offset + 8, 4, bLittleEndian);
@@ -276,8 +275,7 @@ static void dissect_mqpcf_parm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mq
                 if (*sStr)
                     format_text_chr(sStr, strlen(sStr), '.');
 
-                ti = proto_tree_add_text(mq_tree, tvb, offset, uLen, "%s %s", strPrm, sStr);
-                tree = proto_item_add_subtree(ti, ett_mqpcf_prm);
+                tree = proto_tree_add_subtree_format(mq_tree, tvb, offset, uLen, ett_mqpcf_prm, NULL, "%s %s", strPrm, sStr);
 
                 proto_tree_add_item(tree, hf_mq_pcf_prmtyp   , tvb, offset     , 4, bLittleEndian);
                 proto_tree_add_item(tree, hf_mq_pcf_prmlen   , tvb, offset +  4, 4, bLittleEndian);
@@ -296,8 +294,7 @@ static void dissect_mqpcf_parm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mq
                 uCnt = tvb_get_guint32_endian(tvb, offset+uLenF, bLittleEndian);
                 uDigit = dissect_mqpcf_getDigits(uCnt);
 
-                ti = proto_tree_add_text(mq_tree, tvb, offset, uLen, "%s Cnt(%d)", strPrm, uCnt);
-                tree = proto_item_add_subtree(ti, ett_mqpcf_prm);
+                tree = proto_tree_add_subtree_format(mq_tree, tvb, offset, uLen, ett_mqpcf_prm, &ti, "%s Cnt(%d)", strPrm, uCnt);
 
                 proto_tree_add_item(tree, hf_mq_pcf_prmtyp  , tvb, offset     , 4, bLittleEndian);
                 proto_tree_add_item(tree, hf_mq_pcf_prmlen  , tvb, offset +  4, 4, bLittleEndian);
@@ -331,9 +328,8 @@ static void dissect_mqpcf_parm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mq
                 uCnt = tvb_get_guint32_endian(tvb, offset + uLenF + 4, bLittleEndian);
                 uSLn = tvb_get_guint32_endian(tvb, offset + uLenF + 8, bLittleEndian);
 
-                ti = proto_tree_add_text(mq_tree, tvb, offset, uLen, "%s Cnt(%d)", strPrm, uCnt);
+                tree = proto_tree_add_subtree_format(mq_tree, tvb, offset, uLen, ett_mqpcf_prm, NULL, "%s Cnt(%d)", strPrm, uCnt);
 
-                tree = proto_item_add_subtree(ti, ett_mqpcf_prm);
                 proto_tree_add_item(tree, hf_mq_pcf_prmtyp   , tvb, offset     , 4, bLittleEndian);
                 proto_tree_add_item(tree, hf_mq_pcf_prmlen   , tvb, offset +  4, 4, bLittleEndian);
                 proto_tree_add_item(tree, (bParse) ? hf_mq_pcf_prmid : hf_mq_pcf_prmidnovals, tvb, offset +  8, 4, bLittleEndian);
@@ -368,8 +364,7 @@ static void dissect_mqpcf_parm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mq
             break;
         case MQ_MQCFT_USER:
             {
-                ti = proto_tree_add_text(mq_tree, tvb, offset, uLen, "%s", strPrm);
-                tree = proto_item_add_subtree(ti, ett_mqpcf_prm);
+                tree = proto_tree_add_subtree(mq_tree, tvb, offset, uLen, ett_mqpcf_prm, NULL, strPrm);
 
                 proto_tree_add_item(tree, hf_mq_pcf_prmtyp   , tvb, offset     , 4, bLittleEndian);
                 proto_tree_add_item(tree, hf_mq_pcf_prmlen   , tvb, offset +  4, 4, bLittleEndian);
@@ -386,18 +381,19 @@ static void dissect_mqpcf_parm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mq
                     guint8 *sStrE = format_text_chr(tvb_get_string_enc(wmem_packet_scope(), tvb, offset + uLenF + 4, uSLn, ENC_EBCDIC), uSLn, '.');
                     if (uSLn > 35)
                     {
-                        ti = proto_tree_add_text(mq_tree, tvb, offset, uLen, "%s [Truncated] A(%-.35s) E(%-.35s)", strPrm, sStrA, sStrE);
+                        tree = proto_tree_add_subtree_format(mq_tree, tvb, offset, uLen, ett_mqpcf_prm, NULL,
+                                                        "%s [Truncated] A(%-.35s) E(%-.35s)", strPrm, sStrA, sStrE);
                     }
                     else
                     {
-                        ti = proto_tree_add_text(mq_tree, tvb, offset, uLen, "%s A(%s) E(%s)", strPrm, sStrA, sStrE);
+                        tree = proto_tree_add_subtree_format(mq_tree, tvb, offset, uLen, ett_mqpcf_prm, NULL,
+                                                        "%s A(%s) E(%s)", strPrm, sStrA, sStrE);
                     }
                 }
                 else
                 {
-                    ti = proto_tree_add_text(mq_tree, tvb, offset, uLen, "%s <MISSING>", strPrm);
+                    tree = proto_tree_add_subtree_format(mq_tree, tvb, offset, uLen, ett_mqpcf_prm, NULL, "%s <MISSING>", strPrm);
                 }
-                tree = proto_item_add_subtree(ti, ett_mqpcf_prm);
 
                 proto_tree_add_item(tree, hf_mq_pcf_prmtyp   , tvb, offset     , 4, bLittleEndian);
                 proto_tree_add_item(tree, hf_mq_pcf_prmlen   , tvb, offset +  4, 4, bLittleEndian);
@@ -418,9 +414,8 @@ static void dissect_mqpcf_parm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mq
                 uOpe = tvb_get_guint32_endian(tvb, offset + uLenF    , bLittleEndian);
                 uVal = tvb_get_guint32_endian(tvb, offset + uLenF + 4, bLittleEndian);
 
-                ti = proto_tree_add_text(mq_tree, tvb, offset, uLen, "%s %s %d",
+                tree = proto_tree_add_subtree_format(mq_tree, tvb, offset, uLen, ett_mqpcf_prm, NULL, "%s %s %d",
                     strPrm, val_to_str(uOpe, GET_VALSV(FilterOP), "       Unknown (0x%02x)")+7, uVal);
-                tree = proto_item_add_subtree(ti, ett_mqpcf_prm);
 
                 proto_tree_add_item(tree, hf_mq_pcf_prmtyp   , tvb, offset     , 4, bLittleEndian);
                 proto_tree_add_item(tree, hf_mq_pcf_prmlen   , tvb, offset +  4, 4, bLittleEndian);
@@ -441,9 +436,8 @@ static void dissect_mqpcf_parm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mq
                 sStr = format_text_chr(tvb_get_string_enc(wmem_packet_scope(), tvb, offset + uLenF + 12, uSLn, (uCCS != 500) ? ENC_ASCII : ENC_EBCDIC), uSLn, '.');
                 strip_trailing_blanks(sStr, uSLn);
 
-                ti = proto_tree_add_text(mq_tree, tvb, offset, uLen, "%s %s %s",
+                tree = proto_tree_add_subtree_format(mq_tree, tvb, offset, uLen, ett_mqpcf_prm, NULL, "%s %s %s",
                     strPrm, val_to_str(uOpe, GET_VALSV(FilterOP), "       Unknown (0x%02x)")+7, sStr);
-                tree = proto_item_add_subtree(ti, ett_mqpcf_prm);
 
                 proto_tree_add_item(tree, hf_mq_pcf_prmtyp   , tvb, offset     , 4, bLittleEndian);
                 proto_tree_add_item(tree, hf_mq_pcf_prmlen   , tvb, offset +  4, 4, bLittleEndian);
@@ -464,15 +458,14 @@ static void dissect_mqpcf_parm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mq
                 {
                     guint8 *sStrA = format_text_chr(tvb_get_string_enc(wmem_packet_scope(), tvb, offset + uLenF + 8, uSLn, ENC_ASCII), uSLn, '.');
                     guint8 *sStrE = format_text_chr(tvb_get_string_enc(wmem_packet_scope(), tvb, offset + uLenF + 8, uSLn, ENC_EBCDIC), uSLn, '.');
-                    ti = proto_tree_add_text(mq_tree, tvb, offset, uLen, "%s %s A(%s) E(%s)",
+                    tree = proto_tree_add_subtree_format(mq_tree, tvb, offset, uLen, ett_mqpcf_prm, NULL, "%s %s A(%s) E(%s)",
                         strPrm, val_to_str(uOpe, GET_VALSV(FilterOP), "       Unknown (0x%02x)")+7, sStrA, sStrE);
                 }
                 else
                 {
-                    ti = proto_tree_add_text(mq_tree, tvb, offset, uLen, "%s %s <MISSING>",
+                    tree = proto_tree_add_subtree_format(mq_tree, tvb, offset, uLen, ett_mqpcf_prm, NULL, "%s %s <MISSING>",
                         strPrm, val_to_str(uOpe, GET_VALSV(FilterOP), "       Unknown (0x%02x)")+7);
                 }
-                tree = proto_item_add_subtree(ti, ett_mqpcf_prm);
 
                 proto_tree_add_item(tree, hf_mq_pcf_prmtyp   , tvb, offset     , 4, bLittleEndian);
                 proto_tree_add_item(tree, hf_mq_pcf_prmlen   , tvb, offset +  4, 4, bLittleEndian);
@@ -500,9 +493,8 @@ static void dissect_mqpcf_parm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mq
         case MQ_MQCFT_INTEGER64:
             {
                 uVal64 = tvb_get_guint64_endian(tvb, offset + uLenF + 4, bLittleEndian);
-                ti = proto_tree_add_text(mq_tree, tvb, offset, uLen, "%s %" G_GINT64_MODIFIER "x (%" G_GINT64_MODIFIER "d)",
-                    strPrm, uVal64, uVal64);
-                tree = proto_item_add_subtree(ti, ett_mqpcf_prm);
+                tree = proto_tree_add_subtree_format(mq_tree, tvb, offset, uLen, ett_mqpcf_prm, NULL,
+                    "%s %" G_GINT64_MODIFIER "x (%" G_GINT64_MODIFIER "d)", strPrm, uVal64, uVal64);
 
                 proto_tree_add_item(tree, hf_mq_pcf_prmtyp   , tvb, offset     , 4, bLittleEndian);
                 proto_tree_add_item(tree, hf_mq_pcf_prmlen   , tvb, offset +  4, 4, bLittleEndian);
@@ -521,8 +513,7 @@ static void dissect_mqpcf_parm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mq
                 hfinfo = proto_registrar_get_nth(hf_mq_pcf_int64list);
 
                 uCnt = tvb_get_guint32_endian(tvb, offset + uLenF, bLittleEndian);
-                ti = proto_tree_add_text(mq_tree, tvb, offset, uLen, "%s Cnt(%d)", strPrm, uCnt);
-                tree = proto_item_add_subtree(ti, ett_mqpcf_prm);
+                tree = proto_tree_add_subtree_format(mq_tree, tvb, offset, uLen, ett_mqpcf_prm, NULL, "%s Cnt(%d)", strPrm, uCnt);
                 uDigit = dissect_mqpcf_getDigits(uCnt);
 
                 proto_tree_add_item(tree, hf_mq_pcf_prmtyp  , tvb, offset     , 4, bLittleEndian);
@@ -609,8 +600,7 @@ static void dissect_mqpcf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, m
             proto_item_append_text(ti, " (%s)", val_to_str(iCommand, GET_VALSV(mqcmd), "Unknown (0x%02x)"));
             mqroot_tree = proto_item_add_subtree(ti, ett_mqpcf);
 
-            ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeMQCFH, "%s", sTmp);
-            mq_tree = proto_item_add_subtree(ti, ett_mqpcf_cfh);
+            mq_tree = proto_tree_add_subtree(mqroot_tree, tvb, offset, iSizeMQCFH, ett_mqpcf_cfh, NULL, sTmp);
 
             proto_tree_add_item(mq_tree, hf_mqpcf_cfh_type     , tvb, offset +  0, 4, bLittleEndian);
             proto_tree_add_item(mq_tree, hf_mqpcf_cfh_length   , tvb, offset +  4, 4, bLittleEndian);
index e77a98fd12fdd2415072c94cae0315c0f8a28cd9..a801c9a9b6ea7ef52cdfd2bb5c9d740724c98bf3 100644 (file)
@@ -1850,13 +1850,11 @@ static gint dissect_mq_MQCO(tvbuff_t *tvb, proto_tree *mq_tree, gint offset, mq_
 }
 static gint dissect_mq_charv(tvbuff_t *tvb, proto_tree *tree, gint offset, gint iSize, gint idx, guint8 *pStr, mq_parm_t *p_mq_parm)
 {
-    proto_item *ti;
     proto_tree *mq_tree_sub;
     guint32     lStr;
     guint32     oStr;
     gint32      eStr;
-    guint8     *sStr;
-    static guint8 sEmpty[] = "[Empty]";
+    const char  *sStr;
 
     lStr = tvb_get_guint32_endian(tvb, offset + 12, p_mq_parm->mq_int_enc);
     oStr = tvb_get_guint32_endian(tvb, offset +  4, p_mq_parm->mq_int_enc);
@@ -1868,8 +1866,8 @@ static gint dissect_mq_charv(tvbuff_t *tvb, proto_tree *tree, gint offset, gint
     else
         sStr = NULL;
 
-    ti = proto_tree_add_text(tree, tvb, offset, iSize, "%s - %s", pStr, (sStr) ? sStr : sEmpty);
-    mq_tree_sub = proto_item_add_subtree(ti, idx);
+    mq_tree_sub = proto_tree_add_subtree_format(tree, tvb, offset, iSize, idx, NULL, "%s - %s", pStr, (sStr) ? sStr : "[Empty]");
+
     proto_tree_add_item(mq_tree_sub, hf_mq_charv_vsptr    , tvb, offset,      4, p_mq_parm->mq_int_enc);
     proto_tree_add_item(mq_tree_sub, hf_mq_charv_vsoffset , tvb, offset +  4, 4, p_mq_parm->mq_int_enc);
     proto_tree_add_item(mq_tree_sub, hf_mq_charv_vsbufsize, tvb, offset +  8, 4, p_mq_parm->mq_int_enc);
@@ -1901,8 +1899,7 @@ static gint dissect_mq_pmr(tvbuff_t *tvb, proto_tree *tree, gint offset, gint iN
                 gint iRecord = 0;
                 for (iRecord = 0; iRecord < iNbrRecords; iRecord++)
                 {
-                    proto_item *ti = proto_tree_add_text(tree, tvb, offset + iOffsetPMR, iSizePMR1, MQ_TEXT_PMR);
-                    proto_tree *mq_tree = proto_item_add_subtree(ti, ett_mq_pmr);
+                    proto_tree *mq_tree = proto_tree_add_subtree(tree, tvb, offset + iOffsetPMR, iSizePMR1, ett_mq_pmr, NULL, MQ_TEXT_PMR);
                     if ((recFlags & MQ_PMRF_MSG_ID) != 0)
                     {
                         proto_tree_add_item(mq_tree, hf_mq_pmr_msgid, tvb, offset + iOffsetPMR, 24, ENC_NA);
@@ -1949,8 +1946,7 @@ static gint dissect_mq_or(tvbuff_t *tvb, proto_tree *tree, gint offset, gint iNb
                 gint iRecord = 0;
                 for (iRecord = 0; iRecord < iNbrRecords ; iRecord++)
                 {
-                    proto_item *ti = proto_tree_add_text(tree, tvb, offset + iOffsetOR, 96, MQ_TEXT_OR);
-                    proto_tree *mq_tree = proto_item_add_subtree(ti, ett_mq_or);
+                    proto_tree *mq_tree = proto_tree_add_subtree(tree, tvb, offset + iOffsetOR, 96, ett_mq_or, NULL, MQ_TEXT_OR);
                     proto_tree_add_item(mq_tree, hf_mq_or_objname, tvb, offset + iOffsetOR, 48, p_mq_parm->mq_str_enc);
                     proto_tree_add_item(mq_tree, hf_mq_or_objqmgrname, tvb, offset + iOffsetOR + 48, 48, p_mq_parm->mq_str_enc);
                     iOffsetOR += 96;
@@ -1975,8 +1971,7 @@ static gint dissect_mq_rr(tvbuff_t *tvb, proto_tree *tree, gint offset, gint iNb
                 gint iRecord = 0;
                 for (iRecord = 0; iRecord < iNbrRecords; iRecord++)
                 {
-                    proto_item *ti = proto_tree_add_text(tree, tvb, offset + iOffsetRR, 8, MQ_TEXT_RR);
-                    proto_tree *mq_tree = proto_item_add_subtree(ti, ett_mq_rr);
+                    proto_tree *mq_tree = proto_tree_add_subtree(tree, tvb, offset + iOffsetRR, 8, ett_mq_rr, NULL, MQ_TEXT_RR);
                     proto_tree_add_item(mq_tree, hf_mq_rr_compcode, tvb, offset + iOffsetRR, 4, p_mq_parm->mq_int_enc);
                     proto_tree_add_item(mq_tree, hf_mq_rr_reascode, tvb, offset + iOffsetRR + 4, 4, p_mq_parm->mq_int_enc);
                     iOffsetRR += 8;
@@ -2016,10 +2011,8 @@ static gint dissect_mq_gmo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
             if (tree)
             {
                 proto_tree *mq_tree;
-                proto_item *ti;
 
-                ti = proto_tree_add_text(tree, tvb, offset, iSize, MQ_TEXT_GMO);
-                mq_tree = proto_item_add_subtree(ti, ett_mq_gmo);
+                mq_tree = proto_tree_add_subtree(tree, tvb, offset, iSize, ett_mq_gmo, NULL, MQ_TEXT_GMO);
 
                 proto_tree_add_item(mq_tree, hf_mq_gmo_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
                 proto_tree_add_item(mq_tree, hf_mq_gmo_version , tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
@@ -2082,10 +2075,8 @@ static gint dissect_mq_pmo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
             if (tree)
             {
                 proto_tree  *mq_tree;
-                proto_item  *ti;
 
-                ti = proto_tree_add_text(tree, tvb, offset, iSize, MQ_TEXT_PMO);
-                mq_tree = proto_item_add_subtree(ti, ett_mq_pmo);
+                mq_tree = proto_tree_add_subtree(tree, tvb, offset, iSize, ett_mq_pmo, NULL, MQ_TEXT_PMO);
                 proto_tree_add_item(mq_tree, hf_mq_pmo_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
                 proto_tree_add_item(mq_tree, hf_mq_pmo_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
 
@@ -2173,10 +2164,8 @@ static gint dissect_mq_od(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
             if (tree)
             {
                 proto_tree  *mq_tree;
-                proto_item  *ti;
 
-                ti = proto_tree_add_text(tree, tvb, offset, iSize, MQ_TEXT_OD);
-                mq_tree = proto_item_add_subtree(ti, ett_mq_od);
+                mq_tree = proto_tree_add_subtree(tree, tvb, offset, iSize, ett_mq_od, NULL, MQ_TEXT_OD);
 
                 proto_tree_add_item(mq_tree, hf_mq_od_StructID   , tvb, offset,        4, p_mq_parm->mq_str_enc);
                 proto_tree_add_item(mq_tree, hf_mq_od_version    , tvb, offset +   4,  4, p_mq_parm->mq_int_enc);
@@ -2245,10 +2234,8 @@ static gint dissect_mq_xid(tvbuff_t *tvb, proto_tree *tree, mq_parm_t *p_mq_parm
             if (tree)
             {
                 proto_tree  *mq_tree;
-                proto_item  *ti;
 
-                ti = proto_tree_add_text(tree, tvb, offset, iSizeXid, MQ_TEXT_XID);
-                mq_tree = proto_item_add_subtree(ti, ett_mq_xa_xid);
+                mq_tree = proto_tree_add_subtree(tree, tvb, offset, iSizeXid, ett_mq_xa_xid, NULL, MQ_TEXT_XID);
 
                 proto_tree_add_item(mq_tree, hf_mq_xa_xid_formatid  , tvb, offset                 , 4, p_mq_parm->mq_int_enc);
                 proto_tree_add_item(mq_tree, hf_mq_xa_xid_glbxid_len, tvb, offset + 4             , 1, p_mq_parm->mq_int_enc);
@@ -2327,8 +2314,7 @@ static gint dissect_mq_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mqroot_
         }
         if (mqroot_tree)
         {
-            proto_item *ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSize, MQ_TEXT_ID);
-            proto_tree *mq_tree = proto_item_add_subtree(ti, ett_mq_id);
+            proto_tree *mq_tree = proto_tree_add_subtree(mqroot_tree, tvb, offset, iSize, ett_mq_id, NULL, MQ_TEXT_ID);
 
             proto_tree_add_item(mq_tree, hf_mq_id_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
             proto_tree_add_item(mq_tree, hf_mq_id_FapLevel, tvb, offset + 4, 1, ENC_BIG_ENDIAN);
@@ -2411,8 +2397,7 @@ static gint dissect_mq_md(tvbuff_t *tvb, proto_tree *tree, gint offset, mq_parm_
             p_mq_parm->mq_md_ccsid.ccsid = tvb_get_guint32_endian(tvb, offset +  28,  p_mq_parm->mq_int_enc);
             if (tree)
             {
-                proto_item *ti = proto_tree_add_text(tree, tvb, offset, iSize, MQ_TEXT_MD);
-                proto_tree *mq_tree = proto_item_add_subtree(ti, ett_mq_md);
+                proto_tree *mq_tree = proto_tree_add_subtree(tree, tvb, offset, iSize, ett_mq_md, NULL, MQ_TEXT_MD);
 
                 proto_tree_add_item(mq_tree, hf_mq_md_StructID   , tvb, offset,        4, p_mq_parm->mq_str_enc);
                 proto_tree_add_item(mq_tree, hf_mq_md_version    , tvb, offset +   4,  4, p_mq_parm->mq_int_enc);
@@ -2464,8 +2449,7 @@ static gint dissect_mq_fopa(tvbuff_t *tvb, proto_tree *tree, gint offset, mq_par
         {
             if (tree)
             {
-                proto_item *ti = proto_tree_add_text(tree, tvb, offset, iSize, MQ_TEXT_FOPA);
-                proto_tree *mq_tree = proto_item_add_subtree(ti, ett_mq_fopa);
+                proto_tree *mq_tree = proto_tree_add_subtree(tree, tvb, offset, iSize, ett_mq_fopa, NULL, MQ_TEXT_FOPA);
 
                 proto_tree_add_item(mq_tree, hf_mq_fopa_StructID, tvb, offset,      4, p_mq_parm->mq_str_enc);
                 proto_tree_add_item(mq_tree, hf_mq_fopa_version , tvb, offset +  4, 4, p_mq_parm->mq_int_enc);
@@ -2580,8 +2564,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
                     mqroot_tree = tree;
                 }
 
-                ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeTSH, MQ_TEXT_TSH);
-                mq_tree = proto_item_add_subtree(ti, ett_mq_tsh);
+                mq_tree = proto_tree_add_subtree(mqroot_tree, tvb, offset, iSizeTSH, ett_mq_tsh, NULL, MQ_TEXT_TSH);
 
                 proto_tree_add_item(mq_tree, hf_mq_tsh_StructID, tvb, offset + 0, 4, p_mq_parm->mq_str_enc);
                 proto_tree_add_item(mq_tree, hf_mq_tsh_mqseglen, tvb, offset + 4, 4, ENC_BIG_ENDIAN);
@@ -2626,8 +2609,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
 
                         if (tree)
                         {
-                            ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeAPI, MQ_TEXT_API);
-                            mq_tree = proto_item_add_subtree(ti, ett_mq_api);
+                            mq_tree = proto_tree_add_subtree(mqroot_tree, tvb, offset, iSizeAPI, ett_mq_api, NULL, MQ_TEXT_API);
 
                             proto_tree_add_item(mq_tree, hf_mq_api_replylen,  tvb, offset,      4, ENC_BIG_ENDIAN);
                             proto_tree_add_item(mq_tree, hf_mq_api_compcode,  tvb, offset +  4, 4, p_mq_parm->mq_int_enc);
@@ -2644,8 +2626,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
                         bPayload = TRUE;
                         if (tree)
                         {
-                            ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSize, MQ_TEXT_MSH);
-                            mq_tree = proto_item_add_subtree(ti, ett_mq_msh);
+                            mq_tree = proto_tree_add_subtree(mqroot_tree, tvb, offset, iSize, ett_mq_msh, NULL, MQ_TEXT_MSH);
 
                             proto_tree_add_item(mq_tree, hf_mq_msh_StructID,   tvb, offset +  0, 4, p_mq_parm->mq_str_enc);
                             proto_tree_add_item(mq_tree, hf_mq_msh_seqnum,       tvb, offset +  4, 4, p_mq_parm->mq_int_enc);
@@ -2666,8 +2647,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
 
                         if (tree)
                         {
-                            ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSize, MQ_TEXT_CAUT);
-                            mq_tree = proto_item_add_subtree(ti, ett_mq_caut);
+                            mq_tree = proto_tree_add_subtree(mqroot_tree, tvb, offset, iSize, ett_mq_caut, NULL, MQ_TEXT_CAUT);
 
                             proto_tree_add_item(mq_tree, hf_mq_caut_StructID,  tvb, offset,      4, p_mq_parm->mq_str_enc);
                             proto_tree_add_item(mq_tree, hf_mq_caut_AuthType,  tvb, offset +  4, 4, p_mq_parm->mq_int_enc);
@@ -2689,8 +2669,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
                         gint iSize = 20;
                         if (tree)
                         {
-                            ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeAPI, MQ_TEXT_SOCKET);
-                            mq_tree = proto_item_add_subtree(ti, ett_mq_socket);
+                            mq_tree = proto_tree_add_subtree(mqroot_tree, tvb, offset, iSizeAPI, ett_mq_socket, NULL, MQ_TEXT_SOCKET);
 
                             proto_tree_add_item(mq_tree, hf_mq_socket_conversid, tvb, offset,      4, p_mq_parm->mq_int_enc);
                             proto_tree_add_item(mq_tree, hf_mq_socket_requestid, tvb, offset +  4, 4, p_mq_parm->mq_int_enc);
@@ -2717,8 +2696,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
 
                             if (tree)
                             {
-                                ti = proto_tree_add_text(mqroot_tree, tvb, offset, 8, MQ_TEXT_STAT);
-                                mq_tree = proto_item_add_subtree(ti, ett_mq_status);
+                                mq_tree = proto_tree_add_subtree(mqroot_tree, tvb, offset, 8, ett_mq_status, NULL, MQ_TEXT_STAT);
 
                                 proto_tree_add_item(mq_tree, hf_mq_status_length, tvb, offset,     4, p_mq_parm->mq_int_enc);
                                 proto_tree_add_item(mq_tree, hf_mq_status_code,   tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
@@ -2733,8 +2711,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
                     {
                         if (tree)
                         {
-                            ti = proto_tree_add_text(mqroot_tree, tvb, offset, -1, MQ_TEXT_PING);
-                            mq_tree = proto_item_add_subtree(ti, ett_mq_ping);
+                            mq_tree = proto_tree_add_subtree(mqroot_tree, tvb, offset, -1, ett_mq_ping, NULL, MQ_TEXT_PING);
 
                             proto_tree_add_item(mq_tree, hf_mq_ping_length, tvb, offset,      4, p_mq_parm->mq_int_enc);
                             proto_tree_add_item(mq_tree, hf_mq_ping_buffer, tvb, offset + 4, -1, ENC_NA);
@@ -2745,8 +2722,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
                     {
                         if (tree)
                         {
-                            ti = proto_tree_add_text(mqroot_tree, tvb, offset, -1, MQ_TEXT_RESET);
-                            mq_tree = proto_item_add_subtree(ti, ett_mq_reset);
+                            mq_tree = proto_tree_add_subtree(mqroot_tree, tvb, offset, -1, ett_mq_reset, NULL, MQ_TEXT_RESET);
 
                             proto_tree_add_item(mq_tree, hf_mq_reset_length, tvb, offset,     4, p_mq_parm->mq_int_enc);
                             proto_tree_add_item(mq_tree, hf_mq_reset_seqnum, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
@@ -2760,8 +2736,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
                         offset += dissect_mq_od(tvb, pinfo, mqroot_tree, offset, p_mq_parm, &iDistributionListSize);
                         if (tree)
                         {
-                            ti = proto_tree_add_text(mqroot_tree, tvb, offset, 4, MQ_TEXT_OPEN);
-                            mq_tree = proto_item_add_subtree(ti, ett_mq_open);
+                            mq_tree = proto_tree_add_subtree(mqroot_tree, tvb, offset, 4, ett_mq_open, NULL, MQ_TEXT_OPEN);
                             if (p_mq_parm->mq_opcode == MQ_TST_MQOPEN || p_mq_parm->mq_opcode == MQ_TST_MQOPEN_REPLY)
                             {
                                 dissect_mq_MQOO(tvb, mq_tree, offset, ett_mq_open_option, hf_mq_open_options, p_mq_parm);
@@ -2808,8 +2783,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
                             nofs = offset;
                             if (tree)
                             {
-                                ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeCONN, MQ_TEXT_CONN);
-                                mq_tree = proto_item_add_subtree(ti, ett_mq_conn);
+                                mq_tree = proto_tree_add_subtree(mqroot_tree, tvb, offset, iSizeCONN, ett_mq_conn, NULL, MQ_TEXT_CONN);
 
                                 do_proto_add_item(48, proto_tree_add_item(mq_tree, hf_mq_conn_QMgr    , tvb, nofs, 48, p_mq_parm->mq_str_enc));
                                 do_proto_add_item(28, proto_tree_add_item(mq_tree, hf_mq_conn_appname , tvb, nofs, 28, p_mq_parm->mq_str_enc));
@@ -2825,8 +2799,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
                                 {
                                     proto_tree  *mq_tree_sub;
 
-                                    ti =  proto_tree_add_text(mq_tree, tvb, nofs, iSizeCONN - nofs, MQ_TEXT_FCNO);
-                                    mq_tree_sub = proto_item_add_subtree(ti, ett_mq_fcno);
+                                    mq_tree_sub = proto_tree_add_subtree(mq_tree, tvb, nofs, iSizeCONN - nofs, ett_mq_fcno, NULL, MQ_TEXT_FCNO);
 
                                     do_proto_add_item(  4, proto_tree_add_item(mq_tree_sub, hf_mq_fcno_StructID , tvb, nofs, 4, p_mq_parm->mq_str_enc));
                                     do_proto_add_item(  4, proto_tree_add_item(mq_tree_sub, hf_mq_fcno_unknown00, tvb, nofs, 4, p_mq_parm->mq_int_enc));
@@ -2864,8 +2837,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
 
                         if (tree)
                         {
-                            ti = proto_tree_add_text(mqroot_tree, tvb, offset, -1, MQ_TEXT_INQ);
-                            mq_tree = proto_item_add_subtree(ti, ett_mq_inq);
+                            mq_tree = proto_tree_add_subtree(mqroot_tree, tvb, offset, -1, ett_mq_inq, NULL, MQ_TEXT_INQ);
 
                             proto_tree_add_item(mq_tree, hf_mq_inq_nbsel,    tvb, offset,     4, p_mq_parm->mq_int_enc);
                             proto_tree_add_item(mq_tree, hf_mq_inq_nbint,    tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
@@ -2919,8 +2891,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
 
                         if (tree)
                         {
-                            ti = proto_tree_add_text(mqroot_tree, tvb, offset, -1, MQ_TEXT_NOTIFICATION);
-                            mq_tree = proto_item_add_subtree(ti, ett_mq_notif);
+                            mq_tree = proto_tree_add_subtree(mqroot_tree, tvb, offset, -1, ett_mq_notif, NULL, MQ_TEXT_NOTIFICATION);
 
                             proto_tree_add_item(mq_tree, hf_mq_notif_vers,     tvb, offset,      4, p_mq_parm->mq_int_enc);
                             proto_tree_add_item(mq_tree, hf_mq_notif_handle, tvb, offset +  4, 4, p_mq_parm->mq_int_enc);
@@ -2954,8 +2925,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
 
                         if (tree)
                         {
-                            ti = proto_tree_add_text(mqroot_tree, tvb, offset, -1, MQ_TEXT_REQMSG);
-                            mq_tree = proto_item_add_subtree(ti, ett_mq_msg);
+                            mq_tree = proto_tree_add_subtree(mqroot_tree, tvb, offset, -1, ett_mq_msg, NULL, MQ_TEXT_REQMSG);
 
                             proto_tree_add_item(mq_tree, hf_mq_msgreq_version  , tvb, offset     ,  4, p_mq_parm->mq_int_enc);
                             proto_tree_add_item(mq_tree, hf_mq_msgreq_handle   , tvb, offset +  4,  4, p_mq_parm->mq_int_enc);
@@ -3042,8 +3012,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
 
                         if (tree)
                         {
-                            ti = proto_tree_add_text(mqroot_tree, tvb, offset, iHdrL, MQ_TEXT_ASYMSG);
-                            mq_tree = proto_item_add_subtree(ti, ett_mq_msg);
+                            mq_tree = proto_tree_add_subtree(mqroot_tree, tvb, offset, iHdrL, ett_mq_msg, NULL, MQ_TEXT_ASYMSG);
 
                             proto_tree_add_item(mq_tree, hf_mq_msgasy_version  , tvb, offset     , 4, p_mq_parm->mq_int_enc);
                             proto_tree_add_item(mq_tree, hf_mq_msgasy_handle   , tvb, offset +  4, 4, p_mq_parm->mq_int_enc);
@@ -3085,8 +3054,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
 
                         if (tree)
                         {
-                            ti = proto_tree_add_text(mqroot_tree, tvb, offset, 12, MQ_TEXT_SPI);
-                            mq_tree = proto_item_add_subtree(ti, ett_mq_spi);
+                            mq_tree = proto_tree_add_subtree(mqroot_tree, tvb, offset, 12, ett_mq_spi, NULL, MQ_TEXT_SPI);
 
                             proto_tree_add_item(mq_tree, hf_mq_spi_verb   , tvb, offset,     4, p_mq_parm->mq_int_enc);
                             proto_tree_add_item(mq_tree, hf_mq_spi_version, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
@@ -3104,8 +3072,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
                             {
                                 guint8 *sStructId;
                                 sStructId = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, 4, ((p_mq_parm->mq_strucID & MQ_MASK_SPxx) == MQ_STRUCTID_SPxx) ? ENC_ASCII : ENC_EBCDIC);
-                                ti = proto_tree_add_text(mqroot_tree, tvb, offset, 12, "%s", sStructId);
-                                mq_tree = proto_item_add_subtree(ti, ett_mq_spi_base);
+                                mq_tree = proto_tree_add_subtree(mqroot_tree, tvb, offset, 12, ett_mq_spi_base, NULL, sStructId);
 
                                 proto_tree_add_item(mq_tree, hf_mq_spi_base_StructID, tvb, offset,     4, p_mq_parm->mq_str_enc);
                                 proto_tree_add_item(mq_tree, hf_mq_spi_base_version , tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
@@ -3135,8 +3102,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
                                     /* Dissect the common part of these structures */
                                     guint8 *sStructId;
                                     sStructId = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, 4, ((p_mq_parm->mq_strucID & MQ_MASK_SPxx) == MQ_STRUCTID_SPxx) ? ENC_ASCII : ENC_EBCDIC);
-                                    ti = proto_tree_add_text(mqroot_tree, tvb, offset, -1, "%s", sStructId);
-                                    mq_tree = proto_item_add_subtree(ti, ett_mq_spi_base);
+                                    mq_tree = proto_tree_add_subtree(mqroot_tree, tvb, offset, -1, ett_mq_spi_base, NULL, sStructId);
 
                                     proto_tree_add_item(mq_tree, hf_mq_spi_base_StructID, tvb, offset, 4, p_mq_parm->mq_str_enc);
                                     proto_tree_add_item(mq_tree, hf_mq_spi_base_version , tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
@@ -3218,9 +3184,8 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
                         /* The XA structures are special because they do not start with a structid */
                         if (tree)
                         {
-                            ti = proto_tree_add_text(mqroot_tree, tvb, offset, 16, "%s (%s)", MQ_TEXT_XA,
-                                val_to_str(p_mq_parm->mq_opcode, mq_opcode_vals, "Unknown (0x%02x)"));
-                            mq_tree = proto_item_add_subtree(ti, ett_mq_xa);
+                            mq_tree = proto_tree_add_subtree_format(mqroot_tree, tvb, offset, 16, ett_mq_xa, NULL,
+                                "%s (%s)", MQ_TEXT_XA, val_to_str(p_mq_parm->mq_opcode, mq_opcode_vals, "Unknown (0x%02x)"));
 
                             proto_tree_add_item(mq_tree, hf_mq_xa_length,      tvb, offset,     4, ENC_BIG_ENDIAN);
                             proto_tree_add_item(mq_tree, hf_mq_xa_returnvalue, tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
@@ -3247,8 +3212,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
                             {
                                 if (tree)
                                 {
-                                    ti = proto_tree_add_text(mqroot_tree, tvb, offset, iXAInfoLength + 1, MQ_TEXT_XINF);
-                                    mq_tree = proto_item_add_subtree(ti, ett_mq_xa_info);
+                                    mq_tree = proto_tree_add_subtree(mqroot_tree, tvb, offset, iXAInfoLength + 1, ett_mq_xa_info, NULL, MQ_TEXT_XINF);
 
                                     proto_tree_add_item(mq_tree, hf_mq_xa_xainfo_length, tvb, offset,     1, ENC_BIG_ENDIAN);
                                     proto_tree_add_item(mq_tree, hf_mq_xa_xainfo_value , tvb, offset + 1, iXAInfoLength, p_mq_parm->mq_str_enc);
@@ -3296,8 +3260,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
                         {
                             if (tree)
                             {
-                                ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSize, MQ_TEXT_LPOO);
-                                mq_tree = proto_item_add_subtree(ti, ett_mq_lpoo);
+                                mq_tree = proto_tree_add_subtree(mqroot_tree, tvb, offset, iSize, ett_mq_lpoo, NULL, MQ_TEXT_LPOO);
 
                                 proto_tree_add_item(mq_tree, hf_mq_lpoo_StructID, tvb, offset,     4, p_mq_parm->mq_str_enc);
                                 proto_tree_add_item(mq_tree, hf_mq_lpoo_version , tvb, offset + 4, 4, p_mq_parm->mq_int_enc);
@@ -3354,8 +3317,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
 
                             if (tree)
                             {
-                                ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeUID, MQ_TEXT_UID);
-                                mq_tree = proto_item_add_subtree(ti, ett_mq_uid);
+                                mq_tree = proto_tree_add_subtree(mqroot_tree, tvb, offset, iSizeUID, ett_mq_uid, NULL, MQ_TEXT_UID);
 
                                 proto_tree_add_item(mq_tree, hf_mq_uid_StructID, tvb, offset,       4, p_mq_parm->mq_str_enc);
                                 proto_tree_add_item(mq_tree, hf_mq_uid_userid  , tvb, offset +  4, 12, p_mq_parm->mq_str_enc);
@@ -3400,8 +3362,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
                                 iSizePayload = tvb_get_guint32_endian(tvb, offset, p_mq_parm->mq_int_enc);
                                 if (tree)
                                 {
-                                    ti = proto_tree_add_text(mqroot_tree, tvb, offset, 4, MQ_TEXT_PUT);
-                                    mq_tree = proto_item_add_subtree(ti, ett_mq_put);
+                                    mq_tree = proto_tree_add_subtree(mqroot_tree, tvb, offset, 4, ett_mq_put, NULL, MQ_TEXT_PUT);
                                     proto_tree_add_item(mq_tree, hf_mq_put_length, tvb, offset, 4, p_mq_parm->mq_int_enc);
                                 }
                                 offset += 4;
@@ -3431,8 +3392,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
                                     gint iSizeXQH = 104;
                                     if (tree)
                                     {
-                                        ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeXQH, MQ_TEXT_XQH);
-                                        mq_tree = proto_item_add_subtree(ti, ett_mq_xqh);
+                                        mq_tree = proto_tree_add_subtree(mqroot_tree, tvb, offset, iSizeXQH, ett_mq_xqh, NULL, MQ_TEXT_XQH);
 
                                         proto_tree_add_item(mq_tree, hf_mq_xqh_StructID  , tvb, offset     ,  4, p_mq_parm->mq_str_enc);
                                         proto_tree_add_item(mq_tree, hf_mq_xqh_version   , tvb, offset +  4,  4, p_mq_parm->mq_int_enc);
@@ -3463,8 +3423,7 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
 
                                     if (tree)
                                     {
-                                        ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeDLH, MQ_TEXT_DLH);
-                                        mq_tree = proto_item_add_subtree(ti, ett_mq_dlh);
+                                        mq_tree = proto_tree_add_subtree(mqroot_tree, tvb, offset, iSizeDLH, ett_mq_dlh, NULL, MQ_TEXT_DLH);
 
                                         proto_tree_add_item(mq_tree, hf_mq_dlh_StructID   , tvb, offset,        4, p_mq_parm->mq_str_enc);
                                         proto_tree_add_item(mq_tree, hf_mq_dlh_version    , tvb, offset +   4,  4, p_mq_parm->mq_int_enc);
@@ -3525,8 +3484,8 @@ static void dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
 
                                         if (tree)
                                         {
-                                            ti = proto_tree_add_text(mqroot_tree, tvb, offset, iSizeHeader, "%s", val_to_str(p_mq_parm->mq_strucID, mq_StructID_vals, "Unknown (0x%08x)"));
-                                            mq_tree = proto_item_add_subtree(ti, ett_mq_head);
+                                            mq_tree = proto_tree_add_subtree(mqroot_tree, tvb, offset, iSizeHeader, ett_mq_head, NULL,
+                                                                val_to_str(p_mq_parm->mq_strucID, mq_StructID_vals, "Unknown (0x%08x)"));
 
                                             proto_tree_add_item(mq_tree, hf_mq_head_StructID, tvb, offset,      4, p_mq_parm->mq_str_enc);
                                             proto_tree_add_item(mq_tree, hf_mq_head_version , tvb, offset +  4, 4, p_mq_parm->mq_int_enc);
index 6ad2648d11bd378d20ed83a06796eaa260334513..d4e436667101be778a32a504aa39b840baa5666d 100644 (file)
@@ -219,9 +219,8 @@ static int dissect_mqtt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi
     mqtt_msg_len = (gint) msg_len;
 
     /* Add each MQTT message as a subtree to main Tree */
-    ti_mqtt = proto_tree_add_text(mqtt_tree, tvb, offset, mqtt_msg_len, "%s",
+    mqtt_msg_tree = proto_tree_add_subtree(mqtt_tree, tvb, offset, mqtt_msg_len, ett_mqtt_msg, NULL,
                                   val_to_str_ext(mqtt_msg_type, &mqtt_msgtype_vals_ext, "Unknown (0x%02x)"));
-    mqtt_msg_tree = proto_item_add_subtree(ti_mqtt, ett_mqtt_msg);
 
     ti_mqtt = proto_tree_add_uint_format_value(mqtt_msg_tree, hf_mqtt_hdrflags, tvb, offset, 1, mqtt_fixed_hdr, "0x%02x (%s)",
                                                 mqtt_fixed_hdr, val_to_str_ext(mqtt_msg_type, &mqtt_msgtype_vals_ext, "Unknown (0x%02x)") );
index 66473b65da9b3a83dce434ec67f776c58ee3dc13..13726929e528b6dbedfc21b1b5a637d604cb9be1 100644 (file)
@@ -260,18 +260,17 @@ static void dissect_msdp_sa(tvbuff_t *tvb, packet_info *pinfo,
          * This is probably visually better.
          */
         while (entries-- > 0) {
-                proto_item *ei;
                 proto_tree *entry_tree;
 
                 if (length < 12) {
                         *offset += length;
                         return;
                 }
-                ei = proto_tree_add_text(tree, tvb, *offset, 12, "(S,G) block: %s/%u -> %s",
+                entry_tree = proto_tree_add_subtree_format(tree, tvb, *offset, 12, ett_msdp_sa_entry, NULL,
+                                         "(S,G) block: %s/%u -> %s",
                                          tvb_ip_to_str(tvb, *offset + 8),
                                          tvb_get_guint8(tvb, *offset + 3),
                                          tvb_ip_to_str(tvb, *offset + 4));
-                entry_tree = proto_item_add_subtree(ei, ett_msdp_sa_entry);
 
                 proto_tree_add_item(entry_tree, hf_msdp_sa_reserved, tvb, *offset, 3, ENC_BIG_ENDIAN);
                 *offset += 3;
@@ -291,15 +290,13 @@ static void dissect_msdp_sa(tvbuff_t *tvb, packet_info *pinfo,
          * Check if an encapsulated multicast IPv4 packet follows
          */
         if (length > 0) {
-                proto_item *ei;
                 proto_tree *enc_tree;
                 gint available_length, reported_length;
                 tvbuff_t *next_tvb;
 
-                ei = proto_tree_add_text(tree, tvb, *offset, length,
-                                         "Encapsulated IPv4 packet: %u bytes",
+                enc_tree = proto_tree_add_subtree_format(tree, tvb, *offset, length,
+                                         ett_msdp_sa_enc_data, NULL, "Encapsulated IPv4 packet: %u bytes",
                                          length);
-                enc_tree = proto_item_add_subtree(ei, ett_msdp_sa_enc_data);
 
                 available_length = tvb_length_remaining(tvb, *offset);
                 reported_length = tvb_reported_length_remaining(tvb, *offset);
index 882312dcba2e3b2927db8d883e817f40a76f8cad..aec2cbbe6a176025169c24cf3e6e700e7591517a 100644 (file)
@@ -573,16 +573,13 @@ static void dissect_request_resolve(tvbuff_t *tvb, int offset,
 /* return the length of the string and the length byte */
 
        proto_tree      *name_tree;
-       proto_item      *ti;
 
        int length = tvb_get_guint8( tvb, offset);
 
        if ( tree){
-               ti = proto_tree_add_text(tree, tvb, offset, length + 1,
-                       "Host Name: %.*s", length,
-            tvb_get_string_enc( wmem_packet_scope(),  tvb, offset + 18, length, ENC_ASCII));
-
-               name_tree = proto_item_add_subtree(ti, ett_msproxy_name);
+               name_tree = proto_tree_add_subtree_format(tree, tvb, offset, length + 1,
+                       ett_msproxy_name, NULL, "Host Name: %.*s", length,
+                       tvb_get_string_enc( wmem_packet_scope(),  tvb, offset + 18, length, ENC_ASCII));
 
                proto_tree_add_text( name_tree, tvb, offset, 1, "Length: %d",
                        length);
index 66d5b38f292d170e512c6e4791f01c51c87c2974..179d15f53fdd6ffa8d283e92f825f871c6b1bc79 100644 (file)
@@ -722,9 +722,8 @@ dissect_msrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_
         /* continuation-flag */
         proto_tree_add_item(msrp_end_tree,hf_msrp_cnt_flg,tvb,end_line_offset+end_line_len-1,1,ENC_UTF_8|ENC_NA);
 
-        if (global_msrp_raw_text){
-            ti = proto_tree_add_text(tree, tvb, 0, -1,"Message Session Relay Protocol(as raw text)");
-            raw_tree = proto_item_add_subtree(ti, ett_msrp);
+        if (global_msrp_raw_text && tree) {
+            raw_tree = proto_tree_add_subtree(tree, tvb, 0, -1, ett_msrp, NULL, "Message Session Relay Protocol(as raw text)");
             tvb_raw_text_add(tvb,raw_tree);
         }
 
index 87b99ba580ec89b53f16dd332d3ae07e26a2b482..3b9c5c5e1d288f068404fc6073fe11a01957025d 100644 (file)
@@ -337,8 +337,8 @@ dissect_mtp2_su(tvbuff_t *su_tvb, packet_info *pinfo, proto_item *mtp2_item, pro
 static void
 dissect_mtp2_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean validate_crc)
 {
-  proto_item *mtp2_item = NULL;
-  proto_tree *mtp2_tree = NULL;
+  proto_item *mtp2_item;
+  proto_tree *mtp2_tree;
 
   if (pinfo->annex_a_used == MTP2_ANNEX_A_USED_UNKNOWN)
     use_extended_sequence_numbers = use_extended_sequence_numbers_default;
@@ -347,10 +347,8 @@ dissect_mtp2_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolea
 
   col_set_str(pinfo->cinfo, COL_PROTOCOL, "MTP2");
 
-  if (tree) {
-    mtp2_item = proto_tree_add_item(tree, proto_mtp2, tvb, 0, -1, ENC_NA);
-    mtp2_tree = proto_item_add_subtree(mtp2_item, ett_mtp2);
-  };
+  mtp2_item = proto_tree_add_item(tree, proto_mtp2, tvb, 0, -1, ENC_NA);
+  mtp2_tree = proto_item_add_subtree(mtp2_item, ett_mtp2);
 
   dissect_mtp2_su(tvb, pinfo, mtp2_item, mtp2_tree, tree, validate_crc);
 }
index 97c5757e9aa34c9af7125b449bd584a6c6151526..ba2f6e2c7e9970d4d0d1271875a25754a6527185 100644 (file)
@@ -458,11 +458,9 @@ dissect_mtp3_sio(tvbuff_t *tvb, proto_tree *mtp3_tree,
     mtp3_addr_pc_t *mtp3_addr_opc, mtp3_addr_pc_t *mtp3_addr_dpc)
 {
   guint8 sio;
-  proto_item *sio_item;
   proto_tree *sio_tree;
 
-  sio_item = proto_tree_add_text(mtp3_tree, tvb, SIO_OFFSET, SIO_LENGTH, "Service information octet");
-  sio_tree = proto_item_add_subtree(sio_item, ett_mtp3_sio);
+  sio_tree = proto_tree_add_subtree(mtp3_tree, tvb, SIO_OFFSET, SIO_LENGTH, ett_mtp3_sio, NULL, "Service information octet");
 
   sio = tvb_get_guint8(tvb, SIO_OFFSET);
   proto_tree_add_uint(sio_tree, hf_mtp3_network_indicator, tvb, SIO_OFFSET, SIO_LENGTH, sio);
@@ -497,7 +495,7 @@ dissect_mtp3_routing_label(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mtp3_t
     mtp3_addr_pc_t *mtp3_addr_opc, mtp3_addr_pc_t *mtp3_addr_dpc)
 {
   guint32 label, dpc, opc;
-  proto_item *label_item, *label_dpc_item, *label_opc_item;
+  proto_item *label_dpc_item, *label_opc_item;
   proto_item *hidden_item;
   proto_tree *label_tree;
   proto_tree *pc_subtree;
@@ -507,8 +505,7 @@ dissect_mtp3_routing_label(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mtp3_t
 
   switch (mtp3_standard) {
   case ITU_STANDARD:
-    label_item = proto_tree_add_text(mtp3_tree, tvb, ROUTING_LABEL_OFFSET, ITU_ROUTING_LABEL_LENGTH, "Routing label");
-    label_tree = proto_item_add_subtree(label_item, ett_mtp3_label);
+    label_tree = proto_tree_add_subtree(mtp3_tree, tvb, ROUTING_LABEL_OFFSET, ITU_ROUTING_LABEL_LENGTH, ett_mtp3_label, NULL, "Routing label");
 
     label = tvb_get_letohl(tvb, ROUTING_LABEL_OFFSET);
 
@@ -554,9 +551,7 @@ dissect_mtp3_routing_label(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mtp3_t
     }
 
     /* Create the Routing Label Tree */
-    label_item = proto_tree_add_text(mtp3_tree, tvb, ROUTING_LABEL_OFFSET, ANSI_ROUTING_LABEL_LENGTH, "Routing label");
-    label_tree = proto_item_add_subtree(label_item, ett_mtp3_label);
-
+    label_tree = proto_tree_add_subtree(mtp3_tree, tvb, ROUTING_LABEL_OFFSET, ANSI_ROUTING_LABEL_LENGTH, ett_mtp3_label, NULL, "Routing label");
 
     /* create and fill the DPC tree */
     dissect_mtp3_3byte_pc(tvb, ANSI_DPC_OFFSET, label_tree, ett_mtp3_label_dpc, hf_dpc_string, hf_mtp3_dpc_network,
@@ -582,8 +577,7 @@ dissect_mtp3_routing_label(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mtp3_t
     break;
 
   case JAPAN_STANDARD:
-    label_item = proto_tree_add_text(mtp3_tree, tvb, ROUTING_LABEL_OFFSET, JAPAN_ROUTING_LABEL_LENGTH, "Routing label");
-    label_tree = proto_item_add_subtree(label_item, ett_mtp3_label);
+    label_tree = proto_tree_add_subtree(mtp3_tree, tvb, ROUTING_LABEL_OFFSET, JAPAN_ROUTING_LABEL_LENGTH, ett_mtp3_label, NULL, "Routing label");
 
     label_dpc_item = proto_tree_add_item(label_tree, hf_mtp3_japan_dpc, tvb, ROUTING_LABEL_OFFSET, JAPAN_PC_LENGTH, ENC_LITTLE_ENDIAN);
     dpc = tvb_get_letohs(tvb, ROUTING_LABEL_OFFSET);
@@ -707,7 +701,7 @@ dissect_mtp3(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
 
     /* Set up structures needed to add the protocol subtree and manage it */
     proto_item *mtp3_item = NULL, *gen_item;
-    proto_tree *mtp3_tree = NULL;
+    proto_tree *mtp3_tree;
 
     pref_mtp3_standard = mtp3_standard;
 
@@ -750,10 +744,8 @@ dissect_mtp3(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
        break;
     };
 
-    if (tree) {
        /* create display subtree for the protocol */
        mtp3_tree = proto_item_add_subtree(mtp3_item, ett_mtp3);
-    }
 
     mtp3_addr_opc = (mtp3_addr_pc_t *)wmem_alloc0(pinfo->pool, sizeof(mtp3_addr_pc_t));
     mtp3_addr_dpc = (mtp3_addr_pc_t *)wmem_alloc0(pinfo->pool, sizeof(mtp3_addr_pc_t));
index 97e861d2435a5ef5ccb98ae977cdbc0470290b2d..11cafb6130a1eb7521ab269a245b679d71a78fd8 100644 (file)
@@ -972,8 +972,8 @@ dissect_mtp3mg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
     tvbuff_t *payload_tvb;
 
     /* Set up structures needed to add the protocol subtree and manage it */
-    proto_item *mtp3mg_item = NULL;
-    proto_tree *mtp3mg_tree = NULL;
+    proto_item *mtp3mg_item;
+    proto_tree *mtp3mg_tree;
 
     /* Make entries in Protocol column on summary display */
     switch(mtp3_standard) {
@@ -991,11 +991,9 @@ dissect_mtp3mg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
        break;
       };
 
-    if (tree) {
        /* create display subtree for the protocol */
        mtp3mg_item = proto_tree_add_item(tree, proto_mtp3mg, tvb, 0, -1, ENC_NA);
        mtp3mg_tree = proto_item_add_subtree(mtp3mg_item, ett_mtp3mg);
-    }
 
     /*
      *  Dissect the message
index a7793fb2169390676e815558bfadfc01b1de73e1..0ac249ef0c47678616ad3d6495aead3968dea42b 100644 (file)
@@ -874,8 +874,8 @@ dissect_mux27010(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
             /*If frame has data inside the length_value is > 0*/
             if (cc.length_value > 0) {
                 /*Add another subtree to the control channel subtree => in this subtree the details of control channel values/data will be displayed*/
-                tf_ctr = proto_tree_add_text(field_tree, tvb, offset, cc.length_value, "Data: %i Byte(s)", cc.length_value);
-                field_tree_ctr = proto_item_add_subtree(tf_ctr, ett_mux27010_controlchannelvalue);
+                field_tree_ctr = proto_tree_add_subtree_format(field_tree, tvb, offset, cc.length_value,
+                                ett_mux27010_controlchannelvalue, NULL, "Data: %i Byte(s)", cc.length_value);
 
                 /*Get data of frame*/
                 offset += getControlChannelValues(tvb, field_tree_ctr, offset, &cc, &cc_type);