diff options
author | Gilbert Ramirez <gram@alumni.rice.edu> | 1999-07-07 22:52:57 +0000 |
---|---|---|
committer | Gilbert Ramirez <gram@alumni.rice.edu> | 1999-07-07 22:52:57 +0000 |
commit | 07f42b5b31f9523deeb147226521f77a2c8dd797 (patch) | |
tree | c720d2a42f11c9d14ac1a161eb785b438c2c4b14 /packet-nbns.c | |
parent | fba49cfe85d4b23ebbffa97fae126a379e913ecd (diff) | |
download | wireshark-07f42b5b31f9523deeb147226521f77a2c8dd797.tar.gz wireshark-07f42b5b31f9523deeb147226521f77a2c8dd797.tar.bz2 wireshark-07f42b5b31f9523deeb147226521f77a2c8dd797.zip |
Created a new protocol tree implementation and a new display filter
mechanism that is built into ethereal. Wiretap is now used to read all
file formats. Libpcap is used only for capturing.
svn path=/trunk/; revision=342
Diffstat (limited to 'packet-nbns.c')
-rw-r--r-- | packet-nbns.c | 238 |
1 files changed, 114 insertions, 124 deletions
diff --git a/packet-nbns.c b/packet-nbns.c index 0bf84e3ff8..c44de19a97 100644 --- a/packet-nbns.c +++ b/packet-nbns.c @@ -4,7 +4,7 @@ * Gilbert Ramirez <gram@verdict.uthscsa.edu> * Much stuff added by Guy Harris <guy@netapp.com> * - * $Id: packet-nbns.c,v 1.21 1999/06/01 20:40:34 guy Exp $ + * $Id: packet-nbns.c,v 1.22 1999/07/07 22:51:47 gram Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@zing.org> @@ -303,18 +303,17 @@ dissect_nbns_query(const u_char *nbns_data_ptr, const u_char *pd, int offset, type_name = nbns_type_name(type); class_name = dns_class_name(class); - tq = proto_tree_add_item(nbns_tree, offset, len, "%s: type %s, class %s", + tq = proto_tree_add_text(nbns_tree, offset, len, "%s: type %s, class %s", name, type_name, class_name); - q_tree = proto_tree_new(); - proto_item_add_subtree(tq, q_tree, ETT_NBNS_QD); + q_tree = proto_item_add_subtree(tq, ETT_NBNS_QD); - proto_tree_add_item(q_tree, offset, name_len, "Name: %s", name); + proto_tree_add_text(q_tree, offset, name_len, "Name: %s", name); offset += name_len; - proto_tree_add_item(q_tree, offset, 2, "Type: %s", type_name); + proto_tree_add_text(q_tree, offset, 2, "Type: %s", type_name); offset += 2; - proto_tree_add_item(q_tree, offset, 2, "Class: %s", class_name); + proto_tree_add_text(q_tree, offset, 2, "Class: %s", class_name); offset += 2; return dptr - data_start; @@ -347,49 +346,48 @@ nbns_add_nbns_flags(proto_tree *nbns_tree, int offset, u_short flags, strcat(buf, val_to_str(flags & F_RCODE, rcode_vals, "Unknown error")); } - tf = proto_tree_add_item(nbns_tree, offset, 2, + tf = proto_tree_add_text(nbns_tree, offset, 2, "Flags: 0x%04x (%s)", flags, buf); - field_tree = proto_tree_new(); - proto_item_add_subtree(tf, field_tree, ETT_NBNS_FLAGS); - proto_tree_add_item(field_tree, offset, 2, "%s", + field_tree = proto_item_add_subtree(tf, ETT_NBNS_FLAGS); + proto_tree_add_text(field_tree, offset, 2, "%s", decode_boolean_bitfield(flags, F_RESPONSE, 2*8, "Response", "Query")); - proto_tree_add_item(field_tree, offset, 2, "%s", + proto_tree_add_text(field_tree, offset, 2, "%s", decode_enumerated_bitfield(flags, F_OPCODE, 2*8, opcode_vals, "%s")); if (flags & F_RESPONSE) { - proto_tree_add_item(field_tree, offset, 2, + proto_tree_add_text(field_tree, offset, 2, "%s", decode_boolean_bitfield(flags, F_AUTHORITATIVE, 2*8, "Server is an authority for domain", "Server isn't an authority for domain")); } - proto_tree_add_item(field_tree, offset, 2, "%s", + proto_tree_add_text(field_tree, offset, 2, "%s", decode_boolean_bitfield(flags, F_TRUNCATED, 2*8, "Message is truncated", "Message is not truncated")); - proto_tree_add_item(field_tree, offset, 2, "%s", + proto_tree_add_text(field_tree, offset, 2, "%s", decode_boolean_bitfield(flags, F_RECDESIRED, 2*8, "Do query recursively", "Don't do query recursively")); if (flags & F_RESPONSE) { - proto_tree_add_item(field_tree, offset, 2, + proto_tree_add_text(field_tree, offset, 2, "%s", decode_boolean_bitfield(flags, F_RECAVAIL, 2*8, "Server can do recursive queries", "Server can't do recursive queries")); } - proto_tree_add_item(field_tree, offset, 2, "%s", + proto_tree_add_text(field_tree, offset, 2, "%s", decode_boolean_bitfield(flags, F_BROADCAST, 2*8, "Broadcast packet", "Not a broadcast packet")); if (flags & F_RESPONSE && !is_wack) { - proto_tree_add_item(field_tree, offset, 2, + proto_tree_add_text(field_tree, offset, 2, "%s", decode_enumerated_bitfield(flags, F_RCODE, 2*8, @@ -418,16 +416,15 @@ nbns_add_nb_flags(proto_tree *rr_tree, int offset, u_short flags) strcat(buf, "group"); else strcat(buf, "unique"); - tf = proto_tree_add_item(rr_tree, offset, 2, "Flags: 0x%x (%s)", flags, + tf = proto_tree_add_text(rr_tree, offset, 2, "Flags: 0x%x (%s)", flags, buf); - field_tree = proto_tree_new(); - proto_item_add_subtree(tf, field_tree, ETT_NBNS_NB_FLAGS); - proto_tree_add_item(field_tree, offset, 2, "%s", + field_tree = proto_item_add_subtree(tf, ETT_NBNS_NB_FLAGS); + proto_tree_add_text(field_tree, offset, 2, "%s", decode_boolean_bitfield(flags, NB_FLAGS_G, 2*8, "Group name", "Unique name")); - proto_tree_add_item(field_tree, offset, 2, "%s", + proto_tree_add_text(field_tree, offset, 2, "%s", decode_enumerated_bitfield(flags, NB_FLAGS_ONT, 2*8, nb_flags_ont_vals, "%s")); } @@ -460,34 +457,33 @@ nbns_add_name_flags(proto_tree *rr_tree, int offset, u_short flags) strcat(buf, ", active"); if (flags & NAME_FLAGS_PRM) strcat(buf, ", permanent node name"); - tf = proto_tree_add_item(rr_tree, offset, 2, "Name flags: 0x%x (%s)", + tf = proto_tree_add_text(rr_tree, offset, 2, "Name flags: 0x%x (%s)", flags, buf); - field_tree = proto_tree_new(); - proto_item_add_subtree(tf, field_tree, ETT_NBNS_NAME_FLAGS); - proto_tree_add_item(field_tree, offset, 2, "%s", + field_tree = proto_item_add_subtree(tf, ETT_NBNS_NAME_FLAGS); + proto_tree_add_text(field_tree, offset, 2, "%s", decode_boolean_bitfield(flags, NAME_FLAGS_G, 2*8, "Group name", "Unique name")); - proto_tree_add_item(field_tree, offset, 2, "%s", + proto_tree_add_text(field_tree, offset, 2, "%s", decode_enumerated_bitfield(flags, NAME_FLAGS_ONT, 2*8, name_flags_ont_vals, "%s")); - proto_tree_add_item(field_tree, offset, 2, "%s", + proto_tree_add_text(field_tree, offset, 2, "%s", decode_boolean_bitfield(flags, NAME_FLAGS_DRG, 2*8, "Name is being deregistered", "Name is not being deregistered")); - proto_tree_add_item(field_tree, offset, 2, "%s", + proto_tree_add_text(field_tree, offset, 2, "%s", decode_boolean_bitfield(flags, NAME_FLAGS_CNF, 2*8, "Name is in conflict", "Name is not in conflict")); - proto_tree_add_item(field_tree, offset, 2, "%s", + proto_tree_add_text(field_tree, offset, 2, "%s", decode_boolean_bitfield(flags, NAME_FLAGS_ACT, 2*8, "Name is active", "Name is not active")); - proto_tree_add_item(field_tree, offset, 2, "%s", + proto_tree_add_text(field_tree, offset, 2, "%s", decode_boolean_bitfield(flags, NAME_FLAGS_PRM, 2*8, "Permanent node name", @@ -530,7 +526,7 @@ dissect_nbns_answer(const u_char *nbns_data_ptr, const u_char *pd, int offset, switch (type) { case T_NB: /* "NB" record */ - trr = proto_tree_add_item(nbns_tree, offset, + trr = proto_tree_add_text(nbns_tree, offset, (dptr - data_start) + data_len, "%s: type %s, class %s", name, type_name, class_name); @@ -543,7 +539,7 @@ dissect_nbns_answer(const u_char *nbns_data_ptr, const u_char *pd, int offset, * same type of RR data as other T_NB * responses. */ if (data_len < 2) { - proto_tree_add_item(rr_tree, offset, + proto_tree_add_text(rr_tree, offset, data_len, "(incomplete entry)"); break; } @@ -554,7 +550,7 @@ dissect_nbns_answer(const u_char *nbns_data_ptr, const u_char *pd, int offset, data_len -= 2; } else { if (data_len < 2) { - proto_tree_add_item(rr_tree, offset, + proto_tree_add_text(rr_tree, offset, data_len, "(incomplete entry)"); break; } @@ -565,11 +561,11 @@ dissect_nbns_answer(const u_char *nbns_data_ptr, const u_char *pd, int offset, data_len -= 2; if (data_len < 4) { - proto_tree_add_item(rr_tree, offset, + proto_tree_add_text(rr_tree, offset, data_len, "(incomplete entry)"); break; } - proto_tree_add_item(rr_tree, offset, 4, + proto_tree_add_text(rr_tree, offset, 4, "Addr: %s", ip_to_str((guint8 *)dptr)); dptr += 4; @@ -585,7 +581,7 @@ dissect_nbns_answer(const u_char *nbns_data_ptr, const u_char *pd, int offset, char nbname[16+4+1]; /* 4 for [<last char>] */ u_short name_flags; - trr = proto_tree_add_item(nbns_tree, offset, + trr = proto_tree_add_text(nbns_tree, offset, (dptr - data_start) + data_len, "%s: type %s, class %s", name, type_name, class_name); @@ -593,32 +589,32 @@ dissect_nbns_answer(const u_char *nbns_data_ptr, const u_char *pd, int offset, name_len, type_name, class_name, ttl, data_len); offset += (dptr - data_start); if (data_len < 1) { - proto_tree_add_item(rr_tree, offset, + proto_tree_add_text(rr_tree, offset, data_len, "(incomplete entry)"); break; } num_names = *dptr; dptr += 1; - proto_tree_add_item(rr_tree, offset, 2, + proto_tree_add_text(rr_tree, offset, 2, "Number of names: %u", num_names); offset += 1; while (num_names != 0) { if (data_len < 16) { - proto_tree_add_item(rr_tree, offset, + proto_tree_add_text(rr_tree, offset, data_len, "(incomplete entry)"); goto out; } memcpy(nbname, dptr, 16); dptr += 16; canonicalize_netbios_name(nbname); - proto_tree_add_item(rr_tree, offset, 16, + proto_tree_add_text(rr_tree, offset, 16, "Name: %s", nbname); offset += 16; data_len -= 16; if (data_len < 2) { - proto_tree_add_item(rr_tree, offset, + proto_tree_add_text(rr_tree, offset, data_len, "(incomplete entry)"); goto out; } @@ -632,11 +628,11 @@ dissect_nbns_answer(const u_char *nbns_data_ptr, const u_char *pd, int offset, } if (data_len < 6) { - proto_tree_add_item(rr_tree, offset, + proto_tree_add_text(rr_tree, offset, data_len, "(incomplete entry)"); break; } - proto_tree_add_item(rr_tree, offset, 6, + proto_tree_add_text(rr_tree, offset, 6, "Unit ID: %s", ether_to_str((guint8 *)dptr)); dptr += 6; @@ -644,181 +640,181 @@ dissect_nbns_answer(const u_char *nbns_data_ptr, const u_char *pd, int offset, data_len -= 6; if (data_len < 1) { - proto_tree_add_item(rr_tree, offset, + proto_tree_add_text(rr_tree, offset, data_len, "(incomplete entry)"); break; } - proto_tree_add_item(rr_tree, offset, 1, + proto_tree_add_text(rr_tree, offset, 1, "Jumpers: 0x%x", *dptr); dptr += 1; offset += 1; data_len -= 1; if (data_len < 1) { - proto_tree_add_item(rr_tree, offset, + proto_tree_add_text(rr_tree, offset, data_len, "(incomplete entry)"); break; } - proto_tree_add_item(rr_tree, offset, 1, + proto_tree_add_text(rr_tree, offset, 1, "Test result: 0x%x", *dptr); dptr += 1; offset += 1; data_len -= 1; if (data_len < 2) { - proto_tree_add_item(rr_tree, offset, + proto_tree_add_text(rr_tree, offset, data_len, "(incomplete entry)"); break; } - proto_tree_add_item(rr_tree, offset, 2, + proto_tree_add_text(rr_tree, offset, 2, "Version number: 0x%x", pntohs(dptr)); dptr += 2; offset += 2; data_len -= 2; if (data_len < 2) { - proto_tree_add_item(rr_tree, offset, + proto_tree_add_text(rr_tree, offset, data_len, "(incomplete entry)"); break; } - proto_tree_add_item(rr_tree, offset, 2, + proto_tree_add_text(rr_tree, offset, 2, "Period of statistics: 0x%x", pntohs(dptr)); dptr += 2; offset += 2; data_len -= 2; if (data_len < 2) { - proto_tree_add_item(rr_tree, offset, + proto_tree_add_text(rr_tree, offset, data_len, "(incomplete entry)"); break; } - proto_tree_add_item(rr_tree, offset, 2, + proto_tree_add_text(rr_tree, offset, 2, "Number of CRCs: %u", pntohs(dptr)); dptr += 2; offset += 2; data_len -= 2; if (data_len < 2) { - proto_tree_add_item(rr_tree, offset, + proto_tree_add_text(rr_tree, offset, data_len, "(incomplete entry)"); break; } - proto_tree_add_item(rr_tree, offset, 2, + proto_tree_add_text(rr_tree, offset, 2, "Number of alignment errors: %u", pntohs(dptr)); dptr += 2; offset += 2; data_len -= 2; if (data_len < 2) { - proto_tree_add_item(rr_tree, offset, + proto_tree_add_text(rr_tree, offset, data_len, "(incomplete entry)"); break; } - proto_tree_add_item(rr_tree, offset, 2, + proto_tree_add_text(rr_tree, offset, 2, "Number of collisions: %u", pntohs(dptr)); dptr += 2; offset += 2; data_len -= 2; if (data_len < 2) { - proto_tree_add_item(rr_tree, offset, + proto_tree_add_text(rr_tree, offset, data_len, "(incomplete entry)"); break; } - proto_tree_add_item(rr_tree, offset, 2, + proto_tree_add_text(rr_tree, offset, 2, "Number of send aborts: %u", pntohs(dptr)); dptr += 2; offset += 2; data_len -= 2; if (data_len < 4) { - proto_tree_add_item(rr_tree, offset, + proto_tree_add_text(rr_tree, offset, data_len, "(incomplete entry)"); break; } - proto_tree_add_item(rr_tree, offset, 4, + proto_tree_add_text(rr_tree, offset, 4, "Number of good sends: %u", pntohl(dptr)); dptr += 4; offset += 4; data_len -= 4; if (data_len < 4) { - proto_tree_add_item(rr_tree, offset, + proto_tree_add_text(rr_tree, offset, data_len, "(incomplete entry)"); break; } - proto_tree_add_item(rr_tree, offset, 4, + proto_tree_add_text(rr_tree, offset, 4, "Number of good receives: %u", pntohl(dptr)); dptr += 4; offset += 4; data_len -= 4; if (data_len < 2) { - proto_tree_add_item(rr_tree, offset, + proto_tree_add_text(rr_tree, offset, data_len, "(incomplete entry)"); break; } - proto_tree_add_item(rr_tree, offset, 2, + proto_tree_add_text(rr_tree, offset, 2, "Number of retransmits: %u", pntohs(dptr)); dptr += 2; offset += 2; data_len -= 2; if (data_len < 2) { - proto_tree_add_item(rr_tree, offset, + proto_tree_add_text(rr_tree, offset, data_len, "(incomplete entry)"); break; } - proto_tree_add_item(rr_tree, offset, 2, + proto_tree_add_text(rr_tree, offset, 2, "Number of no resource conditions: %u", pntohs(dptr)); dptr += 2; offset += 2; data_len -= 2; if (data_len < 2) { - proto_tree_add_item(rr_tree, offset, + proto_tree_add_text(rr_tree, offset, data_len, "(incomplete entry)"); break; } - proto_tree_add_item(rr_tree, offset, 2, + proto_tree_add_text(rr_tree, offset, 2, "Number of command blocks: %u", pntohs(dptr)); dptr += 2; offset += 2; data_len -= 2; if (data_len < 2) { - proto_tree_add_item(rr_tree, offset, + proto_tree_add_text(rr_tree, offset, data_len, "(incomplete entry)"); break; } - proto_tree_add_item(rr_tree, offset, 2, + proto_tree_add_text(rr_tree, offset, 2, "Number of pending sessions: %u", pntohs(dptr)); dptr += 2; offset += 2; data_len -= 2; if (data_len < 2) { - proto_tree_add_item(rr_tree, offset, + proto_tree_add_text(rr_tree, offset, data_len, "(incomplete entry)"); break; } - proto_tree_add_item(rr_tree, offset, 2, + proto_tree_add_text(rr_tree, offset, 2, "Max number of pending sessions: %u", pntohs(dptr)); dptr += 2; offset += 2; - proto_tree_add_item(rr_tree, offset, 2, + proto_tree_add_text(rr_tree, offset, 2, "Max total sessions possible: %u", pntohs(dptr)); dptr += 2; offset += 2; data_len -= 2; if (data_len < 2) { - proto_tree_add_item(rr_tree, offset, + proto_tree_add_text(rr_tree, offset, data_len, "(incomplete entry)"); break; } - proto_tree_add_item(rr_tree, offset, 2, + proto_tree_add_text(rr_tree, offset, 2, "Session data packet size: %u", pntohs(dptr)); dptr += 2; offset += 2; @@ -828,14 +824,14 @@ dissect_nbns_answer(const u_char *nbns_data_ptr, const u_char *pd, int offset, break; default: - trr = proto_tree_add_item(nbns_tree, offset, + trr = proto_tree_add_text(nbns_tree, offset, (dptr - data_start) + data_len, "%s: type %s, class %s", name, type_name, class_name); rr_tree = add_rr_to_tree(trr, ETT_NBNS_RR, offset, name, name_len, type_name, class_name, ttl, data_len); offset += (dptr - data_start); - proto_tree_add_item(rr_tree, offset, data_len, "Data"); + proto_tree_add_text(rr_tree, offset, data_len, "Data"); break; } dptr += data_len; @@ -852,9 +848,8 @@ dissect_query_records(const u_char *nbns_data_ptr, int count, const u_char *pd, proto_item *ti; start_off = cur_off; - ti = proto_tree_add_item(nbns_tree, start_off, 0, "Queries"); - qatree = proto_tree_new(); - proto_item_add_subtree(ti, qatree, ETT_NBNS_QRY); + ti = proto_tree_add_text(nbns_tree, start_off, 0, "Queries"); + qatree = proto_item_add_subtree(ti, ETT_NBNS_QRY); while (count-- > 0) cur_off += dissect_nbns_query(nbns_data_ptr, pd, cur_off, qatree); proto_item_set_len(ti, cur_off - start_off); @@ -873,9 +868,8 @@ dissect_answer_records(const u_char *nbns_data_ptr, int count, proto_item *ti; start_off = cur_off; - ti = proto_tree_add_item(nbns_tree, start_off, 0, name); - qatree = proto_tree_new(); - proto_item_add_subtree(ti, qatree, ETT_NBNS_ANS); + ti = proto_tree_add_text(nbns_tree, start_off, 0, name); + qatree = proto_item_add_subtree(ti, ETT_NBNS_ANS); while (count-- > 0) cur_off += dissect_nbns_answer(nbns_data_ptr, pd, cur_off, qatree, opcode); @@ -912,25 +906,24 @@ dissect_nbns(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) } if (tree) { - ti = proto_tree_add_item(tree, offset, END_OF_FRAME, + ti = proto_tree_add_text(tree, offset, END_OF_FRAME, "NetBIOS Name Service"); - nbns_tree = proto_tree_new(); - proto_item_add_subtree(ti, nbns_tree, ETT_NBNS); + nbns_tree = proto_item_add_subtree(ti, ETT_NBNS); - proto_tree_add_item(nbns_tree, offset + NBNS_ID, 2, + proto_tree_add_text(nbns_tree, offset + NBNS_ID, 2, "Transaction ID: 0x%04X", id); nbns_add_nbns_flags(nbns_tree, offset + NBNS_FLAGS, flags, 0); - proto_tree_add_item(nbns_tree, offset + NBNS_QUEST, 2, + proto_tree_add_text(nbns_tree, offset + NBNS_QUEST, 2, "Questions: %d", quest); - proto_tree_add_item(nbns_tree, offset + NBNS_ANS, 2, + proto_tree_add_text(nbns_tree, offset + NBNS_ANS, 2, "Answer RRs: %d", ans); - proto_tree_add_item(nbns_tree, offset + NBNS_AUTH, 2, + proto_tree_add_text(nbns_tree, offset + NBNS_AUTH, 2, "Authority RRs: %d", auth); - proto_tree_add_item(nbns_tree, offset + NBNS_ADD, 2, + proto_tree_add_text(nbns_tree, offset + NBNS_ADD, 2, "Additional RRs: %d", add); @@ -1052,25 +1045,24 @@ dissect_nbdgm(const u_char *pd, int offset, frame_data *fd, proto_tree *tree, } if (tree) { - ti = proto_tree_add_item(tree, offset, header.dgm_length, + ti = proto_tree_add_text(tree, offset, header.dgm_length, "NetBIOS Datagram Service"); - nbdgm_tree = proto_tree_new(); - proto_item_add_subtree(ti, nbdgm_tree, ETT_NBDGM); + nbdgm_tree = proto_item_add_subtree(ti, ETT_NBDGM); - proto_tree_add_item(nbdgm_tree, offset, 1, "Message Type: %s", + proto_tree_add_text(nbdgm_tree, offset, 1, "Message Type: %s", message[message_index]); - proto_tree_add_item(nbdgm_tree, offset+1, 1, "More fragments follow: %s", + proto_tree_add_text(nbdgm_tree, offset+1, 1, "More fragments follow: %s", yesno[header.flags.more]); - proto_tree_add_item(nbdgm_tree, offset+1, 1, "This is first fragment: %s", + proto_tree_add_text(nbdgm_tree, offset+1, 1, "This is first fragment: %s", yesno[header.flags.first]); - proto_tree_add_item(nbdgm_tree, offset+1, 1, "Node Type: %s", + proto_tree_add_text(nbdgm_tree, offset+1, 1, "Node Type: %s", node[header.flags.node_type]); - proto_tree_add_item(nbdgm_tree, offset+2, 2, "Datagram ID: 0x%04X", + proto_tree_add_text(nbdgm_tree, offset+2, 2, "Datagram ID: 0x%04X", header.dgm_id); - proto_tree_add_item(nbdgm_tree, offset+4, 4, "Source IP: %s", + proto_tree_add_text(nbdgm_tree, offset+4, 4, "Source IP: %s", ip_to_str((guint8 *)&header.src_ip)); - proto_tree_add_item(nbdgm_tree, offset+8, 2, "Source Port: %d", + proto_tree_add_text(nbdgm_tree, offset+8, 2, "Source Port: %d", header.src_port); } @@ -1081,9 +1073,9 @@ dissect_nbdgm(const u_char *pd, int offset, frame_data *fd, proto_tree *tree, header.msg_type == 0x11 || header.msg_type == 0x12) { if (tree) { - proto_tree_add_item(nbdgm_tree, offset, 2, + proto_tree_add_text(nbdgm_tree, offset, 2, "Datagram length: %d bytes", header.dgm_length); - proto_tree_add_item(nbdgm_tree, offset+2, 2, + proto_tree_add_text(nbdgm_tree, offset+2, 2, "Packet offset: %d bytes", header.pkt_offset); } @@ -1094,7 +1086,7 @@ dissect_nbdgm(const u_char *pd, int offset, frame_data *fd, proto_tree *tree, len = get_nbns_name(&pd[offset], pd, offset, name); if (tree) { - proto_tree_add_item(nbdgm_tree, offset, len, "Source name: %s", + proto_tree_add_text(nbdgm_tree, offset, len, "Source name: %s", name); } offset += len; @@ -1104,7 +1096,7 @@ dissect_nbdgm(const u_char *pd, int offset, frame_data *fd, proto_tree *tree, len = get_nbns_name(&pd[offset], pd, offset, name); if (tree) { - proto_tree_add_item(nbdgm_tree, offset, len, "Destination name: %s", + proto_tree_add_text(nbdgm_tree, offset, len, "Destination name: %s", name); } offset += len; @@ -1115,7 +1107,7 @@ dissect_nbdgm(const u_char *pd, int offset, frame_data *fd, proto_tree *tree, } else if (header.msg_type == 0x13) { if (tree) { - proto_tree_add_item(nbdgm_tree, offset, 1, "Error code: %s", + proto_tree_add_text(nbdgm_tree, offset, 1, "Error code: %s", val_to_str(header.error_code, error_codes, "Unknown (0x%x)")); } } @@ -1125,7 +1117,7 @@ dissect_nbdgm(const u_char *pd, int offset, frame_data *fd, proto_tree *tree, len = get_nbns_name(&pd[offset], pd, offset, name); if (tree) { - proto_tree_add_item(nbdgm_tree, offset, len, "Destination name: %s", + proto_tree_add_text(nbdgm_tree, offset, len, "Destination name: %s", name); } } @@ -1192,22 +1184,20 @@ dissect_nbss_packet(const u_char *pd, int offset, frame_data *fd, proto_tree *tr length += 65536; if (tree) { - ti = proto_tree_add_item(tree, offset, length + 4, + ti = proto_tree_add_text(tree, offset, length + 4, "NetBIOS Session Service"); - nbss_tree = proto_tree_new(); - proto_item_add_subtree(ti, nbss_tree, ETT_NBSS); + nbss_tree = proto_item_add_subtree(ti, ETT_NBSS); - proto_tree_add_item(nbss_tree, offset, 1, "Message Type: %s", + proto_tree_add_text(nbss_tree, offset, 1, "Message Type: %s", val_to_str(msg_type, message_types, "Unknown (%x)")); } offset += 1; if (tree) { - tf = proto_tree_add_item(nbss_tree, offset, 1, "Flags: 0x%04x", flags); - field_tree = proto_tree_new(); - proto_item_add_subtree(tf, field_tree, ETT_NBSS_FLAGS); - proto_tree_add_item(field_tree, offset, 1, "%s", + tf = proto_tree_add_text(nbss_tree, offset, 1, "Flags: 0x%04x", flags); + field_tree = proto_item_add_subtree(tf, ETT_NBSS_FLAGS); + proto_tree_add_text(field_tree, offset, 1, "%s", decode_boolean_bitfield(flags, NBSS_FLAGS_E, 8, "Add 65536 to length", "Add 0 to length")); } @@ -1215,7 +1205,7 @@ dissect_nbss_packet(const u_char *pd, int offset, frame_data *fd, proto_tree *tr offset += 1; if (tree) { - proto_tree_add_item(nbss_tree, offset, 2, "Length: %u", length); + proto_tree_add_text(nbss_tree, offset, 2, "Length: %u", length); } offset += 2; @@ -1225,35 +1215,35 @@ dissect_nbss_packet(const u_char *pd, int offset, frame_data *fd, proto_tree *tr case SESSION_REQUEST: len = get_nbns_name(&pd[offset], pd, offset, name); if (tree) - proto_tree_add_item(nbss_tree, offset, len, + proto_tree_add_text(nbss_tree, offset, len, "Called name: %s", name); offset += len; len = get_nbns_name(&pd[offset], pd, offset, name); if (tree) - proto_tree_add_item(nbss_tree, offset, len, + proto_tree_add_text(nbss_tree, offset, len, "Calling name: %s", name); break; case NEGATIVE_SESSION_RESPONSE: if (tree) - proto_tree_add_item(nbss_tree, offset, 1, + proto_tree_add_text(nbss_tree, offset, 1, "Error code: %s", val_to_str(pd[offset], error_codes, "Unknown (%x)")); break; case RETARGET_SESSION_RESPONSE: if (tree) - proto_tree_add_item(nbss_tree, offset, 4, + proto_tree_add_text(nbss_tree, offset, 4, "Retarget IP address: %s", ip_to_str((guint8 *)&pd[offset])); offset += 4; if (tree) - proto_tree_add_item(nbss_tree, offset, 2, + proto_tree_add_text(nbss_tree, offset, 2, "Retarget port: %u", pntohs(&pd[offset])); break; |