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