"Call nas-eps" dissector for nas_rrc_r8_lte and nas_rrc_r9_lte frames that have L3 payloads.

svn path=/trunk/; revision=40441
This commit is contained in:
Martin Mathieson 2012-01-11 21:31:11 +00:00
parent 98fb51a3ed
commit 427122a220
1 changed files with 50 additions and 0 deletions

View File

@ -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. */