diff options
author | Michael Mann <mmann78@netscape.net> | 2014-07-06 09:49:27 -0400 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2014-07-06 14:21:15 +0000 |
commit | 6318a29fa367f118994d689e2a6ac2198bc6e582 (patch) | |
tree | 613f214038bae0703c5968500264a42030a66aa7 /epan | |
parent | db530d886ddb0adb0675094d3a4273967f677ee0 (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.c | 12 | ||||
-rw-r--r-- | epan/dissectors/packet-radius_packetcable.c | 3 | ||||
-rw-r--r-- | epan/dissectors/packet-redbackli.c | 14 | ||||
-rw-r--r-- | epan/dissectors/packet-rip.c | 23 | ||||
-rw-r--r-- | epan/dissectors/packet-rlc.c | 6 | ||||
-rw-r--r-- | epan/dissectors/packet-rmcp.c | 7 | ||||
-rw-r--r-- | epan/dissectors/packet-rmt-norm.c | 11 | ||||
-rw-r--r-- | epan/dissectors/packet-rohc.c | 67 | ||||
-rw-r--r-- | epan/dissectors/packet-roofnet.c | 6 | ||||
-rw-r--r-- | epan/dissectors/packet-rpc.c | 95 | ||||
-rw-r--r-- | epan/dissectors/packet-rpl.c | 7 | ||||
-rw-r--r-- | epan/dissectors/packet-rsip.c | 5 | ||||
-rw-r--r-- | epan/dissectors/packet-rsl.c | 200 | ||||
-rw-r--r-- | epan/dissectors/packet-rsvp.c | 346 | ||||
-rw-r--r-- | epan/dissectors/packet-rtacser.c | 3 | ||||
-rw-r--r-- | epan/dissectors/packet-rtcp.c | 64 | ||||
-rw-r--r-- | epan/dissectors/packet-rtmpt.c | 78 | ||||
-rw-r--r-- | epan/dissectors/packet-rtp.c | 21 | ||||
-rw-r--r-- | epan/dissectors/packet-rtps.c | 101 |
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, ¶m_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, ¶m_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) || |