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-osi.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-osi.c')
-rw-r--r-- | packet-osi.c | 385 |
1 files changed, 187 insertions, 198 deletions
diff --git a/packet-osi.c b/packet-osi.c index 50ecd382b6..933811b1ee 100644 --- a/packet-osi.c +++ b/packet-osi.c @@ -1,7 +1,7 @@ /* packet-osi.c * Routines for ISO/OSI network and transport protocol packet disassembly * - * $Id: packet-osi.c,v 1.6 1999/03/23 03:14:41 gram Exp $ + * $Id: packet-osi.c,v 1.7 1999/07/07 22:51:49 gram Exp $ * Laurent Deniel <deniel@worldnet.fr> * * Ethereal - Network traffic analyzer @@ -245,18 +245,17 @@ static int osi_decode_DR(const u_char *pd, int offset, src_ref, dst_ref); if (tree) { - ti = proto_tree_add_item(tree, offset, li + 1, "ISO COTP"); - cotp_tree = proto_tree_new(); - proto_item_add_subtree(ti, cotp_tree, ETT_COTP); - proto_tree_add_item(cotp_tree, offset, 1, + ti = proto_tree_add_text(tree, offset, li + 1, "ISO COTP"); + cotp_tree = proto_item_add_subtree(ti, ETT_COTP); + proto_tree_add_text(cotp_tree, offset, 1, "Length indicator: %d", li); - proto_tree_add_item(cotp_tree, offset + 1, 1, + proto_tree_add_text(cotp_tree, offset + 1, 1, "TPDU code: Ox%x (DR)", tpdu); - proto_tree_add_item(cotp_tree, offset + 2, 2, + proto_tree_add_text(cotp_tree, offset + 2, 2, "Destination reference: 0x%04x", dst_ref); - proto_tree_add_item(cotp_tree, offset + 4, 2, + proto_tree_add_text(cotp_tree, offset + 4, 2, "Source reference: 0x%04x", src_ref); - proto_tree_add_item(cotp_tree, offset + 6, 1, + proto_tree_add_text(cotp_tree, offset + 6, 1, "Cause: %s", str); } @@ -338,63 +337,62 @@ static int osi_decode_DT(const u_char *pd, int offset, (fragment)? "(fragment)" : ""); if (tree) { - ti = proto_tree_add_item(tree, offset, li + 1, "ISO COTP"); - cotp_tree = proto_tree_new(); - proto_item_add_subtree(ti, cotp_tree, ETT_COTP); - proto_tree_add_item(cotp_tree, offset, 1, + ti = proto_tree_add_text(tree, offset, li + 1, "ISO COTP"); + cotp_tree = proto_item_add_subtree(ti, ETT_COTP); + proto_tree_add_text(cotp_tree, offset, 1, "Length indicator: %d", li); - proto_tree_add_item(cotp_tree, offset + 1, 1, + proto_tree_add_text(cotp_tree, offset + 1, 1, "TPDU code: Ox%x (DT)", tpdu); if (li != LI_NORMAL_DT_CLASS_01) - proto_tree_add_item(cotp_tree, offset + 2, 2, + proto_tree_add_text(cotp_tree, offset + 2, 2, "Destination reference: 0x%04x", dst_ref); switch (li) { case LI_NORMAL_DT_WITH_CHECKSUM : - proto_tree_add_item(cotp_tree, offset + 4, 1, + proto_tree_add_text(cotp_tree, offset + 4, 1, "TPDU number: 0x%02x (%s)", tpdu_nr, (fragment)? "fragment":"complete"); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_NDT, 1, "Parameter code: 0x%02x (checksum)", code); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_NDT + 1, 1, "Parameter length: 0x%02x", length); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_NDT + 2, length, "Checksum: 0x%04x", checksum); break; case LI_NORMAL_DT_WITHOUT_CHECKSUM : - proto_tree_add_item(cotp_tree, offset + 4, 1, + proto_tree_add_text(cotp_tree, offset + 4, 1, "TPDU number: 0x%02x (%s)", tpdu_nr, (fragment)? "fragment":"complete"); break; case LI_EXTENDED_DT_WITH_CHECKSUM : - proto_tree_add_item(cotp_tree, offset + 4, 4, + proto_tree_add_text(cotp_tree, offset + 4, 4, "TPDU number: 0x%08x (%s)", tpdu_nr, (fragment)? "fragment":"complete"); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_EDT, 1, "Parameter code: 0x%02x (checksum)", code); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_EDT + 1, 1, "Parameter length: 0x%02x", length); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_EDT + 2, length, "Checksum: 0x%04x", checksum); break; case LI_EXTENDED_DT_WITHOUT_CHECKSUM : - proto_tree_add_item(cotp_tree, offset + 4, 4, + proto_tree_add_text(cotp_tree, offset + 4, 4, "TPDU number: 0x%08x (%s)", tpdu_nr, (fragment)? "fragment":"complete"); break; case LI_NORMAL_DT_CLASS_01 : - proto_tree_add_item(cotp_tree, offset + 2, 1, + proto_tree_add_text(cotp_tree, offset + 2, 1, "TPDU number: 0x%02x (%s)", tpdu_nr, (fragment)? "fragment":"complete"); @@ -473,49 +471,48 @@ static int osi_decode_ED(const u_char *pd, int offset, col_add_fstr(fd, COL_INFO, "ED TPDU (%d) dst-ref: 0x%04x", tpdu_nr, dst_ref); if (tree) { - ti = proto_tree_add_item(tree, offset, li + 1, "ISO COTP"); - cotp_tree = proto_tree_new(); - proto_item_add_subtree(ti, cotp_tree, ETT_COTP); - proto_tree_add_item(cotp_tree, offset, 1, + ti = proto_tree_add_text(tree, offset, li + 1, "ISO COTP"); + cotp_tree = proto_item_add_subtree(ti, ETT_COTP); + proto_tree_add_text(cotp_tree, offset, 1, "Length indicator: %d", li); - proto_tree_add_item(cotp_tree, offset + 1, 1, + proto_tree_add_text(cotp_tree, offset + 1, 1, "TPDU code: Ox%x (ED)", tpdu); - proto_tree_add_item(cotp_tree, offset + 2, 2, + proto_tree_add_text(cotp_tree, offset + 2, 2, "Destination reference: 0x%04x", dst_ref); switch (li) { case LI_NORMAL_DT_WITH_CHECKSUM : - proto_tree_add_item(cotp_tree, offset + 4, 1, + proto_tree_add_text(cotp_tree, offset + 4, 1, "TPDU number: 0x%02x", tpdu_nr); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_NDT, 1, "Parameter code: 0x%02x (checksum)", code); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_NDT + 1, 1, "Parameter length: 0x%02x", length); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_NDT + 2, length, "Checksum: 0x%04x", checksum); break; case LI_NORMAL_DT_WITHOUT_CHECKSUM : - proto_tree_add_item(cotp_tree, offset + 4, 1, + proto_tree_add_text(cotp_tree, offset + 4, 1, "TPDU number: 0x%02x", tpdu_nr); break; case LI_EXTENDED_DT_WITH_CHECKSUM : - proto_tree_add_item(cotp_tree, offset + 4, 4, + proto_tree_add_text(cotp_tree, offset + 4, 4, "TPDU number: 0x%02x", tpdu_nr); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_EDT, 1, "Parameter code: 0x%02x (checksum)", code); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_EDT + 1, 1, "Parameter length: 0x%02x", length); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_EDT + 2, length, "Checksum: 0x%04x", checksum); break; case LI_EXTENDED_DT_WITHOUT_CHECKSUM : - proto_tree_add_item(cotp_tree, offset + 4, 4, + proto_tree_add_text(cotp_tree, offset + 4, 4, "TPDU number: 0x%02x", tpdu_nr); break; } @@ -556,25 +553,24 @@ static int osi_decode_RJ(const u_char *pd, int offset, col_add_fstr(fd, COL_INFO, "RJ TPDU (%d) dst-ref: 0x%04x", tpdu_nr, dst_ref); if (tree) { - ti = proto_tree_add_item(tree, offset, li + 1, "ISO COTP"); - cotp_tree = proto_tree_new(); - proto_item_add_subtree(ti, cotp_tree, ETT_COTP); - proto_tree_add_item(cotp_tree, offset, 1, + ti = proto_tree_add_text(tree, offset, li + 1, "ISO COTP"); + cotp_tree = proto_item_add_subtree(ti, ETT_COTP); + proto_tree_add_text(cotp_tree, offset, 1, "Length indicator: %d", li); - proto_tree_add_item(cotp_tree, offset + 1, 1, + proto_tree_add_text(cotp_tree, offset + 1, 1, "TPDU code: Ox%x (RJ)", tpdu); if (li == LI_NORMAL_RJ) - proto_tree_add_item(cotp_tree, offset + 1, 1, + proto_tree_add_text(cotp_tree, offset + 1, 1, "Credit: %d", cdt); - proto_tree_add_item(cotp_tree, offset + 2, 2, + proto_tree_add_text(cotp_tree, offset + 2, 2, "Destination reference: 0x%04x", dst_ref); if (li == LI_NORMAL_RJ) - proto_tree_add_item(cotp_tree, offset + 4, 1, + proto_tree_add_text(cotp_tree, offset + 4, 1, "Your TPDU number: 0x%02x", tpdu_nr); else { - proto_tree_add_item(cotp_tree, offset + 4, 4, + proto_tree_add_text(cotp_tree, offset + 4, 4, "Your TPDU number: 0x%02x", tpdu_nr); - proto_tree_add_item(cotp_tree, offset + 8, 2, + proto_tree_add_text(cotp_tree, offset + 8, 2, "Credit: 0x%02x", credit); } } @@ -645,19 +641,18 @@ static int osi_decode_CC(const u_char *pd, int offset, dst_ref); if (tree) { - ti = proto_tree_add_item(tree, offset, li + 1, "ISO COTP"); - cotp_tree = proto_tree_new(); - proto_item_add_subtree(ti, cotp_tree, ETT_COTP); - proto_tree_add_item(cotp_tree, offset, 1, + ti = proto_tree_add_text(tree, offset, li + 1, "ISO COTP"); + cotp_tree = proto_item_add_subtree(ti, ETT_COTP); + proto_tree_add_text(cotp_tree, offset, 1, "Length indicator: %d", li); - proto_tree_add_item(cotp_tree, offset + 1, 1, + proto_tree_add_text(cotp_tree, offset + 1, 1, "TPDU code: Ox%x (%s)", tpdu, (tpdu == CR_TPDU) ? "CR" : "CC"); - proto_tree_add_item(cotp_tree, offset + 2, 2, + proto_tree_add_text(cotp_tree, offset + 2, 2, "Destination reference: 0x%04x", dst_ref); - proto_tree_add_item(cotp_tree, offset + 4, 2, + proto_tree_add_text(cotp_tree, offset + 4, 2, "Source reference: 0x%04x", src_ref); - proto_tree_add_item(cotp_tree, offset + 6, 1, + proto_tree_add_text(cotp_tree, offset + 6, 1, "Class option: 0x%02x", class_option); } @@ -672,26 +667,26 @@ static int osi_decode_CC(const u_char *pd, int offset, case VP_CHECKSUM : length = pd[offset + P_VAR_PART_CC + i + 1]; checksum = EXTRACT_SHORT(&pd[offset + P_VAR_PART_CC + i + 2]); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i, 1, "Parameter code: 0x%02x (checksum)", code); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i + 1, 1, "Parameter length: 0x%02x", length); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i + 2, length, "Checksum: 0x%04x", checksum); i += length + 2; break; case VP_SRC_TSAP : length = pd[offset + P_VAR_PART_CC + i + 1]; - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i, 1, "Parameter code: 0x%02x (src-tsap)", code); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i + 1, 1, "Parameter length: 0x%02x", length); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i + 2, length, "Calling TSAP: 0x%s", print_tsap(&pd[offset + P_VAR_PART_CC + i + 2], @@ -700,13 +695,13 @@ static int osi_decode_CC(const u_char *pd, int offset, break; case VP_DST_TSAP : length = pd[offset + P_VAR_PART_CC + i + 1]; - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i, 1, "Parameter code: 0x%02x (dst-tsap)", code); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i + 1, 1, "Parameter length: 0x%02x", length); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i + 2, length, "Called TSAP: 0x%s", print_tsap(&pd[offset + P_VAR_PART_CC + i + 2], @@ -716,13 +711,13 @@ static int osi_decode_CC(const u_char *pd, int offset, case VP_TPDU_SIZE : length = pd[offset + P_VAR_PART_CC + i + 1]; c1 = pd[offset + P_VAR_PART_CC + i + 2] & 0x0F; - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i, 1, "Parameter code: 0x%02x (tpdu-size)", code); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i + 1, 1, "Parameter length: 0x%02x", length); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i + 2, length, "TPDU size: %d", 2 << c1); i += length + 2; @@ -730,45 +725,45 @@ static int osi_decode_CC(const u_char *pd, int offset, case VP_OPT_SEL : length = pd[offset + P_VAR_PART_CC + i + 1]; c1 = pd[offset + P_VAR_PART_CC + i + 2] & 0x0F; - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i, 1, "Parameter code: 0x%02x (options)", code); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i + 1, 1, "Parameter length: 0x%02x", length); if (class_option == 1) { if (c1 & 0x8) - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i + 2, 1, "Use of network expedited data"); else - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i + 2, 1, "Non use of network expedited data"); if (c1 & 0x4) - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i + 2, 1, "Use of Receipt confirmation"); else - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i + 2, 1, "Use of explicit AK variant"); } else if (class_option == 4) { if (c1 & 0x2) - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i + 2, 1, "Use 16 bit checksum "); else - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i + 2, 1, "Non-use 16 bit checksum in class 4"); } if (c1 & 0x1) - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i + 2, 1, "Use of transport expedited data transfer\n"); else - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i + 2, 1, "Non-use of transport expedited data transfer"); i += length + 2; @@ -776,13 +771,13 @@ static int osi_decode_CC(const u_char *pd, int offset, case VP_ACK_TIME : length = pd[offset + P_VAR_PART_CC + i + 1]; s = EXTRACT_SHORT(&pd[offset + P_VAR_PART_CC + i + 2]); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i, 1, "Parameter code: 0x%02x (ack time)", code); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i + 1, 1, "Parameter length: 0x%02x", length); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i + 2, length, "Ack time (ms): %d", s); i += length + 2; @@ -793,22 +788,22 @@ static int osi_decode_CC(const u_char *pd, int offset, t2 = EXTRACT_LONG(&pd[offset + P_VAR_PART_CC + i + 4]); t3 = EXTRACT_LONG(&pd[offset + P_VAR_PART_CC + i + 7]); t4 = EXTRACT_LONG(&pd[offset + P_VAR_PART_CC + i + 10]); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i, 1, "Parameter code: 0x%02x (throughput)", code); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i + 1, 1, "Parameter length: 0x%02x", length); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i + 2, 4, "Target value / calling-called: %d o/s", t1); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i + 6, 4, "Minimum / calling-called: %d o/s", t2); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i + 10, 4, "Target value / called-calling: %d o/s", t3); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i + 14, 4, "Minimum / called-calling: %d o/s", t4); i += length + 2; @@ -819,22 +814,22 @@ static int osi_decode_CC(const u_char *pd, int offset, s2 = EXTRACT_SHORT(&pd[offset + P_VAR_PART_CC + i + 4]); s3 = EXTRACT_SHORT(&pd[offset + P_VAR_PART_CC + i + 6]); s4 = EXTRACT_SHORT(&pd[offset + P_VAR_PART_CC + i + 8]); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i, 1, "Parameter code: 0x%02x (transit delay)", code); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i + 1, 1, "Parameter length: 0x%02x", length); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i + 2, 2, "Target value / calling-called: %d ms", s1); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i + 4, 2, "Minimum / calling-called: %d ms", s2); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i + 6, 2, "Target value / called-calling: %d ms", s3); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i + 8, 2, "Minimum / called-calling: %d ms", s4); i += length + 2; @@ -842,13 +837,13 @@ static int osi_decode_CC(const u_char *pd, int offset, case VP_PRIORITY : length = pd[offset + P_VAR_PART_CC + i + 1]; s = EXTRACT_SHORT(&pd[offset + P_VAR_PART_CC + i + 2]); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i, 1, "Parameter code: 0x%02x (priority)", code); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i + 1, 1, "Parameter length: 0x%02x", length); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i + 2, length, "Priority: %d", s); i += length + 2; @@ -861,13 +856,13 @@ static int osi_decode_CC(const u_char *pd, int offset, case VP_PROTO_CLASS : default : /* no decoding */ length = pd[offset + P_VAR_PART_CC + i + 1]; - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i + 0, 1, "Parameter code: 0x%02x", code); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i + 1, 1, "Parameter length: 0x%02x", length); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_CC + i + 2, length, "Parameter value: <not shown>"); i += length + 2; @@ -918,25 +913,24 @@ static int osi_decode_DC(const u_char *pd, int offset, dst_ref); if (tree) { - ti = proto_tree_add_item(tree, offset, li + 1, "ISO COTP"); - cotp_tree = proto_tree_new(); - proto_item_add_subtree(ti, cotp_tree, ETT_COTP); - proto_tree_add_item(cotp_tree, offset, 1, + ti = proto_tree_add_text(tree, offset, li + 1, "ISO COTP"); + cotp_tree = proto_item_add_subtree(ti, ETT_COTP); + proto_tree_add_text(cotp_tree, offset, 1, "Length indicator: %d", li); - proto_tree_add_item(cotp_tree, offset + 1, 1, + proto_tree_add_text(cotp_tree, offset + 1, 1, "TPDU code: Ox%x (DC)", tpdu); - proto_tree_add_item(cotp_tree, offset + 2, 2, + proto_tree_add_text(cotp_tree, offset + 2, 2, "Destination reference: 0x%04x", dst_ref); - proto_tree_add_item(cotp_tree, offset + 4, 2, + proto_tree_add_text(cotp_tree, offset + 4, 2, "Source reference: 0x%04x", src_ref); if (code) { - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_DC + 0, 1, "Parameter code: 0x%02x (checksum)", code); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_DC + 1, 1, "Parameter length: 0x%02x", length); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_DC + 2, 2, "Checksum: 0x%04x", checksum); } @@ -972,18 +966,17 @@ static int osi_decode_AK(const u_char *pd, int offset, tpdu_nr, dst_ref); if (tree) { - ti = proto_tree_add_item(tree, offset, li + 1, "ISO COTP"); - cotp_tree = proto_tree_new(); - proto_item_add_subtree(ti, cotp_tree, ETT_COTP); - proto_tree_add_item(cotp_tree, offset, 1, + ti = proto_tree_add_text(tree, offset, li + 1, "ISO COTP"); + cotp_tree = proto_item_add_subtree(ti, ETT_COTP); + proto_tree_add_text(cotp_tree, offset, 1, "Length indicator: %d", li); - proto_tree_add_item(cotp_tree, offset + 1, 1, + proto_tree_add_text(cotp_tree, offset + 1, 1, "TPDU code: Ox%x (AK)", tpdu); - proto_tree_add_item(cotp_tree, offset + 1, 1, + proto_tree_add_text(cotp_tree, offset + 1, 1, "Credit: %d", cdt); - proto_tree_add_item(cotp_tree, offset + 2, 2, + proto_tree_add_text(cotp_tree, offset + 2, 2, "Destination reference: 0x%04x", dst_ref); - proto_tree_add_item(cotp_tree, offset + 4, 1, + proto_tree_add_text(cotp_tree, offset + 4, 1, "Your TPDU number: 0x%02x", tpdu_nr); } @@ -993,13 +986,13 @@ static int osi_decode_AK(const u_char *pd, int offset, length = pd[offset + P_VAR_PART_NAK + i + 1]; checksum = EXTRACT_SHORT(&pd[offset + P_VAR_PART_NAK + i + 2]); if (tree) { - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_NAK + i + 0, 1, "Parameter code: 0x%02x (checksum)", code); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_NAK + i + 1, 1, "Parameter length: 0x%02x", length); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_NAK + i + 2, 2, "Checksum: 0x%04x", checksum); } @@ -1012,22 +1005,22 @@ static int osi_decode_AK(const u_char *pd, int offset, r_seq_nr = EXTRACT_SHORT(&pd[offset + P_VAR_PART_NAK + i + 6]); r_cdt = EXTRACT_SHORT(&pd[offset + P_VAR_PART_NAK + i + 8]); if (tree) { - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_NAK + i + 0, 1, "Parameter code: 0x%02x (flow control)", code); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_NAK + i + 1, 1, "Parameter length: 0x%02x", length); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_NAK + i + 2, 4, "Lower window edge: 0x%08x", r_lower_window_edge); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_NAK + i + 6, 2, "Sequence number: 0x%04x", r_seq_nr); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_NAK + i + 8, 2, "Credit: 0x%04x", r_cdt); @@ -1038,13 +1031,13 @@ static int osi_decode_AK(const u_char *pd, int offset, length = pd[offset + P_VAR_PART_NAK + i + 1]; seq_nr = EXTRACT_SHORT(&pd[offset + P_VAR_PART_NAK + i + 2]); if (tree) { - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_NAK + i + 0, 1, "Parameter code: 0x%02x (seq number)", code); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_NAK + i + 1, 1, "Parameter length: 0x%02x", length); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_NAK + i + 2, 2, "Sequence number: 0x%04x", seq_nr); } @@ -1053,13 +1046,13 @@ static int osi_decode_AK(const u_char *pd, int offset, default : length = pd[offset + P_VAR_PART_NAK + i + 1]; if (tree) { - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_NAK + i + 0, 1, "Parameter code: 0x%02x (unknown)", code); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_NAK + i + 1, 1, "Parameter length: 0x%02x", length); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_NAK + i + 2, length, "Parameter value: <not shown>"); } @@ -1079,18 +1072,17 @@ static int osi_decode_AK(const u_char *pd, int offset, tpdu_nr, dst_ref); if (tree) { - ti = proto_tree_add_item(tree, offset, li + 1, "ISO COTP"); - cotp_tree = proto_tree_new(); - proto_item_add_subtree(ti, cotp_tree, ETT_COTP); - proto_tree_add_item(cotp_tree, offset, 1, + ti = proto_tree_add_text(tree, offset, li + 1, "ISO COTP"); + cotp_tree = proto_item_add_subtree(ti, ETT_COTP); + proto_tree_add_text(cotp_tree, offset, 1, "Length indicator: %d", li); - proto_tree_add_item(cotp_tree, offset + 1, 1, + proto_tree_add_text(cotp_tree, offset + 1, 1, "TPDU code: Ox%x (AK)", tpdu); - proto_tree_add_item(cotp_tree, offset + 2, 2, + proto_tree_add_text(cotp_tree, offset + 2, 2, "Destination reference: 0x%04x", dst_ref); - proto_tree_add_item(cotp_tree, offset + 4, 4, + proto_tree_add_text(cotp_tree, offset + 4, 4, "Your TPDU number: 0x%08x", tpdu_nr); - proto_tree_add_item(cotp_tree, offset + 8, 2, + proto_tree_add_text(cotp_tree, offset + 8, 2, "Credit: 0x%04x", cdt_in_ak); } @@ -1100,13 +1092,13 @@ static int osi_decode_AK(const u_char *pd, int offset, length = pd[offset + P_VAR_PART_EAK + i + 1]; checksum = EXTRACT_SHORT(&pd[offset + P_VAR_PART_EAK + i + 2]); if (tree) { - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_EAK + i + 0, 1, "Parameter code: 0x%02x (checksum)", code); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_EAK + i + 1, 1, "Parameter length: 0x%02x", length); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_EAK + i + 2, 2, "Checksum: 0x%04x", checksum); } @@ -1119,22 +1111,22 @@ static int osi_decode_AK(const u_char *pd, int offset, r_seq_nr = EXTRACT_SHORT(&pd[offset + P_VAR_PART_EAK + i + 6]); r_cdt = EXTRACT_SHORT(&pd[offset + P_VAR_PART_EAK + i + 8]); if (tree) { - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_EAK + i + 0, 1, "Parameter code: 0x%02x (flow control)", code); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_EAK + i + 1, 1, "Parameter length: 0x%02x", length); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_EAK + i + 2, 4, "Lower window edge: 0x%08x", r_lower_window_edge); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_EAK + i + 6, 2, "Sequence number: 0x%04x", r_seq_nr); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_EAK + i + 8, 2, "Credit: 0x%04x", r_cdt); @@ -1145,13 +1137,13 @@ static int osi_decode_AK(const u_char *pd, int offset, length = pd[offset + P_VAR_PART_EAK + i + 1]; seq_nr = EXTRACT_SHORT(&pd[offset + P_VAR_PART_EAK + i + 2]); if (tree) { - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_EAK + i + 0, 1, "Parameter code: 0x%02x (seq number)", code); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_EAK + i + 1, 1, "Parameter length: 0x%02x", length); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_EAK + i + 2, 2, "Sequence number: 0x%04x", seq_nr); } @@ -1160,13 +1152,13 @@ static int osi_decode_AK(const u_char *pd, int offset, default : length = pd[offset + P_VAR_PART_EAK + i + 1]; if (tree) { - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_EAK + i + 0, 1, "Parameter code: 0x%02x (unknown)", code); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_EAK + i + 1, 1, "Parameter length: 0x%02x", length); - proto_tree_add_item(cotp_tree, + proto_tree_add_text(cotp_tree, offset + P_VAR_PART_EAK + i + 2, length, "Parameter value: <not shown>"); } @@ -1232,43 +1224,42 @@ static int osi_decode_EA(const u_char *pd, int offset, col_add_fstr(fd, COL_INFO, "EA TPDU (%d) dst-ref: 0x%04x", tpdu_nr, dst_ref); if (tree) { - ti = proto_tree_add_item(tree, offset, li + 1, "ISO COTP"); - cotp_tree = proto_tree_new(); - proto_item_add_subtree(ti, cotp_tree, ETT_COTP); - proto_tree_add_item(cotp_tree, offset, 1, + ti = proto_tree_add_text(tree, offset, li + 1, "ISO COTP"); + cotp_tree = proto_item_add_subtree(ti, ETT_COTP); + proto_tree_add_text(cotp_tree, offset, 1, "Length indicator: %d", li); - proto_tree_add_item(cotp_tree, offset + 1, 1, + proto_tree_add_text(cotp_tree, offset + 1, 1, "TPDU code: Ox%x (EA)", tpdu); - proto_tree_add_item(cotp_tree, offset + 2, 2, + proto_tree_add_text(cotp_tree, offset + 2, 2, "Destination reference: 0x%04x", dst_ref); switch (li) { case LI_NORMAL_EA_WITH_CHECKSUM : - proto_tree_add_item(cotp_tree, offset + 4, 1, + proto_tree_add_text(cotp_tree, offset + 4, 1, "Your TPDU number: 0x%02x", tpdu_nr); - proto_tree_add_item(cotp_tree, offset + 5, 1, + proto_tree_add_text(cotp_tree, offset + 5, 1, "Parameter code: 0x%02x (checksum)", code); - proto_tree_add_item(cotp_tree, offset + 6, 1, + proto_tree_add_text(cotp_tree, offset + 6, 1, "Parameter length: 0x%02x", length); - proto_tree_add_item(cotp_tree, offset + 7, 2, + proto_tree_add_text(cotp_tree, offset + 7, 2, "Checksum: 0x%04x", checksum); break; case LI_NORMAL_EA_WITHOUT_CHECKSUM : - proto_tree_add_item(cotp_tree, offset + 4, 1, + proto_tree_add_text(cotp_tree, offset + 4, 1, "Your TPDU number: 0x%02x", tpdu_nr); break; case LI_EXTENDED_EA_WITH_CHECKSUM : - proto_tree_add_item(cotp_tree, offset + 4, 4, + proto_tree_add_text(cotp_tree, offset + 4, 4, "Your TPDU number: 0x%08x", tpdu_nr); - proto_tree_add_item(cotp_tree, offset + 8, 1, + proto_tree_add_text(cotp_tree, offset + 8, 1, "Parameter code: 0x%02x (checksum)", code); - proto_tree_add_item(cotp_tree, offset + 9, 1, + proto_tree_add_text(cotp_tree, offset + 9, 1, "Parameter length: 0x%02x", length); - proto_tree_add_item(cotp_tree, offset + 10, 2, + proto_tree_add_text(cotp_tree, offset + 10, 2, "Checksum: 0x%04x", checksum); break; case LI_EXTENDED_EA_WITHOUT_CHECKSUM : - proto_tree_add_item(cotp_tree, offset + 4, 4, + proto_tree_add_text(cotp_tree, offset + 4, 4, "Your TPDU number: 0x%08x", tpdu_nr); break; default : @@ -1318,16 +1309,15 @@ static int osi_decode_ER(const u_char *pd, int offset, col_add_fstr(fd, COL_INFO, "ER TPDU dst-ref: 0x%04x", dst_ref); if (tree) { - ti = proto_tree_add_item(tree, offset, li + 1, "ISO COTP"); - cotp_tree = proto_tree_new(); - proto_item_add_subtree(ti, cotp_tree, ETT_COTP); - proto_tree_add_item(cotp_tree, offset, 1, + ti = proto_tree_add_text(tree, offset, li + 1, "ISO COTP"); + cotp_tree = proto_item_add_subtree(ti, ETT_COTP); + proto_tree_add_text(cotp_tree, offset, 1, "Length indicator: %d", li); - proto_tree_add_item(cotp_tree, offset + 1, 1, + proto_tree_add_text(cotp_tree, offset + 1, 1, "TPDU code: Ox%x (ER)", tpdu); - proto_tree_add_item(cotp_tree, offset + 2, 2, + proto_tree_add_text(cotp_tree, offset + 2, 2, "Destination reference: 0x%04x", dst_ref); - proto_tree_add_item(cotp_tree, offset + 4, 1, + proto_tree_add_text(cotp_tree, offset + 4, 1, "Reject cause: %s", str); } @@ -1456,29 +1446,28 @@ void dissect_clnp(const u_char *pd, int offset, frame_data *fd, proto_tree *tree /* fixed part decoding */ if (tree) { - ti = proto_tree_add_item(tree, offset, clnp.cnf_hdr_len, "ISO CLNP"); - clnp_tree = proto_tree_new(); - proto_item_add_subtree(ti, clnp_tree, ETT_CLNP); - proto_tree_add_item(clnp_tree, offset, 1, + ti = proto_tree_add_text(tree, offset, clnp.cnf_hdr_len, "ISO CLNP"); + clnp_tree = proto_item_add_subtree(ti, ETT_CLNP); + proto_tree_add_text(clnp_tree, offset, 1, "Protocol identifier: 0x%02x", clnp.cnf_proto_id); - proto_tree_add_item(clnp_tree, offset + 1, 1, + proto_tree_add_text(clnp_tree, offset + 1, 1, "Length: %d", clnp.cnf_hdr_len); - proto_tree_add_item(clnp_tree, offset + 2, 1, + proto_tree_add_text(clnp_tree, offset + 2, 1, "Version: %d", clnp.cnf_vers); - proto_tree_add_item(clnp_tree, offset + 3, 1, + proto_tree_add_text(clnp_tree, offset + 3, 1, "TTL: %d (%d secs)", clnp.cnf_ttl, clnp.cnf_ttl / 2); - proto_tree_add_item(clnp_tree, offset + 4, 1, + proto_tree_add_text(clnp_tree, offset + 4, 1, "Type code: 0x%02x (%s%s%s%s)", clnp.cnf_type, (clnp.cnf_type & CNF_SEG_OK) ? "S " : "", (clnp.cnf_type & CNF_MORE_SEGS) ? "M " : "", (clnp.cnf_type & CNF_ERR_OK) ? "E " : "", (clnp.cnf_type & CNF_TYPE) == DT_NPDU ? "DT" : "ER"); - proto_tree_add_item(clnp_tree, offset + 5, 2, + proto_tree_add_text(clnp_tree, offset + 5, 2, "PDU segment length: %d", EXTRACT_SHORT(&clnp.cnf_seglen_msb)); - proto_tree_add_item(clnp_tree, offset + 7, 2, + proto_tree_add_text(clnp_tree, offset + 7, 2, "Checksum: 0x%04x", EXTRACT_SHORT(&clnp.cnf_cksum_msb)); } /* tree */ @@ -1498,14 +1487,14 @@ void dissect_clnp(const u_char *pd, int offset, frame_data *fd, proto_tree *tree src_len = pd[offset + dst_len + 1]; if (tree) { - proto_tree_add_item(clnp_tree, offset, 1, + proto_tree_add_text(clnp_tree, offset, 1, "Destination address length: 0x%02x", dst_len); - proto_tree_add_item(clnp_tree, offset + 1 , dst_len, + proto_tree_add_text(clnp_tree, offset + 1 , dst_len, "Destination address: %s", print_nsap(&pd[offset + 1], dst_len)); - proto_tree_add_item(clnp_tree, offset + 1 + dst_len, 1, + proto_tree_add_text(clnp_tree, offset + 1 + dst_len, 1, "Source address length: 0x%02x", src_len); - proto_tree_add_item(clnp_tree, offset + dst_len + 2, src_len, + proto_tree_add_text(clnp_tree, offset + dst_len + 2, src_len, "Source address: %s", print_nsap(&pd[offset + dst_len + 2], src_len)); } @@ -1525,13 +1514,13 @@ void dissect_clnp(const u_char *pd, int offset, frame_data *fd, proto_tree *tree struct clnp_segment seg; memcpy(&seg, &pd[offset], sizeof(seg)); - proto_tree_add_item(clnp_tree, offset, 2, + proto_tree_add_text(clnp_tree, offset, 2, "Data unit identifier: 0x%04x", EXTRACT_SHORT(&pd[offset])); - proto_tree_add_item(clnp_tree, offset + 2 , 2, + proto_tree_add_text(clnp_tree, offset + 2 , 2, "Segment offset: 0x%04x", EXTRACT_SHORT(&pd[offset + 2])); - proto_tree_add_item(clnp_tree, offset + 4 , 2, + proto_tree_add_text(clnp_tree, offset + 4 , 2, "Total length: 0x%04x", EXTRACT_SHORT(&pd[offset + 4])); @@ -1541,7 +1530,7 @@ void dissect_clnp(const u_char *pd, int offset, frame_data *fd, proto_tree *tree if (tree) { /* To do : decode options */ - proto_tree_add_item(clnp_tree, offset, + proto_tree_add_text(clnp_tree, offset, clnp.cnf_hdr_len + first_offset - offset, "Options/Data: <not shown>"); } |