diff options
author | etxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7> | 2009-03-03 18:24:10 +0000 |
---|---|---|
committer | etxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7> | 2009-03-03 18:24:10 +0000 |
commit | b121ffd1953fa6cb4cd1fc42534422a2ea7a5767 (patch) | |
tree | ebef67360cb146eabd7133dac124a32a1180c865 | |
parent | 7a737048c47750964f7db112c20af741651004bc (diff) |
Update UMA towards the most recent 3GPP spec, and export InterRATHandoverInfo
from the RRC dissector.
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@27584 f5534014-38df-0310-8fa8-9805f1628bb7
-rw-r--r-- | asn1/rrc/Makefile.common | 6 | ||||
-rw-r--r-- | asn1/rrc/rrc.cnf | 4 | ||||
-rw-r--r-- | epan/dissectors/packet-rrc.c | 174 | ||||
-rw-r--r-- | epan/dissectors/packet-rrc.h | 45 | ||||
-rw-r--r-- | epan/dissectors/packet-uma.c | 550 |
5 files changed, 524 insertions, 255 deletions
diff --git a/asn1/rrc/Makefile.common b/asn1/rrc/Makefile.common index d2bdf07ea8..fee8b3dc30 100644 --- a/asn1/rrc/Makefile.common +++ b/asn1/rrc/Makefile.common @@ -23,9 +23,10 @@ PROTOCOL_NAME = rrc DISSECTOR_FILES = \ - packet-$(PROTOCOL_NAME).c + packet-$(PROTOCOL_NAME).c \ + packet-$(PROTOCOL_NAME).h -# NEED_PACKET_PROTO_H = +NEED_PACKET_PROTO_H = 1 EXT_ASN_FILE_LIST = @@ -40,6 +41,7 @@ EXTRA_DIST = \ Makefile.nmake \ $(ASN_FILE_LIST) \ packet-$(PROTOCOL_NAME)-template.c \ + packet-$(PROTOCOL_NAME)-template.h \ $(PROTOCOL_NAME).cnf SRC_FILES = \ diff --git a/asn1/rrc/rrc.cnf b/asn1/rrc/rrc.cnf index df582ab282..52489b13cb 100644 --- a/asn1/rrc/rrc.cnf +++ b/asn1/rrc/rrc.cnf @@ -8,6 +8,10 @@ PER UNALIGNED #.END +#.EXPORTS +InterRATHandoverInfo +InterRATHandoverInfo_PDU + #.OMIT_ASSIGNMENT #.END diff --git a/epan/dissectors/packet-rrc.c b/epan/dissectors/packet-rrc.c index 10df36cb34..78a4c93bdb 100644 --- a/epan/dissectors/packet-rrc.c +++ b/epan/dissectors/packet-rrc.c @@ -1,7 +1,7 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ /* packet-rrc.c */ -/* ../../tools/asn2wrs.py -p rrc -c ./rrc.cnf -s ./packet-rrc-template -D . Class-definitions.asn PDU-definitions.asn InformationElements.asn Constant-definitions.asn Internode-definitions.asn */ +/* ../../tools/asn2wrs.py -p rrc -c rrc.cnf -s packet-rrc-template Class-definitions.asn PDU-definitions.asn InformationElements.asn Constant-definitions.asn Internode-definitions.asn */ /* Input file: packet-rrc-template.c */ @@ -209,7 +209,7 @@ static int hf_rrc_BCCH_BCH_Message_PDU = -1; /* BCCH_BCH_Message */ static int hf_rrc_MCCH_Message_PDU = -1; /* MCCH_Message */ static int hf_rrc_MSCH_Message_PDU = -1; /* MSCH_Message */ static int hf_rrc_HandoverToUTRANCommand_PDU = -1; /* HandoverToUTRANCommand */ -static int hf_rrc_InterRATHandoverInfo_PDU = -1; /* InterRATHandoverInfo */ +static int hf_rrc_rrc_InterRATHandoverInfo_PDU = -1; /* InterRATHandoverInfo */ static int hf_rrc_UE_RadioAccessCapabilityInfo_PDU = -1; /* UE_RadioAccessCapabilityInfo */ static int hf_rrc_MasterInformationBlock_PDU = -1; /* MasterInformationBlock */ static int hf_rrc_SysInfoType1_PDU = -1; /* SysInfoType1 */ @@ -18803,7 +18803,7 @@ static const per_choice_t ActiveSetUpdate_choice[] = { static int dissect_rrc_ActiveSetUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 92 "rrc.cnf" +#line 96 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "ActiveSetUpdate"); } @@ -21970,7 +21970,7 @@ static const per_choice_t AssistanceDataDelivery_choice[] = { static int dissect_rrc_AssistanceDataDelivery(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 110 "rrc.cnf" +#line 114 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "AssistanceDataDelivery"); } @@ -22370,7 +22370,7 @@ static const per_choice_t CellChangeOrderFromUTRAN_choice[] = { static int dissect_rrc_CellChangeOrderFromUTRAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 116 "rrc.cnf" +#line 120 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "CellChangeOrderFromUTRAN"); } @@ -39594,7 +39594,7 @@ static const per_choice_t CellUpdateConfirm_choice[] = { static int dissect_rrc_CellUpdateConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 140 "rrc.cnf" +#line 144 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "CellUpdateConfirm"); } @@ -39749,7 +39749,7 @@ static const per_choice_t CounterCheck_choice[] = { static int dissect_rrc_CounterCheck(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 146 "rrc.cnf" +#line 150 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "CounterCheck"); } @@ -39767,7 +39767,7 @@ dissect_rrc_CounterCheck(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_ static int dissect_rrc_NAS_Message(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 74 "rrc.cnf" +#line 78 "rrc.cnf" tvbuff_t *nas_message_tvb=NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, @@ -39884,7 +39884,7 @@ static const per_choice_t DownlinkDirectTransfer_choice[] = { static int dissect_rrc_DownlinkDirectTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 158 "rrc.cnf" +#line 162 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "DownlinkDirectTransfer"); } @@ -40308,7 +40308,7 @@ static const per_choice_t HandoverFromUTRANCommand_GSM_choice[] = { static int dissect_rrc_HandoverFromUTRANCommand_GSM(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 176 "rrc.cnf" +#line 180 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "HandoverFromUTRANCommand-GSM"); } @@ -40454,7 +40454,7 @@ static const per_choice_t HandoverFromUTRANCommand_CDMA2000_choice[] = { static int dissect_rrc_HandoverFromUTRANCommand_CDMA2000(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 182 "rrc.cnf" +#line 186 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "HandoverFromUTRANCommand-CDMA2000"); } @@ -47614,7 +47614,7 @@ static const per_choice_t MeasurementControl_choice[] = { static int dissect_rrc_MeasurementControl(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 260 "rrc.cnf" +#line 264 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "MeasurementControl"); } @@ -47708,7 +47708,7 @@ static const per_sequence_t PagingType2_sequence[] = { static int dissect_rrc_PagingType2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 284 "rrc.cnf" +#line 288 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "PagingType2"); } @@ -48739,7 +48739,7 @@ static const per_choice_t PhysicalChannelReconfiguration_choice[] = { static int dissect_rrc_PhysicalChannelReconfiguration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 290 "rrc.cnf" +#line 294 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "PhysicalChannelReconfiguration"); } @@ -50045,7 +50045,7 @@ static const per_choice_t PhysicalSharedChannelAllocation_choice[] = { static int dissect_rrc_PhysicalSharedChannelAllocation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 308 "rrc.cnf" +#line 312 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "PhysicalSharedChannelAllocation"); } @@ -51915,7 +51915,7 @@ static const per_choice_t RadioBearerReconfiguration_choice[] = { static int dissect_rrc_RadioBearerReconfiguration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 320 "rrc.cnf" +#line 324 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerReconfiguration"); } @@ -53099,7 +53099,7 @@ static const per_choice_t RadioBearerRelease_choice[] = { static int dissect_rrc_RadioBearerRelease(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 338 "rrc.cnf" +#line 342 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerRelease"); } @@ -55306,7 +55306,7 @@ static const per_choice_t RadioBearerSetup_choice[] = { static int dissect_rrc_RadioBearerSetup(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 356 "rrc.cnf" +#line 360 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerSetup"); } @@ -55827,7 +55827,7 @@ static const per_choice_t RRCConnectionRelease_choice[] = { static int dissect_rrc_RRCConnectionRelease(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 380 "rrc.cnf" +#line 384 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionRelease"); } @@ -56108,7 +56108,7 @@ static const per_choice_t SecurityModeCommand_choice[] = { static int dissect_rrc_SecurityModeCommand(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 422 "rrc.cnf" +#line 426 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "SecurityModeCommand"); } @@ -56223,7 +56223,7 @@ static const per_choice_t SignallingConnectionRelease_choice[] = { static int dissect_rrc_SignallingConnectionRelease(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 440 "rrc.cnf" +#line 444 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "SignallingConnectionRelease"); } @@ -57400,7 +57400,7 @@ static const per_choice_t TransportChannelReconfiguration_choice[] = { static int dissect_rrc_TransportChannelReconfiguration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 470 "rrc.cnf" +#line 474 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "TransportChannelReconfiguration"); } @@ -57547,7 +57547,7 @@ static const per_sequence_t TransportFormatCombinationControl_sequence[] = { static int dissect_rrc_TransportFormatCombinationControl(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 488 "rrc.cnf" +#line 492 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "TransportFormatCombinationControl"); } @@ -57836,7 +57836,7 @@ static const per_choice_t UECapabilityEnquiry_choice[] = { static int dissect_rrc_UECapabilityEnquiry(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 500 "rrc.cnf" +#line 504 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "UECapabilityEnquiry"); } @@ -57996,7 +57996,7 @@ static const per_choice_t UECapabilityInformationConfirm_choice[] = { static int dissect_rrc_UECapabilityInformationConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 512 "rrc.cnf" +#line 516 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "UECapabilityInformationConfirm"); } @@ -58762,7 +58762,7 @@ static const per_choice_t UplinkPhysicalChannelControl_choice[] = { static int dissect_rrc_UplinkPhysicalChannelControl(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 524 "rrc.cnf" +#line 528 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "UplinkPhysicalChannelControl"); } @@ -59076,7 +59076,7 @@ static const per_choice_t URAUpdateConfirm_choice[] = { static int dissect_rrc_URAUpdateConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 536 "rrc.cnf" +#line 540 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "URAUpdateConfirm"); } @@ -60072,7 +60072,7 @@ static const per_choice_t UTRANMobilityInformation_choice[] = { static int dissect_rrc_UTRANMobilityInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 548 "rrc.cnf" +#line 552 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "UTRANMobilityInformation"); } @@ -60261,7 +60261,7 @@ static const per_sequence_t HandoverFromUTRANCommand_GERANIu_sequence[] = { static int dissect_rrc_HandoverFromUTRANCommand_GERANIu(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 170 "rrc.cnf" +#line 174 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "HandoverFromUTRANCommand-GERANIu"); } @@ -60632,7 +60632,7 @@ static const per_sequence_t MBMSModifiedServicesInformation_sequence[] = { static int dissect_rrc_MBMSModifiedServicesInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 236 "rrc.cnf" +#line 240 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSModifiedServicesInformation"); } @@ -60836,7 +60836,7 @@ static const per_sequence_t ActiveSetUpdateComplete_sequence[] = { static int dissect_rrc_ActiveSetUpdateComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 98 "rrc.cnf" +#line 102 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "ActiveSetUpdateComplete"); } @@ -61009,7 +61009,7 @@ static const per_sequence_t ActiveSetUpdateFailure_sequence[] = { static int dissect_rrc_ActiveSetUpdateFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 104 "rrc.cnf" +#line 108 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "ActiveSetUpdateFailure"); } @@ -61158,7 +61158,7 @@ static const per_choice_t CellChangeOrderFromUTRANFailure_choice[] = { static int dissect_rrc_CellChangeOrderFromUTRANFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 122 "rrc.cnf" +#line 126 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "CellChangeOrderFromUTRANFailure"); } @@ -61250,7 +61250,7 @@ static const per_sequence_t CounterCheckResponse_sequence[] = { static int dissect_rrc_CounterCheckResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 152 "rrc.cnf" +#line 156 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "CounterCheckResponse"); } @@ -61301,7 +61301,7 @@ static const per_sequence_t HandoverToUTRANComplete_sequence[] = { static int dissect_rrc_HandoverToUTRANComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 164 "rrc.cnf" +#line 168 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "HandoverToUTRANComplete"); } @@ -62186,7 +62186,7 @@ static const per_sequence_t InitialDirectTransfer_sequence[] = { static int dissect_rrc_InitialDirectTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 194 "rrc.cnf" +#line 198 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "InitialDirectTransfer"); } @@ -62367,7 +62367,7 @@ static const per_sequence_t HandoverFromUTRANFailure_sequence[] = { static int dissect_rrc_HandoverFromUTRANFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 188 "rrc.cnf" +#line 192 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "HandoverFromUTRANFailure"); } @@ -62447,7 +62447,7 @@ static const per_sequence_t MeasurementControlFailure_sequence[] = { static int dissect_rrc_MeasurementControlFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 266 "rrc.cnf" +#line 270 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "MeasurementControlFailure"); } @@ -65798,7 +65798,7 @@ static const per_sequence_t MeasurementReport_sequence[] = { static int dissect_rrc_MeasurementReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 272 "rrc.cnf" +#line 276 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "MeasurementReport"); } @@ -65898,7 +65898,7 @@ static const per_sequence_t PhysicalChannelReconfigurationComplete_sequence[] = static int dissect_rrc_PhysicalChannelReconfigurationComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 296 "rrc.cnf" +#line 300 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "PhysicalChannelReconfigurationComplete"); } @@ -65949,7 +65949,7 @@ static const per_sequence_t PhysicalChannelReconfigurationFailure_sequence[] = { static int dissect_rrc_PhysicalChannelReconfigurationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 302 "rrc.cnf" +#line 306 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "PhysicalChannelReconfigurationFailure"); } @@ -66049,7 +66049,7 @@ static const per_sequence_t RadioBearerReconfigurationComplete_sequence[] = { static int dissect_rrc_RadioBearerReconfigurationComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 326 "rrc.cnf" +#line 330 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerReconfigurationComplete"); } @@ -66115,7 +66115,7 @@ static const per_sequence_t RadioBearerReconfigurationFailure_sequence[] = { static int dissect_rrc_RadioBearerReconfigurationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 332 "rrc.cnf" +#line 336 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerReconfigurationFailure"); } @@ -66215,7 +66215,7 @@ static const per_sequence_t RadioBearerReleaseComplete_sequence[] = { static int dissect_rrc_RadioBearerReleaseComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 344 "rrc.cnf" +#line 348 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerReleaseComplete"); } @@ -66267,7 +66267,7 @@ static const per_sequence_t RadioBearerReleaseFailure_sequence[] = { static int dissect_rrc_RadioBearerReleaseFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 350 "rrc.cnf" +#line 354 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerReleaseFailure"); } @@ -66368,7 +66368,7 @@ static const per_sequence_t RadioBearerSetupComplete_sequence[] = { static int dissect_rrc_RadioBearerSetupComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 362 "rrc.cnf" +#line 366 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerSetupComplete"); } @@ -66420,7 +66420,7 @@ static const per_sequence_t RadioBearerSetupFailure_sequence[] = { static int dissect_rrc_RadioBearerSetupFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 368 "rrc.cnf" +#line 372 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerSetupFailure"); } @@ -66471,7 +66471,7 @@ static const per_sequence_t RRCConnectionReleaseComplete_sequence[] = { static int dissect_rrc_RRCConnectionReleaseComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 392 "rrc.cnf" +#line 396 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionReleaseComplete"); } @@ -68899,7 +68899,7 @@ static const per_sequence_t RRCConnectionSetupComplete_sequence[] = { static int dissect_rrc_RRCConnectionSetupComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 410 "rrc.cnf" +#line 414 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionSetupComplete"); } @@ -69080,7 +69080,7 @@ static const per_sequence_t RRCStatus_sequence[] = { static int dissect_rrc_RRCStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 416 "rrc.cnf" +#line 420 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCStatus"); } @@ -69132,7 +69132,7 @@ static const per_sequence_t SecurityModeComplete_sequence[] = { static int dissect_rrc_SecurityModeComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 428 "rrc.cnf" +#line 432 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "SecurityModeComplete"); } @@ -69183,7 +69183,7 @@ static const per_sequence_t SecurityModeFailure_sequence[] = { static int dissect_rrc_SecurityModeFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 434 "rrc.cnf" +#line 438 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "SecurityModeFailure"); } @@ -69233,7 +69233,7 @@ static const per_sequence_t SignallingConnectionReleaseIndication_sequence[] = { static int dissect_rrc_SignallingConnectionReleaseIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 446 "rrc.cnf" +#line 450 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "SignallingConnectionReleaseIndication"); } @@ -69333,7 +69333,7 @@ static const per_sequence_t TransportChannelReconfigurationComplete_sequence[] = static int dissect_rrc_TransportChannelReconfigurationComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 476 "rrc.cnf" +#line 480 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "TransportChannelReconfigurationComplete"); } @@ -69384,7 +69384,7 @@ static const per_sequence_t TransportChannelReconfigurationFailure_sequence[] = static int dissect_rrc_TransportChannelReconfigurationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 482 "rrc.cnf" +#line 486 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "TransportChannelReconfigurationFailure"); } @@ -69435,7 +69435,7 @@ static const per_sequence_t TransportFormatCombinationControlFailure_sequence[] static int dissect_rrc_TransportFormatCombinationControlFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 494 "rrc.cnf" +#line 498 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "TransportFormatCombinationControlFailure"); } @@ -69713,7 +69713,7 @@ static const per_sequence_t UECapabilityInformation_sequence[] = { static int dissect_rrc_UECapabilityInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 506 "rrc.cnf" +#line 510 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "UECapabilityInformation"); } @@ -69794,7 +69794,7 @@ static const per_sequence_t UplinkDirectTransfer_sequence[] = { static int dissect_rrc_UplinkDirectTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 518 "rrc.cnf" +#line 522 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "UplinkDirectTransfer"); } @@ -69892,7 +69892,7 @@ static const per_sequence_t UTRANMobilityInformationConfirm_sequence[] = { static int dissect_rrc_UTRANMobilityInformationConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 554 "rrc.cnf" +#line 558 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "UTRANMobilityInformationConfirm"); } @@ -69943,7 +69943,7 @@ static const per_sequence_t UTRANMobilityInformationFailure_sequence[] = { static int dissect_rrc_UTRANMobilityInformationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 560 "rrc.cnf" +#line 564 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "UTRANMobilityInformationFailure"); } @@ -70102,7 +70102,7 @@ static const per_sequence_t MBMSModificationRequest_sequence[] = { static int dissect_rrc_MBMSModificationRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 230 "rrc.cnf" +#line 234 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSModificationRequest"); } @@ -70748,7 +70748,7 @@ static const per_choice_t CellUpdateConfirm_CCCH_choice[] = { static int dissect_rrc_CellUpdateConfirm_CCCH(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 134 "rrc.cnf" +#line 138 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "CellUpdateConfirm-CCCH"); } @@ -71175,7 +71175,7 @@ static const per_choice_t RRCConnectionReject_choice[] = { static int dissect_rrc_RRCConnectionReject(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 374 "rrc.cnf" +#line 378 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionReject"); } @@ -71719,7 +71719,7 @@ static const per_choice_t RRCConnectionRelease_CCCH_choice[] = { static int dissect_rrc_RRCConnectionRelease_CCCH(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 386 "rrc.cnf" +#line 390 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionRelease-CCCH"); } @@ -73054,7 +73054,7 @@ static const per_choice_t RRCConnectionSetup_choice[] = { static int dissect_rrc_RRCConnectionSetup(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 404 "rrc.cnf" +#line 408 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionSetup"); } @@ -73185,7 +73185,7 @@ static const per_choice_t URAUpdateConfirm_CCCH_choice[] = { static int dissect_rrc_URAUpdateConfirm_CCCH(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 542 "rrc.cnf" +#line 546 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "URAUpdateConfirm-CCCH"); } @@ -73601,7 +73601,7 @@ static const per_sequence_t CellUpdate_sequence[] = { static int dissect_rrc_CellUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 128 "rrc.cnf" +#line 132 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "CellUpdate"); } @@ -74003,7 +74003,7 @@ static const per_sequence_t RRCConnectionRequest_sequence[] = { static int dissect_rrc_RRCConnectionRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 398 "rrc.cnf" +#line 402 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionRequest"); } @@ -74170,7 +74170,7 @@ static const per_sequence_t URAUpdate_sequence[] = { static int dissect_rrc_URAUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 530 "rrc.cnf" +#line 534 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "URAUpdate"); } @@ -74566,7 +74566,7 @@ static const per_sequence_t PagingType1_sequence[] = { static int dissect_rrc_PagingType1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 278 "rrc.cnf" +#line 282 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "PagingType1"); } @@ -74773,7 +74773,7 @@ static const per_sequence_t PUSCHCapacityRequest_sequence[] = { static int dissect_rrc_PUSCHCapacityRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 314 "rrc.cnf" +#line 318 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "PUSCHCapacityRequest"); } @@ -75151,7 +75151,7 @@ static const per_sequence_t SystemInformation_FACH_sequence[] = { static int dissect_rrc_SystemInformation_FACH(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 458 "rrc.cnf" +#line 462 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "SystemInformation-FACH"); } @@ -75201,7 +75201,7 @@ static const per_sequence_t SystemInformationChangeIndication_sequence[] = { static int dissect_rrc_SystemInformationChangeIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 464 "rrc.cnf" +#line 468 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "SystemInformationChangeIndication"); } @@ -75384,7 +75384,7 @@ static const per_sequence_t SystemInformation_BCH_sequence[] = { static int dissect_rrc_SystemInformation_BCH(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 452 "rrc.cnf" +#line 456 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "SystemInformation-BCH"); } @@ -75526,7 +75526,7 @@ static const per_sequence_t MBMSAccessInformation_sequence[] = { static int dissect_rrc_MBMSAccessInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 200 "rrc.cnf" +#line 204 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSAccessInformation"); } @@ -76262,7 +76262,7 @@ static const per_sequence_t MBMSCommonPTMRBInformation_sequence[] = { static int dissect_rrc_MBMSCommonPTMRBInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 206 "rrc.cnf" +#line 210 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSCommonPTMRBInformation"); } @@ -76652,7 +76652,7 @@ static const per_sequence_t MBMSCurrentCellPTMRBInformation_sequence[] = { static int dissect_rrc_MBMSCurrentCellPTMRBInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 212 "rrc.cnf" +#line 216 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSCurrentCellPTMRBInformation"); } @@ -77240,7 +77240,7 @@ static const per_sequence_t MBMSGeneralInformation_sequence[] = { static int dissect_rrc_MBMSGeneralInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 224 "rrc.cnf" +#line 228 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSGeneralInformation"); } @@ -77916,7 +77916,7 @@ static const per_sequence_t MBMSNeighbouringCellPTMRBInformation_sequence[] = { static int dissect_rrc_MBMSNeighbouringCellPTMRBInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 242 "rrc.cnf" +#line 246 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSNeighbouringCellPTMRBInformation"); } @@ -78055,7 +78055,7 @@ static const per_sequence_t MBMSUnmodifiedServicesInformation_sequence[] = { static int dissect_rrc_MBMSUnmodifiedServicesInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 254 "rrc.cnf" +#line 258 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSUnmodifiedServicesInformation"); } @@ -78213,7 +78213,7 @@ static const per_sequence_t MBMSSchedulingInformation_sequence[] = { static int dissect_rrc_MBMSSchedulingInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 248 "rrc.cnf" +#line 252 "rrc.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)){ col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSSchedulingInformation"); } @@ -80638,7 +80638,7 @@ dissect_rrc_T_uE_SecurityInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx static int dissect_rrc_T_present(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 82 "rrc.cnf" +#line 86 "rrc.cnf" tvbuff_t *ue_radio_access_cap_info_tvb=NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, @@ -81940,7 +81940,7 @@ static const per_sequence_t InterRATHandoverInfo_sequence[] = { { NULL, 0, 0, NULL } }; -static int +int dissect_rrc_InterRATHandoverInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_rrc_InterRATHandoverInfo, InterRATHandoverInfo_sequence); @@ -98998,10 +98998,10 @@ static void dissect_HandoverToUTRANCommand_PDU(tvbuff_t *tvb _U_, packet_info *p asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo); dissect_rrc_HandoverToUTRANCommand(tvb, 0, &asn1_ctx, tree, hf_rrc_HandoverToUTRANCommand_PDU); } -static void dissect_InterRATHandoverInfo_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { +void dissect_rrc_InterRATHandoverInfo_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo); - dissect_rrc_InterRATHandoverInfo(tvb, 0, &asn1_ctx, tree, hf_rrc_InterRATHandoverInfo_PDU); + dissect_rrc_InterRATHandoverInfo(tvb, 0, &asn1_ctx, tree, hf_rrc_rrc_InterRATHandoverInfo_PDU); } static void dissect_UE_RadioAccessCapabilityInfo_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { asn1_ctx_t asn1_ctx; @@ -99357,7 +99357,7 @@ void proto_register_rrc(void) { { "HandoverToUTRANCommand", "rrc.HandoverToUTRANCommand", FT_UINT32, BASE_DEC, VALS(rrc_HandoverToUTRANCommand_vals), 0, "rrc.HandoverToUTRANCommand", HFILL }}, - { &hf_rrc_InterRATHandoverInfo_PDU, + { &hf_rrc_rrc_InterRATHandoverInfo_PDU, { "InterRATHandoverInfo", "rrc.InterRATHandoverInfo", FT_NONE, BASE_NONE, NULL, 0, "rrc.InterRATHandoverInfo", HFILL }}, @@ -130790,7 +130790,7 @@ void proto_register_rrc(void) { register_dissector("rrc.mcch", dissect_MCCH_Message_PDU, proto_rrc); register_dissector("rrc.msch", dissect_MSCH_Message_PDU, proto_rrc); register_dissector("rrc.irat.ho_to_utran_cmd", dissect_HandoverToUTRANCommand_PDU, proto_rrc); - register_dissector("rrc.irat.irat_ho_info", dissect_InterRATHandoverInfo_PDU, proto_rrc); + register_dissector("rrc.irat.irat_ho_info", dissect_rrc_InterRATHandoverInfo_PDU, proto_rrc); register_dissector("rrc.ue_radio_access_cap_info", dissect_UE_RadioAccessCapabilityInfo_PDU, proto_rrc); register_dissector("rrc.si.mib", dissect_MasterInformationBlock_PDU, proto_rrc); register_dissector("rrc.si.sib1", dissect_SysInfoType1_PDU, proto_rrc); diff --git a/epan/dissectors/packet-rrc.h b/epan/dissectors/packet-rrc.h new file mode 100644 index 0000000000..d21f680ba9 --- /dev/null +++ b/epan/dissectors/packet-rrc.h @@ -0,0 +1,45 @@ +/* Do not modify this file. */ +/* It is created automatically by the ASN.1 to Wireshark dissector compiler */ +/* packet-rrc.h */ +/* ../../tools/asn2wrs.py -p rrc -c rrc.cnf -s packet-rrc-template Class-definitions.asn PDU-definitions.asn InformationElements.asn Constant-definitions.asn Internode-definitions.asn */ + +/* Input file: packet-rrc-template.h */ + +#line 1 "packet-rrc-template.h" +/* packet-rrc-template.h + * Copyright 2009, Anders Broman <anders.broman@ericsson.com> + * + * $Id$ + * + * Ethereal - Network traffic analyzer + * By Gerald Combs <gerald@ethereal.com> + * Copyright 1998 Gerald Combs + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifndef PACKET_RRC_H +#define PACKET_RRC_H + + +/*--- Included file: packet-rrc-exp.h ---*/ +#line 1 "packet-rrc-exp.h" +int dissect_rrc_InterRATHandoverInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); +void dissect_rrc_InterRATHandoverInfo_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_); + +/*--- End of included file: packet-rrc-exp.h ---*/ +#line 29 "packet-rrc-template.h" + +#endif /* PACKET_CHARGING_ASE_H */ diff --git a/epan/dissectors/packet-uma.c b/epan/dissectors/packet-uma.c index 6ebdb3a6fd..772bb3f347 100644 --- a/epan/dissectors/packet-uma.c +++ b/epan/dissectors/packet-uma.c @@ -1,6 +1,6 @@ /* packet-uma.c * Routines for Unlicensed Mobile Access(UMA) dissection - * Copyright 2005-2006, Anders Broman <anders.broman[at]ericsson.com> + * Copyright 2005-2006,2009, Anders Broman <anders.broman[at]ericsson.com> * * $Id$ * @@ -26,6 +26,8 @@ * http://www.umatechnology.org/ * UMA Protocols (Stage 3) R1.0.4 (5/16/2005) * + * 3GPP TS 44.318 version 8.4.0 Release 8 + * * http://www.3gpp.org/specs/numbering.htm * 3GPP TS 24.008 V6.2.0 (2003-09) * Technical Specification @@ -73,6 +75,7 @@ #include "packet-rtcp.h" #include "packet-e212.h" #include "packet-tcp.h" +#include "packet-rrc.h" /* Length field is 2 bytes and comes first */ #define UMA_HEADER_SIZE 2 @@ -88,25 +91,25 @@ static dissector_handle_t llc_handle; /* Initialize the protocol and registered fields */ static int proto_uma = -1; -static int hf_uma_length_indicator = -1; +static int hf_uma_length_indicator = -1; static int hf_uma_pd = -1; static int hf_uma_skip_ind = -1; -static int hf_uma_urr_msg_type = -1; -static int hf_uma_urlc_msg_type = -1; +static int hf_uma_urr_msg_type = -1; +static int hf_uma_urlc_msg_type = -1; static int hf_uma_urlc_TLLI = -1; -static int hf_uma_urlc_seq_nr = -1; +static int hf_uma_urlc_seq_nr = -1; static int hf_uma_urr_IE = -1; -static int hf_uma_urr_IE_len = -1; +static int hf_uma_urr_IE_len = -1; static int hf_uma_urr_mobile_identity_type = -1; -static int hf_uma_urr_odde_even_ind = -1; +static int hf_uma_urr_odde_even_ind = -1; static int hf_uma_urr_imsi = -1; static int hf_uma_urr_imei = -1; -static int hf_uma_urr_imeisv = -1; -static int hf_uma_urr_tmsi_p_tmsi = -1; +static int hf_uma_urr_imeisv = -1; +static int hf_uma_urr_tmsi_p_tmsi = -1; static int hf_uma_urr_uri = -1; -static int hf_uma_urr_radio_type_of_id = -1; -static int hf_uma_urr_radio_id = -1; -static int hf_uma_urr_cell_id = -1; +static int hf_uma_urr_radio_type_of_id = -1; +static int hf_uma_urr_radio_id = -1; +static int hf_uma_urr_cell_id = -1; static int hf_uma_urr_mcc = -1; static int hf_uma_urr_mnc = -1; static int hf_uma_urr_lac = -1; @@ -115,11 +118,13 @@ static int hf_uma_urr_tura = -1; static int hf_uma_urr_gc = -1; static int hf_uma_urr_uc = -1; static int hf_uma_urr_rrs = -1; -static int hf_uma_urr_IP_Address_type = -1; +static int hf_uma_urr_gmsi = -1; +static int hf_uma_urr_psho = -1; +static int hf_uma_urr_IP_Address_type = -1; static int hf_uma_urr_FQDN = -1; -static int hf_uma_urr_sgw_ipv4 = -1; -static int hf_uma_urr_redirection_counter = -1; -static int hf_uma_urr_dis_rej_cau = -1; +static int hf_uma_urr_sgw_ipv4 = -1; +static int hf_uma_urr_redirection_counter = -1; +static int hf_uma_urr_dis_rej_cau = -1; static int hf_uma_urr_MSCR = -1; static int hf_uma_urr_ATT = -1; static int hf_uma_urr_DTM = -1; @@ -138,7 +143,7 @@ static int hf_uma_urr_bcc = -1; static int hf_uma_urr_ncc = -1; static int hf_uma_urr_TU3907_timer = -1; static int hf_uma_urr_GSM_RR_state = -1; -static int hf_uma_urr_UMA_band = -1; +static int hf_uma_urr_gan_band = -1; static int hf_uma_urr_URR_state = -1; static int hf_uma_urr_register_reject_cause = -1; static int hf_uma_urr_TU3906_timer = -1; @@ -155,7 +160,7 @@ static int hf_uma_urr_TU3920_timer = -1; static int hf_uma_urr_peak_tpt_cls = -1; static int hf_uma_urr_radio_pri = -1; static int hf_uma_urr_rlc_mode = -1; -static int hf_uma_urr_URLCcause = -1; +static int hf_uma_urr_ga_psr_cause = -1; static int hf_uma_urr_udr = -1; static int hf_uma_urr_TU4001_timer = -1; static int hf_uma_urr_LS = -1; @@ -227,48 +232,49 @@ static const value_string uma_pd_vals[] = { * Message types for Unlicensed Radio Resources management */ static const value_string uma_urr_msg_type_vals[] = { - { 1, "URR DISCOVERY REQUEST"}, - { 2, "URR DISCOVERY ACCEPT"}, - { 3, "URR DISCOVERY REJECT"}, - { 16, "URR REGISTER REQUEST"}, - { 17, "URR REGISTER ACCEPT"}, - { 18, "URR REGISTER REDIRECT"}, - { 19, "URR REGISTER REJECT"}, - { 20, "URR DEREGISTER"}, - { 21, "URR REGISTER UPDATE UPLINK"}, - { 22, "URR REGISTER UPDATE DOWNLINK"}, - { 23, "URR CELL BROADCAST INFO"}, - { 32, "URR CIPHERING MODE COMMAND"}, - { 33, "URR CIPHERING MODE COMPLETE"}, - { 48, "URR ACTIVATE CHANNEL"}, - { 49, "URR ACTIVATE CHANNEL ACK"}, - { 50, "URR ACTIVATE CHANNEL COMPLETE"}, - { 51, "URR ACTIVATE CHANNEL FAILURE"}, - { 52, "URR CHANNEL MODE MODIFY"}, - { 53, "URR CHANNEL MODE MODIFY ACKNOWLEDGE"}, - { 64, "URR RELEASE"}, - { 65, "URR RELEASE COMPLETE"}, - { 66, "URR CLEAR REQUEST"}, - { 80, "URR HANDOVER ACCESS"}, - { 81, "URR HANDOVER COMPLETE"}, - { 82, "URR UPLINK QUALITY INDICATION"}, - { 83, "URR HANDOVER REQUIRED"}, - { 84, "URR HANDOVER COMMAND"}, - { 85, "URR HANDOVER FAILURE"}, - { 96, "URR PAGING REQUEST"}, - { 97, "URR PAGING RESPONSE"}, - { 112, "URR UPLINK DIRECT TRANSFER"}, + { 1, "GA-RC DISCOVERY REQUEST"}, + { 2, "GA-RC DISCOVERY ACCEPT"}, + { 3, "GA-RC DISCOVERY REJECT"}, + { 16, "GA-RC REGISTER REQUEST"}, + { 17, "GA-RC REGISTER ACCEPT"}, + { 18, "GA-RC REGISTER REDIRECT"}, + { 19, "GA-RC REGISTER REJECT"}, + { 20, "GA-RC DEREGISTER"}, + { 21, "GA-RC REGISTER UPDATE UPLINK"}, + { 22, "GA-RC REGISTER UPDATE DOWNLINK"}, + { 23, "GA-RC CELL BROADCAST INFO"}, + { 32, "GA-CSR CIPHERING MODE COMMAND"}, + { 33, "GA-CSR CIPHERING MODE COMPLETE"}, + { 48, "GA-CSR ACTIVATE CHANNEL"}, + { 49, "GA-CSR ACTIVATE CHANNEL ACK"}, + { 50, "GA-CSR ACTIVATE CHANNEL COMPLETE"}, + { 51, "GA-CSR ACTIVATE CHANNEL FAILURE"}, + { 52, "GA-CSR CHANNEL MODE MODIFY"}, + { 53, "GA-CSR CHANNEL MODE MODIFY ACKNOWLEDGE"}, + { 64, "GA-CSR RELEASE"}, + { 65, "GA-CSR RELEASE COMPLETE"}, + { 66, "GA-CSR CLEAR REQUEST"}, + { 80, "GA-CSR HANDOVER ACCESS"}, + { 81, "GA-CSR HANDOVER COMPLETE"}, + { 82, "GA-CSR UPLINK QUALITY INDICATION"}, + { 83, "GA-CSR HANDOVER INFORMATION"}, + { 84, "GA-CSR HANDOVER COMMAND"}, + { 85, "GA-CSR HANDOVER FAILURE"}, + { 96, "GA-CSR PAGING REQUEST"}, + { 97, "GA-CSR PAGING RESPONSE"}, + { 112, "GA-CSR UPLINK DIRECT TRANSFER"}, { 113, "URR INITIAL DIRECT TRANSFER"}, - { 114, "URR DOWNLINK DIRECT TRANSFER"}, - { 115, "URR STATUS"}, - { 116, "URR KEEP ALIVE"}, - { 117, "URR CLASSMARK ENQUIRY"}, - { 118, "URR CLASSMARK CHANGE"}, + { 114, "GA-CSR DOWNLINK DIRECT TRANSFER"}, + { 115, "GA-CSR STATUS"}, + { 116, "GA-CSR KEEP ALIVE"}, + { 117, "GA-CSR CLASSMARK ENQUIRY"}, + { 118, "GA-CSR CLASSMARK CHANGE"}, { 119, "URR GPRS SUSPENSION REQUEST"}, - { 120, "URR SYNCHRONIZATION INFORMATION"}, - { 128, "URR REQUEST"}, - { 129, "URR REQUEST ACCEPT"}, - { 130, "URR REQUEST REJECT"}, + { 120, "GA-CSR SYNCHRONIZATION INFORMATION"}, + { 121, "GA-CSR UTRAN CLASSMARK CHANGE"}, + { 128, "GA-CSR REQUEST"}, + { 129, "GA-CSR REQUEST ACCEPT"}, + { 130, "GA-CSR REQUEST REJECT"}, { 0, NULL } }; /* @@ -292,25 +298,25 @@ static const value_string uma_urlc_msg_type_vals[] = { */ static const value_string uma_urr_IE_type_vals[] = { { 1, "Mobile Identity"}, - { 2, "UMA Release Indicator"}, + { 2, "GAN Release Indicator"}, { 3, "Radio Identity"}, { 4, "GERAN Cell Identity"}, { 5, "Location Area Identification"}, { 6, "GERAN/UTRAN Coverage Indicator"}, - { 7, "UMA Classmark"}, + { 7, "GAN Classmark"}, { 8, "Geographical Location"}, - { 9, "UNC SGW IP Address"}, - { 10, "UNC SGW Fully Qualified Domain/Host Name"}, + { 9, "GANC-SEGW IP Address"}, + { 10, "GANC-SEGW Fully Qualified Domain/Host Name"}, { 11, "Redirection Counter"}, { 12, "Discovery Reject Cause"}, - { 13, "UMA Cell Description"}, - { 14, "UMA Control Channel Description"}, + { 13, "GAN Cell Description"}, + { 14, "GAN Control Channel Description"}, { 15, "Cell Identifier List"}, { 16, "TU3907 Timer"}, { 17, "GSM RR/UTRAN RRC State"}, { 18, "Routing Area Identification"}, - { 19, "UMA Band"}, - { 20, "URR State"}, + { 19, "GAN Band"}, + { 20, "GA-RC/GA-CSR/GA-PSR State"}, { 21, "Register Reject Cause"}, { 22, "TU3906 Timer"}, { 23, "TU3910 Timer"}, @@ -322,14 +328,14 @@ static const value_string uma_urr_IE_type_vals[] = { { 29, "RR Cause"}, { 30, "Cipher Mode Setting"}, { 31, "GPRS Resumption"}, - { 32, "Handover From UMAN Command"}, + { 32, "Handover From GAN Command"}, { 33, "UL Quality Indication"}, { 34, "TLLI"}, { 35, "Packet Flow Identifier"}, { 36, "Suspension Cause"}, { 37, "TU3920 Timer"}, { 38, "QoS"}, - { 39, "URLC Cause"}, + { 39, "GA-PSR Cause"}, { 40, "User Data Rate"}, { 41, "Routing Area Code"}, { 42, "AP Location"}, @@ -352,28 +358,67 @@ static const value_string uma_urr_IE_type_vals[] = { { 59, "Reset Indicator"}, { 60, "TU4003 Timer"}, { 61, "AP Service Name"}, - { 62, "UMA Service Zone Information"}, + { 62, "GAN Service Zone Information"}, { 63, "RTP Redundancy Configuration"}, { 64, "UTRAN Classmark"}, { 65, "Classmark Enquiry Mask"}, { 66, "UTRAN Cell Identifier List"}, { 67, "Serving UNC table indicator"}, { 68, "Registration indicators"}, - { 69, "UMA PLMN List"}, + { 69, "GAN PLMN List"}, { 70, "Received Signal Level List"}, - { 71, "Required UMA Services"}, + { 71, "Required GAN Services"}, { 72, "Broadcast Container"}, { 73, "3G Cell Identity"}, { 96, "MS Radio Identity"}, - { 97, "UNC IP Address"}, - { 98, "UNC Fully Qualified Domain/Host Name"}, + { 97, "GANC IP Address"}, + { 98, "GANC Fully Qualified Domain/Host Name"}, { 99, "IP address for GPRS user data transport"}, { 100, "UDP Port for GPRS user data transport"}, - { 103, "UNC TCP port"}, + { 103, "GANC TCP port"}, { 104, "RTP UDP port"}, { 105, "RTCP UDP port"}, { 106, "GERAN Received Signal Level List"}, { 107, "UTRAN Received Signal Level List"}, + { 108, "PS Handover to GERAN Command"}, /* 11.2.74 */ + { 109, "PS Handover to UTRAN Command"}, /* 11.2.75 */ + { 110, "PS Handover to GERAN PSI"}, /* 11.2.76 */ + { 111, "PS Handover to GERAN SI"}, /* 11.2.77 */ + { 112, "TU4004 Timer"}, /* 11.2.78 */ + { 79, "GAN Mode Indicator"}, /* 11.2.79 */ + { 80, "CN Domain Identity"}, /* 11.2.80 */ + { 81, "GAN Iu Mode Cell Description"}, /* 11.2.81 */ + { 82, "3G UARFCN"}, /* 11.2.82 */ + { 83, "RAB ID"}, /* 11.2.83 */ + { 84, "RAB ID List"}, /* 11.2.84 */ + { 85, "GA-RRC Establishment Cause"}, /* 11.2.85 */ + { 86, "GA-RRC Cause"}, /* 11.2.86 */ + { 87, "GA-RRC Paging Cause"}, /* 11.2.87 */ + { 88, "Intra Domain NAS Node Selector"}, /* 11.2.88 */ + { 89, "CTC Activation List"}, /* 11.2.89 */ + { 90, "CTC Description"}, /* 11.2.90 */ + { 91, "CTC Activation Ack List"}, /* 11.2.91 */ + { 92, "CTC Activation Ack Description"}, /* 11.2.92 */ + { 93, "CTC Modification List"}, /* 11.2.93 */ + { 94, "CTC Modification Ack List"}, /* 11.2.94 */ + { 95, "CTC Modification Ack Description"}, /* 11.2.95 */ + { 115, "PTC Activation List"}, /* 11.2.96 */ + { 116, "PTC Description"}, /* 11.2.97 */ + { 117, "PTC Activation Ack List"}, /* 11.2.98 */ + { 118, "PTC Activation Ack Description"}, /* 11.2.99 */ + { 119, "PTC Modification List"}, /* 11.2.100 */ + { 120, "PTC Modification Ack List"}, /* 11.2.101 */ + { 121, "PTC Modification Ack Description"}, /* 11.2.102 */ + { 122, "RAB Configuration"}, /* 11.2.103 */ + { 123, "Multi-rate Configuration 2"}, /* 11.2.104 */ + { 124, "Selected Integrity Protection Algorithm"}, /* 11.2.105 */ + { 125, "Selected Encryption Algorithm"}, /* 11.2.106 */ + { 126, "CN Domains to Handover"}, /* 11.2.107 */ + { 74, "3G Security Capability"}, /* 11.2.108 */ + { 75, "NAS Synchronisation Indicator"}, /* 11.2.109 */ + { 76, "GANC TEID"}, /* 11.2.110 */ + { 77, "MS TEID"}, /* 11.2.110 */ + { 78, "UTRAN RRC Message"}, /* 11.2.111 */ { 0, NULL } }; @@ -386,6 +431,13 @@ static const value_string uma_urr_mobile_identity_type_vals[] = { { 0, NULL } }; +static const value_string uma_urr_gan_rel_ind_vals[] = { + { 1, "Release 1 (i.e. 3GPP Release-6)"}, + { 2, "Release 2 (i.e. 3GPP Release-7)"}, + { 3, "Release 3 (i.e. 3GPP Release-8)"}, + { 0, NULL } +}; + static const value_string uma_urr_oddevenind_vals[] = { { 0, "Even number of identity digits"}, { 1, "Odd number of identity digits"}, @@ -398,7 +450,7 @@ static const value_string radio_type_of_id_vals[] = { }; /* GCI, GSM Coverage Indicator (octet 3) */ -static const value_string gci_vals[] = { +static const value_string uma_gci_vals[] = { { 0, "Normal Service in the GERAN"}, { 1, "Limited Service in the GERAN"}, { 2, "MS has not found GSM coverage (LAI information taken from SIM, if available)"}, @@ -406,7 +458,7 @@ static const value_string gci_vals[] = { { 0, NULL } }; /* TURA, Type of Unlicensed Radio (octet 3) */ -static const value_string tura_vals[] = { +static const value_string uma_tura_vals[] = { { 0, "No radio"}, { 1, "Bluetooth"}, { 2, "WLAN 802.11"}, @@ -414,23 +466,42 @@ static const value_string tura_vals[] = { { 0, NULL } }; /* GC, GERAN Capable (octet 3) */ -static const value_string gc_vals[] = { +static const value_string uma_gc_vals[] = { { 0, "The MS is not GERAN capable."}, { 1, "The MS is GERAN capable."}, { 0, NULL } }; /* UC, UTRAN Capable (octet 3) */ -static const value_string uc_vals[] = { +static const value_string uma_uc_vals[] = { { 0, "The MS is not UTRAN capable."}, { 1, "The MS is UTRAN capable."}, { 0, NULL } }; /*RRS, RTP Redundancy Support (octet 4)*/ -static const value_string rrs_vals[] = { +static const value_string uma_rrs_vals[] = { { 0, "RTP Redundancy not supported"}, { 1, "RTP Redundancy supported"}, { 0, NULL } }; +/* + * PS HO, PS Handover Capable (octet 4) Bit 2 + */ +static const value_string uma_ps_ho_vals[] = { + { 0, "The MS does not support PS handover to/from GAN A/Gb mode"}, + { 1, "The MS supports PS handover to/from GAN A/Gb mode"}, + { 0, NULL } +}; +/* + * GMSI, GAN Mode Support Indicator (octet 4)v Bits 4 3 + */ + +static const value_string uma_gmsi_vals[] = { + { 0, "Unspecified"}, + { 1, "The MS supports GAN A/Gb mode only"}, + { 2, "The MS supports GAN Iu mode only"}, + { 3, "The MS supports GAN A/Gb mode and GAN Iu mode"}, + { 0, NULL } +}; /*IP address type number value (octet 3)*/ static const value_string IP_address_type_vals[] = { @@ -440,7 +511,7 @@ static const value_string IP_address_type_vals[] = { }; /*Discovery Reject Cause (octet 3) */ -static const value_string discovery_reject_cause_vals[] = { +static const value_string uma_discovery_reject_cause_vals[] = { { 0, "Network Congestion"}, { 1, "Unspecified"}, { 2, "IMSI not allowed"}, @@ -525,17 +596,19 @@ static const value_string Three_GECS_vals[] = { }; /*GRS, GSM RR State (octet 3)*/ -static const value_string GRS_GSM_RR_State_vals[] = { +static const value_string uma_GRS_GSM_RR_State_vals[] = { { 0, "GSM RR is in IDLE state"}, { 1, "GSM RR is in DEDICATED state"}, { 2, "UTRAN RRC is in IDLE STATE"}, { 3, "UTRAN RRC is in CELL_DCH STATE"}, { 4, "UTRAN RRC is in CELL_FACH STATE"}, + { 5, "UTRAN RRC is in CELL_PCH STATE"}, + { 6, "UTRAN RRC is in URA_PCH STATE"}, { 7, "Unknown"}, { 0, NULL } }; /* UMA Band (4 bit field) */ -static const value_string UMA_band_vals[] = { +static const value_string uma_gan_band_vals[] = { { 0, "E-GSM is supported"}, { 1, "P-GSM is supported"}, { 2, "GSM 1800 is supported"}, @@ -548,26 +621,46 @@ static const value_string UMA_band_vals[] = { }; /*URS, URR State (octet 3) */ static const value_string URR_state_vals[] = { - { 0, "URR is in URR-IDLE state"}, - { 1, "URR is in URR-DEDICATED state"}, - { 2, "URR is in URR-REGISTERED state"}, + { 0, "GA-CSR is in GA-CSR-IDLE state"}, + { 1, "GA-CSR is in GA-CSR-DEDICATED state"}, + { 2, "GA-RC is in GA-RC-REGISTERED state while in GERAN/UTRAN mode"}, { 0, NULL } }; +/* +UPS, GA-PSR State (octet 3) +Bit +3 +0 GA-PSR is in GA-PSR-STANDBY state. +1 GA-PSR is in GA-PSR-ACTIVE state. +GA-RRC-CS, GA-RRC (CS) State (octet 3) +Bit +4 +0 GA-RRC (CS) is in GA-RRC-IDLE state. +1 GA-RRC (CS) is in GA-RRC-CONNECTED +state. +GA-RRC-PS, GA-RRC (PS) State (octet 3) +Bit +5 +0 GA-RRC (PS) is in GA-RRC-IDLE state. +1 GA-RRC (PS) is in GA-RRC-CONNECTED +state. +*/ /* Register Reject Cause (octet 3) */ static const value_string register_reject_cause_vals[] = { { 0, "Network Congestion"}, { 1, "AP not allowed"}, { 2, "Location not allowed"}, - { 3, "Invalid UNC"}, + { 3, "Invalid GANC"}, { 4, "Geo Location not known"}, { 5, "IMSI not allowed"}, { 6, "Unspecified"}, - { 7, "UNC-SGW certificate not valid"}, + { 7, "GANC-SEGW certificate not valid"}, { 8, "EAP_SIM authentication failed"}, { 9, "TCP establishment failed"}, { 10, "Redirection"}, { 11, "EAP-AKA authentication failed"}, + /* 12 to 255 Reserved for future use. */ { 0, NULL } }; @@ -624,7 +717,7 @@ static const value_string SC_vals[] = { }; /* ULQI, UL Quality Indication (octet 3) */ -static const value_string ULQI_vals[] = { +static const value_string uma_ulqi_vals[] = { { 0, "Quality ok"}, { 1, "Radio problem"}, { 2, "Network problem"}, @@ -648,10 +741,10 @@ static const value_string rlc_mode_vals[] = { }; /*URLC Cause (octet 3) */ -static const value_string URLC_cause_vals[] = { +static const value_string uma_ga_psr_cause_vals[] = { { 0, "success"}, { 2, "no available resources"}, - { 3, "UNC failure"}, + { 3, "GANC failure"}, { 4, "not authorized for data service"}, { 5, "message type non existent or not implemented"}, { 6, "message type not compatible with the protocol state"}, @@ -661,6 +754,10 @@ static const value_string URLC_cause_vals[] = { { 10, "normal deactivation"}, { 12, "conditional IE error"}, { 13, "semantically incorrect message"}, + { 14, "PS handover failure - incorrect handover command"}, + { 15, "PS handover failure - target RAT access failure"}, + { 16, "PS handover failure - missing SI/PSI information"}, + { 17, "PS handover failure - no uplink TBF allocation"}, { 0, NULL } }; @@ -870,15 +967,18 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset) proto_tree_add_item(urr_ie_tree, hf_uma_urr_gci, tvb, ie_offset, 1, FALSE); break; case 7: - /* UMA Classmark */ + /* 11.2.7 GAN Classmark */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_tura, tvb, ie_offset, 1, FALSE); proto_tree_add_item(urr_ie_tree, hf_uma_urr_gc, tvb, ie_offset, 1, FALSE); proto_tree_add_item(urr_ie_tree, hf_uma_urr_uc, tvb, ie_offset, 1, FALSE); /* UMA Protocols (Stage 3) R1.0.3 */ if(ie_len>1){ ie_offset++; + proto_tree_add_item(urr_ie_tree, hf_uma_urr_gmsi, tvb, ie_offset, 1, FALSE); + proto_tree_add_item(urr_ie_tree, hf_uma_urr_psho, tvb, ie_offset, 1, FALSE); proto_tree_add_item(urr_ie_tree, hf_uma_urr_rrs, tvb, ie_offset, 1, FALSE); - } break; + } + break; case 8: /* Geographical Location * The Location Estimate field is composed of 1 or more octets with an internal structure @@ -913,17 +1013,18 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset) case 11: /* Redirection Counter */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_redirection_counter, tvb, ie_offset, 1, FALSE); break; - case 12: /* Discovery Reject Cause */ + case 12: /* 11.2.12 Discovery Reject Cause */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_dis_rej_cau, tvb, ie_offset, 1, FALSE); break; case 13: - /* UMA Cell Description + /* 11.2.13 GAN Cell Description * The rest of the IE is coded as in [TS 44.018], Cell Description IE, not including IEI and length, if present */ de_rr_cell_dsc(tvb, urr_ie_tree, ie_offset, ie_len, NULL, 0); break; case 14: - /* UMA Control Channel Description + /* + * 11.2.14 GAN Control Channel Description */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_ECMC, tvb, ie_offset, 1, FALSE); proto_tree_add_item(urr_ie_tree, hf_uma_urr_NMO, tvb, ie_offset, 1, FALSE); @@ -938,18 +1039,20 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset) ie_offset++; proto_tree_add_item(urr_ie_tree, hf_uma_urr_RAC, tvb, ie_offset, 1, FALSE); ie_offset++; - /* SGSNR, SGSN Release (octet 6) */ + /* SGSNR, SGSN Release (octet 6) B1*/ proto_tree_add_item(urr_ie_tree, hf_uma_urr_SGSNR, tvb, ie_offset, 1, FALSE); proto_tree_add_item(urr_ie_tree, hf_uma_urr_ECMP, tvb, ie_offset, 1, FALSE); proto_tree_add_item(urr_ie_tree, hf_uma_urr_RE, tvb, ie_offset, 1, FALSE); proto_tree_add_item(urr_ie_tree, hf_uma_urr_PFCFM, tvb, ie_offset, 1, FALSE); proto_tree_add_item(urr_ie_tree, hf_uma_urr_3GECS, tvb, ie_offset, 1, FALSE); + /* PS HO, PS Handover indicator (octet 6) Bit 6 */ + ie_offset++; proto_tree_add_text(urr_ie_tree,tvb,ie_offset,2,"Access Control Class N"); /* These fields are specified and described in 3GPP TS 44.018 and 3GPP TS 22.011. */ break; case 15: - /* Cell Identifier List + /* 11.2.15 Cell Identifier List * The rest of the IE is coded as in [TS 48.008], not including IEI and length, if present */ be_cell_id_list(tvb, urr_ie_tree, ie_offset, ie_len, NULL, 0); @@ -957,38 +1060,46 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset) case 16: /* TU3907 Timer */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_TU3907_timer, tvb, ie_offset, 2, FALSE); break; - case 17: /* GSM RR State */ + case 17: /* 11.2.17 GSM RR/UTRAN RRC State */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_GSM_RR_state, tvb, ie_offset, 1, FALSE); break; - case 18: /* Routing Area Identification */ + case 18: /* 11.2.18 Routing Area Identification */ /* The rest of the IE is coded as in [TS 24.008] not including IEI and length, if present.*/ de_gmm_rai(tvb, urr_ie_tree, ie_offset, ie_len, NULL, 0); break; - case 19: /* UMA Band */ - proto_tree_add_item(urr_ie_tree, hf_uma_urr_UMA_band, tvb, ie_offset, 1, FALSE); + case 19: /* 11.2.19 GAN Band */ + proto_tree_add_item(urr_ie_tree, hf_uma_urr_gan_band, tvb, ie_offset, 1, FALSE); break; - case 20: /* URR State */ + case 20: /* 11.2.20 GAN State */ + /* URS, GA-RC/GA-CSR State (octet 3) Bits 2-1 */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_URR_state, tvb, ie_offset, 1, FALSE); + /* UPS, GA-PSR State (octet 3) Bit 3 */ + /* GA-RRC-CS, GA-RRC (CS) State (octet 3) Bit 4 */ + /* GA-RRC-PS, GA-RRC (PS) State (octet 3) Bit 5 */ break; - case 21: /* Register Reject Cause */ + case 21: /* 11.2.21 Register Reject Cause */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_register_reject_cause, tvb, ie_offset, 1, FALSE); break; - case 22: /* TU3906 Timer */ + case 22: /* 11.2.22 TU3906 Timer */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_TU3906_timer, tvb, ie_offset, 2, FALSE); break; - case 23: /* TU3910 Timer */ + case 23: /* 11.2.23 TU3910 Timer */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_TU3910_timer, tvb, ie_offset, 2, FALSE); break; - case 24: /* TU3902 Timer */ + case 24: /* 11.2.24 TU3902 Timer */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_TU3902_timer, tvb, ie_offset, 2, FALSE); break; case 25: - /* Communication Port Identity */ + /* 11.2.25 Communication Port Identity */ communication_port = tvb_get_ntohs(tvb,ie_offset); proto_tree_add_item(urr_ie_tree, hf_uma_urr_communication_port, tvb, ie_offset, 2, FALSE); break; - case 26: /* L3 Message */ + case 26: + /* 11.2.26 L3 Message + * The L3 Message information element contains the upper layer message to be transported + * using the GA-CSR protocol or the GA-RRC protocol between the MS and the core network. + */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_L3_protocol_discriminator, tvb, ie_offset, 1, FALSE); proto_tree_add_item(urr_ie_tree, hf_uma_urr_L3_Message, tvb, ie_offset, ie_len, FALSE); l3_tvb = tvb_new_subset(tvb, ie_offset,ie_len, ie_len ); @@ -996,53 +1107,55 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset) call_dissector(data_handle, l3_tvb, pinfo, urr_ie_tree); break; case 27: - /* Channel Mode + /* 11.2.27 Channel Mode * The rest of the IE is coded as in [TS 44.018], not including IEI and length, if present */ de_rr_ch_mode(tvb, urr_ie_tree, ie_offset, ie_len, NULL, 0); break; case 28: - /* Mobile Station Classmark 2 + /* 11.2.28 Mobile Station Classmark 2 * The rest of the IE is coded as in [TS 24.008], not including IEI and length, if present */ de_ms_cm_2(tvb, urr_ie_tree, ie_offset, ie_len, NULL, 0); break; case 29: - /* RR Cause + /* 11.2.29 RR Cause * The rest of the IE is coded as in [TS 44.018], not including IEI and length, if present */ de_rr_cause(tvb, urr_ie_tree, ie_offset, 1, NULL, 0); break; case 30: - /* Cipher Mode Setting + /* 11.2.30 Cipher Mode Setting * Note: The coding of fields SC and algorithm identifier is defined in [44.018] * as part of the Cipher Mode Setting IE. */ de_rr_cip_mode_set(tvb, urr_ie_tree, ie_offset, ie_len, NULL, 0); break; case 31: - /* GPRS Resumption + /* 11.2.31 GPRS Resumption * The rest of the IE is coded as in [TS 44.018], not including IEI and length, if present */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_GPRS_resumption, tvb, ie_offset, 1, FALSE); break; case 32: - /* Handover From UMAN Command + /* 11.2.32 Handover From GAN Command * If the target RAT is GERAN, the rest of the IE is coded as HANDOVER COMMAND message in [TS 44.018] * If the target RAT is UTRAN, the rest of the IE is coded as * HANDOVER TO UTRAN COMMAND message in [TS 25.331]. */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_L3_protocol_discriminator, tvb, ie_offset, 1, FALSE); proto_tree_add_item(urr_ie_tree, hf_uma_urr_L3_Message, tvb, ie_offset, ie_len, FALSE); + /* XXX the dissector to call should depend on the RAT type ??? */ l3_tvb = tvb_new_subset(tvb, ie_offset,ie_len, ie_len ); if (!dissector_try_port(bssap_pdu_type_table,BSSAP_PDU_TYPE_DTAP, l3_tvb, pinfo, urr_ie_tree)) call_dissector(data_handle, l3_tvb, pinfo, urr_ie_tree); break; - case 33: /* UL Quality Indication */ + case 33: + /* 11.2.33 UL Quality Indication */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_ULQI, tvb, ie_offset, 1, FALSE); break; case 34: - /* TLLI + /* 11.2.34 TLLI * The rest of the IE is coded as in [TS 44.018], not including IEI and length, if present. * [TS 44.018]:10.5.2.41a * The TLLI is encoded as a binary number with a length of 4 octets. TLLI is defined in 3GPP TS 23.003 @@ -1050,18 +1163,18 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset) de_rr_tlli(tvb, urr_ie_tree, ie_offset, ie_len, NULL, 0); break; case 35: - /* Packet Flow Identifier + /* 11.2.35 Packet Flow Identifier * The rest of the IE is coded as in [TS 24.008], not including IEI and length, if present. */ de_sm_pflow_id(tvb, urr_ie_tree, ie_offset, ie_len, NULL, 0); break; case 36: - /* Suspension Cause + /* 11.2.36 Suspension Cause * The rest of the IE is coded as in [TS 44.018], not including IEI and length, if present. */ de_rr_sus_cau(tvb, urr_ie_tree, ie_offset, ie_len, NULL, 0); break; - case 37: /* TU3920 Timer */ + case 37: /* 11.2.37 TU3920 Timer */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_TU3920_timer, tvb, ie_offset, 2, FALSE); break; /* 11.2.38 QoS */ @@ -1077,31 +1190,35 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset) proto_tree_add_item(urr_ie_tree, hf_uma_urr_radio_pri, tvb, ie_offset, 1, FALSE); /* RLC_MODE (octet 3, bit 7) */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_rlc_mode, tvb, ie_offset, 1, FALSE); + /* PEAK_THROUGHPUT_CLASS (octet 3, bits 1-4)*/ break; - case 39: /* URLC Cause */ - proto_tree_add_item(urr_ie_tree, hf_uma_urr_URLCcause, tvb, ie_offset, 1, FALSE); + case 39: /* 11.2.39 GA-PSR Cause */ + proto_tree_add_item(urr_ie_tree, hf_uma_urr_ga_psr_cause, tvb, ie_offset, 1, FALSE); break; - case 40: /* User Data Rate */ + case 40: /* 11.2.40 User Data Rate */ + /* The R field is the binary encoding of the rate information expressed in 100 bits/sec + * increments, starting from 0 x 100 bits/sec until 16777215 x 100 bits/sec (1.6 Gbps). + */ udr = tvb_get_ntoh24(tvb, ie_offset) * 100; proto_tree_add_uint(urr_ie_tree, hf_uma_urr_udr , tvb, ie_offset, 3, udr ); break; case 41: - /* Routing Area Code + /* 11.2.41 Routing Area Code * The rest of the IE is coded as in [TS 23.003] not including IEI and length, if present. */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_RAC, tvb, ie_offset, 1, FALSE); break; case 42: - /* AP Location + /* 11.2.42 AP Location * The rest of the IE is coded as in [GEOPRIV], not including IEI and length, if present * http://www.ietf.org/internet-drafts/draft-ietf-geopriv-dhcp-civil-05.txt */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_ap_location, tvb, ie_offset, ie_len, FALSE); break; - case 43: /* TU4001 Timer */ + case 43: /* 11.2.43 TU4001 Timer */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_TU4001_timer, tvb, ie_offset, 2, FALSE); break; - case 44: /* Location Status */ + case 44: /* 11.2.44 Location Status */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_LS, tvb, ie_offset, 1, FALSE); break; case 45: /* Cipher Response */ @@ -1119,7 +1236,7 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset) case 49: /* SAPI ID */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_sapi_id, tvb, ie_offset, 1, FALSE); break; - case 50: /* Establishment Cause */ + case 50: /* 11.2.50 Establishment Cause */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_establishment_cause, tvb, ie_offset, 1, FALSE); break; case 51: /* Channel Needed */ @@ -1134,7 +1251,7 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset) proto_tree_add_item(urr_ie_tree, hf_uma_urr_sample_size, tvb, ie_offset, 1, FALSE); break; case 54: - /* Payload Type + /* 11.2.54 Payload Type * Payload Type (octet 3) Allowed values are between 96 and 127. */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_payload_type, tvb, ie_offset, 1, FALSE); @@ -1147,12 +1264,13 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset) de_rr_multirate_conf(tvb, urr_ie_tree, ie_offset, ie_len, NULL, 0); break; case 56: - /* Mobile Station Classmark 3 + /* 11.2.56 Mobile Station Classmark 3 * The rest of the IE is coded as in [TS 24.008], not including IEI and length, if present */ + de_ms_cm_3(tvb, urr_ie_tree, offset, ie_len, NULL, 0); break; case 57: - /* LLC-PDU + /* 11.2.57 LLC-PDU * The rest of the IE is coded as in [TS 48.018], not including IEI and length, if present */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_LLC_PDU, tvb, ie_offset, ie_len, FALSE); @@ -1169,10 +1287,10 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset) call_dissector(data_handle, llc_tvb, pinfo, urr_ie_tree); } break; - case 58: /* Location Black List indicator */ + case 58: /* 11.2.58 Location Black List indicator */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_LBLI, tvb, ie_offset, 1, FALSE); break; - case 59: /* Reset Indicator */ + case 59: /* 11.2.59 Reset Indicator */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_RI, tvb, ie_offset, 1, FALSE); break; case 60: /* TU4003 Timer */ @@ -1182,10 +1300,15 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset) /* AP Service Name */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_ap_service_name_type, tvb, ie_offset, 1, FALSE); ie_offset++; + /* AP Service Name value (octet 4 to octet n) + * The AP Service Name is coded as a string according to UTF-8 format defined in RFC + * 3629 [50]. This means that the 1st octet of the UTF-8 string is coded in octet 4 and the + * last octet of the UTF-8 string is coded in the last octet of this IE (octet n). + */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_ap_Service_name_value, tvb, ie_offset, ie_len -1, FALSE); break; case 62: - /* UMA Service Zone Information + /* 11.2.62 GAN Service Zone Information * UMA Service Zone Icon Indicator, octet 3 */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_uma_service_zone_icon_ind, tvb, ie_offset, 1, FALSE); @@ -1200,23 +1323,35 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset) /* 11.2.63 RTP Redundancy Configuration */ case 63: /* RTP Redundancy Configuration */ + /* For each mode of the AMR Active Mode Set, as signaled in the Multi-rate Configuration IE, the window size for + * including redundant frames is indicated. So if e.g. the Active Mode Set contains four active modes, then the + * Redundancy Configuration IE consists of six octets, of which four indicate the Codec Mode to Window Size mapping. + */ + /* XXX TODO: loop ower the octets */ + /* Window Size (octet 3 to octet n) Bits 2 1 */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_window_size, tvb, ie_offset, 1, FALSE); + /* GAN A/Gb Mode Codec Mode (octet 3 to octet n) Bits 8 7 + * The GAN A/Gb Mode Codec Mode is coded as in [47] sub-clause 3.4.1 + */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_uma_codec_mode, tvb, ie_offset, 1, FALSE); + /* GAN Iu Mode Codec Mode (octet 3 to octet n) Bits 6 5 4 3 */ break; case 64: - /* UTRAN Classmark + /* 11.2.64 UTRAN Classmark * The rest of the IE is the INTER RAT HANDOVER INFO coded as in * [TS 25.331], not including IEI and length, if present */ + new_tvb = tvb_new_subset(tvb, ie_offset,ie_len, ie_len ); + dissect_rrc_InterRATHandoverInfo_PDU(new_tvb, pinfo, urr_ie_tree); break; case 65: - /* Classmark Enquiry Mask + /* 11.2.65 Classmark Enquiry Mask * The rest of the IE is the Classmark Enquiry Mask coded as in [TS 44.018], not including IEI and length, if present */ de_rr_cm_enq_mask(tvb, urr_ie_tree, offset, ie_len, NULL, 0); break; case 66: - /* UTRAN Cell Identifier List + /* 11.2.66 UTRAN Cell Identifier List * UTRAN Cell Identification Discriminator */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_UTRAN_cell_id_disc, tvb, ie_offset, 1, FALSE); @@ -1236,42 +1371,80 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset) } break; case 67: - /* Serving UNC table indicator */ + /* 11.2.67 Serving GANC table indicator */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_suti, tvb, ie_offset, 1, FALSE); break; case 68: - /* Registration indicators */ + /* 11.2.68 Registration indicators */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_uma_mps, tvb, ie_offset, 1, FALSE); break; case 69: - /* UMA PLMN List */ + /* 11.2.69 GAN PLMN List */ octet = tvb_get_guint8(tvb,ie_offset); proto_tree_add_uint(urr_ie_tree, hf_uma_urr_num_of_plms , tvb, ie_offset, 1, octet); /* TODO insert while loop here */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_lac, tvb, ie_offset, 2, FALSE); break; - /* 11.2.70 Received Signal Level List */ case 70: - /* Received Signal Level List */ + /* 11.2.70 GERAN Received Signal Level List */ while(ie_offset<=(offset + ie_len)){ proto_tree_add_item(urr_ie_tree, hf_uma_urr_RXLEV_NCELL, tvb, ie_offset, 1, FALSE); ie_offset++; } break; - /* 11.2.71 Required UMA Services */ case 71: + /* 11.2.71 Required GAN Services */ /* CBS Cell Broadcast Service (octet 3) */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_cbs, tvb, ie_offset, 1, FALSE); break; - /* 11.2.72 Broadcast Container */ case 72: + /* 11.2.72 Broadcast Container */ octet = tvb_get_guint8(tvb,ie_offset); proto_tree_add_item(urr_ie_tree, hf_uma_urr_num_of_cbs_frms , tvb, ie_offset, 1, FALSE); + /* The coding of the page of the CBS message is defined in sub-clause 9.4.1 in TS 23.041. */ proto_tree_add_text(urr_ie_tree, tvb, ie_offset + 1, ie_len-1,"CBS Frames - Not decoded"); break; - /* 11.2.73 3G Cell Identity */ case 73: - /* The rest of the IE is coded as in [TS 25.331] not including IEI and length, if present. */ + /* 11.2.73 3G Cell Identity */ + /* The rest of the IE is coded as in [TS 25.331] not including IEI and length, if present. + * See Annex F for coding + */ + break; + case 79: + /* 11.2.79 GAN Mode Indicator */ + case 80: + /* 11.2.80 CN Domain Identity */ + case 81: + /* 11.2.81 GAN Iu Mode Cell Description */ + case 82: + /* 11.2.82 3G UARFCN */ + case 83: + /* 11.2.83 RAB ID */ + case 84: + /* 11.2.84 RAB ID List */ + case 85: + /* 11.2.85 GA-RRC Establishment Cause */ + case 86: + /* 11.2.86 GA-RRC Cause */ + case 87: + /* 11.2.87 GA-RRC Paging Cause */ + case 88: + /* 11.2.88 Intra Domain NAS Node Selector */ + case 89: + /* 11.2.89 CTC Activation List */ + case 90: + /* 11.2.90 CTC Description */ + case 91: + /* 11.2.91 CTC Activation Ack List */ + case 92: + /* 11.2.92 CTC Activation Ack Description */ + case 93: + /* 11.2.93 CTC Modification List */ + case 94: + /* 11.2.94 CTC Modification Ack List */ + case 95: + /* 11.2.95 CTC Modification Ack Description */ + proto_tree_add_text(urr_ie_tree,tvb,ie_offset,ie_len,"DATA"); break; case 96: /* MS Radio Identity */ proto_tree_add_item(urr_ie_tree, hf_uma_urr_radio_type_of_id, tvb, ie_offset, 1, FALSE); @@ -1300,7 +1473,8 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset) proto_tree_add_ipv4(urr_ie_tree, hf_uma_urr_unc_ipv4, tvb, ie_offset, 4, unc_ipv4_address); } break; - case 98: /* UNC Fully Qualified Domain/Host Name */ + case 98: + /* UNC Fully Qualified Domain/Host Name */ if ( ie_len > 0){ string = (gchar*)tvb_get_ephemeral_string(tvb, ie_offset, ie_len); proto_tree_add_string(urr_ie_tree, hf_uma_unc_FQDN, tvb, ie_offset, ie_len, string); @@ -1440,6 +1614,40 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset) ie_offset++; } break; + case 108: + /* 11.2.74 PS Handover to GERAN Command */ + case 109: + /* 11.2.75 PS Handover to UTRAN Command */ + case 110: + /* 11.2.76 PS Handover to GERAN PSI */ + case 111: + /* 11.2.77 PS Handover to GERAN SI */ + case 112: + /* 11.2.78 TU4004 Timer */ + case 115: + /* 11.2.96 PTC Activation List */ + case 116: + /* 11.2.97 PTC Description */ + case 117: + /* 11.2.98 PTC Activation Ack List */ + case 118: + /* 11.2.99 PTC Activation Ack Description */ + case 119: + /* 11.2.100 PTC Modification List */ + case 120: + /* 11.2.101 PTC Modification Ack List */ + case 121: + /* 11.2.102 PTC Modification Ack Description */ + case 122: + /* 11.2.103 RAB Configuration */ + case 123: + /* 11.2.104 Multi-rate Configuration 2 */ + case 124: + /* 11.2.105 Selected Integrity Protection Algorithm */ + case 125: + /* 11.2.106 Selected Encryption Algorithm */ + case 126: + /* 11.2.107 CN Domains to Handover */ default: proto_tree_add_text(urr_ie_tree,tvb,ie_offset,ie_len,"DATA"); break; @@ -1714,8 +1922,8 @@ proto_register_uma(void) "TMSI/P-TMSI", HFILL } }, { &hf_uma_urr_uri, - { "UMA Release Indicator (URI)","uma.urr.uri", - FT_UINT8, BASE_DEC, NULL, 0x07, + { "GAN Release Indicator","uma.urr.uri", + FT_UINT8, BASE_DEC, VALS(uma_urr_gan_rel_ind_vals), 0x07, "URI", HFILL } }, { &hf_uma_urr_radio_type_of_id, @@ -1752,29 +1960,39 @@ proto_register_uma(void) }, { &hf_uma_urr_gci, { "GCI, GSM Coverage Indicator","uma.urr.gci", - FT_UINT8, BASE_DEC, VALS(gci_vals), 0x0, + FT_UINT8, BASE_DEC, VALS(uma_gci_vals), 0x0, "GCI, GSM Coverage Indicator", HFILL } }, { &hf_uma_urr_tura, { "TURA, Type of Unlicensed Radio","uma.urr.tura", - FT_UINT8,BASE_DEC, VALS(tura_vals), 0xf, + FT_UINT8,BASE_DEC, VALS(uma_tura_vals), 0xf, "TURA, Type of Unlicensed Radio", HFILL } }, { &hf_uma_urr_gc, { "GC, GERAN Capable","uma.urr.gc", - FT_UINT8,BASE_DEC, VALS(gc_vals), 0x10, + FT_UINT8,BASE_DEC, VALS(uma_gc_vals), 0x10, "GC, GERAN Capable", HFILL } }, { &hf_uma_urr_uc, { "UC, UTRAN Capable","uma.urr.uc", - FT_UINT8,BASE_DEC, VALS(uc_vals), 0x20, + FT_UINT8,BASE_DEC, VALS(uma_uc_vals), 0x20, "GC, GERAN Capable", HFILL } }, { &hf_uma_urr_rrs, { "RTP Redundancy Support(RRS)","uma.urr.rrs", - FT_UINT8,BASE_DEC, VALS(rrs_vals), 0x01, + FT_UINT8,BASE_DEC, VALS(uma_rrs_vals), 0x01, "RTP Redundancy Support(RRS)", HFILL } }, + { &hf_uma_urr_gmsi, + { "GMSI, GAN Mode Support Indicator)","uma.urr.gmsi", + FT_UINT8,BASE_DEC, VALS(uma_gmsi_vals), 0x06, + "GMSI, GAN Mode Support Indicator", HFILL } + }, + { &hf_uma_urr_psho, + { "PS HO, PS Handover Capable","uma.urr.psho", + FT_UINT8,BASE_DEC, VALS(uma_ps_ho_vals), 0x02, + "PS HO, PS Handover Capable", HFILL } + }, { &hf_uma_urr_IP_Address_type, { "IP address type number value","uma.urr.ip_type", FT_UINT8,BASE_DEC, VALS(IP_address_type_vals), 0x0, @@ -1797,7 +2015,7 @@ proto_register_uma(void) }, { &hf_uma_urr_dis_rej_cau, { "Discovery Reject Cause","uma.urr.is_rej_cau", - FT_UINT8,BASE_DEC, VALS(discovery_reject_cause_vals), 0x0, + FT_UINT8,BASE_DEC, VALS(uma_discovery_reject_cause_vals), 0x0, "Discovery Reject Cause", HFILL } }, { &hf_uma_urr_ECMC, @@ -1887,12 +2105,12 @@ proto_register_uma(void) }, { &hf_uma_urr_GSM_RR_state, { "GSM RR State value","uma.urr.gsmrrstate", - FT_UINT8,BASE_DEC, VALS(GRS_GSM_RR_State_vals), 0x7, + FT_UINT8,BASE_DEC, VALS(uma_GRS_GSM_RR_State_vals), 0x7, "GSM RR State value", HFILL } }, - { &hf_uma_urr_UMA_band, + { &hf_uma_urr_gan_band, { "UMA Band","uma.urr.umaband", - FT_UINT8,BASE_DEC, VALS(UMA_band_vals), 0x0f, + FT_UINT8,BASE_DEC, VALS(uma_gan_band_vals), 0x0f, "UMA Band", HFILL } }, { &hf_uma_urr_URR_state, @@ -1952,7 +2170,7 @@ proto_register_uma(void) }, { &hf_uma_urr_ULQI, { "ULQI, UL Quality Indication","uma.urr.ULQI", - FT_UINT8,BASE_DEC, VALS(ULQI_vals), 0x0f, + FT_UINT8,BASE_DEC, VALS(uma_ulqi_vals), 0x0f, "ULQI, UL Quality Indication", HFILL } }, { &hf_uma_urr_TU3920_timer, @@ -1975,10 +2193,10 @@ proto_register_uma(void) FT_UINT8,BASE_DEC, VALS(rlc_mode_vals), 0x80, "RLC mode", HFILL } }, - { &hf_uma_urr_URLCcause, - { "URLC Cause","uma.urr.URLCcause", - FT_UINT8,BASE_DEC, VALS(URLC_cause_vals), 0x0, - "URLC Cause", HFILL } + { &hf_uma_urr_ga_psr_cause, + { "GA-PSR Cause","uma.urr.ga_psr_cause", + FT_UINT8,BASE_DEC, VALS(uma_ga_psr_cause_vals), 0x0, + "GA-PSR Cause", HFILL } }, { &hf_uma_urr_udr, { "User Data Rate value (bits/s)","uma.urr.URLCcause", @@ -2091,9 +2309,9 @@ proto_register_uma(void) "Window Size", HFILL } }, { &hf_uma_urr_uma_codec_mode, - { "Codec Mode","uma.urr.uma_codec_mode", + { "GAN A/Gb Mode Codec Mode","uma.urr.uma_codec_mode", FT_UINT8,BASE_DEC, NULL, 0xc0, - "Codec Mode", HFILL } + "GAN A/Gb Mode Codec Mode", HFILL } }, { &hf_uma_urr_UTRAN_cell_id_disc, { "UTRAN Cell Identification Discriminator","uma.urr.uma_UTRAN_cell_id_disc", @@ -2101,9 +2319,9 @@ proto_register_uma(void) "UTRAN Cell Identification Discriminator", HFILL } }, { &hf_uma_urr_suti, - { "SUTI, Serving UNC table indicator indicator","uma.urr.uma_suti", + { "SUTI, Serving GANC table indicator","uma.urr.uma_suti", FT_UINT8,BASE_DEC, VALS(suti_vals), 0x01, - "SUTI, Serving UNC table indicator indicator", HFILL } + "SUTI, Serving GANC table indicator", HFILL } }, { &hf_uma_urr_uma_mps, { "UMPS, Manual PLMN Selection indicator","uma.urr.mps", |