summaryrefslogtreecommitdiff
path: root/asn1/lte-rrc
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2011-05-04 17:24:48 +0000
committerAnders Broman <anders.broman@ericsson.com>2011-05-04 17:24:48 +0000
commit16c0bcbdeed22cdbab91e6e06afe88afb8fb269b (patch)
treea955358aa5b30d0baa3643b4aa62ad2a985320e7 /asn1/lte-rrc
parent2a7adf624a1092a82c1d65c404c4fad3881e1af9 (diff)
downloadwireshark-16c0bcbdeed22cdbab91e6e06afe88afb8fb269b.tar.gz
From Pascal Quantin:
Add an expert check for the MS Classmark 2 decoding in UE EUTRA Capability message and a few missing message type display in the column text. svn path=/trunk/; revision=36984
Diffstat (limited to 'asn1/lte-rrc')
-rw-r--r--asn1/lte-rrc/lte-rrc.cnf37
-rw-r--r--asn1/lte-rrc/packet-lte-rrc-template.c1
2 files changed, 34 insertions, 4 deletions
diff --git a/asn1/lte-rrc/lte-rrc.cnf b/asn1/lte-rrc/lte-rrc.cnf
index 9c0b20c85d..cf453f04a1 100644
--- a/asn1/lte-rrc/lte-rrc.cnf
+++ b/asn1/lte-rrc/lte-rrc.cnf
@@ -57,7 +57,7 @@ VarMeasReport
%(DEFAULT_BODY)s
if ((nas_eps_tvb)&&(nas_eps_handle))
- call_dissector(nas_eps_handle,nas_eps_tvb,%(ACTX)s->pinfo, tree);
+ call_dissector(nas_eps_handle,nas_eps_tvb,actx->pinfo, tree);
#.FN_BODY UE-CapabilityRAT-Container
lte_rrc_rat_type_value = -1;
@@ -95,24 +95,36 @@ VarMeasReport
tvbuff_t *ue_eutra_cap_tvb=NULL;
%(DEFAULT_BODY)s
+#.FN_FTR UE-CapabilityRAT-Container/ueCapabilityRAT-Container
if(ue_eutra_cap_tvb){
guint32 length;
proto_item *item;
proto_tree *subtree;
+ guint8 byte;
switch(lte_rrc_rat_type_value){
case 0:
/* eutra */
- dissect_lte_rrc_UE_EUTRA_Capability_PDU(ue_eutra_cap_tvb,%(ACTX)s->pinfo, tree);
+ dissect_lte_rrc_UE_EUTRA_Capability_PDU(ue_eutra_cap_tvb, actx->pinfo, tree);
break;
case 1:
/* utra */
- dissect_rrc_InterRATHandoverInfo_PDU(ue_eutra_cap_tvb, %(ACTX)s->pinfo, tree);
+ dissect_rrc_InterRATHandoverInfo_PDU(ue_eutra_cap_tvb, actx->pinfo, tree);
break;
case 2:
/* geran-cs */
/* Mobile Station Classmark 2 is formatted as TLV with the two first bytes set to 0x33 0x03 */
item = proto_tree_add_text(tree, ue_eutra_cap_tvb, 0, 5, "Mobile Station Classmark 2");
subtree = proto_item_add_subtree(item, ett_lte_rrc_UE_CapabilityRAT_Container);
+ byte = tvb_get_guint8(ue_eutra_cap_tvb, 0);
+ if (byte != 0x33) {
+ expert_add_info_format(actx->pinfo, item, PI_MALFORMED, PI_ERROR,
+ "Unexpected type value (found 0x%02X)", byte);
+ }
+ byte = tvb_get_guint8(ue_eutra_cap_tvb, 1);
+ if (byte != 0x03) {
+ expert_add_info_format(actx->pinfo, item, PI_MALFORMED, PI_ERROR,
+ "Unexpected length value (found %d)", byte);
+ }
de_ms_cm_2(ue_eutra_cap_tvb, subtree, actx->pinfo, 2, 3, NULL, 0);
/* Mobile Station Classmark 3 is formatted as V */
length = tvb_length(ue_eutra_cap_tvb)-5;
@@ -135,8 +147,8 @@ if(ue_eutra_cap_tvb){
default:
break;
}
-
}
+
#.FN_BODY UE-EUTRA-Capability/featureGroupIndicators VAL_PTR = &featureGroupIndicators_tvb
tvbuff_t *featureGroupIndicators_tvb=NULL;
%(DEFAULT_BODY)s
@@ -279,6 +291,14 @@ col_append_str(actx->pinfo->cinfo, COL_INFO, "SecurityModeCommand ");
col_append_str(actx->pinfo->cinfo, COL_INFO, "UECapabilityEnquiry ");
+#.FN_HDR CounterCheck
+
+col_append_str(actx->pinfo->cinfo, COL_INFO, "CounterCheck ");
+
+#.FN_HDR UEInformationRequest-r9
+
+col_append_str(actx->pinfo->cinfo, COL_INFO, "UEInformationRequest-r9 ");
+
#.FN_HDR RRCConnectionReestablishmentRequest
col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionReestablishmentRequest ");
@@ -330,3 +350,12 @@ col_append_str(actx->pinfo->cinfo, COL_INFO, "ULInformationTransfer ");
#.FN_HDR CounterCheckResponse
col_append_str(actx->pinfo->cinfo, COL_INFO, "CounterCheckResponse ");
+
+#.FN_HDR UEInformationResponse-r9
+
+col_append_str(actx->pinfo->cinfo, COL_INFO, "UEInformationResponse-r9 ");
+
+#.FN_HDR ProximityIndication-r9
+
+col_append_str(actx->pinfo->cinfo, COL_INFO, "ProximityIndication-r9 ");
+
diff --git a/asn1/lte-rrc/packet-lte-rrc-template.c b/asn1/lte-rrc/packet-lte-rrc-template.c
index 4832d3ac09..4c9b3bb4f3 100644
--- a/asn1/lte-rrc/packet-lte-rrc-template.c
+++ b/asn1/lte-rrc/packet-lte-rrc-template.c
@@ -33,6 +33,7 @@
#include <glib.h>
#include <epan/packet.h>
#include <epan/asn1.h>
+#include <epan/expert.h>
#include "packet-ber.h"
#include "packet-per.h"