aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Mathieson <martin.r.mathieson@googlemail.com>2012-01-11 21:31:11 +0000
committerMartin Mathieson <martin.r.mathieson@googlemail.com>2012-01-11 21:31:11 +0000
commit427122a2209ce5a149e345402f3eca2f81faaaff (patch)
treeea130a4f84f79399e7dde096b153609205f70016
parent98fb51a3eda482d0c059155de90e4cd4de3bb1e9 (diff)
"Call nas-eps" dissector for nas_rrc_r8_lte and nas_rrc_r9_lte frames that have L3 payloads.
svn path=/trunk/; revision=40441
-rw-r--r--epan/dissectors/packet-catapult-dct2000.c50
1 files changed, 50 insertions, 0 deletions
diff --git a/epan/dissectors/packet-catapult-dct2000.c b/epan/dissectors/packet-catapult-dct2000.c
index db85cdf5fd..94a488dc63 100644
--- a/epan/dissectors/packet-catapult-dct2000.c
+++ b/epan/dissectors/packet-catapult-dct2000.c
@@ -1852,6 +1852,8 @@ static void attach_pdcp_lte_info(packet_info *pinfo)
p_pdcp_lte_info->udp_checkum_present = outhdr_values[i++];
p_pdcp_lte_info->profile = outhdr_values[i];
+ /* Remaining 2 (fixed) fields are ah_length and gre_checksum */
+
/* Store info in packet */
p_add_proto_data(pinfo->fd, proto_pdcp_lte, p_pdcp_lte_info);
}
@@ -2204,6 +2206,54 @@ dissect_catapult_dct2000(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
+ else if ((strcmp(protocol_name, "nas_rrc_r8_lte") == 0) ||
+ (strcmp(protocol_name, "nas_rrc_r9_lte") == 0)) {
+ gboolean nas_body_found = TRUE;
+ guint8 opcode = tvb_get_guint8(tvb, offset++);
+ switch (opcode) {
+ case 2: /* DATA IND */
+ case 3: /* DATA REQ */
+ /* UEId */
+ offset += 2; /* tag */
+ offset += 2; /* 2 wasted bytes */
+ proto_tree_add_item(tree, hf_catapult_dct2000_lte_ueid,
+ tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ break;
+ case 6: /* ESTABLISH REQ */
+ /* UEId */
+ offset += 2; /* tag */
+ offset += 2; /* 2 wasted bytes */
+ proto_tree_add_item(tree, hf_catapult_dct2000_lte_ueid,
+ tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ offset += 3; /* Establish cause */
+ offset += 3; /* Priority */
+ break;
+ case 8: /* RELEASE IND */
+ /* UEId */
+ offset += 2; /* tag */
+ offset += 2; /* 2 wasted bytes */
+ proto_tree_add_item(tree, hf_catapult_dct2000_lte_ueid,
+ tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+
+ offset += 3; /* Release cause */
+ break;
+
+ default:
+ nas_body_found = FALSE;
+ break;
+ }
+
+ /* Look up dissector if if looks right */
+ if (nas_body_found) {
+ offset += 2; /* L3 tag + len */
+ protocol_handle = find_dissector("nas-eps");
+ }
+ }
+
/* Note that the first item of pinfo->pseudo_header->dct2000 will contain
the pseudo-header needed (in some cases) by the Wireshark dissector that
this packet data will be handed off to. */