From 93517043e96c26a1d3dad49c2f57b345e3bbbba0 Mon Sep 17 00:00:00 2001 From: Michael Mann Date: Fri, 4 Jul 2014 11:51:09 -0400 Subject: convert to proto_tree_add_subtree[_format] Change-Id: Idd1b20ab32c0960ea52c6f3bc5346462c37c5684 Reviewed-on: https://code.wireshark.org/review/2853 Reviewed-by: Michael Mann --- epan/dissectors/packet-nat-pmp.c | 3 +- epan/dissectors/packet-nbns.c | 34 +- epan/dissectors/packet-ncp-sss.c | 2 +- epan/dissectors/packet-ncs.c | 9 +- epan/dissectors/packet-ndmp.c | 90 ++---- epan/dissectors/packet-negoex.c | 41 +-- epan/dissectors/packet-netanalyzer.c | 4 +- epan/dissectors/packet-netbios.c | 6 +- epan/dissectors/packet-netflow.c | 21 +- epan/dissectors/packet-netlink.c | 9 +- epan/dissectors/packet-nfs.c | 599 ++++++++++++----------------------- epan/dissectors/packet-nfsacl.c | 56 +--- epan/dissectors/packet-nhrp.c | 42 +-- epan/dissectors/packet-nlsp.c | 43 +-- epan/dissectors/packet-noe.c | 16 +- epan/dissectors/packet-nsip.c | 32 +- epan/dissectors/packet-nstrace.c | 7 +- epan/dissectors/packet-ntlmssp.c | 10 +- 18 files changed, 348 insertions(+), 676 deletions(-) (limited to 'epan/dissectors') diff --git a/epan/dissectors/packet-nat-pmp.c b/epan/dissectors/packet-nat-pmp.c index 9428499116..2ccbaefcc0 100644 --- a/epan/dissectors/packet-nat-pmp.c +++ b/epan/dissectors/packet-nat-pmp.c @@ -367,8 +367,7 @@ dissect_portcontrol_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gui start_opcode_offset = offset; if(try_val_to_str(ropcode, pcp_ropcode_vals) != NULL) { - opcode_ti = proto_tree_add_text(pcp_tree, tvb, offset, 0, "%s", op_str); - opcode_tree = proto_item_add_subtree(opcode_ti, ett_opcode); + opcode_tree = proto_tree_add_subtree(pcp_tree, tvb, offset, 0, ett_opcode, &opcode_ti, op_str); } switch(ropcode) { diff --git a/epan/dissectors/packet-nbns.c b/epan/dissectors/packet-nbns.c index 0e7f1ae5fe..45db5bbff5 100644 --- a/epan/dissectors/packet-nbns.c +++ b/epan/dissectors/packet-nbns.c @@ -460,7 +460,6 @@ dissect_nbns_query(tvbuff_t *tvb, int offset, int nbns_data_offset, int data_offset; int data_start; proto_tree *q_tree; - proto_item *tq; name = (char *)wmem_alloc(wmem_packet_scope(), MAX_NAME_LEN); data_start = data_offset = offset; @@ -476,10 +475,9 @@ dissect_nbns_query(tvbuff_t *tvb, int offset, int nbns_data_offset, col_append_fstr(cinfo, COL_INFO, " %s %s", type_name, name); if (nbns_tree != NULL) { - tq = proto_tree_add_text(nbns_tree, tvb, offset, len, - "%s: type %s, class %s", name, type_name, + q_tree = proto_tree_add_subtree_format(nbns_tree, tvb, offset, len, + ett_nbns_qd, NULL, "%s: type %s, class %s", name, type_name, dns_class_name(dns_class)); - q_tree = proto_item_add_subtree(tq, ett_nbns_qd); add_name_and_type(q_tree, tvb, offset, name_len, "Name", name, name_type); @@ -1025,21 +1023,19 @@ dissect_query_records(tvbuff_t *tvb, int cur_off, int nbns_data_offset, int count, column_info *cinfo, proto_tree *nbns_tree) { int start_off, add_off; - proto_tree *qatree = NULL; - proto_item *ti = NULL; + proto_tree *qatree; + proto_item *ti; start_off = cur_off; - if (nbns_tree != NULL) { - ti = proto_tree_add_text(nbns_tree, tvb, start_off, -1, "Queries"); - qatree = proto_item_add_subtree(ti, ett_nbns_qry); - } + qatree = proto_tree_add_subtree(nbns_tree, tvb, start_off, -1, ett_nbns_qry, &ti, "Queries"); + while (count-- > 0) { add_off = dissect_nbns_query(tvb, cur_off, nbns_data_offset, cinfo, qatree); cur_off += add_off; } - if (ti != NULL) - proto_item_set_len(ti, cur_off - start_off); + + proto_item_set_len(ti, cur_off - start_off); return cur_off - start_off; } @@ -1050,21 +1046,19 @@ dissect_answer_records(tvbuff_t *tvb, int cur_off, int nbns_data_offset, int opcode, const char *name) { int start_off, add_off; - proto_tree *qatree = NULL; - proto_item *ti = NULL; + proto_tree *qatree; + proto_item *ti; start_off = cur_off; - if (nbns_tree != NULL) { - ti = proto_tree_add_text(nbns_tree, tvb, start_off, -1, "%s", name); - qatree = proto_item_add_subtree(ti, ett_nbns_ans); - } + qatree = proto_tree_add_subtree(nbns_tree, tvb, start_off, -1, ett_nbns_ans, &ti, name); + while (count-- > 0) { add_off = dissect_nbns_answer(tvb, cur_off, nbns_data_offset, cinfo, qatree, opcode); cur_off += add_off; } - if (ti != NULL) - proto_item_set_len(ti, cur_off - start_off); + + proto_item_set_len(ti, cur_off - start_off); return cur_off - start_off; } diff --git a/epan/dissectors/packet-ncp-sss.c b/epan/dissectors/packet-ncp-sss.c index 5a4148b9e0..cfee0d9ac6 100644 --- a/epan/dissectors/packet-ncp-sss.c +++ b/epan/dissectors/packet-ncp-sss.c @@ -508,7 +508,7 @@ dissect_sss_request(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ncp_tree, ncp switch (subfunc) { case 1: - aitem = proto_tree_add_text(ncp_tree, tvb, foffset, tvb_length_remaining(tvb, foffset), "Packet Type: %s", val_to_str(subfunc, sss_func_enum, "Unknown (%d)")); + aitem = proto_tree_add_text(ncp_tree, tvb, foffset, -1, "Packet Type: %s", val_to_str(subfunc, sss_func_enum, "Unknown (%d)")); atree = proto_item_add_subtree(aitem, ett_sss); proto_tree_add_item(atree, hf_ping_version, tvb, foffset, 4, ENC_LITTLE_ENDIAN); foffset += 4; diff --git a/epan/dissectors/packet-ncs.c b/epan/dissectors/packet-ncs.c index 94ffb77f89..208935255e 100644 --- a/epan/dissectors/packet-ncs.c +++ b/epan/dissectors/packet-ncs.c @@ -41,14 +41,11 @@ static int hf_incarnation = -1; static void dissect_ncs(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { - proto_tree *ncs_tree = NULL; + proto_tree *ncs_tree; proto_item *ti; - if (tree) { - ti = proto_tree_add_item(tree, proto_ncs, tvb, 0, -1, ENC_NA); - ncs_tree = proto_item_add_subtree(ti, ett_ncs); - } - + ti = proto_tree_add_item(tree, proto_ncs, tvb, 0, -1, ENC_NA); + ncs_tree = proto_item_add_subtree(ti, ett_ncs); col_set_str(pinfo->cinfo, COL_PROTOCOL, "NCS"); col_set_str(pinfo->cinfo, COL_INFO, "Novell Cluster Services Heartbeat"); diff --git a/epan/dissectors/packet-ndmp.c b/epan/dissectors/packet-ndmp.c index dd20555d79..370748b529 100644 --- a/epan/dissectors/packet-ndmp.c +++ b/epan/dissectors/packet-ndmp.c @@ -1373,19 +1373,15 @@ static int dissect_execute_cdb_cdb(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, gint devtype) { - proto_item* item = NULL; - proto_tree* tree = NULL; + proto_tree* tree; guint32 cdb_len; guint32 cdb_len_full; cdb_len = tvb_get_ntohl(tvb, offset); cdb_len_full = rpc_roundup(cdb_len); - if (parent_tree) { - item = proto_tree_add_text(parent_tree, tvb, offset, - 4+cdb_len_full, "CDB"); - tree = proto_item_add_subtree(item, ett_ndmp_execute_cdb_cdb); - } + tree = proto_tree_add_subtree(parent_tree, tvb, offset, + 4+cdb_len_full, ett_ndmp_execute_cdb_cdb, NULL, "CDB"); proto_tree_add_uint(tree, hf_ndmp_execute_cdb_cdb_len, tvb, offset, 4, cdb_len); @@ -1431,20 +1427,15 @@ static int dissect_execute_cdb_payload(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, const char *name, int hf_len, gboolean isreq) { - proto_item* item = NULL; - proto_tree* tree = NULL; + proto_tree* tree; guint32 payload_len; guint32 payload_len_full; payload_len = tvb_get_ntohl(tvb, offset); payload_len_full = rpc_roundup(payload_len); - if (parent_tree) { - item = proto_tree_add_text(parent_tree, tvb, offset, - 4+payload_len_full, "%s", name); - tree = proto_item_add_subtree(item, - ett_ndmp_execute_cdb_payload); - } + tree = proto_tree_add_subtree(parent_tree, tvb, offset, + 4+payload_len_full, ett_ndmp_execute_cdb_payload, NULL, name); proto_tree_add_uint(tree, hf_len, tvb, offset, 4, payload_len); offset += 4; @@ -1538,19 +1529,15 @@ dissect_execute_cdb_request_tape(tvbuff_t *tvb, int offset, packet_info *pinfo, static int dissect_execute_cdb_sns(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree) { - proto_item* item = NULL; - proto_tree* tree = NULL; + proto_tree* tree; guint32 sns_len; guint32 sns_len_full; sns_len = tvb_get_ntohl(tvb, offset); sns_len_full = rpc_roundup(sns_len); - if (parent_tree) { - item = proto_tree_add_text(parent_tree, tvb, offset, - 4+sns_len_full, "Sense data"); - tree = proto_item_add_subtree(item, ett_ndmp_execute_cdb_sns); - } + tree = proto_tree_add_subtree(parent_tree, tvb, offset, + 4+sns_len_full, ett_ndmp_execute_cdb_sns, NULL, "Sense data"); proto_tree_add_uint(tree, hf_ndmp_execute_cdb_sns_len, tvb, offset, 4, sns_len); @@ -1910,16 +1897,12 @@ static int dissect_ndmp_addr(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *parent_tree) { - proto_item* item = NULL; - proto_tree* tree = NULL; + proto_tree* tree; guint32 type; type=tvb_get_ntohl(tvb, offset); - if (parent_tree) { - item = proto_tree_add_text(parent_tree, tvb, offset, 4, + tree = proto_tree_add_subtree_format(parent_tree, tvb, offset, 4, ett_ndmp_addr, NULL, "Type: %s ", val_to_str(type, addr_type_vals,"Unknown addr type (0x%02x)") ); - tree = proto_item_add_subtree(item, ett_ndmp_addr); - } /*address type*/ proto_tree_add_item(tree, hf_ndmp_addr_type, tvb, offset, 4, ENC_BIG_ENDIAN); @@ -2365,17 +2348,14 @@ static const value_string file_fs_type_vals[] = { static int dissect_file_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { - proto_item* item = NULL; - proto_tree* tree = NULL; + proto_item* item; + proto_tree* tree; int old_offset=offset; guint32 type; const char *name; - if (parent_tree) { - item = proto_tree_add_text(parent_tree, tvb, offset, -1, - "File"); - tree = proto_item_add_subtree(item, ett_ndmp_file_name); - } + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, + ett_ndmp_file_name, &item, "File"); /* file type */ type=tvb_get_ntohl(tvb, offset); @@ -2477,16 +2457,13 @@ static const value_string file_type_vals[] = { static int dissect_file_stats(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { - proto_item* item = NULL; - proto_tree* tree = NULL; + proto_item* item; + proto_tree* tree; int old_offset=offset; nstime_t ns; - if (parent_tree) { - item = proto_tree_add_text(parent_tree, tvb, offset, -1, - "Stats:"); - tree = proto_item_add_subtree(item, ett_ndmp_file_stats); - } + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, + ett_ndmp_file_stats, &item, "Stats:"); /* invalids */ offset = dissect_file_invalids(tvb, offset, pinfo, tree); @@ -2547,15 +2524,12 @@ dissect_file_stats(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *pa static int dissect_ndmp_file(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { - proto_item* item = NULL; - proto_tree* tree = NULL; + proto_item* item; + proto_tree* tree; int old_offset=offset; - if (parent_tree) { - item = proto_tree_add_text(parent_tree, tvb, offset, -1, - "File:"); - tree = proto_item_add_subtree(item, ett_ndmp_file); - } + tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, + ett_ndmp_file, &item, "File:"); /* file names */ offset = dissect_rpc_array(tvb, pinfo, tree, offset, @@ -3036,7 +3010,6 @@ static int dissect_ndmp_cmd(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, struct ndmp_header *nh) { int i; - proto_item *cmd_item=NULL; proto_tree *cmd_tree=NULL; offset=dissect_ndmp_header(tvb, offset, pinfo, tree, nh); @@ -3057,9 +3030,7 @@ dissect_ndmp_cmd(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree if (tvb_reported_length_remaining(tvb, offset) > 0) { if(tree){ - cmd_item = proto_tree_add_text(tree, tvb, offset, -1, "%s", - msg_vals[i].strptr); - cmd_tree = proto_item_add_subtree(cmd_item, ett_ndmp); + cmd_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_ndmp, NULL, msg_vals[i].strptr); } } @@ -3092,8 +3063,7 @@ dissect_ndmp_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* ndmp_frag_info* nfi; proto_item *ndmp_item = NULL; proto_tree *ndmp_tree = NULL; - proto_item *hdr_item = NULL; - proto_tree *hdr_tree = NULL; + proto_tree *hdr_tree; wmem_map_t *frags; conversation_t *conversation; proto_item *vers_item; @@ -3267,11 +3237,10 @@ dissect_ndmp_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* ndmp_item = proto_tree_add_item(tree, proto_ndmp, tvb, 0, -1, ENC_NA); ndmp_tree = proto_item_add_subtree(ndmp_item, ett_ndmp); } - hdr_item = proto_tree_add_text(ndmp_tree, tvb, 0, 4, - "Fragment header: %s%u %s", + hdr_tree = proto_tree_add_subtree_format(ndmp_tree, tvb, 0, 4, + ett_ndmp_fraghdr, NULL, "Fragment header: %s%u %s", (ndmp_rm & RPC_RM_LASTFRAG) ? "Last fragment, " : "", ndmp_rm & RPC_RM_FRAGLEN, plurality(ndmp_rm & RPC_RM_FRAGLEN, "byte", "bytes")); - hdr_tree = proto_item_add_subtree(hdr_item, ett_ndmp_fraghdr); proto_tree_add_boolean(hdr_tree, hf_ndmp_lastfrag, tvb, 0, 4, ndmp_rm); proto_tree_add_uint(hdr_tree, hf_ndmp_fraglen, tvb, 0, 4, ndmp_rm); @@ -3384,11 +3353,10 @@ dissect_ndmp_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* } /* Add the record marker information to the tree */ - hdr_item = proto_tree_add_text(ndmp_tree, tvb, 0, 4, - "Fragment header: %s%u %s", + hdr_tree = proto_tree_add_subtree_format(ndmp_tree, tvb, 0, 4, + ett_ndmp_fraghdr, NULL, "Fragment header: %s%u %s", (ndmp_rm & RPC_RM_LASTFRAG) ? "Last fragment, " : "", ndmp_rm & RPC_RM_FRAGLEN, plurality(ndmp_rm & RPC_RM_FRAGLEN, "byte", "bytes")); - hdr_tree = proto_item_add_subtree(hdr_item, ett_ndmp_fraghdr); proto_tree_add_boolean(hdr_tree, hf_ndmp_lastfrag, tvb, 0, 4, ndmp_rm); proto_tree_add_uint(hdr_tree, hf_ndmp_fraglen, tvb, 0, 4, ndmp_rm); diff --git a/epan/dissectors/packet-negoex.c b/epan/dissectors/packet-negoex.c index 7c3f2cc76e..81e3173435 100644 --- a/epan/dissectors/packet-negoex.c +++ b/epan/dissectors/packet-negoex.c @@ -148,9 +148,7 @@ dissect_negoex_verify_message(tvbuff_t *tvb, guint32 offset; guint32 checksum_vector_offset; guint32 checksum_vector_count; - proto_item *pi; proto_tree *checksum; - proto_item *pi_chk; proto_tree *checksum_vector; offset = start_off; @@ -160,8 +158,7 @@ dissect_negoex_verify_message(tvbuff_t *tvb, offset += 16; /* Checksum */ - pi = proto_tree_add_text(tree, tvb, offset, 20, "Checksum"); - checksum = proto_item_add_subtree(pi, ett_negoex_checksum); + checksum = proto_tree_add_subtree(tree, tvb, offset, 20, ett_negoex_checksum, NULL, "Checksum"); /* cbHeaderLength */ proto_tree_add_item(checksum, hf_negoex_header_len, tvb, offset, 4, ENC_LITTLE_ENDIAN); @@ -179,11 +176,10 @@ dissect_negoex_verify_message(tvbuff_t *tvb, checksum_vector_offset = tvb_get_letohl(tvb, offset); checksum_vector_count = tvb_get_letohs(tvb, offset + 4); - pi_chk = proto_tree_add_text(checksum, tvb, offset, 8, - "Checksum Vector: %u at %u", + checksum_vector = proto_tree_add_subtree_format(checksum, tvb, offset, 8, + ett_negoex_checksum_vector, NULL, "Checksum Vector: %u at %u", checksum_vector_count, checksum_vector_offset); - checksum_vector = proto_item_add_subtree(pi_chk, ett_negoex_checksum_vector); proto_tree_add_item(checksum_vector, hf_negoex_checksum_vector_offset, tvb, offset, 4, ENC_LITTLE_ENDIAN); @@ -211,7 +207,6 @@ dissect_negoex_exchange_message(tvbuff_t *tvb, guint32 offset; guint32 exchange_vector_offset; guint32 exchange_vector_count; - proto_item *pi; proto_tree *exchange_vector; offset = start_off; @@ -224,9 +219,9 @@ dissect_negoex_exchange_message(tvbuff_t *tvb, exchange_vector_offset = tvb_get_letohl(tvb, offset); exchange_vector_count = tvb_get_letohs(tvb, offset + 4); - pi = proto_tree_add_text(tree, tvb, offset, 8, "Exchange: %u bytes at %u", + exchange_vector = proto_tree_add_subtree_format(tree, tvb, offset, 8, + ett_negoex_exchange, NULL, "Exchange: %u bytes at %u", exchange_vector_count, exchange_vector_offset); - exchange_vector = proto_item_add_subtree(pi, ett_negoex_exchange); proto_tree_add_item(exchange_vector, hf_negoex_exchange_vector_offset, tvb, offset, 4, ENC_LITTLE_ENDIAN); @@ -263,7 +258,6 @@ dissect_negoex_nego_message(tvbuff_t *tvb, guint16 authscheme_vector_count; guint32 extension_vector_offset; guint32 extension_vector_count; - proto_item *pi, *ext_pi; proto_tree *authscheme_vector; proto_tree *extension_vector; guint32 i; @@ -283,9 +277,9 @@ dissect_negoex_nego_message(tvbuff_t *tvb, authscheme_vector_offset = tvb_get_letohl(tvb, offset); authscheme_vector_count = tvb_get_letohs(tvb, offset + 4); - pi = proto_tree_add_text(tree, tvb, offset, 8, "AuthSchemes: %u at %u", + authscheme_vector = proto_tree_add_subtree_format(tree, tvb, offset, 8, + ett_negoex_authscheme_vector, NULL, "AuthSchemes: %u at %u", authscheme_vector_count, authscheme_vector_offset); - authscheme_vector = proto_item_add_subtree(pi, ett_negoex_authscheme_vector); proto_tree_add_item(authscheme_vector, hf_negoex_authscheme_vector_offset, tvb, offset, 4, ENC_LITTLE_ENDIAN); offset += 4; @@ -307,9 +301,9 @@ dissect_negoex_nego_message(tvbuff_t *tvb, extension_vector_offset = tvb_get_letohl(tvb, offset); extension_vector_count = tvb_get_letohs(tvb, offset + 4); - ext_pi = proto_tree_add_text(tree, tvb, offset, 8, "Extensions: %u at %u", + extension_vector = proto_tree_add_subtree_format(tree, tvb, offset, 8, + ett_negoex_extension_vector, NULL, "Extensions: %u at %u", extension_vector_count, extension_vector_count); - extension_vector = proto_item_add_subtree(ext_pi, ett_negoex_extension_vector); proto_tree_add_item(extension_vector, hf_negoex_extension_vector_offset, tvb, offset, 4, ENC_LITTLE_ENDIAN); @@ -325,7 +319,6 @@ dissect_negoex_nego_message(tvbuff_t *tvb, for (i = 0; i < extension_vector_count; i++) { guint32 byte_vector_offset, byte_vector_count; - proto_item *bv_pi; proto_tree *bv_tree; /* @@ -335,11 +328,10 @@ dissect_negoex_nego_message(tvbuff_t *tvb, byte_vector_offset = tvb_get_letohl(tvb, offset); byte_vector_count = tvb_get_letohs(tvb, offset + 4); - bv_pi = proto_tree_add_text(extension_vector, tvb, + bv_tree = proto_tree_add_subtree_format(extension_vector, tvb, extension_vector_offset + i * 8, 8, - "Extension: %u bytes at %u", + ett_negoex_byte_vector, NULL, "Extension: %u bytes at %u", byte_vector_count, byte_vector_offset); - bv_tree = proto_item_add_subtree(bv_pi, ett_negoex_byte_vector); proto_tree_add_item(bv_tree, hf_negoex_extension, tvb, byte_vector_offset, byte_vector_count, ENC_NA); @@ -383,7 +375,6 @@ dissect_negoex(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) proto_tree *negoex_msg_tree; proto_tree *negoex_hdr_tree; proto_item *msg; - proto_item *hdr; tvbuff_t *msg_tvb; guint32 start_offset; @@ -394,18 +385,14 @@ dissect_negoex(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) message_type = tvb_get_letohl(tvb, offset + 8); /* Add the message type tree ... set its length below */ - msg = proto_tree_add_text(negoex_tree, tvb, offset, -1, - "NEGOEX %s", + negoex_msg_tree = proto_tree_add_subtree_format(negoex_tree, tvb, offset, -1, + ett_negoex_msg, &msg, "NEGOEX %s", val_to_str_const(message_type, negoex_message_types, "Unknown NEGOEX message type")); - /* Add a subtree for the message */ - negoex_msg_tree = proto_item_add_subtree(msg, ett_negoex_msg); - /* Add a subtree for the header */ - hdr = proto_tree_add_text(negoex_msg_tree, tvb, offset, 40, "Header"); - negoex_hdr_tree = proto_item_add_subtree(hdr, ett_negoex_hdr); + negoex_hdr_tree = proto_tree_add_subtree(negoex_msg_tree, tvb, offset, 40, ett_negoex_hdr, NULL, "Header"); /* Signature, NEGOEXTS */ proto_tree_add_item(negoex_hdr_tree, hf_negoex_sig, diff --git a/epan/dissectors/packet-netanalyzer.c b/epan/dissectors/packet-netanalyzer.c index bb9a149611..29132b4401 100644 --- a/epan/dissectors/packet-netanalyzer.c +++ b/epan/dissectors/packet-netanalyzer.c @@ -340,8 +340,8 @@ dissect_netanalyzer_transparent(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t * as normally the transparent mode is used for low level analysis * where dissecting the frame's content wouldn't make much sense * use data dissector instead */ - ti = proto_tree_add_text(tree, tvb, 4, tvb_length(tvb)-4, "Raw packet data"); - transparent_payload_tree = proto_item_add_subtree(ti, ett_netanalyzer_transparent); + transparent_payload_tree = proto_tree_add_subtree(tree, tvb, 4, tvb_length(tvb)-4, + ett_netanalyzer_transparent, NULL, "Raw packet data"); next_tvb = tvb_new_subset_remaining(tvb, 4); call_dissector(data_dissector_handle, next_tvb, pinfo, transparent_payload_tree); diff --git a/epan/dissectors/packet-netbios.c b/epan/dissectors/packet-netbios.c index a4309eed97..0a9c22e900 100644 --- a/epan/dissectors/packet-netbios.c +++ b/epan/dissectors/packet-netbios.c @@ -354,7 +354,6 @@ netbios_add_name(const char* label, tvbuff_t *tvb, int offset, proto_tree *tree) {/* add a name field display tree. Display the name and station type in sub-tree */ proto_tree *field_tree; - proto_item *tf; char name_str[(NETBIOS_NAME_LEN - 1)*4 + 1]; int name_type; const char *name_type_str; @@ -362,10 +361,9 @@ netbios_add_name(const char* label, tvbuff_t *tvb, int offset, proto_tree *tree) /* decode the name field */ name_type = get_netbios_name( tvb, offset, name_str, (NETBIOS_NAME_LEN - 1)*4 + 1); name_type_str = netbios_name_type_descr(name_type); - tf = proto_tree_add_text( tree, tvb, offset, NETBIOS_NAME_LEN, - "%s: %s<%02x> (%s)", label, name_str, name_type, name_type_str); + field_tree = proto_tree_add_subtree_format( tree, tvb, offset, NETBIOS_NAME_LEN, + ett_netb_name, NULL, "%s: %s<%02x> (%s)", label, name_str, name_type, name_type_str); - field_tree = proto_item_add_subtree( tf, ett_netb_name); proto_tree_add_string_format( field_tree, hf_netb_nb_name, tvb, offset, 15, name_str, "%s", name_str); proto_tree_add_uint_format( field_tree, hf_netb_nb_name_type, tvb, offset + 15, 1, name_type, diff --git a/epan/dissectors/packet-netflow.c b/epan/dissectors/packet-netflow.c index 6428754adf..7ccb060d71 100644 --- a/epan/dissectors/packet-netflow.c +++ b/epan/dissectors/packet-netflow.c @@ -2240,7 +2240,6 @@ dissect_v9_v10_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *pdutree, int v9_v10_tmplt_t *tmplt_p; v9_v10_tmplt_t tmplt_key; proto_tree *data_tree; - proto_item *data_item; guint pdu_len; if (length == 0) { @@ -2254,9 +2253,8 @@ dissect_v9_v10_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *pdutree, int /* Note: If the flow contains variable length fields then */ /* tmplt_p->length will be less then actual length of the flow. */ while (length >= tmplt_p->length) { - data_item = proto_tree_add_text(pdutree, tvb, - offset, tmplt_p->length, "Flow %d", count++); - data_tree = proto_item_add_subtree(data_item, ett_dataflowset); + data_tree = proto_tree_add_subtree_format(pdutree, tvb, offset, tmplt_p->length, + ett_dataflowset, NULL, "Flow %d", count++); pdu_len = dissect_v9_v10_pdu(tvb, pinfo, data_tree, offset, tmplt_p, hdrinfo_p); @@ -3175,8 +3173,7 @@ dissect_v9_v10_pdu_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *pdutree, const value_string *x_vs; int x_hf; - ti = proto_tree_add_text(pdutree, tvb, offset, length, "Forwarding Status"); - fwdstattree = proto_item_add_subtree(ti, ett_fwdstat); + fwdstattree = proto_tree_add_subtree(pdutree, tvb, offset, length, ett_fwdstat, NULL, "Forwarding Status"); forwarding_status = tvb_get_guint8(tvb, offset)>>6; switch(forwarding_status) { @@ -5250,8 +5247,7 @@ dissect_v9_v10_template_fields(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree } } - field_item = proto_tree_add_text(tmplt_tree, tvb, offset, 4+((pen_str!=NULL)?4:0), "Field (%u/%u)", i+1, count); - field_tree = proto_item_add_subtree(field_item, ett_field); + field_tree = proto_tree_add_subtree_format(tmplt_tree, tvb, offset, 4+((pen_str!=NULL)?4:0), ett_field, &field_item, "Field (%u/%u)", i+1, count); if (fields_type == TF_SCOPES) { proto_item_append_text(field_item, " [Scope]"); } @@ -5333,8 +5329,7 @@ dissect_v9_v10_options_template(tvbuff_t *tvb, packet_info *pinfo, proto_tree *p id = tvb_get_ntohs(tvb, offset); - tmplt_item = proto_tree_add_text(pdutree, tvb, offset, -1, "Options Template (Id = %u)", id); - tmplt_tree = proto_item_add_subtree(tmplt_item, ett_template); + tmplt_tree = proto_tree_add_subtree_format(pdutree, tvb, offset, -1, ett_template, &tmplt_item, "Options Template (Id = %u)", id); proto_tree_add_item(tmplt_tree, hf_cflow_template_id, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2; @@ -5471,7 +5466,6 @@ dissect_v9_v10_data_template(tvbuff_t *tvb, packet_info *pinfo, proto_tree *pdut v9_v10_tmplt_t *tmplt_p; v9_v10_tmplt_t tmplt; proto_tree *tmplt_tree; - proto_item *tmplt_item; proto_item *ti; guint16 id; guint16 count; @@ -5481,10 +5475,9 @@ dissect_v9_v10_data_template(tvbuff_t *tvb, packet_info *pinfo, proto_tree *pdut id = tvb_get_ntohs(tvb, offset); count = tvb_get_ntohs(tvb, offset + 2); - tmplt_item = proto_tree_add_text(pdutree, tvb, offset, + tmplt_tree = proto_tree_add_subtree_format(pdutree, tvb, offset, 4 + 4 * count /* hdrsiz + count*2*(sizeof guint16)*/, - "Template (Id = %u, Count = %u)", id, count); - tmplt_tree = proto_item_add_subtree(tmplt_item, ett_template); + ett_template, NULL, "Template (Id = %u, Count = %u)", id, count); proto_tree_add_item(tmplt_tree, hf_cflow_template_id, tvb, offset, 2, ENC_BIG_ENDIAN); diff --git a/epan/dissectors/packet-netlink.c b/epan/dissectors/packet-netlink.c index c6801aa1ba..14a02300bd 100644 --- a/epan/dissectors/packet-netlink.c +++ b/epan/dissectors/packet-netlink.c @@ -140,8 +140,7 @@ dissect_netlink_attributes(tvbuff_t *tvb, header_field_info *hfi_type, int ett, end_offset = (offset + rta_len + 3) & ~3; - ti = proto_tree_add_text(tree, tvb, offset, end_offset - offset, "Attribute"); - attr_tree = proto_item_add_subtree(ti, ett); + attr_tree = proto_tree_add_subtree(tree, tvb, offset, end_offset - offset, ett, &ti, "Attribute"); proto_tree_add_text(attr_tree, tvb, offset, 2, "Len: %d", rta_len); offset += 2; @@ -225,11 +224,9 @@ dissect_netlink(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *_data pkt_end_offset = offset + pkt_len; - ti = proto_tree_add_text(tree, tvb, offset, pkt_len, "Netlink message"); - fh_msg = proto_item_add_subtree(ti, ett_netlink_msg); + fh_msg = proto_tree_add_subtree(tree, tvb, offset, pkt_len, ett_netlink_msg, NULL, "Netlink message"); - ti = proto_tree_add_text(fh_msg, tvb, offset, 16, "Header"); - fh_hdr = proto_item_add_subtree(ti, ett_netlink_msghdr); + fh_hdr = proto_tree_add_subtree(fh_msg, tvb, offset, 16, ett_netlink_msghdr, NULL, "Header"); proto_tree_add_item(fh_hdr, &hfi_netlink_hdr_len, tvb, offset, 4, encoding); offset += 4; diff --git a/epan/dissectors/packet-nfs.c b/epan/dissectors/packet-nfs.c index 9c0836b824..7074df0891 100644 --- a/epan/dissectors/packet-nfs.c +++ b/epan/dissectors/packet-nfs.c @@ -1527,15 +1527,12 @@ dissect_fhandle_data_LINUX_KNFSD_LE(tvbuff_t* tvb, packet_info *pinfo _U_, proto /* file system id (device) */ { - proto_item *fsid_item; proto_tree *fsid_tree; - fsid_item = proto_tree_add_text(tree, tvb, - offset+12, 4, + fsid_tree = proto_tree_add_subtree_format(tree, tvb, + offset+12, 4, ett_nfs_fh_fsid, NULL, "file system ID: %d,%d", fsid_major, fsid_minor); - fsid_tree = proto_item_add_subtree(fsid_item, - ett_nfs_fh_fsid); proto_tree_add_uint(fsid_tree, hf_nfs_fh_fsid_major, tvb, offset+13, 1, fsid_major); proto_tree_add_uint(fsid_tree, hf_nfs_fh_fsid_minor, @@ -1544,14 +1541,11 @@ dissect_fhandle_data_LINUX_KNFSD_LE(tvbuff_t* tvb, packet_info *pinfo _U_, proto /* exported file system id (device) */ { - proto_item *xfsid_item; proto_tree *xfsid_tree; - xfsid_item = proto_tree_add_text(tree, tvb, - offset+16, 4, + xfsid_tree = proto_tree_add_subtree_format(tree, tvb, + offset+16, 4, ett_nfs_fh_xfsid, NULL, "exported file system ID: %d,%d", xfsid_major, xfsid_minor); - xfsid_tree = proto_item_add_subtree(xfsid_item, - ett_nfs_fh_xfsid); proto_tree_add_uint(xfsid_tree, hf_nfs_fh_xfsid_major, tvb, offset+17, 1, xfsid_major); proto_tree_add_uint(xfsid_tree, hf_nfs_fh_xfsid_minor, @@ -1627,7 +1621,6 @@ dissect_fhandle_data_NETAPP(tvbuff_t* tvb, packet_info *pinfo _U_, proto_tree *t guint32 nfsexport = tvb_get_letohl(tvb, offset + 24); guint32 export_snapgen = tvb_get_letohl(tvb, offset + 28); - proto_item *item = NULL; proto_tree *subtree = NULL; char *flag_string; static const char *strings[] = { " MNT_PNT", " SNAPDIR", " SNAPDIR_ENT", @@ -1642,16 +1635,14 @@ dissect_fhandle_data_NETAPP(tvbuff_t* tvb, packet_info *pinfo _U_, proto_tree *t g_strlcat(flag_string, strings[bit], 512); } } - item = proto_tree_add_text(tree, tvb, offset + 0, 8, - "mount (inode %u)", mount); - subtree = proto_item_add_subtree(item, ett_nfs_fh_mount); + subtree = proto_tree_add_subtree_format(tree, tvb, offset + 0, 8, + ett_nfs_fh_mount, NULL, "mount (inode %u)", mount); proto_tree_add_uint(subtree, hf_nfs_fh_mount_fileid, tvb, offset + 0, 4, mount); proto_tree_add_uint(subtree, hf_nfs_fh_mount_generation, tvb, offset + 4, 4, mount_gen); - item = proto_tree_add_text(tree, tvb, offset + 8, 16, - "file (inode %u)", inum); - subtree = proto_item_add_subtree(item, ett_nfs_fh_file); + subtree = proto_tree_add_subtree_format(tree, tvb, offset + 8, 16, + ett_nfs_fh_file, NULL, "file (inode %u)", inum); proto_tree_add_uint_format(subtree, hf_nfs_fh_flags, tvb, offset + 8, 2, flags, "Flags: %#02x%s", flags, @@ -1666,9 +1657,8 @@ dissect_fhandle_data_NETAPP(tvbuff_t* tvb, packet_info *pinfo _U_, proto_tree *t offset + 16, 4, generation); proto_tree_add_uint(subtree, hf_nfs_fh_fsid, tvb, offset + 20, 4, fsid); - item = proto_tree_add_text(tree, tvb, offset + 24, 8, - "export (inode %u)", nfsexport); - subtree = proto_item_add_subtree(item, ett_nfs_fh_export); + subtree = proto_tree_add_subtree_format(tree, tvb, offset + 24, 8, + ett_nfs_fh_export, NULL, "export (inode %u)", nfsexport); proto_tree_add_uint(subtree, hf_nfs_fh_export_fileid, tvb, offset + 24, 4, nfsexport); proto_tree_add_uint(subtree, @@ -1769,15 +1759,13 @@ dissect_fhandle_data_NETAPP_V4(tvbuff_t* tvb, packet_info *pinfo _U_, proto_tree g_strlcat(flag_string, strings[bit], 512); } } - item = proto_tree_add_text(tree, tvb, offset + 0, 8, "export (inode %u)", fileid); - subtree = proto_item_add_subtree(item, ett_nfs4_fh_export); + subtree = proto_tree_add_subtree_format(tree, tvb, offset + 0, 8, ett_nfs4_fh_export, NULL, "export (inode %u)", fileid); proto_tree_add_uint(subtree, hf_nfs_fh_export_fileid, tvb, offset + 0, 4, fileid); proto_tree_add_uint(subtree, hf_nfs_fh_export_generation, tvb, offset + 4, 4, snapgen); - item = proto_tree_add_text(tree, tvb, offset + 8, 16, "file (inode %u)", inum); - subtree = proto_item_add_subtree(item, ett_nfs4_fh_file); + subtree = proto_tree_add_subtree_format(tree, tvb, offset + 8, 16, ett_nfs4_fh_file, NULL, "file (inode %u)", inum); item = proto_tree_add_uint_format_value(subtree, hf_nfs_fh_flags, tvb, offset + 8, 2, flags, "%#02x%s", flags, flag_string); flag_tree = proto_item_add_subtree(item, ett_nfs4_fh_file_flags); @@ -1879,9 +1867,8 @@ dissect_fhandle_data_NETAPP_GX_v3(tvbuff_t* tvb, packet_info *pinfo _U_, proto_t spinfile_id = tvb_get_letohl(tvb, offset+12); spinfile_uid = tvb_get_letohl(tvb, offset+16); - tf = proto_tree_add_text(tree, tvb, offset+4, 16, - " spin file handle"); - field_tree = proto_item_add_subtree(tf, ett_nfs3_gxfh_sfhfield); + field_tree = proto_tree_add_subtree(tree, tvb, offset+4, 16, + ett_nfs3_gxfh_sfhfield, NULL, " spin file handle"); proto_tree_add_item(field_tree, hf_nfs3_gxfh_ldsid, tvb, offset+4, 4, ENC_BIG_ENDIAN); proto_tree_add_item(field_tree, hf_nfs3_gxfh_cid, tvb, offset+8, 2, ENC_BIG_ENDIAN); @@ -1924,9 +1911,8 @@ dissect_fhandle_data_NETAPP_GX_v3(tvbuff_t* tvb, packet_info *pinfo _U_, proto_t spinfile_id = tvb_get_letohl(tvb, offset+28); spinfile_uid = tvb_get_letohl(tvb, offset+32); - tf = proto_tree_add_text(tree, tvb, offset+20, 16, - " spin (mount point) file handle"); - field_tree = proto_item_add_subtree(tf, ett_nfs3_gxfh_sfhfield); + field_tree = proto_tree_add_subtree(tree, tvb, offset+20, 16, + ett_nfs3_gxfh_sfhfield, NULL, " spin (mount point) file handle"); proto_tree_add_item(field_tree, hf_nfs3_gxfh_ldsid, tvb, offset+20, 4, ENC_BIG_ENDIAN); proto_tree_add_item(field_tree, hf_nfs3_gxfh_cid, tvb, offset+24, 2, ENC_BIG_ENDIAN); @@ -2018,29 +2004,25 @@ dissect_fhandle_data_LINUX_KNFSD_NEW(tvbuff_t* tvb, packet_info *pinfo _U_, prot } switch (version) { - case 1: { + case 1: auth_type = tvb_get_guint8(tvb, offset + 1); fsid_type = tvb_get_guint8(tvb, offset + 2); fileid_type = tvb_get_guint8(tvb, offset + 3); if (tree) { - proto_item *encoding_item = proto_tree_add_text(tree, tvb, + proto_tree *encoding_tree = proto_tree_add_subtree_format(tree, tvb, offset + 1, 3, - "encoding: %u %u %u", + ett_nfs_fh_encoding, NULL, "encoding: %u %u %u", auth_type, fsid_type, fileid_type); - { - proto_tree *encoding_tree = proto_item_add_subtree(encoding_item, - ett_nfs_fh_encoding); - proto_tree_add_uint(encoding_tree, hf_nfs_fh_auth_type, + proto_tree_add_uint(encoding_tree, hf_nfs_fh_auth_type, tvb, offset+1, 1, auth_type); - proto_tree_add_uint(encoding_tree, hf_nfs_fh_fsid_type, + proto_tree_add_uint(encoding_tree, hf_nfs_fh_fsid_type, tvb, offset+2, 1, fsid_type); - proto_tree_add_uint(encoding_tree, hf_nfs_fh_fileid_type, + proto_tree_add_uint(encoding_tree, hf_nfs_fh_fileid_type, tvb, offset+3, 1, fileid_type); - } } offset += 4; - } break; + break; default: { /* unknown version */ goto out; @@ -2072,21 +2054,17 @@ dissect_fhandle_data_LINUX_KNFSD_NEW(tvbuff_t* tvb, packet_info *pinfo _U_, prot fsid_minor = tvb_get_ntohs(tvb, offset + 2); fsid_inode = tvb_get_letohl(tvb, offset + 4); if (tree) { - proto_item *fsid_item = proto_tree_add_text(tree, tvb, - offset+0, 8, + proto_tree *fsid_tree = proto_tree_add_subtree_format(tree, tvb, + offset+0, 8, ett_nfs_fh_fsid, NULL, "file system ID: %u,%u (inode %u)", fsid_major, fsid_minor, fsid_inode); - { - proto_tree *fsid_tree = proto_item_add_subtree(fsid_item, - ett_nfs_fh_fsid); - proto_tree_add_uint(fsid_tree, hf_nfs_fh_fsid_major, + proto_tree_add_uint(fsid_tree, hf_nfs_fh_fsid_major, tvb, offset+0, 2, fsid_major); - proto_tree_add_uint(fsid_tree, hf_nfs_fh_fsid_minor, + proto_tree_add_uint(fsid_tree, hf_nfs_fh_fsid_minor, tvb, offset+2, 2, fsid_minor); - proto_tree_add_uint(fsid_tree, hf_nfs_fh_fsid_inode, + proto_tree_add_uint(fsid_tree, hf_nfs_fh_fsid_inode, tvb, offset+4, 4, fsid_inode); - } } offset += 8; } break; @@ -2112,19 +2090,15 @@ dissect_fhandle_data_LINUX_KNFSD_NEW(tvbuff_t* tvb, packet_info *pinfo _U_, prot generation = tvb_get_letohl(tvb, offset + 4); if (tree) { - proto_item *fileid_item = proto_tree_add_text(tree, tvb, - offset+0, 8, + proto_tree *fileid_tree = proto_tree_add_subtree_format(tree, tvb, + offset+0, 8, ett_nfs_fh_fn, NULL, "file ID: %u (%u)", inode, generation); - { - proto_tree *fileid_tree = proto_item_add_subtree( - fileid_item, ett_nfs_fh_fn); - proto_tree_add_uint(fileid_tree, hf_nfs_fh_fn_inode, + proto_tree_add_uint(fileid_tree, hf_nfs_fh_fn_inode, tvb, offset+0, 4, inode); - proto_tree_add_uint(fileid_tree, hf_nfs_fh_fn_generation, + proto_tree_add_uint(fileid_tree, hf_nfs_fh_fn_generation, tvb, offset+4, 4, generation); - } } /*offset += 8;*/ @@ -2139,21 +2113,17 @@ dissect_fhandle_data_LINUX_KNFSD_NEW(tvbuff_t* tvb, packet_info *pinfo _U_, prot parent_inode = tvb_get_letohl(tvb, offset + 8); if (tree) { - proto_item *fileid_item = proto_tree_add_text(tree, tvb, - offset+0, 8, + proto_tree *fileid_tree = proto_tree_add_subtree_format(tree, tvb, + offset+0, 8, ett_nfs_fh_fn, NULL, "file ID: %u (%u)", inode, generation); - { - proto_tree *fileid_tree = proto_item_add_subtree( - fileid_item, ett_nfs_fh_fn); - proto_tree_add_uint(fileid_tree, hf_nfs_fh_fn_inode, + proto_tree_add_uint(fileid_tree, hf_nfs_fh_fn_inode, tvb, offset+0, 4, inode); - proto_tree_add_uint(fileid_tree, hf_nfs_fh_fn_generation, + proto_tree_add_uint(fileid_tree, hf_nfs_fh_fn_generation, tvb, offset+4, 4, generation); - proto_tree_add_uint(fileid_tree, hf_nfs_fh_dirinode, + proto_tree_add_uint(fileid_tree, hf_nfs_fh_dirinode, tvb, offset+8, 4, parent_inode); - } } /*offset += 12;*/ @@ -2230,8 +2200,8 @@ dissect_fhandle_data_CELERRA_VNX(tvbuff_t* tvb, packet_info *pinfo _U_, proto_tr if (fhlen == 32) { /* Create a "File/Dir" subtree: bytes 0 thru 15 of the 32-byte file handle */ { - proto_item *obj_item = NULL; - proto_tree *obj_tree = NULL; + proto_item *obj_item; + proto_tree *obj_tree; obj_item = proto_tree_add_item(tree, hf_nfs_fh_obj, tvb, offset+0, 16, ENC_NA ); obj_tree = proto_item_add_subtree(obj_item, ett_nfs_fh_obj); @@ -2248,8 +2218,8 @@ dissect_fhandle_data_CELERRA_VNX(tvbuff_t* tvb, packet_info *pinfo _U_, proto_tr } { /* Create "Export" subtree (NFSv3: Bytes 16 thru 31 of the 32-byte file handle */ - proto_item *ex_item = NULL; - proto_tree *ex_tree = NULL; + proto_item *ex_item; + proto_tree *ex_tree; ex_item = proto_tree_add_item(tree, hf_nfs_fh_ex, tvb, offset+16, 16, ENC_NA ); ex_tree = proto_item_add_subtree(ex_item, ett_nfs_fh_ex); @@ -2284,8 +2254,8 @@ dissect_fhandle_data_CELERRA_VNX(tvbuff_t* tvb, packet_info *pinfo _U_, proto_tr /* Create "Export" subtree (bytes 8 thru 23 of the 40-byte file handle */ { - proto_item *ex_item = NULL; - proto_tree *ex_tree = NULL; + proto_item *ex_item; + proto_tree *ex_tree; ex_item = proto_tree_add_item(tree, hf_nfs_fh_ex, tvb, offset+8, 16, ENC_NA ); ex_tree = proto_item_add_subtree(ex_item, ett_nfs_fh_ex); @@ -2302,8 +2272,8 @@ dissect_fhandle_data_CELERRA_VNX(tvbuff_t* tvb, packet_info *pinfo _U_, proto_tr } /* Create a "File/Dir/Object" subtree (bytes 24 thru 39 of the 40-byte file handle) */ { - proto_item *obj_item = NULL; - proto_tree *obj_tree = NULL; + proto_item *obj_item; + proto_tree *obj_tree; obj_item = proto_tree_add_item(tree, hf_nfs_fh_obj, tvb, offset+24, 16, ENC_NA); obj_tree = proto_item_add_subtree(obj_item, ett_nfs_fh_obj); @@ -2683,15 +2653,11 @@ int dissect_fhandle(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, const char *name, guint32 *hash, rpc_call_info_value *civ) { - proto_item *fitem = NULL; - proto_tree *ftree = NULL; + proto_tree *ftree; - if (tree) { - fitem = proto_tree_add_text(tree, tvb, offset, FHSIZE, - "%s", name); + ftree = proto_tree_add_subtree(tree, tvb, offset, FHSIZE, + ett_nfs_fhandle, NULL, name); - ftree = proto_item_add_subtree(fitem, ett_nfs_fhandle); - } /* are we snooping fh to filenames ?*/ if ((!pinfo->fd->flags.visited) && nfs_file_name_snooping) { @@ -2848,15 +2814,12 @@ dissect_nfs2_mode(tvbuff_t *tvb, int offset, proto_tree *tree, const char *label int dissect_nfs2_fattr(tvbuff_t *tvb, int offset, proto_tree *tree, const char *name) { - proto_item *fattr_item = NULL; - proto_tree *fattr_tree = NULL; + proto_item *fattr_item; + proto_tree *fattr_tree; int old_offset = offset; - if (tree) { - fattr_item = proto_tree_add_text(tree, tvb, offset, -1, - "%s", name); - fattr_tree = proto_item_add_subtree(fattr_item, ett_nfs_fattr); - } + fattr_tree = proto_tree_add_subtree(tree, tvb, offset, -1, + ett_nfs_fattr, &fattr_item, name); offset = dissect_nfs2_ftype(tvb, offset, fattr_tree, "type"); offset = dissect_nfs2_mode(tvb, offset, fattr_tree, "mode"); @@ -2878,9 +2841,7 @@ dissect_nfs2_fattr(tvbuff_t *tvb, int offset, proto_tree *tree, const char *name hf_nfs_ctime, hf_nfs_ctime_sec, hf_nfs_ctime_usec); /* now we know, that fattr is shorter */ - if (fattr_item) { - proto_item_set_len(fattr_item, offset - old_offset); - } + proto_item_set_len(fattr_item, offset - old_offset); return offset; } @@ -2890,15 +2851,12 @@ dissect_nfs2_fattr(tvbuff_t *tvb, int offset, proto_tree *tree, const char *name static int dissect_nfs2_sattr(tvbuff_t *tvb, int offset, proto_tree *tree, const char *name) { - proto_item *sattr_item = NULL; - proto_tree *sattr_tree = NULL; + proto_item *sattr_item; + proto_tree *sattr_tree; int old_offset = offset; - if (tree) { - sattr_item = proto_tree_add_text(tree, tvb, offset, -1, - "%s", name); - sattr_tree = proto_item_add_subtree(sattr_item, ett_nfs2_sattr); - } + sattr_tree = proto_tree_add_subtree(tree, tvb, offset, -1, + ett_nfs2_sattr, &sattr_item, name); if (tvb_get_ntohl(tvb, offset+0) != 0xffffffff) offset = dissect_nfs2_mode(tvb, offset, sattr_tree, "mode"); @@ -3033,15 +2991,12 @@ static int dissect_diropargs(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, const char *label, guint32 *hash, const char **name, rpc_call_info_value *civ) { - proto_item *diropargs_item = NULL; - proto_tree *diropargs_tree = NULL; + proto_item *diropargs_item; + proto_tree *diropargs_tree; int old_offset = offset; - if (tree) { - diropargs_item = proto_tree_add_text(tree, tvb, offset, -1, - "%s", label); - diropargs_tree = proto_item_add_subtree(diropargs_item, ett_nfs2_diropargs); - } + diropargs_tree = proto_tree_add_subtree(tree, tvb, offset, -1, + ett_nfs2_diropargs, &diropargs_item, label); /* are we snooping fh to filenames ?*/ if ((!pinfo->fd->flags.visited) && nfs_file_name_snooping) { @@ -3062,9 +3017,7 @@ dissect_diropargs(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tre offset = dissect_filename(tvb, offset, diropargs_tree, hf_nfs_name, name); /* now we know, that diropargs is shorter */ - if (diropargs_item) { - proto_item_set_len(diropargs_item, offset - old_offset); - } + proto_item_set_len(diropargs_item, offset - old_offset); return offset; } @@ -3826,14 +3779,10 @@ dissect_nfs3_specdata(tvbuff_t *tvb, int offset, proto_tree *tree, const char *n specdata2 = tvb_get_ntohl(tvb, offset+4); if (tree) { - proto_item *specdata3_item; proto_tree *specdata3_tree; - specdata3_item = proto_tree_add_text(tree, tvb, offset, 8, - "%s: %u,%u", name, specdata1, specdata2); - - specdata3_tree = proto_item_add_subtree(specdata3_item, - ett_nfs3_specdata); + specdata3_tree = proto_tree_add_subtree_format(tree, tvb, offset, 8, + ett_nfs3_specdata, NULL, "%s: %u,%u", name, specdata1, specdata2); proto_tree_add_text(specdata3_tree, tvb, offset+0, 4, "specdata1: %u", specdata1); @@ -3854,20 +3803,15 @@ dissect_nfs3_fh(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint fh3_len; guint fh3_len_full; /*guint fh3_fill;*/ - proto_item *fitem = NULL; - proto_tree *ftree = NULL; + proto_tree *ftree; int fh_offset, fh_length; fh3_len = tvb_get_ntohl(tvb, offset+0); fh3_len_full = rpc_roundup(fh3_len); /*fh3_fill = fh3_len_full - fh3_len;*/ - if (tree) { - fitem = proto_tree_add_text(tree, tvb, offset, 4+fh3_len_full, - "%s", name); - - ftree = proto_item_add_subtree(fitem, ett_nfs3_fh); - } + ftree = proto_tree_add_subtree(tree, tvb, offset, 4+fh3_len_full, + ett_nfs3_fh, NULL, name); /* are we snooping fh to filenames ?*/ if ((!pinfo->fd->flags.visited) && nfs_file_name_snooping) { @@ -3968,11 +3912,8 @@ dissect_nfs_fattr3(packet_info *pinfo, tvbuff_t *tvb, int offset, int old_offset = offset; guint32 type, mode, uid, gid; - if (tree) { - fattr3_item = proto_tree_add_text(tree, tvb, offset, -1, - "%s", name); - fattr3_tree = proto_item_add_subtree(fattr3_item, ett_nfs3_fattr); - } + fattr3_tree = proto_tree_add_subtree(tree, tvb, offset, -1, + ett_nfs3_fattr, &fattr3_item, name); /* ftype */ offset = dissect_ftype3(tvb, offset, fattr3_tree, hf_nfs3_fattr_type, &type); @@ -4023,10 +3964,7 @@ dissect_nfs_fattr3(packet_info *pinfo, tvbuff_t *tvb, int offset, offset = dissect_nfstime3 (tvb, offset, fattr3_tree, hf_nfs_ctime, hf_nfs_ctime_sec, hf_nfs_ctime_nsec); /* now we know, that fattr3 is shorter */ - if (fattr3_item) { - proto_item_set_len(fattr3_item, offset - old_offset); - } - + proto_item_set_len(fattr3_item, offset - old_offset); /* put some nice info in COL_INFO for GETATTR replies */ if (levels & COL_INFO_LEVEL) { @@ -4061,23 +3999,20 @@ int dissect_nfs3_post_op_attr(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, const char *name) { - proto_item *post_op_attr_item = NULL; - proto_tree *post_op_attr_tree = NULL; + proto_item *post_op_attr_item; + proto_tree *post_op_attr_tree; int old_offset = offset; guint32 attributes_follow = 0; attributes_follow = tvb_get_ntohl(tvb, offset+0); - if (tree) { - post_op_attr_item = proto_tree_add_text(tree, tvb, offset, -1, - "%s", name); - post_op_attr_tree = proto_item_add_subtree(post_op_attr_item, - ett_nfs3_post_op_attr); + post_op_attr_tree = proto_tree_add_subtree(tree, tvb, offset, -1, + ett_nfs3_post_op_attr, &post_op_attr_item, name); - proto_tree_add_text(post_op_attr_tree, tvb, offset, 4, + proto_tree_add_text(post_op_attr_tree, tvb, offset, 4, "attributes_follow: %s (%u)", val_to_str_const(attributes_follow, value_follows, "Unknown"), attributes_follow); - } + offset += 4; switch (attributes_follow) { case TRUE: @@ -4091,9 +4026,7 @@ dissect_nfs3_post_op_attr(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_t } /* now we know, that post_op_attr_tree is shorter */ - if (tree && post_op_attr_item) { - proto_item_set_len(post_op_attr_item, offset - old_offset); - } + proto_item_set_len(post_op_attr_item, offset - old_offset); return offset; } @@ -4103,16 +4036,12 @@ dissect_nfs3_post_op_attr(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_t static int dissect_wcc_attr(tvbuff_t *tvb, int offset, proto_tree *tree, const char *name) { - proto_item *wcc_attr_item = NULL; - proto_tree *wcc_attr_tree = NULL; + proto_item *wcc_attr_item; + proto_tree *wcc_attr_tree; int old_offset = offset; - if (tree) { - wcc_attr_item = proto_tree_add_text(tree, tvb, offset, -1, - "%s", name); - wcc_attr_tree = proto_item_add_subtree(wcc_attr_item, - ett_nfs3_wcc_attr); - } + wcc_attr_tree = proto_tree_add_subtree(tree, tvb, offset, -1, + ett_nfs3_wcc_attr, &wcc_attr_item, name); offset = dissect_rpc_uint64(tvb, wcc_attr_tree, hf_nfs3_wcc_attr_size, offset); @@ -4121,9 +4050,7 @@ dissect_wcc_attr(tvbuff_t *tvb, int offset, proto_tree *tree, const char *name) offset = dissect_nfstime3(tvb, offset, wcc_attr_tree, hf_nfs_ctime, hf_nfs_ctime_sec, hf_nfs_ctime_nsec); /* now we know, that wcc_attr_tree is shorter */ - if (wcc_attr_item) { - proto_item_set_len(wcc_attr_item, offset - old_offset); - } + proto_item_set_len(wcc_attr_item, offset - old_offset); return offset; } @@ -4133,17 +4060,13 @@ dissect_wcc_attr(tvbuff_t *tvb, int offset, proto_tree *tree, const char *name) static int dissect_pre_op_attr(tvbuff_t *tvb, int offset, proto_tree *tree, const char *name) { - proto_item *pre_op_attr_item = NULL; - proto_tree *pre_op_attr_tree = NULL; + proto_item *pre_op_attr_item; + proto_tree *pre_op_attr_tree; int old_offset = offset; guint32 attributes_follow; - if (tree) { - pre_op_attr_item = proto_tree_add_text(tree, tvb, offset, -1, - "%s", name); - pre_op_attr_tree = proto_item_add_subtree(pre_op_attr_item, - ett_nfs3_pre_op_attr); - } + pre_op_attr_tree = proto_tree_add_subtree(tree, tvb, offset, -1, + ett_nfs3_pre_op_attr, &pre_op_attr_item, name); attributes_follow = tvb_get_ntohl(tvb, offset+0); proto_tree_add_text(pre_op_attr_tree, tvb, offset, 4, @@ -4161,9 +4084,7 @@ dissect_pre_op_attr(tvbuff_t *tvb, int offset, proto_tree *tree, const char *nam } /* now we know, that pre_op_attr_tree is shorter */ - if (pre_op_attr_item) { - proto_item_set_len(pre_op_attr_item, offset - old_offset); - } + proto_item_set_len(pre_op_attr_item, offset - old_offset); return offset; } @@ -4173,24 +4094,18 @@ dissect_pre_op_attr(tvbuff_t *tvb, int offset, proto_tree *tree, const char *nam static int dissect_wcc_data(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, const char *name) { - proto_item *wcc_data_item = NULL; - proto_tree *wcc_data_tree = NULL; + proto_item *wcc_data_item; + proto_tree *wcc_data_tree; int old_offset = offset; - if (tree) { - wcc_data_item = proto_tree_add_text(tree, tvb, offset, -1, - "%s", name); - wcc_data_tree = proto_item_add_subtree(wcc_data_item, - ett_nfs3_wcc_data); - } + wcc_data_tree = proto_tree_add_subtree(tree, tvb, offset, -1, + ett_nfs3_wcc_data, &wcc_data_item, name); offset = dissect_pre_op_attr (tvb, offset, wcc_data_tree, "before"); offset = dissect_nfs3_post_op_attr(tvb, offset, pinfo, wcc_data_tree, "after" ); /* now we know, that wcc_data is shorter */ - if (wcc_data_item) { - proto_item_set_len(wcc_data_item, offset - old_offset); - } + proto_item_set_len(wcc_data_item, offset - old_offset); return offset; } @@ -4201,17 +4116,13 @@ static int dissect_nfs3_post_op_fh(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, const char *name, rpc_call_info_value *civ) { - proto_item *post_op_fh3_item = NULL; - proto_tree *post_op_fh3_tree = NULL; + proto_item *post_op_fh3_item; + proto_tree *post_op_fh3_tree; int old_offset = offset; guint32 handle_follows; - if (tree) { - post_op_fh3_item = proto_tree_add_text(tree, tvb, offset, -1, - "%s", name); - post_op_fh3_tree = proto_item_add_subtree(post_op_fh3_item, - ett_nfs3_post_op_fh); - } + post_op_fh3_tree = proto_tree_add_subtree(tree, tvb, offset, -1, + ett_nfs3_post_op_fh, &post_op_fh3_item, name); handle_follows = tvb_get_ntohl(tvb, offset+0); proto_tree_add_text(post_op_fh3_tree, tvb, offset, 4, @@ -4241,25 +4152,21 @@ dissect_nfs3_post_op_fh(tvbuff_t *tvb, int offset, packet_info *pinfo, static int dissect_set_mode3(tvbuff_t *tvb, int offset, proto_tree *tree, const char *name) { - proto_item *set_mode3_item = NULL; - proto_tree *set_mode3_tree = NULL; + proto_item *set_mode3_item; + proto_tree *set_mode3_tree; int old_offset = offset; guint32 set_it; const char *set_it_name; set_it = tvb_get_ntohl(tvb, offset+0); - if (tree) { - set_it_name = val_to_str_const(set_it, value_follows, "Unknown"); + set_it_name = val_to_str_const(set_it, value_follows, "Unknown"); - set_mode3_item = proto_tree_add_text(tree, tvb, offset, -1, - "%s: %s", name, set_it_name); - set_mode3_tree = proto_item_add_subtree(set_mode3_item, - ett_nfs3_set_mode); + set_mode3_tree = proto_tree_add_subtree_format(tree, tvb, offset, -1, + ett_nfs3_set_mode, &set_mode3_item, "%s: %s", name, set_it_name); - proto_tree_add_text(set_mode3_tree, tvb, offset, 4, + proto_tree_add_text(set_mode3_tree, tvb, offset, 4, "set_it: %s (%u)", set_it_name, set_it); - } offset += 4; @@ -4285,25 +4192,20 @@ dissect_set_mode3(tvbuff_t *tvb, int offset, proto_tree *tree, const char *name) static int dissect_set_uid3(tvbuff_t *tvb, int offset, proto_tree *tree, const char *name) { - proto_item *set_uid3_item = NULL; - proto_tree *set_uid3_tree = NULL; + proto_item *set_uid3_item; + proto_tree *set_uid3_tree; int old_offset = offset; guint32 set_it; const char *set_it_name; set_it = tvb_get_ntohl(tvb, offset+0); + set_it_name = val_to_str_const(set_it, value_follows, "Unknown"); - if (tree) { - set_it_name = val_to_str_const(set_it, value_follows, "Unknown"); - - set_uid3_item = proto_tree_add_text(tree, tvb, offset, -1, - "%s: %s", name, set_it_name); - set_uid3_tree = proto_item_add_subtree(set_uid3_item, - ett_nfs3_set_uid); + set_uid3_tree = proto_tree_add_subtree_format(tree, tvb, offset, -1, + ett_nfs3_set_uid, &set_uid3_item, "%s: %s", name, set_it_name); - proto_tree_add_text(set_uid3_tree, tvb, offset, 4, + proto_tree_add_text(set_uid3_tree, tvb, offset, 4, "set_it: %s (%u)", set_it_name, set_it); - } offset += 4; switch (set_it) { @@ -4317,9 +4219,7 @@ dissect_set_uid3(tvbuff_t *tvb, int offset, proto_tree *tree, const char *name) } /* now we know, that set_uid3 is shorter */ - if (set_uid3_item) { - proto_item_set_len(set_uid3_item, offset - old_offset); - } + proto_item_set_len(set_uid3_item, offset - old_offset); return offset; } @@ -4329,23 +4229,20 @@ dissect_set_uid3(tvbuff_t *tvb, int offset, proto_tree *tree, const char *name) static int dissect_set_gid3(tvbuff_t *tvb, int offset, proto_tree *tree, const char *name) { - proto_item *set_gid3_item = NULL; - proto_tree *set_gid3_tree = NULL; + proto_item *set_gid3_item; + proto_tree *set_gid3_tree; int old_offset = offset; guint32 set_it; const char *set_it_name; set_it = tvb_get_ntohl(tvb, offset+0); - if (tree) { - set_it_name = val_to_str_const(set_it, value_follows, "Unknown"); - set_gid3_item = proto_tree_add_text(tree, tvb, offset, -1, - "%s: %s", name, set_it_name); - set_gid3_tree = proto_item_add_subtree(set_gid3_item, - ett_nfs3_set_gid); - proto_tree_add_text(set_gid3_tree, tvb, offset, 4, + set_it_name = val_to_str_const(set_it, value_follows, "Unknown"); + set_gid3_tree = proto_tree_add_subtree_format(tree, tvb, offset, -1, + ett_nfs3_set_gid, &set_gid3_item, "%s: %s", name, set_it_name); + + proto_tree_add_text(set_gid3_tree, tvb, offset, 4, "set_it: %s (%u)", set_it_name, set_it); - } offset += 4; @@ -4360,9 +4257,7 @@ dissect_set_gid3(tvbuff_t *tvb, int offset, proto_tree *tree, const char *name) } /* now we know, that set_gid3 is shorter */ - if (set_gid3_item) { - proto_item_set_len(set_gid3_item, offset - old_offset); - } + proto_item_set_len(set_gid3_item, offset - old_offset); return offset; } @@ -4372,24 +4267,20 @@ dissect_set_gid3(tvbuff_t *tvb, int offset, proto_tree *tree, const char *name) static int dissect_set_size3(tvbuff_t *tvb, int offset, proto_tree *tree, const char *name) { - proto_item *set_size3_item = NULL; - proto_tree *set_size3_tree = NULL; + proto_item *set_size3_item; + proto_tree *set_size3_tree; int old_offset = offset; guint32 set_it; const char *set_it_name; set_it = tvb_get_ntohl(tvb, offset+0); - if (tree) { - set_it_name = val_to_str_const(set_it, value_follows, "Unknown"); + set_it_name = val_to_str_const(set_it, value_follows, "Unknown"); - set_size3_item = proto_tree_add_text(tree, tvb, offset, -1, - "%s: %s", name, set_it_name); - set_size3_tree = proto_item_add_subtree(set_size3_item, - ett_nfs3_set_size); - proto_tree_add_text(set_size3_tree, tvb, offset, 4, + set_size3_tree = proto_tree_add_subtree_format(tree, tvb, offset, -1, + ett_nfs3_set_size, &set_size3_item, "%s: %s", name, set_it_name); + proto_tree_add_text(set_size3_tree, tvb, offset, 4, "set_it: %s (%u)", set_it_name, set_it); - } offset += 4; @@ -4404,9 +4295,7 @@ dissect_set_size3(tvbuff_t *tvb, int offset, proto_tree *tree, const char *name) } /* now we know, that set_size3 is shorter */ - if (set_size3_item) { - proto_item_set_len(set_size3_item, offset - old_offset); - } + proto_item_set_len(set_size3_item, offset - old_offset); return offset; } @@ -4430,25 +4319,21 @@ static const value_string time_how[] = static int dissect_set_atime(tvbuff_t *tvb, int offset, proto_tree *tree, const char *name) { - proto_item *set_atime_item = NULL; - proto_tree *set_atime_tree = NULL; + proto_item *set_atime_item; + proto_tree *set_atime_tree; int old_offset = offset; guint32 set_it; const char *set_it_name; set_it = tvb_get_ntohl(tvb, offset+0); - if (tree) { - set_it_name = val_to_str_const(set_it, time_how, "Unknown"); + set_it_name = val_to_str_const(set_it, time_how, "Unknown"); - set_atime_item = proto_tree_add_text(tree, tvb, offset, -1, - "%s: %s", name, set_it_name); - set_atime_tree = proto_item_add_subtree(set_atime_item, - ett_nfs3_set_atime); + set_atime_tree = proto_tree_add_subtree_format(tree, tvb, offset, -1, + ett_nfs3_set_atime, &set_atime_item, "%s: %s", name, set_it_name); - proto_tree_add_text(set_atime_tree, tvb, offset, 4, + proto_tree_add_text(set_atime_tree, tvb, offset, 4, "set_it: %s (%u)", set_it_name, set_it); - } offset += 4; switch (set_it) { @@ -4464,9 +4349,7 @@ dissect_set_atime(tvbuff_t *tvb, int offset, proto_tree *tree, const char *name) } /* now we know, that set_atime is shorter */ - if (set_atime_item) { - proto_item_set_len(set_atime_item, offset - old_offset); - } + proto_item_set_len(set_atime_item, offset - old_offset); return offset; } @@ -4476,30 +4359,26 @@ dissect_set_atime(tvbuff_t *tvb, int offset, proto_tree *tree, const char *name) static int dissect_set_mtime(tvbuff_t *tvb, int offset, proto_tree *tree, const char *name) { - proto_item *set_mtime_item = NULL; - proto_tree *set_mtime_tree = NULL; + proto_item *set_mtime_item; + proto_tree *set_mtime_tree; int old_offset = offset; guint32 set_it; const char *set_it_name; set_it = tvb_get_ntohl(tvb, offset+0); - if (tree) { - set_it_name = val_to_str_const(set_it, time_how, "Unknown"); + set_it_name = val_to_str_const(set_it, time_how, "Unknown"); - set_mtime_item = proto_tree_add_text(tree, tvb, offset, -1, - "%s: %s", name, set_it_name); - set_mtime_tree = proto_item_add_subtree(set_mtime_item, - ett_nfs3_set_mtime); - proto_tree_add_text(set_mtime_tree, tvb, offset, 4, + set_mtime_tree = proto_tree_add_subtree_format(tree, tvb, offset, -1, + ett_nfs3_set_mtime, &set_mtime_item, "%s: %s", name, set_it_name); + proto_tree_add_text(set_mtime_tree, tvb, offset, 4, "set_it: %s (%u)", set_it_name, set_it); - } offset += 4; switch (set_it) { case SET_TO_CLIENT_TIME: - if (set_mtime_item) { + if (set_mtime_tree) { offset = dissect_nfstime3(tvb, offset, set_mtime_tree, hf_nfs_atime, hf_nfs_atime_sec, hf_nfs_atime_nsec); } @@ -4510,9 +4389,7 @@ dissect_set_mtime(tvbuff_t *tvb, int offset, proto_tree *tree, const char *name) } /* now we know, that set_mtime is shorter */ - if (set_mtime_item) { - proto_item_set_len(set_mtime_item, offset - old_offset); - } + proto_item_set_len(set_mtime_item, offset - old_offset); return offset; } @@ -4522,15 +4399,12 @@ dissect_set_mtime(tvbuff_t *tvb, int offset, proto_tree *tree, const char *name) static int dissect_nfs3_sattr(tvbuff_t *tvb, int offset, proto_tree *tree, const char *name) { - proto_item *sattr3_item = NULL; - proto_tree *sattr3_tree = NULL; + proto_item *sattr3_item; + proto_tree *sattr3_tree; int old_offset = offset; - if (tree) { - sattr3_item = proto_tree_add_text(tree, tvb, offset, -1, - "%s", name); - sattr3_tree = proto_item_add_subtree(sattr3_item, ett_nfs3_sattr); - } + sattr3_tree = proto_tree_add_subtree(tree, tvb, offset, -1, + ett_nfs3_sattr, &sattr3_item, name); offset = dissect_set_mode3(tvb, offset, sattr3_tree, "mode"); offset = dissect_set_uid3 (tvb, offset, sattr3_tree, "uid"); @@ -4540,9 +4414,7 @@ dissect_nfs3_sattr(tvbuff_t *tvb, int offset, proto_tree *tree, const char *name offset = dissect_set_mtime(tvb, offset, sattr3_tree, "mtime"); /* now we know, that sattr3 is shorter */ - if (sattr3_item) { - proto_item_set_len(sattr3_item, offset - old_offset); - } + proto_item_set_len(sattr3_item, offset - old_offset); return offset; } @@ -4553,18 +4425,14 @@ static int dissect_diropargs3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, const char *label, guint32 *hash, const char **name, rpc_call_info_value *civ) { - proto_item *diropargs3_item = NULL; - proto_tree *diropargs3_tree = NULL; + proto_item *diropargs3_item; + proto_tree *diropargs3_tree; int old_offset = offset; int parent_offset, parent_len; int name_offset, name_len; - if (tree) { - diropargs3_item = proto_tree_add_text(tree, tvb, offset, -1, - "%s", label); - diropargs3_tree = proto_item_add_subtree(diropargs3_item, - ett_nfs3_diropargs); - } + diropargs3_tree = proto_tree_add_subtree(tree, tvb, offset, -1, + ett_nfs3_diropargs, &diropargs3_item, label); parent_offset = offset+4; parent_len = tvb_get_ntohl(tvb, offset); @@ -4590,9 +4458,7 @@ dissect_diropargs3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tr /* now we know, that diropargs3 is shorter */ - if (diropargs3_item) { - proto_item_set_len(diropargs3_item, offset - old_offset); - } + proto_item_set_len(diropargs3_item, offset - old_offset); return offset; } @@ -4696,25 +4562,21 @@ dissect_nfs3_getattr_reply(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, static int dissect_sattrguard3(tvbuff_t *tvb, int offset, proto_tree *tree, const char *name) { - proto_item *sattrguard3_item = NULL; - proto_tree *sattrguard3_tree = NULL; + proto_item *sattrguard3_item; + proto_tree *sattrguard3_tree; int old_offset = offset; guint32 check; const char *check_name; check = tvb_get_ntohl(tvb, offset+0); - if (tree) { - check_name = val_to_str_const(check, value_follows, "Unknown"); + check_name = val_to_str_const(check, value_follows, "Unknown"); - sattrguard3_item = proto_tree_add_text(tree, tvb, offset, -1, - "%s: %s", name, check_name); - sattrguard3_tree = proto_item_add_subtree(sattrguard3_item, - ett_nfs3_sattrguard); + sattrguard3_tree = proto_tree_add_subtree_format(tree, tvb, offset, -1, + ett_nfs3_sattrguard, &sattrguard3_item, "%s: %s", name, check_name); - proto_tree_add_text(sattrguard3_tree, tvb, offset, 4, + proto_tree_add_text(sattrguard3_tree, tvb, offset, 4, "check: %s (%u)", check_name, check); - } offset += 4; @@ -4730,9 +4592,7 @@ dissect_sattrguard3(tvbuff_t *tvb, int offset, proto_tree *tree, const char *nam } /* now we know, that sattrguard3 is shorter */ - if (sattrguard3_item) { - proto_item_set_len(sattrguard3_item, offset - old_offset); - } + proto_item_set_len(sattrguard3_item, offset - old_offset); return offset; } @@ -6346,10 +6206,8 @@ static int dissect_nfs4_lock_owner(tvbuff_t *tvb, int offset, proto_tree *tree) { proto_tree *newftree; - proto_item *fitem; - fitem = proto_tree_add_text(tree, tvb, offset, 4, "Owner"); - newftree = proto_item_add_subtree(fitem, ett_nfs4_lock_owner); + newftree = proto_tree_add_subtree(tree, tvb, offset, 4, ett_nfs4_lock_owner, NULL, "Owner"); offset = dissect_rpc_uint64(tvb, newftree, hf_nfs4_clientid, offset); offset = dissect_nfsdata(tvb, offset, newftree, hf_nfs_data); @@ -6416,10 +6274,8 @@ static int dissect_nfs4_fsid(tvbuff_t *tvb, int offset, proto_tree *tree, const char *name) { proto_tree *newftree; - proto_item *fitem; - fitem = proto_tree_add_text(tree, tvb, offset, 0, "%s", name); - newftree = proto_item_add_subtree(fitem, ett_nfs4_fsid); + newftree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_nfs4_fsid, NULL, name); offset = dissect_rpc_uint64(tvb, newftree, hf_nfs4_fsid_major, offset); offset = dissect_rpc_uint64(tvb, newftree, hf_nfs4_fsid_minor, offset); return offset; @@ -6468,7 +6324,8 @@ dissect_nfs_aceflags4(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_t proto_item *aceflag_item; proto_tree *aceflag_tree; - aceflag_item = proto_tree_add_uint(ace_tree, hf_nfs4_aceflags, tvb, offset, 4, aceflags); proto_item_append_text(aceflag_item, " ("); + aceflag_item = proto_tree_add_uint(ace_tree, hf_nfs4_aceflags, tvb, offset, 4, aceflags); + proto_item_append_text(aceflag_item, " ("); aceflag_tree = proto_item_add_subtree(aceflag_item, ett_nfs4_aceflag); while (flag_bit && flag_bit <= aceflags) { @@ -6723,11 +6580,8 @@ dissect_nfs4_fs_location(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, void *data _U_) { proto_tree *newftree; - proto_item *fitem; - - fitem = proto_tree_add_text(tree, tvb, offset, 0, "fs_location4"); - newftree = proto_item_add_subtree(fitem, ett_nfs4_fs_location); + newftree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_nfs4_fs_location, NULL, "fs_location4"); offset = dissect_rpc_array(tvb, pinfo, newftree, offset, dissect_nfs4_server, hf_nfs4_server); offset = dissect_nfs4_pathname(tvb, offset, newftree); @@ -6741,10 +6595,8 @@ dissect_nfs4_fs_locations(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree, const char *name) { proto_tree *newftree; - proto_item *fitem; - fitem = proto_tree_add_text(tree, tvb, offset, 0, "%s", name); - newftree = proto_item_add_subtree(fitem, ett_nfs4_fs_locations); + newftree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_nfs4_fs_locations, NULL, name); offset = dissect_nfs4_pathname(tvb, offset, newftree); @@ -6782,19 +6634,16 @@ static int dissect_nfs4_fattr_fh_expire_type(tvbuff_t *tvb, int offset, proto_tree *tree) { guint32 expire_type; - proto_tree *expire_type_tree = NULL; + proto_tree *expire_type_tree; + proto_item *expire_type_item; expire_type = tvb_get_ntohl(tvb, offset + 0); - if (tree) - { - proto_item *expire_type_item; - expire_type_item = proto_tree_add_text(tree, tvb, offset, 4, + expire_type_item = proto_tree_add_text(tree, tvb, offset, 4, "fattr4_fh_expire_type: 0x%08x", expire_type); - expire_type_tree = proto_item_add_subtree(expire_type_item, + expire_type_tree = proto_item_add_subtree(expire_type_item, ett_nfs4_fattr_fh_expire_type); - } if (expire_type_tree) { @@ -7707,15 +7556,16 @@ dissect_nfs4_cb_client4(tvbuff_t *tvb, int offset, proto_tree *tree) { proto_tree *cb_location; proto_item *fitem; - int cbprog; + int cbprog, old_offset; cbprog = tvb_get_ntohl(tvb, offset); reg_callback(cbprog); offset = dissect_rpc_uint32(tvb, tree, hf_nfs4_cb_program, offset); - fitem = proto_tree_add_text(tree, tvb, offset, 0, "cb_location"); + old_offset = offset; + cb_location = proto_tree_add_subtree(tree, tvb, offset, 0, ett_nfs4_clientaddr, &fitem, "cb_location"); - cb_location = proto_item_add_subtree(fitem, ett_nfs4_clientaddr); offset = dissect_nfs4_clientaddr(tvb, offset, cb_location); + proto_item_set_len(fitem, offset - old_offset); return offset; } @@ -7880,13 +7730,11 @@ dissect_nfs4_dirlist(tvbuff_t *tvb, int offset, packet_info *pinfo, guint32 val_follows; guint32 name_len; char *name; - proto_item *ditem; proto_tree *dirlist_tree; proto_item *eitem; proto_tree *entry_tree; - ditem = proto_tree_add_text(tree, tvb, offset, 0, "Directory Listing"); - dirlist_tree = proto_item_add_subtree(ditem, ett_nfs4_dirlist); + dirlist_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_nfs4_dirlist, NULL, "Directory Listing"); while (1) { @@ -7946,13 +7794,14 @@ dissect_nfs4_change_info(tvbuff_t *tvb, int offset, { proto_tree *newftree; proto_tree *fitem; + int old_offset = offset; - fitem = proto_tree_add_text(tree, tvb, offset, 0, "%s", name); - newftree = proto_item_add_subtree(fitem, ett_nfs4_change_info); + newftree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_nfs4_change_info, &fitem, name); offset = dissect_rpc_bool( tvb, newftree, hf_nfs4_change_info_atomic, offset); offset = dissect_rpc_uint64(tvb, newftree, hf_nfs4_changeid_before, offset); offset = dissect_rpc_uint64(tvb, newftree, hf_nfs4_changeid_after, offset); + proto_item_set_len(fitem, offset - old_offset); return offset; } @@ -8018,15 +7867,13 @@ static int dissect_nfs4_stateid(tvbuff_t *tvb, int offset, proto_tree *tree, guint16 *hash) { proto_item *sh_item; - proto_tree *newftree = NULL; + proto_tree *newftree; + proto_item *fitem; guint16 sid_hash; guint8 *sidh_array; + int old_offset = offset; - if (tree) { - proto_item *fitem; - fitem = proto_tree_add_text(tree, tvb, offset, 4, "stateid"); - newftree = proto_item_add_subtree(fitem, ett_nfs4_stateid); - } + newftree = proto_tree_add_subtree(tree, tvb, offset, 4, ett_nfs4_stateid, &fitem, "stateid"); sidh_array = tvb_get_string_enc(NULL, tvb, offset, 16, ENC_ASCII); sid_hash = crc16_ccitt(sidh_array, 16); @@ -8041,6 +7888,8 @@ dissect_nfs4_stateid(tvbuff_t *tvb, int offset, proto_tree *tree, guint16 *hash) if (hash) *hash = sid_hash; + proto_item_set_len(fitem, offset - old_offset); + return offset; } @@ -8075,8 +7924,7 @@ dissect_nfs4_state_protect_bitmap(tvbuff_t *tvb, int offset, proto_tree *tree) { guint32 num_bitmaps; - proto_item *fitem = NULL; - proto_tree *newftree = NULL; + proto_tree *newftree; guint32 *bitmap = NULL; guint32 op; guint32 i; @@ -8090,12 +7938,10 @@ dissect_nfs4_state_protect_bitmap(tvbuff_t *tvb, int offset, THROW(ReportedBoundsError); } tvb_ensure_bytes_exist(tvb, offset, 4 + num_bitmaps * 4); - fitem = proto_tree_add_text(tree, tvb, offset, 4 + num_bitmaps * 4, - "%s", "operation mask"); + newftree = proto_tree_add_subtree(tree, tvb, offset, 4 + num_bitmaps * 4, + ett_nfs4_bitmap, NULL, "operation mask"); offset += 4; - newftree = proto_item_add_subtree(fitem, ett_nfs4_bitmap); - if (num_bitmaps) bitmap = (guint32 *)wmem_alloc(wmem_packet_scope(), num_bitmaps * sizeof(guint32)); @@ -8595,15 +8441,13 @@ dissect_rpc_serverowner4(tvbuff_t *tvb, int offset, proto_tree *tree) static int dissect_rpc_chanattrs4(tvbuff_t *tvb, int offset, proto_tree *tree, const char *name) { - proto_item *chan_attrs_item; proto_tree *chan_attrs_tree; guint i, count, rdma_ird_len; rdma_ird_len = tvb_get_ntohl(tvb, offset + 24); count = 28 + rdma_ird_len * 4; - chan_attrs_item = proto_tree_add_text(tree, tvb, offset, count, name, count); - chan_attrs_tree = proto_item_add_subtree(chan_attrs_item, ett_nfs4_chan_attrs); + chan_attrs_tree = proto_tree_add_subtree(tree, tvb, offset, count, ett_nfs4_chan_attrs, NULL, name); offset = dissect_rpc_uint32(tvb, chan_attrs_tree, hf_nfs4_padsize, offset); offset = dissect_rpc_uint32(tvb, chan_attrs_tree, hf_nfs4_maxreqsize, offset); @@ -8622,24 +8466,20 @@ dissect_rpc_chanattrs4(tvbuff_t *tvb, int offset, proto_tree *tree, const char * static int dissect_rpc_nfs_impl_id4(tvbuff_t *tvb, int offset, proto_tree *tree, const char *name) { - proto_item *impl_id_item; proto_tree *impl_id_tree; guint i, count; count = tvb_get_ntohl(tvb, offset); - impl_id_item = proto_tree_add_text(tree, tvb, offset, 4, name, count); - impl_id_tree = proto_item_add_subtree(impl_id_item, ett_nfs4_clientowner); + impl_id_tree = proto_tree_add_subtree(tree, tvb, offset, 4, ett_nfs4_clientowner, NULL, name); offset += 4; for (i = 0; i < count; i++) { - proto_item *date_item; proto_tree *date_tree; offset = dissect_nfs_utf8string(tvb, offset, impl_id_tree, hf_nfs4_nii_domain, NULL); offset = dissect_nfs_utf8string(tvb, offset, impl_id_tree, hf_nfs4_nii_name, NULL); - date_item = proto_tree_add_text(impl_id_tree, tvb, offset, 12, "Build timestamp(nii_date)"); - date_tree = proto_item_add_subtree(date_item, ett_nfs4_clientowner); + date_tree = proto_tree_add_subtree(impl_id_tree, tvb, offset, 12, ett_nfs4_clientowner, NULL, "Build timestamp(nii_date)"); offset = dissect_nfs4_nfstime(tvb, offset, date_tree); } return offset; @@ -8694,18 +8534,15 @@ dissect_nfs4_layout(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *t guint fh_num; guint lo_seg_count; guint i, lo_seg; - proto_item *fitem; - proto_item *fh_fitem; proto_tree *newtree; proto_tree *fh_tree; lo_seg_count = tvb_get_ntohl(tvb, offset); - fitem = proto_tree_add_text(tree, tvb, offset, 4, "Layout Segment (count: %u)", lo_seg_count); + newtree = proto_tree_add_subtree_format(tree, tvb, offset, 4, ett_nfs4_layoutseg, NULL, + "Layout Segment (count: %u)", lo_seg_count); offset += 4; - newtree = proto_item_add_subtree(fitem, ett_nfs4_layoutseg); - for (lo_seg = 0; lo_seg < lo_seg_count; lo_seg++) { offset = dissect_rpc_uint64(tvb, newtree, hf_nfs4_offset, offset); offset = dissect_rpc_uint64(tvb, newtree, hf_nfs4_length, offset); @@ -8732,10 +8569,10 @@ dissect_nfs4_layout(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *t fh_num = tvb_get_ntohl(tvb, offset); /* Len of FH list */ - fh_fitem = proto_tree_add_text(newtree, tvb, offset, 4, "File Handles (count: %u)", fh_num); + fh_tree = proto_tree_add_subtree_format(newtree, tvb, offset, 4, + ett_nfs4_layoutseg_fh, NULL, "File Handles (count: %u)", fh_num); offset += 4; - fh_tree = proto_item_add_subtree(fh_fitem, ett_nfs4_layoutseg_fh); for (i = 0; i < fh_num; i++) offset = dissect_nfs4_fh(tvb, offset, pinfo, fh_tree, "lo_filehandle", NULL, civ); } @@ -8918,8 +8755,8 @@ dissect_nfs4_request_op(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tre guint32 length; guint64 lock_length; guint64 file_offset; - proto_item *fitem = NULL; - proto_tree *ftree = NULL; + proto_item *fitem; + proto_tree *ftree; proto_tree *newftree = NULL; nfs4_operation_summary *op_summary; @@ -8941,9 +8778,7 @@ dissect_nfs4_request_op(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tre op_summary = wmem_alloc0_array(wmem_packet_scope(), nfs4_operation_summary, ops); - if (fitem) { - ftree = proto_item_add_subtree(fitem, ett_nfs4_request_op); - } + ftree = proto_item_add_subtree(fitem, ett_nfs4_request_op); if (ops) proto_item_append_text(proto_tree_get_parent(tree), ", Ops(%d):", ops); @@ -9267,15 +9102,11 @@ dissect_nfs4_request_op(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tre proto_tree *client_tree = NULL; proto_tree *callback_tree = NULL; - fitem = proto_tree_add_text(newftree, tvb, offset, 0, "client"); - - client_tree = proto_item_add_subtree(fitem, ett_nfs4_client_id); + client_tree = proto_tree_add_subtree(newftree, tvb, offset, 0, ett_nfs4_client_id, NULL, "client"); offset = dissect_nfs4_client_id(tvb, offset, client_tree); - fitem = proto_tree_add_text(newftree, tvb, offset, 0, "callback"); - callback_tree = proto_item_add_subtree(fitem, - ett_nfs4_cb_client); + callback_tree = proto_tree_add_subtree(newftree, tvb, offset, 0, ett_nfs4_cb_client, NULL, "callback"); offset = dissect_nfs4_cb_client4(tvb, offset, callback_tree); @@ -9324,11 +9155,10 @@ dissect_nfs4_request_op(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tre case NFS4_OP_EXCHANGE_ID: { - proto_tree *eia_clientowner_tree = NULL; + proto_tree *eia_clientowner_tree; proto_tree *eia_flags_tree = NULL; - fitem = proto_tree_add_text(newftree, tvb, offset, 0, "eia_clientowner"); - eia_clientowner_tree = proto_item_add_subtree(fitem, ett_nfs4_clientowner); + eia_clientowner_tree = proto_tree_add_subtree(newftree, tvb, offset, 0, ett_nfs4_clientowner, NULL, "eia_clientowner"); offset = dissect_rpc_uint64(tvb, eia_clientowner_tree, hf_nfs4_verifier, offset); offset = dissect_nfsdata(tvb, offset, eia_clientowner_tree, hf_nfs_data); @@ -9564,9 +9394,7 @@ dissect_nfs4_response_op(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tr op_summary = wmem_alloc0_array(wmem_packet_scope(), nfs4_operation_summary, ops); - if (fitem) { - ftree = proto_item_add_subtree(fitem, ett_nfs4_response_op); - } + ftree = proto_item_add_subtree(fitem, ett_nfs4_response_op); proto_item_append_text(tree, ", Ops(%d):", ops); @@ -9773,8 +9601,7 @@ dissect_nfs4_response_op(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tr offset = dissect_nfs4_state_protect_r(tvb, offset, newftree); - fitem = proto_tree_add_text(newftree, tvb, offset, 0, "eir_server_owner"); - eir_server_owner_tree = proto_item_add_subtree(fitem, ett_nfs4_server_owner); + eir_server_owner_tree = proto_tree_add_subtree(newftree, tvb, offset, 0, ett_nfs4_server_owner, NULL, "eir_server_owner"); offset = dissect_rpc_serverowner4(tvb, offset, eir_server_owner_tree); offset = dissect_nfsdata(tvb, offset, newftree, hf_nfs4_serverscope4); offset = dissect_rpc_nfs_impl_id4(tvb, offset, newftree, "eir_server_impl_id"); @@ -10282,26 +10109,20 @@ static int dissect_nfs4_cb_referring_calls(tvbuff_t *tvb, int offset, proto_tree *tree) { guint num_reflists, num_refcalls, i, j; - proto_item *rl_item, *rc_item; proto_tree *rl_tree, *rc_tree; num_reflists = tvb_get_ntohl(tvb, offset); - rl_item = proto_tree_add_text(tree, tvb, offset, 4, - "referring call lists (count: %u)", num_reflists); + rl_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4, + ett_nfs4_cb_reflists, NULL, "referring call lists (count: %u)", num_reflists); offset += 4; - if (num_reflists == 0) - return offset; - - rl_tree = proto_item_add_subtree(rl_item, ett_nfs4_cb_reflists); for (i = 0; i < num_reflists; i++) { offset = dissect_nfs4_sessionid(tvb, offset, rl_tree); num_refcalls = tvb_get_ntohl(tvb, offset); - rc_item = proto_tree_add_text(rl_tree, tvb, offset, 4, - "referring calls (count: %u)", num_refcalls); + rc_tree = proto_tree_add_subtree_format(rl_tree, tvb, offset, 4, + ett_nfs4_cb_refcalls, NULL, "referring calls (count: %u)", num_refcalls); offset += 4; for (j = 0; j < num_refcalls; j++) { - rc_tree = proto_item_add_subtree(rc_item, ett_nfs4_cb_refcalls); offset = dissect_rpc_uint32(tvb, rc_tree, hf_nfs4_seqid, offset); offset = dissect_rpc_uint32(tvb, rc_tree, hf_nfs4_slotid, offset); } @@ -10342,17 +10163,14 @@ dissect_nfs4_cb_request(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tre guint32 ops, ops_counter; guint opcode; proto_item *fitem; - proto_tree *ftree = NULL; + proto_tree *ftree; proto_tree *newftree = NULL; ops = tvb_get_ntohl(tvb, offset+0); - fitem = proto_tree_add_text(tree, tvb, offset, 4, "Operations (count: %u)", ops); + ftree = proto_tree_add_subtree_format(tree, tvb, offset, 4, ett_nfs4_cb_request_op, NULL, "Operations (count: %u)", ops); offset += 4; - if (fitem) - ftree = proto_item_add_subtree(fitem, ett_nfs4_cb_request_op); - for (ops_counter=0; ops_counterar_pktsz = tvb_get_ntohs(tvb, 10); if (total_len > hdr->ar_pktsz) { @@ -472,8 +470,7 @@ static void dissect_cie_list(tvbuff_t *tvb, guint cli_saddr_len = tvb_get_guint8(tvb, offset + 9); guint cli_prot_len = tvb_get_guint8(tvb, offset + 10); guint cie_len = 12 + cli_addr_len + cli_saddr_len + cli_prot_len; - proto_item *cie_tree_item = proto_tree_add_text(tree, tvb, offset, cie_len, "Client Information Entry"); - proto_tree *cie_tree = proto_item_add_subtree(cie_tree_item, ett_nhrp_cie); + proto_tree *cie_tree = proto_tree_add_subtree(tree, tvb, offset, cie_len, ett_nhrp_cie, NULL, "Client Information Entry"); if (isReq) { proto_tree_add_item(cie_tree, hf_nhrp_code, tvb, offset, 1, ENC_BIG_ENDIAN); @@ -587,7 +584,6 @@ static void dissect_nhrp_mand(tvbuff_t *tvb, gboolean isErr = FALSE; gboolean isInd = FALSE; - proto_item *nhrp_tree_item; proto_tree *nhrp_tree; tvb_ensure_bytes_exist(tvb, offset, mandLen); @@ -611,8 +607,7 @@ static void dissect_nhrp_mand(tvbuff_t *tvb, isInd = TRUE; break; } - nhrp_tree_item = proto_tree_add_text(tree, tvb, offset, mandLen, "NHRP Mandatory Part"); - nhrp_tree = proto_item_add_subtree(nhrp_tree_item, ett_nhrp_mand); + nhrp_tree = proto_tree_add_subtree(tree, tvb, offset, mandLen, ett_nhrp_mand, NULL, "NHRP Mandatory Part"); *srcLen = tvb_get_guint8(tvb, offset); proto_tree_add_item(nhrp_tree, hf_nhrp_src_proto_len, tvb, offset, 1, ENC_BIG_ENDIAN); @@ -728,8 +723,7 @@ static void dissect_nhrp_mand(tvbuff_t *tvb, if (isInd) { gboolean save_in_error_pkt; gint pkt_len = mandEnd - offset; - proto_item *ind_tree_item = proto_tree_add_text(tree, tvb, offset, pkt_len, "Packet Causing Indication"); - proto_tree *ind_tree = proto_item_add_subtree(ind_tree_item, ett_nhrp_indication); + proto_tree *ind_tree = proto_tree_add_subtree(tree, tvb, offset, pkt_len, ett_nhrp_indication, NULL, "Packet Causing Indication"); gboolean dissected; tvbuff_t *sub_tvb; @@ -837,7 +831,6 @@ static void dissect_nhrp_ext(tvbuff_t *tvb, while ((offset + 4) <= extEnd) { - proto_item *nhrp_tree_item; proto_tree *nhrp_tree; gint extTypeC = tvb_get_ntohs(tvb, offset); gint extType = extTypeC & 0x3FFF; @@ -846,15 +839,14 @@ static void dissect_nhrp_ext(tvbuff_t *tvb, if ((extType == NHRP_EXT_NAT_ADDRESS) && (len == 8)) { /* Assume it's not really a Cisco NAT extension, but a device * capabilities extension instead (see RFC 2735). */ - nhrp_tree_item = proto_tree_add_text(tree, tvb, offset, - len + 4, "Device Capabilities Extension"); + nhrp_tree = proto_tree_add_subtree(tree, tvb, offset, + len + 4, ett_nhrp_ext, NULL, "Device Capabilities Extension"); } else { - nhrp_tree_item = proto_tree_add_text(tree, tvb, offset, - len + 4, "%s", + nhrp_tree = proto_tree_add_subtree(tree, tvb, offset, + len + 4, ett_nhrp_ext, NULL, val_to_str(extType, ext_type_vals, "Unknown (%u)")); } - nhrp_tree = proto_item_add_subtree(nhrp_tree_item, ett_nhrp_ext); proto_tree_add_boolean(nhrp_tree, hf_nhrp_ext_C, tvb, offset, 2, extTypeC); proto_tree_add_item(nhrp_tree, hf_nhrp_ext_type, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2; @@ -867,16 +859,14 @@ static void dissect_nhrp_ext(tvbuff_t *tvb, if ((extType == NHRP_EXT_NAT_ADDRESS) && (len == 8)) { /* Assume it's not really a Cisco NAT extension, but a device * capabilities extension instead (see RFC 2735). */ - proto_item *devcap_item; proto_tree *devcap_tree; proto_item *cap_item; proto_tree *cap_tree; - devcap_item = proto_tree_add_text(nhrp_tree, tvb, offset, len, - "Extension Data: Src is %sVPN-aware; Dst is %sVPN-aware", + devcap_tree = proto_tree_add_subtree_format(nhrp_tree, tvb, offset, len, + ett_nhrp_devcap_ext, NULL, "Extension Data: Src is %sVPN-aware; Dst is %sVPN-aware", tvb_get_ntohl(tvb, offset) & 1 ? "" : "non-", tvb_get_ntohl(tvb, offset + 4) & 1 ? "" : "non-"); - devcap_tree = proto_item_add_subtree(devcap_item, ett_nhrp_devcap_ext); cap_item = proto_tree_add_item(devcap_tree, hf_nhrp_devcap_ext_srccap, tvb, offset, 4, ENC_BIG_ENDIAN); cap_tree = proto_item_add_subtree(cap_item, ett_nhrp_devcap_ext_srccap); proto_tree_add_item(cap_tree, hf_nhrp_devcap_ext_srccap_V, tvb, offset, 4, ENC_BIG_ENDIAN); @@ -905,13 +895,11 @@ static void dissect_nhrp_ext(tvbuff_t *tvb, expert_add_info_format(pinfo, ti, &ei_nhrp_ext_malformed, "Incomplete Authentication Extension"); } else { - proto_item *auth_item; proto_tree *auth_tree; - auth_item = proto_tree_add_text(nhrp_tree, tvb, offset, len, - "Extension Data: SPI=%u: Data=%s", tvb_get_ntohs(tvb, offset + 2), + auth_tree = proto_tree_add_subtree_format(nhrp_tree, tvb, offset, len, + ett_nhrp_auth_ext, NULL, "Extension Data: SPI=%u: Data=%s", tvb_get_ntohs(tvb, offset + 2), tvb_bytes_to_ep_str(tvb, offset + 4, len - 4)); - auth_tree = proto_item_add_subtree(auth_item, ett_nhrp_auth_ext); proto_tree_add_item(auth_tree, hf_nhrp_auth_ext_reserved, tvb, offset, 2, ENC_BIG_ENDIAN); proto_tree_add_item(auth_tree, hf_nhrp_auth_ext_spi, tvb, offset + 2, 2, ENC_BIG_ENDIAN); if (srcLen == 4) @@ -936,15 +924,13 @@ static void dissect_nhrp_ext(tvbuff_t *tvb, expert_add_info_format(pinfo, ti, &ei_nhrp_ext_malformed, "Incomplete Vendor-Private Extension"); } else { - proto_item *vendor_item; proto_tree *vendor_tree; gchar manuf[3]; tvb_memcpy(tvb, manuf, offset, 3); - vendor_item = proto_tree_add_text(nhrp_tree, tvb, offset, len, - "Extension Data: Vendor ID=%s, Data=%s", get_manuf_name(manuf), + vendor_tree = proto_tree_add_subtree_format(nhrp_tree, tvb, offset, len, + ett_nhrp_vendor_ext, NULL, "Extension Data: Vendor ID=%s, Data=%s", get_manuf_name(manuf), tvb_bytes_to_ep_str(tvb, offset + 3, len - 3)); - vendor_tree = proto_item_add_subtree(vendor_item, ett_nhrp_vendor_ext); proto_tree_add_bytes_format_value(vendor_tree, hf_nhrp_vendor_ext_id, tvb, offset, 3, manuf, "%s", get_manuf_name(manuf)); if (len > 3) { diff --git a/epan/dissectors/packet-nlsp.c b/epan/dissectors/packet-nlsp.c index 00585a1c72..bfe0b7b0ec 100644 --- a/epan/dissectors/packet-nlsp.c +++ b/epan/dissectors/packet-nlsp.c @@ -191,7 +191,6 @@ nlsp_dissect_clvs(tvbuff_t *tvb, proto_tree *tree, int offset, guint8 code; guint8 length; int q; - proto_item *ti; proto_tree *clv_tree; while ( len > 0 ) { @@ -218,34 +217,16 @@ nlsp_dissect_clvs(tvbuff_t *tvb, proto_tree *tree, int offset, 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, clv_tree, offset, length); } else { - if (tree) { -#if 0 /* XXX: ?? */ - ti = proto_tree_add_text(tree, tvb, offset - 2, + proto_tree_add_text(tree, tvb, offset - 2, length + 2, "Unknown code %u (%u)", code, length); - clv_tree = proto_item_add_subtree(ti, - unknown_tree_id ); - } else { - clv_tree = NULL; -#else - proto_tree_add_text(tree, tvb, offset - 2, - length + 2, "Unknown code %u (%u)", - code, length); -#endif - } } offset += length; len -= length; @@ -1104,7 +1085,7 @@ static void dissect_csnp_lsp_entries(tvbuff_t *tvb, proto_tree *tree, int offset, int length) { - proto_tree *subtree,*ti; + proto_tree *subtree; while (length > 0) { if (length < 16) { @@ -1113,15 +1094,13 @@ dissect_csnp_lsp_entries(tvbuff_t *tvb, proto_tree *tree, int offset, return; } - ti = proto_tree_add_text(tree, tvb, offset, 16, - "LSP-ID: %s, Sequence: 0x%08x, Lifetime: %5us, Checksum: 0x%04x", + subtree = proto_tree_add_subtree_format(tree, tvb, offset, 16, + ett_nlsp_csnp_lsp_entry, NULL, "LSP-ID: %s, Sequence: 0x%08x, Lifetime: %5us, Checksum: 0x%04x", tvb_ether_to_str(tvb, offset+2), /* XXX - rest of system ID */ tvb_get_ntohl(tvb, offset+10), tvb_get_ntohs(tvb, offset), tvb_get_ntohs(tvb, offset+14)); - subtree = proto_item_add_subtree(ti, ett_nlsp_csnp_lsp_entry); - proto_tree_add_text(subtree, tvb, offset+2, 6, "LSP ID source ID: %s", tvb_ether_to_str(tvb, offset+2)); @@ -1153,7 +1132,7 @@ static void dissect_psnp_lsp_entries(tvbuff_t *tvb, proto_tree *tree, int offset, int length) { - proto_tree *subtree,*ti; + proto_tree *subtree; while (length > 0) { if (length < 16) { @@ -1162,15 +1141,13 @@ dissect_psnp_lsp_entries(tvbuff_t *tvb, proto_tree *tree, int offset, return; } - ti = proto_tree_add_text(tree, tvb, offset, 16, - "LSP-ID: %s, Sequence: 0x%08x, Lifetime: %5us, Checksum: 0x%04x", + subtree = proto_tree_add_subtree_format(tree, tvb, offset, 16, + ett_nlsp_psnp_lsp_entry, NULL, "LSP-ID: %s, Sequence: 0x%08x, Lifetime: %5us, Checksum: 0x%04x", tvb_ether_to_str(tvb, offset+2), /* XXX - rest of system ID */ tvb_get_ntohl(tvb, offset+10), tvb_get_ntohs(tvb, offset), tvb_get_ntohs(tvb, offset+14)); - subtree = proto_item_add_subtree(ti, ett_nlsp_psnp_lsp_entry); - proto_tree_add_text(subtree, tvb, offset+2, 6, "LSP ID source ID: %s", tvb_ether_to_str(tvb, offset+2)); diff --git a/epan/dissectors/packet-noe.c b/epan/dissectors/packet-noe.c index ffd8b96e45..ad695f20e5 100644 --- a/epan/dissectors/packet-noe.c +++ b/epan/dissectors/packet-noe.c @@ -938,19 +938,17 @@ static void decode_tlv(proto_tree *tree, guint offset, guint length) { - proto_item *property_item; proto_tree *property_tree; guint8 property_type; guint16 property_length; /* guint64 property_index;*/ /* add text to the frame tree */ - property_item = proto_tree_add_text(tree, + property_tree = proto_tree_add_subtree(tree, tvb, offset, - length, + length, ett_body, NULL, "NOE Message Body"); - property_tree = proto_item_add_subtree(property_item, ett_body); while(length > 0) { @@ -961,7 +959,7 @@ static void decode_tlv(proto_tree *tree, if (property_type >= P_ARRAY) { - proto_tree_add_item(property_item, hf_noe_aindx, tvb, offset, 1, ENC_NA); + proto_tree_add_item(property_tree, hf_noe_aindx, tvb, offset, 1, ENC_NA); offset += 1; length -= 1; } @@ -1030,17 +1028,15 @@ static void decode_getproperty_tlv(proto_tree *tree, guint offset, guint length) { - proto_item *body_item; proto_tree *body_tree; guint8 body_type; /* add text to the frame tree */ - body_item = proto_tree_add_text(tree, + body_tree = proto_tree_add_subtree(tree, tvb, offset, - length, + length, ett_property, NULL, "NOE Message Body"); - body_tree = proto_item_add_subtree(body_item, ett_property); while(length > 0) { @@ -1052,7 +1048,7 @@ static void decode_getproperty_tlv(proto_tree *tree, if (body_type >= P_ARRAY) { - proto_tree_add_item(body_item, hf_noe_aindx, tvb, offset, 1, ENC_NA); + proto_tree_add_item(body_tree, hf_noe_aindx, tvb, offset, 1, ENC_NA); offset += 1; length -= 1; } diff --git a/epan/dissectors/packet-nsip.c b/epan/dissectors/packet-nsip.c index 928c0d4f5f..88377863c8 100644 --- a/epan/dissectors/packet-nsip.c +++ b/epan/dissectors/packet-nsip.c @@ -383,13 +383,12 @@ decode_ip_element(nsip_ip_element_info_t *element, build_info_t *bi, proto_tree guint16 udp_port; guint32 ip4_addr; struct e_in6_addr ip6_addr; - proto_item *tf = NULL; - proto_tree *field_tree = NULL; + proto_item *tf; + proto_tree *field_tree; + field_tree = proto_tree_add_subtree(element_tree, bi->tvb, bi->offset, + element->total_length, ett_nsip_ip_element, &tf, "IP Element"); if (bi->nsip_tree) { - tf = proto_tree_add_text(element_tree, bi->tvb, bi->offset, - element->total_length, "IP Element"); - field_tree = proto_item_add_subtree(tf, ett_nsip_ip_element); /* IP address */ switch (element->version) { @@ -448,11 +447,10 @@ decode_ip_elements(nsip_ip_element_info_t *element, nsip_ie_t *ie, build_info_t proto_item *tf; proto_tree *field_tree; - tf = proto_tree_add_text(bi->nsip_tree, bi->tvb, ie_start_offset, - ie->total_length, + field_tree = proto_tree_add_subtree_format(bi->nsip_tree, bi->tvb, ie_start_offset, + ie->total_length, ett_nsip_ip_element_list, &tf, "List of IP%u Elements (%u Elements)", element->version, num_elements); - field_tree = proto_item_add_subtree(tf, ett_nsip_ip_element_list); for (i = 0; i < num_elements; i++) { decode_ip_element(element, bi, field_tree); @@ -505,17 +503,15 @@ decode_iei_num_ip6_endpoints(nsip_ie_t *ie, build_info_t *bi, int ie_start_offse static void decode_iei_reset_flag(nsip_ie_t *ie, build_info_t *bi, int ie_start_offset) { guint8 flag; - proto_item *tf; proto_tree *field_tree; flag = tvb_get_guint8(bi->tvb, bi->offset); if (bi->nsip_tree) { - tf = proto_tree_add_text(bi->nsip_tree, bi->tvb, ie_start_offset, - ie->total_length, + field_tree = proto_tree_add_subtree_format(bi->nsip_tree, bi->tvb, ie_start_offset, + ie->total_length, ett_nsip_reset_flag, NULL, "Reset Flag: %#02x", flag); - field_tree = proto_item_add_subtree(tf, ett_nsip_reset_flag); proto_tree_add_boolean(field_tree, hf_nsip_reset_flag, bi->tvb, bi->offset, 1, flag & NSIP_MASK_RESET_FLAG); @@ -575,17 +571,15 @@ decode_iei_transaction_id(nsip_ie_t *ie, build_info_t *bi, int ie_start_offset) static void decode_iei_end_flag(nsip_ie_t *ie, build_info_t *bi, int ie_start_offset) { guint8 flag; - proto_item *tf; proto_tree *field_tree; if (bi->nsip_tree) { flag = tvb_get_guint8(bi->tvb, bi->offset); - tf = proto_tree_add_text(bi->nsip_tree, bi->tvb, ie_start_offset, - ie->total_length, + field_tree = proto_tree_add_subtree_format(bi->nsip_tree, bi->tvb, ie_start_offset, + ie->total_length, ett_nsip_end_flag, NULL, "End Flag: %#02x", flag); - field_tree = proto_item_add_subtree(tf, ett_nsip_end_flag); proto_tree_add_boolean(field_tree, hf_nsip_end_flag, bi->tvb, bi->offset, 1, flag & NSIP_MASK_END_FLAG); @@ -602,17 +596,15 @@ decode_iei_end_flag(nsip_ie_t *ie, build_info_t *bi, int ie_start_offset) { static void decode_iei_control_bits(nsip_ie_t *ie, build_info_t *bi, int ie_start_offset) { guint8 control_bits; - proto_item *tf; proto_tree *field_tree; control_bits = tvb_get_guint8(bi->tvb, bi->offset); if (bi->nsip_tree) { - tf = proto_tree_add_text(bi->nsip_tree, bi->tvb, ie_start_offset, - ie->total_length, + field_tree = proto_tree_add_subtree_format(bi->nsip_tree, bi->tvb, ie_start_offset, + ie->total_length, ett_nsip_control_bits, NULL, "NS SDU Control bits: %#02x", control_bits); - field_tree = proto_item_add_subtree(tf, ett_nsip_control_bits); proto_tree_add_boolean(field_tree, hf_nsip_control_bits_r, bi->tvb, bi->offset, 1, control_bits & NSIP_MASK_CONTROL_BITS_R); diff --git a/epan/dissectors/packet-nstrace.c b/epan/dissectors/packet-nstrace.c index f8b92b8a88..ca0daa24b8 100644 --- a/epan/dissectors/packet-nstrace.c +++ b/epan/dissectors/packet-nstrace.c @@ -157,7 +157,6 @@ dissect_nstrace(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) guint8 flagoffset, flagval; guint8 src_vmname_len = 0, dst_vmname_len = 0; guint8 variable_ns_len = 0; - guint flagval32; wmem_strbuf_append(flags_strbuf, "None"); @@ -179,9 +178,7 @@ dissect_nstrace(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) case NSPR_HEADER_VERSION300: case NSPR_HEADER_VERSION206: flagoffset = pnstr->ns_activity_offset; - flagval32 = tvb_get_letohl(tvb, flagoffset); - flagitem = proto_tree_add_uint_format(ns_tree, hf_ns_activity, tvb, flagoffset, 4, flagval32, - "Activity Flags: 0x%04x", flagval32); + flagitem = proto_tree_add_item(ns_tree, hf_ns_activity, tvb, flagoffset, 4, ENC_LITTLE_ENDIAN); flagtree = proto_item_add_subtree(flagitem, ett_ns_activity_flags); proto_tree_add_item(flagtree, hf_ns_activity_perf_collection, tvb, flagoffset, 4, ENC_LITTLE_ENDIAN); proto_tree_add_item(flagtree, hf_ns_activity_pcb_zombie, tvb, flagoffset, 4, ENC_LITTLE_ENDIAN); @@ -374,7 +371,7 @@ proto_register_ns(void) }, { &hf_ns_activity, - { "NetScaler Activity", "nstrace.activity", + { "Activity Flags", "nstrace.activity", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL} }, diff --git a/epan/dissectors/packet-ntlmssp.c b/epan/dissectors/packet-ntlmssp.c index 1e7d154e31..726ed3dde9 100644 --- a/epan/dissectors/packet-ntlmssp.c +++ b/epan/dissectors/packet-ntlmssp.c @@ -1295,10 +1295,9 @@ dissect_ntlmssp_target_info_list(tvbuff_t *tvb, packet_info *pinfo, proto_tree * content_offset = len_offset + 2; item_length = content_length + 4; - target_info_tf = proto_tree_add_text(tree, tvb, item_offset, item_length, "Attribute: %s", - val_to_str_ext(item_type, &ntlm_name_types_ext, "Unknown (%d)")); + target_info_tree = proto_tree_add_subtree_format(tree, tvb, item_offset, item_length, *tif_p->ett, &target_info_tf, + "Attribute: %s", val_to_str_ext(item_type, &ntlm_name_types_ext, "Unknown (%d)")); - target_info_tree = proto_item_add_subtree (target_info_tf, *tif_p->ett); proto_tree_add_item (target_info_tree, *tif_p->hf_item_type, tvb, type_offset, 2, ENC_LITTLE_ENDIAN); proto_tree_add_item (target_info_tree, *tif_p->hf_item_length, tvb, len_offset, 2, ENC_LITTLE_ENDIAN); @@ -2241,7 +2240,6 @@ decrypt_verifier(tvbuff_t *tvb, int offset, guint32 encrypted_block_length, packet_info *pinfo, proto_tree *tree, gpointer key) { proto_tree *decr_tree; - proto_item *tf; conversation_t *conversation; guint8* sign_key; rc4_state_struct *rc4_state; @@ -2368,11 +2366,11 @@ decrypt_verifier(tvbuff_t *tvb, int offset, guint32 encrypted_block_length, "Decrypted NTLMSSP Verifier"); /* Show the decrypted payload in the tree */ - tf = proto_tree_add_text(tree, decr_tvb, 0, -1, + decr_tree = proto_tree_add_subtree_format(tree, decr_tvb, 0, -1, + ett_ntlmssp, NULL, "Decrypted Verifier (%d byte%s)", encrypted_block_length, plurality(encrypted_block_length, "", "s")); - decr_tree = proto_item_add_subtree (tf, ett_ntlmssp); if (( conv_ntlmssp_info->flags & NTLMSSP_NEGOTIATE_EXTENDED_SECURITY)) { proto_tree_add_item (decr_tree, hf_ntlmssp_verf_hmacmd5, -- cgit v1.2.3