aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-l2tp.c
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2014-06-29 17:00:12 -0400
committerMichael Mann <mmann78@netscape.net>2014-06-29 21:18:04 +0000
commitdd63ae2b8c889aa91577efe4621e6d0fe5432a99 (patch)
treeda25c2914161eba08b579a96a533b482f225c067 /epan/dissectors/packet-l2tp.c
parente39e44df246c89c31d708923a181f99810240731 (diff)
proto_tree_add_subtree[_format]
Change-Id: Id00f456479415adf0a219af6c9a2108d4b3642d0 Reviewed-on: https://code.wireshark.org/review/2702 Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan/dissectors/packet-l2tp.c')
-rw-r--r--epan/dissectors/packet-l2tp.c86
1 files changed, 32 insertions, 54 deletions
diff --git a/epan/dissectors/packet-l2tp.c b/epan/dissectors/packet-l2tp.c
index 8a4047600c..ebec397251 100644
--- a/epan/dissectors/packet-l2tp.c
+++ b/epan/dissectors/packet-l2tp.c
@@ -1305,7 +1305,6 @@ static int dissect_l2tp_cisco_avps(tvbuff_t *tvb, packet_info *pinfo _U_, proto_
guint32 avp_vendor_id;
guint16 avp_len;
guint16 ver_len_hidden;
- proto_item *tf, *te;
proto_tree *l2tp_avp_tree, *l2tp_avp_tree_sub;
ver_len_hidden = tvb_get_ntohs(tvb, offset);
@@ -1313,14 +1312,11 @@ static int dissect_l2tp_cisco_avps(tvbuff_t *tvb, packet_info *pinfo _U_, proto_
avp_vendor_id = tvb_get_ntohs(tvb, offset + 2);
avp_type = tvb_get_ntohs(tvb, offset + 4);
- tf = proto_tree_add_text(tree, tvb, offset,
- avp_len, "Vendor %s: %s AVP",
+ l2tp_avp_tree = proto_tree_add_subtree_format(tree, tvb, offset,
+ avp_len, ett_l2tp_avp, NULL, "Vendor %s: %s AVP",
val_to_str_ext(avp_vendor_id, &sminmpec_values_ext, "Unknown (%u)"),
val_to_str(avp_type, cisco_avp_type_vals, "Unknown (%u)"));
-
- l2tp_avp_tree = proto_item_add_subtree(tf, ett_l2tp_avp);
-
proto_tree_add_item(l2tp_avp_tree, hf_l2tp_avp_mandatory, tvb, offset, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(l2tp_avp_tree, hf_l2tp_avp_hidden, tvb, offset, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(l2tp_avp_tree, hf_l2tp_avp_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -1347,9 +1343,8 @@ static int dissect_l2tp_cisco_avps(tvbuff_t *tvb, packet_info *pinfo _U_, proto_
break;
case CISCO_PW_CAPABILITY_LIST:
- te = proto_tree_add_text(l2tp_avp_tree, tvb, offset, avp_len,
- "Pseudowire Capabilities List");
- l2tp_avp_tree_sub = proto_item_add_subtree(te, ett_l2tp_avp_sub);
+ l2tp_avp_tree_sub = proto_tree_add_subtree(l2tp_avp_tree, tvb, offset, avp_len,
+ ett_l2tp_avp_sub, NULL, "Pseudowire Capabilities List");
while (avp_len >= 2) {
proto_tree_add_item(l2tp_avp_tree_sub, hf_l2tp_cisco_pw_type, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
@@ -1414,7 +1409,6 @@ dissect_l2tp_vnd_cablelabs_avps(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
guint32 avp_vendor_id;
guint32 avp_len;
guint16 ver_len_hidden;
- proto_item *tf;
proto_tree *l2tp_avp_tree;
ver_len_hidden = tvb_get_ntohs(tvb, offset);
@@ -1422,11 +1416,10 @@ dissect_l2tp_vnd_cablelabs_avps(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
avp_vendor_id = tvb_get_ntohs(tvb, offset + 2);
avp_type = tvb_get_ntohs(tvb, offset + 4);
- tf = proto_tree_add_text(tree, tvb, offset,
- avp_len, "Vendor %s: %s AVP",
+ l2tp_avp_tree = proto_tree_add_subtree_format(tree, tvb, offset,
+ avp_len, ett_l2tp_avp, NULL, "Vendor %s: %s AVP",
val_to_str_ext(avp_vendor_id, &sminmpec_values_ext, "Unknown (%u)"),
val_to_str(avp_type, cablelabs_avp_type_vals, "Unknown (%u)"));
- l2tp_avp_tree = proto_item_add_subtree(tf, ett_l2tp_avp);
proto_tree_add_item(l2tp_avp_tree, hf_l2tp_avp_mandatory, tvb, offset, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(l2tp_avp_tree, hf_l2tp_avp_hidden, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -1545,13 +1538,11 @@ static void process_control_avps(tvbuff_t *tvb,
} else {
/* Vendor-Specific AVP */
if (!dissector_try_uint_new(l2tp_vendor_avp_dissector_table, avp_vendor_id, avp_tvb, pinfo, l2tp_tree, FALSE, l2tp_cntrl_data)){
- tf = proto_tree_add_text(l2tp_tree, tvb, idx,
- avp_len, "Vendor %s AVP Type %u",
+ l2tp_avp_tree = proto_tree_add_subtree_format(l2tp_tree, tvb, idx,
+ avp_len, ett_l2tp_avp, NULL, "Vendor %s AVP Type %u",
val_to_str_ext(avp_vendor_id, &sminmpec_values_ext, "Unknown (%u)"),
avp_type);
- l2tp_avp_tree = proto_item_add_subtree(tf, ett_l2tp_avp);
-
proto_tree_add_item(l2tp_avp_tree, hf_l2tp_avp_mandatory, tvb, idx, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(l2tp_avp_tree, hf_l2tp_avp_hidden, tvb, idx, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(l2tp_avp_tree, hf_l2tp_avp_length, tvb, idx, 2, ENC_BIG_ENDIAN);
@@ -1575,12 +1566,10 @@ static void process_control_avps(tvbuff_t *tvb,
}
/* IETF AVP:s */
- tf = proto_tree_add_text(l2tp_tree, tvb, idx,
- avp_len, "%s AVP",
+ l2tp_avp_tree = proto_tree_add_subtree_format(l2tp_tree, tvb, idx,
+ avp_len, ett_l2tp_avp, NULL, "%s AVP",
val_to_str_ext(avp_type, &avp_type_vals_ext, "Unknown (%u)"));
- l2tp_avp_tree = proto_item_add_subtree(tf, ett_l2tp_avp);
-
proto_tree_add_item(l2tp_avp_tree, hf_l2tp_avp_mandatory, tvb, idx, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(l2tp_avp_tree, hf_l2tp_avp_hidden, tvb, idx, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(l2tp_avp_tree, hf_l2tp_avp_length, tvb, idx, 2, ENC_BIG_ENDIAN);
@@ -1938,9 +1927,8 @@ static void process_control_avps(tvbuff_t *tvb,
store_ccid(tunnel, tvb, idx, msg_type);
break;
case PW_CAPABILITY_LIST:
- te = proto_tree_add_text(l2tp_avp_tree, tvb, idx, avp_len,
- "Pseudowire Capabilities List");
- l2tp_avp_tree_sub = proto_item_add_subtree(te, ett_l2tp_avp_sub);
+ l2tp_avp_tree_sub = proto_tree_add_subtree(l2tp_avp_tree, tvb, idx, avp_len,
+ ett_l2tp_avp_sub, NULL, "Pseudowire Capabilities List");
while (avp_len >= 2) {
proto_tree_add_item(l2tp_avp_tree_sub, hf_l2tp_avp_pw_type, tvb, idx, 2, ENC_BIG_ENDIAN);
@@ -2230,8 +2218,8 @@ static void
process_l2tpv3_data_udp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
l2tpv3_conversation_t *l2tp_conv)
{
- proto_tree *l2tp_tree = NULL, *ctrl_tree;
- proto_item *l2tp_item = NULL, *ti;
+ proto_tree *l2tp_tree, *ctrl_tree;
+ proto_item *l2tp_item;
int idx = 0;
int control;
@@ -2242,16 +2230,16 @@ process_l2tpv3_data_udp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
idx += 2; /* Skip the reserved */
sid = tvb_get_ntohl(tvb, idx);
+ l2tp_item = proto_tree_add_item(tree, proto_l2tp, tvb, 0, -1, ENC_NA);
+ l2tp_tree = proto_item_add_subtree(l2tp_item, ett_l2tp);
+
if (tree) {
- l2tp_item = proto_tree_add_item(tree, proto_l2tp, tvb, 0, -1, ENC_NA);
- l2tp_tree = proto_item_add_subtree(l2tp_item, ett_l2tp);
proto_item_append_text(l2tp_item, " version 3");
- ti = proto_tree_add_text(l2tp_tree, tvb, 0, 2,
- "Packet Type: %s Session Id=%u",
+ ctrl_tree = proto_tree_add_subtree_format(l2tp_tree, tvb, 0, 2,
+ ett_l2tp_ctrl, NULL, "Packet Type: %s Session Id=%u",
data_msg, sid);
- ctrl_tree = proto_item_add_subtree(ti, ett_l2tp_ctrl);
proto_tree_add_uint(ctrl_tree, hf_l2tp_type, tvb, 0, 2, control);
proto_tree_add_boolean(ctrl_tree, hf_l2tp_length_bit, tvb, 0, 2, control);
proto_tree_add_boolean(ctrl_tree, hf_l2tp_seq_bit, tvb, 0, 2, control);
@@ -2303,7 +2291,7 @@ process_l2tpv3_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
l2tpv3_conversation_t *l2tp_conv)
{
proto_tree *l2tp_tree = NULL, *ctrl_tree;
- proto_item *l2tp_item = NULL, *ti;
+ proto_item *l2tp_item = NULL;
int idx = baseIdx;
int tmp_idx;
@@ -2391,11 +2379,10 @@ process_l2tpv3_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
if (baseIdx) {
proto_tree_add_item(l2tp_tree, hf_l2tp_sid, tvb, 0, 4, ENC_BIG_ENDIAN);
}
- ti = proto_tree_add_text(l2tp_tree, tvb, baseIdx, 2,
- "Packet Type: %s Control Connection Id=%d",
+ ctrl_tree = proto_tree_add_subtree_format(l2tp_tree, tvb, baseIdx, 2,
+ ett_l2tp_ctrl, NULL, "Packet Type: %s Control Connection Id=%d",
(CONTROL_BIT(control) ? control_msg : data_msg), ccid);
- ctrl_tree = proto_item_add_subtree(ti, ett_l2tp_ctrl);
proto_tree_add_uint(ctrl_tree, hf_l2tp_type, tvb, baseIdx, 2, control);
proto_tree_add_boolean(ctrl_tree, hf_l2tp_length_bit, tvb, baseIdx, 2, control);
proto_tree_add_boolean(ctrl_tree, hf_l2tp_seq_bit, tvb, baseIdx, 2, control);
@@ -2403,25 +2390,17 @@ process_l2tpv3_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
}
idx = baseIdx + 2;
if (LENGTH_BIT(control)) {
- if (tree) {
- proto_tree_add_item(l2tp_tree, hf_l2tp_length, tvb, idx, 2, ENC_BIG_ENDIAN);
- }
+ proto_tree_add_item(l2tp_tree, hf_l2tp_length, tvb, idx, 2, ENC_BIG_ENDIAN);
idx += 2;
}
- if (tree) {
- proto_tree_add_item(l2tp_tree, hf_l2tp_ccid, tvb, idx, 4, ENC_BIG_ENDIAN);
- }
+ proto_tree_add_item(l2tp_tree, hf_l2tp_ccid, tvb, idx, 4, ENC_BIG_ENDIAN);
idx += 4;
if (SEQUENCE_BIT(control)) {
- if (tree) {
- proto_tree_add_item(l2tp_tree, hf_l2tp_Ns, tvb, idx, 2, ENC_BIG_ENDIAN);
- }
+ proto_tree_add_item(l2tp_tree, hf_l2tp_Ns, tvb, idx, 2, ENC_BIG_ENDIAN);
idx += 2;
- if (tree) {
- proto_tree_add_item(l2tp_tree, hf_l2tp_Nr, tvb, idx, 2, ENC_BIG_ENDIAN);
- }
+ proto_tree_add_item(l2tp_tree, hf_l2tp_Nr, tvb, idx, 2, ENC_BIG_ENDIAN);
idx += 2;
}
@@ -2468,8 +2447,8 @@ process_l2tpv3_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
static int
dissect_l2tp_udp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
{
- proto_tree *l2tp_tree = NULL, *ctrl_tree;
- proto_item *l2tp_item = NULL, *ti;
+ proto_tree *l2tp_tree, *ctrl_tree;
+ proto_item *l2tp_item;
int idx = 0;
int tmp_idx;
guint16 length = 0; /* Length field */
@@ -2613,15 +2592,14 @@ dissect_l2tp_udp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data
set_actual_length(tvb, length);
}
- if (tree) {
- l2tp_item = proto_tree_add_item(tree,proto_l2tp, tvb, 0, -1, ENC_NA);
- l2tp_tree = proto_item_add_subtree(l2tp_item, ett_l2tp);
+ l2tp_item = proto_tree_add_item(tree,proto_l2tp, tvb, 0, -1, ENC_NA);
+ l2tp_tree = proto_item_add_subtree(l2tp_item, ett_l2tp);
- ti = proto_tree_add_text(l2tp_tree, tvb, 0, 2,
+ if (tree) {
+ ctrl_tree = proto_tree_add_subtree_format(l2tp_tree, tvb, 0, 2, ett_l2tp_ctrl, NULL,
"Packet Type: %s Tunnel Id=%d Session Id=%d",
(CONTROL_BIT(control) ? control_msg : data_msg), tid, cid);
- ctrl_tree = proto_item_add_subtree(ti, ett_l2tp_ctrl);
proto_tree_add_uint(ctrl_tree, hf_l2tp_type, tvb, 0, 2, control);
proto_tree_add_boolean(ctrl_tree, hf_l2tp_length_bit, tvb, 0, 2, control);
proto_tree_add_boolean(ctrl_tree, hf_l2tp_seq_bit, tvb, 0, 2, control);