diff options
author | Anders Broman <anders.broman@ericsson.com> | 2011-05-04 17:24:48 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2011-05-04 17:24:48 +0000 |
commit | 16c0bcbdeed22cdbab91e6e06afe88afb8fb269b (patch) | |
tree | a955358aa5b30d0baa3643b4aa62ad2a985320e7 /asn1 | |
parent | 2a7adf624a1092a82c1d65c404c4fad3881e1af9 (diff) |
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')
-rw-r--r-- | asn1/lte-rrc/lte-rrc.cnf | 37 | ||||
-rw-r--r-- | asn1/lte-rrc/packet-lte-rrc-template.c | 1 |
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" |