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-rsvp.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-rsvp.c')
-rw-r--r-- | packet-rsvp.c | 324 |
1 files changed, 159 insertions, 165 deletions
diff --git a/packet-rsvp.c b/packet-rsvp.c index fec28437c6..5f5c73c609 100644 --- a/packet-rsvp.c +++ b/packet-rsvp.c @@ -3,7 +3,7 @@ * * (c) Copyright Ashok Narayanan <ashokn@cisco.com> * - * $Id: packet-rsvp.c,v 1.1 1999/06/11 16:44:51 gram Exp $ + * $Id: packet-rsvp.c,v 1.2 1999/07/07 22:51:52 gram Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@zing.org> @@ -160,27 +160,25 @@ dissect_rsvp(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) if (tree) { msg_length = pntohs(pd+offset+6); - ti = proto_tree_add_item(tree, offset, msg_length, + ti = proto_tree_add_text(tree, offset, msg_length, "Resource ReserVation Protocol (RSVP)"); - rsvp_tree = proto_tree_new(); - proto_item_add_subtree(ti, rsvp_tree, ETT_RSVP); + rsvp_tree = proto_item_add_subtree(ti, ETT_RSVP); - ti = proto_tree_add_item(rsvp_tree, offset, + ti = proto_tree_add_text(rsvp_tree, offset, sizeof(rsvp_header), "RSVP Header"); - rsvp_header_tree = proto_tree_new(); - proto_item_add_subtree(ti, rsvp_header_tree, ETT_RSVP_HDR); + rsvp_header_tree = proto_item_add_subtree(ti, ETT_RSVP_HDR); - proto_tree_add_item(rsvp_header_tree, offset, 1, "RSVP Version: %d", + proto_tree_add_text(rsvp_header_tree, offset, 1, "RSVP Version: %d", (hdr->ver_flags & 0xf0)>>4); - proto_tree_add_item(rsvp_header_tree, offset, 1, "Flags: %02X", + proto_tree_add_text(rsvp_header_tree, offset, 1, "Flags: %02X", hdr->ver_flags & 0xf); - proto_tree_add_item(rsvp_header_tree, offset+1, 1, "Message Type: %d - %s", + proto_tree_add_text(rsvp_header_tree, offset+1, 1, "Message Type: %d - %s", hdr->message_type, packet_type?packet_type:"Unknown"); - proto_tree_add_item(rsvp_header_tree, offset + 2 , 2, "Message Checksum"); - proto_tree_add_item(rsvp_header_tree, offset + 4 , 1, "Sending TTL: %d", + proto_tree_add_text(rsvp_header_tree, offset + 2 , 2, "Message Checksum"); + proto_tree_add_text(rsvp_header_tree, offset + 4 , 1, "Sending TTL: %d", hdr->sending_ttl); - proto_tree_add_item(rsvp_header_tree, offset + 6 , 2, "Message length: %d", + proto_tree_add_text(rsvp_header_tree, offset + 6 , 2, "Message length: %d", msg_length); offset += sizeof(rsvp_header); @@ -189,42 +187,41 @@ dissect_rsvp(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) obj = (rsvp_object *)&pd[offset]; obj_length = pntohs(pd+offset); if (offset + obj_length > fd->cap_len) { - proto_tree_add_item(rsvp_tree, offset, 1, + proto_tree_add_text(rsvp_tree, offset, 1, "Further data not captured"); break; } object_type = match_strval(obj->class, rsvp_class_vals); if (!object_type) object_type = "Unknown"; - ti = proto_tree_add_item(rsvp_tree, offset, + ti = proto_tree_add_text(rsvp_tree, offset, obj_length, "%s (%d)", object_type, obj->class); - rsvp_object_tree = proto_tree_new(); offset2 = offset + sizeof(rsvp_object); switch(obj->class) { case RSVP_CLASS_SESSION : - proto_item_add_subtree(ti, rsvp_object_tree, ETT_RSVP_SESSION); - proto_tree_add_item(rsvp_object_tree, offset, 2, "Length: %d", + rsvp_object_tree = proto_item_add_subtree(ti, ETT_RSVP_SESSION); + proto_tree_add_text(rsvp_object_tree, offset, 2, "Length: %d", obj_length); - proto_tree_add_item(rsvp_object_tree, offset+2, 1, + proto_tree_add_text(rsvp_object_tree, offset+2, 1, "Class number: %d - %s", obj->class, object_type); switch(obj->type) { case 1: { rsvp_session_ipv4 *sess = (rsvp_session_ipv4 *)obj; - proto_tree_add_item(rsvp_object_tree, offset+3, 1, + proto_tree_add_text(rsvp_object_tree, offset+3, 1, "C-type: 1 - IPv4"); - proto_tree_add_item(rsvp_object_tree, offset2, 4, + proto_tree_add_text(rsvp_object_tree, offset2, 4, "Destination address: %s", ip_to_str((guint8 *) &(sess->destination))); - proto_tree_add_item(rsvp_object_tree, offset2+4, 1, + proto_tree_add_text(rsvp_object_tree, offset2+4, 1, "Protocol: %d", sess->protocol); - proto_tree_add_item(rsvp_object_tree, offset2+5, 1, + proto_tree_add_text(rsvp_object_tree, offset2+5, 1, "Flags: %d", sess->flags); - proto_tree_add_item(rsvp_object_tree, offset2+6, 2, + proto_tree_add_text(rsvp_object_tree, offset2+6, 2, "Destination port: %d", pntohs(pd+offset2+6)); break; @@ -232,48 +229,48 @@ dissect_rsvp(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) case 2: { rsvp_session_ipv6 *sess = (rsvp_session_ipv6 *)obj; - proto_tree_add_item(rsvp_object_tree, offset+3, 1, + proto_tree_add_text(rsvp_object_tree, offset+3, 1, "C-type: 2 - IPv6"); - proto_tree_add_item(rsvp_object_tree, offset2, 4, + proto_tree_add_text(rsvp_object_tree, offset2, 4, "Destination address: %s", ip6_to_str(&(sess->destination))); - proto_tree_add_item(rsvp_object_tree, offset2+16, 1, + proto_tree_add_text(rsvp_object_tree, offset2+16, 1, "Protocol: %d", sess->protocol); - proto_tree_add_item(rsvp_object_tree, offset2+17, 1, + proto_tree_add_text(rsvp_object_tree, offset2+17, 1, "Flags: %d", sess->flags); - proto_tree_add_item(rsvp_object_tree, offset2+18, 2, + proto_tree_add_text(rsvp_object_tree, offset2+18, 2, "Destination port: %d", pntohs(pd+offset2+18)); break; } default: { - proto_tree_add_item(rsvp_object_tree, offset+3, 1, + proto_tree_add_text(rsvp_object_tree, offset+3, 1, "C-type: Unknown (%d)", obj->type); i = obj_length - sizeof(rsvp_object); - proto_tree_add_item(rsvp_object_tree, offset2, i, + proto_tree_add_text(rsvp_object_tree, offset2, i, "Data (%d bytes)", i); } } break; case RSVP_CLASS_HOP : - proto_item_add_subtree(ti, rsvp_object_tree, ETT_RSVP_HOP); - proto_tree_add_item(rsvp_object_tree, offset, 2, "Length: %d", + rsvp_object_tree = proto_item_add_subtree(ti, ETT_RSVP_HOP); + proto_tree_add_text(rsvp_object_tree, offset, 2, "Length: %d", obj_length); - proto_tree_add_item(rsvp_object_tree, offset+2, 1, + proto_tree_add_text(rsvp_object_tree, offset+2, 1, "Class number: %d - %s", obj->class, object_type); switch(obj->type) { case 1: { rsvp_hop_ipv4 *hop = (rsvp_hop_ipv4 *)obj; - proto_tree_add_item(rsvp_object_tree, offset+3, 1, + proto_tree_add_text(rsvp_object_tree, offset+3, 1, "C-type: 1 - IPv4"); - proto_tree_add_item(rsvp_object_tree, offset2, 4, + proto_tree_add_text(rsvp_object_tree, offset2, 4, "Neighbor address: %s", ip_to_str((guint8 *) &(hop->neighbor))); - proto_tree_add_item(rsvp_object_tree, offset2+4, 4, + proto_tree_add_text(rsvp_object_tree, offset2+4, 4, "Logical interface: %0x", pntohl(pd+offset2+4)); break; @@ -281,40 +278,40 @@ dissect_rsvp(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) case 2: { rsvp_hop_ipv6 *hop = (rsvp_hop_ipv6 *)obj; - proto_tree_add_item(rsvp_object_tree, offset+3, 1, + proto_tree_add_text(rsvp_object_tree, offset+3, 1, "C-type: 2 - IPv6"); - proto_tree_add_item(rsvp_object_tree, offset2, 4, + proto_tree_add_text(rsvp_object_tree, offset2, 4, "Neighbor address: %s", ip6_to_str(&(hop->neighbor))); - proto_tree_add_item(rsvp_object_tree, offset2+16, 4, + proto_tree_add_text(rsvp_object_tree, offset2+16, 4, "Logical interface: %0x", pntohl(pd+offset2+16)); break; } default: { - proto_tree_add_item(rsvp_object_tree, offset+3, 1, + proto_tree_add_text(rsvp_object_tree, offset+3, 1, "C-type: Unknown (%d)", obj->type); i = obj_length - sizeof(rsvp_object); - proto_tree_add_item(rsvp_object_tree, offset2, i, + proto_tree_add_text(rsvp_object_tree, offset2, i, "Data (%d bytes)", i); } } break; case RSVP_CLASS_TIME_VALUES : - proto_item_add_subtree(ti, rsvp_object_tree, ETT_RSVP_TIME_VALUES); - proto_tree_add_item(rsvp_object_tree, offset, 2, "Length: %d", + rsvp_object_tree = proto_item_add_subtree(ti, ETT_RSVP_TIME_VALUES); + proto_tree_add_text(rsvp_object_tree, offset, 2, "Length: %d", obj_length); - proto_tree_add_item(rsvp_object_tree, offset+2, 1, + proto_tree_add_text(rsvp_object_tree, offset+2, 1, "Class number: %d - %s", obj->class, object_type); switch(obj->type) { case 1: { - proto_tree_add_item(rsvp_object_tree, offset+3, 1, + proto_tree_add_text(rsvp_object_tree, offset+3, 1, "C-type: 1"); - proto_tree_add_item(rsvp_object_tree, offset2, 4, + proto_tree_add_text(rsvp_object_tree, offset2, 4, "Refresh interval: %u ms (%u seconds)", pntohl(pd+offset2), pntohl(pd+offset2)/1000); @@ -322,11 +319,11 @@ dissect_rsvp(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) } default: { - proto_tree_add_item(rsvp_object_tree, offset+3, 1, + proto_tree_add_text(rsvp_object_tree, offset+3, 1, "C-type: Unknown (%d)", obj->type); i = obj_length - sizeof(rsvp_object); - proto_tree_add_item(rsvp_object_tree, offset2, i, + proto_tree_add_text(rsvp_object_tree, offset2, i, "Data (%d bytes)", i); break; } @@ -334,10 +331,10 @@ dissect_rsvp(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) break; case RSVP_CLASS_ERROR : - proto_item_add_subtree(ti, rsvp_object_tree, ETT_RSVP_ERROR); - proto_tree_add_item(rsvp_object_tree, offset, 2, "Length: %d", + rsvp_object_tree = proto_item_add_subtree(ti, ETT_RSVP_ERROR); + proto_tree_add_text(rsvp_object_tree, offset, 2, "Length: %d", obj_length); - proto_tree_add_item(rsvp_object_tree, offset+2, 1, + proto_tree_add_text(rsvp_object_tree, offset+2, 1, "Class number: %d - %s", obj->class, object_type); switch(obj->type) { @@ -346,17 +343,17 @@ dissect_rsvp(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) char *err_str = match_strval(err->error_code, rsvp_error_vals); if (!err_str) err_str = "Unknown"; - proto_tree_add_item(rsvp_object_tree, offset+3, 1, + proto_tree_add_text(rsvp_object_tree, offset+3, 1, "C-type: 1 - IPv4"); - proto_tree_add_item(rsvp_object_tree, offset2, 4, + proto_tree_add_text(rsvp_object_tree, offset2, 4, "Error node: %s", ip_to_str((guint8 *) &(err->error_node))); - proto_tree_add_item(rsvp_object_tree, offset2+4, 1, + proto_tree_add_text(rsvp_object_tree, offset2+4, 1, "Flags: %02x", err->flags); - proto_tree_add_item(rsvp_object_tree, offset2+5, 1, + proto_tree_add_text(rsvp_object_tree, offset2+5, 1, "Error code: %d - %s", err->error_code, err_str); - proto_tree_add_item(rsvp_object_tree, offset2+6, 2, + proto_tree_add_text(rsvp_object_tree, offset2+6, 2, "Error value: %d", pntohs(pd+offset2+6)); break; @@ -366,28 +363,28 @@ dissect_rsvp(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) rsvp_error_ipv6 *err = (rsvp_error_ipv6 *)obj; char *err_str = match_strval(err->error_code, rsvp_error_vals); if (!err_str) err_str = "Unknown"; - proto_tree_add_item(rsvp_object_tree, offset+3, 1, + proto_tree_add_text(rsvp_object_tree, offset+3, 1, "C-type: 2 - IPv6"); - proto_tree_add_item(rsvp_object_tree, offset2, 4, + proto_tree_add_text(rsvp_object_tree, offset2, 4, "Error node: %s", ip6_to_str(&(err->error_node))); - proto_tree_add_item(rsvp_object_tree, offset2+16, 1, + proto_tree_add_text(rsvp_object_tree, offset2+16, 1, "Flags: %02x", err->flags); - proto_tree_add_item(rsvp_object_tree, offset2+17, 1, + proto_tree_add_text(rsvp_object_tree, offset2+17, 1, "Error code: %d - %s", err->error_code, err_str); - proto_tree_add_item(rsvp_object_tree, offset2+18, 2, + proto_tree_add_text(rsvp_object_tree, offset2+18, 2, "Error value: %d", pntohs(pd+offset2+18)); break; } default: { - proto_tree_add_item(rsvp_object_tree, offset+3, 1, + proto_tree_add_text(rsvp_object_tree, offset+3, 1, "C-type: Unknown (%d)", obj->type); i = obj_length - sizeof(rsvp_object); - proto_tree_add_item(rsvp_object_tree, offset2, i, + proto_tree_add_text(rsvp_object_tree, offset2, i, "Data (%d bytes)", i); } } @@ -396,20 +393,20 @@ dissect_rsvp(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) case RSVP_CLASS_SCOPE : mylen = obj_length; - proto_item_add_subtree(ti, rsvp_object_tree, ETT_RSVP_SCOPE); - proto_tree_add_item(rsvp_object_tree, offset, 2, "Length: %d", + rsvp_object_tree = proto_item_add_subtree(ti, ETT_RSVP_SCOPE); + proto_tree_add_text(rsvp_object_tree, offset, 2, "Length: %d", obj_length); - proto_tree_add_item(rsvp_object_tree, offset+2, 1, + proto_tree_add_text(rsvp_object_tree, offset+2, 1, "Class number: %d - %s", obj->class, object_type); switch(obj->type) { case 1: { unsigned long ip; - proto_tree_add_item(rsvp_object_tree, offset+3, 1, + proto_tree_add_text(rsvp_object_tree, offset+3, 1, "C-type: 1 - IPv4"); while (mylen > sizeof(rsvp_object)) { ip = pntohl(pd+offset2); - proto_tree_add_item(rsvp_object_tree, offset2, 4, + proto_tree_add_text(rsvp_object_tree, offset2, 4, "IPv4 Address: %s", ip_to_str((guint8 *) &ip)); offset2 += 4; @@ -420,11 +417,11 @@ dissect_rsvp(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) case 2: { struct e_in6_addr *ip; - proto_tree_add_item(rsvp_object_tree, offset+3, 1, + proto_tree_add_text(rsvp_object_tree, offset+3, 1, "C-type: 2 - IPv6"); while (mylen>sizeof(rsvp_object)) { ip = (struct e_in6_addr *)pd+offset2; - proto_tree_add_item(rsvp_object_tree, offset2, 16, + proto_tree_add_text(rsvp_object_tree, offset2, 16, "IPv6 Address: %s", ip6_to_str(ip)); offset2 += 16; @@ -434,21 +431,21 @@ dissect_rsvp(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) } default: { - proto_tree_add_item(rsvp_object_tree, offset+3, 1, + proto_tree_add_text(rsvp_object_tree, offset+3, 1, "C-type: Unknown (%d)", obj->type); i = obj_length - sizeof(rsvp_object); - proto_tree_add_item(rsvp_object_tree, offset2, i, + proto_tree_add_text(rsvp_object_tree, offset2, i, "Data (%d bytes)", i); } } break; case RSVP_CLASS_STYLE : - proto_item_add_subtree(ti, rsvp_object_tree, ETT_RSVP_STYLE); - proto_tree_add_item(rsvp_object_tree, offset, 2, "Length: %d", + rsvp_object_tree = proto_item_add_subtree(ti, ETT_RSVP_STYLE); + proto_tree_add_text(rsvp_object_tree, offset, 2, "Length: %d", obj_length); - proto_tree_add_item(rsvp_object_tree, offset+2, 1, + proto_tree_add_text(rsvp_object_tree, offset+2, 1, "Class number: %d - %s", obj->class, object_type); switch(obj->type) { @@ -456,19 +453,19 @@ dissect_rsvp(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) unsigned long ip = pntohl(pd+offset2); char *style_str = match_strval(ip, style_vals); if (!style_str) style_str = "Unknown"; - proto_tree_add_item(rsvp_object_tree, offset+3, 1, + proto_tree_add_text(rsvp_object_tree, offset+3, 1, "C-type: 1"); - proto_tree_add_item(rsvp_object_tree, offset2+5, 1, + proto_tree_add_text(rsvp_object_tree, offset2+5, 1, "Style: %ld - %s", ip, style_str); break; } default: { - proto_tree_add_item(rsvp_object_tree, offset+3, 1, + proto_tree_add_text(rsvp_object_tree, offset+3, 1, "C-type: Unknown (%d)", obj->type); i = obj_length - sizeof(rsvp_object); - proto_tree_add_item(rsvp_object_tree, offset2, i, + proto_tree_add_text(rsvp_object_tree, offset2, i, "Data (%d bytes)", i); break; } @@ -476,18 +473,18 @@ dissect_rsvp(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) break; case RSVP_CLASS_CONFIRM : - proto_item_add_subtree(ti, rsvp_object_tree, ETT_RSVP_CONFIRM); - proto_tree_add_item(rsvp_object_tree, offset, 2, "Length: %d", + rsvp_object_tree = proto_item_add_subtree(ti, ETT_RSVP_CONFIRM); + proto_tree_add_text(rsvp_object_tree, offset, 2, "Length: %d", obj_length); - proto_tree_add_item(rsvp_object_tree, offset+2, 1, + proto_tree_add_text(rsvp_object_tree, offset+2, 1, "Class number: %d - %s", obj->class, object_type); switch(obj->type) { case 1: { rsvp_confirm_ipv4 *confirm = (rsvp_confirm_ipv4 *)obj; - proto_tree_add_item(rsvp_object_tree, offset+3, 1, + proto_tree_add_text(rsvp_object_tree, offset+3, 1, "C-type: 1 - IPv4"); - proto_tree_add_item(rsvp_object_tree, offset2, 4, + proto_tree_add_text(rsvp_object_tree, offset2, 4, "Receiver address: %s", ip_to_str((guint8 *) &(confirm->receiver))); break; @@ -495,72 +492,72 @@ dissect_rsvp(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) case 2: { rsvp_confirm_ipv6 *confirm = (rsvp_confirm_ipv6 *)obj; - proto_tree_add_item(rsvp_object_tree, offset+3, 1, + proto_tree_add_text(rsvp_object_tree, offset+3, 1, "C-type: 2 - IPv6"); - proto_tree_add_item(rsvp_object_tree, offset2, 16, + proto_tree_add_text(rsvp_object_tree, offset2, 16, "Receiver address: %s", ip6_to_str(&(confirm->receiver))); break; } default: { - proto_tree_add_item(rsvp_object_tree, offset+3, 1, + proto_tree_add_text(rsvp_object_tree, offset+3, 1, "C-type: Unknown (%d)", obj->type); i = obj_length - sizeof(rsvp_object); - proto_tree_add_item(rsvp_object_tree, offset2, i, + proto_tree_add_text(rsvp_object_tree, offset2, i, "Data (%d bytes)", i); } } break; case RSVP_CLASS_SENDER_TEMPLATE : - proto_item_add_subtree(ti, rsvp_object_tree, ETT_RSVP_SENDER_TEMPLATE); - proto_tree_add_item(rsvp_object_tree, offset, 2, "Length: %d", + rsvp_object_tree = proto_item_add_subtree(ti, ETT_RSVP_SENDER_TEMPLATE); + proto_tree_add_text(rsvp_object_tree, offset, 2, "Length: %d", obj_length); - proto_tree_add_item(rsvp_object_tree, offset+2, 1, + proto_tree_add_text(rsvp_object_tree, offset+2, 1, "Class number: %d - %s", obj->class, object_type); goto common_template; case RSVP_CLASS_FILTER_SPEC : - proto_item_add_subtree(ti, rsvp_object_tree, ETT_RSVP_FILTER_SPEC); - proto_tree_add_item(rsvp_object_tree, offset, 2, "Length: %d", + rsvp_object_tree = proto_item_add_subtree(ti, ETT_RSVP_FILTER_SPEC); + proto_tree_add_text(rsvp_object_tree, offset, 2, "Length: %d", obj_length); - proto_tree_add_item(rsvp_object_tree, offset+2, 1, + proto_tree_add_text(rsvp_object_tree, offset+2, 1, "Class number: %d - %s", obj->class, object_type); common_template: switch(obj->type) { case 1: { rsvp_template_ipv4 *tem = (rsvp_template_ipv4 *)obj; - proto_tree_add_item(rsvp_object_tree, offset+3, 1, + proto_tree_add_text(rsvp_object_tree, offset+3, 1, "C-type: 1 - IPv4"); - proto_tree_add_item(rsvp_object_tree, offset2, 4, + proto_tree_add_text(rsvp_object_tree, offset2, 4, "Source address: %s", ip_to_str((guint8 *) &(tem->source))); - proto_tree_add_item(rsvp_object_tree, offset2+6, 2, + proto_tree_add_text(rsvp_object_tree, offset2+6, 2, "Source port: %d", pntohs(pd+offset2+6)); break; } case 2: { rsvp_template_ipv6 *tem = (rsvp_template_ipv6 *)obj; - proto_tree_add_item(rsvp_object_tree, offset+3, 1, + proto_tree_add_text(rsvp_object_tree, offset+3, 1, "C-type: 2 - IPv6"); - proto_tree_add_item(rsvp_object_tree, offset2, 16, + proto_tree_add_text(rsvp_object_tree, offset2, 16, "Source address: %s", ip6_to_str(&(tem->source))); - proto_tree_add_item(rsvp_object_tree, offset2+18, 2, + proto_tree_add_text(rsvp_object_tree, offset2+18, 2, "Source port: %d", pntohs(pd+offset2+18)); break; } default: { - proto_tree_add_item(rsvp_object_tree, offset+3, 1, + proto_tree_add_text(rsvp_object_tree, offset+3, 1, "C-type: Unknown (%d)", obj->type); i = obj_length - sizeof(rsvp_object); - proto_tree_add_item(rsvp_object_tree, offset2, i, + proto_tree_add_text(rsvp_object_tree, offset2, i, "Data (%d bytes)", i); } } @@ -569,59 +566,58 @@ dissect_rsvp(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) case RSVP_CLASS_SENDER_TSPEC : { IS_tspec *tspec = (IS_tspec *)obj; - proto_item_add_subtree(ti, rsvp_object_tree, - ETT_RSVP_SENDER_TSPEC); - proto_tree_add_item(rsvp_object_tree, offset, 2, "Length: %d", + rsvp_object_tree = proto_item_add_subtree(ti, ETT_RSVP_SENDER_TSPEC); + proto_tree_add_text(rsvp_object_tree, offset, 2, "Length: %d", obj_length); - proto_tree_add_item(rsvp_object_tree, offset+2, 1, + proto_tree_add_text(rsvp_object_tree, offset+2, 1, "Class number: %d - %s", obj->class, object_type); - proto_tree_add_item(rsvp_object_tree, offset2, 1, + proto_tree_add_text(rsvp_object_tree, offset2, 1, "Message format version: %d", tspec->version>>4); - proto_tree_add_item(rsvp_object_tree, offset2+2, 2, + proto_tree_add_text(rsvp_object_tree, offset2+2, 2, "Data length: %d words, not including header", pntohs(pd+offset2+2)); - proto_tree_add_item(rsvp_object_tree, offset2+4, 1, + proto_tree_add_text(rsvp_object_tree, offset2+4, 1, "Service header: %d - %s", tspec->service_header, tspec->service_header==1 ? "Default/global information (INTSRV_GENERAL)" : "Unknown"); - proto_tree_add_item(rsvp_object_tree, offset2+6, 2, + proto_tree_add_text(rsvp_object_tree, offset2+6, 2, "Length of service %d data: %d words, " "not including header", tspec->service_header, pntohs(pd+offset2+6)>>12); /* Token bucket TSPEC */ - proto_tree_add_item(rsvp_object_tree, offset2+8, 1, + proto_tree_add_text(rsvp_object_tree, offset2+8, 1, "Parameter ID: %d - %s", tspec->param_id, tspec->param_id==127 ? "Token Bucket TSpec" : "Unknown"); - proto_tree_add_item(rsvp_object_tree, offset2+9, 1, + proto_tree_add_text(rsvp_object_tree, offset2+9, 1, "Parameter %d flags: %d", tspec->param_id, tspec->flags_tspec); - proto_tree_add_item(rsvp_object_tree, offset2+10, 2, + proto_tree_add_text(rsvp_object_tree, offset2+10, 2, "Length of parameter %d data: %d words, " "not including header", tspec->param_id, pntohs(pd+offset2+10)); - proto_tree_add_item(rsvp_object_tree, offset2+12, 4, + proto_tree_add_text(rsvp_object_tree, offset2+12, 4, "Token bucket rate: %ld", ieee_to_long(pd+offset2+12)); - proto_tree_add_item(rsvp_object_tree, offset2+16, 4, + proto_tree_add_text(rsvp_object_tree, offset2+16, 4, "Token bucket size: %ld", ieee_to_long(pd+offset2+16)); - proto_tree_add_item(rsvp_object_tree, offset2+20, 4, + proto_tree_add_text(rsvp_object_tree, offset2+20, 4, "Peak data rate: %ld", ieee_to_long(pd+offset2+20)); - proto_tree_add_item(rsvp_object_tree, offset2+24, 4, + proto_tree_add_text(rsvp_object_tree, offset2+24, 4, "Minimum policed unit: %d", pntohl(pd+offset2+24)); - proto_tree_add_item(rsvp_object_tree, offset2+28, 4, + proto_tree_add_text(rsvp_object_tree, offset2+28, 4, "Maximum policed unit: %d", pntohl(pd+offset2+28)); @@ -633,54 +629,53 @@ dissect_rsvp(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) char *qos_str = match_strval(flowspec->service_header, qos_vals); char *is_param_str = match_strval(flowspec->param_id, svc_vals); - proto_item_add_subtree(ti, rsvp_object_tree, - ETT_RSVP_FLOWSPEC); - proto_tree_add_item(rsvp_object_tree, offset, 2, "Length: %d", + rsvp_object_tree = proto_item_add_subtree(ti, ETT_RSVP_FLOWSPEC); + proto_tree_add_text(rsvp_object_tree, offset, 2, "Length: %d", obj_length); - proto_tree_add_item(rsvp_object_tree, offset+2, 1, + proto_tree_add_text(rsvp_object_tree, offset+2, 1, "Class number: %d - %s", obj->class, object_type); if (!qos_str) qos_str = "Unknown"; if (!is_param_str) is_param_str="Unknown"; - proto_tree_add_item(rsvp_object_tree, offset2, 1, + proto_tree_add_text(rsvp_object_tree, offset2, 1, "Message format version: %d", flowspec->version>>4); - proto_tree_add_item(rsvp_object_tree, offset2+2, 2, + proto_tree_add_text(rsvp_object_tree, offset2+2, 2, "Data length: %d words, not including header", pntohs(pd+offset2+2)); - proto_tree_add_item(rsvp_object_tree, offset2+4, 1, + proto_tree_add_text(rsvp_object_tree, offset2+4, 1, "Service header: %d - %s", flowspec->service_header, qos_str); - proto_tree_add_item(rsvp_object_tree, offset2+6, 2, + proto_tree_add_text(rsvp_object_tree, offset2+6, 2, "Length of service %d data: %d words, " "not including header", flowspec->service_header, pntohs(pd+offset2+6)>>12); - proto_tree_add_item(rsvp_object_tree, offset2+8, 1, + proto_tree_add_text(rsvp_object_tree, offset2+8, 1, "Parameter ID: %d - %s", flowspec->param_id, is_param_str); - proto_tree_add_item(rsvp_object_tree, offset2+9, 1, + proto_tree_add_text(rsvp_object_tree, offset2+9, 1, "Parameter %d flags: %d", flowspec->param_id, flowspec->flags_tspec); - proto_tree_add_item(rsvp_object_tree, offset2+10, 2, + proto_tree_add_text(rsvp_object_tree, offset2+10, 2, "Length of parameter %d data: %d words, " "not including header", flowspec->param_id, pntohs(pd+offset2+10)); - proto_tree_add_item(rsvp_object_tree, offset2+12, 4, + proto_tree_add_text(rsvp_object_tree, offset2+12, 4, "Token bucket rate: %ld", ieee_to_long(pd+offset2+12)); - proto_tree_add_item(rsvp_object_tree, offset2+16, 4, + proto_tree_add_text(rsvp_object_tree, offset2+16, 4, "Token bucket size: %ld", ieee_to_long(pd+offset2+16)); - proto_tree_add_item(rsvp_object_tree, offset2+20, 4, + proto_tree_add_text(rsvp_object_tree, offset2+20, 4, "Peak data rate: %ld", ieee_to_long(pd+offset2+20)); - proto_tree_add_item(rsvp_object_tree, offset2+24, 4, + proto_tree_add_text(rsvp_object_tree, offset2+24, 4, "Minimum policed unit: %d", pntohl(pd+offset2+24)); - proto_tree_add_item(rsvp_object_tree, offset2+28, 4, + proto_tree_add_text(rsvp_object_tree, offset2+28, 4, "Maximum policed unit: %d", pntohl(pd+offset2+28)); if (flowspec->service_header!=QOS_GUARANTEED) @@ -689,21 +684,21 @@ dissect_rsvp(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) /* Guaranteed-rate RSpec */ is_param_str = match_strval(flowspec->param_id_rspec, svc_vals); if (!is_param_str) is_param_str="Unknown"; - proto_tree_add_item(rsvp_object_tree, offset2+32, 1, + proto_tree_add_text(rsvp_object_tree, offset2+32, 1, "Parameter ID: %d - %s", flowspec->param_id, is_param_str); - proto_tree_add_item(rsvp_object_tree, offset2+33, 1, + proto_tree_add_text(rsvp_object_tree, offset2+33, 1, "Parameter %d flags: %d", flowspec->param_id, flowspec->flags_rspec); - proto_tree_add_item(rsvp_object_tree, offset2+34, 2, + proto_tree_add_text(rsvp_object_tree, offset2+34, 2, "Length of parameter %d data: %d words, " "not including header", flowspec->param_id, pntohs(pd+offset2+34)); - proto_tree_add_item(rsvp_object_tree, offset2+36, 4, + proto_tree_add_text(rsvp_object_tree, offset2+36, 4, "Rate: %ld", ieee_to_long(pd+offset2+36)); - proto_tree_add_item(rsvp_object_tree, offset2+40, 4, + proto_tree_add_text(rsvp_object_tree, offset2+40, 4, "Slack term: %d", pntohl(pd+offset2+40)); @@ -719,17 +714,17 @@ dissect_rsvp(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) int tree_num; mylen = obj_length; - proto_item_add_subtree(ti, rsvp_object_tree, ETT_RSVP_ADSPEC); - proto_tree_add_item(rsvp_object_tree, offset, 2, "Length: %d", + rsvp_object_tree = proto_item_add_subtree(ti, ETT_RSVP_ADSPEC); + proto_tree_add_text(rsvp_object_tree, offset, 2, "Length: %d", obj_length); - proto_tree_add_item(rsvp_object_tree, offset+2, 1, + proto_tree_add_text(rsvp_object_tree, offset+2, 1, "Class number: %d - %s", obj->class, object_type); - proto_tree_add_item(rsvp_object_tree, offset2, 1, + proto_tree_add_text(rsvp_object_tree, offset2, 1, "Message format version: %d", (*((unsigned char *)pd+offset2))>>4); - proto_tree_add_item(rsvp_object_tree, offset2+2, 2, + proto_tree_add_text(rsvp_object_tree, offset2+2, 2, "Data length: %d words, not including header", pntohs(pd+offset2+2)); offset2+=4; @@ -739,18 +734,17 @@ dissect_rsvp(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) shdr = (service_hdr *)(pd + offset2); str = match_strval(shdr->service_num, adspec_services); - ti = proto_tree_add_item(rsvp_object_tree, offset2, + ti = proto_tree_add_text(rsvp_object_tree, offset2, (pntohs(&shdr->length)+1)<<2, str?str:"Unknown"); - adspec_tree = proto_tree_new(); - proto_item_add_subtree(ti, adspec_tree, tree_num++); - proto_tree_add_item(adspec_tree, offset2, 1, + adspec_tree = proto_item_add_subtree(ti, tree_num++); + proto_tree_add_text(adspec_tree, offset2, 1, "Service header %d - %s", shdr->service_num, str); - proto_tree_add_item(adspec_tree, offset2+1, 1, + proto_tree_add_text(adspec_tree, offset2+1, 1, (shdr->break_bit&0x80)? "Break bit set":"Break bit not set"); - proto_tree_add_item(adspec_tree, offset2+2, 2, + proto_tree_add_text(adspec_tree, offset2+2, 2, "Data length: %d words, not including header", pntohs(&shdr->length)); offset2+=4; i=(pntohs(&shdr->length)+1)<<2; mylen-=4; @@ -767,7 +761,7 @@ dissect_rsvp(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) case 135: case 136: /* 32-bit unsigned integer */ - proto_tree_add_item(adspec_tree, offset2, + proto_tree_add_text(adspec_tree, offset2, (pntohs(&phdr->length)+1)<<2, "%s - %lu (type %d, length %d)", str, @@ -777,7 +771,7 @@ dissect_rsvp(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) case 6: /* IEEE float */ - proto_tree_add_item(adspec_tree, offset2, + proto_tree_add_text(adspec_tree, offset2, (pntohs(&phdr->length)+1)<<2, "%s - %lu (type %d, length %d)", str, @@ -785,14 +779,14 @@ dissect_rsvp(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) phdr->id, pntohs(&phdr->length)); break; default: - proto_tree_add_item(adspec_tree, offset2, + proto_tree_add_text(adspec_tree, offset2, (pntohs(&phdr->length)+1)<<2, "%s (type %d, length %d)", str, phdr->id, pntohs(&phdr->length)); } } else { - proto_tree_add_item(adspec_tree, offset2, + proto_tree_add_text(adspec_tree, offset2, (pntohs(&phdr->length)+1)<<2, "Unknown (type %d, length %d)", phdr->id, pntohs(&phdr->length)); @@ -806,33 +800,33 @@ dissect_rsvp(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) } case RSVP_CLASS_INTEGRITY : - proto_item_add_subtree(ti, rsvp_object_tree, ETT_RSVP_INTEGRITY); - proto_tree_add_item(rsvp_object_tree, offset, 2, "Length: %d", + rsvp_object_tree = proto_item_add_subtree(ti, ETT_RSVP_INTEGRITY); + proto_tree_add_text(rsvp_object_tree, offset, 2, "Length: %d", obj_length); - proto_tree_add_item(rsvp_object_tree, offset+2, 1, + proto_tree_add_text(rsvp_object_tree, offset+2, 1, "Class number: %d - %s", obj->class, object_type); goto default_class; case RSVP_CLASS_POLICY : - proto_item_add_subtree(ti, rsvp_object_tree, ETT_RSVP_POLICY); - proto_tree_add_item(rsvp_object_tree, offset, 2, "Length: %d", + rsvp_object_tree = proto_item_add_subtree(ti, ETT_RSVP_POLICY); + proto_tree_add_text(rsvp_object_tree, offset, 2, "Length: %d", obj_length); - proto_tree_add_item(rsvp_object_tree, offset+2, 1, + proto_tree_add_text(rsvp_object_tree, offset+2, 1, "Class number: %d - %s", obj->class, object_type); goto default_class; default : - proto_item_add_subtree(ti, rsvp_object_tree, ETT_RSVP_UNKNOWN_CLASS); - proto_tree_add_item(rsvp_object_tree, offset, 2, "Length: %d", + rsvp_object_tree = proto_item_add_subtree(ti, ETT_RSVP_UNKNOWN_CLASS); + proto_tree_add_text(rsvp_object_tree, offset, 2, "Length: %d", obj_length); - proto_tree_add_item(rsvp_object_tree, offset+2, 1, + proto_tree_add_text(rsvp_object_tree, offset+2, 1, "Class number: %d - %s", obj->class, object_type); default_class: i = obj_length - sizeof(rsvp_object); - proto_tree_add_item(rsvp_object_tree, offset2, i, + proto_tree_add_text(rsvp_object_tree, offset2, i, "Data (%d bytes)", i); break; |