aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2014-07-06 09:49:27 -0400
committerMichael Mann <mmann78@netscape.net>2014-07-06 14:21:15 +0000
commit6318a29fa367f118994d689e2a6ac2198bc6e582 (patch)
tree613f214038bae0703c5968500264a42030a66aa7 /epan
parentdb530d886ddb0adb0675094d3a4273967f677ee0 (diff)
convert to proto_tree_add_subtree[_format]
Change-Id: Ia2567695ffed30c990eda3740b08bfab101cea96 Reviewed-on: https://code.wireshark.org/review/2883 Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan')
-rw-r--r--epan/dissectors/packet-radius.c12
-rw-r--r--epan/dissectors/packet-radius_packetcable.c3
-rw-r--r--epan/dissectors/packet-redbackli.c14
-rw-r--r--epan/dissectors/packet-rip.c23
-rw-r--r--epan/dissectors/packet-rlc.c6
-rw-r--r--epan/dissectors/packet-rmcp.c7
-rw-r--r--epan/dissectors/packet-rmt-norm.c11
-rw-r--r--epan/dissectors/packet-rohc.c67
-rw-r--r--epan/dissectors/packet-roofnet.c6
-rw-r--r--epan/dissectors/packet-rpc.c95
-rw-r--r--epan/dissectors/packet-rpl.c7
-rw-r--r--epan/dissectors/packet-rsip.c5
-rw-r--r--epan/dissectors/packet-rsl.c200
-rw-r--r--epan/dissectors/packet-rsvp.c346
-rw-r--r--epan/dissectors/packet-rtacser.c3
-rw-r--r--epan/dissectors/packet-rtcp.c64
-rw-r--r--epan/dissectors/packet-rtmpt.c78
-rw-r--r--epan/dissectors/packet-rtp.c21
-rw-r--r--epan/dissectors/packet-rtps.c101
19 files changed, 381 insertions, 688 deletions
diff --git a/epan/dissectors/packet-radius.c b/epan/dissectors/packet-radius.c
index e245175bda..c3d56ab403 100644
--- a/epan/dissectors/packet-radius.c
+++ b/epan/dissectors/packet-radius.c
@@ -897,15 +897,13 @@ void radius_tlv(radius_attr_info_t* a, proto_tree* tree, packet_info *pinfo _U_,
dictionary_entry = &no_dictionary_entry;
}
- tlv_item = proto_tree_add_text(tree, tvb, offset, tlv_length,
- "TLV: l=%u t=%s(%u)", tlv_length,
+ tlv_tree = proto_tree_add_subtree_format(tree, tvb, offset, tlv_length,
+ dictionary_entry->ett, &tlv_item, "TLV: l=%u t=%s(%u)", tlv_length,
dictionary_entry->name, tlv_type);
tlv_length -= 2;
offset += 2;
- tlv_tree = proto_item_add_subtree(tlv_item,dictionary_entry->ett);
-
if (show_length) {
tlv_len_item = proto_tree_add_uint(tlv_tree,
dictionary_entry->hf_len,
@@ -1394,7 +1392,6 @@ dissect_radius(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _
proto_tree *radius_tree = NULL;
proto_tree *avptree = NULL;
proto_item *ti, *hidden_item;
- proto_item *avptf;
guint avplength;
e_radiushdr rh;
radius_info_t *rad_info;
@@ -1714,9 +1711,8 @@ dissect_radius(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _
if (avplength > 0)
{
/* list the attribute value pairs */
- avptf = proto_tree_add_text(radius_tree, tvb, HDR_LENGTH,
- avplength, "Attribute Value Pairs");
- avptree = proto_item_add_subtree(avptf, ett_radius_avp);
+ avptree = proto_tree_add_subtree(radius_tree, tvb, HDR_LENGTH,
+ avplength, ett_radius_avp, NULL, "Attribute Value Pairs");
dissect_attribute_value_pairs(avptree, pinfo, tvb, HDR_LENGTH,
avplength);
}
diff --git a/epan/dissectors/packet-radius_packetcable.c b/epan/dissectors/packet-radius_packetcable.c
index 663486291e..1fa941f9a9 100644
--- a/epan/dissectors/packet-radius_packetcable.c
+++ b/epan/dissectors/packet-radius_packetcable.c
@@ -266,8 +266,7 @@ static const gchar* dissect_packetcable_em_hdr(proto_tree* tree, tvbuff_t* tvb,
proto_tree *obj_tree;
proto_tree_add_item(tree, hf_packetcable_em_header_version_id, tvb, 0, 2, ENC_BIG_ENDIAN);
- ti = proto_tree_add_text(tree, tvb, 2, 24, "BCID");
- obj_tree = proto_item_add_subtree(ti, ett_radius_vendor_packetcable_bcid);
+ obj_tree = proto_tree_add_subtree(tree, tvb, 2, 24, ett_radius_vendor_packetcable_bcid, NULL, "BCID");
decode_packetcable_bcid(tvb, obj_tree, 2);
proto_tree_add_item(tree, hf_packetcable_em_header_event_message_type, tvb, 26, 2, ENC_BIG_ENDIAN);
diff --git a/epan/dissectors/packet-redbackli.c b/epan/dissectors/packet-redbackli.c
index 24477ba837..f32bb0c121 100644
--- a/epan/dissectors/packet-redbackli.c
+++ b/epan/dissectors/packet-redbackli.c
@@ -72,12 +72,11 @@ static void
redbackli_dissect_avp(guint8 avptype, guint8 avplen, tvbuff_t *tvb, gint offset, proto_tree *tree)
{
const char *avpname;
- proto_tree *ti, *st = NULL;
+ proto_tree *st = NULL;
avpname = val_to_str_const(avptype, avp_names, "Unknown");
- ti = proto_tree_add_text(tree, tvb, offset, avplen+2, "%s AVP", avpname);
- st = proto_item_add_subtree(ti, ett_redbackli);
+ st = proto_tree_add_subtree_format(tree, tvb, offset, avplen+2, ett_redbackli, NULL, "%s AVP", avpname);
proto_tree_add_text(st, tvb, offset, 1, "AVP Type: %d", avptype);
proto_tree_add_text(st, tvb, offset+1, 1, "AVP Length: %d", avplen);
@@ -135,16 +134,15 @@ redbackli_dissect(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
guint8 avptype, avplen;
gint len, offset = 0;
gboolean eoh;
- proto_tree *ti, *redbackli_tree = NULL;
+ proto_item *ti;
+ proto_tree *redbackli_tree = NULL;
tvbuff_t *next_tvb;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "RBLI");
- if (tree) {
- ti = proto_tree_add_item(tree, proto_redbackli,
+ ti = proto_tree_add_item(tree, proto_redbackli,
tvb, 0, -1, ENC_NA);
- redbackli_tree = proto_item_add_subtree(ti, ett_redbackli);
- }
+ redbackli_tree = proto_item_add_subtree(ti, ett_redbackli);
len = tvb_length(tvb);
offset = 0;
diff --git a/epan/dissectors/packet-rip.c b/epan/dissectors/packet-rip.c
index 84e047fd56..855a895e48 100644
--- a/epan/dissectors/packet-rip.c
+++ b/epan/dissectors/packet-rip.c
@@ -222,15 +222,13 @@ static void
dissect_unspec_rip_vektor(tvbuff_t *tvb, int offset, guint8 version,
proto_tree *tree)
{
- proto_item *ti;
proto_tree *rip_vektor_tree;
guint32 metric;
metric = tvb_get_ntohl(tvb, offset+16);
- ti = proto_tree_add_text(tree, tvb, offset,
- RIP_ENTRY_LENGTH, "Address not specified, Metric: %u",
+ rip_vektor_tree = proto_tree_add_subtree_format(tree, tvb, offset,
+ RIP_ENTRY_LENGTH, ett_rip_vec, NULL, "Address not specified, Metric: %u",
metric);
- rip_vektor_tree = proto_item_add_subtree(ti, ett_rip_vec);
proto_tree_add_item(rip_vektor_tree, &hfi_rip_family, tvb, offset, 2, ENC_BIG_ENDIAN);
if (version == RIPv2) {
@@ -249,15 +247,13 @@ static void
dissect_ip_rip_vektor(tvbuff_t *tvb, int offset, guint8 version,
proto_tree *tree)
{
- proto_item *ti;
proto_tree *rip_vektor_tree;
guint32 metric;
metric = tvb_get_ntohl(tvb, offset+16);
- ti = proto_tree_add_text(tree, tvb, offset,
- RIP_ENTRY_LENGTH, "IP Address: %s, Metric: %u",
+ rip_vektor_tree = proto_tree_add_subtree_format(tree, tvb, offset,
+ RIP_ENTRY_LENGTH, ett_rip_vec, NULL, "IP Address: %s, Metric: %u",
tvb_ip_to_str(tvb, offset+4), metric);
- rip_vektor_tree = proto_item_add_subtree(ti, ett_rip_vec);
proto_tree_add_item(rip_vektor_tree, &hfi_rip_family, tvb, offset, 2, ENC_BIG_ENDIAN);
if (version == RIPv2) {
@@ -280,7 +276,6 @@ dissect_ip_rip_vektor(tvbuff_t *tvb, int offset, guint8 version,
static gint
dissect_rip_authentication(tvbuff_t *tvb, int offset, proto_tree *tree)
{
- proto_item *ti;
proto_tree *rip_authentication_tree;
guint16 authtype;
guint32 val, digest_off, auth_data_len;
@@ -288,9 +283,8 @@ dissect_rip_authentication(tvbuff_t *tvb, int offset, proto_tree *tree)
auth_data_len = 0;
authtype = tvb_get_ntohs(tvb, offset + 2);
- ti = proto_tree_add_text(tree, tvb, offset, RIP_ENTRY_LENGTH,
- "Authentication: %s", val_to_str( authtype, rip_auth_type, "Unknown (%u)" ) );
- rip_authentication_tree = proto_item_add_subtree(ti, ett_rip_vec);
+ rip_authentication_tree = proto_tree_add_subtree_format(tree, tvb, offset, RIP_ENTRY_LENGTH,
+ ett_rip_vec, NULL, "Authentication: %s", val_to_str( authtype, rip_auth_type, "Unknown (%u)" ) );
proto_tree_add_uint(rip_authentication_tree, &hfi_rip_auth, tvb, offset+2, 2,
authtype);
@@ -317,9 +311,8 @@ dissect_rip_authentication(tvbuff_t *tvb, int offset, proto_tree *tree)
"Seq num: %u" , val );
proto_tree_add_text( rip_authentication_tree, tvb, offset+12, 8,
"Zero Padding" );
- ti = proto_tree_add_text( rip_authentication_tree, tvb, offset-4+digest_off,
- MD5_AUTH_DATA_LEN+4, "Authentication Data Trailer" );
- rip_authentication_tree = proto_item_add_subtree(ti, ett_auth_vec );
+ rip_authentication_tree = proto_tree_add_subtree( rip_authentication_tree, tvb, offset-4+digest_off,
+ MD5_AUTH_DATA_LEN+4, ett_auth_vec, NULL, "Authentication Data Trailer" );
proto_tree_add_text( rip_authentication_tree, tvb, offset-4+digest_off+4,
MD5_AUTH_DATA_LEN, "Authentication Data: %s",
tvb_bytes_to_ep_str_punct(tvb, offset-4+digest_off+4,
diff --git a/epan/dissectors/packet-rlc.c b/epan/dissectors/packet-rlc.c
index 993210b6cf..be0690f17f 100644
--- a/epan/dissectors/packet-rlc.c
+++ b/epan/dissectors/packet-rlc.c
@@ -2006,10 +2006,9 @@ dissect_rlc_status(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guin
proto_tree_add_bits_ret_val(sufi_tree, hf_rlc_sufi_fsn, tvb, bit_offset, 12, &sn, ENC_BIG_ENDIAN);
bit_offset += 12;
proto_tree_add_item(sufi_tree, hf_rlc_sufi_bitmap, tvb, bit_offset/8, (gint)len, ENC_NA);
- ti = proto_tree_add_text(sufi_tree, tvb, bit_offset/8, (gint)len, "Decoded bitmap:");
+ bitmap_tree = proto_tree_add_subtree(sufi_tree, tvb, bit_offset/8, (gint)len, ett_rlc_bitmap, &ti, "Decoded bitmap:");
col_append_str(pinfo->cinfo, COL_INFO, " BITMAP=(");
- bitmap_tree = proto_item_add_subtree(ti, ett_rlc_bitmap);
buff = (gchar *)wmem_alloc(wmem_packet_scope(), BUFF_SIZE);
for (i=0; i<len; i++) {
bits = tvb_get_bits8(tvb, bit_offset, 8);
@@ -2047,8 +2046,7 @@ dissect_rlc_status(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guin
if (len && (((cw[len-1] & 0x01) == 0) || (cw[len-1] == 0x01))) {
expert_add_info(pinfo, tree, &ei_rlc_sufi_cw);
} else {
- ti = proto_tree_add_text(sufi_tree, tvb, previous_bit_offset/8, (bit_offset-previous_bit_offset)/8, "Decoded list:");
- rlist_tree = proto_item_add_subtree(ti, ett_rlc_rlist);
+ rlist_tree = proto_tree_add_subtree(sufi_tree, tvb, previous_bit_offset/8, (bit_offset-previous_bit_offset)/8, ett_rlc_rlist, NULL, "Decoded list:");
proto_tree_add_text(rlist_tree, tvb, (previous_bit_offset+4)/8, 12/8,
"Sequence Number = %u (AMD PDU not correctly received)",(unsigned)sn);
col_append_fstr(pinfo->cinfo, COL_INFO, " RLIST=(%u", (unsigned)sn);
diff --git a/epan/dissectors/packet-rmcp.c b/epan/dissectors/packet-rmcp.c
index 1928c90b90..72882bf233 100644
--- a/epan/dissectors/packet-rmcp.c
+++ b/epan/dissectors/packet-rmcp.c
@@ -88,7 +88,7 @@ static int
dissect_rmcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
{
proto_tree *rmcp_tree = NULL, *field_tree;
- proto_item *ti, *tf;
+ proto_item *ti;
tvbuff_t *next_tvb;
guint8 rmcp_class;
const gchar *class_str;
@@ -125,12 +125,11 @@ dissect_rmcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_
proto_tree_add_item(rmcp_tree, hf_rmcp_version, tvb, 0, 1, ENC_LITTLE_ENDIAN);
proto_tree_add_item(rmcp_tree, hf_rmcp_sequence, tvb, 2, 1, ENC_LITTLE_ENDIAN);
- tf = proto_tree_add_text(rmcp_tree, tvb, 3, 1, "Type: %s, Class: %s",
+ field_tree = proto_tree_add_subtree_format(rmcp_tree, tvb, 3, 1,
+ ett_rmcp_typeclass, NULL, "Type: %s, Class: %s",
val_to_str(type, rmcp_type_vals, "Unknown (0x%02x)"),
class_str);
- field_tree = proto_item_add_subtree(tf, ett_rmcp_typeclass);
-
proto_tree_add_item(field_tree, hf_rmcp_class, tvb, 3, 1, ENC_LITTLE_ENDIAN);
proto_tree_add_item(field_tree, hf_rmcp_type, tvb, 3, 1, ENC_LITTLE_ENDIAN);
}
diff --git a/epan/dissectors/packet-rmt-norm.c b/epan/dissectors/packet-rmt-norm.c
index 255e8c988f..08805abec4 100644
--- a/epan/dissectors/packet-rmt-norm.c
+++ b/epan/dissectors/packet-rmt-norm.c
@@ -306,8 +306,7 @@ static guint dissect_nack_data(proto_tree *tree, tvbuff_t *tvb, guint offset,
proto_tree *nack_tree, *flag_tree;
guint16 len;
- ti = proto_tree_add_text(tree, tvb, offset, -1, "NACK Data");
- nack_tree = proto_item_add_subtree(ti, ett_nackdata);
+ nack_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_nackdata, &ti, "NACK Data");
proto_tree_add_item(nack_tree, hf_nack_form, tvb, offset, 1, ENC_BIG_ENDIAN); offset += 1;
tif = proto_tree_add_item(nack_tree, hf_nack_flags, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -355,8 +354,7 @@ static void dissect_norm_data(proto_tree *tree, packet_info *pinfo,
offset = dissect_norm_hdrext(tree, pinfo, tvb, offset, hlen);
}
if (flags & NORM_FLAG_STREAM) {
- ti = proto_tree_add_text(tree, tvb, offset, 8, "Stream Data");
- flag_tree = proto_item_add_subtree(ti, ett_streampayload);
+ flag_tree = proto_tree_add_subtree(tree, tvb, offset, 8, ett_streampayload, NULL, "Stream Data");
proto_tree_add_item(flag_tree, hf_reserved, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2;
proto_tree_add_item(flag_tree, hf_payload_len, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2;
proto_tree_add_item(flag_tree, hf_payload_offset, tvb, offset, 4, ENC_BIG_ENDIAN); offset += 4;
@@ -442,11 +440,10 @@ static guint dissect_norm_cmd_cc(proto_tree *tree, packet_info *pinfo,
offset = dissect_norm_hdrext(tree, pinfo, tvb, offset, hlen);
}
while (offset < hdrlen2bytes(hlen)) {
- proto_item *ti, *tif;
+ proto_item *tif;
proto_tree *cc_tree, *flag_tree;
double grtt;
- ti = proto_tree_add_text(tree, tvb, offset, 8, "Congestion Control");
- cc_tree = proto_item_add_subtree(ti, ett_congestioncontrol);
+ cc_tree = proto_tree_add_subtree(tree, tvb, offset, 8, ett_congestioncontrol, NULL, "Congestion Control");
proto_tree_add_item(cc_tree, hf_cc_node_id, tvb, offset, 4, ENC_BIG_ENDIAN); offset += 4;
tif = proto_tree_add_item(cc_tree, hf_cc_flags, tvb, offset, 1, ENC_BIG_ENDIAN);
flag_tree = proto_item_add_subtree(tif, ett_flags);
diff --git a/epan/dissectors/packet-rohc.c b/epan/dissectors/packet-rohc.c
index 7579a535b6..d1fb39c10b 100644
--- a/epan/dissectors/packet-rohc.c
+++ b/epan/dissectors/packet-rohc.c
@@ -328,7 +328,6 @@ dissect_rohc_pkt_type_0(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
{
guint8 val_len = 0;
guint64 sn;
- proto_item *ti;
proto_tree *pkt_tree;
switch(rohc_cid_context->mode){
@@ -346,8 +345,7 @@ dissect_rohc_pkt_type_0(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
get_self_describing_var_len_val(tvb, tree, offset+1, hf_rohc_large_cid, &val_len);
}
col_set_str(pinfo->cinfo, COL_INFO, "R-0");
- ti = proto_tree_add_text(tree, tvb, offset, 1+val_len, "R-0 packet");
- pkt_tree = proto_item_add_subtree(ti, ett_rohc_packet);
+ pkt_tree = proto_tree_add_subtree(tree, tvb, offset, 1+val_len, ett_rohc_packet, NULL, "R-0 packet");
sn = tvb_get_bits8(tvb,(offset<<3)+2, 6);
proto_tree_add_bits_item(pkt_tree, hf_rohc_comp_sn, tvb, (offset<<3)+2, 6, ENC_BIG_ENDIAN);
offset += 1 + val_len;
@@ -374,8 +372,7 @@ dissect_rohc_pkt_type_0(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
rohc_sn_crumbs[1].crumb_bit_offset += val_len*8;
}
col_set_str(pinfo->cinfo, COL_INFO, "R-0-CRC");
- ti = proto_tree_add_text(tree, tvb, offset, 2+val_len, "R-0-CRC packet");
- pkt_tree = proto_item_add_subtree(ti, ett_rohc_packet);
+ pkt_tree = proto_tree_add_subtree(tree, tvb, offset, 2+val_len, ett_rohc_packet, NULL, "R-0-CRC packet");
proto_tree_add_split_bits_item_ret_val(pkt_tree, hf_rohc_comp_sn, tvb, (offset<<3),
rohc_sn_crumbs, &sn);
offset += 1 + val_len;
@@ -400,8 +397,7 @@ dissect_rohc_pkt_type_0(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
get_self_describing_var_len_val(tvb, tree, offset+1, hf_rohc_large_cid, &val_len);
}
col_set_str(pinfo->cinfo, COL_INFO, "UO-0");
- ti = proto_tree_add_text(tree, tvb, offset, 1+val_len, "UO-0 packet");
- pkt_tree = proto_item_add_subtree(ti, ett_rohc_packet);
+ pkt_tree = proto_tree_add_subtree(tree, tvb, offset, 1+val_len, ett_rohc_packet, NULL, "UO-0 packet");
sn = tvb_get_bits8(tvb,(offset<<3)+1, 4);
proto_tree_add_bits_item(pkt_tree, hf_rohc_comp_sn, tvb, (offset<<3)+1, 4, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(pkt_tree, hf_rohc_r_0_crc, tvb, (offset<<3)+5, 3, ENC_BIG_ENDIAN);
@@ -538,8 +534,7 @@ dissect_rohc_pkt_type_1_r_mode(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tr
* +---+---+---+---+---+---+---+---+
*/
col_set_str(pinfo->cinfo, COL_INFO, "R-1");
- ti = proto_tree_add_text(tree, tvb, offset, -1, "R-1 packet");
- pkt_tree = proto_item_add_subtree(ti, ett_rohc_packet);
+ pkt_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_rohc_packet, &ti, "R-1 packet");
sn = tvb_get_bits8(tvb, (offset<<3)+2, 6);
proto_tree_add_bits_item(pkt_tree, hf_rohc_comp_sn, tvb, (offset<<3)+2, 6, ENC_BIG_ENDIAN);
offset += 1 + val_len;
@@ -569,8 +564,7 @@ dissect_rohc_pkt_type_1_r_mode(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tr
* +---+---+---+---+---+---+---+---+
*/
col_set_str(pinfo->cinfo, COL_INFO, "R-1-ID");
- ti = proto_tree_add_text(tree, tvb, offset, -1, "R-1-ID packet");
- pkt_tree = proto_item_add_subtree(ti, ett_rohc_packet);
+ pkt_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_rohc_packet, &ti, "R-1-ID packet");
} else {
/* R-1-TS
*
@@ -582,8 +576,7 @@ dissect_rohc_pkt_type_1_r_mode(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tr
* +---+---+---+---+---+---+---+---+
*/
col_set_str(pinfo->cinfo, COL_INFO, "R-1-TS");
- ti = proto_tree_add_text(tree, tvb, offset, -1, "R-1-TS packet");
- pkt_tree = proto_item_add_subtree(ti, ett_rohc_packet);
+ pkt_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_rohc_packet, &ti, "R-1-TS packet");
}
sn = tvb_get_bits8(tvb, (offset<<3)+2, 6);
proto_tree_add_bits_item(pkt_tree, hf_rohc_comp_sn, tvb, (offset<<3)+2, 6, ENC_BIG_ENDIAN);
@@ -645,8 +638,7 @@ dissect_rohc_pkt_type_1_u_o_mode(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
* +---+---+---+---+---+---+---+---+
*/
col_set_str(pinfo->cinfo, COL_INFO, "UO-1");
- ti = proto_tree_add_text(tree, tvb, offset, -1, "UO-1 packet");
- pkt_tree = proto_item_add_subtree(ti, ett_rohc_packet);
+ pkt_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_rohc_packet, &ti, "UO-1 packet");
if (rohc_cid_context->profile == ROHC_PROFILE_UDP) {
proto_tree_add_bits_item(pkt_tree, hf_rohc_comp_ip_id, tvb, (offset<<3)+2, 6, ENC_BIG_ENDIAN);
offset += 1 + val_len;
@@ -676,8 +668,7 @@ dissect_rohc_pkt_type_1_u_o_mode(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
* +---+---+---+---+---+---+---+---+
*/
col_set_str(pinfo->cinfo, COL_INFO, "UO-1-ID");
- ti = proto_tree_add_text(tree, tvb, offset, -1, "UO-1-ID packet");
- pkt_tree = proto_item_add_subtree(ti, ett_rohc_packet);
+ pkt_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_rohc_packet, &ti, "UO-1-ID packet");
proto_tree_add_bits_item(pkt_tree, hf_rohc_t, tvb, (offset<<3)+2, 1, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(pkt_tree, hf_rohc_comp_ip_id, tvb, (offset<<3)+3, 5, ENC_BIG_ENDIAN);
offset += 1 + val_len;
@@ -694,8 +685,7 @@ dissect_rohc_pkt_type_1_u_o_mode(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
* +---+---+---+---+---+---+---+---+
*/
col_set_str(pinfo->cinfo, COL_INFO, "UO-1-TS");
- ti = proto_tree_add_text(tree, tvb, offset, -1, "UO-1-TS packet");
- pkt_tree = proto_item_add_subtree(ti, ett_rohc_packet);
+ pkt_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_rohc_packet, &ti, "UO-1-TS packet");
proto_tree_add_bits_item(pkt_tree, hf_rohc_t, tvb, (offset<<3)+2, 1, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(pkt_tree, hf_rohc_ts, tvb, (offset<<3)+3, 5, ENC_BIG_ENDIAN);
offset += 1 + val_len;
@@ -754,8 +744,7 @@ dissect_rohc_pkt_type_2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
* +---+---+---+---+---+---+---+---+
*/
col_set_str(pinfo->cinfo, COL_INFO, "UOR-2");
- ti = proto_tree_add_text(tree, tvb, offset, -1, "UOR-2 packet");
- pkt_tree = proto_item_add_subtree(ti, ett_rohc_packet);
+ pkt_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_rohc_packet, &ti, "UOR-2 packet");
if (rohc_cid_context->profile == ROHC_PROFILE_UDP) {
sn = tvb_get_bits8(tvb, (offset<<3)+3, 5);
proto_tree_add_bits_item(pkt_tree, hf_rohc_comp_sn, tvb, (offset<<3)+3, 5, ENC_BIG_ENDIAN);
@@ -798,8 +787,7 @@ dissect_rohc_pkt_type_2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
* +---+---+---+---+---+---+---+---+
*/
col_set_str(pinfo->cinfo, COL_INFO, "UOR-2-ID");
- ti = proto_tree_add_text(tree, tvb, offset, -1, "UOR-2-ID packet");
- pkt_tree = proto_item_add_subtree(ti, ett_rohc_packet);
+ pkt_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_rohc_packet, &ti, "UOR-2-ID packet");
proto_tree_add_bits_item(pkt_tree, hf_rohc_comp_ip_id, tvb, (offset<<3)+3, 5, ENC_BIG_ENDIAN);
} else {
/* UOR-2-TS
@@ -814,8 +802,7 @@ dissect_rohc_pkt_type_2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
* +---+---+---+---+---+---+---+---+
*/
col_set_str(pinfo->cinfo, COL_INFO, "UOR-2-TS");
- ti = proto_tree_add_text(tree, tvb, offset, -1, "UOR-2-TS packet");
- pkt_tree = proto_item_add_subtree(ti, ett_rohc_packet);
+ pkt_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_rohc_packet, &ti, "UOR-2-TS packet");
proto_tree_add_bits_item(pkt_tree, hf_rohc_ts, tvb, (offset<<3)+3, 5, ENC_BIG_ENDIAN);
}
offset += 1 + val_len;
@@ -918,9 +905,9 @@ dissect_rohc_feedback_data(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
break;
case ROHC_PROFILE_RTP: /* 1 */
case ROHC_PROFILE_UDP: /* 2 */
- ti = proto_tree_add_text(tree, tvb, offset, feedback_data_len, "%s profile-specific information",
+ rohc_feedback_tree = proto_tree_add_subtree_format(tree, tvb, offset, feedback_data_len, ett_rohc_feedback, NULL,
+ "%s profile-specific information",
(rohc_cid_context->profile == ROHC_PROFILE_RTP) ? "RTP" : "UDP");
- rohc_feedback_tree = proto_item_add_subtree(ti, ett_rohc_feedback);
/* Set mode at first pass? Do we need a new context for the following frames?
*
*/
@@ -999,8 +986,8 @@ dissect_rohc_feedback_data(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
col_append_fstr(pinfo->cinfo, COL_INFO, " (sn=%u)", sn);
break;
default:
- ti = proto_tree_add_text(tree, tvb, offset, feedback_data_len, "profile-specific information[Not dissected yet]");
- rohc_feedback_tree = proto_item_add_subtree(ti, ett_rohc_feedback);
+ rohc_feedback_tree = proto_tree_add_subtree(tree, tvb, offset, feedback_data_len,
+ ett_rohc_feedback, NULL, "profile-specific information[Not dissected yet]");
proto_tree_add_item(rohc_feedback_tree, hf_rohc_acktype, tvb, offset, 1, ENC_BIG_ENDIAN);
break;
}
@@ -1355,19 +1342,19 @@ dissect_rohc_ir_rtp_profile_dynamic(tvbuff_t *tvb, packet_info *pinfo, proto_tre
switch(profile){
case ROHC_PROFILE_UNCOMPRESSED:
- item = proto_tree_add_text(tree, tvb, offset, 0, "Profile 0x0000 Uncompressed");
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_rohc_rtp_dynamic, &item, "Profile 0x0000 Uncompressed");
break;
case ROHC_PROFILE_RTP:
- item = proto_tree_add_text(tree, tvb, offset, 0, "Profile 0x0001 RTP Dynamic Chain");
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_rohc_rtp_dynamic, &item, "Profile 0x0001 RTP Dynamic Chain");
break;
case ROHC_PROFILE_UDP:
- item = proto_tree_add_text(tree, tvb, offset, 0, "Profile 0x0002 UDP Dynamic Chain");
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_rohc_rtp_dynamic, &item, "Profile 0x0002 UDP Dynamic Chain");
break;
case ROHC_PROFILE_IP:
- item = proto_tree_add_text(tree, tvb, offset, 0, "Profile 0x0004 IP Dynamic Chain");
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_rohc_rtp_dynamic, &item, "Profile 0x0004 IP Dynamic Chain");
break;
default:
@@ -1378,7 +1365,6 @@ dissect_rohc_ir_rtp_profile_dynamic(tvbuff_t *tvb, packet_info *pinfo, proto_tre
/* IP dynamic*/
/* for all profiles except uncompressed */
if ( (profile != ROHC_PROFILE_UNCOMPRESSED) ) {
- sub_tree = proto_item_add_subtree(item, ett_rohc_rtp_dynamic);
switch(rohc_cid_context->rohc_ip_version){
case 4:
/* 5.7.7.4. Initialization of IPv4 Header [IPv4, section 3.1].
@@ -1597,19 +1583,19 @@ dissect_rohc_ir_rtp_udp_ip_profile_static(tvbuff_t *tvb, proto_tree *tree, packe
switch(profile){
case ROHC_PROFILE_UNCOMPRESSED:
- item = proto_tree_add_text(tree, tvb, offset, 0, "Profile 0x0000 Uncompressed");
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_rohc_rtp_static, &item, "Profile 0x0000 Uncompressed");
break;
case ROHC_PROFILE_RTP:
- item = proto_tree_add_text(tree, tvb, offset, 0, "Profile 0x0001 RTP Static Chain");
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_rohc_rtp_static, &item, "Profile 0x0001 RTP Static Chain");
break;
case ROHC_PROFILE_UDP:
- item = proto_tree_add_text(tree, tvb, offset, 0, "Profile 0x0002 UDP Static Chain");
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_rohc_rtp_static, &item, "Profile 0x0002 UDP Static Chain");
break;
case ROHC_PROFILE_IP:
- item = proto_tree_add_text(tree, tvb, offset, 0, "Profile 0x0004 IP Static Chain");
+ sub_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_rohc_rtp_static, &item, "Profile 0x0004 IP Static Chain");
break;
default:
@@ -1620,7 +1606,6 @@ dissect_rohc_ir_rtp_udp_ip_profile_static(tvbuff_t *tvb, proto_tree *tree, packe
/* IP static*/
/* for all profiles except uncompressed */
if (profile != ROHC_PROFILE_UNCOMPRESSED) {
- sub_tree = proto_item_add_subtree(item, ett_rohc_rtp_static);
version = tvb_get_guint8(tvb,offset)>>4;
proto_tree_add_item(sub_tree, hf_rohc_ip_version, tvb, offset, 1, ENC_BIG_ENDIAN);
rohc_cid_context->rohc_ip_version = version;
@@ -2089,8 +2074,8 @@ dissect_rohc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
*/
/* Put configuration data into the tree */
- item = proto_tree_add_text(rohc_tree, tvb, offset, 0, "Global Configuration: (%s)", p_rohc_info->large_cid_present ? "Large CID" : "Small CID");
- conf_tree = proto_item_add_subtree(item, ett_rohc_conf);
+ conf_tree = proto_tree_add_subtree_format(rohc_tree, tvb, offset, 0, ett_rohc_conf, &item,
+ "Global Configuration: (%s)", p_rohc_info->large_cid_present ? "Large CID" : "Small CID");
PROTO_ITEM_SET_GENERATED(item);
rohc_cid_context = (rohc_cid_context_t*)p_get_proto_data(wmem_file_scope(), pinfo, proto_rohc, 0);
if(rohc_cid_context){
diff --git a/epan/dissectors/packet-roofnet.c b/epan/dissectors/packet-roofnet.c
index 1f642777d6..f8ac520b5a 100644
--- a/epan/dissectors/packet-roofnet.c
+++ b/epan/dissectors/packet-roofnet.c
@@ -132,7 +132,6 @@ static void dissect_roofnet_header(proto_tree *tree, tvbuff_t *tvb, guint *offse
*/
static void dissect_roofnet_link(proto_tree *tree, tvbuff_t *tvb, guint *offset, guint link)
{
- proto_item *it= NULL;
proto_tree *subtree= NULL;
ptvcursor_t *cursor= NULL;
@@ -143,12 +142,11 @@ static void dissect_roofnet_link(proto_tree *tree, tvbuff_t *tvb, guint *offset,
addr_src= tvb_get_ipv4(tvb, *offset + ROOFNET_LINK_OFFSET_SRC);
addr_dst= tvb_get_ipv4(tvb, *offset + ROOFNET_LINK_OFFSET_DST);
- it = proto_tree_add_text(tree, tvb, *offset, ROOFNET_LINK_LEN,
- "link: %u, src: %s, dst: %s",
+ subtree = proto_tree_add_subtree_format(tree, tvb, *offset, ROOFNET_LINK_LEN,
+ ett_roofnet_link, NULL, "link: %u, src: %s, dst: %s",
link,
get_hostname(addr_src),
get_hostname(addr_dst));
- subtree= proto_item_add_subtree(it, ett_roofnet_link);
proto_tree_add_ipv4(subtree, hf_roofnet_link_src, tvb, *offset, 4, addr_src);
*offset += 4;
diff --git a/epan/dissectors/packet-rpc.c b/epan/dissectors/packet-rpc.c
index 8b16754071..39b7471cf3 100644
--- a/epan/dissectors/packet-rpc.c
+++ b/epan/dissectors/packet-rpc.c
@@ -673,15 +673,12 @@ dissect_rpc_opaque_data(tvbuff_t *tvb, int offset,
if (tree) {
/* string_item_offset = offset; */
- string_item = proto_tree_add_text(tree, tvb,offset, -1,
- "%s: %s", proto_registrar_get_name(hfindex),
+ string_tree = proto_tree_add_subtree_format(tree, tvb,offset, -1,
+ ett_rpc_string, &string_item, "%s: %s", proto_registrar_get_name(hfindex),
string_buffer_print);
- string_tree = proto_item_add_subtree(string_item,
- ett_rpc_string);
}
if (!fixed_length) {
- if (string_tree)
- proto_tree_add_text(string_tree, tvb,offset,4,
+ proto_tree_add_text(string_tree, tvb,offset,4,
"length: %u", string_length);
offset += 4;
}
@@ -833,11 +830,8 @@ dissect_rpc_authunix_groups(tvbuff_t* tvb, proto_tree* tree, int offset)
proto_tree *gtree = NULL;
gids_count = tvb_get_ntohl(tvb,offset);
- if (tree) {
- gitem = proto_tree_add_text(tree, tvb, offset,
- 4+gids_count*4, "Auxiliary GIDs (%d)", gids_count);
- gtree = proto_item_add_subtree(gitem, ett_rpc_gids);
- }
+ gtree = proto_tree_add_subtree_format(tree, tvb, offset,
+ 4+gids_count*4, ett_rpc_gids, &gitem, "Auxiliary GIDs (%d)", gids_count);
offset += 4;
/* first, open with [ */
@@ -920,11 +914,8 @@ dissect_rpc_authgss_context(proto_tree *tree, tvbuff_t *tvb, int offset,
wmem_tree_key_t tkey[2];
guint32 key[4] = {0,0,0,0};
- context_item = proto_tree_add_text(tree, tvb, offset, -1,
- "GSS Context");
-
- context_tree = proto_item_add_subtree(context_item,
- ett_gss_context);
+ context_tree = proto_tree_add_subtree(tree, tvb, offset, -1,
+ ett_gss_context, &context_item, "GSS Context");
context_length = tvb_get_ntohl(tvb, offset);
proto_tree_add_item(context_tree, hf_rpc_authgss_ctx_len, tvb, offset, 4, ENC_BIG_ENDIAN);
@@ -1137,7 +1128,6 @@ dissect_rpc_cred(tvbuff_t* tvb, proto_tree* tree, int offset,
guint flavor;
guint length;
- proto_item *citem;
proto_tree *ctree;
flavor = tvb_get_ntohl(tvb,offset);
@@ -1145,9 +1135,8 @@ dissect_rpc_cred(tvbuff_t* tvb, proto_tree* tree, int offset,
length = rpc_roundup(length);
if (tree) {
- citem = proto_tree_add_text(tree, tvb, offset,
- 8+length, "Credentials");
- ctree = proto_item_add_subtree(citem, ett_rpc_cred);
+ ctree = proto_tree_add_subtree(tree, tvb, offset,
+ 8+length, ett_rpc_cred, NULL, "Credentials");
proto_tree_add_uint(ctree, hf_rpc_auth_flavor, tvb,
offset, 4, flavor);
proto_tree_add_uint(ctree, hf_rpc_auth_length, tvb,
@@ -1248,7 +1237,6 @@ dissect_rpc_verf(tvbuff_t* tvb, proto_tree* tree, int offset, int msg_type,
guint flavor;
guint length;
- proto_item *vitem;
proto_tree *vtree;
flavor = tvb_get_ntohl(tvb,offset);
@@ -1256,9 +1244,8 @@ dissect_rpc_verf(tvbuff_t* tvb, proto_tree* tree, int offset, int msg_type,
length = rpc_roundup(length);
if (tree) {
- vitem = proto_tree_add_text(tree, tvb, offset,
- 8+length, "Verifier");
- vtree = proto_item_add_subtree(vitem, ett_rpc_verf);
+ vtree = proto_tree_add_subtree(tree, tvb, offset,
+ 8+length, ett_rpc_verf, NULL, "Verifier");
proto_tree_add_uint(vtree, hf_rpc_auth_flavor, tvb,
offset, 4, flavor);
@@ -1351,19 +1338,14 @@ dissect_rpc_authgssapi_initarg(tvbuff_t* tvb, proto_tree* tree, int offset,
packet_info *pinfo)
{
guint version;
- proto_item *mitem;
- proto_tree *mtree = NULL;
+ proto_tree *mtree;
+
+ mtree = proto_tree_add_subtree(tree, tvb, offset, -1,
+ ett_rpc_authgssapi_msg, NULL, "AUTH_GSSAPI Msg");
- if (tree) {
- mitem = proto_tree_add_text(tree, tvb, offset, -1,
- "AUTH_GSSAPI Msg");
- mtree = proto_item_add_subtree(mitem, ett_rpc_authgssapi_msg);
- }
version = tvb_get_ntohl(tvb, offset);
- if (mtree) {
- proto_tree_add_uint(mtree, hf_rpc_authgssapi_msgv, tvb,
- offset, 4, version);
- }
+
+ proto_tree_add_uint(mtree, hf_rpc_authgssapi_msgv, tvb, offset, 4, version);
offset += 4;
offset = dissect_rpc_authgss_token(tvb, mtree, offset, pinfo, hf_rpc_authgss_token);
@@ -1377,37 +1359,27 @@ dissect_rpc_authgssapi_initres(tvbuff_t* tvb, proto_tree* tree, int offset,
{
guint version;
guint major, minor;
- proto_item *mitem;
- proto_tree *mtree = NULL;
+ proto_tree *mtree;
- if (tree) {
- mitem = proto_tree_add_text(tree, tvb, offset, -1,
- "AUTH_GSSAPI Msg");
- mtree = proto_item_add_subtree(mitem, ett_rpc_authgssapi_msg);
- }
+ mtree = proto_tree_add_subtree(tree, tvb, offset, -1,
+ ett_rpc_authgssapi_msg, NULL, "AUTH_GSSAPI Msg");
version = tvb_get_ntohl(tvb,offset);
- if (mtree) {
- proto_tree_add_uint(mtree, hf_rpc_authgssapi_msgv, tvb,
+ proto_tree_add_uint(mtree, hf_rpc_authgssapi_msgv, tvb,
offset, 4, version);
- }
offset += 4;
offset = dissect_rpc_data(tvb, mtree, hf_rpc_authgssapi_handle,
offset);
major = tvb_get_ntohl(tvb,offset);
- if (mtree) {
- proto_tree_add_uint(mtree, hf_rpc_authgss_major, tvb,
+ proto_tree_add_uint(mtree, hf_rpc_authgss_major, tvb,
offset, 4, major);
- }
offset += 4;
minor = tvb_get_ntohl(tvb,offset);
- if (mtree) {
- proto_tree_add_uint(mtree, hf_rpc_authgss_minor, tvb,
+ proto_tree_add_uint(mtree, hf_rpc_authgss_minor, tvb,
offset, 4, minor);
- }
offset += 4;
offset = dissect_rpc_authgss_token(tvb, mtree, offset, pinfo, hf_rpc_authgss_token);
@@ -1458,16 +1430,14 @@ dissect_rpc_authgss_integ_data(tvbuff_t *tvb, packet_info *pinfo,
{
guint32 length, rounded_length, seq;
- proto_item *gitem;
- proto_tree *gtree = NULL;
+ proto_tree *gtree;
length = tvb_get_ntohl(tvb, offset);
rounded_length = rpc_roundup(length);
seq = tvb_get_ntohl(tvb, offset+4);
- gitem = proto_tree_add_text(tree, tvb, offset,
- 4+rounded_length, "GSS Data");
- gtree = proto_item_add_subtree(gitem, ett_rpc_gss_data);
+ gtree = proto_tree_add_subtree(tree, tvb, offset,
+ 4+rounded_length, ett_rpc_gss_data, NULL, "GSS Data");
proto_tree_add_uint(gtree, hf_rpc_authgss_data_length,
tvb, offset, 4, length);
proto_tree_add_uint(gtree, hf_rpc_authgss_seq,
@@ -1825,8 +1795,7 @@ dissect_rpc_continuation(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
col_set_str(pinfo->cinfo, COL_INFO, "Continuation");
if (tree) {
- rpc_item = proto_tree_add_item(tree, proto_rpc, tvb, 0, -1,
- ENC_NA);
+ rpc_item = proto_tree_add_item(tree, proto_rpc, tvb, 0, -1, ENC_NA);
rpc_tree = proto_item_add_subtree(rpc_item, ett_rpc);
proto_tree_add_text(rpc_tree, tvb, 0, -1, "Continuation data");
}
@@ -2673,11 +2642,9 @@ dissect_rpc_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
pinfo->gssapi_encrypted_tvb=NULL;
pinfo->gssapi_decrypted_tvb=NULL;
if (flavor == FLAVOR_GSSAPI && gss_proc == RPCSEC_GSS_DATA && gss_svc == RPCSEC_GSS_SVC_PRIVACY) {
- proto_item *gss_item;
proto_tree *gss_tree;
- gss_item = proto_tree_add_text(tree, tvb, offset, -1, "GSS-Wrap");
- gss_tree = proto_item_add_subtree(gss_item, ett_gss_wrap);
+ gss_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_gss_wrap, NULL, "GSS-Wrap");
offset = dissect_rpc_authgss_priv_data(tvb, gss_tree, offset, pinfo);
if (pinfo->gssapi_decrypted_tvb) {
@@ -2959,18 +2926,16 @@ rpc_fragment_equal(gconstpointer k1, gconstpointer k2)
static void
show_rpc_fragheader(tvbuff_t *tvb, proto_tree *tree, guint32 rpc_rm)
{
- proto_item *hdr_item;
proto_tree *hdr_tree;
guint32 fraglen;
if (tree) {
fraglen = rpc_rm & RPC_RM_FRAGLEN;
- hdr_item = proto_tree_add_text(tree, tvb, 0, 4,
- "Fragment header: %s%u %s",
+ hdr_tree = proto_tree_add_subtree_format(tree, tvb, 0, 4,
+ ett_rpc_fraghdr, NULL, "Fragment header: %s%u %s",
(rpc_rm & RPC_RM_LASTFRAG) ? "Last fragment, " : "",
fraglen, plurality(fraglen, "byte", "bytes"));
- hdr_tree = proto_item_add_subtree(hdr_item, ett_rpc_fraghdr);
proto_tree_add_boolean(hdr_tree, hf_rpc_lastfrag, tvb, 0, 4,
rpc_rm);
diff --git a/epan/dissectors/packet-rpl.c b/epan/dissectors/packet-rpl.c
index bbf7b93928..9239d0fff7 100644
--- a/epan/dissectors/packet-rpl.c
+++ b/epan/dissectors/packet-rpl.c
@@ -98,7 +98,6 @@ static void
dissect_rpl_container(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
guint16 len, type, sublen, subtyp;
- proto_item *ti;
proto_tree *rpl_container_tree;
guint16 offset;
gint ett_type;
@@ -136,13 +135,11 @@ dissect_rpl_container(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if(subtyp == 0x4018) ett_type = ett_rpl_4018;
if(subtyp == 0xc005) ett_type = ett_rpl_c005;
if(subtyp == 0xc014) ett_type = ett_rpl_c014;
- ti = proto_tree_add_text(tree, tvb,
- offset, sublen, "%s",
+ rpl_container_tree = proto_tree_add_subtree(tree, tvb,
+ offset, sublen, ett_type, NULL,
val_to_str_const(subtyp,
rpl_type_vals,
"Unknown Type"));
- rpl_container_tree = proto_item_add_subtree(ti,
- ett_type);
length = tvb_length_remaining(tvb, offset);
if (length > sublen)
length = sublen;
diff --git a/epan/dissectors/packet-rsip.c b/epan/dissectors/packet-rsip.c
index a6c28b9a2e..cf8681b1b2 100644
--- a/epan/dissectors/packet-rsip.c
+++ b/epan/dissectors/packet-rsip.c
@@ -268,10 +268,9 @@ rsip_parameter(tvbuff_t *tvb, proto_tree *rsip_tree, int off, int eoff)
paramtype = tvb_get_guint8(tvb, off);
paramlen = tvb_get_ntohs(tvb, off + 1);
- pti = proto_tree_add_text(rsip_tree, tvb, off, 3 + paramlen,
- "%s",
+ p_tree = proto_tree_add_subtree(rsip_tree, tvb, off, 3 + paramlen,
+ ett_rsip_param, &pti,
val_to_str(paramtype, param_type_vals, "Unknown (%d)"));
- p_tree = proto_item_add_subtree(pti, ett_rsip_param);
proto_tree_add_item(p_tree, hf_rsip_parameter_type, tvb,
off, 1, ENC_BIG_ENDIAN);
diff --git a/epan/dissectors/packet-rsl.c b/epan/dissectors/packet-rsl.c
index 6de3e48886..d0b944bdb5 100644
--- a/epan/dissectors/packet-rsl.c
+++ b/epan/dissectors/packet-rsl.c
@@ -670,7 +670,6 @@ static struct tlv_definition rsl_att_tlvdef;
static int
dissect_rsl_ie_ch_no(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
{
- proto_item *ti;
proto_tree *ie_tree;
guint8 ie_id;
@@ -680,9 +679,7 @@ dissect_rsl_ie_ch_no(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, in
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,2,"Channel number IE ");
- ie_tree = proto_item_add_subtree(ti, ett_ie_ch_no);
-
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 2, ett_ie_ch_no, NULL, "Channel number IE ");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -716,7 +713,6 @@ static const value_string rsl_prio_vals[] = {
static int
dissect_rsl_ie_link_id(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
{
- proto_item *ti;
proto_tree *ie_tree;
guint8 octet;
guint8 ie_id;
@@ -727,8 +723,7 @@ dissect_rsl_ie_link_id(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,2, "Link Identifier IE ");
- ie_tree = proto_item_add_subtree(ti, ett_ie_link_id);
+ ie_tree = proto_tree_add_subtree(tree, tvb,offset,2, ett_ie_link_id, NULL, "Link Identifier IE ");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -790,7 +785,6 @@ static const true_false_string rsl_a1_2_vals = {
static int
dissect_rsl_ie_act_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
{
- proto_item *ti;
proto_tree *ie_tree;
guint8 ie_id;
guint octet;
@@ -801,9 +795,7 @@ dissect_rsl_ie_act_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,2,"Activation Type IE ");
- ie_tree = proto_item_add_subtree(ti, ett_ie_act_type);
-
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 2, ett_ie_act_type, NULL, "Activation Type IE ");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -875,7 +867,6 @@ static value_string_ext rsl_rlm_bs_power_vals_ext = VALUE_STRING_EXT_INIT(rsl_rl
static int
dissect_rsl_ie_bs_power(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
{
- proto_item *ti;
proto_tree *ie_tree;
guint8 ie_id;
@@ -885,8 +876,7 @@ dissect_rsl_ie_bs_power(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,2,"BS Power IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_bs_power);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 2, ett_ie_bs_power, NULL, "BS Power IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -925,8 +915,7 @@ dissect_rsl_ie_ch_id(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, in
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,0,"Channel Identification IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_ch_id);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_ie_ch_id, &ti, "Channel Identification IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1043,8 +1032,7 @@ dissect_rsl_ie_ch_mode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,0,"Channel Mode IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_ch_mode);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_ie_ch_mode, &ti, "Channel Mode IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1140,8 +1128,7 @@ dissect_rsl_ie_enc_inf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,0,"Encryption information IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_enc_inf);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_ie_enc_inf, &ti, "Encryption information IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1167,7 +1154,6 @@ dissect_rsl_ie_enc_inf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
static int
dissect_rsl_ie_frame_no(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
{
- proto_item *ti;
proto_tree *ie_tree;
guint8 ie_id;
@@ -1177,8 +1163,7 @@ dissect_rsl_ie_frame_no(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,3,"Frame Number IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_frame_no);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 3, ett_ie_frame_no, NULL, "Frame Number IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1199,7 +1184,6 @@ dissect_rsl_ie_frame_no(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
static int
dissect_rsl_ie_ho_ref(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
{
- proto_item *ti;
proto_tree *ie_tree;
guint8 ie_id;
@@ -1209,8 +1193,7 @@ dissect_rsl_ie_ho_ref(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, i
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,2,"Handover reference IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_ho_ref);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 2, ett_ie_ho_ref, NULL, "Handover reference IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1230,7 +1213,6 @@ dissect_rsl_ie_ho_ref(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, i
static int
dissect_rsl_ie_l1_inf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
{
- proto_item *ti;
proto_tree *ie_tree;
guint8 ie_id;
@@ -1240,8 +1222,7 @@ dissect_rsl_ie_l1_inf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, i
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset, 3,"L1 Information IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_l1_inf);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 3, ett_ie_l1_inf, NULL, "L1 Information IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1290,8 +1271,7 @@ dissect_rsl_ie_L3_inf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int o
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,0,"L3 Information IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_L3_inf);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_ie_L3_inf, &ti, "L3 Information IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1347,8 +1327,7 @@ dissect_rsl_ie_ms_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int of
if (ie_id != RSL_IE_MS_ID)
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,0,"MS Identity IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_ms_id);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_ie_ms_id, &ti, "MS Identity IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1376,7 +1355,6 @@ static const true_false_string rsl_ms_fpc_epc_mode_vals = {
static int
dissect_rsl_ie_ms_pow(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
{
- proto_item *ti;
proto_tree *ie_tree;
guint8 ie_id;
@@ -1386,8 +1364,7 @@ dissect_rsl_ie_ms_pow(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, i
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset, 2,"MS Power IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_ms_pow);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 2, ett_ie_ms_pow, NULL, "MS Power IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1409,7 +1386,6 @@ dissect_rsl_ie_ms_pow(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, i
static int
dissect_rsl_ie_paging_grp(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
{
- proto_item *ti;
proto_tree *ie_tree;
guint8 ie_id;
@@ -1418,8 +1394,7 @@ dissect_rsl_ie_paging_grp(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
if (ie_id != RSL_IE_PAGING_GRP)
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,2,"Paging Group IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_paging_grp);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 2, ett_ie_paging_grp, NULL, "Paging Group IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1441,7 +1416,6 @@ dissect_rsl_ie_paging_grp(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
static int
dissect_rsl_ie_paging_load(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
{
- proto_item *ti;
proto_tree *ie_tree;
guint8 ie_id;
@@ -1450,8 +1424,7 @@ dissect_rsl_ie_paging_load(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
if (ie_id != RSL_IE_PAGING_LOAD)
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,3,"Paging Load IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_paging_load);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 3, ett_ie_paging_load, NULL, "Paging Load IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1483,8 +1456,7 @@ dissect_rsl_ie_phy_ctx(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,0,"Physical Context IE ");
- ie_tree = proto_item_add_subtree(ti, ett_ie_phy_ctx);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_ie_phy_ctx, &ti, "Physical Context IE ");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1512,7 +1484,6 @@ dissect_rsl_ie_phy_ctx(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
static int
dissect_rsl_ie_access_delay(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
{
- proto_item *ti;
proto_tree *ie_tree;
guint8 ie_id;
@@ -1522,8 +1493,7 @@ dissect_rsl_ie_access_delay(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,2,"Access Delay IE ");
- ie_tree = proto_item_add_subtree(ti, ett_ie_access_delay);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 2, ett_ie_access_delay, NULL, "Access Delay IE ");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1552,8 +1522,7 @@ dissect_rsl_ie_rach_load(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,0,"RACH Load IE ");
- ie_tree = proto_item_add_subtree(ti, ett_ie_rach_load);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_ie_rach_load, &ti, "RACH Load IE ");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1598,7 +1567,6 @@ dissect_rsl_ie_rach_load(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
static int
dissect_rsl_ie_req_ref(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
{
- proto_item *ti;
proto_tree *ie_tree;
guint8 ie_id;
@@ -1608,8 +1576,7 @@ dissect_rsl_ie_req_ref(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,4,"Request Reference IE ");
- ie_tree = proto_item_add_subtree(ti, ett_ie_req_ref);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 4, ett_ie_req_ref, NULL, "Request Reference IE ");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1636,7 +1603,6 @@ static const value_string rel_mode_vals[] = {
static int
dissect_rsl_ie_rel_mode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
{
- proto_item *ti;
proto_tree *ie_tree;
guint8 ie_id;
@@ -1646,8 +1612,7 @@ dissect_rsl_ie_rel_mode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,4,"Release Mode IE ");
- ie_tree = proto_item_add_subtree(ti, ett_ie_rel_mode);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 4, ett_ie_rel_mode, NULL, "Release Mode IE ");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1701,8 +1666,7 @@ dissect_rsl_ie_resource_inf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,0,"Resource Information IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_resource_inf);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_ie_resource_inf, &ti, "Resource Information IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1755,8 +1719,7 @@ dissect_rsl_ie_rlm_cause(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,0,"RLM Cause IE ");
- ie_tree = proto_item_add_subtree(ti, ett_ie_rlm_cause);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_ie_rlm_cause, &ti, "RLM Cause IE ");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1786,7 +1749,6 @@ dissect_rsl_ie_rlm_cause(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
static int
dissect_rsl_ie_starting_time(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
{
- proto_item *ti;
proto_tree *ie_tree;
guint8 ie_id;
@@ -1796,8 +1758,7 @@ dissect_rsl_ie_starting_time(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,3,"Starting Time IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_staring_time);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 3, ett_ie_staring_time, NULL, "Starting Time IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1818,7 +1779,6 @@ dissect_rsl_ie_starting_time(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
static int
dissect_rsl_ie_timing_adv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
{
- proto_item *ti;
proto_tree *ie_tree;
guint8 ie_id;
@@ -1828,8 +1788,7 @@ dissect_rsl_ie_timing_adv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,2,"Timing Advance IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_timing_adv);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 2, ett_ie_timing_adv, NULL, "Timing Advance IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1864,8 +1823,7 @@ dissect_rsl_ie_uplik_meas(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,0,"Uplink Measurements IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_uplink_meas);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_ie_uplink_meas, &ti, "Uplink Measurements IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1938,8 +1896,7 @@ dissect_rsl_ie_cause(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, in
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,0,"Cause IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_cause);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_ie_cause, &ti, "Cause IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1969,7 +1926,6 @@ dissect_rsl_ie_cause(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, in
static int
dissect_rsl_ie_meas_res_no(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
{
- proto_item *ti;
proto_tree *ie_tree;
guint8 ie_id;
@@ -1979,8 +1935,7 @@ dissect_rsl_ie_meas_res_no(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,2,"Measurement result number IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_meas_res_no);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 2, ett_ie_meas_res_no, NULL, "Measurement result number IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1998,7 +1953,6 @@ dissect_rsl_ie_meas_res_no(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
static int
dissect_rsl_ie_message_id(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
{
- proto_item *ti;
proto_tree *ie_tree;
guint8 ie_id;
@@ -2008,8 +1962,7 @@ dissect_rsl_ie_message_id(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,0,"Message Identifier IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_message_id);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_ie_message_id, NULL, "Message Identifier IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2055,7 +2008,6 @@ static int
dissect_rsl_ie_sys_info_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset,
gboolean is_mandatory, guint8 *sys_info_type)
{
- proto_item *ti;
proto_tree *ie_tree;
guint8 ie_id;
@@ -2067,8 +2019,7 @@ dissect_rsl_ie_sys_info_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
}
}
- ti = proto_tree_add_text(tree, tvb,offset,2,"System Info Type IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_sys_info_type);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 2, ett_ie_sys_info_type, NULL, "System Info Type IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2100,8 +2051,7 @@ dissect_rsl_ie_full_imm_ass_inf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,0,"Full Immediate Assign Info IE ");
- ie_tree = proto_item_add_subtree(ti, ett_ie_full_imm_ass_inf);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_ie_full_imm_ass_inf, &ti, "Full Immediate Assign Info IE ");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2148,8 +2098,7 @@ dissect_rsl_ie_smscb_inf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,0,"SMSCB Information IE ");
- ie_tree = proto_item_add_subtree(ti, ett_ie_smscb_inf);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_ie_smscb_inf, &ti, "SMSCB Information IE ");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2178,7 +2127,6 @@ dissect_rsl_ie_smscb_inf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
static int
dissect_rsl_ie_ms_timing_offset(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
{
- proto_item *ti;
proto_tree *ie_tree;
guint8 ie_id;
@@ -2188,8 +2136,7 @@ dissect_rsl_ie_ms_timing_offset(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,0,"MS Timing Offset IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_ms_timing_offset);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_ie_ms_timing_offset, NULL, "MS Timing Offset IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2225,8 +2172,7 @@ dissect_rsl_ie_err_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,0,"Erroneous Message IE ");
- ie_tree = proto_item_add_subtree(ti, ett_ie_err_msg);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_ie_err_msg, &ti, "Erroneous Message IE ");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2262,8 +2208,7 @@ dissect_rsl_ie_full_bcch_inf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,0,"Full BCCH Information IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_full_bcch_inf);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_ie_full_bcch_inf, &ti, "Full BCCH Information IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2301,7 +2246,6 @@ static const value_string rsl_ch_needed_vals[] = {
static int
dissect_rsl_ie_ch_needed(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
{
- proto_item *ti;
proto_tree *ie_tree;
guint8 ie_id;
@@ -2312,8 +2256,7 @@ dissect_rsl_ie_ch_needed(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
}
- ti = proto_tree_add_text(tree, tvb,offset,0,"Channel Needed IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_ch_needed);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_ie_ch_needed, NULL, "Channel Needed IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2331,7 +2274,6 @@ dissect_rsl_ie_ch_needed(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
static int
dissect_rsl_ie_cb_cmd_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
{
- proto_item *ti;
proto_tree *ie_tree;
guint8 ie_id;
@@ -2341,9 +2283,7 @@ dissect_rsl_ie_cb_cmd_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
return offset;
}
-
- ti = proto_tree_add_text(tree, tvb,offset,0,"CB Command type IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_cb_cmd_type);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_ie_cb_cmd_type, NULL, "CB Command type IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2374,8 +2314,7 @@ dissect_rsl_ie_smscb_mess(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
if (ie_id != RSL_IE_SMSCB_MESS)
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,0,"SMSCB Message IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_smscb_mess);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_ie_smscb_mess, &ti, "SMSCB Message IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2411,7 +2350,7 @@ static const true_false_string rsl_cbch_load_type_vals = {
static int
dissect_rsl_ie_cbch_load_inf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
{
- proto_item *ti, *item;
+ proto_item *item;
proto_tree *ie_tree;
guint8 ie_id;
guint8 octet;
@@ -2422,9 +2361,7 @@ dissect_rsl_ie_cbch_load_inf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
return offset;
}
-
- ti = proto_tree_add_text(tree, tvb,offset,0,"CBCH Load Information IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_cbch_load_inf);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_ie_cbch_load_inf, NULL, "CBCH Load Information IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2459,7 +2396,6 @@ static const value_string rsl_ch_ind_vals[] = {
static int
dissect_rsl_ie_smscb_ch_ind(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
{
- proto_item *ti;
proto_tree *ie_tree;
guint8 ie_id;
@@ -2469,9 +2405,7 @@ dissect_rsl_ie_smscb_ch_ind(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t
return offset;
}
-
- ti = proto_tree_add_text(tree, tvb,offset,0,"SMSCB Channel Indicator IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_smscb_ch_ind);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_ie_smscb_ch_ind, NULL, "SMSCB Channel Indicator IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2500,8 +2434,7 @@ dissect_rsl_ie_grp_call_ref(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
if (ie_id != RSL_IE_GRP_CALL_REF)
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,0,"Group call reference IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_grp_call_ref);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_ie_grp_call_ref, &ti, "Group call reference IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2540,8 +2473,7 @@ dissect_rsl_ie_ch_desc(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
if (ie_id != RSL_IE_CH_DESC)
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,0,"Channel description IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_ch_desc);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_ie_ch_desc, &ti, "Channel description IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2571,7 +2503,6 @@ dissect_rsl_ie_ch_desc(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
static int
dissect_rsl_ie_nch_drx(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
{
- proto_item *ti;
proto_tree *ie_tree;
guint8 ie_id;
@@ -2581,8 +2512,7 @@ dissect_rsl_ie_nch_drx(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,2,"NCH DRX information IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_nch_drx);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 2, ett_ie_nch_drx, NULL, "NCH DRX information IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2608,7 +2538,6 @@ dissect_rsl_ie_nch_drx(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
static int
dissect_rsl_ie_cmd_ind(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
{
- proto_item *ti;
proto_tree *ie_tree;
guint8 ie_id;
guint8 octet;
@@ -2621,8 +2550,7 @@ dissect_rsl_ie_cmd_ind(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
/* TODO Length wrong if extended */
- ti = proto_tree_add_text(tree, tvb,offset,2,"Command indicator IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_cmd_ind);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 2, ett_ie_cmd_ind, NULL, "Command indicator IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2665,7 +2593,6 @@ static const value_string rsl_emlpp_prio_vals[] = {
static int
dissect_rsl_ie_emlpp_prio(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
{
- proto_item *ti;
proto_tree *ie_tree;
guint8 ie_id;
@@ -2675,8 +2602,7 @@ dissect_rsl_ie_emlpp_prio(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,2,"eMLPP Priority IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_emlpp_prio);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 2, ett_ie_emlpp_prio, NULL, "eMLPP Priority IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2699,7 +2625,6 @@ dissect_rsl_ie_emlpp_prio(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
static int
dissect_rsl_ie_uic(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
{
- proto_item *ti;
proto_tree *ie_tree;
guint8 ie_id;
@@ -2709,8 +2634,7 @@ dissect_rsl_ie_uic(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,0,"UIC IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_uic);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_ie_uic, NULL, "UIC IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2732,7 +2656,6 @@ dissect_rsl_ie_uic(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int
static int
dissect_rsl_ie_main_ch_ref(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
{
- proto_item *ti;
proto_tree *ie_tree;
guint8 ie_id;
@@ -2742,8 +2665,7 @@ dissect_rsl_ie_main_ch_ref(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,0,"Main channel reference IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_main_ch_ref);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_ie_main_ch_ref, NULL, "Main channel reference IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2774,8 +2696,7 @@ dissect_rsl_ie_multirate_conf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre
if (ie_id != RSL_IE_MULTIRATE_CONF)
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,0,"MultiRate configuration IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_multirate_conf);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_ie_multirate_conf, &ti, "MultiRate configuration IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2803,7 +2724,6 @@ dissect_rsl_ie_multirate_conf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre
static int
dissect_rsl_ie_multirate_cntrl(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
{
- proto_item *ti;
proto_tree *ie_tree;
guint8 ie_id;
@@ -2812,8 +2732,7 @@ dissect_rsl_ie_multirate_cntrl(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
if (ie_id != RSL_IE_MULTIRATE_CNTRL)
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,2,"MultiRate Control IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_multirate_cntrl);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 2, ett_ie_multirate_cntrl, NULL, "MultiRate Control IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2847,8 +2766,7 @@ dissect_rsl_ie_sup_codec_types(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
if (ie_id != RSL_IE_SUP_CODEC_TYPES)
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,0,"Supported Codec Types IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_sup_codec_types);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_ie_sup_codec_types, &ti, "Supported Codec Types IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2915,8 +2833,7 @@ dissect_rsl_ie_codec_conf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
if (ie_id != RSL_IE_CODEC_CONF)
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,0,"Codec Configuration IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_codec_conf);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_ie_codec_conf, &ti, "Codec Configuration IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2946,7 +2863,7 @@ static const value_string rsl_delay_ind_vals[] = {
static int
dissect_rsl_ie_rtd(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
{
- proto_item *ti, *rtd_item;
+ proto_item *rtd_item;
proto_tree *ie_tree;
guint8 ie_id;
guint8 rtd;
@@ -2957,8 +2874,7 @@ dissect_rsl_ie_rtd(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,0,"Round Trip Delay IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_rtd);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_ie_rtd, NULL, "Round Trip Delay IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2992,7 +2908,6 @@ static const true_false_string rsl_tfo_vals = {
static int
dissect_rsl_ie_tfo_status(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
{
- proto_item *ti;
proto_tree *ie_tree;
guint8 ie_id;
@@ -3002,8 +2917,7 @@ dissect_rsl_ie_tfo_status(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,0,"TFO Status IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_tfo_status);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_ie_tfo_status, NULL, "TFO Status IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -3032,8 +2946,7 @@ dissect_rsl_ie_llp_apdu(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,0,"LLP APDU IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_llp_apdu);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_ie_llp_apdu, &ti, "LLP APDU IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -3078,8 +2991,7 @@ dissect_rsl_ie_tfo_transp_cont(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
return offset;
}
- ti = proto_tree_add_text(tree, tvb,offset,0,"TFO transparent container IE");
- ie_tree = proto_item_add_subtree(ti, ett_ie_tfo_transp_cont);
+ ie_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_ie_tfo_transp_cont, &ti, "TFO transparent container IE");
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
diff --git a/epan/dissectors/packet-rsvp.c b/epan/dissectors/packet-rsvp.c
index b44923574a..1a68be4c7e 100644
--- a/epan/dissectors/packet-rsvp.c
+++ b/epan/dissectors/packet-rsvp.c
@@ -2410,7 +2410,7 @@ dissect_rsvp_ifid_tlv(proto_tree *ti, proto_tree *rsvp_object_tree,
guint16 tlv_type;
int tlv_len;
guint8 isis_len;
- const char *tlv_name;
+ const char *tlv_name, *ip_str;
proto_tree *rsvp_ifid_subtree=NULL, *ti2;
for (tlv_off = 0; tlv_off < length; ) {
@@ -2432,18 +2432,17 @@ dissect_rsvp_ifid_tlv(proto_tree *ti, proto_tree *rsvp_object_tree,
case 16: /* INCOMING_IPV4 */
tlv_name = "Incoming ";
ifid_ipv4:
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ ip_str = tvb_ip_to_str(tvb, offset+tlv_off+4);
+ rsvp_ifid_subtree = proto_tree_add_subtree_format(rsvp_object_tree, tvb,
offset+tlv_off, tlv_len,
- "%sIPv4 TLV - %s", tlv_name,
- tvb_ip_to_str(tvb, offset+tlv_off+4));
+ subtree_type, NULL, "%sIPv4 TLV - %s", tlv_name,
+ ip_str);
- rsvp_ifid_subtree = proto_item_add_subtree(ti2, subtree_type);
proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off, 2,
"Type: %d (%sIPv4)", tlv_type, tlv_name);
proto_tree_add_item(rsvp_ifid_subtree, hf_rsvp_ifid_tlv_length, tvb, offset+tlv_off+2, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(rsvp_ifid_subtree, hf_rsvp_ifid_tlv_ipv4_address, tvb, offset+tlv_off+4, 4, ENC_BIG_ENDIAN);
- proto_item_append_text(ti, "%sIPv4: %s. ", tlv_name,
- tvb_ip_to_str(tvb, offset+tlv_off+4));
+ proto_item_append_text(ti, "%sIPv4: %s. ", tlv_name, ip_str);
break;
case 2: /* IPv6 */
@@ -2455,18 +2454,16 @@ dissect_rsvp_ifid_tlv(proto_tree *ti, proto_tree *rsvp_object_tree,
case 17: /* INCOMING_IPV6 */
tlv_name = "Incoming ";
ifid_ipv6:
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ ip_str = tvb_ip6_to_str(tvb, offset+tlv_off+4);
+ rsvp_ifid_subtree = proto_tree_add_subtree_format(rsvp_object_tree, tvb,
offset+tlv_off, tlv_len,
- "%sIPv6 TLV - %s", tlv_name,
- tvb_ip6_to_str(tvb, offset+tlv_off+4));
+ subtree_type, NULL, "%sIPv6 TLV - %s", tlv_name, ip_str);
- rsvp_ifid_subtree = proto_item_add_subtree(ti2, subtree_type);
proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off, 2,
"Type: %d (%sIPv6)", tlv_type, tlv_name);
proto_tree_add_item(rsvp_ifid_subtree, hf_rsvp_ifid_tlv_length, tvb, offset+tlv_off+2, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(rsvp_ifid_subtree, hf_rsvp_ifid_tlv_ipv6_address, tvb, offset+tlv_off+4, 16, ENC_NA);
- proto_item_append_text(ti, "%sIPv6: %s. ", tlv_name,
- tvb_ip6_to_str(tvb, offset+tlv_off+4));
+ proto_item_append_text(ti, "%sIPv6: %s. ", tlv_name, ip_str);
break;
case 3: /* IF_INDEX */
@@ -2481,20 +2478,19 @@ dissect_rsvp_ifid_tlv(proto_tree *ti, proto_tree *rsvp_object_tree,
case 18: /* INCOMING_IF_INDEX */
tlv_name = " Incoming";
ifid_ifindex:
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ ip_str = tvb_ip_to_str(tvb, offset+tlv_off+4);
+ rsvp_ifid_subtree = proto_tree_add_subtree_format(rsvp_object_tree, tvb,
offset+tlv_off, tlv_len,
- "Interface-Index%s TLV - %s, %d",
+ subtree_type, NULL, "Interface-Index%s TLV - %s, %d",
tlv_name,
- tvb_ip_to_str(tvb, offset+tlv_off+4),
+ ip_str,
tvb_get_ntohl(tvb, offset+tlv_off+8));
- rsvp_ifid_subtree = proto_item_add_subtree(ti2, subtree_type);
proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off, 2,
"Type: %d (Interface Index%s)", tlv_type, tlv_name);
proto_tree_add_item(rsvp_ifid_subtree, hf_rsvp_ifid_tlv_length, tvb, offset+tlv_off+2, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(rsvp_ifid_subtree, hf_rsvp_ifid_tlv_ipv4_address, tvb, offset+tlv_off+4, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(rsvp_ifid_subtree, hf_rsvp_ifid_tlvinterface_id, tvb, offset+tlv_off+8, 4, ENC_BIG_ENDIAN);
- proto_item_append_text(ti, "Data If-Index%s: %s, %d. ", tlv_name,
- tvb_ip_to_str(tvb, offset+tlv_off+4),
+ proto_item_append_text(ti, "Data If-Index%s: %s, %d. ", tlv_name, ip_str,
tvb_get_ntohl(tvb, offset+tlv_off+8));
break;
@@ -2510,11 +2506,10 @@ dissect_rsvp_ifid_tlv(proto_tree *ti, proto_tree *rsvp_object_tree,
case 20: /* INCOMING_UP_LABEL */
tlv_name = "Incoming-Upstream";
ifid_label:
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ rsvp_ifid_subtree = proto_tree_add_subtree_format(rsvp_object_tree, tvb,
offset+tlv_off, tlv_len,
- "%s-Label TLV - %u", tlv_name,
+ subtree_type, NULL, "%s-Label TLV - %u", tlv_name,
tvb_get_ntohl(tvb, offset+tlv_off+4));
- rsvp_ifid_subtree = proto_item_add_subtree(ti2, subtree_type);
proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off, 2,
"Type: %d (%s-Label)", tlv_type, tlv_name);
proto_tree_add_item(rsvp_ifid_subtree, hf_rsvp_ifid_tlv_length, tvb, offset+tlv_off+2, 2, ENC_BIG_ENDIAN);
@@ -2530,17 +2525,16 @@ dissect_rsvp_ifid_tlv(proto_tree *ti, proto_tree *rsvp_object_tree,
case 21: /* REPORTING_NODE_ID */
tlv_name = "Reporting-";
ifid_nodeid:
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ ip_str = tvb_ip_to_str(tvb, offset+tlv_off+4);
+ rsvp_ifid_subtree = proto_tree_add_subtree_format(rsvp_object_tree, tvb,
offset+tlv_off, tlv_len,
- "%sNode-ID TLV - %s", tlv_name,
- tvb_ip_to_str(tvb, offset+tlv_off+4));
- rsvp_ifid_subtree = proto_item_add_subtree(ti2, subtree_type);
+ subtree_type, NULL, "%sNode-ID TLV - %s", tlv_name,
+ ip_str);
proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off, 2,
"Type: %d (%sNode-ID)", tlv_type, tlv_name);
proto_tree_add_item(rsvp_ifid_subtree, hf_rsvp_ifid_tlv_length, tvb, offset+tlv_off+2, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(rsvp_ifid_subtree, hf_rsvp_ifid_tlv_node_id, tvb, offset+tlv_off+4, 4, ENC_BIG_ENDIAN);
- proto_item_append_text(ti, "%sNode-ID: %s. ", tlv_name,
- tvb_ip_to_str(tvb, offset+tlv_off+4));
+ proto_item_append_text(ti, "%sNode-ID: %s. ", tlv_name, ip_str);
break;
case 9: /* OSPF_AREA */
@@ -2549,11 +2543,10 @@ dissect_rsvp_ifid_tlv(proto_tree *ti, proto_tree *rsvp_object_tree,
case 22: /* REPORTING_OSPF_AREA */
tlv_name = "Reporting-";
ifid_ospf:
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ rsvp_ifid_subtree = proto_tree_add_subtree_format(rsvp_object_tree, tvb,
offset+tlv_off, tlv_len,
- "%sOSPF-Area TLV - %u", tlv_name,
+ subtree_type, NULL, "%sOSPF-Area TLV - %u", tlv_name,
tvb_get_ntohl(tvb, offset+tlv_off+4));
- rsvp_ifid_subtree = proto_item_add_subtree(ti2, subtree_type);
proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off, 2,
"Type: %d (%sOSPF-Area)", tlv_type, tlv_name);
proto_tree_add_item(rsvp_ifid_subtree, hf_rsvp_ifid_tlv_length, tvb, offset+tlv_off+2, 2, ENC_BIG_ENDIAN);
@@ -2575,20 +2568,17 @@ dissect_rsvp_ifid_tlv(proto_tree *ti, proto_tree *rsvp_object_tree,
"%sISIS-Area TLV - Invalid Length field", tlv_name);
break;
}
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ ip_str = print_nsap_net(tvb_get_ptr(tvb, offset+tlv_off+5, isis_len), isis_len);
+ rsvp_ifid_subtree = proto_tree_add_subtree_format(rsvp_object_tree, tvb,
offset+tlv_off, tlv_len,
- "%sISIS-Area TLV - %s", tlv_name,
- print_nsap_net(tvb_get_ptr(tvb, offset+tlv_off+5, isis_len),
- isis_len));
- rsvp_ifid_subtree = proto_item_add_subtree(ti2, subtree_type);
+ subtree_type, NULL, "%sISIS-Area TLV - %s", tlv_name,
+ ip_str);
proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off, 2,
"Type: %d (%sISIS-Area)", tlv_type, tlv_name);
proto_tree_add_item(rsvp_ifid_subtree, hf_rsvp_ifid_tlv_length, tvb, offset+tlv_off+2, 2, ENC_BIG_ENDIAN);
proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off+4, 4,
- "IS-IS Area Identifier: %s",
- print_nsap_net(tvb_get_ptr(tvb, offset+tlv_off+5, isis_len), isis_len));
- proto_item_append_text(ti, "%sISIS-Area: %s. ", tlv_name,
- print_nsap_net(tvb_get_ptr(tvb, offset+tlv_off+5, isis_len), isis_len));
+ "IS-IS Area Identifier: %s", ip_str);
+ proto_item_append_text(ti, "%sISIS-Area: %s. ", tlv_name, ip_str);
break;
case 11: /* AUTONOMOUS_SYSTEM */
@@ -2597,11 +2587,10 @@ dissect_rsvp_ifid_tlv(proto_tree *ti, proto_tree *rsvp_object_tree,
case 24: /* REPORTING_AUTONOMOUS_SYSTEM */
tlv_name = "Reporting-";
ifid_as:
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ rsvp_ifid_subtree = proto_tree_add_subtree_format(rsvp_object_tree, tvb,
offset+tlv_off, tlv_len,
- "%sAS TLV - %u", tlv_name,
+ subtree_type, NULL, "%sAS TLV - %u", tlv_name,
tvb_get_ntohl(tvb, offset+tlv_off+4));
- rsvp_ifid_subtree = proto_item_add_subtree(ti2, subtree_type);
proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off, 2,
"Type: %d (%sAS)", tlv_type, tlv_name);
proto_tree_add_item(rsvp_ifid_subtree, hf_rsvp_ifid_tlv_length, tvb, offset+tlv_off+2, 2, ENC_BIG_ENDIAN);
@@ -2616,10 +2605,9 @@ dissect_rsvp_ifid_tlv(proto_tree *ti, proto_tree *rsvp_object_tree,
case 27: /* LINK_EXCLUSIONS */
tlv_name = "Link";
ifid_ex:
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ rsvp_ifid_subtree = proto_tree_add_subtree_format(rsvp_object_tree, tvb,
offset+tlv_off, tlv_len,
- "%s-Exclusions TLV - ", tlv_name);
- rsvp_ifid_subtree = proto_item_add_subtree(ti2, subtree_type);
+ subtree_type, &ti2, "%s-Exclusions TLV - ", tlv_name);
proto_tree_add_text(rsvp_ifid_subtree, tvb, offset+tlv_off, 2,
"Type: %d (%s-Exclusions)", tlv_type, tlv_name);
proto_tree_add_item(rsvp_ifid_subtree, hf_rsvp_ifid_tlv_length, tvb, offset+tlv_off+2, 2, ENC_BIG_ENDIAN);
@@ -2628,14 +2616,12 @@ dissect_rsvp_ifid_tlv(proto_tree *ti, proto_tree *rsvp_object_tree,
break;
case 516:
/* FF: ERROR_STRING TLV, RFC 4783 */
- ti2 =
- proto_tree_add_text(rsvp_object_tree,
+ rsvp_ifid_subtree = proto_tree_add_subtree_format(rsvp_object_tree,
tvb, offset + tlv_off,
tlv_len,
- "ERROR_STRING TLV - %s",
+ subtree_type, NULL, "ERROR_STRING TLV - %s",
tvb_format_text(tvb, offset + tlv_off + 4,
tlv_len - 4));
- rsvp_ifid_subtree = proto_item_add_subtree(ti2, subtree_type);
proto_tree_add_text(rsvp_ifid_subtree, tvb, offset + tlv_off, 2,
"Type: 516 (ERROR_STRING)");
proto_tree_add_item(rsvp_ifid_subtree, hf_rsvp_ifid_tlv_length, tvb, offset + tlv_off + 2, 2, ENC_BIG_ENDIAN);
@@ -2644,11 +2630,10 @@ dissect_rsvp_ifid_tlv(proto_tree *ti, proto_tree *rsvp_object_tree,
default:
/* FF: not yet known TLVs are displayed as raw data */
- ti2 = proto_tree_add_text(rsvp_object_tree,
+ rsvp_ifid_subtree = proto_tree_add_subtree_format(rsvp_object_tree,
tvb, offset + tlv_off,
tlv_len,
- "Unknown TLV (%u)", tlv_type);
- rsvp_ifid_subtree = proto_item_add_subtree(ti2, subtree_type);
+ subtree_type, NULL, "Unknown TLV (%u)", tlv_type);
proto_tree_add_text(rsvp_ifid_subtree, tvb, offset + tlv_off, 2,
"Type: %u (Unknown)", tlv_type);
proto_tree_add_item(rsvp_ifid_subtree, hf_rsvp_ifid_tlv_length, tvb, offset + tlv_off + 2, 2, ENC_BIG_ENDIAN);
@@ -3125,7 +3110,7 @@ dissect_rsvp_eth_tspec_tlv(proto_item *ti, proto_tree *rsvp_object_tree,
guint16 tlv_type;
int tlv_len;
guint8 profile;
- proto_tree *rsvp_ethspec_subtree, *ethspec_profile_subtree, *ti2, *ti3;
+ proto_tree *rsvp_ethspec_subtree, *ethspec_profile_subtree, *ti3;
for (tlv_off = 0; tlv_off < tlv_length; ) {
tlv_type = tvb_get_ntohs(tvb, offset+tlv_off);
@@ -3140,10 +3125,9 @@ dissect_rsvp_eth_tspec_tlv(proto_item *ti, proto_tree *rsvp_object_tree,
case 0:
case 1:
case 255:
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ rsvp_ethspec_subtree = proto_tree_add_subtree(rsvp_object_tree, tvb,
offset+tlv_off, tlv_len,
- "RESERVED (RFC6003)");
- rsvp_ethspec_subtree = proto_item_add_subtree(ti2, subtree_type);
+ subtree_type, NULL, "RESERVED (RFC6003)");
proto_tree_add_text(rsvp_ethspec_subtree, tvb, offset+tlv_off, 2,
"Type: %u (RESERVED)", tlv_type);
proto_tree_add_item(rsvp_ethspec_subtree, hf_rsvp_eth_tspec_length, tvb, offset+tlv_off+2, 2, ENC_BIG_ENDIAN);
@@ -3151,15 +3135,14 @@ dissect_rsvp_eth_tspec_tlv(proto_item *ti, proto_tree *rsvp_object_tree,
case 2:
case 129: /* OIF demo 2009 */
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset+tlv_off, tlv_len,
+ rsvp_ethspec_subtree = proto_tree_add_subtree_format(rsvp_object_tree, tvb,
+ offset+tlv_off, tlv_len, subtree_type, NULL,
"Ethernet Bandwidth Profile TLV: CIR=%.10g, CBS=%.10g, "
"EIR=%.10g, EBS=%.10g",
tvb_get_ntohieee_float(tvb, offset+tlv_off+8),
tvb_get_ntohieee_float(tvb, offset+tlv_off+12),
tvb_get_ntohieee_float(tvb, offset+tlv_off+16),
tvb_get_ntohieee_float(tvb, offset+tlv_off+20));
- rsvp_ethspec_subtree = proto_item_add_subtree(ti2, subtree_type);
proto_tree_add_text(rsvp_ethspec_subtree, tvb, offset+tlv_off, 2,
"Type: %u - Ethernet Bandwidth Profile", tlv_type);
proto_tree_add_item(rsvp_ethspec_subtree, hf_rsvp_eth_tspec_length, tvb, offset+tlv_off+2, 2, ENC_BIG_ENDIAN);
@@ -3256,10 +3239,9 @@ dissect_rsvp_tspec(proto_item *ti, proto_tree *rsvp_object_tree,
switch(param_id) {
case 127:
/* Token Bucket */
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset2, param_len*4,
+ tspec_tree = proto_tree_add_subtree(rsvp_object_tree, tvb,
+ offset2, param_len*4, TREE(TT_TSPEC_SUBTREE), &ti2,
"Token Bucket TSpec: ");
- tspec_tree = proto_item_add_subtree(ti2, TREE(TT_TSPEC_SUBTREE));
proto_tree_add_text(tspec_tree, tvb, offset2, 1,
"Parameter %u - %s",
@@ -3295,10 +3277,9 @@ dissect_rsvp_tspec(proto_item *ti, proto_tree *rsvp_object_tree,
case 128:
/* Null Service (RFC2997) */
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset2, param_len*4,
+ tspec_tree = proto_tree_add_subtree(rsvp_object_tree, tvb,
+ offset2, param_len*4, TREE(TT_TSPEC_SUBTREE), NULL,
"Null Service TSpec: ");
- tspec_tree = proto_item_add_subtree(ti2, TREE(TT_TSPEC_SUBTREE));
proto_tree_add_text(tspec_tree, tvb, offset2, 1,
"Parameter %u - %s",
@@ -3324,10 +3305,9 @@ dissect_rsvp_tspec(proto_item *ti, proto_tree *rsvp_object_tree,
case 126:
/* Compression hint (RFC3006) */
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset2, param_len*4,
+ tspec_tree = proto_tree_add_subtree(rsvp_object_tree, tvb,
+ offset2, param_len*4, TREE(TT_TSPEC_SUBTREE), NULL,
"Compression Hint: ");
- tspec_tree = proto_item_add_subtree(ti2, TREE(TT_TSPEC_SUBTREE));
proto_tree_add_text(tspec_tree, tvb, offset2, 1,
"Parameter %u - %s",
@@ -3551,10 +3531,9 @@ dissect_rsvp_flowspec(proto_item *ti, proto_tree *rsvp_object_tree,
switch(param_id) {
case 127:
/* Token Bucket */
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ flowspec_tree = proto_tree_add_subtree(rsvp_object_tree, tvb,
offset2, param_len*4,
- "Token Bucket: ");
- flowspec_tree = proto_item_add_subtree(ti2, TREE(TT_FLOWSPEC_SUBTREE));
+ TREE(TT_FLOWSPEC_SUBTREE), &ti2, "Token Bucket: ");
proto_tree_add_text(flowspec_tree, tvb, offset2, 1,
"Parameter %u - %s",
@@ -3590,10 +3569,9 @@ dissect_rsvp_flowspec(proto_item *ti, proto_tree *rsvp_object_tree,
case 130:
/* Guaranteed-rate RSpec */
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset2, param_len*4,
+ flowspec_tree = proto_tree_add_subtree(rsvp_object_tree, tvb,
+ offset2, param_len*4, TREE(TT_FLOWSPEC_SUBTREE), NULL,
"Guaranteed-Rate RSpec: ");
- flowspec_tree = proto_item_add_subtree(ti2, TREE(TT_FLOWSPEC_SUBTREE));
proto_tree_add_text(flowspec_tree, tvb, offset2, 1,
"Parameter %u - %s",
param_id,
@@ -3619,10 +3597,9 @@ dissect_rsvp_flowspec(proto_item *ti, proto_tree *rsvp_object_tree,
case 128:
/* Null Service (RFC2997) */
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset2, param_len*4,
+ flowspec_tree = proto_tree_add_subtree(rsvp_object_tree, tvb,
+ offset2, param_len*4, TREE(TT_FLOWSPEC_SUBTREE), NULL,
"Null Service Flowspec: ");
- flowspec_tree = proto_item_add_subtree(ti2, TREE(TT_FLOWSPEC_SUBTREE));
proto_tree_add_text(flowspec_tree, tvb, offset2, 1,
"Parameter %u - %s",
@@ -3771,7 +3748,7 @@ dissect_rsvp_flowspec(proto_item *ti, proto_tree *rsvp_object_tree,
* ADSPEC
*------------------------------------------------------------------------------*/
static void
-dissect_rsvp_adspec(proto_item *ti, proto_tree *rsvp_object_tree,
+dissect_rsvp_adspec(proto_item *ti _U_, proto_tree *rsvp_object_tree,
tvbuff_t *tvb,
int offset, int obj_length,
int rsvp_class _U_, int type)
@@ -3799,11 +3776,9 @@ dissect_rsvp_adspec(proto_item *ti, proto_tree *rsvp_object_tree,
str = val_to_str_ext_const(service_num, &intsrv_services_str_ext, "Unknown");
break_bit = tvb_get_guint8(tvb, offset2+1);
length = tvb_get_ntohs(tvb, offset2+2);
- ti = proto_tree_add_text(rsvp_object_tree, tvb, offset2,
- (length+1)*4, "%s",
- str);
- adspec_tree = proto_item_add_subtree(ti,
- TREE(TT_ADSPEC_SUBTREE));
+ adspec_tree = proto_tree_add_subtree(rsvp_object_tree, tvb, offset2,
+ (length+1)*4, TREE(TT_ADSPEC_SUBTREE), NULL, str);
+
proto_tree_add_item(adspec_tree, hf_rsvp_adspec_service_header, tvb, offset2, 1, ENC_NA);
proto_tree_add_text(adspec_tree, tvb, offset2+1, 1,
(break_bit&0x80)?
@@ -4417,14 +4392,12 @@ dissect_rsvp_ero_rro_subobjects(proto_tree *ti, proto_tree *rsvp_object_tree,
switch(j) {
case 1: /* IPv4 */
k = tvb_get_guint8(tvb, offset+l) & 0x80;
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ rsvp_ro_subtree = proto_tree_add_subtree_format(rsvp_object_tree, tvb,
offset+l, 8,
- "IPv4 Subobject - %s%s",
+ tree_type, NULL, "IPv4 Subobject - %s%s",
tvb_ip_to_str(tvb, offset+l+2),
rsvp_class == RSVP_CLASS_EXPLICIT_ROUTE ?
(k ? ", Loose" : ", Strict") : "");
- rsvp_ro_subtree =
- proto_item_add_subtree(ti2, tree_type);
if (rsvp_class == RSVP_CLASS_EXPLICIT_ROUTE)
proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
k ? "Loose Hop " : "Strict Hop");
@@ -4466,11 +4439,9 @@ dissect_rsvp_ero_rro_subobjects(proto_tree *ti, proto_tree *rsvp_object_tree,
break;
case 2: /* IPv6 */
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset+l, 20,
+ rsvp_ro_subtree = proto_tree_add_subtree(rsvp_object_tree, tvb,
+ offset+l, 20, tree_type, NULL,
"IPv6 Subobject");
- rsvp_ro_subtree =
- proto_item_add_subtree(ti2, tree_type);
k = tvb_get_guint8(tvb, offset+l) & 0x80;
if (rsvp_class == RSVP_CLASS_EXPLICIT_ROUTE)
proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
@@ -4514,14 +4485,12 @@ dissect_rsvp_ero_rro_subobjects(proto_tree *ti, proto_tree *rsvp_object_tree,
case 3: /* Label RFC 3477 */
k = tvb_get_guint8(tvb, offset+l) & 0x80;
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ rsvp_ro_subtree = proto_tree_add_subtree_format(rsvp_object_tree, tvb,
offset+l, 8,
- "Label Subobject - %d, %s",
+ tree_type, NULL, "Label Subobject - %d, %s",
tvb_get_ntohl(tvb, offset+l+4),
rsvp_class == RSVP_CLASS_EXPLICIT_ROUTE ?
(k ? "Loose" : "Strict") : "");
- rsvp_ro_subtree =
- proto_item_add_subtree(ti2, tree_type);
if (rsvp_class == RSVP_CLASS_EXPLICIT_ROUTE)
proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
k ? "Loose Hop " : "Strict Hop");
@@ -4549,15 +4518,13 @@ dissect_rsvp_ero_rro_subobjects(proto_tree *ti, proto_tree *rsvp_object_tree,
case 4: /* Unnumbered Interface-ID RFC 3477, RFC 6107*/
k = tvb_get_guint8(tvb, offset+l) & 0x80;
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset+l, 8,
+ rsvp_ro_subtree = proto_tree_add_subtree_format(rsvp_object_tree, tvb,
+ offset+l, 8, tree_type, &ti2,
"Unnumbered Interface-ID - %s, %d, %s",
tvb_ip_to_str(tvb, offset+l+4),
tvb_get_ntohl(tvb, offset+l+8),
rsvp_class == RSVP_CLASS_EXPLICIT_ROUTE ?
(k ? "Loose" : "Strict") : "");
- rsvp_ro_subtree =
- proto_item_add_subtree(ti2, tree_type);
if (rsvp_class == RSVP_CLASS_EXPLICIT_ROUTE)
proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
k ? "Loose Hop " : "Strict Hop");
@@ -4589,12 +4556,10 @@ dissect_rsvp_ero_rro_subobjects(proto_tree *ti, proto_tree *rsvp_object_tree,
case 32: /* AS */
if (rsvp_class == RSVP_CLASS_RECORD_ROUTE) goto defaultsub;
k = tvb_get_ntohs(tvb, offset+l+2);
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset+l, 4,
+ rsvp_ro_subtree = proto_tree_add_subtree_format(rsvp_object_tree, tvb,
+ offset+l, 4, tree_type, NULL,
"Autonomous System %u",
k);
- rsvp_ro_subtree =
- proto_item_add_subtree(ti2, tree_type);
proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
"Type: 32 (Autonomous System Number)");
proto_tree_add_item(rsvp_ro_subtree, hf_rsvp_ero_rro_subobjects_length, tvb, offset+l+1, 1, ENC_NA);
@@ -4609,13 +4574,11 @@ dissect_rsvp_ero_rro_subobjects(proto_tree *ti, proto_tree *rsvp_object_tree,
case 64: /* PKSv4 - RFC5520 */
if (rsvp_class == RSVP_CLASS_RECORD_ROUTE) goto defaultsub;
k = tvb_get_ntohs(tvb, offset+l+2);
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset+l, 8,
+ rsvp_ro_subtree = proto_tree_add_subtree_format(rsvp_object_tree, tvb,
+ offset+l, 8, tree_type, NULL,
"Path Key subobject - %s, %u",
tvb_ip_to_str(tvb, offset+l+4),
k);
- rsvp_ro_subtree =
- proto_item_add_subtree(ti2, tree_type);
proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
"Type: 64 (Path Key with IPv4 PCE-ID)");
proto_tree_add_item(rsvp_ro_subtree, hf_rsvp_ero_rro_subobjects_length, tvb, offset+l+1, 1, ENC_NA);
@@ -4629,13 +4592,11 @@ dissect_rsvp_ero_rro_subobjects(proto_tree *ti, proto_tree *rsvp_object_tree,
case 65: /* PKSv6 - RFC5520 */
if (rsvp_class == RSVP_CLASS_RECORD_ROUTE) goto defaultsub;
k = tvb_get_ntohs(tvb, offset+l+2);
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset+l, 8,
+ rsvp_ro_subtree = proto_tree_add_subtree_format(rsvp_object_tree, tvb,
+ offset+l, 8, tree_type, NULL,
"Path Key subobject - %s, %u",
tvb_ip6_to_str(tvb, offset+l+4),
k);
- rsvp_ro_subtree =
- proto_item_add_subtree(ti2, tree_type);
proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
"Type: 65 (Path Key with IPv6 PCE-ID)");
proto_tree_add_item(rsvp_ro_subtree, hf_rsvp_ero_rro_subobjects_length, tvb, offset+l+1, 1, ENC_NA);
@@ -4686,11 +4647,9 @@ dissect_rsvp_ero_rro_subobjects(proto_tree *ti, proto_tree *rsvp_object_tree,
{
guint8 private_so_len = tvb_get_guint8(tvb, offset+l+1);
k = tvb_get_guint8(tvb, offset+l) & 0x80;
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb, offset+l,
+ rsvp_ro_subtree = proto_tree_add_subtree_format(rsvp_object_tree, tvb, offset+l,
tvb_get_guint8(tvb, offset+l+1),
- "Private Subobject: %d", j);
- rsvp_ro_subtree =
- proto_item_add_subtree(ti2, tree_type);
+ tree_type, NULL, "Private Subobject: %d", j);
proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
k ? "Loose Hop " : "Strict Hop");
proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
@@ -4710,12 +4669,10 @@ dissect_rsvp_ero_rro_subobjects(proto_tree *ti, proto_tree *rsvp_object_tree,
default: /* Unknown subobject */
defaultsub:
k = tvb_get_guint8(tvb, offset+l) & 0x80;
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ rsvp_ro_subtree = proto_tree_add_subtree_format(rsvp_object_tree, tvb,
offset+l,
tvb_get_guint8(tvb, offset+l+1),
- "Unknown subobject: %d", j);
- rsvp_ro_subtree =
- proto_item_add_subtree(ti2, tree_type);
+ tree_type, NULL, "Unknown subobject: %d", j);
proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
k ? "Loose Hop " : "Strict Hop");
proto_tree_add_text(rsvp_ro_subtree, tvb, offset+l, 1,
@@ -4750,7 +4707,7 @@ dissect_rsvp_xro_subobjects(proto_tree *ti, proto_tree *rsvp_object_tree,
int rsvp_class)
{
int i, lbit, type, l;
- proto_tree *ti2, *rsvp_xro_subtree;
+ proto_tree *rsvp_xro_subtree;
int tree_type;
switch (rsvp_class) {
@@ -4773,12 +4730,10 @@ dissect_rsvp_xro_subobjects(proto_tree *ti, proto_tree *rsvp_object_tree,
type = tvb_get_guint8(tvb, offset + l) & 0x7f;
switch (type) {
case 1: /* IPv4 */
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset + l, 8,
+ rsvp_xro_subtree = proto_tree_add_subtree_format(rsvp_object_tree, tvb,
+ offset + l, 8, tree_type, NULL,
"IPv4 Subobject - %s",
tvb_ip_to_str(tvb, offset + l + 2));
- rsvp_xro_subtree =
- proto_item_add_subtree(ti2, tree_type);
proto_tree_add_item(rsvp_xro_subtree, hf_rsvp_xro_sobj_lbit,
tvb, offset + l, 1, ENC_NA);
@@ -4800,12 +4755,10 @@ dissect_rsvp_xro_subobjects(proto_tree *ti, proto_tree *rsvp_object_tree,
break;
case 2: /* IPv6 */
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset + l, 20,
+ rsvp_xro_subtree = proto_tree_add_subtree_format(rsvp_object_tree, tvb,
+ offset + l, 20, tree_type, NULL,
"IPv6 Subobject - %s",
tvb_ip6_to_str(tvb, offset + l + 2));
- rsvp_xro_subtree =
- proto_item_add_subtree(ti2, tree_type);
proto_tree_add_item(rsvp_xro_subtree, hf_rsvp_xro_sobj_lbit,
tvb, offset + l, 1, ENC_NA);
@@ -4825,12 +4778,10 @@ dissect_rsvp_xro_subobjects(proto_tree *ti, proto_tree *rsvp_object_tree,
break;
case 34: /* SRLG */
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset + l, 8,
+ rsvp_xro_subtree = proto_tree_add_subtree_format(rsvp_object_tree, tvb,
+ offset + l, 8, tree_type, NULL,
"SRLG Subobject - %u",
tvb_get_ntohl(tvb, offset + l + 2));
- rsvp_xro_subtree =
- proto_item_add_subtree(ti2, tree_type);
proto_tree_add_item(rsvp_xro_subtree, hf_rsvp_xro_sobj_lbit,
tvb, offset + l, 1, ENC_NA);
@@ -4849,12 +4800,10 @@ dissect_rsvp_xro_subobjects(proto_tree *ti, proto_tree *rsvp_object_tree,
}
break;
default: /* Unknown subobject */
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ rsvp_xro_subtree = proto_tree_add_subtree_format(rsvp_object_tree, tvb,
offset + l,
tvb_get_guint8(tvb, offset + l + 1),
- "Unknown subobject: %d", type);
- rsvp_xro_subtree =
- proto_item_add_subtree(ti2, tree_type);
+ tree_type, NULL, "Unknown subobject: %d", type);
proto_tree_add_item(rsvp_xro_subtree, hf_rsvp_xro_sobj_lbit,
tvb, offset + l, 1, ENC_NA);
@@ -5385,11 +5334,10 @@ dissect_rsvp_lsp_tunnel_if_id_tlv(proto_tree *rsvp_object_tree,
}
switch(tlv_type) {
case 1:
- ti = proto_tree_add_text(rsvp_object_tree, tvb,
- offset+tlv_off, tlv_len,
+ rsvp_lsp_tunnel_if_id_subtree = proto_tree_add_subtree_format(rsvp_object_tree, tvb,
+ offset+tlv_off, tlv_len, subtree_type, NULL,
"Unnumbered component link identifier: %u",
tvb_get_ntohl(tvb, offset+tlv_off+4));
- rsvp_lsp_tunnel_if_id_subtree = proto_item_add_subtree(ti, subtree_type);
proto_tree_add_text(rsvp_lsp_tunnel_if_id_subtree, tvb, offset+tlv_off, 2,
"Type: 1 (Unnumbered component link identifier)");
proto_tree_add_item(rsvp_lsp_tunnel_if_id_subtree, hf_rsvp_lsp_tunnel_if_id_length, tvb, offset+tlv_off+2, 2, ENC_BIG_ENDIAN);
@@ -5397,11 +5345,10 @@ dissect_rsvp_lsp_tunnel_if_id_tlv(proto_tree *rsvp_object_tree,
break;
case 2:
- ti = proto_tree_add_text(rsvp_object_tree, tvb,
- offset+tlv_off, tlv_len,
+ rsvp_lsp_tunnel_if_id_subtree = proto_tree_add_subtree_format(rsvp_object_tree, tvb,
+ offset+tlv_off, tlv_len, subtree_type, NULL,
"IPv4 component link identifier: %s",
tvb_ip_to_str(tvb, offset+tlv_off+4));
- rsvp_lsp_tunnel_if_id_subtree = proto_item_add_subtree(ti, subtree_type);
proto_tree_add_text(rsvp_lsp_tunnel_if_id_subtree, tvb, offset+tlv_off, 2,
"Type: 2 (IPv4 component link identifier)");
proto_tree_add_item(rsvp_lsp_tunnel_if_id_subtree, hf_rsvp_lsp_tunnel_if_id_length, tvb, offset+tlv_off+2, 2, ENC_BIG_ENDIAN);
@@ -5409,10 +5356,9 @@ dissect_rsvp_lsp_tunnel_if_id_tlv(proto_tree *rsvp_object_tree,
break;
case 32769: /* oif-p0040.002.09 demo spec */
- ti = proto_tree_add_text(rsvp_object_tree, tvb,
- offset+tlv_off, tlv_len,
+ rsvp_lsp_tunnel_if_id_subtree = proto_tree_add_subtree_format(rsvp_object_tree, tvb,
+ offset+tlv_off, tlv_len, subtree_type, &ti,
"Targeted client layer: ");
- rsvp_lsp_tunnel_if_id_subtree = proto_item_add_subtree(ti, subtree_type);
proto_tree_add_text(rsvp_lsp_tunnel_if_id_subtree, tvb, offset+tlv_off, 2,
"Type: 32769 (Targeted client layer)");
proto_tree_add_item(rsvp_lsp_tunnel_if_id_subtree, hf_rsvp_lsp_tunnel_if_id_length, tvb, offset+tlv_off+2, 2, ENC_BIG_ENDIAN);
@@ -5593,12 +5539,10 @@ dissect_rsvp_gen_uni(proto_tree *ti, proto_tree *rsvp_object_tree,
k = tvb_get_guint8(tvb, offset2+l+3);
switch(k) {
case 1:
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset2+l, 8,
+ rsvp_gen_uni_subtree = proto_tree_add_subtree_format(rsvp_object_tree, tvb,
+ offset2+l, 8, TREE(TT_GEN_UNI_SUBOBJ), NULL,
"%s IPv4 TNA: %s", c,
tvb_ip_to_str(tvb, offset2+l+4));
- rsvp_gen_uni_subtree =
- proto_item_add_subtree(ti2, TREE(TT_GEN_UNI_SUBOBJ));
proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+2, 1,
"Class: %d (%s)", j, c);
proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+3, 1,
@@ -5618,11 +5562,9 @@ dissect_rsvp_gen_uni(proto_tree *ti, proto_tree *rsvp_object_tree,
break;
case 2:
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset2+l, 20,
+ rsvp_gen_uni_subtree = proto_tree_add_subtree_format(rsvp_object_tree, tvb,
+ offset2+l, 20, TREE(TT_GEN_UNI_SUBOBJ), NULL,
"%s IPv6 TNA:", c);
- rsvp_gen_uni_subtree =
- proto_item_add_subtree(ti2, TREE(TT_GEN_UNI_SUBOBJ));
proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+2, 1,
"Class: %d (%s)", j, c);
proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+3, 1,
@@ -5642,11 +5584,9 @@ dissect_rsvp_gen_uni(proto_tree *ti, proto_tree *rsvp_object_tree,
break;
case 3:
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ rsvp_gen_uni_subtree = proto_tree_add_subtree_format(rsvp_object_tree, tvb,
offset2+l, tvb_get_ntohs(tvb, offset2+l),
- "%s NSAP TNA: ", c);
- rsvp_gen_uni_subtree =
- proto_item_add_subtree(ti2, TREE(TT_GEN_UNI_SUBOBJ));
+ TREE(TT_GEN_UNI_SUBOBJ), NULL, "%s NSAP TNA: ", c);
nsap_len = tvb_get_guint8(tvb, offset2+l+4);
proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+2, 1,
"Class: %d (%s)", j, c);
@@ -5667,11 +5607,9 @@ dissect_rsvp_gen_uni(proto_tree *ti, proto_tree *rsvp_object_tree,
break;
default:
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ rsvp_gen_uni_subtree = proto_tree_add_subtree_format(rsvp_object_tree, tvb,
offset2+l, tvb_get_ntohs(tvb, offset2+l),
- "%s UNKNOWN TNA", c);
- rsvp_gen_uni_subtree =
- proto_item_add_subtree(ti2, TREE(TT_GEN_UNI_SUBOBJ));
+ TREE(TT_GEN_UNI_SUBOBJ), NULL, "%s UNKNOWN TNA", c);
proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+2, 1,
"Class: %d (%s)", j, c);
proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+3, 1,
@@ -5693,11 +5631,9 @@ dissect_rsvp_gen_uni(proto_tree *ti, proto_tree *rsvp_object_tree,
switch(k) {
default:
case 1:
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
+ rsvp_gen_uni_subtree = proto_tree_add_subtree_format(rsvp_object_tree, tvb,
offset2+l, tvb_get_ntohs(tvb, offset2+l),
- "Diversity Subobject");
- rsvp_gen_uni_subtree =
- proto_item_add_subtree(ti2, TREE(TT_GEN_UNI_SUBOBJ));
+ TREE(TT_GEN_UNI_SUBOBJ), NULL, "Diversity Subobject");
proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+2, 1,
"Class: %d (Diversity)", j);
proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+3, 1,
@@ -5711,10 +5647,8 @@ dissect_rsvp_gen_uni(proto_tree *ti, proto_tree *rsvp_object_tree,
s_len = tvb_get_ntohs(tvb, offset2+l+8);
s_class = tvb_get_guint8(tvb, offset2+l+10);
s_type = tvb_get_guint8(tvb, offset2+l+11);
- ti2 = proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+8,
- s_len, "Session");
- rsvp_session_subtree =
- proto_item_add_subtree(ti2, TREE(rsvp_class_to_tree_type(s_class)));
+ rsvp_session_subtree = proto_tree_add_subtree(rsvp_gen_uni_subtree, tvb, offset2+l+8,
+ s_len, TREE(rsvp_class_to_tree_type(s_class)), NULL, "Session");
if (s_len < 4) {
proto_tree_add_text(rsvp_object_tree, tvb, offset2+l+8, 2,
"Length: %u (bogus, must be >= 4)", s_len);
@@ -5730,10 +5664,9 @@ dissect_rsvp_gen_uni(proto_tree *ti, proto_tree *rsvp_object_tree,
s_len = tvb_get_ntohs(tvb, offset3+l+8);
s_class = tvb_get_guint8(tvb, offset3+l+10);
s_type = tvb_get_guint8(tvb, offset3+l+11);
- ti2 = proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset3+l+8,
- s_len, "Template");
- rsvp_template_subtree =
- proto_item_add_subtree(ti2, TREE(rsvp_class_to_tree_type(s_class)));
+ rsvp_template_subtree = proto_tree_add_subtree(rsvp_gen_uni_subtree, tvb, offset3+l+8,
+ s_len, TREE(rsvp_class_to_tree_type(s_class)), NULL, "Template");
+
if (s_len < 4) {
proto_tree_add_text(rsvp_object_tree, tvb, offset3+l+8, 2,
"Length: %u (bogus, must be >= 4)", s_len);
@@ -5757,18 +5690,17 @@ dissect_rsvp_gen_uni(proto_tree *ti, proto_tree *rsvp_object_tree,
case 4: /* Egress Label */
k = tvb_get_guint8(tvb, offset2+l+3);
if (k == 1) /* Egress label sub-type */
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset2+l, sobj_len,
+ rsvp_gen_uni_subtree = proto_tree_add_subtree(rsvp_object_tree, tvb,
+ offset2+l, sobj_len, TREE(TT_GEN_UNI_SUBOBJ), &ti2,
"Egress Label Subobject");
else if (k == 2) /* SPC_label sub-type (see G.7713.2) */
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset2+l, sobj_len,
+ rsvp_gen_uni_subtree = proto_tree_add_subtree(rsvp_object_tree, tvb,
+ offset2+l, sobj_len, TREE(TT_GEN_UNI_SUBOBJ), &ti2,
"SPC Label Subobject");
else
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset2+l, sobj_len,
+ rsvp_gen_uni_subtree = proto_tree_add_subtree(rsvp_object_tree, tvb,
+ offset2+l, sobj_len, TREE(TT_GEN_UNI_SUBOBJ), &ti2,
"Unknown Label Subobject");
- rsvp_gen_uni_subtree = proto_item_add_subtree(ti2, TREE(TT_GEN_UNI_SUBOBJ));
proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+2, 1,
"Class: %d (Egress/SPC Label)", j);
proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+3, 1,
@@ -5804,11 +5736,9 @@ dissect_rsvp_gen_uni(proto_tree *ti, proto_tree *rsvp_object_tree,
switch(k) {
default:
case 1:
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset2+l, sobj_len,
+ rsvp_gen_uni_subtree = proto_tree_add_subtree(rsvp_object_tree, tvb,
+ offset2+l, sobj_len, TREE(TT_GEN_UNI_SUBOBJ), &ti2,
"Service Level Subobject");
- rsvp_gen_uni_subtree =
- proto_item_add_subtree(ti2, TREE(TT_GEN_UNI_SUBOBJ));
proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+2, 1,
"Class: %d (Service Level)", j);
proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+3, 1,
@@ -5826,12 +5756,10 @@ dissect_rsvp_gen_uni(proto_tree *ti, proto_tree *rsvp_object_tree,
break;
default: /* Unknown subobject */
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb,
- offset2+l, sobj_len,
+ rsvp_gen_uni_subtree = proto_tree_add_subtree_format(rsvp_object_tree, tvb,
+ offset2+l, sobj_len, TREE(TT_GEN_UNI_SUBOBJ), NULL,
"Unknown subobject: %u",
j);
- rsvp_gen_uni_subtree =
- proto_item_add_subtree(ti2, TREE(TT_GEN_UNI_SUBOBJ));
proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l, 1,
"Type: %u (Unknown)", j);
proto_tree_add_text(rsvp_gen_uni_subtree, tvb, offset2+l+1, 1,
@@ -6142,8 +6070,7 @@ dissect_rsvp_3gpp_object(proto_tree *ti _U_, proto_tree *rsvp_object_tree,
guint16 pkt_flt_len, item_len, pf_cont_len;
guint8 pf_comp_type_id;
- ti = proto_tree_add_text(rsvp_object_tree, tvb, offset, -1, "Flow Identifier Num %u",i+1);
- flow_tree = proto_item_add_subtree(ti, ett_treelist[TT_3GPP_OBJ_FLOW]);
+ flow_tree = proto_tree_add_subtree_format(rsvp_object_tree, tvb, offset, -1, ett_treelist[TT_3GPP_OBJ_FLOW], &ti, "Flow Identifier Num %u",i+1);
proto_tree_add_item(flow_tree, hf_rsvp_3gpp_obj_flow_id, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
item_len = 1;
@@ -6254,8 +6181,7 @@ dissect_rsvp_3gpp_object(proto_tree *ti _U_, proto_tree *rsvp_object_tree,
pf_cont_len-=6;
break;
case 129: /* Type 2 Routing Header with Prefix Length */
- ti = proto_tree_add_text(flow_tree, tvb, offset, 17, "Type 2 Routing Header packet filter");
- t2_tree = proto_item_add_subtree(ti, ett_treelist[TT_3GPP_OBJ_T2]);
+ t2_tree = proto_tree_add_subtree(flow_tree, tvb, offset, 17, ett_treelist[TT_3GPP_OBJ_T2], NULL, "Type 2 Routing Header packet filter");
proto_tree_add_item(t2_tree, hf_rsvp_3gpp_obj_pf_ipv6, tvb, offset, 16, ENC_NA);
offset+=16;
proto_tree_add_item(t2_tree, hf_rsvp_3gpp_obj_pf_ipv6_prefix_length, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -6264,8 +6190,7 @@ dissect_rsvp_3gpp_object(proto_tree *ti _U_, proto_tree *rsvp_object_tree,
pf_cont_len-=20;
break;
case 130: /* Home Address Option with Prefix Length */
- ti = proto_tree_add_text(flow_tree, tvb, offset, 17, "Home address Option packet filter");
- t2_tree = proto_item_add_subtree(ti, ett_treelist[TT_3GPP_OBJ_HO]);
+ t2_tree = proto_tree_add_subtree(flow_tree, tvb, offset, 17, ett_treelist[TT_3GPP_OBJ_HO], NULL, "Home address Option packet filter");
proto_tree_add_item(t2_tree, hf_rsvp_3gpp_obj_pf_ipv6, tvb, offset, 16, ENC_NA);
offset+=16;
proto_tree_add_item(t2_tree, hf_rsvp_3gpp_obj_pf_ipv6_prefix_length, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -6315,8 +6240,8 @@ dissect_rsvp_3gpp_object(proto_tree *ti _U_, proto_tree *rsvp_object_tree,
num++;
- ti = proto_tree_add_text(rsvp_object_tree, tvb, offset, -1, "QOS Flow Identifier Num %u", num);
- qos_tree = proto_item_add_subtree(ti, ett_treelist[TT_3GPP_OBJ_QOS]);
+ qos_tree = proto_tree_add_subtree_format(rsvp_object_tree, tvb, offset, -1,
+ ett_treelist[TT_3GPP_OBJ_QOS], NULL, "QOS Flow Identifier Num %u", num);
/* Flow Identifier */
proto_tree_add_item(qos_tree, hf_rsvp_3gpp_obj_flow_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -6340,10 +6265,8 @@ dissect_rsvp_3gpp_object(proto_tree *ti _U_, proto_tree *rsvp_object_tree,
bit_offset = (offset<<3)+7;
for (j = 0; j < num_qos_att_set; j++) {
qos_attribute_set_len = tvb_get_bits8(tvb,bit_offset,4);
- ti = proto_tree_add_text(qos_sub_blob_tree, tvb, bit_offset>>3, qos_attribute_set_len, "QoS_ATTRIBUTE_SET %u(%u bytes)",
- j+1,
- qos_attribute_set_len);
- qos_att_tree = proto_item_add_subtree(ti, ett_treelist[TT_3GPP_OBJ_QOS_SUB_BLOB]);
+ qos_att_tree = proto_tree_add_subtree_format(qos_sub_blob_tree, tvb, bit_offset>>3, qos_attribute_set_len, ett_treelist[TT_3GPP_OBJ_QOS_SUB_BLOB], NULL,
+ "QoS_ATTRIBUTE_SET %u(%u bytes)", j+1, qos_attribute_set_len);
proto_tree_add_bits_item(qos_att_tree, hf_rsvp_3gpp_qos_att_set_len, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
bit_offset+=4;
@@ -6462,7 +6385,7 @@ dissect_rsvp_protection_info(proto_tree *ti, proto_tree *rsvp_object_tree,
int rsvp_class _U_, int type)
{
guint8 flags1, lsp_flags, link_flags, seg_flags;
- proto_tree *ti2, *ti3, *ti4, *rsvp_pi_link_flags_tree, *rsvp_pi_lsp_flags_tree, *rsvp_pi_seg_flags_tree;
+ proto_tree *ti2, *rsvp_pi_link_flags_tree, *rsvp_pi_lsp_flags_tree, *rsvp_pi_seg_flags_tree;
int offset2 = offset + 4;
proto_item_set_text(ti, "PROTECTION_INFO: ");
@@ -6511,15 +6434,14 @@ dissect_rsvp_protection_info(proto_tree *ti, proto_tree *rsvp_object_tree,
tvb, offset2, 1, ENC_BIG_ENDIAN);
lsp_flags = tvb_get_guint8(tvb, offset2+1);
- ti3 = proto_tree_add_text(rsvp_object_tree, tvb, offset2+1, 1,
- "LSP Flags: 0x%02x -%s%s%s%s%s%s", lsp_flags,
+ rsvp_pi_lsp_flags_tree = proto_tree_add_subtree_format(rsvp_object_tree, tvb, offset2+1, 1,
+ TREE(TT_PROTECTION_INFO_LSP), NULL, "LSP Flags: 0x%02x -%s%s%s%s%s%s", lsp_flags,
lsp_flags == 0 ? " Unprotected":"",
lsp_flags&0x01 ? " Rerouting":"",
lsp_flags&0x02 ? " Rerouting with extra-traffic":"",
lsp_flags&0x04 ? " 1:N Protection with extra-traffic":"",
lsp_flags&0x08 ? " 1+1 Unidirectional protection":"",
lsp_flags&0x10 ? " 1+1 Bidirectional protection":"");
- rsvp_pi_lsp_flags_tree = proto_item_add_subtree(ti3, TREE(TT_PROTECTION_INFO_LSP));
proto_tree_add_item(rsvp_pi_lsp_flags_tree, hf_rsvp_pi_lsp_flags_full_rerouting,
tvb, offset2+1, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(rsvp_pi_lsp_flags_tree, hf_rsvp_pi_lsp_flags_rerouting_extra,
@@ -6532,15 +6454,14 @@ dissect_rsvp_protection_info(proto_tree *ti, proto_tree *rsvp_object_tree,
tvb, offset2+1, 1, ENC_BIG_ENDIAN);
link_flags = tvb_get_guint8(tvb, offset2+3);
- ti2 = proto_tree_add_text(rsvp_object_tree, tvb, offset2+3, 1,
- "Link Flags: 0x%02x -%s%s%s%s%s%s", link_flags,
+ rsvp_pi_link_flags_tree = proto_tree_add_subtree_format(rsvp_object_tree, tvb, offset2+3, 1,
+ TREE(TT_PROTECTION_INFO_LINK), NULL, "Link Flags: 0x%02x -%s%s%s%s%s%s", link_flags,
link_flags&0x01 ? " ExtraTraffic":"",
link_flags&0x02 ? " Unprotected":"",
link_flags&0x04 ? " Shared":"",
link_flags&0x08 ? " Dedicated1:1":"",
link_flags&0x10 ? " Dedicated1+1":"",
link_flags&0x20 ? " Enhanced":"");
- rsvp_pi_link_flags_tree = proto_item_add_subtree(ti2, TREE(TT_PROTECTION_INFO_LINK));
proto_tree_add_item(rsvp_pi_link_flags_tree, hf_rsvp_pi_link_flags_extra,
tvb, offset2+3, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(rsvp_pi_link_flags_tree, hf_rsvp_pi_link_flags_unprotected,
@@ -6560,15 +6481,14 @@ dissect_rsvp_protection_info(proto_tree *ti, proto_tree *rsvp_object_tree,
tvb, offset2+4, 1, ENC_BIG_ENDIAN);
seg_flags = tvb_get_guint8(tvb, offset2+5);
- ti4 = proto_tree_add_text(rsvp_object_tree, tvb, offset2+5, 1,
- "Segment recovery Flags: 0x%02x - %s%s%s%s%s%s", seg_flags,
+ rsvp_pi_seg_flags_tree = proto_tree_add_subtree_format(rsvp_object_tree, tvb, offset2+5, 1,
+ TREE(TT_PROTECTION_INFO_SEG), NULL, "Segment recovery Flags: 0x%02x - %s%s%s%s%s%s", seg_flags,
seg_flags == 0 ? " Unprotected":"",
seg_flags&0x01 ? " Rerouting":"",
seg_flags&0x02 ? " Rerouting with extra-traffic":"",
seg_flags&0x04 ? " 1:N Protection with extra-traffic":"",
seg_flags&0x08 ? " 1+1 Unidirectional protection":"",
seg_flags&0x10 ? " 1+1 Bidirectional protection":"");
- rsvp_pi_seg_flags_tree = proto_item_add_subtree(ti4, TREE(TT_PROTECTION_INFO_SEG));
proto_tree_add_item(rsvp_pi_seg_flags_tree, hf_rsvp_pi_seg_flags_full_rerouting,
tvb, offset2+1, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(rsvp_pi_seg_flags_tree, hf_rsvp_pi_seg_flags_rerouting_extra,
@@ -6985,12 +6905,12 @@ dissect_rsvp_msg_tree(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
if (tempfilt_off)
proto_item_append_text(rsvp_tree, "%s", summary_template(tvb, tempfilt_off));
- ti = proto_tree_add_text(rsvp_tree, tvb, offset, 8, "RSVP Header. %s",
+ rsvp_header_tree = proto_tree_add_subtree_format(rsvp_tree, tvb, offset, 8,
+ TREE(TT_HDR), &ti, "RSVP Header. %s",
val_to_str_ext(message_type, &message_type_vals_ext,
"Unknown Message (%u). "));
if (e2ei)
proto_item_append_text(ti, " (E2E-IGNORE)");
- rsvp_header_tree = proto_item_add_subtree(ti, TREE(TT_HDR));
proto_tree_add_item(rsvp_header_tree, hf_rsvp_rsvp_version, tvb, offset, 1, ENC_NA);
proto_tree_add_item(rsvp_header_tree, hf_rsvp_flags, tvb, offset, 1, ENC_NA);
diff --git a/epan/dissectors/packet-rtacser.c b/epan/dissectors/packet-rtacser.c
index c986514c65..fea831cbb1 100644
--- a/epan/dissectors/packet-rtacser.c
+++ b/epan/dissectors/packet-rtacser.c
@@ -189,8 +189,7 @@ dissect_rtacser_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
ring = tvb_get_guint8(tvb, offset) & RTACSER_CTRL_RING;
mbok = tvb_get_guint8(tvb, offset) & RTACSER_CTRL_MBOK;
- cl_item = proto_tree_add_text(rtacser_tree, tvb, offset, 1, "Control Lines");
- cl_tree = proto_item_add_subtree(cl_item, ett_rtacser_cl);
+ cl_tree = proto_tree_add_subtree(rtacser_tree, tvb, offset, 1, ett_rtacser_cl, &cl_item, "Control Lines");
/* Add UART Control Line information to INFO column */
col_append_str(pinfo->cinfo, COL_INFO, " ( ");
diff --git a/epan/dissectors/packet-rtcp.c b/epan/dissectors/packet-rtcp.c
index 29dda871aa..f99fdbbef9 100644
--- a/epan/dissectors/packet-rtcp.c
+++ b/epan/dissectors/packet-rtcp.c
@@ -902,16 +902,14 @@ dissect_rtcp_rtpfb_tmmbr( tvbuff_t *tvb, int offset, proto_tree *rtcp_tree, prot
int bitrate;
int exp;
guint32 mantissa;
- proto_item *ti;
proto_tree *fci_tree;
if (is_notification == 1) {
- ti = proto_tree_add_text( rtcp_tree, tvb, offset, 8, "TMMBN %d", num_fci );
+ fci_tree = proto_tree_add_subtree_format( rtcp_tree, tvb, offset, 8, ett_ssrc, NULL, "TMMBN %d", num_fci );
} else {
- ti = proto_tree_add_text( rtcp_tree, tvb, offset, 8, "TMMBR %d", num_fci );
+ fci_tree = proto_tree_add_subtree_format( rtcp_tree, tvb, offset, 8, ett_ssrc, NULL, "TMMBR %d", num_fci );
}
- fci_tree = proto_item_add_subtree( ti, ett_ssrc );
/* SSRC 32 bit*/
proto_tree_add_item( fci_tree, hf_rtcp_rtpfb_tmbbr_fci_ssrc, tvb, offset, 4, ENC_BIG_ENDIAN );
offset += 4;
@@ -961,8 +959,7 @@ dissect_rtcp_asfb_ms( tvbuff_t *tvb, int offset, proto_tree *tree, packet_info *
if (type == 1)
{
- item = proto_tree_add_text(tree, tvb, offset, hf_rtcp_psfb_ms_length, "MS Video Source Request");
- rtcp_ms_vsr_tree = proto_item_add_subtree(item, ett_ms_vsr);
+ rtcp_ms_vsr_tree = proto_tree_add_subtree(tree, tvb, offset, hf_rtcp_psfb_ms_length, ett_ms_vsr, &item, "MS Video Source Request");
col_append_fstr(pinfo->cinfo, COL_INFO,"( MS-VSR )");
@@ -990,8 +987,8 @@ dissect_rtcp_asfb_ms( tvbuff_t *tvb, int offset, proto_tree *tree, packet_info *
while (num_entries-- && tvb_captured_length_remaining (tvb, offset) >= 0x44)
{
- item = proto_tree_add_text(rtcp_ms_vsr_tree, tvb, offset, 0x44, "MS Video Source Request Entry #%d", ++desc);
- rtcp_ms_vsr_entry_tree = proto_item_add_subtree(item, ett_ms_vsr_entry);
+ rtcp_ms_vsr_entry_tree = proto_tree_add_subtree_format(rtcp_ms_vsr_tree, tvb, offset, 0x44,
+ ett_ms_vsr_entry, NULL, "MS Video Source Request Entry #%d", ++desc);
proto_tree_add_item (rtcp_ms_vsr_entry_tree, hf_rtcp_psfb_ms_vsre_payload_type, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
@@ -1056,8 +1053,7 @@ dissect_rtcp_asfb_ms( tvbuff_t *tvb, int offset, proto_tree *tree, packet_info *
else if (type == 3)
{
/* MS Dominant Speaker History */
- item = proto_tree_add_text(tree, tvb, offset, hf_rtcp_psfb_ms_length, "MS Dominant Speaker History");
- rtcp_ms_ds_tree = proto_item_add_subtree(item, ett_ms_ds);
+ rtcp_ms_ds_tree = proto_tree_add_subtree(tree, tvb, offset, hf_rtcp_psfb_ms_length, ett_ms_ds, NULL, "MS Dominant Speaker History");
col_append_fstr(pinfo->cinfo, COL_INFO,"( MS-DSH )");
while (length-- && tvb_captured_length_remaining (tvb, offset) >= 4)
{
@@ -1083,12 +1079,10 @@ dissect_rtcp_psfb_remb( tvbuff_t *tvb, int offset, proto_tree *rtcp_tree, proto_
guint exp, indexSsrcs;
guint8 numberSsrcs;
guint32 mantissa, bitrate;
- proto_item *ti;
proto_tree *fci_tree;
- ti = proto_tree_add_text( rtcp_tree, tvb, offset, 8, "REMB %d", num_fci );
+ fci_tree = proto_tree_add_subtree_format( rtcp_tree, tvb, offset, 8, ett_ssrc, NULL, "REMB %d", num_fci );
- fci_tree = proto_item_add_subtree( ti, ett_ssrc );
/* Uniquie identifier 'REMB' */
proto_tree_add_item( fci_tree, hf_rtcp_psfb_remb_fci_identifier, tvb, offset, 4, ENC_ASCII|ENC_NA );
offset += 4;
@@ -1305,8 +1299,7 @@ dissect_rtcp_psfb( tvbuff_t *tvb, int offset, proto_tree *rtcp_tree,
case 4: /* Handle FIR */
{
/* Create a new subtree for a length of 8 bytes */
- ti = proto_tree_add_text( rtcp_tree, tvb, offset, 8, "FIR %u", ++counter );
- fci_tree = proto_item_add_subtree( ti, ett_ssrc );
+ fci_tree = proto_tree_add_subtree_format( rtcp_tree, tvb, offset, 8, ett_ssrc, NULL, "FIR %u", ++counter );
/* SSRC 32 bit*/
proto_tree_add_item( fci_tree, hf_rtcp_psfb_fir_fci_ssrc, tvb, offset, 4, ENC_BIG_ENDIAN );
offset += 4;
@@ -1862,12 +1855,13 @@ dissect_rtcp_app( tvbuff_t *tvb,packet_info *pinfo, int offset, proto_tree *tree
case TBCP_CONNECT:
{
- proto_item *content = proto_tree_add_text(PoC1_tree, tvb, offset, 2, "SDES item content");
+ proto_item *content;
+ proto_tree *content_tree = proto_tree_add_subtree(PoC1_tree, tvb, offset, 2,
+ ett_poc1_conn_contents, &content, "SDES item content");
gboolean contents[5];
unsigned int i;
guint8 items_set = 0;
- proto_tree *content_tree = proto_item_add_subtree(content, ett_poc1_conn_contents);
guint16 items_field = tvb_get_ntohs(tvb, offset );
/* Dissect each defined bit flag in the SDES item content */
@@ -2071,9 +2065,8 @@ dissect_rtcp_sdes( tvbuff_t *tvb, int offset, proto_tree *tree,
start_offset = offset;
ssrc = tvb_get_ntohl( tvb, offset );
- sdes_item = proto_tree_add_text(tree, tvb, offset, -1,
- "Chunk %u, SSRC/CSRC 0x%X", chunk, ssrc);
- sdes_tree = proto_item_add_subtree( sdes_item, ett_sdes );
+ sdes_tree = proto_tree_add_subtree_format(tree, tvb, offset, -1,
+ ett_sdes, &sdes_item, "Chunk %u, SSRC/CSRC 0x%X", chunk, ssrc);
/* SSRC_n source identifier, 32 bits */
proto_tree_add_item( sdes_tree, hf_rtcp_ssrc_source, tvb, offset, 4, ENC_BIG_ENDIAN );
@@ -2082,9 +2075,8 @@ dissect_rtcp_sdes( tvbuff_t *tvb, int offset, proto_tree *tree,
/* Create a subtree for the SDES items; we don't yet know
the length */
items_start_offset = offset;
- ti = proto_tree_add_text(sdes_tree, tvb, offset, -1,
- "SDES items" );
- sdes_item_tree = proto_item_add_subtree( ti, ett_sdes_item );
+ sdes_item_tree = proto_tree_add_subtree(sdes_tree, tvb, offset, -1,
+ ett_sdes_item, &ti, "SDES items" );
/*
* Not every message is ended with "null" bytes, so check for
@@ -2238,9 +2230,8 @@ dissect_rtcp_xr(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree,
/*gboolean valid = TRUE;*/
/* Create a subtree for this block, dont know the length yet*/
- proto_item *block = proto_tree_add_text(tree, tvb, offset, -1, "Block %u", block_num);
- proto_tree *xr_block_tree = proto_item_add_subtree(block, ett_xr_block);
- proto_item *contents;
+ proto_item *block;
+ proto_tree *xr_block_tree = proto_tree_add_subtree_format(tree, tvb, offset, -1, ett_xr_block, &block, "Block %u", block_num);
proto_tree *content_tree;
proto_tree_add_item(xr_block_tree, hf_rtcp_xr_block_type, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2267,8 +2258,7 @@ dissect_rtcp_xr(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree,
offset += 4;
packet_len -= 4;
- contents = proto_tree_add_text(xr_block_tree, tvb, offset, content_length, "Contents");
- content_tree = proto_item_add_subtree(contents, ett_xr_block_contents);
+ content_tree = proto_tree_add_subtree(xr_block_tree, tvb, offset, content_length, ett_xr_block_contents, NULL, "Contents");
switch (block_type) {
case RTCP_XR_VOIP_METRCS: {
@@ -2465,8 +2455,7 @@ dissect_rtcp_xr(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree,
gint counter = 0;
for(counter = 0; counter < sources; counter++) {
/* Create a new subtree for a length of 12 bytes */
- proto_tree *ti = proto_tree_add_text(content_tree, tvb, offset, 12, "Source %u", counter + 1);
- proto_tree *ssrc_tree = proto_item_add_subtree(ti, ett_xr_ssrc);
+ proto_tree *ssrc_tree = proto_tree_add_subtree_format(content_tree, tvb, offset, 12, ett_xr_ssrc, NULL, "Source %u", counter + 1);
/* SSRC_n source identifier, 32 bits */
proto_tree_add_item(ssrc_tree, hf_rtcp_ssrc_source, tvb, offset, 4, ENC_BIG_ENDIAN);
@@ -2521,7 +2510,6 @@ dissect_rtcp_xr(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree,
case RTCP_XR_DUP_RLE: {
/* 8 bytes of fixed header */
gint count = 0, skip = 8;
- proto_item *chunks_item;
proto_tree *chunks_tree;
/* Identifier */
@@ -2537,8 +2525,7 @@ dissect_rtcp_xr(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree,
offset += 2;
/* report Chunks */
- chunks_item = proto_tree_add_text(content_tree, tvb, offset, content_length,"Report Chunks");
- chunks_tree = proto_item_add_subtree(chunks_item, ett_xr_loss_chunk);
+ chunks_tree = proto_tree_add_subtree(content_tree, tvb, offset, content_length, ett_xr_loss_chunk, NULL, "Report Chunks");
for(count = 1; skip < content_length; skip += 2, count++) {
guint value = tvb_get_ntohs(tvb, offset);
@@ -2744,8 +2731,7 @@ dissect_rtcp_profile_specific_extensions (packet_info *pinfo, tvbuff_t *tvb, pro
extension_length = 4; /* expert info? */
}
- pse_item = proto_tree_add_text(tree, tvb, offset, extension_length, "Payload Specific Extension");
- pse_tree = proto_item_add_subtree( pse_item, ett_pse);
+ pse_tree = proto_tree_add_subtree(tree, tvb, offset, extension_length, ett_pse, &pse_item, "Payload Specific Extension");
proto_item_append_text(pse_item, " (%s)",
val_to_str_const(extension_type, rtcp_ms_profile_extension_vals, "Unknown"));
col_append_fstr(pinfo->cinfo, COL_INFO, "PSE:%s ",
@@ -2876,16 +2862,14 @@ dissect_rtcp_rr( packet_info *pinfo, tvbuff_t *tvb, int offset, proto_tree *tree
guint32 lsr, dlsr;
/* Create a new subtree for a length of 24 bytes */
- ti = proto_tree_add_text(tree, tvb, offset, 24,
- "Source %u", counter );
- ssrc_tree = proto_item_add_subtree( ti, ett_ssrc );
+ ssrc_tree = proto_tree_add_subtree_format(tree, tvb, offset, 24,
+ ett_ssrc, NULL, "Source %u", counter );
/* SSRC_n source identifier, 32 bits */
proto_tree_add_item( ssrc_tree, hf_rtcp_ssrc_source, tvb, offset, 4, ENC_BIG_ENDIAN );
offset += 4;
- ti = proto_tree_add_text(ssrc_tree, tvb, offset, 20, "SSRC contents" );
- ssrc_sub_tree = proto_item_add_subtree( ti, ett_ssrc_item );
+ ssrc_sub_tree = proto_tree_add_subtree(ssrc_tree, tvb, offset, 20, ett_ssrc_item, NULL, "SSRC contents" );
/* Fraction lost, 8bits */
rr_flt = tvb_get_guint8( tvb, offset );
diff --git a/epan/dissectors/packet-rtmpt.c b/epan/dissectors/packet-rtmpt.c
index 0ffc04e299..90e8c8f4f9 100644
--- a/epan/dissectors/packet-rtmpt.c
+++ b/epan/dissectors/packet-rtmpt.c
@@ -878,7 +878,6 @@ dissect_amf0_property_list(tvbuff_t *tvb, gint offset, proto_tree *tree, guint *
{
proto_item *prop_ti;
proto_tree *prop_tree;
- proto_item *name_ti;
proto_tree *name_tree;
guint iStringLength;
gchar *iStringValue;
@@ -898,15 +897,13 @@ dissect_amf0_property_list(tvbuff_t *tvb, gint offset, proto_tree *tree, guint *
break;
count++;
iStringValue = tvb_get_string_enc(wmem_packet_scope(), tvb, offset + 2, iStringLength, ENC_ASCII);
- prop_ti = proto_tree_add_text(tree, tvb, offset, -1,
- "Property '%s'",
+ prop_tree = proto_tree_add_subtree_format(tree, tvb, offset, -1,
+ ett_amf_property, &prop_ti, "Property '%s'",
iStringValue);
- prop_tree = proto_item_add_subtree(prop_ti, ett_amf_property);
- name_ti = proto_tree_add_text(prop_tree, tvb,
+ name_tree = proto_tree_add_subtree_format(prop_tree, tvb,
offset, 2+iStringLength,
- "Name: %s", iStringValue);
- name_tree = proto_item_add_subtree(name_ti, ett_amf_string);
+ ett_amf_string, NULL, "Name: %s", iStringValue);
proto_tree_add_uint(name_tree, hf_amf_stringlength, tvb, offset, 2, iStringLength);
offset += 2;
@@ -1186,9 +1183,7 @@ dissect_amf3_value_type(tvbuff_t *tvb, gint offset, proto_tree *tree, proto_item
guint iTraitCount;
proto_item *traits_ti;
proto_tree *traits_tree;
- proto_item *name_ti;
proto_tree *name_tree;
- proto_item *member_ti;
proto_tree *member_tree;
guint8 *iByteArrayValue;
@@ -1343,15 +1338,15 @@ dissect_amf3_value_type(tvbuff_t *tvb, gint offset, proto_tree *tree, proto_item
break;
}
iStringValue = tvb_get_string_enc(wmem_packet_scope(), tvb, iValueOffset+iValueLength, iStringLength, ENC_UTF_8|ENC_NA);
- subval_ti = proto_tree_add_text(val_tree, tvb, iValueOffset, iStringLength, "%s:", iStringValue);
- subval_tree = proto_item_add_subtree(subval_ti, ett_amf_array_element);
+ subval_tree = proto_tree_add_subtree(val_tree, tvb, iValueOffset, iStringLength,
+ ett_amf_array_element, &subval_ti, iStringValue);
proto_tree_add_uint(subval_tree, hf_amf_stringlength, tvb, iValueOffset, iValueLength, iStringLength);
iValueOffset += iValueLength;
proto_tree_add_string(subval_tree, hf_amf_string, tvb, iValueOffset, iStringLength, iStringValue);
} else {
/* the upper 28 bits of the integer value are a string reference index */
- subval_ti = proto_tree_add_text(val_tree, tvb, iValueOffset, iValueLength, "Reference %u:", iIntegerValue >> 1);
- subval_tree = proto_item_add_subtree(subval_ti, ett_amf_array_element);
+ subval_tree = proto_tree_add_subtree_format(val_tree, tvb, iValueOffset, iValueLength,
+ ett_amf_array_element, &subval_ti, "Reference %u:", iIntegerValue >> 1);
proto_tree_add_uint(subval_tree, hf_amf_string_reference, tvb, iValueOffset, iValueLength, iIntegerValue >> 1);
}
@@ -1408,22 +1403,21 @@ dissect_amf3_value_type(tvbuff_t *tvb, gint offset, proto_tree *tree, proto_item
/* the upper 28 bits of the integer value is a string length */
iStringLength = iIntegerValue >> 1;
iStringValue = tvb_get_string_enc(wmem_packet_scope(), tvb, iValueOffset+iValueLength, iStringLength, ENC_UTF_8|ENC_NA);
- traits_ti = proto_tree_add_text(val_tree, tvb, iValueOffset, -1, "Traits for class %s (%u member names)", iStringValue, iTraitCount);
- traits_tree = proto_item_add_subtree(traits_ti, ett_amf_traits);
- name_ti = proto_tree_add_text(traits_tree, tvb,
+ traits_tree = proto_tree_add_subtree_format(val_tree, tvb, iValueOffset, -1,
+ ett_amf_traits, &traits_ti, "Traits for class %s (%u member names)", iStringValue, iTraitCount);
+ name_tree = proto_tree_add_subtree_format(traits_tree, tvb,
iValueOffset,
iValueLength+iStringLength,
- "Class name: %s",
+ ett_amf_string, NULL, "Class name: %s",
iStringValue);
- name_tree = proto_item_add_subtree(name_ti, ett_amf_string);
proto_tree_add_uint(name_tree, hf_amf_classnamelength, tvb, iValueOffset, iValueLength, iStringLength);
iValueOffset += iValueLength;
proto_tree_add_string(name_tree, hf_amf_classname, tvb, iValueOffset, iStringLength, iStringValue);
iValueOffset += iStringLength;
} else {
/* the upper 28 bits of the integer value are a string reference index */
- traits_ti = proto_tree_add_text(val_tree, tvb, iValueOffset, iValueLength, "Traits for class (reference %u for name)", iIntegerValue >> 1);
- traits_tree = proto_item_add_subtree(traits_ti, ett_amf_traits);
+ traits_tree = proto_tree_add_subtree_format(val_tree, tvb, iValueOffset, iValueLength,
+ ett_amf_traits, &traits_ti, "Traits for class (reference %u for name)", iIntegerValue >> 1);
proto_tree_add_uint(traits_tree, hf_amf_string_reference, tvb, iValueOffset, iValueLength, iIntegerValue >> 1);
iValueOffset += iValueLength;
}
@@ -1433,8 +1427,8 @@ dissect_amf3_value_type(tvbuff_t *tvb, gint offset, proto_tree *tree, proto_item
/* the upper 28 bits of the integer value is a string length */
iStringLength = iIntegerValue >> 1;
iStringValue = tvb_get_string_enc(wmem_packet_scope(), tvb, iValueOffset+iValueLength, iStringLength, ENC_UTF_8|ENC_NA);
- member_ti = proto_tree_add_text(traits_tree, tvb, iValueOffset, iValueLength+iStringLength, "Member '%s'", iStringValue);
- member_tree = proto_item_add_subtree(member_ti, ett_amf_trait_member);
+ member_tree = proto_tree_add_subtree_format(traits_tree, tvb, iValueOffset, iValueLength+iStringLength,
+ ett_amf_trait_member, NULL, "Member '%s'", iStringValue);
proto_tree_add_uint(member_tree, hf_amf_membernamelength, tvb, iValueOffset, iValueLength, iStringLength);
iValueOffset += iValueLength;
proto_tree_add_string(member_tree, hf_amf_membername, tvb, iValueOffset, iStringLength, iStringValue);
@@ -1461,22 +1455,21 @@ dissect_amf3_value_type(tvbuff_t *tvb, gint offset, proto_tree *tree, proto_item
break;
}
iStringValue = tvb_get_string_enc(wmem_packet_scope(), tvb, iValueOffset+iValueLength, iStringLength, ENC_UTF_8|ENC_NA);
- subval_ti = proto_tree_add_text(traits_tree, tvb, iValueOffset, -1, "%s:", iStringValue);
- subval_tree = proto_item_add_subtree(subval_ti, ett_amf_array_element);
- name_ti = proto_tree_add_text(subval_tree, tvb,
+ subval_tree = proto_tree_add_subtree_format(traits_tree, tvb, iValueOffset, -1,
+ ett_amf_array_element, &subval_ti, "%s:", iStringValue);
+ name_tree = proto_tree_add_subtree_format(subval_tree, tvb,
iValueOffset,
iValueLength+iStringLength,
- "Member name: %s",
+ ett_amf_string, NULL, "Member name: %s",
iStringValue);
- name_tree = proto_item_add_subtree(name_ti, ett_amf_string);
proto_tree_add_uint(name_tree, hf_amf_membernamelength, tvb, iValueOffset, iValueLength, iStringLength);
iValueOffset += iValueLength;
proto_tree_add_string(name_tree, hf_amf_membername, tvb, iValueOffset, iStringLength, iStringValue);
iValueOffset += iStringLength;
} else {
/* the upper 28 bits of the integer value are a string reference index */
- subval_ti = proto_tree_add_text(traits_tree, tvb, iValueOffset, iValueLength, "Reference %u:", iIntegerValue >> 1);
- subval_tree = proto_item_add_subtree(subval_ti, ett_amf_array_element);
+ subval_tree = proto_tree_add_subtree_format(traits_tree, tvb, iValueOffset, iValueLength,
+ ett_amf_array_element, &subval_ti, "Reference %u:", iIntegerValue >> 1);
proto_tree_add_uint(subval_tree, hf_amf_string_reference, tvb, iValueOffset, iValueLength, iIntegerValue >> 1);
iValueOffset += iValueLength;
}
@@ -1633,11 +1626,9 @@ dissect_rtmpt_body_video(tvbuff_t *tvb, gint offset, proto_tree *rtmpt_tree)
static void
dissect_rtmpt_body_aggregate(tvbuff_t *tvb, gint offset, proto_tree *rtmpt_tree)
{
- proto_item *tag_item = NULL;
- proto_tree *tag_tree = NULL;
+ proto_tree *tag_tree;
- proto_item *data_item = NULL;
- proto_tree *data_tree = NULL;
+ proto_tree *data_tree;
while (tvb_length_remaining(tvb, offset) > 0) {
guint8 iTagType;
@@ -1646,17 +1637,15 @@ dissect_rtmpt_body_aggregate(tvbuff_t *tvb, gint offset, proto_tree *rtmpt_tree)
iTagType = tvb_get_guint8(tvb, offset + 0);
iDataSize = tvb_get_ntoh24(tvb, offset + 1);
- tag_item = proto_tree_add_text(rtmpt_tree, tvb, offset, 11+iDataSize+4, "%s",
+ tag_tree = proto_tree_add_subtree(rtmpt_tree, tvb, offset, 11+iDataSize+4, ett_rtmpt_tag, NULL,
val_to_str_const(iTagType, rtmpt_tag_vals, "Unknown Tag"));
- tag_tree = proto_item_add_subtree(tag_item, ett_rtmpt_tag);
proto_tree_add_item(tag_tree, hf_rtmpt_tag_type, tvb, offset+0, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(tag_tree, hf_rtmpt_tag_datasize, tvb, offset+1, 3, ENC_BIG_ENDIAN);
proto_tree_add_item(tag_tree, hf_rtmpt_tag_timestamp, tvb, offset+4, 3, ENC_BIG_ENDIAN);
proto_tree_add_item(tag_tree, hf_rtmpt_tag_ets, tvb, offset+7, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(tag_tree, hf_rtmpt_tag_streamid, tvb, offset+8, 3, ENC_BIG_ENDIAN);
- data_item = proto_tree_add_text(tag_tree, tvb, offset+11, iDataSize, "Data");
- data_tree = proto_item_add_subtree(data_item, ett_rtmpt_tag_data);
+ data_tree = proto_tree_add_subtree(tag_tree, tvb, offset+11, iDataSize, ett_rtmpt_tag_data, NULL, "Data");
switch (iTagType) {
case 8:
@@ -1764,9 +1753,8 @@ dissect_rtmpt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, rtmpt_conv_t
proto_item_append_text(ti, " (%s)",
val_to_str(tp->id, rtmpt_handshake_vals, "Unknown (0x%01x)"));
rtmptroot_tree = proto_item_add_subtree(ti, ett_rtmpt);
- ti = proto_tree_add_text(rtmptroot_tree, tvb, offset, -1, "%s",
+ rtmpt_tree = proto_tree_add_subtree(rtmptroot_tree, tvb, offset, -1, ett_rtmpt_handshake, NULL,
val_to_str(tp->id, rtmpt_handshake_vals, "Unknown (0x%01x)"));
- rtmpt_tree = proto_item_add_subtree(ti, ett_rtmpt_handshake);
if (tp->id == RTMPT_TYPE_HANDSHAKE_1)
{
@@ -1807,9 +1795,8 @@ dissect_rtmpt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, rtmpt_conv_t
}
/* Dissect header fields */
- ti = proto_tree_add_text(rtmptroot_tree, tvb, offset, tp->bhlen+tp->mhlen, RTMPT_TEXT_RTMP_HEADER);
+ rtmpt_tree = proto_tree_add_subtree(rtmptroot_tree, tvb, offset, tp->bhlen+tp->mhlen, ett_rtmpt_header, NULL, RTMPT_TEXT_RTMP_HEADER);
/* proto_item_append_text(ti, " (%s)", val_to_str(tp->cmd, rtmpt_opcode_vals, "Unknown (0x%01x)")); */
- rtmpt_tree = proto_item_add_subtree(ti, ett_rtmpt_header);
if (tp->fmt <= 3) proto_tree_add_item(rtmpt_tree, hf_rtmpt_header_format, tvb, offset + 0, 1, ENC_BIG_ENDIAN);
if (tp->fmt <= 3) proto_tree_add_item(rtmpt_tree, hf_rtmpt_header_csid, tvb, offset + 0, tp->bhlen, ENC_BIG_ENDIAN);
@@ -1834,8 +1821,7 @@ dissect_rtmpt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, rtmpt_conv_t
if (tp->len == 0) return;
offset = iBodyOffset;
- ti = proto_tree_add_text(rtmptroot_tree, tvb, offset, -1, RTMPT_TEXT_RTMP_BODY);
- rtmpt_tree = proto_item_add_subtree(ti, ett_rtmpt_body);
+ rtmpt_tree = proto_tree_add_subtree(rtmptroot_tree, tvb, offset, -1, ett_rtmpt_body, NULL, RTMPT_TEXT_RTMP_BODY);
switch (tp->cmd) {
case RTMPT_TYPE_CHUNK_SIZE:
@@ -2498,8 +2484,7 @@ dissect_amf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
proto_tree_add_uint(amf_tree, hf_amf_header_count, tvb, offset, 2, header_count);
offset += 2;
if (header_count != 0) {
- ti = proto_tree_add_text(amf_tree, tvb, offset, -1, "Headers");
- headers_tree = proto_item_add_subtree(ti, ett_amf_headers);
+ headers_tree = proto_tree_add_subtree(amf_tree, tvb, offset, -1, ett_amf_headers, NULL, "Headers");
for (i = 0; i < header_count; i++) {
string_length = tvb_get_ntohs(tvb, offset);
proto_tree_add_item(headers_tree, hf_amf_header_name, tvb, offset, 2, ENC_BIG_ENDIAN|ENC_UTF_8);
@@ -2522,8 +2507,7 @@ dissect_amf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
proto_tree_add_uint(amf_tree, hf_amf_message_count, tvb, offset, 2, message_count);
offset += 2;
if (message_count != 0) {
- ti = proto_tree_add_text(amf_tree, tvb, offset, -1, "Messages");
- messages_tree = proto_item_add_subtree(ti, ett_amf_messages);
+ messages_tree = proto_tree_add_subtree(amf_tree, tvb, offset, -1, ett_amf_messages, NULL, "Messages");
for (i = 0; i < message_count; i++) {
string_length = tvb_get_ntohs(tvb, offset);
proto_tree_add_item(messages_tree, hf_amf_message_target_uri, tvb, offset, 2, ENC_BIG_ENDIAN|ENC_UTF_8);
diff --git a/epan/dissectors/packet-rtp.c b/epan/dissectors/packet-rtp.c
index 72a748ed80..439190eb4c 100644
--- a/epan/dissectors/packet-rtp.c
+++ b/epan/dissectors/packet-rtp.c
@@ -1718,8 +1718,8 @@ dissect_rtp_rfc2198(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
guint8 octet1;
int cnt;
gboolean hdr_follow = TRUE;
- proto_item *ti = NULL;
- proto_tree *rfc2198_tree = NULL;
+ proto_item *ti;
+ proto_tree *rfc2198_tree;
proto_tree *rfc2198_hdr_tree = NULL;
rfc2198_hdr *hdr_last, *hdr_new;
rfc2198_hdr *hdr_chain = NULL;
@@ -1730,8 +1730,7 @@ dissect_rtp_rfc2198(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
p_conv_data = (struct _rtp_conversation_info *)p_get_proto_data(wmem_file_scope(), pinfo, proto_rtp, 0);
/* Add try to RFC 2198 data */
- ti = proto_tree_add_text(tree, tvb, offset, -1, "RFC 2198: Redundant Audio Data");
- rfc2198_tree = proto_item_add_subtree(ti, ett_rtp_rfc2198);
+ rfc2198_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_rtp_rfc2198, NULL, "RFC 2198: Redundant Audio Data");
hdr_last = NULL;
cnt = 0;
@@ -1753,8 +1752,8 @@ dissect_rtp_rfc2198(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
}
/* Add a subtree for this header and add items */
- ti = proto_tree_add_text(rfc2198_tree, tvb, offset, (hdr_follow)?4:1, "Header %u", cnt);
- rfc2198_hdr_tree = proto_item_add_subtree(ti, ett_rtp_rfc2198_hdr);
+ rfc2198_hdr_tree = proto_tree_add_subtree_format(rfc2198_tree, tvb, offset, (hdr_follow)?4:1,
+ ett_rtp_rfc2198_hdr, &ti, "Header %u", cnt);
proto_tree_add_item(rfc2198_hdr_tree, hf_rtp_rfc2198_follow, tvb, offset, 1, ENC_BIG_ENDIAN );
proto_tree_add_uint_format_value(rfc2198_hdr_tree, hf_rtp_payload_type, tvb,
offset, 1, octet1, "%s (%u)",
@@ -1802,7 +1801,6 @@ static void
dissect_rtp_hext_rfc5215_onebyte( tvbuff_t *tvb, packet_info *pinfo,
proto_tree *rtp_hext_tree )
{
- proto_item *ti = NULL;
proto_tree *rtp_hext_rfc5285_tree = NULL;
guint ext_offset = 0, start_ext_offset;
@@ -1833,8 +1831,8 @@ dissect_rtp_hext_rfc5215_onebyte( tvbuff_t *tvb, packet_info *pinfo,
ext_length = (ext_hdr_hdr & 0x0F) + 1;
if (rtp_hext_tree) {
- ti = proto_tree_add_text(rtp_hext_tree, tvb, ext_offset, ext_length + 1, "RFC 5285 Header Extension (One-Byte Header)");
- rtp_hext_rfc5285_tree = proto_item_add_subtree( ti, ett_hdr_ext_rfc5285);
+ rtp_hext_rfc5285_tree = proto_tree_add_subtree(rtp_hext_tree, tvb, ext_offset, ext_length + 1,
+ ett_hdr_ext_rfc5285, NULL, "RFC 5285 Header Extension (One-Byte Header)");
proto_tree_add_uint( rtp_hext_rfc5285_tree, hf_rtp_ext_rfc5285_id, tvb, ext_offset, 1, ext_id);
proto_tree_add_uint( rtp_hext_rfc5285_tree, hf_rtp_ext_rfc5285_length, tvb, ext_offset, 1, ext_length);
@@ -1856,7 +1854,6 @@ static void
dissect_rtp_hext_rfc5215_twobytes(tvbuff_t *parent_tvb, guint id_offset,
guint8 id, tvbuff_t *tvb, packet_info *pinfo, proto_tree *rtp_hext_tree)
{
- proto_item *ti = NULL;
proto_tree *rtp_hext_rfc5285_tree = NULL;
guint ext_offset = 0, start_ext_offset;
@@ -1880,8 +1877,8 @@ dissect_rtp_hext_rfc5215_twobytes(tvbuff_t *parent_tvb, guint id_offset,
ext_length = tvb_get_guint8 (tvb, ext_offset + 1);
if (rtp_hext_tree) {
- ti = proto_tree_add_text(rtp_hext_tree, tvb, ext_offset, ext_length + 2, "RFC 5285 Header Extension (Two-Byte Header)");
- rtp_hext_rfc5285_tree = proto_item_add_subtree( ti, ett_hdr_ext_rfc5285);
+ rtp_hext_rfc5285_tree = proto_tree_add_subtree(rtp_hext_tree, tvb, ext_offset, ext_length + 2,
+ ett_hdr_ext_rfc5285, NULL, "RFC 5285 Header Extension (Two-Byte Header)");
proto_tree_add_uint( rtp_hext_rfc5285_tree, hf_rtp_ext_rfc5285_appbits, parent_tvb, id_offset + 1, 1, id & 0x000F);
proto_tree_add_uint( rtp_hext_rfc5285_tree, hf_rtp_ext_rfc5285_id, tvb, ext_offset, 1, ext_id);
diff --git a/epan/dissectors/packet-rtps.c b/epan/dissectors/packet-rtps.c
index c2dbfa7645..9167ef0fed 100644
--- a/epan/dissectors/packet-rtps.c
+++ b/epan/dissectors/packet-rtps.c
@@ -1051,13 +1051,12 @@ guint16 rtps_util_add_vendor_id(proto_tree *tree,
void rtps_util_add_locator_t(proto_tree *tree, packet_info *pinfo, tvbuff_t * tvb, gint offset,
gboolean little_endian, const guint8 * label) {
- proto_item * ti;
+ proto_tree * ti;
proto_tree * locator_tree;
gint32 kind;
guint32 port;
- ti = proto_tree_add_text(tree, tvb, offset, 24, "%s", label);
- locator_tree = proto_item_add_subtree(ti, ett_rtps_locator);
+ locator_tree = proto_tree_add_subtree(tree, tvb, offset, 24, ett_rtps_locator, NULL, label);
kind = NEXT_guint32(tvb, offset, little_endian);
port = NEXT_guint32(tvb, offset+4, little_endian);
@@ -1087,24 +1086,21 @@ void rtps_util_add_locator_t(proto_tree *tree, packet_info *pinfo, tvbuff_t * tv
int rtps_util_add_locator_list(proto_tree *tree, packet_info *pinfo, tvbuff_t * tvb,
gint offset, const guint8* label, gboolean little_endian) {
- proto_item *ti;
proto_tree *locator_tree;
guint32 num_locators;
num_locators = NEXT_guint32(tvb, offset, little_endian);
- if (tree) {
- ti = proto_tree_add_text(tree, tvb, offset, 4,
- "%s: %d Locators", label, num_locators);
- } else {
+ if (tree == NULL) {
return offset + 4 + ((num_locators > 0) ? (24 * num_locators) : 0);
}
+
+ locator_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4,
+ ett_rtps_locator_udp_v4, NULL, "%s: %d Locators", label, num_locators);
offset += 4;
if (num_locators > 0) {
guint32 i;
char temp_buff[20];
- locator_tree = proto_item_add_subtree(ti, ett_rtps_locator_udp_v4);
-
for (i = 0; i < num_locators; ++i) {
g_snprintf(temp_buff, 20, "Locator[%d]", i);
rtps_util_add_locator_t(locator_tree, pinfo, tvb, offset,
@@ -1151,8 +1147,7 @@ void rtps_util_add_locator_udp_v4(proto_tree *tree, packet_info *pinfo, tvbuff_t
proto_tree * locator_tree;
guint32 port;
- ti = proto_tree_add_text(tree, tvb, offset, 8, "%s", label);
- locator_tree = proto_item_add_subtree(ti, ett_rtps_locator_udp_v4);
+ locator_tree = proto_tree_add_subtree(tree, tvb, offset, 8, ett_rtps_locator_udp_v4, NULL, label);
rtps_util_add_ipv4_address_t(locator_tree, pinfo, tvb, offset,
little_endian, hf_rtps_locator_udp_v4);
@@ -1229,12 +1224,11 @@ static void rtps_util_add_guid_prefix_v2(proto_tree *tree, tvbuff_t *tvb, gint o
safe_label = (label == NULL) ? (const guint8 *)"guidPrefix" : label;
if (tree) {
- proto_item * ti, *hidden_item;
- proto_tree * guid_tree;
+ proto_item *hidden_item;
+ proto_tree *guid_tree;
/* The text node (root of the guid prefix sub-tree) */
- ti = proto_tree_add_text(tree, tvb, offset, 12, "%s", safe_label);
- guid_tree = proto_item_add_subtree(ti, ett_rtps_guid_prefix);
+ guid_tree = proto_tree_add_subtree(tree, tvb, offset, 12, ett_rtps_guid_prefix, NULL, safe_label);
/* The numeric value (used for searches) */
hidden_item = proto_tree_add_item(guid_tree, hf_prefix, tvb, offset, 8, ENC_NA);
@@ -1521,11 +1515,9 @@ void rtps_util_add_durability_service_qos(proto_tree *tree,
tvbuff_t * tvb,
gint offset,
gboolean little_endian) {
- proto_item *ti;
proto_tree *subtree;
- ti = proto_tree_add_text(tree, tvb, offset, 28, "PID_DURABILITY_SERVICE");
- subtree = proto_item_add_subtree(ti, ett_rtps_durability_service);
+ subtree = proto_tree_add_subtree(tree, tvb, offset, 28, ett_rtps_durability_service, NULL, "PID_DURABILITY_SERVICE");
rtps_util_add_ntp_time(subtree, tvb, offset, little_endian, hf_rtps_durability_service_cleanup_delay);
proto_tree_add_item(subtree, hf_rtps_durability_service_history_kind, tvb, offset+8, 4,
@@ -1546,11 +1538,9 @@ void rtps_util_add_durability_service_qos(proto_tree *tree,
*/
void rtps_util_add_liveliness_qos(proto_tree *tree, tvbuff_t * tvb, gint offset, gboolean little_endian) {
- proto_item *ti;
proto_tree *subtree;
- ti = proto_tree_add_text(tree, tvb, offset, 12, "PID_LIVELINESS");
- subtree = proto_item_add_subtree(ti, ett_rtps_liveliness);
+ subtree = proto_tree_add_subtree(tree, tvb, offset, 12, ett_rtps_liveliness, NULL, "PID_LIVELINESS");
proto_tree_add_item(subtree, hf_rtps_liveliness_kind, tvb, offset, 4,
little_endian ? ENC_LITTLE_ENDIAN : ENC_BIG_ENDIAN);
@@ -1569,15 +1559,13 @@ gint rtps_util_add_seq_string(proto_tree *tree, tvbuff_t* tvb, gint offset,
guint32 i, num_strings, size;
const guint8 * retVal;
proto_tree *string_tree;
- proto_item *ti;
num_strings = NEXT_guint32(tvb, offset, little_endian);
proto_tree_add_int(tree, hf_numstring, tvb, offset, 4, num_strings);
offset += 4;
/* Create the string node with a fake string, the replace it later */
- ti = proto_tree_add_text(tree, tvb, offset, param_length-8, "%s", label);
- string_tree = proto_item_add_subtree(ti, ett_rtps_seq_string);
+ string_tree = proto_tree_add_subtree(tree, tvb, offset, param_length-8, ett_rtps_seq_string, NULL, label);
for (i = 0; i < num_strings; ++i) {
size = NEXT_guint32(tvb, offset, little_endian);
@@ -1608,14 +1596,13 @@ gint rtps_util_add_seq_ulong(proto_tree *tree, tvbuff_t * tvb, gint offset, int
guint32 num_elem;
guint32 i;
proto_tree *string_tree;
- proto_item *ti;
num_elem = NEXT_guint32(tvb, offset, little_endian);
offset += 4;
/* Create the string node with an empty string, the replace it later */
- ti = proto_tree_add_text(tree, tvb, offset, num_elem*4, "%s (%d elements)", label, num_elem);
- string_tree = proto_item_add_subtree(ti, ett_rtps_seq_ulong);
+ string_tree = proto_tree_add_subtree_format(tree, tvb, offset, num_elem*4,
+ ett_rtps_seq_ulong, NULL, "%s (%d elements)", label, num_elem);
for (i = 0; i < num_elem; ++i) {
proto_tree_add_item(string_tree, hf_item, tvb, offset, 4, little_endian ? ENC_LITTLE_ENDIAN : ENC_BIG_ENDIAN);
@@ -2268,8 +2255,7 @@ static int rtps_util_add_bitmap(proto_tree *tree,
const gint original_offset = offset;
guint32 datamask;
- ti = proto_tree_add_text(tree, tvb, original_offset, offset-original_offset, "%s", label);
- bitmap_tree = proto_item_add_subtree(ti, ett_rtps_bitmap);
+ bitmap_tree = proto_tree_add_subtree(tree, tvb, original_offset, offset-original_offset, ett_rtps_bitmap, &ti, label);
/* Bitmap base sequence number */
rtps_util_add_seq_number(bitmap_tree, tvb, offset, little_endian, "bitmapBase");
@@ -2339,7 +2325,7 @@ static int rtps_util_add_fragment_number_set(proto_tree *tree, packet_info *pinf
gint expected_size;
gint base_size;
- ti = proto_tree_add_text(tree, tvb, original_offset, offset-original_offset, "%s", label);
+ bitmap_tree = proto_tree_add_subtree(tree, tvb, original_offset, offset-original_offset, ett_rtps_bitmap, &ti, label);
/* RTI DDS 4.2d was sending the FragmentNumber_t as a 64-bit long integer
* instead of 32-bit long.
@@ -2391,8 +2377,6 @@ static int rtps_util_add_fragment_number_set(proto_tree *tree, packet_info *pinf
wmem_strbuf_truncate(temp_buff, (gsize) (last_one - wmem_strbuf_get_str(temp_buff)));
}
- bitmap_tree = proto_item_add_subtree(ti, ett_rtps_bitmap);
-
if (base_size == 8) {
proto_tree_add_uint64(bitmap_tree, hf_rtps_fragment_number_base64, tvb, original_offset, 8,
base);
@@ -2502,7 +2486,6 @@ static gboolean dissect_parameter_sequence_v1(proto_tree *rtps_parameter_tree, p
proto_item* parameter_item, proto_item* param_len_item, gint offset,
gboolean little_endian, int size, int param_length,
guint16 parameter, guint16 version) {
- proto_item *ti;
proto_tree *subtree;
switch(parameter) {
@@ -3054,8 +3037,7 @@ static gboolean dissect_parameter_sequence_v1(proto_tree *rtps_parameter_tree, p
*/
case PID_RESOURCE_LIMIT:
ENSURE_LENGTH(12);
- ti = proto_tree_add_text(rtps_parameter_tree, tvb, offset, 12, "Resource Limit");
- subtree = proto_item_add_subtree(ti, ett_rtps_resource_limit);
+ subtree = proto_tree_add_subtree(rtps_parameter_tree, tvb, offset, 12, ett_rtps_resource_limit, NULL, "Resource Limit");
proto_tree_add_item(subtree, hf_rtps_resource_limit_max_samples, tvb, offset, 4, little_endian ? ENC_LITTLE_ENDIAN : ENC_BIG_ENDIAN);
proto_tree_add_item(subtree, hf_rtps_resource_limit_max_instances, tvb, offset+4, 4, little_endian ? ENC_LITTLE_ENDIAN : ENC_BIG_ENDIAN);
proto_tree_add_item(subtree, hf_rtps_resource_limit_max_samples_per_instances, tvb, offset+8, 4, little_endian ? ENC_LITTLE_ENDIAN : ENC_BIG_ENDIAN);
@@ -3394,8 +3376,7 @@ static gboolean dissect_parameter_sequence_v1(proto_tree *rtps_parameter_tree, p
int i = 0;
guint32 manager_key;
- ti = proto_tree_add_text(rtps_parameter_tree, tvb, offset, param_length, "Manager Keys");
- subtree = proto_item_add_subtree(ti, ett_rtps_manager_key);
+ subtree = proto_tree_add_subtree(rtps_parameter_tree, tvb, offset, param_length, ett_rtps_manager_key, NULL, "Manager Keys");
while (param_length >= 4) {
manager_key = NEXT_guint32(tvb, offset, little_endian);
@@ -3845,8 +3826,8 @@ static gboolean dissect_parameter_sequence_v2(proto_tree *rtps_parameter_tree, p
for (ch = 0; ch < number_of_channels; ++ch) {
g_snprintf(temp_buff, 20, "Channel[%u]", ch);
old_offset = off;
- ti_channel = proto_tree_add_text(rtps_parameter_tree, tvb, off, 0, "Channel[%u]", ch);
- channel_tree = proto_item_add_subtree(ti_channel, ett_rtps_locator_filter_channel);
+ channel_tree = proto_tree_add_subtree_format(rtps_parameter_tree, tvb, off, 0,
+ ett_rtps_locator_filter_channel, &ti_channel, "Channel[%u]", ch);
off = rtps_util_add_locator_list(channel_tree, pinfo, tvb, off, temp_buff, little_endian);
/* Filter expression */
@@ -3907,8 +3888,7 @@ static gint dissect_parameter_sequence(proto_tree *tree, packet_info *pinfo, tvb
guint16 parameter, param_length;
gint original_offset = offset;
- ti = proto_tree_add_text(tree, tvb, offset, -1, "%s:", label);
- rtps_parameter_sequence_tree = proto_item_add_subtree(ti, ett_rtps_parameter_sequence);
+ rtps_parameter_sequence_tree = proto_tree_add_subtree_format(tree, tvb, offset, -1, ett_rtps_parameter_sequence, &ti, "%s:", label);
/* Loop through all the parameters defined until PID_SENTINEL is found */
for (;;) {
@@ -3925,15 +3905,13 @@ static gint dissect_parameter_sequence(proto_tree *tree, packet_info *pinfo, tvb
*/
parameter = NEXT_guint16(tvb, offset, little_endian);
if (version < 0x0200) {
- param_item = proto_tree_add_text(rtps_parameter_sequence_tree, tvb, offset, -1,
- "%s", val_to_str(parameter, parameter_id_vals, "Unknown (0x%04x)"));
- rtps_parameter_tree = proto_item_add_subtree(param_item, ett_rtps_parameter);
+ rtps_parameter_tree = proto_tree_add_subtree(rtps_parameter_sequence_tree, tvb, offset, -1,
+ ett_rtps_parameter, &param_item, val_to_str(parameter, parameter_id_vals, "Unknown (0x%04x)"));
proto_tree_add_uint(rtps_parameter_tree, hf_rtps_parameter_id, tvb, offset, 2, parameter);
} else {
- param_item = proto_tree_add_text(rtps_parameter_sequence_tree, tvb, offset, -1,
- "%s", val_to_str(parameter, parameter_id_v2_vals, "Unknown (0x%04x)"));
- rtps_parameter_tree = proto_item_add_subtree(param_item, ett_rtps_parameter);
+ rtps_parameter_tree = proto_tree_add_subtree(rtps_parameter_sequence_tree, tvb, offset, -1,
+ ett_rtps_parameter, &param_item, val_to_str(parameter, parameter_id_v2_vals, "Unknown (0x%04x)"));
proto_tree_add_uint(rtps_parameter_tree, hf_rtps_parameter_id_v2, tvb, offset, 2, parameter);
}
@@ -4006,8 +3984,7 @@ static void dissect_serialized_data(proto_tree *tree, packet_info *pinfo, tvbuff
gboolean encapsulation_little_endian = FALSE;
/* Creates the sub-tree */
- ti = proto_tree_add_text(tree, tvb, offset, -1, "%s", label);
- rtps_parameter_sequence_tree = proto_item_add_subtree(ti, ett_rtps_serialized_data);
+ rtps_parameter_sequence_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_rtps_serialized_data, &ti, label);
/* Encapsulation ID */
encapsulation_id = NEXT_guint16(tvb, offset, FALSE); /* Always big endian */
@@ -5337,11 +5314,11 @@ static void dissect_RTPS_DATA(tvbuff_t *tvb, packet_info *pinfo, gint offset, gu
guint16 encapsulation_id;
guint16 encapsulation_len;
/*int encapsulation_little_endian = 0;*/
- proto_item * ti = proto_tree_add_text(tree, tvb, offset,
+ proto_item *ti;
+ rtps_pm_tree = proto_tree_add_subtree(tree, tvb, offset,
octets_to_next_header - (offset - old_offset) + 4,
- "ParticipantMessageData");
+ ett_rtps_part_message_data, &ti, "ParticipantMessageData");
- rtps_pm_tree = proto_item_add_subtree(ti, ett_rtps_part_message_data);
/* Encapsulation ID */
encapsulation_id = NEXT_guint16(tvb, offset, FALSE); /* Always big endian */
@@ -5729,8 +5706,7 @@ static void dissect_RTPS_DATA_BATCH(tvbuff_t *tvb, packet_info *pinfo, gint offs
proto_tree *sil_tree;
sample_info_count = 0;
- list_item = proto_tree_add_text(tree, tvb, offset, -1, "Sample Info List");
- sil_tree = proto_item_add_subtree(list_item, ett_rtps_sample_info_list);
+ sil_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_rtps_sample_info_list, &list_item, "Sample Info List");
/* Allocate sample_info_flags and sample_info_length
* to store a copy of the flags for each sample info */
@@ -5755,8 +5731,7 @@ static void dissect_RTPS_DATA_BATCH(tvbuff_t *tvb, packet_info *pinfo, gint offs
break;
}
- ti = proto_tree_add_text(sil_tree, tvb, offset, -1, "sampleInfo[%d]", sample_info_count);
- si_tree = proto_item_add_subtree(ti, ett_rtps_sample_info);
+ si_tree = proto_tree_add_subtree_format(sil_tree, tvb, offset, -1, ett_rtps_sample_info, &ti, "sampleInfo[%d]", sample_info_count);
flags2 = NEXT_guint16(tvb, offset, FALSE); /* Flags are always big endian */
sample_info_flags[sample_info_count] = flags2;
@@ -5835,8 +5810,7 @@ static void dissect_RTPS_DATA_BATCH(tvbuff_t *tvb, packet_info *pinfo, gint offs
gint count = 0;
const char * label;
- ti = proto_tree_add_text(tree, tvb, offset, -1, "Serialized Sample List");
- sil_tree = proto_item_add_subtree(ti, ett_rtps_sample_batch_list);
+ sil_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_rtps_sample_batch_list, &ti, "Serialized Sample List");
for (count = 0; count < sample_info_count; ++count) {
/* Ensure there are enough bytes in the buffer to dissect the next sample */
if (octets_to_next_header - (offset - old_offset) + 4 < (gint)sample_info_length[count]) {
@@ -6506,20 +6480,19 @@ static gboolean dissect_rtps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
if ((nature == PORT_METATRAFFIC_UNICAST) || (nature == PORT_USERTRAFFIC_UNICAST) ||
(version < 0x0200)) {
- ti = proto_tree_add_text(rtps_tree, tvb, 0, 0,
- "Default port mapping: domainId=%d, "
+ mapping_tree = proto_tree_add_subtree_format(rtps_tree, tvb, 0, 0,
+ ett_rtps_default_mapping, NULL, "Default port mapping: domainId=%d, "
"participantIdx=%d, nature=%s",
domain_id,
participant_idx,
val_to_str(nature, nature_type_vals, "%02x"));
} else {
- ti = proto_tree_add_text(rtps_tree, tvb, 0, 0,
- "Default port mapping: %s, domainId=%d",
+ mapping_tree = proto_tree_add_subtree_format(rtps_tree, tvb, 0, 0,
+ ett_rtps_default_mapping, NULL, "Default port mapping: %s, domainId=%d",
val_to_str(nature, nature_type_vals, "%02x"),
domain_id);
}
- mapping_tree = proto_item_add_subtree(ti, ett_rtps_default_mapping);
ti = proto_tree_add_uint(mapping_tree, hf_rtps_domain_id, tvb, 0, 0, domain_id);
PROTO_ITEM_SET_GENERATED(ti);
if ((nature == PORT_METATRAFFIC_UNICAST) || (nature == PORT_USERTRAFFIC_UNICAST) ||