diff options
author | Michael Mann <mmann78@netscape.net> | 2014-06-29 09:13:51 -0400 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2014-06-29 14:52:33 +0000 |
commit | e8a8d62dc33099ee2e0d9d405b48e74097f7688d (patch) | |
tree | 0d79d9841b29f735cdf0005da3a6c747591586ea /epan | |
parent | fe4b7ee625c046bc09a7d8ae55afb0e16cb17fc3 (diff) |
proto_tree_add_subtree[_format]
Change-Id: I7e016f10fcfdc0523bf2fe8c11295c0334f7c332
Reviewed-on: https://code.wireshark.org/review/2694
Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan')
40 files changed, 505 insertions, 825 deletions
diff --git a/epan/dissectors/packet-iapp.c b/epan/dissectors/packet-iapp.c index 51cb56c8bf..ac95ba5c21 100644 --- a/epan/dissectors/packet-iapp.c +++ b/epan/dissectors/packet-iapp.c @@ -405,7 +405,7 @@ dissect_pdus(tvbuff_t *tvb, int offset, proto_tree *pdutree, int pdulen) static void dissect_iapp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { - proto_item *ti, *pdutf; + proto_item *ti; proto_tree *iapp_tree, *pdutree; e_iapphdr ih; int ia_version; @@ -435,9 +435,8 @@ dissect_iapp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) proto_tree_add_uint_format_value(iapp_tree, hf_iapp_type, tvb, 1, 1, ih.ia_type, "%s(%d)", codestrval, ia_type); - pdutf = proto_tree_add_text(iapp_tree, tvb, 2, -1, - "Protocol data units"); - pdutree = proto_item_add_subtree(pdutf, ett_iapp_pdu); + pdutree = proto_tree_add_subtree(iapp_tree, tvb, 2, -1, + ett_iapp_pdu, NULL, "Protocol data units"); if (pdutree) { diff --git a/epan/dissectors/packet-iax2.c b/epan/dissectors/packet-iax2.c index 1dc5c18dd4..843e5e2658 100644 --- a/epan/dissectors/packet-iax2.c +++ b/epan/dissectors/packet-iax2.c @@ -1321,9 +1321,7 @@ static guint32 dissect_ies(tvbuff_t *tvb, packet_info *pinfo, guint32 offset, proto_tree *ies_tree; int ie_hf = hf_iax2_ies[ies_type]; - ti = proto_tree_add_text(iax_tree, tvb, offset, ies_len+2, " "); - - ies_tree = proto_item_add_subtree(ti, ett_iax2_ie); + ies_tree = proto_tree_add_subtree(iax_tree, tvb, offset, ies_len+2, ett_iax2_ie, &ti, " "); proto_tree_add_text(ies_tree, tvb, offset, 1, "IE id: %s (0x%02X)", val_to_str_ext_const(ies_type, &iax_ies_type_ext, "Unknown"), @@ -1385,10 +1383,10 @@ static guint32 dissect_ies(tvbuff_t *tvb, packet_info *pinfo, guint32 offset, case IAX_IE_APPARENT_ADDR: { - proto_tree *sockaddr_tree = NULL; + proto_tree *sockaddr_tree; - ie_item = proto_tree_add_text(ies_tree, tvb, offset + 2, 16, "Apparent Address"); - sockaddr_tree = proto_item_add_subtree(ie_item, ett_iax2_ies_apparent_addr); + sockaddr_tree = proto_tree_add_subtree(ies_tree, tvb, offset + 2, 16, + ett_iax2_ies_apparent_addr, NULL, "Apparent Address"); /* The IAX2 I-D says that the "apparent address" structure "is the same as the linux struct sockaddr_in", without @@ -1988,7 +1986,6 @@ static guint32 dissect_minipacket(tvbuff_t *tvb, guint32 offset, guint16 scallno static guint32 dissect_trunkcall_ts(tvbuff_t *tvb, guint32 offset, proto_tree *iax2_tree, guint16 *scallno) { - proto_item *call_item; proto_tree *call_tree; guint16 datalen, rlen, ts; /* @@ -2009,8 +2006,8 @@ static guint32 dissect_trunkcall_ts(tvbuff_t *tvb, guint32 offset, proto_tree *i rlen = MIN(tvb_length(tvb) - offset - 6, datalen); if (iax2_tree) { - call_item = proto_tree_add_text(iax2_tree, tvb, offset, rlen + 6, "Trunk call from %u, ts: %u", *scallno, ts); - call_tree = proto_item_add_subtree(call_item, ett_iax2_trunk_call); + call_tree = proto_tree_add_subtree_format(iax2_tree, tvb, offset, rlen + 6, + ett_iax2_trunk_call, NULL, "Trunk call from %u, ts: %u", *scallno, ts); proto_tree_add_item(call_tree, hf_iax2_trunk_call_len, tvb, offset, 2, ENC_BIG_ENDIAN); proto_tree_add_item(call_tree, hf_iax2_trunk_call_scallno, tvb, offset + 2, 2, ENC_BIG_ENDIAN); @@ -2024,7 +2021,6 @@ static guint32 dissect_trunkcall_ts(tvbuff_t *tvb, guint32 offset, proto_tree *i static guint32 dissect_trunkcall_nots(tvbuff_t *tvb, guint32 offset, proto_tree *iax2_tree, guint16 *scallno) { - proto_item *call_item; proto_tree *call_tree; guint16 datalen, rlen; /* @@ -2042,8 +2038,8 @@ static guint32 dissect_trunkcall_nots(tvbuff_t *tvb, guint32 offset, proto_tree rlen = MIN(tvb_length(tvb) - offset - 4, datalen); if (iax2_tree) { - call_item = proto_tree_add_text(iax2_tree, tvb, offset, rlen + 6, "Trunk call from %u", *scallno); - call_tree = proto_item_add_subtree(call_item, ett_iax2_trunk_call); + call_tree = proto_tree_add_subtree_format(iax2_tree, tvb, offset, rlen + 6, + ett_iax2_trunk_call, NULL, "Trunk call from %u", *scallno); proto_tree_add_item(call_tree, hf_iax2_trunk_call_scallno, tvb, offset, 2, ENC_BIG_ENDIAN); proto_tree_add_item(call_tree, hf_iax2_trunk_call_len, tvb, offset + 2, 2, ENC_BIG_ENDIAN); diff --git a/epan/dissectors/packet-icep.c b/epan/dissectors/packet-icep.c index a59e85b453..b5fe07d7ae 100644 --- a/epan/dissectors/packet-icep.c +++ b/epan/dissectors/packet-icep.c @@ -715,8 +715,7 @@ static void dissect_icep_request(tvbuff_t *tvb, guint32 offset, reqid = tvb_get_letohl(tvb, offset); - ti = proto_tree_add_text(icep_tree, tvb, offset, -1, "Request Message Body"); - icep_sub_tree = proto_item_add_subtree(ti, ett_icep_msg); + icep_sub_tree = proto_tree_add_subtree(icep_tree, tvb, offset, -1, ett_icep_msg, &ti, "Request Message Body"); proto_tree_add_item(icep_sub_tree, hf_icep_request_id, tvb, offset, 4, ENC_LITTLE_ENDIAN); @@ -813,9 +812,8 @@ static void dissect_icep_batch_request(tvbuff_t *tvb, guint32 offset, /* create display subtree for this message type */ - ti = proto_tree_add_text(icep_tree, tvb, offset, -1, - "Batch Request Message Body: #%d", i); - icep_sub_tree = proto_item_add_subtree(ti, ett_icep_msg); + icep_sub_tree = proto_tree_add_subtree_format(icep_tree, tvb, offset, -1, + ett_icep_msg, &ti, "Batch Request Message Body: #%d", i); if (i != 0) { col_append_str(pinfo->cinfo, COL_INFO, ","); @@ -868,10 +866,8 @@ static void dissect_icep_reply(tvbuff_t *tvb, guint32 offset, /* create display subtree for this message type */ - ti = proto_tree_add_text(icep_tree, tvb, offset, -1, - "Reply Message Body"); - - icep_sub_tree = proto_item_add_subtree(ti, ett_icep_msg); + icep_sub_tree = proto_tree_add_subtree(icep_tree, tvb, offset, -1, + ett_icep_msg, &ti, "Reply Message Body"); proto_tree_add_item(icep_sub_tree, hf_icep_request_id, tvb, offset, 4, ENC_LITTLE_ENDIAN); diff --git a/epan/dissectors/packet-icmp.c b/epan/dissectors/packet-icmp.c index 1f7b8bbc62..26a9b8baf0 100644 --- a/epan/dissectors/packet-icmp.c +++ b/epan/dissectors/packet-icmp.c @@ -380,36 +380,33 @@ dissect_mip_extensions(tvbuff_t * tvb, int offset, proto_tree * tree) length = 0; } - ti = proto_tree_add_text(tree, tvb, offset, - type ? (length + 2) : 1, - "Ext: %s", val_to_str(type, - mip_extensions, - "Unknown ext %u")); - mip_tree = proto_item_add_subtree(ti, ett_icmp_mip); + mip_tree = proto_tree_add_subtree_format(tree, tvb, offset, + 1, ett_icmp_mip, &ti, + "Ext: %s", val_to_str(type, + mip_extensions, + "Unknown ext %u")); + proto_tree_add_item(mip_tree, hf_icmp_mip_type, + tvb, offset, 1, + ENC_BIG_ENDIAN); + offset++; + if (type != ICMP_MIP_EXTENSION_PAD) + { + proto_item_set_len(ti, length + 2); + + /* length */ + proto_tree_add_item(mip_tree, hf_icmp_mip_length, + tvb, offset, 1, + ENC_BIG_ENDIAN); + offset++; + } switch (type) { case ICMP_MIP_EXTENSION_PAD: /* One byte padding extension */ - /* Add our fields */ - /* type */ - proto_tree_add_item(mip_tree, hf_icmp_mip_type, - tvb, offset, 1, - ENC_BIG_ENDIAN); - offset++; break; case ICMP_MIP_MOB_AGENT_ADV: /* Mobility Agent Advertisement Extension (RFC 2002) */ /* Add our fields */ - /* type */ - proto_tree_add_item(mip_tree, hf_icmp_mip_type, - tvb, offset, 1, - ENC_BIG_ENDIAN); - offset++; - /* length */ - proto_tree_add_item(mip_tree, hf_icmp_mip_length, - tvb, offset, 1, - ENC_BIG_ENDIAN); - offset++; /* sequence number */ proto_tree_add_item(mip_tree, hf_icmp_mip_seq, tvb, offset, 2, ENC_BIG_ENDIAN); @@ -466,16 +463,6 @@ dissect_mip_extensions(tvbuff_t * tvb, int offset, proto_tree * tree) case ICMP_MIP_PREFIX_LENGTHS: /* Prefix-Lengths Extension (RFC 2002) */ /* Add our fields */ - /* type */ - proto_tree_add_item(mip_tree, hf_icmp_mip_type, - tvb, offset, 1, - ENC_BIG_ENDIAN); - offset++; - /* length */ - proto_tree_add_item(mip_tree, hf_icmp_mip_length, - tvb, offset, 1, - ENC_BIG_ENDIAN); - offset++; /* prefix lengths */ for (i = 0; i < length; i++) { @@ -488,16 +475,6 @@ dissect_mip_extensions(tvbuff_t * tvb, int offset, proto_tree * tree) break; case ICMP_MIP_CHALLENGE: /* Challenge Extension (RFC 3012) */ - /* type */ - proto_tree_add_item(mip_tree, hf_icmp_mip_type, - tvb, offset, 1, - ENC_BIG_ENDIAN); - offset++; - /* length */ - proto_tree_add_item(mip_tree, hf_icmp_mip_length, - tvb, offset, 1, - ENC_BIG_ENDIAN); - offset++; /* challenge */ proto_tree_add_item(mip_tree, hf_icmp_mip_challenge, tvb, @@ -506,16 +483,6 @@ dissect_mip_extensions(tvbuff_t * tvb, int offset, proto_tree * tree) break; default: - /* type */ - proto_tree_add_item(mip_tree, hf_icmp_mip_type, - tvb, offset, 1, - ENC_BIG_ENDIAN); - offset++; - /* length */ - proto_tree_add_item(mip_tree, hf_icmp_mip_length, - tvb, offset, 1, - ENC_BIG_ENDIAN); - offset++; /* data, if any */ if (length != 0) { proto_tree_add_text(mip_tree, tvb, offset, @@ -612,12 +579,9 @@ dissect_mpls_stack_entry_object(tvbuff_t * tvb, gint offset, break; } /* Create a subtree for each entry (the text will be set later) */ - tf_entry = proto_tree_add_text(ext_object_tree, - tvb, offset, 4, - " "); - mpls_stack_object_tree = - proto_item_add_subtree(tf_entry, - ett_icmp_mpls_stack_object); + mpls_stack_object_tree = proto_tree_add_subtree(ext_object_tree, + tvb, offset, 4, + ett_icmp_mpls_stack_object, &tf_entry, " "); /* Label */ label = (guint) tvb_get_ntohs(tvb, offset); @@ -683,7 +647,6 @@ dissect_interface_information_object(tvbuff_t * tvb, gint offset, proto_tree * ext_object_tree, proto_item * tf_object) { - proto_item *ti; proto_tree *int_name_object_tree = NULL; proto_tree *int_ipaddr_object_tree; guint16 obj_length, obj_trunc_length; @@ -764,13 +727,10 @@ dissect_interface_information_object(tvbuff_t * tvb, gint offset, * if afi = 1, IPv4 address, 2 bytes afi, 2 bytes rsvd, 4 bytes IP addr * if afi = 2, IPv6 address, 2 bytes afi, 2 bytes rsvd, 6 bytes IP addr */ - ti = proto_tree_add_text(ext_object_tree, tvb, offset, - afi == 1 ? 8 : 10, + int_ipaddr_object_tree = proto_tree_add_subtree(ext_object_tree, tvb, offset, + afi == 1 ? 8 : 10, ett_icmp_interface_ipaddr, NULL, "IP Address Sub-Object"); - int_ipaddr_object_tree = - proto_item_add_subtree(ti, ett_icmp_interface_ipaddr); - proto_tree_add_uint(int_ipaddr_object_tree, hf_icmp_int_info_afi, tvb, offset, 2, afi); @@ -804,13 +764,10 @@ dissect_interface_information_object(tvbuff_t * tvb, gint offset, if (name_flag) { if (obj_end_offset >= offset + 1) { int_name_length = tvb_get_guint8(tvb, offset); - ti = proto_tree_add_text(ext_object_tree, tvb, - offset, int_name_length, + int_name_object_tree = proto_tree_add_subtree(ext_object_tree, tvb, + offset, int_name_length, ett_icmp_interface_name, NULL, "Interface Name Sub-Object"); - int_name_object_tree = - proto_item_add_subtree(ti, - ett_icmp_interface_name); proto_tree_add_text(int_name_object_tree, tvb, offset, 1, "Length: %u", int_name_length); @@ -926,12 +883,9 @@ dissect_extensions(tvbuff_t * tvb, gint offset, proto_tree * tree) obj_end_offset = offset + obj_trunc_length; /* Add a subtree for this object (the text will be reset later) */ - tf_object = proto_tree_add_text(ext_tree, tvb, offset, + ext_object_tree = proto_tree_add_subtree(ext_tree, tvb, offset, MAX(obj_trunc_length, 4), - "Unknown object"); - - ext_object_tree = - proto_item_add_subtree(tf_object, ett_icmp_ext_object); + ett_icmp_ext_object, &tf_object, "Unknown object"); proto_tree_add_uint(ext_object_tree, hf_icmp_ext_length, tvb, offset, 2, obj_length); diff --git a/epan/dissectors/packet-icp.c b/epan/dissectors/packet-icp.c index e3b53be6ce..c5fda78086 100644 --- a/epan/dissectors/packet-icp.c +++ b/epan/dissectors/packet-icp.c @@ -142,7 +142,7 @@ static void dissect_icp_payload(tvbuff_t *tvb, int offset, static void dissect_icp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { proto_tree *icp_tree , *payload_tree; - proto_item *ti , *payloadtf; + proto_item *ti; guint8 opcode; guint16 message_length; guint32 request_number; @@ -198,10 +198,9 @@ static void dissect_icp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) "Sender Host IP address %s", tvb_ip_to_str(tvb, 16)); - payloadtf = proto_tree_add_text(icp_tree, tvb, + payload_tree = proto_tree_add_subtree(icp_tree, tvb, 20, message_length - 20, - "Payload"); - payload_tree = proto_item_add_subtree(payloadtf, ett_icp_payload); + ett_icp_payload, NULL, "Payload"); dissect_icp_payload(tvb, 20, payload_tree, opcode); } } diff --git a/epan/dissectors/packet-icq.c b/epan/dissectors/packet-icq.c index 26b0104558..12c178b1eb 100644 --- a/epan/dissectors/packet-icq.c +++ b/epan/dissectors/packet-icq.c @@ -454,7 +454,7 @@ static void icqv5_decode_msgType(proto_tree* tree, tvbuff_t *tvb, int offset, int size, packet_info *pinfo) { - proto_item *ti, *msg_item; + proto_item *msg_item; proto_tree *subtree; int left = size; guint16 msgType; @@ -493,9 +493,8 @@ icqv5_decode_msgType(proto_tree* tree, tvbuff_t *tvb, int offset, int size, #define N_USER_ADDED_FIELDS (sizeof user_added_field_descr / sizeof user_added_field_descr[0]) msgType = tvb_get_letohs(tvb, offset); - ti = proto_tree_add_text(tree, tvb, offset, size, + subtree = proto_tree_add_subtree_format(tree, tvb, offset, size, ett_icq_body_parts, NULL, "%s Message", val_to_str_const(msgType, msgTypeCode, "Unknown")); - subtree = proto_item_add_subtree(ti, ett_icq_body_parts); msg_item = proto_tree_add_item(subtree, hf_icq_msg_type, tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2; @@ -1129,8 +1128,7 @@ dissect_icqv5Client(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) col_add_fstr(pinfo->cinfo, COL_INFO, "ICQv5 %s", val_to_str_const(cmd, clientCmdCode, "Unknown")); - ti = proto_tree_add_text(tree, tvb, 0, ICQ5_CL_HDRSIZE, "Header"); - icq_header_tree = proto_item_add_subtree(ti, ett_icq_header); + icq_header_tree = proto_tree_add_subtree(tree, tvb, 0, ICQ5_CL_HDRSIZE, ett_icq_header, NULL, "Header"); ti = proto_tree_add_boolean(icq_header_tree, hf_icq_type, tvb, 0, 0, ICQ5_CLIENT); PROTO_ITEM_SET_GENERATED(ti); @@ -1145,8 +1143,7 @@ dissect_icqv5Client(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) ti = proto_tree_add_uint(icq_header_tree, hf_icq_checkcode_key, tvb, ICQ5_CL_CHECKCODE, 4, key); PROTO_ITEM_SET_GENERATED(ti); - ti = proto_tree_add_text(tree, decr_tvb, ICQ5_CL_HDRSIZE, pktsize - ICQ5_CL_HDRSIZE, "Body"); - icq_body_tree = proto_item_add_subtree(ti, ett_icq_body); + icq_body_tree = proto_tree_add_subtree(tree, decr_tvb, ICQ5_CL_HDRSIZE, pktsize - ICQ5_CL_HDRSIZE, ett_icq_body, NULL, "Body"); switch(cmd) { case CMD_ACK: @@ -1208,8 +1205,7 @@ dissect_icqv5Server(tvbuff_t *tvb, int offset, packet_info *pinfo, pktsize = tvb_reported_length(tvb); } - ti = proto_tree_add_text(tree, tvb, offset, ICQ5_SRV_HDRSIZE, "Header"); - icq_header_tree = proto_item_add_subtree(ti, ett_icq_header); + icq_header_tree = proto_tree_add_subtree(tree, tvb, offset, ICQ5_SRV_HDRSIZE, ett_icq_header, NULL, "Header"); ti = proto_tree_add_boolean(icq_header_tree, hf_icq_type, tvb, 0, 0, ICQ5_SERVER); PROTO_ITEM_SET_GENERATED(ti); @@ -1222,8 +1218,7 @@ dissect_icqv5Server(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree_add_item(icq_header_tree, hf_icq_uin, tvb, offset + ICQ5_SRV_UIN, 4, ENC_LITTLE_ENDIAN); proto_tree_add_item(icq_header_tree, hf_icq_checkcode, tvb, offset + ICQ5_SRV_CHECKCODE, 4, ENC_LITTLE_ENDIAN); - ti = proto_tree_add_text(tree, tvb, ICQ5_CL_HDRSIZE, pktsize - ICQ5_SRV_HDRSIZE, "Body"); - icq_body_tree = proto_item_add_subtree(ti, ett_icq_body); + icq_body_tree = proto_tree_add_subtree(tree, tvb, ICQ5_CL_HDRSIZE, pktsize - ICQ5_SRV_HDRSIZE, ett_icq_body, NULL, "Body"); switch (cmd) { case SRV_RAND_USER: diff --git a/epan/dissectors/packet-idp.c b/epan/dissectors/packet-idp.c index 367fc8f64d..f914f2cad1 100644 --- a/epan/dissectors/packet-idp.c +++ b/epan/dissectors/packet-idp.c @@ -79,8 +79,8 @@ static const value_string idp_socket_vals[] = { static void dissect_idp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { - proto_tree *idp_tree = NULL; - proto_item *ti = NULL; + proto_tree *idp_tree; + proto_item *ti; guint16 length; guint8 type; tvbuff_t *next_tvb; @@ -88,10 +88,8 @@ dissect_idp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) col_set_str(pinfo->cinfo, COL_PROTOCOL, "IDP"); col_clear(pinfo->cinfo, COL_INFO); - if (tree) { - ti = proto_tree_add_item(tree, proto_idp, tvb, 0, IDP_HEADER_LEN, ENC_NA); - idp_tree = proto_item_add_subtree(ti, ett_idp); - } + ti = proto_tree_add_item(tree, proto_idp, tvb, 0, IDP_HEADER_LEN, ENC_NA); + idp_tree = proto_item_add_subtree(ti, ett_idp); proto_tree_add_item(idp_tree, hf_idp_checksum, tvb, 0, 2, ENC_BIG_ENDIAN); length = tvb_get_ntohs(tvb, 2); diff --git a/epan/dissectors/packet-idrp.c b/epan/dissectors/packet-idrp.c index 1362334a8c..755e2d333c 100644 --- a/epan/dissectors/packet-idrp.c +++ b/epan/dissectors/packet-idrp.c @@ -1006,7 +1006,6 @@ static int dissect_BISPDU_ERROR(tvbuff_t * tvb, int offset, proto_tree * tree) static int dissect_BISPDU_RIB_REFRESH(tvbuff_t * tvb, int offset, proto_tree * tree) { proto_tree *sub_tree; - proto_item *ti; guint8 number_of_non_empty_rib_attributes; guint8 number_of_distinguishing_attributes; guint8 rib_attribute_type; @@ -1020,8 +1019,7 @@ static int dissect_BISPDU_RIB_REFRESH(tvbuff_t * tvb, int offset, proto_tree * t offset += 1; /* Path Attributes subtree */ - ti = proto_tree_add_text(tree, tvb, offset, 0, "Path Attributes"); - sub_tree = proto_item_add_subtree(ti, ett_idrp_sub); + sub_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_idrp_sub, NULL, "Path Attributes"); /* Number of Non-empty RIB-Atts */ number_of_non_empty_rib_attributes = tvb_get_guint8(tvb, offset); diff --git a/epan/dissectors/packet-iec104.c b/epan/dissectors/packet-iec104.c index 9afac8d5d2..0791547f5b 100644 --- a/epan/dissectors/packet-iec104.c +++ b/epan/dissectors/packet-iec104.c @@ -1185,8 +1185,8 @@ static void dissect_iec104asdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tr for(i = 0; i < asduh.NumIx; i++) { /* create subtree for the signal values ... */ - itSignal = proto_tree_add_text(it104tree, tvb, offset, asduh.DataLength + 3, "IOA:s"); - trSignal = proto_item_add_subtree(itSignal, ett_asdu_objects); + trSignal = proto_tree_add_subtree(it104tree, tvb, offset, asduh.DataLength + 3, + ett_asdu_objects, &itSignal, "IOA:s"); /* -------- First Information object address */ if (!i) diff --git a/epan/dissectors/packet-ieee1722a.c b/epan/dissectors/packet-ieee1722a.c index c1dbd78b2d..834308423b 100644 --- a/epan/dissectors/packet-ieee1722a.c +++ b/epan/dissectors/packet-ieee1722a.c @@ -325,8 +325,8 @@ static void dissect_1722a (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) /* Loop through all samples and add them to the audio tree. */ for (j = 0; j < ((datalen * 8) / (channels_per_frame * sample_width)); j++) { - ti = proto_tree_add_text(audio_tree, tvb, offset, 1, "Sample Chunk %d", j); - sample_tree = proto_item_add_subtree(ti, ett_1722a_sample); + sample_tree = proto_tree_add_subtree_format(audio_tree, tvb, offset, 1, + ett_1722a_sample, &ti, "Sample Chunk %d", j); for (i = 0; i < channels_per_frame; i++) { ti = proto_tree_add_item(sample_tree, hf_1722a_sample, tvb, offset, sample_width / 8, ENC_NA); diff --git a/epan/dissectors/packet-ieee80211.c b/epan/dissectors/packet-ieee80211.c index 01d0072dcd..c2b9296dc2 100644 --- a/epan/dissectors/packet-ieee80211.c +++ b/epan/dissectors/packet-ieee80211.c @@ -5453,14 +5453,13 @@ get_mimo_ns (gboolean chan_width, guint8 output_grouping) static int add_mimo_csi_matrices_report (proto_tree *tree, tvbuff_t *tvb, int offset, mimo_control_t mimo_cntrl) { - proto_item *snr_item; proto_tree *snr_tree; int csi_matrix_size, start_offset; int ns, i; start_offset = offset; - snr_item = proto_tree_add_text(tree, tvb, offset, mimo_cntrl.nc, "Signal to Noise Ratio"); - snr_tree = proto_item_add_subtree (snr_item, ett_mimo_report); + snr_tree = proto_tree_add_subtree(tree, tvb, offset, mimo_cntrl.nc, + ett_mimo_report, NULL, "Signal to Noise Ratio"); for (i = 1; i <= mimo_cntrl.nr; i++) { @@ -5483,14 +5482,12 @@ add_mimo_csi_matrices_report (proto_tree *tree, tvbuff_t *tvb, int offset, mimo_ static int add_mimo_beamforming_feedback_report (proto_tree *tree, tvbuff_t *tvb, int offset, mimo_control_t mimo_cntrl) { - proto_item *snr_item; proto_tree *snr_tree; int csi_matrix_size, start_offset; int ns, i; start_offset = offset; - snr_item = proto_tree_add_text(tree, tvb, offset, mimo_cntrl.nc, "Signal to Noise Ratio"); - snr_tree = proto_item_add_subtree (snr_item, ett_mimo_report); + snr_tree = proto_tree_add_subtree(tree, tvb, offset, mimo_cntrl.nc, ett_mimo_report, NULL, "Signal to Noise Ratio"); for (i = 1; i <= mimo_cntrl.nc; i++) { @@ -5513,14 +5510,13 @@ add_mimo_beamforming_feedback_report (proto_tree *tree, tvbuff_t *tvb, int offse static int add_mimo_compressed_beamforming_feedback_report (proto_tree *tree, tvbuff_t *tvb, int offset, mimo_control_t mimo_cntrl) { - proto_item *snr_item; proto_tree *snr_tree; int csi_matrix_size, start_offset; int ns, na, i; start_offset = offset; - snr_item = proto_tree_add_text(tree, tvb, offset, mimo_cntrl.nc, "Signal to Noise Ratio"); - snr_tree = proto_item_add_subtree (snr_item, ett_mimo_report); + snr_tree = proto_tree_add_subtree(tree, tvb, offset, mimo_cntrl.nc, + ett_mimo_report, NULL, "Signal to Noise Ratio"); for (i = 1; i <= mimo_cntrl.nc; i++) { @@ -5846,9 +5842,8 @@ dissect_advertisement_protocol(packet_info *pinfo, proto_tree *tree, left = tag_len; offset += 2; - adv_item = proto_tree_add_text(tree, tvb, offset, left, - "Advertisement Protocol element"); - adv_tree = proto_item_add_subtree(adv_item, ett_adv_proto); + adv_tree = proto_tree_add_subtree(tree, tvb, offset, left, + ett_adv_proto, &adv_item, "Advertisement Protocol element"); while (left >= 2) { guint8 id; @@ -5856,11 +5851,10 @@ dissect_advertisement_protocol(packet_info *pinfo, proto_tree *tree, id = tvb_get_guint8(tvb, offset + 1); if (id == 0) proto_item_append_text(adv_item, ": ANQP"); - item = proto_tree_add_text(adv_tree, tvb, offset, 2, + adv_tuple_tree = proto_tree_add_subtree_format(adv_tree, tvb, offset, 2, ett_adv_proto_tuple, &item, "Advertisement Protocol Tuple: %s", val_to_str(id, adv_proto_id_vals, "Unknown (%d)")); - adv_tuple_tree = proto_item_add_subtree(item, ett_adv_proto_tuple); proto_tree_add_item(adv_tuple_tree, hf_ieee80211_tag_adv_proto_resp_len_limit, tvb, @@ -6170,8 +6164,7 @@ dissect_nai_realm_list(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offset += 2; while (count > 0) { len = tvb_get_letohs(tvb, offset); - r_item = proto_tree_add_text(tree, tvb, offset, 2 + len, "NAI Realm Data"); - realm_tree = proto_item_add_subtree(r_item, ett_nai_realm); + realm_tree = proto_tree_add_subtree(tree, tvb, offset, 2 + len, ett_nai_realm, &r_item, "NAI Realm Data"); item = proto_tree_add_item(realm_tree, hf_ieee80211_ff_anqp_nai_field_len, tvb, offset, 2, ENC_LITTLE_ENDIAN); @@ -6191,7 +6184,7 @@ dissect_nai_realm_list(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int tvb, offset, 1, ENC_LITTLE_ENDIAN); offset += 1; if (offset + nai_len > f_end) { - expert_add_info_format(pinfo, item, &ei_ieee80211_ff_anqp_nai_field_len, + expert_add_info_format(pinfo, r_item, &ei_ieee80211_ff_anqp_nai_field_len, "Invalid NAI Realm Data"); break; } @@ -6210,9 +6203,8 @@ dissect_nai_realm_list(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int while (eap_count > 0) { eap_len = tvb_get_guint8(tvb, offset); eap_end = offset + 1 + eap_len; - item = proto_tree_add_text(realm_tree, tvb, offset, 1 + eap_len, - "EAP Method"); - eap_tree = proto_item_add_subtree(item, ett_nai_realm_eap); + eap_tree = proto_tree_add_subtree(realm_tree, tvb, offset, 1 + eap_len, + ett_nai_realm_eap, NULL, "EAP Method"); item = proto_tree_add_item(eap_tree, hf_ieee80211_ff_anqp_nai_realm_eap_len, @@ -6433,7 +6425,6 @@ static void dissect_hs20_anqp_connection_capability(proto_tree *tree, tvbuff_t *tvb, int offset, int end) { - proto_item *item; proto_tree *tuple; while (offset + 4 <= end) { guint8 ip_proto, status; @@ -6443,12 +6434,11 @@ dissect_hs20_anqp_connection_capability(proto_tree *tree, tvbuff_t *tvb, port_num = tvb_get_letohs(tvb, offset + 1); status = tvb_get_guint8(tvb, offset + 3); - item = proto_tree_add_text(tree, tvb, offset, 4, "ProtoPort Tuple - " - "ip_proto=%u port_num=%u status=%s", + tuple = proto_tree_add_subtree_format(tree, tvb, offset, 4, ett_hs20_cc_proto_port_tuple, NULL, + "ProtoPort Tuple - ip_proto=%u port_num=%u status=%s", ip_proto, port_num, val_to_str(status, hs20_cc_status_vals, "Unknown (%u)")); - tuple = proto_item_add_subtree(item, ett_hs20_cc_proto_port_tuple); proto_tree_add_item(tuple, hf_hs20_anqp_cc_proto_ip_proto, tvb, offset, 1, ENC_LITTLE_ENDIAN); offset++; @@ -6682,12 +6672,11 @@ dissect_gas_initial_request(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, /* Query Request Length (2 octets) */ req_len = tvb_get_letohs(tvb, offset); - item = proto_tree_add_text(tree, tvb, offset, 2 + req_len, "Query Request"); + query = proto_tree_add_subtree(tree, tvb, offset, 2 + req_len, ett_gas_query, &item, "Query Request"); if (tvb_reported_length_remaining(tvb, offset) < 2 + req_len) { - expert_add_info(pinfo, tree, &ei_ieee80211_ff_query_request_length); + expert_add_info(pinfo, item, &ei_ieee80211_ff_query_request_length); return tvb_reported_length_remaining(tvb, offset); } - query = proto_item_add_subtree(item, ett_gas_query); proto_tree_add_item(query, hf_ieee80211_ff_query_request_length, tvb, offset, 2, ENC_LITTLE_ENDIAN); @@ -6718,13 +6707,12 @@ dissect_gas_initial_response(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo /* Query Response Length (2 octets) */ resp_len = tvb_get_letohs(tvb, offset); - item = proto_tree_add_text(tree, tvb, offset, 2 + resp_len, - "Query Response"); + query = proto_tree_add_subtree(tree, tvb, offset, 2 + resp_len, + ett_gas_query, &item, "Query Response"); if (tvb_reported_length_remaining(tvb, offset) < 2 + resp_len) { - expert_add_info(pinfo, tree, &ei_ieee80211_ff_query_response_length); + expert_add_info(pinfo, item, &ei_ieee80211_ff_query_response_length); return tvb_reported_length_remaining(tvb, offset); } - query = proto_item_add_subtree(item, ett_gas_query); proto_tree_add_item(query, hf_ieee80211_ff_query_response_length, tvb, offset, 2, ENC_LITTLE_ENDIAN); @@ -6796,13 +6784,12 @@ dissect_gas_comeback_response(proto_tree *tree, tvbuff_t *tvb, packet_info *pinf /* Query Response Length (2 octets) */ resp_len = tvb_get_letohs(tvb, offset); - item = proto_tree_add_text(tree, tvb, offset, 2 + resp_len, - "Query Response"); + query = proto_tree_add_subtree(tree, tvb, offset, 2 + resp_len, + ett_gas_query, &item, "Query Response"); if (tvb_reported_length_remaining(tvb, offset) < 2 + resp_len) { - expert_add_info(pinfo, tree, &ei_ieee80211_ff_query_response_length); + expert_add_info(pinfo, item, &ei_ieee80211_ff_query_response_length); return tvb_reported_length_remaining(tvb, offset); } - query = proto_item_add_subtree(item, ett_gas_query); proto_tree_add_item(query, hf_ieee80211_ff_query_response_length, tvb, offset, 2, ENC_LITTLE_ENDIAN); @@ -10954,7 +10941,6 @@ static void dissect_ssid_list(proto_tree *tree, tvbuff_t *tvb, int offset, guint32 tag_len) { int end = offset + tag_len; - proto_item *ssid; proto_tree *entry; gboolean first = TRUE; @@ -10968,8 +10954,7 @@ dissect_ssid_list(proto_tree *tree, tvbuff_t *tvb, int offset, guint32 tag_len) str = tvb_get_string_enc(wmem_packet_scope(), tvb, offset + 2, len, ENC_ASCII); proto_item_append_text(tree, "%c %s", (first ? ':' : ','), str); first = FALSE; - ssid = proto_tree_add_text(tree, tvb, offset, 2 + len, "SSID: %s", str); - entry = proto_item_add_subtree(ssid, ett_ssid_list); + entry = proto_tree_add_subtree_format(tree, tvb, offset, 2 + len, ett_ssid_list, NULL, "SSID: %s", str); proto_tree_add_item(entry, hf_ieee80211_tag_number, tvb, offset, 1, ENC_BIG_ENDIAN); offset++; @@ -12873,18 +12858,18 @@ dissect_neighbor_report(tvbuff_t *tvb, packet_info *pinfo, /* TODO */ break; case NR_SUB_ID_HT_CAPABILITIES: - parent_item = proto_tree_add_text(tree, tvb, offset, sub_tag_length, "HT Capabilities"); - sub_tag_tree = proto_item_add_subtree(parent_item, ett_tag_neighbor_report_sub_tag_tree); + sub_tag_tree = proto_tree_add_subtree(tree, tvb, offset, sub_tag_length, + ett_tag_neighbor_report_sub_tag_tree, NULL, "HT Capabilities"); dissect_ht_capability_ie(sub_tag_tvb, pinfo, sub_tag_tree, 0, sub_tag_length, ti_len, FALSE); break; case NR_SUB_ID_HT_OPERATION: - parent_item = proto_tree_add_text (tree, tvb, offset, sub_tag_length, "HT Information"); - sub_tag_tree = proto_item_add_subtree(parent_item, ett_tag_neighbor_report_sub_tag_tree); + sub_tag_tree = proto_tree_add_subtree(tree, tvb, offset, sub_tag_length, + ett_tag_neighbor_report_sub_tag_tree, NULL, "HT Information"); dissect_ht_info_ie_1_1(sub_tag_tvb, pinfo, sub_tag_tree, 0, sub_tag_length, ti_len); break; case NR_SUB_ID_SEC_CHANNEL_OFFSET: - parent_item = proto_tree_add_text (tree, tvb, offset, sub_tag_length, "Secondary Channel Offset"); - sub_tag_tree = proto_item_add_subtree(parent_item, ett_tag_neighbor_report_sub_tag_tree); + sub_tag_tree = proto_tree_add_subtree(tree, tvb, offset, sub_tag_length, + ett_tag_neighbor_report_sub_tag_tree, NULL, "Secondary Channel Offset"); dissect_secondary_channel_offset_ie(sub_tag_tvb, pinfo, sub_tag_tree, 0, sub_tag_length, ti_len); break; case NR_SUB_ID_VENDOR_SPECIFIC: @@ -14995,7 +14980,6 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset { guint32 i = 0; gboolean isGrant; - proto_item *sched_item; proto_tree * alloc_tree; if ((tag_len%15) != 0) { @@ -15006,8 +14990,7 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset isGrant = ((ftype==CTRL_GRANT)||(ftype==CTRL_GRANT_ACK)); p_add_proto_data(wmem_file_scope(), pinfo, proto_wlan, IS_CTRL_GRANT_OR_GRANT_ACK_KEY, &isGrant); for(i=0; i < tag_len; i+=15) { - sched_item = proto_tree_add_text(tree, tvb, offset, 15, "Allocation %d", i/15); - alloc_tree = proto_item_add_subtree(sched_item, ett_allocation_tree); + alloc_tree = proto_tree_add_subtree_format(tree, tvb, offset, 15, ett_allocation_tree, NULL, "Allocation %d", i/15); proto_tree_add_item(alloc_tree, hf_ieee80211_tag_allocation_id, tvb, offset, 2, ENC_NA); proto_tree_add_item(alloc_tree, hf_ieee80211_tag_allocation_type, tvb, offset, 2, ENC_NA); proto_tree_add_item(alloc_tree, hf_ieee80211_tag_pseduo_static, tvb, offset, 2, ENC_NA); @@ -15035,7 +15018,6 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset case TAG_STA_AVAILABILITY: { guint32 i = 0; - proto_item * sta_info_item; proto_tree * sta_info_tree; if ((tag_len%2) != 0) { @@ -15044,8 +15026,7 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset } offset += 2; for(i=0; i < tag_len; i+=2) { - sta_info_item = proto_tree_add_text(tree, tvb, offset, 2, "STA Info %d", i/2); - sta_info_tree = proto_item_add_subtree(sta_info_item, ett_sta_info); + sta_info_tree = proto_tree_add_subtree_format(tree, tvb, offset, 2, ett_sta_info, NULL, "STA Info %d", i/2); proto_tree_add_item(sta_info_tree, hf_ieee80211_tag_aid, tvb, offset, 2, ENC_NA); proto_tree_add_item(sta_info_tree, hf_ieee80211_tag_cbap, tvb, offset, 2, ENC_NA); proto_tree_add_item(sta_info_tree, hf_ieee80211_tag_pp_avail, tvb, offset, 2, ENC_NA); @@ -15662,9 +15643,7 @@ dissect_ieee80211_mgt (guint16 fcf, tvbuff_t *tvb, packet_info *pinfo, proto_tre { proto_item *lcl_fixed_hdr; proto_tree *lcl_fixed_tree; - lcl_fixed_hdr = proto_tree_add_text(mgt_tree, tvb, 0, 0, "Fixed parameters"); - lcl_fixed_tree = proto_item_add_subtree (lcl_fixed_hdr, ett_fixed_parameters); - + lcl_fixed_tree = proto_tree_add_subtree(mgt_tree, tvb, 0, 0, ett_fixed_parameters, &lcl_fixed_hdr, "Fixed parameters"); offset += add_fixed_field(lcl_fixed_tree, tvb, pinfo, 0, FIELD_ACTION); proto_item_set_len(lcl_fixed_hdr, offset); @@ -15684,8 +15663,7 @@ dissect_ieee80211_mgt (guint16 fcf, tvbuff_t *tvb, packet_info *pinfo, proto_tre { proto_item *lcl_fixed_hdr; proto_tree *lcl_fixed_tree; - lcl_fixed_hdr = proto_tree_add_text(mgt_tree, tvb, 0, 0, "Fixed parameters"); - lcl_fixed_tree = proto_item_add_subtree (lcl_fixed_hdr, ett_fixed_parameters); + lcl_fixed_tree = proto_tree_add_subtree(mgt_tree, tvb, 0, 0, ett_fixed_parameters, &lcl_fixed_hdr, "Fixed parameters"); offset += add_fixed_field(lcl_fixed_tree, tvb, pinfo, 0, FIELD_ACTION); @@ -15704,13 +15682,11 @@ dissect_ieee80211_mgt (guint16 fcf, tvbuff_t *tvb, packet_info *pinfo, proto_tre } case MGT_ARUBA_WLAN: { - proto_item *aruba_hdr; proto_tree *aruba_tree; guint16 type; type = tvb_get_ntohs(tvb, offset); - aruba_hdr = proto_tree_add_text(mgt_tree, tvb, 0, 0, "Aruba Management"); - aruba_tree = proto_item_add_subtree(aruba_hdr, ett_fixed_parameters); + aruba_tree = proto_tree_add_subtree(mgt_tree, tvb, 0, 0, ett_fixed_parameters, NULL, "Aruba Management"); proto_tree_add_item(aruba_tree, hf_ieee80211_aruba, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2; @@ -16073,19 +16049,17 @@ dissect_ieee80211_common (tvbuff_t *tvb, packet_info *pinfo, * XXX - Should we look for is_ht as well? */ if ((frame_type_subtype == CTRL_CONTROL_WRAPPER) && tree) { - cw_item = proto_tree_add_text(hdr_tree, tvb, offset, 2, - "Contained Frame Control"); - cw_tree = proto_item_add_subtree (cw_item, ett_cntrl_wrapper_fc); + cw_tree = proto_tree_add_subtree(hdr_tree, tvb, offset, 2, + ett_cntrl_wrapper_fc, NULL, "Contained Frame Control"); dissect_frame_control(cw_tree, tvb, FALSE, offset, pinfo); dissect_ht_control(hdr_tree, tvb, offset + 2); offset += 6; - cw_item = proto_tree_add_text(hdr_tree, tvb, offset, 2, - "Carried Frame"); - hdr_tree = proto_item_add_subtree (cw_item, ett_cntrl_wrapper_fc); + hdr_tree = proto_tree_add_subtree(hdr_tree, tvb, offset, 2, + ett_cntrl_wrapper_fc, &cw_item, "Carried Frame"); if(isDMG == TRUE) { - expert_add_info_format(pinfo, hdr_tree, &ei_ieee80211_dmg_subtype, + expert_add_info_format(pinfo, cw_item, &ei_ieee80211_dmg_subtype, "DMG STA shouldn't transmit Control Wrapper frame"); - } + } } if ((frame_type_subtype == CTRL_CFP_END) && tree) { @@ -16306,8 +16280,7 @@ dissect_ieee80211_common (tvbuff_t *tvb, packet_info *pinfo, proto_tree_add_uint(bar_sub_tree, hf_ieee80211_block_ack_control_multi_tid_info, tvb, offset, 2, tid_count); offset += 2; - bar_parent_item = proto_tree_add_text (hdr_tree, tvb, offset, tid_count*4, "Per TID Info"); - bar_mtid_tree = proto_item_add_subtree(bar_parent_item, ett_block_ack); + bar_mtid_tree = proto_tree_add_subtree(hdr_tree, tvb, offset, tid_count*4, ett_block_ack, NULL, "Per TID Info"); for (iii = 0; iii < tid_count; iii++) { bar_parent_item = proto_tree_add_uint(bar_mtid_tree, hf_ieee80211_block_ack_multi_tid_info, tvb, offset, 4, iii); bar_mtid_sub_tree = proto_item_add_subtree(bar_parent_item, ett_block_ack); @@ -16447,8 +16420,7 @@ dissect_ieee80211_common (tvbuff_t *tvb, packet_info *pinfo, hf_ieee80211_block_ack_control_compressed_tid_info, tvb, offset, 2, tid_count); offset += 2; - ba_parent_item = proto_tree_add_text (hdr_tree, tvb, offset, tid_count*4, "Per TID Info"); - ba_mtid_tree = proto_item_add_subtree(ba_parent_item, ett_block_ack); + ba_mtid_tree = proto_tree_add_subtree(hdr_tree, tvb, offset, tid_count*4, ett_block_ack, NULL, "Per TID Info"); for (iii = 0; iii < tid_count; iii++) { ba_parent_item = proto_tree_add_uint(ba_mtid_tree, hf_ieee80211_block_ack_multi_tid_info, tvb, offset, 4, iii); ba_mtid_sub_tree = proto_item_add_subtree(ba_parent_item, ett_block_ack); @@ -17140,36 +17112,32 @@ dissect_ieee80211_common (tvbuff_t *tvb, packet_info *pinfo, if ((keybyte & KEY_EXTIV) && (len >= EXTIV_LEN)) { /* Extended IV; this frame is likely encrypted with TKIP or CCMP */ if (tree) { - proto_item *extiv_fields; - /* Davide Schiera (2006-11-27): differentiated CCMP and TKIP if */ /* it's possible */ if (algorithm==PROTECTION_ALG_TKIP) - extiv_fields = proto_tree_add_text(hdr_tree, tvb, hdr_len, 8, - "TKIP parameters"); + wep_tree = proto_tree_add_subtree(hdr_tree, tvb, hdr_len, 8, + ett_wep_parameters, NULL, "TKIP parameters"); else if (algorithm==PROTECTION_ALG_CCMP) - extiv_fields = proto_tree_add_text(hdr_tree, tvb, hdr_len, 8, - "CCMP parameters"); + wep_tree = proto_tree_add_subtree(hdr_tree, tvb, hdr_len, 8, + ett_wep_parameters, NULL, "CCMP parameters"); else { /* Davide Schiera -------------------------------------------- */ /* Davide Schiera (2006-11-27): differentiated CCMP and TKIP if*/ /* it's possible */ if (IS_TKIP(tvb, hdr_len)) { algorithm=PROTECTION_ALG_TKIP; - extiv_fields = proto_tree_add_text(hdr_tree, tvb, hdr_len, 8, - "TKIP parameters"); + wep_tree = proto_tree_add_subtree(hdr_tree, tvb, hdr_len, 8, + ett_wep_parameters, NULL, "TKIP parameters"); } else if (IS_CCMP(tvb, hdr_len)) { algorithm=PROTECTION_ALG_CCMP; - extiv_fields = proto_tree_add_text(hdr_tree, tvb, hdr_len, 8, - "CCMP parameters"); + wep_tree = proto_tree_add_subtree(hdr_tree, tvb, hdr_len, 8, + ett_wep_parameters, NULL, "CCMP parameters"); } else - extiv_fields = proto_tree_add_text(hdr_tree, tvb, hdr_len, 8, - "TKIP/CCMP parameters"); + wep_tree = proto_tree_add_subtree(hdr_tree, tvb, hdr_len, 8, + ett_wep_parameters, NULL, "TKIP/CCMP parameters"); } proto_item_set_len (ti, hdr_len + 8); - wep_tree = proto_item_add_subtree (extiv_fields, ett_wep_parameters); - if (algorithm==PROTECTION_ALG_TKIP) { g_snprintf(out_buff, SHORT_STR, "0x%08X%02X%02X", tvb_get_letohl(tvb, hdr_len + 4), @@ -17230,12 +17198,9 @@ dissect_ieee80211_common (tvbuff_t *tvb, packet_info *pinfo, */ iv = tvb_get_ntoh24(tvb, hdr_len); if (tree) { - proto_item *wep_fields; - - wep_fields = proto_tree_add_text(hdr_tree, tvb, hdr_len, 4, - "WEP parameters"); + wep_tree = proto_tree_add_subtree(hdr_tree, tvb, hdr_len, 4, + ett_wep_parameters, NULL, "WEP parameters"); - wep_tree = proto_item_add_subtree (wep_fields, ett_wep_parameters); proto_tree_add_uint (wep_tree, hf_ieee80211_wep_iv, tvb, hdr_len, 3, iv); tvb_memcpy(tvb, iv_buff, hdr_len, 3); is_iv_bad = weak_iv(iv_buff); diff --git a/epan/dissectors/packet-ieee802154.c b/epan/dissectors/packet-ieee802154.c index 8e649930f6..d8fe813400 100644 --- a/epan/dissectors/packet-ieee802154.c +++ b/epan/dissectors/packet-ieee802154.c @@ -411,7 +411,6 @@ dissect_ieee802154_fcf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, ieee { guint16 fcf; proto_tree *field_tree; - proto_item *ti; /* Get the FCF field. */ fcf = tvb_get_letohs(tvb, *offset); @@ -433,9 +432,9 @@ dissect_ieee802154_fcf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, ieee /* Add the FCF to the protocol tree. */ if (tree) { /* Create the FCF subtree. */ - ti = proto_tree_add_text(tree, tvb, *offset, 2, "Frame Control Field: %s (0x%04x)", + field_tree = proto_tree_add_subtree_format(tree, tvb, *offset, 2, ett_ieee802154_fcf, NULL, + "Frame Control Field: %s (0x%04x)", val_to_str_const(packet->frame_type, ieee802154_frame_types, "Unknown"), fcf); - field_tree = proto_item_add_subtree(ti, ett_ieee802154_fcf); /* FCF Fields. */ proto_tree_add_uint(field_tree, hf_ieee802154_frame_type, tvb, *offset, 1, fcf & IEEE802154_FCF_TYPE_MASK); @@ -473,8 +472,7 @@ dissect_ieee802154_nonask_phy(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre proto_item *proto_root = NULL; guint offset = 0; - guint32 preamble; - guint8 sfd,phr; + guint8 phr; tvbuff_t* mac; /* Create the protocol tree. */ @@ -488,8 +486,6 @@ dissect_ieee802154_nonask_phy(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre /* Add the packet length. */ col_add_fstr(pinfo->cinfo, COL_PACKET_LENGTH, "%i", tvb_length(tvb)); - preamble=tvb_get_letohl(tvb,offset); - sfd=tvb_get_guint8(tvb,offset+4); phr=tvb_get_guint8(tvb,offset+4+1); if(tree) { @@ -497,9 +493,9 @@ dissect_ieee802154_nonask_phy(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre proto_item *pi; guint loffset=offset; - proto_tree_add_uint(ieee802154_tree, hf_ieee802154_nonask_phy_preamble, tvb, loffset, 4, preamble); + proto_tree_add_item(ieee802154_tree, hf_ieee802154_nonask_phy_preamble, tvb, loffset, 4, ENC_LITTLE_ENDIAN); loffset+=4; - proto_tree_add_uint(ieee802154_tree, hf_ieee802154_nonask_phy_sfd, tvb, loffset, 1, sfd); + proto_tree_add_item(ieee802154_tree, hf_ieee802154_nonask_phy_sfd, tvb, loffset, 1, ENC_LITTLE_ENDIAN); loffset+=1; pi = proto_tree_add_text(ieee802154_tree, tvb, loffset, 1, "PHR: 0x%02x", phr); @@ -914,15 +910,15 @@ dissect_ieee802154_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g if (packet->key_id_mode != KEY_ID_MODE_IMPLICIT) aux_length++; if (packet->key_id_mode == KEY_ID_MODE_KEY_EXPLICIT_4) aux_length += 4; if (packet->key_id_mode == KEY_ID_MODE_KEY_EXPLICIT_8) aux_length += 8; - ti = proto_tree_add_text(ieee802154_tree, tvb, offset, aux_length, "Auxiliary Security Header"); - header_tree = proto_item_add_subtree(ti, ett_ieee802154_auxiliary_security); + header_tree = proto_tree_add_subtree(ieee802154_tree, tvb, offset, aux_length, + ett_ieee802154_auxiliary_security, NULL, "Auxiliary Security Header"); /* Security Control Field */ ti = proto_tree_add_text(header_tree, tvb, offset, 1, "Security Control Field (0x%02x)", security_control); field_tree = proto_item_add_subtree(ti, ett_ieee802154_aux_sec_control); - proto_tree_add_uint(field_tree, hf_ieee802154_security_level, tvb, offset, 1, security_control & IEEE802154_AUX_SEC_LEVEL_MASK); - proto_tree_add_uint(field_tree, hf_ieee802154_key_id_mode, tvb, offset, 1, security_control & IEEE802154_AUX_KEY_ID_MODE_MASK); - proto_tree_add_uint(field_tree, hf_ieee802154_aux_sec_reserved, tvb, offset, 1, security_control & IEEE802154_AUX_KEY_RESERVED_MASK); + proto_tree_add_item(field_tree, hf_ieee802154_security_level, tvb, offset, 1, ENC_NA); + proto_tree_add_item(field_tree, hf_ieee802154_key_id_mode, tvb, offset, 1, ENC_NA); + proto_tree_add_item(field_tree, hf_ieee802154_aux_sec_reserved, tvb, offset, 1, ENC_NA); offset++; /* Frame Counter Field */ @@ -933,8 +929,8 @@ dissect_ieee802154_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g /* Key identifier field(s). */ if (packet->key_id_mode != KEY_ID_MODE_IMPLICIT) { /* Create a subtree. */ - ti = proto_tree_add_text(header_tree, tvb, offset, 1, "Key Identifier Field"); /* Will fix length later. */ - field_tree = proto_item_add_subtree(ti, ett_ieee802154_aux_sec_key_id); + field_tree = proto_tree_add_subtree(header_tree, tvb, offset, 1, + ett_ieee802154_aux_sec_key_id, &ti, "Key Identifier Field"); /* Will fix length later. */ /* Add key source, if it exists. */ if (packet->key_id_mode == KEY_ID_MODE_KEY_EXPLICIT_4) { packet->key_source.addr32 = tvb_get_ntohl(tvb, offset); @@ -1145,8 +1141,8 @@ dissect_ieee802154_fcs: /* Display the FCS depending on expected FCS format */ if ((options & DISSECT_IEEE802154_OPTION_CC24xx)) { /* Create a subtree for the FCS. */ - ti = proto_tree_add_text(ieee802154_tree, tvb, offset, 2, "Frame Check Sequence (TI CC24xx format): FCS %s", (fcs_ok) ? "OK" : "Bad"); - field_tree = proto_item_add_subtree(ti, ett_ieee802154_fcs); + field_tree = proto_tree_add_subtree_format(ieee802154_tree, tvb, offset, 2, ett_ieee802154_fcs, NULL, + "Frame Check Sequence (TI CC24xx format): FCS %s", (fcs_ok) ? "OK" : "Bad"); /* Display FCS contents. */ ti = proto_tree_add_int(field_tree, hf_ieee802154_rssi, tvb, offset++, 1, (gint8) (fcs & IEEE802154_CC24xx_RSSI)); proto_item_append_text(ti, " dB"); /* Displaying Units */ @@ -1203,16 +1199,14 @@ dissect_ieee802154_fcs: static void dissect_ieee802154_superframe(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint *offset) { - proto_tree *field_tree = NULL; - proto_item *ti; + proto_tree *field_tree; guint16 superframe; /* Parse the superframe spec. */ superframe = tvb_get_letohs(tvb, *offset); if (tree) { /* Add Subtree for superframe specification */ - ti = proto_tree_add_text(tree, tvb, *offset, 2, "Superframe Specification"); - field_tree = proto_item_add_subtree(ti, ett_ieee802154_superframe); + field_tree = proto_tree_add_subtree(tree, tvb, *offset, 2, ett_ieee802154_superframe, NULL, "Superframe Specification"); /* Add Beacon Order to the superframe spec. */ proto_tree_add_uint(field_tree, hf_ieee802154_beacon_order, tvb, *offset, 2, superframe & IEEE802154_BEACON_ORDER_MASK); @@ -1256,12 +1250,11 @@ dissect_ieee802154_gtsinfo(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr if (tree) { /* Add Subtree for GTS information. */ if (gts_count) { - ti = proto_tree_add_text(tree, tvb, *offset, 2 + (gts_count * 3), "GTS"); + field_tree = proto_tree_add_subtree(tree, tvb, *offset, 2 + (gts_count * 3), ett_ieee802154_gts, NULL, "GTS"); } else { - ti = proto_tree_add_text(tree, tvb, *offset, 1, "GTS"); + field_tree = proto_tree_add_subtree(tree, tvb, *offset, 1, ett_ieee802154_gts, NULL, "GTS"); } - field_tree = proto_item_add_subtree(ti, ett_ieee802154_gts); proto_tree_add_uint(field_tree, hf_ieee802154_gts_count, tvb, *offset, 1, gts_count); proto_tree_add_boolean(field_tree, hf_ieee802154_gts_permit, tvb, *offset, 1, gts_spec & IEEE802154_GTS_PERMIT_MASK); @@ -1276,11 +1269,10 @@ dissect_ieee802154_gtsinfo(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr /* Display the directions mask. */ if (tree) { - proto_tree *dir_tree = NULL; + proto_tree *dir_tree; /* Create a subtree. */ - ti = proto_tree_add_text(field_tree, tvb, *offset, 1, "GTS Directions"); - dir_tree = proto_item_add_subtree(ti, ett_ieee802154_gts_direction); + dir_tree = proto_tree_add_subtree(field_tree, tvb, *offset, 1, ett_ieee802154_gts_direction, &ti, "GTS Directions"); /* Add the directions to the subtree. */ for (i=0; i<gts_count; i++) { @@ -1293,10 +1285,7 @@ dissect_ieee802154_gtsinfo(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr (*offset) += 1; /* Create a subtree for the GTS descriptors. */ - if (tree) { - ti = proto_tree_add_text(field_tree, tvb, *offset, gts_count * 3, "GTS Descriptors"); - subtree = proto_item_add_subtree(ti, ett_ieee802154_gts_descriptors); - } + subtree = proto_tree_add_subtree(field_tree, tvb, *offset, gts_count * 3, ett_ieee802154_gts_descriptors, NULL, "GTS Descriptors"); /* Get and display the GTS descriptors. */ for (i=0; i<gts_count; i++) { @@ -1336,8 +1325,7 @@ dissect_ieee802154_gtsinfo(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr static void dissect_ieee802154_pendaddr(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint *offset) { - proto_tree *subtree = NULL; - proto_item *ti; + proto_tree *subtree; guint8 pend_spec; guint8 pend_num16; guint8 pend_num64; @@ -1347,11 +1335,10 @@ dissect_ieee802154_pendaddr(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t pend_spec = tvb_get_guint8(tvb, *offset); pend_num16 = pend_spec & IEEE802154_PENDADDR_SHORT_MASK; pend_num64 = (pend_spec & IEEE802154_PENDADDR_LONG_MASK) >> IEEE802154_PENDADDR_LONG_SHIFT; - if (tree) { - /* Add Subtree for the addresses */ - ti = proto_tree_add_text(tree, tvb, *offset, 1 + 2*pend_num16 + 8*pend_num64, "Pending Addresses: %i Short and %i Long", pend_num16, pend_num64); - subtree = proto_item_add_subtree(ti, ett_ieee802154_pendaddr); - } + + /* Add Subtree for the addresses */ + subtree = proto_tree_add_subtree_format(tree, tvb, *offset, 1 + 2*pend_num16 + 8*pend_num64, + ett_ieee802154_pendaddr, NULL, "Pending Addresses: %i Short and %i Long", pend_num16, pend_num64); (*offset) += 1; for (i=0; i<pend_num16; i++) { @@ -1383,15 +1370,13 @@ dissect_ieee802154_pendaddr(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t static void dissect_ieee802154_assoc_req(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, ieee802154_packet *packet) { - proto_tree *subtree = NULL; + proto_tree *subtree; proto_item *ti; guint8 capability; /* Create a subtree for this command frame. */ - if (tree) { - ti = proto_tree_add_text(tree, tvb, 0, 1, "%s", val_to_str_const(packet->command_id, ieee802154_cmd_names, "Unknown Command")); - subtree = proto_item_add_subtree(ti, ett_ieee802154_cmd); - } + subtree = proto_tree_add_subtree(tree, tvb, 0, 1, ett_ieee802154_cmd, NULL, + val_to_str_const(packet->command_id, ieee802154_cmd_names, "Unknown Command")); /* Get and display capability info. */ capability = tvb_get_guint8(tvb, 0); @@ -1433,24 +1418,19 @@ dissect_ieee802154_assoc_req(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree static void dissect_ieee802154_assoc_rsp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, ieee802154_packet *packet) { - proto_tree *subtree = NULL; + proto_tree *subtree; proto_item *ti; guint16 short_addr; guint8 status; guint offset = 0; /* Create a subtree for this command frame. */ - if (tree) { - ti = proto_tree_add_text(tree, tvb, offset, 3, "%s", val_to_str_const(packet->command_id, - ieee802154_cmd_names, "Unknown Command")); - subtree = proto_item_add_subtree(ti, ett_ieee802154_cmd); - } + subtree = proto_tree_add_subtree(tree, tvb, offset, 3, ett_ieee802154_cmd, NULL, + val_to_str_const(packet->command_id, ieee802154_cmd_names, "Unknown Command")); /* Get and display the short address. */ short_addr = tvb_get_letohs(tvb, offset); - if (tree) { - proto_tree_add_uint(subtree, hf_ieee802154_assoc_addr, tvb, offset, 2, short_addr); - } + proto_tree_add_uint(subtree, hf_ieee802154_assoc_addr, tvb, offset, 2, short_addr); offset += 2; /* Get and display the status. */ @@ -1508,15 +1488,13 @@ dissect_ieee802154_assoc_rsp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree static void dissect_ieee802154_disassoc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, ieee802154_packet *packet) { - proto_tree *subtree = NULL; + proto_tree *subtree; proto_item *ti; guint8 reason; /* Create a subtree for this command frame. */ - if (tree) { - ti = proto_tree_add_text(tree, tvb, 0, 1, "%s", val_to_str_const(packet->command_id, ieee802154_cmd_names, "Unknown Command")); - subtree = proto_item_add_subtree(ti, ett_ieee802154_cmd); - } + subtree = proto_tree_add_subtree(tree, tvb, 0, 1, ett_ieee802154_cmd, NULL, + val_to_str_const(packet->command_id, ieee802154_cmd_names, "Unknown Command")); /* Get and display the disassociation reason. */ reason = tvb_get_guint8(tvb, 0); @@ -1570,8 +1548,7 @@ dissect_ieee802154_disassoc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, static void dissect_ieee802154_realign(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, ieee802154_packet *packet) { - proto_tree *subtree = NULL; - proto_item *ti; + proto_tree *subtree; guint16 pan_id; guint16 coord_addr; guint8 channel; @@ -1579,10 +1556,8 @@ dissect_ieee802154_realign(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset = 0; /* Create a subtree for this command frame. */ - if (tree) { - ti = proto_tree_add_text(tree, tvb, offset, 0, "%s", val_to_str_const(packet->command_id, ieee802154_cmd_names, "Unknown Command")); - subtree = proto_item_add_subtree(ti, ett_ieee802154_cmd); - } + subtree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_ieee802154_cmd, NULL, + val_to_str_const(packet->command_id, ieee802154_cmd_names, "Unknown Command")); /* Get and display the command PAN ID. */ pan_id = tvb_get_letohs(tvb, offset); @@ -1656,7 +1631,7 @@ dissect_ieee802154_realign(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, static void dissect_ieee802154_gtsreq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, ieee802154_packet *packet) { - proto_tree *subtree = NULL; + proto_tree *subtree; proto_item *ti; guint8 characteristics; guint8 length; @@ -1664,11 +1639,8 @@ dissect_ieee802154_gtsreq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, i guint8 type; /* Create a subtree for this command frame. */ - if (tree) { - ti = proto_tree_add_text(tree, tvb, 0, 1, "%s", val_to_str_const(packet->command_id, ieee802154_cmd_names, - "Unknown Command")); - subtree = proto_item_add_subtree(ti, ett_ieee802154_cmd); - } + subtree = proto_tree_add_subtree(tree, tvb, 0, 1, ett_ieee802154_cmd, NULL, + val_to_str_const(packet->command_id, ieee802154_cmd_names, "Unknown Command")); /* Get the characteristics field. */ characteristics = tvb_get_guint8(tvb, 0); diff --git a/epan/dissectors/packet-ieee802a.c b/epan/dissectors/packet-ieee802a.c index 9d3c82558f..4de4d6b53a 100644 --- a/epan/dissectors/packet-ieee802a.c +++ b/epan/dissectors/packet-ieee802a.c @@ -81,7 +81,7 @@ ieee802a_add_oui(guint32 oui, const char *table_name, const char *table_ui_name, static void dissect_ieee802a(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { - proto_tree *ieee802a_tree = NULL; + proto_tree *ieee802a_tree; proto_item *ti; tvbuff_t *next_tvb; const gchar *manuf; @@ -95,10 +95,8 @@ dissect_ieee802a(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) col_set_str(pinfo->cinfo, COL_PROTOCOL, "IEEE802a"); col_clear(pinfo->cinfo, COL_INFO); - if (tree) { - ti = proto_tree_add_item(tree, proto_ieee802a, tvb, 0, 5, ENC_NA); - ieee802a_tree = proto_item_add_subtree(ti, ett_ieee802a); - } + ti = proto_tree_add_item(tree, proto_ieee802a, tvb, 0, 5, ENC_NA); + ieee802a_tree = proto_item_add_subtree(ti, ett_ieee802a); tvb_memcpy(tvb, oui, 0, 3); oui32 = oui[0] << 16 | oui[1] << 8 | oui[2]; diff --git a/epan/dissectors/packet-ifcp.c b/epan/dissectors/packet-ifcp.c index 22d97634ee..ad2963602d 100644 --- a/epan/dissectors/packet-ifcp.c +++ b/epan/dissectors/packet-ifcp.c @@ -244,14 +244,12 @@ static const true_false_string ifcp_flags_spc_tfs = { static int dissect_ifcpflags(tvbuff_t *tvb, int offset, proto_tree *parent_tree) { - proto_item *item=NULL; - proto_tree *tree=NULL; + proto_item *item; + proto_tree *tree; guint8 flags; - if(parent_tree){ - item=proto_tree_add_item(parent_tree, hf_ifcp_flags, tvb, offset, 1, ENC_BIG_ENDIAN); - tree=proto_item_add_subtree (item, ett_ifcp_flags); - } + item=proto_tree_add_item(parent_tree, hf_ifcp_flags, tvb, offset, 1, ENC_BIG_ENDIAN); + tree=proto_item_add_subtree (item, ett_ifcp_flags); flags=tvb_get_guint8(tvb, offset); @@ -291,14 +289,12 @@ static const true_false_string ifcp_common_flags_crcv_tfs = { static void dissect_commonflags(tvbuff_t *tvb, int offset, proto_tree *parent_tree) { - proto_item *item=NULL; - proto_tree *tree=NULL; + proto_item *item; + proto_tree *tree; guint8 flags; - if(parent_tree){ - item=proto_tree_add_item(parent_tree, hf_ifcp_common_flags, tvb, offset, 1, ENC_BIG_ENDIAN); - tree=proto_item_add_subtree (item, ett_ifcp_common_flags); - } + item=proto_tree_add_item(parent_tree, hf_ifcp_common_flags, tvb, offset, 1, ENC_BIG_ENDIAN); + tree=proto_item_add_subtree (item, ett_ifcp_common_flags); flags=tvb_get_guint8(tvb, offset); @@ -366,16 +362,13 @@ dissect_ifcp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, voi /* protocol */ protocol = tvb_get_guint8 (tvb, offset); ti=proto_tree_add_item(tree, hf_ifcp_protocol, tvb, offset, 1, ENC_BIG_ENDIAN); - if(ti){ - protocol_tree=proto_item_add_subtree(ti, ett_ifcp_protocol); - } + protocol_tree=proto_item_add_subtree(ti, ett_ifcp_protocol); + offset++; /* version */ ti=proto_tree_add_item(tree, hf_ifcp_version, tvb, offset, 1, ENC_BIG_ENDIAN); - if(ti){ - version_tree=proto_item_add_subtree(ti, ett_ifcp_version); - } + version_tree=proto_item_add_subtree(ti, ett_ifcp_version); offset++; /* protocol complement */ @@ -400,16 +393,12 @@ dissect_ifcp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, voi /* SOF */ ti=proto_tree_add_item(tree, hf_ifcp_sof, tvb, offset, 1, ENC_BIG_ENDIAN); - if(ti){ - sof_tree=proto_item_add_subtree(ti, ett_ifcp_sof); - } + sof_tree=proto_item_add_subtree(ti, ett_ifcp_sof); offset++; /* EOF */ ti=proto_tree_add_item(tree, hf_ifcp_eof, tvb, offset, 1, ENC_BIG_ENDIAN); - if(ti){ - eof_tree=proto_item_add_subtree(ti, ett_ifcp_eof); - } + eof_tree=proto_item_add_subtree(ti, ett_ifcp_eof); offset++; } else { offset+=4; @@ -422,9 +411,7 @@ dissect_ifcp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, voi /* frame len */ ti=proto_tree_add_item(tree, hf_ifcp_framelen, tvb, offset, 2, ENC_BIG_ENDIAN); - if(ti){ - frame_len_tree=proto_item_add_subtree(ti, ett_ifcp_frame_len); - } + frame_len_tree=proto_item_add_subtree(ti, ett_ifcp_frame_len); offset+=2; /* complement of flags and frame len */ diff --git a/epan/dissectors/packet-igmp.c b/epan/dissectors/packet-igmp.c index 68fef8a42a..f9833b6f42 100644 --- a/epan/dissectors/packet-igmp.c +++ b/epan/dissectors/packet-igmp.c @@ -432,15 +432,13 @@ static int dissect_v3_sqrv_bits(tvbuff_t *tvb, proto_tree *parent_tree, int offset) { proto_tree *tree; - proto_item *item; guint8 bits; bits = tvb_get_guint8(tvb, offset); - item = proto_tree_add_text(parent_tree, tvb, offset, 1, - "QRV=%d S=%s", bits&IGMP_V3_QRV_MASK, + tree = proto_tree_add_subtree_format(parent_tree, tvb, offset, 1, + ett_sqrv_bits, NULL, "QRV=%d S=%s", bits&IGMP_V3_QRV_MASK, (bits&IGMP_V3_S)?tfs_s.true_string:tfs_s.false_string); - tree = proto_item_add_subtree(item, ett_sqrv_bits); /* S flag */ proto_tree_add_boolean(tree, hf_suppress, tvb, offset, 1, bits); @@ -459,17 +457,14 @@ dissect_v3_group_record(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tr int old_offset = offset; guint8 adl; guint16 num; - guint32 ip; - guint32 maddr; + const gchar* maddr_str; guint8 record_type; - ip = tvb_get_ipv4(tvb, offset+4); - item = proto_tree_add_text(parent_tree, tvb, offset, -1, - "Group Record : %s %s", - ip_to_str((guint8*)&ip), + tree = proto_tree_add_subtree_format(parent_tree, tvb, offset, -1, + ett_group_record, &item, "Group Record : %s %s", + tvb_ip_to_str(tvb, offset+4), val_to_str_const(tvb_get_guint8(tvb, offset), vs_record_type,"") ); - tree = proto_item_add_subtree(item, ett_group_record); /* record type */ record_type = tvb_get_guint8(tvb, offset); @@ -488,35 +483,33 @@ dissect_v3_group_record(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tr /* multicast address */ proto_tree_add_item(tree, hf_maddr, tvb, offset, 4, ENC_BIG_ENDIAN); - maddr = tvb_get_ipv4(tvb, offset); + maddr_str = tvb_ip_to_str(tvb, offset); offset += 4; if (num == 0) { switch(record_type) { case IGMP_V3_MODE_IS_INCLUDE: case IGMP_V3_CHANGE_TO_INCLUDE_MODE: - col_append_fstr(pinfo->cinfo, COL_INFO, " / Leave group %s", - ip_to_str((guint8*)&maddr)); + col_append_fstr(pinfo->cinfo, COL_INFO, " / Leave group %s", maddr_str); break; case IGMP_V3_MODE_IS_EXCLUDE: case IGMP_V3_CHANGE_TO_EXCLUDE_MODE: col_append_fstr(pinfo->cinfo, COL_INFO, - " / Join group %s for any sources", ip_to_str((guint8*)&maddr)); + " / Join group %s for any sources", maddr_str); break; case IGMP_V3_ALLOW_NEW_SOURCES: col_append_fstr(pinfo->cinfo, COL_INFO, " / Group %s, ALLOW_NEW_SOURCES but no source specified (?)", - ip_to_str((guint8*)&maddr)); + maddr_str); break; case IGMP_V3_BLOCK_OLD_SOURCES: col_append_fstr(pinfo->cinfo, COL_INFO, " / Group %s, BLOCK_OLD_SOURCES but no source specified (?)", - ip_to_str((guint8*)&maddr)); + maddr_str); break; default: col_append_fstr(pinfo->cinfo, COL_INFO, - " / Group %s, unknown record type (?)", - ip_to_str((guint8*)&maddr)); + " / Group %s, unknown record type (?)", maddr_str); break; } } else { @@ -525,28 +518,28 @@ dissect_v3_group_record(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tr case IGMP_V3_CHANGE_TO_INCLUDE_MODE: col_append_fstr(pinfo->cinfo, COL_INFO, " / Join group %s for source%s {", - ip_to_str((guint8*)&maddr), (num>1) ? "s in" : ""); + maddr_str, (num>1) ? "s in" : ""); break; case IGMP_V3_MODE_IS_EXCLUDE: case IGMP_V3_CHANGE_TO_EXCLUDE_MODE: col_append_fstr(pinfo->cinfo, COL_INFO, " / Join group %s, for source%s {", - ip_to_str((guint8*)&maddr), (num>1) ? "s not in" : " not"); + maddr_str, (num>1) ? "s not in" : " not"); break; case IGMP_V3_ALLOW_NEW_SOURCES: col_append_fstr(pinfo->cinfo, COL_INFO, " / Group %s, new source%s {", - ip_to_str((guint8*)&maddr), (num>1) ? "s" : ""); + maddr_str, (num>1) ? "s" : ""); break; case IGMP_V3_BLOCK_OLD_SOURCES: col_append_fstr(pinfo->cinfo, COL_INFO, " / Group %s, block source%s {", - ip_to_str((guint8*)&maddr), (num>1) ? "s" : ""); + maddr_str, (num>1) ? "s" : ""); break; default: col_append_fstr(pinfo->cinfo, COL_INFO, " / Group %s, unknown record type (?), sources {", - ip_to_str((guint8*)&maddr)); + maddr_str); break; } } @@ -826,16 +819,14 @@ dissect_igmp_mtrace(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int typ /* Loop through the response data blocks */ while (tvb_reported_length_remaining(tvb, offset) >= IGMP_TRACEROUTE_RSP_LEN) { - proto_item *bi; proto_tree *block_tree; - bi = proto_tree_add_text(tree, tvb, offset, IGMP_TRACEROUTE_RSP_LEN, - "Response data block: %s -> %s, Proto: %s, Forwarding Code: %s", + block_tree = proto_tree_add_subtree_format(tree, tvb, offset, IGMP_TRACEROUTE_RSP_LEN, + ett_mtrace_block, NULL, "Response data block: %s -> %s, Proto: %s, Forwarding Code: %s", tvb_ip_to_str(tvb, offset + 4), tvb_ip_to_str(tvb, offset + 8), val_to_str_const(tvb_get_guint8(tvb, offset + 28), mtrace_rtg_vals, "Unknown"), val_to_str_const(tvb_get_guint8(tvb, offset + 31), mtrace_fwd_code_vals, "Unknown")); - block_tree = proto_item_add_subtree(bi, ett_mtrace_block); /* Query Arrival Time */ proto_tree_add_item(block_tree, hf_mtrace_q_arrival, tvb, offset, 4, ENC_BIG_ENDIAN); diff --git a/epan/dissectors/packet-igrp.c b/epan/dissectors/packet-igrp.c index b12cb39613..9a30dc012e 100644 --- a/epan/dissectors/packet-igrp.c +++ b/epan/dissectors/packet-igrp.c @@ -136,7 +136,6 @@ static void dissect_igrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) static void dissect_vektor_igrp (tvbuff_t *tvb, proto_tree *igrp_vektor_tree, guint8 network) { - proto_item *ti; guint8 *ptr_addr,addr[5]; addr[0]=network; @@ -148,9 +147,8 @@ static void dissect_vektor_igrp (tvbuff_t *tvb, proto_tree *igrp_vektor_tree, gu ptr_addr=addr; if (network==0) ptr_addr=&addr[1]; - ti = proto_tree_add_text (igrp_vektor_tree, tvb, 0 ,14, - "Entry for network %s", ip_to_str(ptr_addr)) ; - igrp_vektor_tree = proto_item_add_subtree(ti,ett_igrp_net); + igrp_vektor_tree = proto_tree_add_subtree_format(igrp_vektor_tree, tvb, 0 ,14, + ett_igrp_net, NULL, "Entry for network %s", ip_to_str(ptr_addr)) ; proto_tree_add_text (igrp_vektor_tree, tvb, 0 ,3,"Network = %s",ip_to_str(ptr_addr)) ; proto_tree_add_text (igrp_vektor_tree, tvb, 3 ,3,"Delay = %d",tvb_get_ntoh24(tvb,3)) ; proto_tree_add_text (igrp_vektor_tree, tvb, 6 ,3,"Bandwidth = %d",tvb_get_ntoh24(tvb,6)) ; diff --git a/epan/dissectors/packet-imf.c b/epan/dissectors/packet-imf.c index 102b9f9aeb..eaf29eeae7 100644 --- a/epan/dissectors/packet-imf.c +++ b/epan/dissectors/packet-imf.c @@ -697,10 +697,8 @@ dissect_imf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) col_set_str(pinfo->cinfo, COL_PROTOCOL, PSNAME); col_clear(pinfo->cinfo, COL_INFO); - if(tree){ - item = proto_tree_add_item(tree, proto_imf, tvb, 0, -1, ENC_NA); - tree = proto_item_add_subtree(item, ett_imf); - } + item = proto_tree_add_item(tree, proto_imf, tvb, 0, -1, ENC_NA); + tree = proto_item_add_subtree(item, ett_imf); max_length = tvb_length(tvb); /* first go through the tvb until we find a blank line and extract the content type if diff --git a/epan/dissectors/packet-interlink.c b/epan/dissectors/packet-interlink.c index ae717d6b88..4bb4c7b965 100644 --- a/epan/dissectors/packet-interlink.c +++ b/epan/dissectors/packet-interlink.c @@ -69,7 +69,8 @@ static void dissect_interlink(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { int offset = 0; - proto_tree *il_tree = NULL; + proto_tree *il_tree; + proto_item *il_item; proto_tree *ilh_tree = NULL; proto_tree *ilb_tree = NULL; guint8 ilb_type; @@ -81,20 +82,11 @@ dissect_interlink(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) col_set_str(pinfo->cinfo, COL_PROTOCOL, "INTERLINK"); col_clear(pinfo->cinfo, COL_INFO); - if (tree) { - proto_item *il_item; - il_item = proto_tree_add_item(tree, proto_interlink, - tvb, 0, 16, ENC_NA); - if (il_item) - il_tree = proto_item_add_subtree(il_item, ett_interlink); - } + il_item = proto_tree_add_item(tree, proto_interlink, + tvb, 0, 16, ENC_NA); + il_tree = proto_item_add_subtree(il_item, ett_interlink); - if (il_tree) { - proto_item *ilh_item = NULL; - ilh_item = proto_tree_add_text(il_tree, tvb, 0, 12, "Interlink Header"); - if (ilh_item) - ilh_tree = proto_item_add_subtree(ilh_item, ett_interlink_header); - } + ilh_tree = proto_tree_add_subtree(il_tree, tvb, 0, 12, ett_interlink_header, NULL, "Interlink Header"); if (ilh_tree) { proto_tree_add_item(ilh_tree, hf_interlink_id, tvb, offset, 4, ENC_ASCII|ENC_NA); @@ -111,13 +103,12 @@ dissect_interlink(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) if (ilh_tree) { proto_item *flags_item; - proto_tree *flags_tree = NULL; + proto_tree *flags_tree; flags_item = proto_tree_add_item(ilh_tree, hf_interlink_flags, tvb, offset, 2, ENC_LITTLE_ENDIAN); - if (flags_item) { - flags_tree = proto_item_add_subtree(flags_item, ett_interlink_flags); - } + flags_tree = proto_item_add_subtree(flags_item, ett_interlink_flags); + if (flags_tree) { guint16 il_flags; il_flags = tvb_get_letohs(tvb, offset); @@ -127,12 +118,7 @@ dissect_interlink(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) } offset += 2; - if (tree) { - proto_item *ilb_item; - ilb_item = proto_tree_add_text(il_tree, tvb, offset, 4, "Block Header"); - if (ilb_item) - ilb_tree = proto_item_add_subtree(ilb_item, ett_interlink_block); - } + ilb_tree = proto_tree_add_subtree(il_tree, tvb, offset, 4, ett_interlink_block, NULL, "Block Header"); ilb_type = tvb_get_guint8(tvb, offset); ilb_version = tvb_get_guint8(tvb, offset + 1); diff --git a/epan/dissectors/packet-ipdc.c b/epan/dissectors/packet-ipdc.c index d2845d4924..394c40512a 100644 --- a/epan/dissectors/packet-ipdc.c +++ b/epan/dissectors/packet-ipdc.c @@ -721,7 +721,6 @@ dissect_ipdc_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* d { proto_item *ti; proto_tree *ipdc_tree; - proto_item *ipdc_tag; proto_tree *tag_tree; tvbuff_t *q931_tvb; @@ -798,9 +797,8 @@ dissect_ipdc_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* d proto_tree_add_item(ipdc_tree, hf_ipdc_message_code, tvb, 6 + trans_id_size, 2, ENC_BIG_ENDIAN); - ipdc_tag = proto_tree_add_text(ipdc_tree, tvb, offset, - payload_len - offset, "IPDC tags"); - tag_tree = proto_item_add_subtree(ipdc_tag, ett_ipdc_tag); + tag_tree = proto_tree_add_subtree(ipdc_tree, tvb, offset, payload_len - offset, + ett_ipdc_tag, NULL, "IPDC tags"); /* iterate through tags. first byte is tag, second is length, in bytes, following is tag data. tag of 0x0 should be diff --git a/epan/dissectors/packet-ipmi-chassis.c b/epan/dissectors/packet-ipmi-chassis.c index a482cef5d4..23946dde7d 100644 --- a/epan/dissectors/packet-ipmi-chassis.c +++ b/epan/dissectors/packet-ipmi-chassis.c @@ -565,7 +565,6 @@ rs07(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) static void rq08(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) { - proto_item *ti; proto_tree *s_tree; tvbuff_t *sub; guint8 pno; @@ -580,10 +579,9 @@ rq08(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) desc = "Reserved"; } - ti = proto_tree_add_text(tree, tvb, 0, 1, - "Boot option parameter selector: %s (0x%02x)", + s_tree = proto_tree_add_subtree_format(tree, tvb, 0, 1, + ett_ipmi_chs_08_byte1, NULL, "Boot option parameter selector: %s (0x%02x)", desc, pno); - s_tree = proto_item_add_subtree(ti, ett_ipmi_chs_08_byte1); proto_tree_add_item(s_tree, hf_ipmi_chs_08_valid, tvb, 0, 1, ENC_LITTLE_ENDIAN); proto_tree_add_uint_format_value(s_tree, hf_ipmi_chs_08_selector, tvb, 0, 1, pno, "Boot option parameter selector: %s (0x%02x)", @@ -613,7 +611,6 @@ static const value_string cc08[] = { static void rq09(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) { - proto_item *ti; proto_tree *s_tree; guint8 pno; const char *desc; @@ -628,10 +625,9 @@ rq09(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) } - ti = proto_tree_add_text(tree, tvb, 0, 1, - "Boot option parameter selector: %s (0x%02x)", + s_tree = proto_tree_add_subtree_format(tree, tvb, 0, 1, + ett_ipmi_chs_09_rq_byte1, NULL, "Boot option parameter selector: %s (0x%02x)", desc, pno); - s_tree = proto_item_add_subtree(ti, ett_ipmi_chs_09_rq_byte1); proto_tree_add_uint_format_value(s_tree, hf_ipmi_chs_09_rq_param_select, tvb, 0, 1, pno, "Boot option parameter selector: %s (0x%02x)", desc, pno); @@ -644,7 +640,6 @@ static void rs09(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) { static const int *byte1[] = { &hf_ipmi_chs_09_rs_param_version, NULL }; - proto_item *ti; proto_tree *s_tree; tvbuff_t *sub; guint8 pno; @@ -662,10 +657,9 @@ rs09(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, ett_ipmi_chs_09_rs_byte1, byte1, ENC_LITTLE_ENDIAN, 0); - ti = proto_tree_add_text(tree, tvb, 1, 1, - "Boot option parameter selector: %s (0x%02x)", + s_tree = proto_tree_add_subtree_format(tree, tvb, 1, 1, + ett_ipmi_chs_09_rs_byte2, NULL, "Boot option parameter selector: %s (0x%02x)", desc, pno); - s_tree = proto_item_add_subtree(ti, ett_ipmi_chs_09_rs_byte2); proto_tree_add_item(s_tree, hf_ipmi_chs_09_rs_valid, tvb, 1, 1, ENC_LITTLE_ENDIAN); proto_tree_add_uint_format_value(s_tree, hf_ipmi_chs_09_rs_param_select, tvb, 1, 1, pno, "Boot option parameter selector: %s (0x%02x)", diff --git a/epan/dissectors/packet-ipmi-se.c b/epan/dissectors/packet-ipmi-se.c index 2603f73f03..bbe4ee9e50 100644 --- a/epan/dissectors/packet-ipmi-se.c +++ b/epan/dissectors/packet-ipmi-se.c @@ -611,14 +611,12 @@ static gboolean eti_2_pst_sev(proto_tree *tree, tvbuff_t *tvb, const struct sensor_info *si, guint32 b, guint32 offs _U_, guint32 d) { - proto_item *ti; proto_tree *s_tree; guint32 tmp; const char *desc; if (b == 0x1) { - ti = proto_tree_add_text(tree, tvb, 0, 1, "Previous state/severity"); - s_tree = proto_item_add_subtree(ti, ett_ipmi_se_evt_evd_byte2); + s_tree = proto_tree_add_subtree(tree, tvb, 0, 1, ett_ipmi_se_evt_evd_byte2, NULL, "Previous state/severity"); proto_tree_add_item(s_tree, hf_ipmi_se_pst_severity, tvb, 0, 1, ENC_NA); tmp = d & 0xf; desc = (tmp == 0x0f) ? "Unspecified" : val_to_str_const(tmp, si->offsets, "Unknown"); @@ -1169,7 +1167,6 @@ static gboolean ssi_10_3(proto_tree *tree, tvbuff_t *tvb, const struct sensor_info *si _U_, guint32 b, guint32 offs, guint32 d) { - proto_item *ti; proto_tree *s_tree; const value_string *off_vals; @@ -1178,8 +1175,7 @@ ssi_10_3(proto_tree *tree, tvbuff_t *tvb, const struct sensor_info *si _U_, return FALSE; /* something went wrong */ } off_vals = ssi_10_saveptr->offsets ? ssi_10_saveptr->offsets : et_empty; - ti = proto_tree_add_text(tree, tvb, 0, 1, "Logging details/Offset"); - s_tree = proto_item_add_subtree(ti, ett_ipmi_se_evt_evd_byte3); + s_tree = proto_tree_add_subtree(tree, tvb, 0, 1, ett_ipmi_se_evt_evd_byte3, NULL, "Logging details/Offset"); proto_tree_add_item(s_tree, hf_ipmi_se_10_logging_disable, tvb, 0, 1, ENC_NA); proto_tree_add_item(s_tree, hf_ipmi_se_10_event, tvb, 0, 1, ENC_NA); d &= 0x0f; @@ -1224,19 +1220,16 @@ static gboolean ssi_12_2(proto_tree *tree, tvbuff_t *tvb, const struct sensor_info *si _U_, guint32 b, guint32 offs, guint32 d _U_) { - proto_item *ti; proto_tree *s_tree; if (b == 0x3 && offs == 0x03) { - ti = proto_tree_add_text(tree, tvb, 0, 1, "Log action/type"); - s_tree = proto_item_add_subtree(ti, ett_ipmi_se_evt_evd_byte2); + s_tree = proto_tree_add_subtree(tree, tvb, 0, 1, ett_ipmi_se_evt_evd_byte2, NULL, "Log action/type"); proto_tree_add_item(s_tree, hf_ipmi_se_12_log_entry_action, tvb, 0, 1, ENC_NA); proto_tree_add_item(s_tree, hf_ipmi_se_12_log_type, tvb, 0, 1, ENC_NA); return TRUE; } if (b == 0x3 && offs == 0x04) { - ti = proto_tree_add_text(tree, tvb, 0, 1, "PEF Actions to be taken"); - s_tree = proto_item_add_subtree(ti, ett_ipmi_se_evt_evd_byte2); + s_tree = proto_tree_add_subtree(tree, tvb, 0, 1, ett_ipmi_se_evt_evd_byte2, NULL, "PEF Actions to be taken"); proto_tree_add_item(s_tree, hf_ipmi_se_12_diagnostic_interrupt, tvb, 0, 1, ENC_NA); proto_tree_add_item(s_tree, hf_ipmi_se_12_oem_action, tvb, 0, 1, ENC_NA); proto_tree_add_item(s_tree, hf_ipmi_se_12_power_cycle, tvb, 0, 1, ENC_NA); @@ -1246,8 +1239,7 @@ ssi_12_2(proto_tree *tree, tvbuff_t *tvb, const struct sensor_info *si _U_, return TRUE; } if (b == 0x3 && offs == 0x05) { - ti = proto_tree_add_text(tree, tvb, 0, 1, "Details"); - s_tree = proto_item_add_subtree(ti, ett_ipmi_se_evt_evd_byte2); + s_tree = proto_tree_add_subtree(tree, tvb, 0, 1, ett_ipmi_se_evt_evd_byte2, NULL, "Details"); proto_tree_add_item(s_tree, hf_ipmi_se_12_event, tvb, 0, 1, ENC_NA); proto_tree_add_item(s_tree, hf_ipmi_se_12_timestamp_clock_type, tvb, 0, 1, ENC_NA); } @@ -1378,12 +1370,10 @@ static gboolean ssi_23_2(proto_tree *tree, tvbuff_t *tvb, const struct sensor_info *si _U_, guint32 b, guint32 offs _U_, guint32 d _U_) { - proto_item *ti; proto_tree *s_tree; if (b == 0x3) { - ti = proto_tree_add_text(tree, tvb, 0, 1, "Timer use/interrupt"); - s_tree = proto_item_add_subtree(ti, ett_ipmi_se_evt_evd_byte2); + s_tree = proto_tree_add_subtree(tree, tvb, 0, 1, ett_ipmi_se_evt_evd_byte2, NULL, "Timer use/interrupt"); proto_tree_add_item(s_tree, hf_ipmi_se_23_interrupt_type, tvb, 0, 1, ENC_NA); proto_tree_add_item(s_tree, hf_ipmi_se_23_timer_use_at_expiration, tvb, 0, 1, ENC_NA); @@ -1398,7 +1388,6 @@ static gboolean ssi_28_2(proto_tree *tree, tvbuff_t *tvb, const struct sensor_info *si _U_, guint32 b, guint32 offs _U_, guint32 d) { - proto_item *ti; proto_tree *s_tree; if (b == 0x3 && (offs == 0x00 || offs == 0x04)) { @@ -1406,8 +1395,7 @@ ssi_28_2(proto_tree *tree, tvbuff_t *tvb, const struct sensor_info *si _U_, return TRUE; } if (b == 0x3 && offs == 0x05) { - ti = proto_tree_add_text(tree, tvb, 0, 1, "FRU details"); - s_tree = proto_item_add_subtree(ti, ett_ipmi_se_evt_evd_byte2); + s_tree = proto_tree_add_subtree(tree, tvb, 0, 1, ett_ipmi_se_evt_evd_byte2, NULL, "FRU details"); ssi28_is_logical_fru = (d & 0x80) ? 1 : 0; proto_tree_add_item(s_tree, hf_ipmi_se_28_logical_fru_device, tvb, 0, 1, ENC_NA); proto_tree_add_item(s_tree, hf_ipmi_se_28_lun_for_master_read_write_command, tvb, 0, 1, ENC_NA); @@ -1461,12 +1449,10 @@ static gboolean ssi_2a_3(proto_tree *tree, tvbuff_t *tvb, const struct sensor_info *si _U_, guint32 b, guint32 offs _U_, guint32 d _U_) { - proto_item *ti; proto_tree *s_tree; if (b == 0x3) { - ti = proto_tree_add_text(tree, tvb, 0, 1, "Deactivation cause/Channel #"); - s_tree = proto_item_add_subtree(ti, ett_ipmi_se_evt_evd_byte3); + s_tree = proto_tree_add_subtree(tree, tvb, 0, 1, ett_ipmi_se_evt_evd_byte3, NULL, "Deactivation cause/Channel #"); proto_tree_add_item(s_tree, hf_ipmi_se_2a_session_deactivated_by, tvb, 0, 1, ENC_NA); proto_tree_add_item(s_tree, hf_ipmi_se_2a_channel, tvb, 0, 1, ENC_NA); return TRUE; @@ -1533,12 +1519,10 @@ static gboolean ssi_2c_2(proto_tree *tree, tvbuff_t *tvb, const struct sensor_info *si, guint32 b, guint32 offs _U_, guint32 d) { - proto_item *ti; proto_tree *s_tree; if (b == 0x3) { - ti = proto_tree_add_text(tree, tvb, 0, 1, "Previous state/Cause"); - s_tree = proto_item_add_subtree(ti, ett_ipmi_se_evt_evd_byte2); + s_tree = proto_tree_add_subtree(tree, tvb, 0, 1, ett_ipmi_se_evt_evd_byte2, NULL, "Previous state/Cause"); proto_tree_add_item(s_tree, hf_ipmi_se_2c_cause, tvb, 0, 1, ENC_NA); d &= 0xf; proto_tree_add_uint_format_value(s_tree, hf_ipmi_se_2c_previous_state, tvb, 0, 1, @@ -1567,12 +1551,10 @@ static gboolean ssi_f0_2(proto_tree *tree, tvbuff_t *tvb, const struct sensor_info *si, guint32 b, guint32 offs _U_, guint32 d) { - proto_item *ti; proto_tree *s_tree; if (b == 0x2) { - ti = proto_tree_add_text(tree, tvb, 0, 1, "Previous state/Cause"); - s_tree = proto_item_add_subtree(ti, ett_ipmi_se_evt_evd_byte2); + s_tree = proto_tree_add_subtree(tree, tvb, 0, 1, ett_ipmi_se_evt_evd_byte2, NULL, "Previous state/Cause"); proto_tree_add_item(s_tree, hf_ipmi_se_f0_cause, tvb, 0, 1, ENC_NA); d &= 0xf; proto_tree_add_uint_format_value(s_tree, hf_ipmi_se_f0_previous_state, tvb, 0, 1, @@ -1625,12 +1607,10 @@ static gboolean ssi_f1_3(proto_tree *tree, tvbuff_t *tvb, const struct sensor_info *si _U_, guint32 b, guint32 offs _U_, guint32 d _U_) { - proto_item *ti; proto_tree *s_tree; if (b == 0x02) { - ti = proto_tree_add_text(tree, tvb, 0, 1, "Override state / Local status"); - s_tree = proto_item_add_subtree(ti, ett_ipmi_se_evt_evd_byte3); + s_tree = proto_tree_add_subtree(tree, tvb, 0, 1, ett_ipmi_se_evt_evd_byte3, NULL, "Override state / Local status"); proto_tree_add_item(s_tree, hf_ipmi_se_f1_ipmb_b_override_state, tvb, 0, 1, ENC_NA); proto_tree_add_item(s_tree, hf_ipmi_se_f1_ipmb_b_local_status, tvb, 0, 1, ENC_NA); proto_tree_add_item(s_tree, hf_ipmi_se_f1_ipmb_a_override_state, tvb, 0, 1, ENC_NA); @@ -2565,7 +2545,6 @@ sign_extend(gint16 v, int bits) static void rs23(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) { - proto_item *ti; proto_tree *s_tree; guint16 tol, acc, accexp, tmp; gint16 m, b, bexp, rexp; @@ -2592,9 +2571,9 @@ rs23(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) bexp = sign_extend(bexp, 4); rexp = sign_extend(rexp, 4); - ti = proto_tree_add_text(tree, tvb, 1, 6, "Factors: M=%d B=%d K1=%d K2=%d Acc=%u*10^%u Tol=%u", + s_tree = proto_tree_add_subtree_format(tree, tvb, 1, 6, ett_ipmi_se_23_readingfactors, NULL, + "Factors: M=%d B=%d K1=%d K2=%d Acc=%u*10^%u Tol=%u", m, b, bexp, rexp, acc, accexp, tol); - s_tree = proto_item_add_subtree(ti, ett_ipmi_se_23_readingfactors); proto_tree_add_item(s_tree, hf_ipmi_se_23_m, tvb, 1, 2, ENC_LITTLE_ENDIAN); proto_tree_add_item(s_tree, hf_ipmi_se_23_tolerance, tvb, 1, 2, ENC_LITTLE_ENDIAN); @@ -2689,15 +2668,13 @@ add_events(tvbuff_t *tvb, int offs, proto_tree *tree, const struct true_false_st &hf_ipmi_se_XX_b4_4, &hf_ipmi_se_XX_b4_5, &hf_ipmi_se_XX_b4_6, NULL } }; static const int *tsel[] = { &ett_ipmi_se_XX_b1, &ett_ipmi_se_XX_b2, &ett_ipmi_se_XX_b3, &ett_ipmi_se_XX_b4 }; - proto_item *ti; proto_tree *s_tree; int len = tvb_captured_length(tvb); int i, j, val, msk; for (i = 0; (offs < len) && (i < 4); i++, offs++) { val = tvb_get_guint8(tvb, offs); - ti = proto_tree_add_text(tree, tvb, offs, 1, "%s (byte %d)", desc, i); - s_tree = proto_item_add_subtree(ti, *tsel[i]); + s_tree = proto_tree_add_subtree_format(tree, tvb, offs, 1, *tsel[i], NULL, "%s (byte %d)", desc, i); for (j = 7; j >= 0; j--) { if (!bsel[i][j]) { continue; @@ -2790,7 +2767,6 @@ rs2d(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) &hf_ipmi_se_2d_b2_4, &hf_ipmi_se_2d_b2_5, &hf_ipmi_se_2d_b2_6, NULL } }; static const int *tsel[2] = { &ett_ipmi_se_2d_b1, &ett_ipmi_se_2d_b2 }; - proto_item *ti; proto_tree *s_tree; int i, j, len; @@ -2798,8 +2774,8 @@ rs2d(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL, ett_ipmi_se_2d_byte2, byte2, ENC_LITTLE_ENDIAN, 0); len = tvb_captured_length(tvb); for (i = 0; i < 2 && i < len - 2; i++) { - ti = proto_tree_add_text(tree, tvb, i + 2, 1, "Threshold comparisons/assertions (byte %d)", i); - s_tree = proto_item_add_subtree(ti, *tsel[i]); + s_tree = proto_tree_add_subtree_format(tree, tvb, i + 2, 1, *tsel[i], NULL, + "Threshold comparisons/assertions (byte %d)", i); for (j = 7; j >= 0; j--) { if (bsel[i][j]) { proto_tree_add_item(s_tree, *bsel[i][j], tvb, i + 2, 1, ENC_LITTLE_ENDIAN); diff --git a/epan/dissectors/packet-ipmi-session.c b/epan/dissectors/packet-ipmi-session.c index c04db04a9f..b3d24690ad 100644 --- a/epan/dissectors/packet-ipmi-session.c +++ b/epan/dissectors/packet-ipmi-session.c @@ -113,7 +113,7 @@ static int dissect_ipmi_session(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) { proto_tree *sess_tree = NULL, *s_tree; - proto_item *ti = NULL; + proto_item *ti; tvbuff_t *next_tvb; guint32 session_id; guint8 authtype, payloadtype = 0; @@ -183,13 +183,13 @@ dissect_ipmi_session(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void * if (authtype == IPMI_AUTH_RMCPP) { /* IPMI v2.0+ */ - ti = proto_tree_add_text(sess_tree, tvb, offset, 1, + s_tree = proto_tree_add_subtree_format(sess_tree, tvb, offset, 1, + ett_ipmi_session_payloadtype, NULL, "Payload type: %s (0x%02x), %sencrypted, %sauthenticated", val_to_str_const(payloadtype, ipmi_payload_vals, "Unknown"), payloadtype, payloadtype_enc ? "" : "not ", payloadtype_auth ? "" : "not "); - s_tree = proto_item_add_subtree(ti, ett_ipmi_session_payloadtype); proto_tree_add_item(s_tree, hf_ipmi_session_payloadtype_enc, tvb, offset, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item(s_tree, hf_ipmi_session_payloadtype_auth, tvb, offset, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item(s_tree, hf_ipmi_session_payloadtype, tvb, offset, 1, ENC_LITTLE_ENDIAN); diff --git a/epan/dissectors/packet-ipmi-transport.c b/epan/dissectors/packet-ipmi-transport.c index 0e3d876940..9249a6cca6 100644 --- a/epan/dissectors/packet-ipmi-transport.c +++ b/epan/dissectors/packet-ipmi-transport.c @@ -915,7 +915,6 @@ lan_24(tvbuff_t *tvb, proto_tree *tree) &ett_ipmi_trn_lan24_byte4, &ett_ipmi_trn_lan24_byte5, &ett_ipmi_trn_lan24_byte6, &ett_ipmi_trn_lan24_byte7, &ett_ipmi_trn_lan24_byte8 }; proto_tree *s_tree; - proto_item *ti; guint i; guint8 v, v1, v2; @@ -923,11 +922,10 @@ lan_24(tvbuff_t *tvb, proto_tree *tree) v = tvb_get_guint8(tvb, i + 1); v1 = v & 0x0f; v2 = v >> 4; - ti = proto_tree_add_text(tree, tvb, i + 1, 1, - "Cipher Suite #%d: %s (0x%02x), Cipher Suite #%d: %s (0x%02x)", + s_tree = proto_tree_add_subtree_format(tree, tvb, i + 1, 1, + *ett[i], NULL, "Cipher Suite #%d: %s (0x%02x), Cipher Suite #%d: %s (0x%02x)", i * 2 + 1, val_to_str_const(v1, lan24_priv_vals, "Reserved"), v1, i * 2 + 2, val_to_str_const(v2, lan24_priv_vals, "Reserved"), v2); - s_tree = proto_item_add_subtree(ti, *ett[i]); proto_tree_add_uint_format(s_tree, hf_ipmi_trn_lan24_priv, tvb, i + 1, 1, v2 << 4, "%sMaximum Privilege Level for Cipher Suite #%d: %s (0x%02x)", ipmi_dcd8(v, 0xf0), i * 2 + 2, val_to_str_const(v2, lan24_priv_vals, "Reserved"), v2); diff --git a/epan/dissectors/packet-ipmi.c b/epan/dissectors/packet-ipmi.c index 28002a1cae..4354488fb5 100644 --- a/epan/dissectors/packet-ipmi.c +++ b/epan/dissectors/packet-ipmi.c @@ -634,14 +634,11 @@ dissect_ipmi_cmd(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, netfn_str = ipmi_getnetfnname(ctx->hdr.netfn, cmd_list); /* Network function + target LUN */ - ti = proto_tree_add_text(cmd_tree, tvb, offset, 1, - "Target LUN: 0x%02x, NetFN: %s %s (0x%02x)", + tmp_tree = proto_tree_add_subtree_format(cmd_tree, tvb, offset, 1, + ett_header_byte_1, NULL, "Target LUN: 0x%02x, NetFN: %s %s (0x%02x)", ctx->hdr.rs_lun, netfn_str, is_resp ? "Response" : "Request", ctx->hdr.netfn); - /* make a sub-tree */ - tmp_tree = proto_item_add_subtree(ti, ett_header_byte_1); - /* add Net Fn */ proto_tree_add_uint_format(tmp_tree, hf_ipmi_header_netfn, tvb, offset, 1, ctx->hdr.netfn << 2, @@ -679,14 +676,11 @@ dissect_ipmi_cmd(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, /* check if request sequence is specified */ if (!(ctx->flags & IPMI_D_NO_SEQ)) { /* Sequence number + source LUN */ - ti = proto_tree_add_text(cmd_tree, tvb, offset, 1, - "%s: 0x%02x, SeqNo: 0x%02x", + tmp_tree = proto_tree_add_subtree_format(cmd_tree, tvb, offset, 1, + ett_header_byte_4, NULL, "%s: 0x%02x, SeqNo: 0x%02x", (ctx->flags & IPMI_D_TMODE) ? "Bridged" : "Source LUN", ctx->hdr.rq_lun, ctx->hdr.rq_seq); - /* create byte 4 sub-tree */ - tmp_tree = proto_item_add_subtree(ti, ett_header_byte_4); - if (ctx->flags & IPMI_D_TMODE) { proto_tree_add_item(tmp_tree, hf_ipmi_header_bridged, tvb, offset, 1, ENC_LITTLE_ENDIAN); @@ -736,15 +730,8 @@ dissect_ipmi_cmd(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, ipmi_cmd_handler_t hnd = is_resp ? cmd->parse_resp : cmd->parse_req; if (hnd && tvb_captured_length(data_tvb)) { - if (tree) { - /* create data field */ - ti = proto_tree_add_text(cmd_tree, data_tvb, 0, -1, "Data"); - - /* create data sub-tree */ - tmp_tree = proto_item_add_subtree(ti, ett_data); - } else { - tmp_tree = NULL; - } + /* create data field */ + tmp_tree = proto_tree_add_subtree(cmd_tree, data_tvb, 0, -1, ett_data, NULL, "Data"); /* save current command */ data->curr_hdr = &ctx->hdr; @@ -1034,7 +1021,6 @@ ipmi_add_typelen(proto_tree *tree, const char *desc, tvbuff_t *tvb, }; struct ipmi_parse_typelen *ptr; proto_tree *s_tree; - proto_item *ti; guint type, msk, clen, blen, len; const char *unit; char *str; @@ -1059,9 +1045,8 @@ ipmi_add_typelen(proto_tree *tree, const char *desc, tvbuff_t *tvb, ptr->parse(str, tvb, offs + 1, clen); str[clen] = '\0'; - ti = proto_tree_add_text(tree, tvb, offs, 1, "%s Type/Length byte: %s, %d %s", - desc, ptr->desc, len, unit); - s_tree = proto_item_add_subtree(ti, ett_typelen); + s_tree = proto_tree_add_subtree_format(tree, tvb, offs, 1, ett_typelen, NULL, + "%s Type/Length byte: %s, %d %s", desc, ptr->desc, len, unit); proto_tree_add_text(s_tree, tvb, offs, 1, "%sType: %s (0x%02x)", ipmi_dcd8(typelen, 0xc0), ptr->desc, type); proto_tree_add_text(s_tree, tvb, offs, 1, "%sLength: %d %s", diff --git a/epan/dissectors/packet-ipsec.c b/epan/dissectors/packet-ipsec.c index 3576b146c0..60a5a31916 100644 --- a/epan/dissectors/packet-ipsec.c +++ b/epan/dissectors/packet-ipsec.c @@ -1115,8 +1115,8 @@ dissect_esp_authentication(proto_tree *tree, tvbuff_t *tvb, gint len, gint esp_a if(esp_auth_len == 0) { - item = proto_tree_add_text(tree, tvb, len, 0, - "NULL Authentication"); + icv_tree = proto_tree_add_subtree(tree, tvb, len, 0, + ett_esp_icv, NULL, "NULL Authentication"); good = TRUE; } @@ -1125,33 +1125,32 @@ dissect_esp_authentication(proto_tree *tree, tvbuff_t *tvb, gint len, gint esp_a { if((authentication_ok) && (authentication_checking_ok)) { - item = proto_tree_add_text(tree, tvb, len - esp_auth_len, esp_auth_len, - "Authentication Data [correct]"); + icv_tree = proto_tree_add_subtree(tree, tvb, len - esp_auth_len, esp_auth_len, + ett_esp_icv, NULL, "Authentication Data [correct]"); good = TRUE; } else if((authentication_ok) && (!authentication_checking_ok)) { - item = proto_tree_add_text(tree, tvb, len - esp_auth_len, esp_auth_len, - "Authentication Data [incorrect, should be 0x%s]", authenticator_data_computed); + icv_tree = proto_tree_add_subtree_format(tree, tvb, len - esp_auth_len, esp_auth_len, + ett_esp_icv, NULL, "Authentication Data [incorrect, should be 0x%s]", authenticator_data_computed); bad = TRUE; g_free(authenticator_data_computed); } - else item = proto_tree_add_text(tree, tvb, len - esp_auth_len, esp_auth_len, - "Authentication Data"); + else + icv_tree = proto_tree_add_subtree(tree, tvb, len - esp_auth_len, esp_auth_len, + ett_esp_icv, NULL, "Authentication Data"); } else { /* Truncated so just display what we have */ - item = proto_tree_add_text(tree, tvb, len - esp_auth_len, esp_auth_len - (len - tvb_length(tvb)), - "Authentication Data (truncated)"); + icv_tree = proto_tree_add_subtree(tree, tvb, len - esp_auth_len, esp_auth_len - (len - tvb_length(tvb)), + ett_esp_icv, NULL, "Authentication Data (truncated)"); bad = TRUE; } - icv_tree = proto_item_add_subtree(item, ett_esp_icv); - item = proto_tree_add_boolean(icv_tree, hf_esp_icv_good, tvb, len - esp_auth_len, esp_auth_len, good); PROTO_ITEM_SET_GENERATED(item); diff --git a/epan/dissectors/packet-ipsi-ctl.c b/epan/dissectors/packet-ipsi-ctl.c index 8c404339af..5942447e27 100644 --- a/epan/dissectors/packet-ipsi-ctl.c +++ b/epan/dissectors/packet-ipsi-ctl.c @@ -51,8 +51,8 @@ static gint ett_ipsictl_pdu = -1; static void dissect_ipsictl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { - proto_tree *ipsictl_tree = NULL; - proto_tree *pdu_tree = NULL; + proto_tree *ipsictl_tree; + proto_tree *pdu_tree; proto_item *ti; int offset = 0; int loffset = 0; @@ -70,12 +70,8 @@ static void dissect_ipsictl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) remaining_length=tvb_reported_length_remaining(tvb, offset); - if (tree) { - - ti = proto_tree_add_item(tree, proto_ipsictl, tvb, offset, remaining_length, ENC_NA); - ipsictl_tree = proto_item_add_subtree(ti, ett_ipsictl); - - } + ti = proto_tree_add_item(tree, proto_ipsictl, tvb, offset, remaining_length, ENC_NA); + ipsictl_tree = proto_item_add_subtree(ti, ett_ipsictl); magic = tvb_get_ntohs(tvb, offset); if (magic == IPSICTL_PDU_MAGIC) @@ -116,13 +112,9 @@ static void dissect_ipsictl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) llength-=2; } - if (tree) { - - ti = proto_tree_add_uint(ipsictl_tree, hf_ipsictl_pdu, tvb, + ti = proto_tree_add_uint(ipsictl_tree, hf_ipsictl_pdu, tvb, offset, (length+4), pdu); - - pdu_tree = proto_item_add_subtree(ti, ett_ipsictl_pdu); - } + pdu_tree = proto_item_add_subtree(ti, ett_ipsictl_pdu); loffset=offset; remaining_length=tvb_reported_length_remaining(tvb, offset); diff --git a/epan/dissectors/packet-ipv6.c b/epan/dissectors/packet-ipv6.c index 3209c8287c..22a2eeaf0c 100644 --- a/epan/dissectors/packet-ipv6.c +++ b/epan/dissectors/packet-ipv6.c @@ -899,7 +899,6 @@ dissect_frag6(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint16 *offlg, guint32 *ident) { struct ip6_frag frag; int len; - proto_item *ti; proto_tree *rthdr_tree; tvb_memcpy(tvb, (guint8 *)&frag, offset, sizeof(frag)); @@ -914,9 +913,8 @@ dissect_frag6(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, (frag.ip6f_offlg & IP6F_OFF_MASK) >> IP6F_OFF_SHIFT, frag.ip6f_ident); if (tree) { - ti = proto_tree_add_text(tree, tvb, offset, len, - "Fragmentation Header"); - rthdr_tree = proto_item_add_subtree(ti, ett_ipv6); + rthdr_tree = proto_tree_add_subtree(tree, tvb, offset, len, + ett_ipv6, NULL, "Fragmentation Header"); proto_tree_add_item(rthdr_tree, hf_ipv6_frag_nxt, tvb, offset + (int)offsetof(struct ip6_frag, ip6f_nxt), 1, @@ -1275,7 +1273,6 @@ static const value_string shim6_protocol[] = { static void dissect_shim6_opt_loclist(proto_tree * opt_tree, tvbuff_t * tvb, gint *offset) { - proto_item *it; proto_tree *subtree; guint count; guint optlen; @@ -1289,9 +1286,8 @@ dissect_shim6_opt_loclist(proto_tree * opt_tree, tvbuff_t * tvb, gint *offset) p++; /* Verification Methods */ - it = proto_tree_add_text(opt_tree, tvb, p, optlen, - "Locator Verification Methods"); - subtree = proto_item_add_subtree(it, ett_ipv6_shim6_verif_methods); + subtree = proto_tree_add_subtree(opt_tree, tvb, p, optlen, + ett_ipv6_shim6_verif_methods, NULL, "Locator Verification Methods"); for (count=0; count < optlen; count++) proto_tree_add_item(subtree, hf_ipv6_shim6_opt_loc_verif_methods, tvb, @@ -1305,8 +1301,7 @@ dissect_shim6_opt_loclist(proto_tree * opt_tree, tvbuff_t * tvb, gint *offset) } /* Locators */ - it = proto_tree_add_text(opt_tree, tvb, p, 16 * optlen, "Locators"); - subtree = proto_item_add_subtree(it, ett_ipv6_shim6_locators); + subtree = proto_tree_add_subtree(opt_tree, tvb, p, 16 * optlen, ett_ipv6_shim6_locators, NULL, "Locators"); for (count=0; count < optlen; count++) { proto_tree_add_item(subtree, hf_ipv6_shim6_locator, tvb, p, 16, ENC_NA); @@ -1319,7 +1314,6 @@ static void dissect_shim6_opt_loc_pref(proto_tree * opt_tree, tvbuff_t * tvb, gint *offset, gint len, packet_info *pinfo) { proto_tree *subtree; - proto_item *it; gint p; gint optlen; @@ -1344,8 +1338,8 @@ dissect_shim6_opt_loc_pref(proto_tree * opt_tree, tvbuff_t * tvb, gint *offset, /* Locator Preferences */ count = 1; while (p < len) { - it = proto_tree_add_text(opt_tree, tvb, p, optlen, "Locator Preferences %u", count); - subtree = proto_item_add_subtree(it, ett_ipv6_shim6_loc_pref); + subtree = proto_tree_add_subtree_format(opt_tree, tvb, p, optlen, ett_ipv6_shim6_loc_pref, NULL, + "Locator Preferences %u", count); /* Flags */ if (optlen >= 1) @@ -1378,7 +1372,6 @@ dissect_shimopts(tvbuff_t *tvb, int offset, proto_tree *tree, packet_info *pinfo gint padding; proto_tree *opt_tree; proto_item *ti; - const gchar *ctype; p = offset; @@ -1392,9 +1385,8 @@ dissect_shimopts(tvbuff_t *tvb, int offset, proto_tree *tree, packet_info *pinfo if (tree) { /* Option Type */ - ctype = val_to_str_const( (tvb_get_ntohs(tvb, offset) & SHIM6_BITMASK_OPT_TYPE) >> 1, shimoptvals, "Unknown Option Type"); - ti = proto_tree_add_text(tree, tvb, offset, total_len, "%s", ctype); - opt_tree = proto_item_add_subtree(ti, ett_ipv6_shim6_option); + opt_tree = proto_tree_add_subtree(tree, tvb, offset, total_len, ett_ipv6_shim6_option, NULL, + val_to_str_const( (tvb_get_ntohs(tvb, offset) & SHIM6_BITMASK_OPT_TYPE) >> 1, shimoptvals, "Unknown Option Type")); proto_tree_add_item(opt_tree, hf_ipv6_shim6_opt_type, tvb, offset, 2, ENC_BIG_ENDIAN); @@ -1479,7 +1471,6 @@ dissect_shim6_probes(proto_tree * shim_tree, tvbuff_t * tvb, gint offset, { proto_tree *probes_tree; proto_tree *probe_tree; - proto_item *it; gint ett_probes; gint ett_probe; guint count; @@ -1491,12 +1482,11 @@ dissect_shim6_probes(proto_tree * shim_tree, tvbuff_t * tvb, gint offset, ett_probes = ett_ipv6_shim6_probes_sent; ett_probe = ett_ipv6_shim6_probe_sent; } - it = proto_tree_add_text(shim_tree, tvb, offset, 40 * nbr_probe, "%s", label); - probes_tree = proto_item_add_subtree(it, ett_probes); + probes_tree = proto_tree_add_subtree(shim_tree, tvb, offset, 40 * nbr_probe, ett_probes, NULL, label); for (count=0; count < nbr_probe; count++) { - it = proto_tree_add_text(probes_tree, tvb, offset, 40, "Probe %u", count+1); - probe_tree = proto_item_add_subtree(it, ett_probe); + probe_tree = proto_tree_add_subtree_format(probes_tree, tvb, offset, 40, + ett_probe, NULL, "Probe %u", count+1); proto_tree_add_item(probe_tree, hf_ipv6_shim6_psrc, tvb, offset, 16, ENC_NA); offset += 16; diff --git a/epan/dissectors/packet-ipvs-syncd.c b/epan/dissectors/packet-ipvs-syncd.c index 4961bfe4b4..5d5b8e64c5 100644 --- a/epan/dissectors/packet-ipvs-syncd.c +++ b/epan/dissectors/packet-ipvs-syncd.c @@ -134,12 +134,12 @@ dissect_ipvs_syncd(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree) for (conn = 0; conn < cnt; conn++) { - proto_tree *ctree, *ti; + proto_tree *ctree; proto_tree *ftree, *fi; guint16 flags; - ti = proto_tree_add_text(tree, tvb, offset, 24, "Connection #%d", conn+1); - ctree = proto_item_add_subtree(ti, ett_conn); + ctree = proto_tree_add_subtree_format(tree, tvb, offset, 24, ett_conn, NULL, + "Connection #%d", conn+1); proto_tree_add_item(ctree, hf_resv8, tvb, offset, 1, ENC_BIG_ENDIAN); offset += 1; diff --git a/epan/dissectors/packet-irc.c b/epan/dissectors/packet-irc.c index d5b3888385..9615df4bb3 100644 --- a/epan/dissectors/packet-irc.c +++ b/epan/dissectors/packet-irc.c @@ -118,7 +118,7 @@ static void dissect_irc_request(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offset, int linelen) { proto_tree *request_tree, *command_tree = NULL; - proto_item *request_item, *command_item; + proto_item *request_item; int start_offset = offset; int end_offset = start_offset+linelen; gint eop_offset = -1, @@ -224,8 +224,8 @@ dissect_irc_request(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int off /* Create subtree when the first parameter is found */ if (first_command_param) { - command_item = proto_tree_add_text(request_tree, tvb, offset, end_offset-offset, "Command parameters"); - command_tree = proto_item_add_subtree(command_item, ett_irc_request_command ); + command_tree = proto_tree_add_subtree(request_tree, tvb, offset, end_offset-offset, + ett_irc_request_command, NULL, "Command parameters"); first_command_param = FALSE; } @@ -286,7 +286,7 @@ static void dissect_irc_response(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offset, int linelen) { proto_tree *response_tree, *command_tree = NULL; - proto_item *response_item, *command_item, *hidden_item; + proto_item *response_item, *hidden_item; int start_offset = offset; int end_offset = start_offset+linelen; gint eop_offset = -1, @@ -397,8 +397,8 @@ dissect_irc_response(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int of /* Create subtree when the first parameter is found */ if (first_command_param) { - command_item = proto_tree_add_text(response_tree, tvb, offset, end_offset-offset, "Command parameters"); - command_tree = proto_item_add_subtree(command_item, ett_irc_response_command ); + command_tree = proto_tree_add_subtree(response_tree, tvb, offset, end_offset-offset, + ett_irc_response_command , NULL, "Command parameters"); first_command_param = FALSE; } diff --git a/epan/dissectors/packet-isakmp.c b/epan/dissectors/packet-isakmp.c index 20471aa2d5..4118cdf7fc 100644 --- a/epan/dissectors/packet-isakmp.c +++ b/epan/dissectors/packet-isakmp.c @@ -3145,9 +3145,9 @@ dissect_rohc_supported(tvbuff_t *tvb, proto_tree *rohc_tree, int offset ) offset += 2; } if (optlen==0) - { - proto_tree_add_text(sub_rohc_tree, tvb, offset, 0,"Attribut value is empty"); - return 2+len; + { + proto_tree_add_text(sub_rohc_tree, tvb, offset, 0,"Attribute value is empty"); + return 2+len; } proto_tree_add_item(sub_rohc_tree, hf_isakmp_notify_data_rohc_attr_value, tvb, offset, optlen, ENC_NA); switch(rohc) { diff --git a/epan/dissectors/packet-iscsi.c b/epan/dissectors/packet-iscsi.c index e24ac40677..f062603e07 100644 --- a/epan/dissectors/packet-iscsi.c +++ b/epan/dissectors/packet-iscsi.c @@ -703,8 +703,8 @@ handleDataSegmentAsTextKeys(packet_info *pinfo, proto_item *ti, tvbuff_t *tvb, g int dataOffset = offset; int textLen = MIN(dataSegmentLen, endOffset - offset); if(textLen > 0) { - proto_item *tf = proto_tree_add_text(ti, tvb, offset, textLen, "Key/Value Pairs"); - proto_tree *tt = proto_item_add_subtree(tf, ett_iscsi_KeyValues); + proto_tree *tt = proto_tree_add_subtree(ti, tvb, offset, textLen, + ett_iscsi_KeyValues, NULL, "Key/Value Pairs"); offset = addTextKeys(pinfo, tt, tvb, offset, textLen); } if(offset < endOffset && (offset & 3) != 0) { @@ -1487,7 +1487,6 @@ dissect_iscsi_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint off } offset=end_offset; } else if(opcode == ISCSI_OPCODE_REJECT) { - proto_item *tf; proto_tree *tt; int next_opcode; const char *next_opcode_str; @@ -1507,8 +1506,7 @@ dissect_iscsi_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint off next_opcode = tvb_get_guint8(tvb, offset) & 0x3f; next_opcode_str = try_val_to_str(next_opcode, iscsi_opcodes); - tf = proto_tree_add_text(ti, tvb, offset, -1, "Rejected Header"); - tt = proto_item_add_subtree(tf, ett_iscsi_RejectHeader); + tt = proto_tree_add_subtree(ti, tvb, offset, -1, ett_iscsi_RejectHeader, NULL, "Rejected Header"); dissect_iscsi_pdu(tvb, pinfo, tt, offset, next_opcode, next_opcode_str, 0, iscsi_session, conversation); } else if(opcode == ISCSI_OPCODE_VENDOR_SPECIFIC_I0 || diff --git a/epan/dissectors/packet-isis-clv.c b/epan/dissectors/packet-isis-clv.c index 0b6e43c9c5..a701048b5e 100644 --- a/epan/dissectors/packet-isis-clv.c +++ b/epan/dissectors/packet-isis-clv.c @@ -517,7 +517,6 @@ isis_dissect_clvs(tvbuff_t *tvb, packet_info* pinfo, proto_tree *tree, int offse guint8 code; guint8 length; int q; - proto_item *ti; proto_tree *clv_tree; while ( len > 0 ) { @@ -544,29 +543,17 @@ isis_dissect_clvs(tvbuff_t *tvb, packet_info* pinfo, proto_tree *tree, int offse q++; } if ( opts[q].dissect ) { - if (tree) { - /* adjust by 2 for code/len octets */ - ti = proto_tree_add_text(tree, tvb, offset - 2, - length + 2, "%s (%u)", + /* adjust by 2 for code/len octets */ + clv_tree = proto_tree_add_subtree_format(tree, tvb, offset - 2, + length + 2, *opts[q].tree_id, NULL, "%s (%u)", opts[q].tree_text, length ); - clv_tree = proto_item_add_subtree(ti, - *opts[q].tree_id ); - } else { - clv_tree = NULL; - } opts[q].dissect(tvb, pinfo, clv_tree, offset, id_length, length); } else { #if 0 /* XXX: Left as commented out in case info about "unknown code" is ever to be displayed under a sub-tree */ - if (tree) { - ti = proto_tree_add_text(tree, tvb, offset - 2, - length + 2, "Unknown code %u (%u)", + clv_tree = proto_tree_add_subtree_format(tree, tvb, offset - 2, + length + 2, unknown_tree_id, NULL, "Unknown code %u (%u)", code, length); - clv_tree = proto_item_add_subtree(ti, - unknown_tree_id ); - } else { - clv_tree = NULL; - } #else if (tree) { proto_tree_add_text(tree, tvb, offset - 2, diff --git a/epan/dissectors/packet-isis-hello.c b/epan/dissectors/packet-isis-hello.c index e93e6817eb..7bdb8183a2 100644 --- a/epan/dissectors/packet-isis-hello.c +++ b/epan/dissectors/packet-isis-hello.c @@ -145,7 +145,7 @@ dissect_hello_mt_port_cap_spb_mcid_clv(tvbuff_t *tvb, packet_info* pinfo, { const int MCID_LEN = 51; const int SUBLEN = 2 * MCID_LEN; - proto_tree *subtree, *ti; + proto_tree *subtree; if (sublen != SUBLEN) { proto_tree_add_expert_format(tree, pinfo, &ei_isis_hello_short_packet, tvb, offset, -1, @@ -154,9 +154,8 @@ dissect_hello_mt_port_cap_spb_mcid_clv(tvbuff_t *tvb, packet_info* pinfo, } - ti = proto_tree_add_text( tree, tvb, offset-2, sublen+2, + subtree = proto_tree_add_subtree_format( tree, tvb, offset-2, sublen+2, ett_isis_hello_clv_mt_port_cap_spb_mcid, NULL, "SPB MCID: Type: 0x%02x, Length: %d", subtype, sublen); - subtree = proto_item_add_subtree(ti, ett_isis_hello_clv_mt_port_cap_spb_mcid); /* MCID: */ proto_tree_add_item(subtree, hf_isis_hello_mcid, tvb, offset, MCID_LEN, ENC_NA); @@ -179,12 +178,11 @@ dissect_hello_mt_port_cap_spb_digest_clv(tvbuff_t *tvb, packet_info* pinfo, return; } else { - proto_tree *subtree, *ti; + proto_tree *subtree; const guint8 vad = tvb_get_guint8(tvb, offset); - ti = proto_tree_add_text( tree, tvb, offset-2, sublen+2, + subtree = proto_tree_add_subtree_format( tree, tvb, offset-2, sublen+2, ett_isis_hello_clv_mt_port_cap_spb_digest, NULL, "SPB Digest: Type: 0x%02x, Length: %d", subtype, sublen); - subtree = proto_item_add_subtree(ti, ett_isis_hello_clv_mt_port_cap_spb_digest); proto_tree_add_text( subtree, tvb, offset, 1, "V: %d, A: %d, D: %d", @@ -203,12 +201,11 @@ static void dissect_hello_mt_port_cap_spb_bvid_tuples_clv(tvbuff_t *tvb, packet_info* pinfo, proto_tree *tree, int offset, int subtype, int sublen) { - proto_tree *subtree, *ti; + proto_tree *subtree; int subofs = offset; - ti = proto_tree_add_text( tree, tvb, offset-2, sublen+2, + subtree = proto_tree_add_subtree_format( tree, tvb, offset-2, sublen+2, ett_isis_hello_clv_mt_port_cap_spb_bvid_tuples, NULL, "SPB Base Vlan Identifiers: Type: 0x%02x, Length: %d", subtype, sublen); - subtree = proto_item_add_subtree(ti, ett_isis_hello_clv_mt_port_cap_spb_bvid_tuples); while (sublen > 0) { if (sublen < 6) { diff --git a/epan/dissectors/packet-isis-lsp.c b/epan/dissectors/packet-isis-lsp.c index c16186efae..d3c0d94f90 100644 --- a/epan/dissectors/packet-isis-lsp.c +++ b/epan/dissectors/packet-isis-lsp.c @@ -553,7 +553,6 @@ static void dissect_lsp_ext_ip_reachability_clv(tvbuff_t *tvb, packet_info* pinfo, proto_tree *tree, int offset, int id_length _U_, int length) { - proto_item *pi = NULL; proto_tree *subtree = NULL; proto_tree *subtree2 = NULL; guint8 ctrl_info; @@ -580,8 +579,8 @@ dissect_lsp_ext_ip_reachability_clv(tvbuff_t *tvb, packet_info* pinfo, proto_tre subclvs_len = 1+tvb_get_guint8(tvb, offset+5+byte_length); /* open up a new tree per prefix */ - pi = proto_tree_add_text (tree, tvb, offset, 5+byte_length+subclvs_len, "Ext. IP Reachability"); - subtree = proto_item_add_subtree (pi, ett_isis_lsp_part_of_clv_ext_ip_reachability); + subtree = proto_tree_add_subtree(tree, tvb, offset, 5+byte_length+subclvs_len, + ett_isis_lsp_part_of_clv_ext_ip_reachability, NULL, "Ext. IP Reachability"); proto_tree_add_ipv4_format_value(subtree, hf_isis_lsp_ext_ip_reachability_ipv4_prefix, tvb, offset+5, byte_length, tvb_get_ntohl(tvb, offset+5), "%s/%u", ip_to_str (prefix), bit_length); @@ -591,12 +590,9 @@ dissect_lsp_ext_ip_reachability_clv(tvbuff_t *tvb, packet_info* pinfo, proto_tre len = 5 + byte_length; if ((ctrl_info & 0x40) != 0) { subclvs_len = tvb_get_guint8(tvb, offset+len); - pi = proto_tree_add_text (subtree, tvb, offset+len, 1, "sub-TLVs present, total length: %u bytes", - subclvs_len); - proto_item_set_len (pi, subclvs_len+1); - /* open up a new tree for the subTLVs */ - subtree2 = proto_item_add_subtree (pi, ett_isis_lsp_clv_ip_reach_subclv); - + subtree2 = proto_tree_add_subtree_format(subtree, tvb, offset+len, subclvs_len+1, + ett_isis_lsp_clv_ip_reach_subclv, NULL, + "sub-TLVs present, total length: %u bytes", subclvs_len); i =0; while (i < subclvs_len) { clv_code = tvb_get_guint8(tvb, offset+len+1); /* skip the total subtlv len indicator */ @@ -612,8 +608,7 @@ dissect_lsp_ext_ip_reachability_clv(tvbuff_t *tvb, packet_info* pinfo, proto_tre } len += 1 + subclvs_len; } else { - proto_tree_add_text (subtree, tvb, offset+4, 1, "no sub-TLVs present"); - proto_item_set_len (pi, len); + proto_tree_add_text (subtree, tvb, offset+4, len, "no sub-TLVs present"); } offset += len; @@ -654,7 +649,6 @@ dissect_isis_grp_address_clv(tvbuff_t *tvb, packet_info* pinfo _U_, proto_tree * guint16 sswid = 0; guint16 lid = 0; - proto_item *ti=NULL; proto_tree *rt_tree=NULL; while (length>0) { @@ -665,8 +659,8 @@ dissect_isis_grp_address_clv(tvbuff_t *tvb, packet_info* pinfo _U_, proto_tree * case GRP_MAC_ADDRESS: - ti = proto_tree_add_text (tree, tvb, offset, (mt_block&0x00ff)+2, "GROUP MAC ADDRESS SUB TLV"); - rt_tree = proto_item_add_subtree(ti,ett_isis_lsp_clv_grp_address_IPv4_prefx); + rt_tree = proto_tree_add_subtree(tree, tvb, offset, (mt_block&0x00ff)+2, + ett_isis_lsp_clv_grp_address_IPv4_prefx, NULL, "GROUP MAC ADDRESS SUB TLV"); length--; offset++; @@ -778,7 +772,6 @@ dissect_isis_rt_capable_clv(tvbuff_t *tvb, packet_info* pinfo _U_, { gint len; guint16 rt_block; - proto_item *ti; proto_tree *rt_tree; gint root_id = 1; /* To display the root id */ @@ -794,8 +787,8 @@ dissect_isis_rt_capable_clv(tvbuff_t *tvb, packet_info* pinfo _U_, switch ((rt_block&0xff00)>>8) { case TRILL_VERSION: - ti = proto_tree_add_text(tree, tvb, offset, (rt_block&0x00ff)+2, "TRILL version sub tlv"); - rt_tree = proto_item_add_subtree(ti, ett_isis_lsp_clv_rt_capable_IPv4_prefx); + rt_tree = proto_tree_add_subtree(tree, tvb, offset, (rt_block&0x00ff)+2, + ett_isis_lsp_clv_rt_capable_IPv4_prefx, NULL, "TRILL version sub tlv"); length--; offset++; @@ -809,8 +802,8 @@ dissect_isis_rt_capable_clv(tvbuff_t *tvb, packet_info* pinfo _U_, break; case TREES: - ti = proto_tree_add_text(tree, tvb, offset, (rt_block&0x00ff)+2, "Trees sub tlv"); - rt_tree = proto_item_add_subtree(ti, ett_isis_lsp_clv_rt_capable_IPv4_prefx); + rt_tree = proto_tree_add_subtree(tree, tvb, offset, (rt_block&0x00ff)+2, + ett_isis_lsp_clv_rt_capable_IPv4_prefx, NULL, "Trees sub tlv"); length--; offset++; @@ -837,8 +830,8 @@ dissect_isis_rt_capable_clv(tvbuff_t *tvb, packet_info* pinfo _U_, break; case TREE_IDENTIFIER: - ti=proto_tree_add_text(tree, tvb, offset, (rt_block&0x00ff)+2, "Tree root identifier sub tlv"); - rt_tree = proto_item_add_subtree(ti, ett_isis_lsp_clv_rt_capable_IPv4_prefx); + rt_tree=proto_tree_add_subtree(tree, tvb, offset, (rt_block&0x00ff)+2, + ett_isis_lsp_clv_rt_capable_IPv4_prefx, NULL, "Tree root identifier sub tlv"); length--; offset++; @@ -864,8 +857,8 @@ dissect_isis_rt_capable_clv(tvbuff_t *tvb, packet_info* pinfo _U_, break; case NICKNAME: - ti=proto_tree_add_text(tree, tvb, offset, (rt_block&0x00ff)+2, "The nickname sub tlv"); - rt_tree = proto_item_add_subtree(ti, ett_isis_lsp_clv_rt_capable_IPv4_prefx); + rt_tree = proto_tree_add_subtree(tree, tvb, offset, (rt_block&0x00ff)+2, + ett_isis_lsp_clv_rt_capable_IPv4_prefx, NULL, "The nickname sub tlv"); length--; offset++; @@ -894,8 +887,8 @@ dissect_isis_rt_capable_clv(tvbuff_t *tvb, packet_info* pinfo _U_, break; case INTERESTED_VLANS: - ti = proto_tree_add_text(tree, tvb, offset, (rt_block&0x00ff)+2, "Interested VLAN and spanning tree root sub tlv"); - rt_tree = proto_item_add_subtree(ti, ett_isis_lsp_clv_rt_capable_IPv4_prefx); + rt_tree = proto_tree_add_subtree(tree, tvb, offset, (rt_block&0x00ff)+2, + ett_isis_lsp_clv_rt_capable_IPv4_prefx, NULL, "Interested VLAN and spanning tree root sub tlv"); length--; offset++; @@ -938,8 +931,8 @@ dissect_isis_rt_capable_clv(tvbuff_t *tvb, packet_info* pinfo _U_, break; case TREES_USED_IDENTIFIER: - ti=proto_tree_add_text(tree, tvb, offset, (rt_block&0x00ff)+2, "Trees used identifier sub tlv"); - rt_tree = proto_item_add_subtree(ti, ett_isis_lsp_clv_rt_capable_IPv4_prefx); + rt_tree = proto_tree_add_subtree(tree, tvb, offset, (rt_block&0x00ff)+2, + ett_isis_lsp_clv_rt_capable_IPv4_prefx, NULL, "Trees used identifier sub tlv"); length--; offset++; @@ -966,8 +959,8 @@ dissect_isis_rt_capable_clv(tvbuff_t *tvb, packet_info* pinfo _U_, break; case VLAN_GROUP: - ti = proto_tree_add_text(tree, tvb, offset, (rt_block&0x00ff)+2, "The VLAN group sub tlv"); - rt_tree = proto_item_add_subtree(ti, ett_isis_lsp_clv_rt_capable_IPv4_prefx); + rt_tree = proto_tree_add_subtree(tree, tvb, offset, (rt_block&0x00ff)+2, + ett_isis_lsp_clv_rt_capable_IPv4_prefx, NULL, "The VLAN group sub tlv"); length--; offset++; @@ -1040,7 +1033,6 @@ static void dissect_lsp_ipv6_reachability_clv(tvbuff_t *tvb, packet_info* pinfo, proto_tree *tree, int offset, int id_length _U_, int length) { - proto_item *pi; proto_tree *subtree = NULL; proto_tree *subtree2 = NULL; guint8 ctrl_info; @@ -1066,8 +1058,8 @@ dissect_lsp_ipv6_reachability_clv(tvbuff_t *tvb, packet_info* pinfo, proto_tree if ((ctrl_info & 0x20) != 0) subclvs_len = 1+tvb_get_guint8(tvb, offset+6+byte_length); - pi = proto_tree_add_text (tree, tvb, offset, 6+byte_length+subclvs_len, "IPv6 Reachability"); - subtree = proto_item_add_subtree (pi, ett_isis_lsp_part_of_clv_ipv6_reachability); + subtree = proto_tree_add_subtree(tree, tvb, offset, 6+byte_length+subclvs_len, + ett_isis_lsp_part_of_clv_ipv6_reachability, NULL, "IPv6 Reachability"); proto_tree_add_ipv6_format_value(subtree, hf_isis_lsp_ipv6_reachability_ipv6_prefix, tvb, offset+6, byte_length, (guint8*)&prefix, "IPv6 prefix: %s/%u", ip6_to_str (&prefix), bit_length); @@ -1083,11 +1075,9 @@ dissect_lsp_ipv6_reachability_clv(tvbuff_t *tvb, packet_info* pinfo, proto_tree len = 6 + byte_length; if ((ctrl_info & 0x20) != 0) { subclvs_len = tvb_get_guint8(tvb, offset+len); - pi = proto_tree_add_text (subtree, tvb, offset+len, 1, "sub-TLVs present, total length: %u bytes", + subtree2 = proto_tree_add_subtree_format(subtree, tvb, offset+len, subclvs_len+1, + ett_isis_lsp_clv_ip_reach_subclv, NULL, "sub-TLVs present, total length: %u bytes", subclvs_len); - proto_item_set_len (pi, subclvs_len+1); - /* open up a new tree for the subTLVs */ - subtree2 = proto_item_add_subtree (pi, ett_isis_lsp_clv_ip_reach_subclv); i =0; while (i < subclvs_len) { @@ -1098,8 +1088,7 @@ dissect_lsp_ipv6_reachability_clv(tvbuff_t *tvb, packet_info* pinfo, proto_tree } len += 1 + subclvs_len; } else { - proto_tree_add_text (subtree, tvb, offset+4, 1, "no sub-TLVs present"); - proto_item_set_len (pi, len); + proto_tree_add_text (subtree, tvb, offset+4, len, "no sub-TLVs present"); } offset += len; length -= len; @@ -1286,9 +1275,8 @@ dissect_isis_lsp_clv_mt_cap_spb_instance(tvbuff_t *tvb, packet_info *pinfo, guint8 num_trees = tvb_get_guint8(tvb, subofs + NUM_TREES_OFFSET); /*************************/ - ti = proto_tree_add_text( tree, tvb, offset-2, sublen+2, + subtree = proto_tree_add_subtree_format( tree, tvb, offset-2, sublen+2, ett_isis_lsp_clv_mt_cap_spb_instance, NULL, "SPB Instance: Type: 0x%02x, Length: %d", subtype, sublen); - subtree = proto_item_add_subtree(ti, ett_isis_lsp_clv_mt_cap_spb_instance); /*************************/ proto_tree_add_bytes_format_value( subtree, hf_isis_lsp_mt_cap_spb_instance_cist_root_identifier, tvb, subofs + CIST_ROOT_ID_OFFSET, CIST_ROOT_ID_LEN, @@ -1377,13 +1365,12 @@ dissect_isis_lsp_clv_mt_cap_spbm_service_identifier(tvbuff_t *tvb, packet_info * return; } else { - proto_tree *subtree, *ti; + proto_tree *subtree; int subofs = offset; /*************************/ - ti = proto_tree_add_text( tree, tvb, offset-2, sublen+2, + subtree = proto_tree_add_subtree_format( tree, tvb, offset-2, sublen+2, ett_isis_lsp_clv_mt_cap_spbm_service_identifier, NULL, "SPB Service ID and Unicast Address: Type: 0x%02x, Length: %d", subtype, sublen); - subtree = proto_item_add_subtree(ti, ett_isis_lsp_clv_mt_cap_spbm_service_identifier); /*************************/ proto_tree_add_item(subtree, hf_isis_lsp_mt_cap_spbm_service_identifier_b_mac, tvb, subofs + BMAC_OFFSET, BMAC_LEN, ENC_NA); @@ -1433,16 +1420,15 @@ dissect_isis_lsp_clv_mt_cap_spbv_mac_address(tvbuff_t *tvb, packet_info *pinfo, return; } else { - proto_tree *subtree, *ti; + proto_tree *subtree; int subofs = offset; fixed_data = tvb_get_ntohs(tvb, subofs); spvid = (fixed_data & 0x0FFF); sr_bit = (fixed_data & 0x3000) >> 12; /*************************/ - ti = proto_tree_add_text( tree, tvb, offset-2, sublen+2, + subtree = proto_tree_add_subtree_format( tree, tvb, offset-2, sublen+2, ett_isis_lsp_clv_mt_cap_spbv_mac_address, NULL, "SPBV Mac Address: Type: 0x%02x, Length: %d", subtype, sublen); - subtree = proto_item_add_subtree(ti, ett_isis_lsp_clv_mt_cap_spbv_mac_address); /*************************/ proto_tree_add_uint(subtree, hf_isis_lsp_spb_sr_bit, @@ -1668,11 +1654,10 @@ dissect_lsp_eis_neighbors_clv_inner(tvbuff_t *tvb, packet_info *pinfo, proto_tre */ if ( tree ) { if ( is_eis ) { - ti = proto_tree_add_text(tree, tvb, offset, tlen, "ES Neighbor"); + ntree = proto_tree_add_subtree(tree, tvb, offset, tlen, ett_isis_lsp_clv_is_neighbors, &ti, "ES Neighbor"); } else { - ti = proto_tree_add_text(tree, tvb, offset, tlen, "IS Neighbor"); + ntree = proto_tree_add_subtree(tree, tvb, offset, tlen, ett_isis_lsp_clv_is_neighbors, &ti, "IS Neighbor"); } - ntree = proto_item_add_subtree(ti, ett_isis_lsp_clv_is_neighbors); proto_tree_add_item(ntree, hf_isis_lsp_eis_neighbors_default_metric, tvb, offset, 1, ENC_NA); proto_tree_add_item(ntree, hf_isis_lsp_eis_neighbors_default_metric_ie, tvb, offset, 1, ENC_NA); @@ -1793,14 +1778,13 @@ dissect_lsp_l2_is_neighbors_clv(tvbuff_t *tvb, packet_info* pinfo, proto_tree *t */ static void dissect_subclv_admin_group (tvbuff_t *tvb, proto_tree *tree, int offset) { - proto_item *ti; proto_tree *ntree; guint32 clv_value; guint32 mask; int i; - ti = proto_tree_add_text(tree, tvb, offset-2, 6, "Administrative group(s):"); - ntree = proto_item_add_subtree (ti, ett_isis_lsp_subclv_admin_group); + ntree = proto_tree_add_subtree(tree, tvb, offset-2, 6, + ett_isis_lsp_subclv_admin_group, NULL, "Administrative group(s):"); clv_value = tvb_get_ntohl(tvb, offset); mask = 1; @@ -1883,13 +1867,12 @@ dissect_subclv_rsv_bw(tvbuff_t *tvb, proto_tree *tree, int offset) static void dissect_subclv_unrsv_bw(tvbuff_t *tvb, proto_tree *tree, int offset) { - proto_item *ti; proto_tree *ntree; gfloat bw; int i; - ti = proto_tree_add_text (tree, tvb, offset-2, 34, "Unreserved bandwidth:"); - ntree = proto_item_add_subtree (ti, ett_isis_lsp_subclv_unrsv_bw); + ntree = proto_tree_add_subtree(tree, tvb, offset-2, 34, + ett_isis_lsp_subclv_unrsv_bw, NULL, "Unreserved bandwidth:"); for (i = 0 ; i < 8 ; i++) { bw = tvb_get_ntohieee_float(tvb, offset+4*i)*8/1000000; @@ -1929,10 +1912,9 @@ dissect_subclv_spb_link_metric(tvbuff_t *tvb, packet_info *pinfo, return; } else { - proto_tree *subtree, *ti; - ti = proto_tree_add_text( tree, tvb, offset-2, sublen+2, + proto_tree *subtree; + subtree = proto_tree_add_subtree_format( tree, tvb, offset-2, sublen+2, ett_isis_lsp_subclv_spb_link_metric, NULL, "SPB Link Metric: Type: 0x%02x (%d), Length: %d", subtype, subtype, sublen); - subtree = proto_item_add_subtree(ti, ett_isis_lsp_subclv_spb_link_metric); proto_tree_add_item(subtree, hf_isis_lsp_spb_link_metric, tvb, offset, 3, ENC_BIG_ENDIAN); @@ -1978,8 +1960,8 @@ dissect_lsp_ext_is_reachability_clv(tvbuff_t *tvb, packet_info* pinfo, proto_tre guint clv_code, clv_len; while (length > 0) { - ti = proto_tree_add_text(tree, tvb, offset, -1, "IS Neighbor"); - ntree = proto_item_add_subtree (ti, ett_isis_lsp_part_of_clv_ext_is_reachability ); + ntree = proto_tree_add_subtree(tree, tvb, offset, -1, + ett_isis_lsp_part_of_clv_ext_is_reachability, &ti, "IS Neighbor"); proto_tree_add_item(ntree, hf_isis_lsp_ext_is_reachability_is_neighbor_id, tvb, offset, 7, ENC_NA); proto_item_append_text(ti, ": %s", tvb_print_system_id(tvb, offset, 7)); @@ -2577,8 +2559,8 @@ static void dissect_isis_lsp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, const isis_clv_handle_t *opts, int header_length, int id_length) { - proto_item *ti, *to, *ta; - proto_tree *lsp_tree = NULL, *info_tree, *att_tree; + proto_item *ti, *ta; + proto_tree *lsp_tree, *info_tree, *att_tree; guint16 pdu_length, lifetime, checksum, cacl_checksum=0; guint8 lsp_info; int len, offset_checksum; @@ -2648,7 +2630,7 @@ dissect_isis_lsp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset * P | ATT | HIPPITY | IS TYPE description. */ lsp_info = tvb_get_guint8(tvb, offset); - to = proto_tree_add_text(lsp_tree, tvb, offset, 1, + info_tree = proto_tree_add_subtree_format(lsp_tree, tvb, offset, 1, ett_isis_lsp_info, NULL, "Type block(0x%02x): Partition Repair:%d, Attached bits:%d, Overload bit:%d, IS type:%d", lsp_info, ISIS_LSP_PARTITION(lsp_info), @@ -2657,7 +2639,6 @@ dissect_isis_lsp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset ISIS_LSP_IS_TYPE(lsp_info) ); - info_tree = proto_item_add_subtree(to, ett_isis_lsp_info); proto_tree_add_boolean(info_tree, hf_isis_lsp_p, tvb, offset, 1, lsp_info); ta = proto_tree_add_uint(info_tree, hf_isis_lsp_att, tvb, offset, 1, lsp_info); att_tree = proto_item_add_subtree(ta, ett_isis_lsp_att); diff --git a/epan/dissectors/packet-isis-snp.c b/epan/dissectors/packet-isis-snp.c index a71807e759..05ef84840b 100644 --- a/epan/dissectors/packet-isis-snp.c +++ b/epan/dissectors/packet-isis-snp.c @@ -157,7 +157,6 @@ static void dissect_snp_lsp_entries_clv(tvbuff_t *tvb, packet_info* pinfo, proto_tree *tree, int offset, int id_length, int length) { - proto_item *ti; proto_tree *subtree; while ( length > 0 ) { @@ -167,8 +166,8 @@ dissect_snp_lsp_entries_clv(tvbuff_t *tvb, packet_info* pinfo, proto_tree *tree, return; } - ti = proto_tree_add_text(tree, tvb, offset, 2+id_length+2+4+2, "LSP Entry"); - subtree = proto_item_add_subtree(ti,ett_isis_csnp_lsp_entry); + subtree = proto_tree_add_subtree(tree, tvb, offset, 2+id_length+2+4+2, + ett_isis_csnp_lsp_entry, NULL, "LSP Entry"); proto_tree_add_item(tree, hf_isis_csnp_lsp_id, tvb, offset+2, id_length+2, ENC_NA); diff --git a/epan/dissectors/packet-ismp.c b/epan/dissectors/packet-ismp.c index 30c79fda03..963b3ac9b8 100644 --- a/epan/dissectors/packet-ismp.c +++ b/epan/dissectors/packet-ismp.c @@ -236,13 +236,11 @@ dissect_ismp_edp(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *ismp proto_item *edp_neighbors_ti; proto_tree *edp_neighbors_tree; - proto_item *edp_neighbors_leaf_ti; proto_tree *edp_neighbors_leaf_tree; proto_item *edp_tuples_ti; proto_tree *edp_tuples_tree; - proto_item *edp_tuples_leaf_ti; proto_tree *edp_tuples_leaf_tree; /* add column iformation marking this as EDP (Enterasys Discover Protocol */ @@ -359,20 +357,19 @@ dissect_ismp_edp(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *ismp edp_neighbors_tree = proto_item_add_subtree(edp_neighbors_ti, ett_ismp_edp_neighbors); while ( neighbors_count < num_neighbors && tvb_reported_length_remaining(tvb, offset) >= 10) { - edp_neighbors_leaf_ti = proto_tree_add_text(edp_neighbors_tree, tvb, offset, 10, - "Neighbor%d", (neighbors_count+1)); - edp_neighbors_leaf_tree = proto_item_add_subtree(edp_neighbors_leaf_ti, ett_ismp_edp_neighbors_leaf); + edp_neighbors_leaf_tree = proto_tree_add_subtree_format(edp_neighbors_tree, tvb, offset, 10, + ett_ismp_edp_neighbors_leaf, NULL, "Neighbor%d", (neighbors_count+1)); proto_tree_add_text(edp_neighbors_leaf_tree, tvb, offset, 6, "MAC Address: %s", tvb_ether_to_str(tvb, offset)); proto_tree_add_text(edp_neighbors_leaf_tree, tvb, offset, 4, - "Assigned Neighbor State 0x%04x", tvb_get_ntohl(tvb, offset)); + "Assigned Neighbor State: 0x%04x", tvb_get_ntohl(tvb, offset)); offset += 10; neighbors_count++; } if (neighbors_count != num_neighbors) { - proto_tree_add_text(edp_tree, tvb, offset, tvb_reported_length_remaining(tvb, offset), + proto_tree_add_text(edp_tree, tvb, offset, -1, "MALFORMED PACKET"); return; } @@ -408,10 +405,8 @@ dissect_ismp_edp(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *ismp { tuple_length = tvb_get_ntohs(tvb, offset+2); - edp_tuples_leaf_ti = proto_tree_add_text(edp_tuples_tree, tvb, offset, tuple_length, - "Tuple%d", tuples_count+1); - - edp_tuples_leaf_tree = proto_item_add_subtree(edp_tuples_leaf_ti, ett_ismp_edp_tuples_leaf); + edp_tuples_leaf_tree = proto_tree_add_subtree_format(edp_tuples_tree, tvb, offset, tuple_length, + ett_ismp_edp_tuples_leaf, NULL, "Tuple%d", tuples_count+1); tuple_type = tvb_get_ntohs(tvb, offset); proto_tree_add_text(edp_tuples_leaf_tree, tvb, offset, 2, diff --git a/epan/dissectors/packet-iso7816.c b/epan/dissectors/packet-iso7816.c index 691997b492..0d26ed8a97 100644 --- a/epan/dissectors/packet-iso7816.c +++ b/epan/dissectors/packet-iso7816.c @@ -393,8 +393,7 @@ dissect_iso7816_params(guint8 ins, tvbuff_t *tvb, gint offset, packet_info *pinfo _U_, proto_tree *tree) { gint offset_start, p1_offset, p2_offset; - proto_item *ti; - proto_tree *params_tree = NULL; + proto_tree *params_tree; guint8 p1, p2; proto_item *p1_it = NULL, *p2_it = NULL; proto_tree *p1_tree = NULL, *p2_tree = NULL; @@ -402,8 +401,8 @@ dissect_iso7816_params(guint8 ins, tvbuff_t *tvb, gint offset, offset_start = offset; - ti = proto_tree_add_text(tree, tvb, offset_start, 2, "Parameters"); - params_tree = proto_item_add_subtree(ti, ett_iso7816_param); + params_tree = proto_tree_add_subtree(tree, tvb, offset_start, 2, + ett_iso7816_param, NULL, "Parameters"); p1 = tvb_get_guint8(tvb,offset); p1_it = proto_tree_add_item(params_tree, hf_iso7816_p1, tvb, diff --git a/epan/dissectors/packet-isup.c b/epan/dissectors/packet-isup.c index 6884f1fc3e..0728c97243 100644 --- a/epan/dissectors/packet-isup.c +++ b/epan/dissectors/packet-isup.c @@ -3280,9 +3280,8 @@ dissect_isup_called_party_number_parameter(tvbuff_t *parameter_tvb, proto_tree * return; } - address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb, - offset, -1, "Called Party Number"); - address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits); + address_digits_tree = proto_tree_add_subtree(parameter_tree, parameter_tvb, offset, -1, + ett_isup_address_digits, &address_digits_item, "Called Party Number"); while ((length = tvb_reported_length_remaining(parameter_tvb, offset)) > 0) { address_digit_pair = tvb_get_guint8(parameter_tvb, offset); @@ -3345,10 +3344,9 @@ dissect_isup_subsequent_number_parameter(tvbuff_t *parameter_tvb, proto_tree *pa proto_tree_add_boolean(parameter_tree, hf_isup_odd_even_indicator, parameter_tvb, 0, 1, indicators1); offset = 1; - address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb, - offset, -1, + address_digits_tree = proto_tree_add_subtree(parameter_tree, parameter_tvb, offset, -1, + ett_isup_address_digits, &address_digits_item, "Subsequent Number"); - address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits); while ((length = tvb_reported_length_remaining(parameter_tvb, offset)) > 0) { address_digit_pair = tvb_get_guint8(parameter_tvb, offset); @@ -3852,7 +3850,6 @@ dissect_isup_suspend_resume_indicators_parameter(tvbuff_t *parameter_tvb, proto_ static void dissect_isup_range_and_status_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item) { - proto_item *item; proto_tree *range_tree; int offset = 0; guint8 range, actual_status_length; @@ -3863,8 +3860,7 @@ dissect_isup_range_and_status_parameter(tvbuff_t *parameter_tvb, proto_tree *par actual_status_length = tvb_reported_length_remaining(parameter_tvb, offset); if (actual_status_length > 0) { - item = proto_tree_add_text(parameter_tree, parameter_tvb , offset, -1, "Status subfield"); - range_tree = proto_item_add_subtree(item, ett_isup_range); + range_tree = proto_tree_add_subtree(parameter_tree, parameter_tvb, offset, -1, ett_isup_range, NULL, "Status subfield"); if (range<9) { proto_tree_add_text(range_tree, parameter_tvb , offset, 1, "Bit %u %s bit 1", range, @@ -3915,22 +3911,22 @@ dissect_isup_circuit_state_ind_parameter(tvbuff_t *parameter_tvb, proto_tree *pa gint i = 0; while (tvb_reported_length_remaining(parameter_tvb, offset) > 0) { - circuit_state_item = proto_tree_add_text(parameter_tree, parameter_tvb, - offset, -1, + circuit_state_tree = proto_tree_add_subtree_format(parameter_tree, parameter_tvb, offset, -1, + ett_isup_circuit_state_ind, &circuit_state_item, "Circuit# CIC+%u state", i); - circuit_state_tree = proto_item_add_subtree(circuit_state_item, ett_isup_circuit_state_ind); circuit_state = tvb_get_guint8(parameter_tvb, offset); if ((circuit_state & DC_8BIT_MASK) == 0) { proto_tree_add_uint(circuit_state_tree, hf_isup_mtc_blocking_state1, parameter_tvb, offset, 1, circuit_state); - proto_item_set_text(circuit_state_item, "Circuit# CIC+%u state: %s", i++, + proto_item_append_text(circuit_state_item, ": %s", val_to_str_const(circuit_state&BA_8BIT_MASK, isup_mtc_blocking_state_DC00_value, "unknown")); } else { proto_tree_add_uint(circuit_state_tree, hf_isup_mtc_blocking_state2, parameter_tvb, offset, 1, circuit_state); proto_tree_add_uint(circuit_state_tree, hf_isup_call_proc_state, parameter_tvb, offset, 1, circuit_state); proto_tree_add_uint(circuit_state_tree, hf_isup_hw_blocking_state, parameter_tvb, offset, 1, circuit_state); - proto_item_set_text(circuit_state_item, "Circuit# CIC+%u state: %s", i++, val_to_str_const(circuit_state&BA_8BIT_MASK, isup_mtc_blocking_state_DCnot00_value, "unknown")); + proto_item_append_text(circuit_state_item, ": %s", val_to_str_const(circuit_state&BA_8BIT_MASK, isup_mtc_blocking_state_DCnot00_value, "unknown")); } + i++; offset += 1; } proto_item_set_text(parameter_item, "Circuit state indicator (national use)"); @@ -4617,7 +4613,7 @@ dissect_bat_ase_Encapsulated_Application_Information(tvbuff_t *parameter_tvb, pa gint length = tvb_reported_length_remaining(parameter_tvb, offset), list_end; tvbuff_t *next_tvb; proto_tree *bat_ase_tree, *bat_ase_element_tree, *bat_ase_iwfa_tree; - proto_item *bat_ase_item, *bat_ase_element_item, *bat_ase_iwfa_item; + proto_item *bat_ase_element_item, *bat_ase_iwfa_item; guint8 identifier, content, BCTP_Indicator_field_1, BCTP_Indicator_field_2; guint8 tempdata, element_no, number_of_indicators; guint16 sdp_length; @@ -4631,9 +4627,8 @@ dissect_bat_ase_Encapsulated_Application_Information(tvbuff_t *parameter_tvb, pa element_no = 0; - bat_ase_item = proto_tree_add_text(parameter_tree, parameter_tvb, offset, -1, + bat_ase_tree = proto_tree_add_subtree(parameter_tree, parameter_tvb, offset, -1, ett_bat_ase, NULL, "Bearer Association Transport (BAT) Application Service Element (ASE) Encapsulated Application Information:"); - bat_ase_tree = proto_item_add_subtree(bat_ase_item , ett_bat_ase); proto_tree_add_text(bat_ase_tree, parameter_tvb, offset, -1, "BAT ASE Encapsulated Application Information, (%u byte%s length)", length, plurality(length, "", "s")); @@ -4658,12 +4653,12 @@ dissect_bat_ase_Encapsulated_Application_Information(tvbuff_t *parameter_tvb, pa length_ind_len = 2; } - bat_ase_element_item = proto_tree_add_text(bat_ase_tree, parameter_tvb, + bat_ase_element_tree = proto_tree_add_subtree_format(bat_ase_tree, parameter_tvb, (offset - length_ind_len), (length_indicator + 2), + ett_bat_ase_element, &bat_ase_element_item, "BAT ASE Element %u, Identifier: %s", element_no, val_to_str_ext(identifier, &bat_ase_list_of_Identifiers_vals_ext, "unknown (%u)")); - bat_ase_element_tree = proto_item_add_subtree(bat_ase_element_item , - ett_bat_ase_element); + if (identifier != CODEC) { /* identifier, length indicator and compabillity info must be printed inside CODEC */ /* dissection in order to use dissect_codec routine for codec list */ @@ -5140,10 +5135,9 @@ dissect_isup_calling_party_number_parameter(tvbuff_t *parameter_tvb, proto_tree return; } - address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb, - offset, -1, + address_digits_tree = proto_tree_add_subtree(parameter_tree, parameter_tvb, + offset, -1, ett_isup_address_digits, &address_digits_item, "Calling Party Number"); - address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits); while (length > 0) { address_digit_pair = tvb_get_guint8(parameter_tvb, offset); @@ -5171,7 +5165,7 @@ dissect_isup_calling_party_number_parameter(tvbuff_t *parameter_tvb, proto_tree if (i > MAXDIGITS) THROW(ReportedBoundsError); } - proto_item_set_text(address_digits_item, "Calling Party Number: %s", calling_number); + proto_item_append_text(address_digits_item, ": %s", calling_number); calling_number[i++] = '\0'; if (number_plan == 1) { e164_info.e164_number_type = CALLING_PARTY_NUMBER; @@ -5221,10 +5215,9 @@ dissect_isup_original_called_number_parameter(tvbuff_t *parameter_tvb, proto_tre return; } - address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb, - offset, -1, + address_digits_tree = proto_tree_add_subtree(parameter_tree, parameter_tvb, + offset, -1, ett_isup_address_digits, &address_digits_item, "Original Called Number"); - address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits); length = tvb_length_remaining(parameter_tvb, offset); while (length > 0) { @@ -5255,7 +5248,7 @@ dissect_isup_original_called_number_parameter(tvbuff_t *parameter_tvb, proto_tre } calling_number[i] = '\0'; - proto_item_set_text(address_digits_item, "Original Called Number: %s", calling_number); + proto_item_append_text(address_digits_item, ": %s", calling_number); proto_item_set_text(parameter_item, "Original Called Number: %s", calling_number); } @@ -5290,10 +5283,9 @@ dissect_isup_redirecting_number_parameter(tvbuff_t *parameter_tvb, proto_tree *p return; } - address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb, - offset, -1, + address_digits_tree = proto_tree_add_subtree(parameter_tree, parameter_tvb, + offset, -1, ett_isup_address_digits, &address_digits_item, "Redirecting Number"); - address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits); length = tvb_length_remaining(parameter_tvb, offset); while (length > 0) { @@ -5324,7 +5316,7 @@ dissect_isup_redirecting_number_parameter(tvbuff_t *parameter_tvb, proto_tree *p } calling_number[i] = '\0'; - proto_item_set_text(address_digits_item, "Redirecting Number: %s", calling_number); + proto_item_append_text(address_digits_item, ": %s", calling_number); proto_tree_add_string(address_digits_tree, hf_isup_redirecting, parameter_tvb, offset - length, length, calling_number); proto_item_set_text(parameter_item, "Redirecting Number: %s", calling_number); } @@ -5351,10 +5343,9 @@ dissect_isup_redirection_number_parameter(tvbuff_t *parameter_tvb, proto_tree *p proto_tree_add_uint(parameter_tree, hf_isup_numbering_plan_indicator, parameter_tvb, 1, 1, indicators2); offset = 2; - address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb, - offset, -1, + address_digits_tree = proto_tree_add_subtree(parameter_tree, parameter_tvb, + offset, -1, ett_isup_address_digits, &address_digits_item, "Redirection Number"); - address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits); length = tvb_length_remaining(parameter_tvb, offset); while (length > 0) { @@ -5385,7 +5376,7 @@ dissect_isup_redirection_number_parameter(tvbuff_t *parameter_tvb, proto_tree *p } called_number[i] = '\0'; - proto_item_set_text(address_digits_item, "Redirection Number: %s", called_number); + proto_item_append_text(address_digits_item, ": %s", called_number); proto_item_set_text(parameter_item, "Redirection Number: %s", called_number); } /* ------------------------------------------------------------------ @@ -5513,10 +5504,9 @@ dissect_isup_connected_number_parameter(tvbuff_t *parameter_tvb, proto_tree *par length = tvb_length_remaining(parameter_tvb, offset); if (length == 0) return; /* empty connected number */ - address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb, - offset, -1, + address_digits_tree = proto_tree_add_subtree(parameter_tree, parameter_tvb, + offset, -1, ett_isup_address_digits, &address_digits_item, "Connected Number"); - address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits); while (length > 0) { address_digit_pair = tvb_get_guint8(parameter_tvb, offset); @@ -5546,7 +5536,7 @@ dissect_isup_connected_number_parameter(tvbuff_t *parameter_tvb, proto_tree *par } calling_number[i] = '\0'; - proto_item_set_text(address_digits_item, "Connected Number: %s", calling_number); + proto_item_append_text(address_digits_item, ": %s", calling_number); proto_item_set_text(parameter_item, "Connected Number: %s", calling_number); } @@ -5571,10 +5561,9 @@ dissect_isup_transit_network_selection_parameter(tvbuff_t *parameter_tvb, proto_ proto_tree_add_uint(parameter_tree, hf_isup_network_identification_plan, parameter_tvb, 0, 1, indicators); offset = 1; - address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb, - offset, -1, + address_digits_tree = proto_tree_add_subtree(parameter_tree, parameter_tvb, + offset, -1, ett_isup_address_digits, &address_digits_item, "Network identification"); - address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits); length = tvb_length_remaining(parameter_tvb, offset); while (length > 0) { @@ -5604,7 +5593,7 @@ dissect_isup_transit_network_selection_parameter(tvbuff_t *parameter_tvb, proto_ } network_id[i++] = '\0'; - proto_item_set_text(address_digits_item, "Network identification: %s", network_id); + proto_item_append_text(address_digits_item, ": %s", network_id); proto_item_set_text(parameter_item, "Transit network selection: %s", network_id); } @@ -6314,10 +6303,9 @@ dissect_isup_location_number_parameter(tvbuff_t *parameter_tvb, proto_tree *para offset = 2; - address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb, - offset, -1, + address_digits_tree = proto_tree_add_subtree(parameter_tree, parameter_tvb, + offset, -1, ett_isup_address_digits, &address_digits_item, "Location number"); - address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits); length = tvb_length_remaining(parameter_tvb, offset); while (length > 0) { @@ -6348,7 +6336,7 @@ dissect_isup_location_number_parameter(tvbuff_t *parameter_tvb, proto_tree *para } calling_number[i] = '\0'; - proto_item_set_text(address_digits_item, "Location number: %s", calling_number); + proto_item_append_text(address_digits_item, ": %s", calling_number); proto_item_set_text(parameter_item, "Location number: %s", calling_number); } @@ -6435,10 +6423,9 @@ dissect_isup_call_transfer_number_parameter(tvbuff_t *parameter_tvb, proto_tree proto_tree_add_uint(parameter_tree, hf_isup_screening_indicator_enhanced, parameter_tvb, 1, 1, indicators2); offset = 2; - address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb, - offset, -1, + address_digits_tree = proto_tree_add_subtree(parameter_tree, parameter_tvb, + offset, -1, ett_isup_address_digits, &address_digits_item, "Call transfer number"); - address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits); length = tvb_length_remaining(parameter_tvb, offset); while (length > 0) { @@ -6467,7 +6454,7 @@ dissect_isup_call_transfer_number_parameter(tvbuff_t *parameter_tvb, proto_tree } calling_number[i] = '\0'; - proto_item_set_text(address_digits_item, "Call transfer number: %s", calling_number); + proto_item_append_text(address_digits_item, ": %s", calling_number); proto_item_set_text(parameter_item, "Call transfer number: %s", calling_number); } @@ -6612,10 +6599,9 @@ dissect_isup_called_in_number_parameter(tvbuff_t *parameter_tvb, proto_tree *par proto_tree_add_uint(parameter_tree, hf_isup_address_presentation_restricted_indicator, parameter_tvb, 1, 1, indicators2); offset = 2; - address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb, - offset, -1, + address_digits_tree = proto_tree_add_subtree(parameter_tree, parameter_tvb, + offset, -1, ett_isup_address_digits, &address_digits_item, "Called IN Number"); - address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits); length = tvb_length_remaining(parameter_tvb, offset); while (length > 0) { @@ -6644,7 +6630,7 @@ dissect_isup_called_in_number_parameter(tvbuff_t *parameter_tvb, proto_tree *par } calling_number[i] = '\0'; - proto_item_set_text(address_digits_item, "Called IN Number: %s", calling_number); + proto_item_append_text(address_digits_item, ": %s", calling_number); proto_item_set_text(parameter_item, "Called IN Number: %s", calling_number); } @@ -6845,10 +6831,9 @@ dissect_isup_generic_number_parameter(tvbuff_t *parameter_tvb, proto_tree *param proto_item_set_text(parameter_item, "Generic Number: (empty)"); return; } - address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb, - offset, -1, + address_digits_tree = proto_tree_add_subtree(parameter_tree, parameter_tvb, + offset, -1, ett_isup_address_digits, &address_digits_item, "Generic number"); - address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits); while (length > 0) { address_digit_pair = tvb_get_guint8(parameter_tvb, offset); @@ -6887,7 +6872,7 @@ dissect_isup_generic_number_parameter(tvbuff_t *parameter_tvb, proto_tree *param if ((indicators1 == ISUP_CALLED_PARTY_NATURE_INTERNATNL_NR) && (indicators2 == ISDN_NUMBERING_PLAN)) dissect_e164_cc(parameter_tvb, address_digits_tree, 3, TRUE); - proto_item_set_text(address_digits_item, "Generic number: %s", calling_number); + proto_item_append_text(address_digits_item, ": %s", calling_number); proto_item_set_text(parameter_item, "Generic number: %s", calling_number); } @@ -6907,10 +6892,9 @@ dissect_isup_jurisdiction_parameter(tvbuff_t *parameter_tvb, proto_tree *paramet offset = 0; - address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb, - offset, -1, + address_digits_tree = proto_tree_add_subtree(parameter_tree, parameter_tvb, + offset, -1, ett_isup_address_digits, &address_digits_item, "Jurisdiction"); - address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits); while ((length = tvb_reported_length_remaining(parameter_tvb, offset)) > 0) { address_digit_pair = tvb_get_guint8(parameter_tvb, offset); @@ -6938,7 +6922,7 @@ dissect_isup_jurisdiction_parameter(tvbuff_t *parameter_tvb, proto_tree *paramet } called_number[i] = '\0'; - proto_item_set_text(address_digits_item, "Jurisdiction: %s", called_number); + proto_item_append_text(address_digits_item, ": %s", called_number); proto_item_set_text(parameter_item, "Jurisdiction: %s", called_number); }/* ------------------------------------------------------------------ @@ -6997,10 +6981,9 @@ dissect_isup_charge_number_parameter(tvbuff_t *parameter_tvb, proto_tree *parame proto_tree_add_uint(parameter_tree, hf_isup_numbering_plan_indicator, parameter_tvb, 1, 1, indicators2); offset = 2; - address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb, - offset, -1, + address_digits_tree = proto_tree_add_subtree(parameter_tree, parameter_tvb, + offset, -1, ett_isup_address_digits, &address_digits_item, "Charge Number"); - address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits); length = tvb_length_remaining(parameter_tvb, offset); while (length > 0) { @@ -7030,7 +7013,7 @@ dissect_isup_charge_number_parameter(tvbuff_t *parameter_tvb, proto_tree *parame } calling_number[i] = '\0'; - proto_item_set_text(address_digits_item, "Charge Number: %s", calling_number); + proto_item_append_text(address_digits_item, ": %s", calling_number); proto_item_set_text(parameter_item, "Charge Number: %s", calling_number); } @@ -7392,8 +7375,8 @@ dissect_japan_isup_network_poi_cad(tvbuff_t *parameter_tvb, proto_tree *paramete \-----------------------------------------------| */ - digits_item = proto_tree_add_text(parameter_tree, parameter_tvb, offset, -1, "Charge Area:"); - digits_tree = proto_item_add_subtree(digits_item, ett_isup_address_digits); + digits_tree = proto_tree_add_subtree(parameter_tree, parameter_tvb, offset, -1, + ett_isup_address_digits, &digits_item, "Charge Area Number"); /* Odd.Even Indicator*/ odd_even = tvb_get_guint8(parameter_tvb, offset); @@ -7425,7 +7408,7 @@ dissect_japan_isup_network_poi_cad(tvbuff_t *parameter_tvb, proto_tree *paramete num_octets_with_digits--; } ca_number[digit_index++] = '\0'; - proto_item_set_text(digits_item, "Charge Area Number : %s", ca_number); + proto_item_append_text(digits_item, ": %s", ca_number); proto_item_set_text(parameter_item, "Network POI-CA"); @@ -7635,8 +7618,8 @@ dissect_japan_isup_carrier_information(tvbuff_t *parameter_tvb, proto_tree *para while (length > 0) { - catagory_of_carrier = proto_tree_add_text(parameter_tree, parameter_tvb, offset, -1, "Category of Carrier:"); - carrier_info_tree = proto_item_add_subtree(catagory_of_carrier, ett_isup_carrier_info); + carrier_info_tree = proto_tree_add_subtree(parameter_tree, parameter_tvb, offset, -1, + ett_isup_carrier_info, &catagory_of_carrier, "Category of Carrier:"); /*Octet 2 : Category of Carrier*/ octet = tvb_get_guint8(parameter_tvb, offset); @@ -7650,8 +7633,8 @@ dissect_japan_isup_carrier_information(tvbuff_t *parameter_tvb, proto_tree *para while (offset < carrierX_end_index) { - type_of_carrier = proto_tree_add_text(carrier_info_tree, parameter_tvb, offset, -1, "Type of Carrier:"); - type_of_carrier_tree = proto_item_add_subtree(type_of_carrier, ett_isup_carrier_info); + type_of_carrier_tree = proto_tree_add_subtree(carrier_info_tree, parameter_tvb, offset, -1, + ett_isup_carrier_info, &type_of_carrier, "Type of Carrier:"); /* Type of Carrier Information*/ offset += 1; @@ -7702,8 +7685,8 @@ dissect_japan_isup_carrier_information(tvbuff_t *parameter_tvb, proto_tree *para */ if (type_of_carrier_info == CARRIER_INFO_TYPE_OF_CARRIER_POICA) { - digits_item = proto_tree_add_text(type_of_carrier_tree, parameter_tvb, offset, -1, "Charge Area:"); - digits_tree = proto_item_add_subtree(digits_item, ett_isup_address_digits); + digits_tree = proto_tree_add_subtree(type_of_carrier_tree, parameter_tvb, offset, -1, + ett_isup_address_digits, &digits_item, "Charge Area"); /* Odd.Even Indicator*/ offset += 1; @@ -7736,7 +7719,7 @@ dissect_japan_isup_carrier_information(tvbuff_t *parameter_tvb, proto_tree *para num_octets_with_digits--; } ca_number[digit_index++] = '\0'; - proto_item_set_text(digits_item, "Charge Area Number : %s", ca_number); + proto_item_append_text(digits_item, ": %s", ca_number); } @@ -7759,8 +7742,8 @@ dissect_japan_isup_carrier_information(tvbuff_t *parameter_tvb, proto_tree *para */ if (type_of_carrier_info == CARRIER_INFO_TYPE_OF_CARRIER_CARID) { - digits_item = proto_tree_add_text(type_of_carrier_tree, parameter_tvb, offset, -1, "Carrier ID Code:"); - digits_tree = proto_item_add_subtree(digits_item, ett_isup_address_digits); + digits_tree = proto_tree_add_subtree(type_of_carrier_tree, parameter_tvb, offset, -1, + ett_isup_address_digits, &digits_item, "Carrier ID Code"); offset += 1; /* Odd.Even Indicator*/ @@ -7792,7 +7775,7 @@ dissect_japan_isup_carrier_information(tvbuff_t *parameter_tvb, proto_tree *para num_octets_with_digits--; } cid_number[digit_index++] = '\0'; - proto_item_set_text(digits_item, "Carrier ID Code : %s", cid_number); + proto_item_append_text(digits_item, ": %s", cid_number); } } @@ -7912,8 +7895,8 @@ dissect_japan_isup_charge_area_info(tvbuff_t *parameter_tvb, proto_tree *paramet /*Only CA code digits.*/ if (nat_of_info_indic == CHARGE_AREA_NAT_INFO_CA) { - digits_item = proto_tree_add_text(parameter_tree, parameter_tvb, offset, -1, "Charge Area:"); - digits_tree = proto_item_add_subtree(digits_item, ett_isup_address_digits); + digits_tree = proto_tree_add_subtree(parameter_tree, parameter_tvb, offset, -1, + ett_isup_address_digits, &digits_item, "Charge Area"); while (length > 0) { octet = tvb_get_guint8(parameter_tvb, offset); @@ -7933,12 +7916,12 @@ dissect_japan_isup_charge_area_info(tvbuff_t *parameter_tvb, proto_tree *paramet length -= 1; } ca_number[digit_index++] = '\0'; - proto_item_set_text(digits_item, "Charge Area : %s", ca_number); + proto_item_append_text(digits_item, ": %s", ca_number); } /*Only MA code digits.*/ if (nat_of_info_indic == CHARGE_AREA_NAT_INFO_MA) { - digits_item = proto_tree_add_text(parameter_tree, parameter_tvb, offset, -1, "Message Area:"); - digits_tree = proto_item_add_subtree(digits_item, ett_isup_address_digits); + digits_tree = proto_tree_add_subtree(parameter_tree, parameter_tvb, offset, -1, + ett_isup_address_digits, &digits_item, "Message Area:"); /* First two octets contains*/ /* four NC digits*/ @@ -8217,12 +8200,12 @@ dissect_isup_optional_parameter(tvbuff_t *optional_parameters_tvb, packet_info * if (parameter_type != PARAM_TYPE_END_OF_OPT_PARAMS) { parameter_length = tvb_get_guint8(optional_parameters_tvb, offset + PARAMETER_TYPE_LENGTH); - parameter_item = proto_tree_add_text(isup_tree, optional_parameters_tvb, + parameter_tree = proto_tree_add_subtree_format(isup_tree, optional_parameters_tvb, offset, parameter_length + PARAMETER_TYPE_LENGTH + PARAMETER_LENGTH_IND_LENGTH, + ett_isup_parameter, ¶meter_item, "Parameter: type %u", parameter_type); - parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter); /* Handle national extensions here */ switch (itu_isup_variant) { case ISUP_JAPAN_VARIANT: @@ -8592,12 +8575,10 @@ dissect_ansi_isup_optional_parameter(tvbuff_t *optional_parameters_tvb, packet_i if (parameter_type != PARAM_TYPE_END_OF_OPT_PARAMS) { parameter_length = tvb_get_guint8(optional_parameters_tvb, offset + PARAMETER_TYPE_LENGTH); - parameter_item = proto_tree_add_text(isup_tree, optional_parameters_tvb, - offset, - parameter_length + PARAMETER_TYPE_LENGTH + PARAMETER_LENGTH_IND_LENGTH, - "Parameter: type %u", + parameter_tree = proto_tree_add_subtree_format(isup_tree, optional_parameters_tvb, + offset, parameter_length + PARAMETER_TYPE_LENGTH + PARAMETER_LENGTH_IND_LENGTH, + ett_isup_parameter, ¶meter_item, "Parameter: type %u", parameter_type); - parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter); proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, optional_parameters_tvb, offset, PARAMETER_TYPE_LENGTH, parameter_type, "Optional Parameter: %u (%s)", parameter_type, @@ -8911,9 +8892,9 @@ dissect_ansi_isup_circuit_validation_test_resp_message(tvbuff_t *message_tvb, pr /* Do stuff for first mandatory fixed parameter: CVR Repsonse Indicator */ parameter_type = ANSI_ISUP_PARAM_TYPE_CVR_RESP_IND; - parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset, CVR_RESP_IND_LENGTH, "CVR Response Indicator"); + parameter_tree = proto_tree_add_subtree(isup_tree, message_tvb, offset, CVR_RESP_IND_LENGTH, + ett_isup_parameter, ¶meter_item, "CVR Response Indicator"); - parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter); proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, @@ -8927,10 +8908,9 @@ dissect_ansi_isup_circuit_validation_test_resp_message(tvbuff_t *message_tvb, pr /* Do stuff for second mandatory fixed parameter: CG Characteristics Indicator */ parameter_type = ANSI_ISUP_PARAM_TYPE_CG_CHAR_IND; - parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset, - CG_CHAR_IND_LENGTH, + parameter_tree = proto_tree_add_subtree(isup_tree, message_tvb, offset, + CG_CHAR_IND_LENGTH, ett_isup_parameter, ¶meter_item, "Circuit Group Characteristics Indicators"); - parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter); proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, @@ -8956,10 +8936,9 @@ dissect_ansi_isup_circuit_reservation_message(tvbuff_t *message_tvb, proto_tree /* Do stuff for mandatory fixed parameter: Nature of Connection Indicators */ parameter_type = PARAM_TYPE_NATURE_OF_CONN_IND; - parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset, - NATURE_OF_CONNECTION_IND_LENGTH, + parameter_tree = proto_tree_add_subtree(isup_tree, message_tvb, offset, + NATURE_OF_CONNECTION_IND_LENGTH, ett_isup_parameter, ¶meter_item, "Nature of Connection Indicators"); - parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter); proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, @@ -8985,10 +8964,9 @@ dissect_isup_initial_address_message(tvbuff_t *message_tvb, proto_tree *isup_tre /* Do stuff for first mandatory fixed parameter: Nature of Connection Indicators */ parameter_type = PARAM_TYPE_NATURE_OF_CONN_IND; - parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset, - NATURE_OF_CONNECTION_IND_LENGTH, + parameter_tree = proto_tree_add_subtree(isup_tree, message_tvb, offset, + NATURE_OF_CONNECTION_IND_LENGTH, ett_isup_parameter, ¶meter_item, "Nature of Connection Indicators"); - parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter); proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, @@ -9000,10 +8978,9 @@ dissect_isup_initial_address_message(tvbuff_t *message_tvb, proto_tree *isup_tre /* Do stuff for 2nd mandatory fixed parameter: Forward Call Indicators */ parameter_type = PARAM_TYPE_FORW_CALL_IND; - parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset, - FORWARD_CALL_IND_LENGTH, + parameter_tree = proto_tree_add_subtree(isup_tree, message_tvb, offset, + FORWARD_CALL_IND_LENGTH, ett_isup_parameter, ¶meter_item, "Forward Call Indicators"); - parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter); proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, @@ -9015,10 +8992,10 @@ dissect_isup_initial_address_message(tvbuff_t *message_tvb, proto_tree *isup_tre /* Do stuff for 3nd mandatory fixed parameter: Calling party's category */ parameter_type = PARAM_TYPE_CALLING_PRTY_CATEG; - parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset, + parameter_tree = proto_tree_add_subtree(isup_tree, message_tvb, offset, CALLING_PRTYS_CATEGORY_LENGTH, + ett_isup_parameter, ¶meter_item, "Calling Party's category"); - parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter); proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, @@ -9032,10 +9009,10 @@ dissect_isup_initial_address_message(tvbuff_t *message_tvb, proto_tree *isup_tre case ITU_STANDARD: /* If ITU, do stuff for 4th mandatory fixed parameter: Transmission medium requirement */ parameter_type = PARAM_TYPE_TRANSM_MEDIUM_REQU; - parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset, + parameter_tree = proto_tree_add_subtree(isup_tree, message_tvb, offset, TRANSMISSION_MEDIUM_REQUIREMENT_LENGTH, + ett_isup_parameter, ¶meter_item, "Transmission medium requirement"); - parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter); proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, @@ -9053,11 +9030,11 @@ dissect_isup_initial_address_message(tvbuff_t *message_tvb, proto_tree *isup_tre parameter_type = PARAM_TYPE_USER_SERVICE_INFO; parameter_pointer = tvb_get_guint8(message_tvb, offset); parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer); - parameter_item = proto_tree_add_text(isup_tree, message_tvb, + parameter_tree = proto_tree_add_subtree(isup_tree, message_tvb, offset + parameter_pointer, parameter_length + PARAMETER_LENGTH_IND_LENGTH, + ett_isup_parameter, ¶meter_item, "User Service Information"); - parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter); proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, @@ -9081,11 +9058,11 @@ dissect_isup_initial_address_message(tvbuff_t *message_tvb, proto_tree *isup_tre parameter_pointer = tvb_get_guint8(message_tvb, offset); parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer); - parameter_item = proto_tree_add_text(isup_tree, message_tvb, + parameter_tree = proto_tree_add_subtree(isup_tree, message_tvb, offset + parameter_pointer, parameter_length + PARAMETER_LENGTH_IND_LENGTH, + ett_isup_parameter, ¶meter_item, "Called Party Number"); - parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter); proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, @@ -9121,11 +9098,11 @@ static gint dissect_isup_subsequent_address_message(tvbuff_t *message_tvb, proto parameter_pointer = tvb_get_guint8(message_tvb, offset); parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer); - parameter_item = proto_tree_add_text(isup_tree, message_tvb, + parameter_tree = proto_tree_add_subtree(isup_tree, message_tvb, offset + parameter_pointer, parameter_length + PARAMETER_LENGTH_IND_LENGTH, + ett_isup_parameter, ¶meter_item, "Subsequent Number"); - parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter); proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, @@ -9158,10 +9135,10 @@ dissect_isup_information_request_message(tvbuff_t *message_tvb, proto_tree *isup /* Do stuff for first mandatory fixed parameter: Information request indicators*/ parameter_type = PARAM_TYPE_INFO_REQ_IND; - parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset, + parameter_tree = proto_tree_add_subtree(isup_tree, message_tvb, offset, INFO_REQUEST_IND_LENGTH, + ett_isup_parameter, ¶meter_item, "Information request indicators"); - parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter); proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, @@ -9178,7 +9155,8 @@ dissect_isup_information_request_message(tvbuff_t *message_tvb, proto_tree *isup */ static gint dissect_isup_information_message(tvbuff_t *message_tvb, proto_tree *isup_tree) -{ proto_item *parameter_item; +{ + proto_item *parameter_item; proto_tree *parameter_tree; tvbuff_t *parameter_tvb; gint offset = 0; @@ -9186,10 +9164,9 @@ dissect_isup_information_message(tvbuff_t *message_tvb, proto_tree *isup_tree) /* Do stuff for first mandatory fixed parameter: Information indicators*/ parameter_type = PARAM_TYPE_INFO_IND; - parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset, - INFO_IND_LENGTH, + parameter_tree = proto_tree_add_subtree(isup_tree, message_tvb, offset, + INFO_IND_LENGTH, ett_isup_parameter, ¶meter_item, "Information indicators"); - parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter); proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, @@ -9214,10 +9191,9 @@ dissect_isup_continuity_message(tvbuff_t *message_tvb, proto_tree *isup_tree) /* Do stuff for first mandatory fixed parameter: Continuity indicators*/ parameter_type = PARAM_TYPE_CONTINUITY_IND; - parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset, - CONTINUITY_IND_LENGTH, + parameter_tree = proto_tree_add_subtree(isup_tree, message_tvb, offset, + CONTINUITY_IND_LENGTH, ett_isup_parameter, ¶meter_item, "Continuity indicators"); - parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter); proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, @@ -9242,10 +9218,9 @@ dissect_isup_address_complete_message(tvbuff_t *message_tvb, proto_tree *isup_tr /* Do stuff for first mandatory fixed parameter: backward call indicators*/ parameter_type = PARAM_TYPE_BACKW_CALL_IND; - parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset, - BACKWARD_CALL_IND_LENGTH, + parameter_tree = proto_tree_add_subtree(isup_tree, message_tvb, offset, + BACKWARD_CALL_IND_LENGTH, ett_isup_parameter, ¶meter_item, "Backward Call Indicators"); - parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter); proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, @@ -9270,10 +9245,9 @@ dissect_isup_connect_message(tvbuff_t *message_tvb, proto_tree *isup_tree) /* Do stuff for first mandatory fixed parameter: backward call indicators*/ parameter_type = PARAM_TYPE_BACKW_CALL_IND; - parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset, - BACKWARD_CALL_IND_LENGTH, + parameter_tree = proto_tree_add_subtree(isup_tree, message_tvb, offset, + BACKWARD_CALL_IND_LENGTH, ett_isup_parameter, ¶meter_item, "Backward Call Indicators"); - parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter); proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, @@ -9302,11 +9276,11 @@ dissect_isup_release_message(tvbuff_t *message_tvb, proto_tree *isup_tree) parameter_pointer = tvb_get_guint8(message_tvb, offset); parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer); - parameter_item = proto_tree_add_text(isup_tree, message_tvb, + parameter_tree = proto_tree_add_subtree(isup_tree, message_tvb, offset + parameter_pointer, parameter_length + PARAMETER_LENGTH_IND_LENGTH, + ett_isup_parameter, ¶meter_item, "Cause indicators"); - parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter); proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, @@ -9346,10 +9320,10 @@ dissect_isup_suspend_resume_message(tvbuff_t *message_tvb, proto_tree *isup_tree /* Do stuff for first mandatory fixed parameter: backward call indicators*/ parameter_type = PARAM_TYPE_SUSP_RESUME_IND; - parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset, + parameter_tree = proto_tree_add_subtree(isup_tree, message_tvb, offset, SUSPEND_RESUME_IND_LENGTH, + ett_isup_parameter, ¶meter_item, "Suspend/Resume indicator"); - parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter); proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, @@ -9378,11 +9352,11 @@ dissect_isup_circuit_group_reset_query_message(tvbuff_t *message_tvb, proto_tree parameter_pointer = tvb_get_guint8(message_tvb, offset); parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer); - parameter_item = proto_tree_add_text(isup_tree, message_tvb, + parameter_tree = proto_tree_add_subtree(isup_tree, message_tvb, offset + parameter_pointer, parameter_length + PARAMETER_LENGTH_IND_LENGTH, + ett_isup_parameter, ¶meter_item, "Range and status"); - parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter); proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, @@ -9415,10 +9389,10 @@ dissect_isup_circuit_group_blocking_messages(tvbuff_t *message_tvb, proto_tree * /* Do stuff for first mandatory fixed parameter: circuit group supervision message type*/ parameter_type = PARAM_TYPE_CIRC_GRP_SV_MSG_TYPE; - parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset, + parameter_tree = proto_tree_add_subtree(isup_tree, message_tvb, offset, CIRC_GRP_SV_MSG_TYPE_LENGTH, + ett_isup_parameter, ¶meter_item, "Circuit group supervision message type"); - parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter); proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, @@ -9434,11 +9408,11 @@ dissect_isup_circuit_group_blocking_messages(tvbuff_t *message_tvb, proto_tree * parameter_pointer = tvb_get_guint8(message_tvb, offset); parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer); - parameter_item = proto_tree_add_text(isup_tree, message_tvb, + parameter_tree = proto_tree_add_subtree(isup_tree, message_tvb, offset + parameter_pointer, parameter_length + PARAMETER_LENGTH_IND_LENGTH, + ett_isup_parameter, ¶meter_item, "Range and status"); - parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter); proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, @@ -9471,10 +9445,10 @@ dissect_isup_facility_request_accepted_message(tvbuff_t *message_tvb, proto_tree /* Do stuff for first mandatory fixed parameter: facility indicators*/ parameter_type = PARAM_TYPE_FACILITY_IND; - parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset, + parameter_tree = proto_tree_add_subtree(isup_tree, message_tvb, offset, FACILITY_IND_LENGTH, + ett_isup_parameter, ¶meter_item, "Facility indicator"); - parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter); proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, @@ -9499,10 +9473,10 @@ dissect_isup_facility_reject_message(tvbuff_t *message_tvb, proto_tree *isup_tre /* Do stuff for first mandatory fixed parameter: facility indicators*/ parameter_type = PARAM_TYPE_FACILITY_IND; - parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset, + parameter_tree = proto_tree_add_subtree(isup_tree, message_tvb, offset, FACILITY_IND_LENGTH, + ett_isup_parameter, ¶meter_item, "Facility indicator"); - parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter); proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, @@ -9518,11 +9492,11 @@ dissect_isup_facility_reject_message(tvbuff_t *message_tvb, proto_tree *isup_tre parameter_pointer = tvb_get_guint8(message_tvb, offset); parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer); - parameter_item = proto_tree_add_text(isup_tree, message_tvb, + parameter_tree = proto_tree_add_subtree(isup_tree, message_tvb, offset + parameter_pointer, parameter_length + PARAMETER_LENGTH_IND_LENGTH, + ett_isup_parameter, ¶meter_item, "Cause indicators, see Q.850"); - parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter); proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, @@ -9566,11 +9540,11 @@ dissect_isup_circuit_group_reset_acknowledgement_message(tvbuff_t *message_tvb, parameter_pointer = tvb_get_guint8(message_tvb, offset); parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer); - parameter_item = proto_tree_add_text(isup_tree, message_tvb, + parameter_tree = proto_tree_add_subtree(isup_tree, message_tvb, offset + parameter_pointer, parameter_length + PARAMETER_LENGTH_IND_LENGTH, + ett_isup_parameter, ¶meter_item, "Range and status"); - parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter); proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, @@ -9607,11 +9581,11 @@ dissect_isup_circuit_group_query_response_message(tvbuff_t *message_tvb, proto_t parameter_pointer = tvb_get_guint8(message_tvb, offset); parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer); - parameter_item = proto_tree_add_text(isup_tree, message_tvb, + parameter_tree = proto_tree_add_subtree(isup_tree, message_tvb, offset + parameter_pointer, parameter_length + PARAMETER_LENGTH_IND_LENGTH, + ett_isup_parameter, ¶meter_item, "Range and status"); - parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter); proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, @@ -9634,11 +9608,11 @@ dissect_isup_circuit_group_query_response_message(tvbuff_t *message_tvb, proto_t parameter_pointer = tvb_get_guint8(message_tvb, offset); parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer); - parameter_item = proto_tree_add_text(isup_tree, message_tvb, + parameter_tree = proto_tree_add_subtree(isup_tree, message_tvb, offset + parameter_pointer, parameter_length + PARAMETER_LENGTH_IND_LENGTH, + ett_isup_parameter, ¶meter_item, "Circuit state indicator (national use)"); - parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter); proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, @@ -9671,10 +9645,9 @@ dissect_isup_call_progress_message(tvbuff_t *message_tvb, proto_tree *isup_tree) /* Do stuff for first mandatory fixed parameter: Event information*/ parameter_type = PARAM_TYPE_EVENT_INFO; - parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset, - EVENT_INFO_LENGTH, + parameter_tree = proto_tree_add_subtree(isup_tree, message_tvb, offset, + EVENT_INFO_LENGTH, ett_isup_parameter, ¶meter_item, "Event information"); - parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter); proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, @@ -9703,11 +9676,11 @@ dissect_isup_user_to_user_information_message(tvbuff_t *message_tvb, packet_info parameter_pointer = tvb_get_guint8(message_tvb, offset); parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer); - parameter_item = proto_tree_add_text(isup_tree, message_tvb, + parameter_tree = proto_tree_add_subtree(isup_tree, message_tvb, offset + parameter_pointer, parameter_length + PARAMETER_LENGTH_IND_LENGTH, + ett_isup_parameter, ¶meter_item, "User-to-user information, see Q.931"); - parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter); proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, @@ -9744,11 +9717,11 @@ dissect_isup_confusion_message(tvbuff_t *message_tvb, proto_tree *isup_tree) parameter_pointer = tvb_get_guint8(message_tvb, offset); parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer); - parameter_item = proto_tree_add_text(isup_tree, message_tvb, + parameter_tree = proto_tree_add_subtree(isup_tree, message_tvb, offset + parameter_pointer, parameter_length + PARAMETER_LENGTH_IND_LENGTH, + ett_isup_parameter, ¶meter_item, "Cause indicators, see Q.850"); - parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter); proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, @@ -9905,8 +9878,8 @@ dissect_japan_chg_inf(tvbuff_t *message_tvb, proto_tree *isup_tree) /* Do stuff for first mandatory fixed parameter: Charge information type */ parameter_type = JAPAN_ISUP_PARAM_TYPE_CHARGE_INF_TYPE; - parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset, 1, "Charge information type"); - parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter); + parameter_tree = proto_tree_add_subtree(isup_tree, message_tvb, offset, 1, + ett_isup_parameter, ¶meter_item, "Charge information type"); proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, @@ -9922,11 +9895,11 @@ dissect_japan_chg_inf(tvbuff_t *message_tvb, proto_tree *isup_tree) parameter_pointer = tvb_get_guint8(message_tvb, offset); parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer); - parameter_item = proto_tree_add_text(isup_tree, message_tvb, + parameter_tree = proto_tree_add_subtree(isup_tree, message_tvb, offset + parameter_pointer, parameter_length + PARAMETER_LENGTH_IND_LENGTH, + ett_isup_parameter, ¶meter_item, "Charge information"); - parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter); proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, @@ -9971,7 +9944,6 @@ dissect_ansi_isup_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree tvbuff_t *parameter_tvb; tvbuff_t *optional_parameter_tvb; - proto_item *pass_along_item; proto_tree *pass_along_tree; gint offset, bufferlength; guint8 message_type, opt_parameter_pointer; @@ -10100,11 +10072,10 @@ dissect_ansi_isup_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree { guint8 pa_message_type; pa_message_type = tvb_get_guint8(parameter_tvb, 0); - pass_along_item = proto_tree_add_text(isup_tree, parameter_tvb, offset, -1, - "Pass-along: %s Message (%u)", + pass_along_tree = proto_tree_add_subtree_format(isup_tree, parameter_tvb, offset, -1, + ett_isup_pass_along_message, NULL, "Pass-along: %s Message (%u)", val_to_str_ext_const(pa_message_type, &isup_message_type_value_acro_ext, "reserved"), pa_message_type); - pass_along_tree = proto_item_add_subtree(pass_along_item, ett_isup_pass_along_message); dissect_ansi_isup_message(parameter_tvb, pinfo, pass_along_tree, itu_isup_variant); break; } @@ -10241,7 +10212,6 @@ dissect_isup_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *isup tvbuff_t *parameter_tvb; tvbuff_t *optional_parameter_tvb; - proto_item *pass_along_item; proto_tree *pass_along_tree; gint offset, bufferlength; guint8 message_type, opt_parameter_pointer; @@ -10403,11 +10373,11 @@ dissect_isup_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *isup { guint8 pa_message_type; pa_message_type = tvb_get_guint8(parameter_tvb, 0); - pass_along_item = proto_tree_add_text(isup_tree, parameter_tvb, offset, -1, + pass_along_tree = proto_tree_add_subtree_format(isup_tree, parameter_tvb, offset, -1, + ett_isup_pass_along_message, NULL, "Pass-along: %s Message (%u)", val_to_str_ext_const(pa_message_type, &isup_message_type_value_acro_ext, "reserved"), pa_message_type); - pass_along_tree = proto_item_add_subtree(pass_along_item, ett_isup_pass_along_message); dissect_isup_message(parameter_tvb, pinfo, pass_along_tree, itu_isup_variant); break; } diff --git a/epan/dissectors/packet-iua.c b/epan/dissectors/packet-iua.c index ad9f8b3d51..4348ece455 100644 --- a/epan/dissectors/packet-iua.c +++ b/epan/dissectors/packet-iua.c @@ -577,9 +577,8 @@ dissect_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *tree, padding_length = tvb_length(parameter_tvb) - length; /* create proto_tree stuff */ - parameter_item = proto_tree_add_text(iua_tree, parameter_tvb, PARAMETER_HEADER_OFFSET, tvb_length(parameter_tvb), + parameter_tree = proto_tree_add_subtree_format(iua_tree, parameter_tvb, PARAMETER_HEADER_OFFSET, -1, ett_iua_parameter, ¶meter_item, "%s parameter", val_to_str_const(tag, support_IG?parameter_tag_ig_values:parameter_tag_values, "Unknown")); - parameter_tree = proto_item_add_subtree(parameter_item, ett_iua_parameter); /* add tag and length to the iua tree */ proto_tree_add_item(parameter_tree, support_IG?hf_parameter_tag_ig:hf_parameter_tag, parameter_tvb, PARAMETER_TAG_OFFSET, PARAMETER_TAG_LENGTH, ENC_BIG_ENDIAN); @@ -905,15 +904,10 @@ dissect_iua(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *tree) col_set_str(pinfo->cinfo, COL_PROTOCOL, support_IG?"IUA (RFC 3057 + IG)":"IUA (RFC 3057)"); - /* In the interest of speed, if "tree" is NULL, don't do any work not - necessary to generate protocol tree items. */ - if (tree) { - /* create the m3ua protocol tree */ - iua_item = proto_tree_add_item(tree, proto_iua, message_tvb, 0, -1, ENC_NA); - iua_tree = proto_item_add_subtree(iua_item, ett_iua); - } else { - iua_tree = NULL; - }; + /* create the m3ua protocol tree */ + iua_item = proto_tree_add_item(tree, proto_iua, message_tvb, 0, -1, ENC_NA); + iua_tree = proto_item_add_subtree(iua_item, ett_iua); + /* dissect the message */ dissect_iua_message(message_tvb, pinfo, tree, iua_tree); } diff --git a/epan/dissectors/packet-iuup.c b/epan/dissectors/packet-iuup.c index 968397cf58..5c5820be65 100644 --- a/epan/dissectors/packet-iuup.c +++ b/epan/dissectors/packet-iuup.c @@ -386,8 +386,7 @@ static void dissect_iuup_payload(tvbuff_t* tvb, packet_info* pinfo, proto_tree* guint subflows = rfci->num_of_subflows; proto_tree* flow_tree; - pi = proto_tree_add_text(tree,tvb,offset,-1,"Payload Frame"); - flow_tree = proto_item_add_subtree(pi,ett_payload_subflows); + flow_tree = proto_tree_add_subtree(tree,tvb,offset,-1,ett_payload_subflows,NULL,"Payload Frame"); bit_offset = 0; @@ -517,8 +516,7 @@ static void dissect_iuup_init(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tre if (!tree) return; if (ti) { - pi = proto_tree_add_text(tree,tvb,offset,(rfcis/2)+(rfcis%2),"IPTIs"); - iptis_tree = proto_item_add_subtree(pi,ett_ipti); + iptis_tree = proto_tree_add_subtree(tree,tvb,offset,(rfcis/2)+(rfcis%2),ett_ipti,NULL,"IPTIs"); for (i = 0; i <= rfcis; i++) { proto_tree_add_item(iptis_tree,hf_iuup_init_ipti[i],tvb,offset,1,ENC_BIG_ENDIAN); |