ALIGNED
#.END
+#.USE_VALS_EXT
+CauseRadioNetwork
+ProcedureCode
+ProtocolIE-ID
+
+#.EXPORTS ONLY_VALS WS_VAR
+CauseRadioNetwork
+CauseTransport
+CauseNas
+CauseProtocol
+CauseMisc
+
#.EXPORTS
+ENB-StatusTransfer-TransparentContainer_PDU
+Global-ENB-ID_PDU
+Global-ENB-ID
+SONtransferApplicationIdentity_PDU
+SONtransferRequestContainer_PDU
+SONtransferRequestContainer
+SONtransferResponseContainer_PDU
+SONtransferResponseContainer
+SONtransferCause_PDU
#.PDU_NEW
S1AP-PDU
+SourceeNB-ToTargeteNB-TransparentContainer
+TargeteNB-ToSourceeNB-TransparentContainer
+SourceRNC-ToTargetRNC-TransparentContainer
+TargetRNC-ToSourceRNC-TransparentContainer
+SourceBSS-ToTargetBSS-TransparentContainer
+TargetBSS-ToSourceBSS-TransparentContainer
+ENB-StatusTransfer-TransparentContainer
+SONtransferApplicationIdentity
+SONtransferRequestContainer
+SONtransferResponseContainer
+SONtransferCause
#.MAKE_ENUM
ProcedureCode
ProtocolIE-ContainerPairList
ProtocolError-IE-ContainerList
E-RAB-IE-ContainerPairList
+Presence
+L3-Information
+OldBSS-ToNewBSS-Information
#.END
#.FN_PARS ProtocolIE-ID VAL_PTR=&ProtocolIE_ID
#.FN_FTR ProtocolIE-ID
if (tree) {
- proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", val_to_str(ProtocolIE_ID, VALS(s1ap_ProtocolIE_ID_vals), "unknown (%d)"));
+ proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", val_to_str_ext(ProtocolIE_ID, &s1ap_ProtocolIE_ID_vals_ext, "unknown (%d)"));
}
#.END
#.FN_PARS ProcedureCode VAL_PTR = &ProcedureCode
#.FN_FTR ProcedureCode
- if (check_col(actx->pinfo->cinfo, COL_INFO))
- col_add_fstr(actx->pinfo->cinfo, COL_INFO, "%s ",
- val_to_str(ProcedureCode, s1ap_ProcedureCode_vals,
- "unknown message"));
+ col_add_fstr(actx->pinfo->cinfo, COL_INFO, "%s ",
+ val_to_str_ext(ProcedureCode, &s1ap_ProcedureCode_vals_ext,
+ "unknown message"));
#.END
#.FN_PARS InitiatingMessage/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_InitiatingMessageValue
-
+#.FN_HDR InitiatingMessage/value
+ message_type = INITIATING_MESSAGE;
#.FN_PARS SuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_SuccessfulOutcomeValue
-
+#.FN_HDR SuccessfulOutcome/value
+ message_type = SUCCESSFUL_OUTCOME;
#.FN_PARS UnsuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_UnsuccessfulOutcomeValue
+#.FN_HDR UnsuccessfulOutcome/value
+ message_type = UNSUCCESSFUL_OUTCOME;
#--- Parameterization is not supported in asn2wrs ---
if (!parameter_tvb)
return offset;
- dissect_e212_mcc_mnc(parameter_tvb, tree, 0);
+ dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, tree, 0, FALSE);
#.END
#.FN_BODY ENBname VAL_PTR = parameter_tvb
int p_offset;
gboolean is_ascii;
- offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
- NO_BOUND, NO_BOUND, FALSE, ¶meter_tvb);
+%(DEFAULT_BODY)s
if (!parameter_tvb)
return offset;
#.END
+
#.FN_BODY NAS-PDU VAL_PTR = ¶meter_tvb
tvbuff_t *parameter_tvb=NULL;
if ((tvb_length(parameter_tvb)>0)&&(nas_eps_handle))
call_dissector(nas_eps_handle,parameter_tvb,%(ACTX)s->pinfo, tree);
+#.FN_BODY LPPa-PDU VAL_PTR = ¶meter_tvb
+
+ tvbuff_t *parameter_tvb=NULL;
+
+%(DEFAULT_BODY)s
+
+ if ((tvb_length(parameter_tvb)>0)&&(lppa_handle))
+ call_dissector(lppa_handle, parameter_tvb, %(ACTX)s->pinfo, tree);
+
#.FN_BODY TransportLayerAddress VAL_PTR = ¶meter_tvb
tvbuff_t *parameter_tvb=NULL;
proto_tree *subtree;
# a) 32 bits in case of IPv4 address according to [6]; and
# b) 128 bits in case of IPv6 address according to [5].
/* Get the length */
- tvb_len = tvb_length(tvb);
+ tvb_len = tvb_length(parameter_tvb);
subtree = proto_item_add_subtree(actx->created_item, ett_s1ap_TransportLayerAddress);
if (tvb_len==4){
/* IPv4 */
- proto_tree_add_item(subtree, hf_s1ap_transportLayerAddressIPv4, tvb, 0, tvb_len, FALSE);
+ proto_tree_add_item(subtree, hf_s1ap_transportLayerAddressIPv4, parameter_tvb, 0, tvb_len, FALSE);
}
if (tvb_len==16){
/* IPv6 */
- proto_tree_add_item(subtree, hf_s1ap_transportLayerAddressIPv6, tvb, 0, tvb_len, FALSE);
+ proto_tree_add_item(subtree, hf_s1ap_transportLayerAddressIPv6, parameter_tvb, 0, tvb_len, FALSE);
+ }
+#.FN_HDR InitialUEMessage
+ /* Set the direction of the message */
+ actx->pinfo->link_dir=P2P_DIR_UL;
+
+#.FN_HDR DownlinkNASTransport
+ /* Set the direction of the message */
+ actx->pinfo->link_dir=P2P_DIR_DL;
+
+#.FN_HDR UplinkNASTransport
+ /* Set the direction of the message */
+ actx->pinfo->link_dir=P2P_DIR_UL;
+
+#.FN_BODY HandoverType VAL_PTR = &handover_type_value
+
+%(DEFAULT_BODY)s
+
+#Zero the value before use
+#.FN_HDR HandoverRequired
+ handover_type_value = 0;
+#.FN_HDR HandoverCommand
+ handover_type_value = 0;
+#.FN_HDR HandoverRequest
+ handover_type_value = 0;
+
+#.FN_BODY Source-ToTarget-TransparentContainer VAL_PTR = ¶meter_tvb
+# I think the message is "directly encoded" into the octest string(no "double encoding")
+# (Compare RANAP)
+# Annex A
+# ...Therefore the container content is encoded according to the
+# rules which are specified for the target radio system. In section 8.4.1.2,
+# it is described how the container shall be encoded with respect to the scenario
+# in which it is used.
+ tvbuff_t *parameter_tvb;
+ proto_tree *subtree;
+
+%(DEFAULT_BODY)s
+
+ subtree = proto_item_add_subtree(actx->created_item, ett_s1ap_ToTargetTransparentContainer);
+
+ switch(handover_type_value){
+ /*
+ HandoverType ::= ENUMERATED {
+ intralte,
+ ltetoutran,
+ ltetogeran,
+ utrantolte,
+ gerantolte,
+ ...
+ } */
+ case 0:
+ /* intralte
+ Intra E-UTRAN handover Source eNB to Target eNB
+ Transparent Container 36.413
+ */
+ dissect_SourceeNB_ToTargeteNB_TransparentContainer_PDU(parameter_tvb, actx->pinfo, subtree);
+ break;
+ case 1:
+ /* ltetoutran
+ Source RNC to Target RNC
+ Transparent Container 25.413
+ */
+ dissect_ranap_SourceRNC_ToTargetRNC_TransparentContainer_PDU(parameter_tvb, actx->pinfo, subtree);
+ break;
+ case 2:
+ /* ltetogeran
+ Source BSS to Target BSS
+ Transparent Container 48.018
+ */
+ dissect_SourceBSS_ToTargetBSS_TransparentContainer_PDU(parameter_tvb, actx->pinfo, subtree);
+ break;
+ case 3:
+ /* utrantolte */
+ break;
+ case 4:
+ /* gerantolte */
+ break;
+ default:
+ DISSECTOR_ASSERT_NOT_REACHED();
+ break;
+ }
+
+#.FN_BODY Target-ToSource-TransparentContainer VAL_PTR = ¶meter_tvb
+# I think the message is "directly encoded" into the octest string(no "double encoding")
+# See Target-ToSource-TransparentContainer in RANAP
+
+ tvbuff_t *parameter_tvb;
+ proto_tree *subtree;
+
+%(DEFAULT_BODY)s
+
+ subtree = proto_item_add_subtree(actx->created_item, ett_s1ap_ToSourceTransparentContainer);
+
+ switch(handover_type_value){
+ /*
+ HandoverType ::= ENUMERATED {
+ intralte,
+ ltetoutran,
+ ltetogeran,
+ utrantolte,
+ gerantolte,
+ ...
+ } */
+ case 0:
+ /* intralte
+ Intra E-UTRAN handover Target eNB to Source eNB
+ Transparent Container 36.413
+ */
+ dissect_TargeteNB_ToSourceeNB_TransparentContainer_PDU(parameter_tvb, actx->pinfo, subtree);
+ break;
+ case 1:
+ /* ltetoutran
+ Target RNC to Source RNC
+ Transparent Container 25.413
+ */
+ dissect_TargetRNC_ToSourceRNC_TransparentContainer_PDU(parameter_tvb, actx->pinfo, subtree);
+ break;
+ case 2:
+ /* ltetogeran
+ Target BSS to Source BSS
+ Transparent Container 48.018
+ */
+ dissect_TargetBSS_ToSourceBSS_TransparentContainer_PDU(parameter_tvb, actx->pinfo, subtree);
+ break;
+ case 3:
+ /* utrantolte */
+ break;
+ case 4:
+ /* gerantolte */
+ break;
+ default:
+ DISSECTOR_ASSERT_NOT_REACHED();
+ break;
}
+#SourceBSS-ToTargetBSS-TransparentContainer
+#SourceRNC-ToTargetRNC-TransparentContainer
+#TargetRNC-ToSourceRNC-TransparentContainer
+#TargetBSS-ToSourceBSS-TransparentContainer
+
+#.FN_BODY RRC-Container VAL_PTR = ¶meter_tvb
+
+# Extracts from the standard:
+# Includes the RRC Handover Preparation Information message as defined
+# in subclause 10.2.2 of [16].
+# [16] 3GPP TS 36.331: "Evolved Universal Terrestrial Radio Access (E-UTRAN); Radio Resource
+# Control (RRC) Protocol Specification3GPP TS 36.331:
+# "Evolved Universal Terrestrial Radio Access (E-UTRAN); Radio Resource
+# Control (RRC) Protocol Specification.
+# :
+# 9.2.1.7 Source eNB to Target eNB Transparent Container
+# The Source eNB to target eNB Transparent Container IE is an information element
+# that is produced by the source eNB and is transmitted to the target eNB.
+# For inter-system handovers to E-UTRAN, the IE is transmitted from the external
+# handover source to the target eNB. This IE is transparent to the EPC.
+#
+# RRC Container M OCTET STRING Includes the RRC Handover Preparation Information
+# message as defined in subclause 10.2.2 of [16].
+# :
+# 9.2.1.8 Target eNB to Source eNB Transparent Container
+# The Target eNB to Source eNB Transparent Container IE is an information element
+# that is produced by the target eNB and is transmitted to the source eNB.
+# For inter-system handovers to E-UTRAN, the IE is transmitted from the target
+# eNB to the external relocation source.
+# :
+# RRC Container M OCTET STRING Includes the RRC E-UTRA Handover Command message
+# as defined in subclause 10.2.2 of [16].
+# --- End quote ---
+# Source eNB to Target eNB Transparent Container is present in
+# HandoverRequired and HandoverRequest.
+# Target eNB to Source eNB Transparent Container is present in
+# HandoverCommand and HandoverRequestAcknowledge.
+
+ tvbuff_t *parameter_tvb;
+ proto_tree *subtree;
+
+%(DEFAULT_BODY)s
+ if (!parameter_tvb)
+ return offset;
+
+ subtree = proto_item_add_subtree(actx->created_item, ett_s1ap_RRCContainer);
+
+ switch(message_type){
+ case INITIATING_MESSAGE:
+ /* 9.2.1.7 Source eNB to Target eNB Transparent Container */
+ dissect_lte_rrc_HandoverPreparationInformation_PDU(parameter_tvb, actx->pinfo, subtree);
+ break;
+ case SUCCESSFUL_OUTCOME:
+ /* 9.2.1.7 Source eNB to Target eNB Transparent Container */
+ dissect_lte_rrc_HandoverCommand_PDU(parameter_tvb, actx->pinfo, subtree);
+ break;
+ default:
+ break;
+ }
+
+
+
+
+#.FN_BODY UERadioCapability VAL_PTR = ¶meter_tvb
+ tvbuff_t *parameter_tvb;
+ proto_tree *subtree;
+%(DEFAULT_BODY)s
+ if (!parameter_tvb)
+ return offset;
+
+ subtree = proto_item_add_subtree(actx->created_item, ett_s1ap_UERadioCapability);
+ dissect_lte_rrc_UERadioAccessCapabilityInformation_PDU(parameter_tvb, actx->pinfo, subtree);
+
+# 9.2.3.24 RIM Information
+# Contains the BSSGP RIM PDU
+#.FN_BODY RIMInformation VAL_PTR = ¶meter_tvb
+ tvbuff_t *parameter_tvb;
+ proto_tree *subtree;
+
+%(DEFAULT_BODY)s
+
+ if (!parameter_tvb)
+ return offset;
+
+ subtree = proto_item_add_subtree(actx->created_item, ett_s1ap_RIMInformation);
+ if ((tvb_length(parameter_tvb)>0)&&(bssgp_handle)){
+ col_set_fence(%(ACTX)s->pinfo->cinfo, COL_INFO);
+ call_dissector(bssgp_handle,parameter_tvb,%(ACTX)s->pinfo, subtree);
+ }
+
+
#.TYPE_ATTR
-ProtocolExtensionID TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(s1ap_ProtocolIE_ID_vals)
+ProtocolExtensionID TYPE = FT_UINT8 DISPLAY = BASE_DEC|BASE_EXT_STRING STRINGS = &s1ap_ProtocolIE_ID_vals_ext
#.ASSIGN_VALUE_TO_TYPE # S1AP does not have constants assigned to types, they are pure INTEGER
# ProcedureCode
id-eNBConfigurationTransfer ProcedureCode
id-MMEConfigurationTransfer ProcedureCode
id-CellTrafficTrace ProcedureCode
+id-Kill ProcedureCode
+id-downlinkUEAssociatedLPPaTransport ProcedureCode
+id-uplinkUEAssociatedLPPaTransport ProcedureCode
+id-downlinkNonUEAssociatedLPPaTransport ProcedureCode
+id-uplinkNonUEAssociatedLPPaTransport ProcedureCode
# ProtocolIE-ID
id-MME-UE-S1AP-ID ProtocolIE-ID
id-E-RABSetupItemBearerSURes ProtocolIE-ID
id-SecurityContext ProtocolIE-ID
id-HandoverRestrictionList ProtocolIE-ID
+id-UEPagingID ProtocolIE-ID
id-pagingDRX ProtocolIE-ID
id-TAIList ProtocolIE-ID
id-TAIItem ProtocolIE-ID
id-NASSecurityParametersfromE-UTRAN ProtocolIE-ID
id-NASSecurityParameterstoE-UTRAN ProtocolIE-ID
id-DefaultPagingDRX ProtocolIE-ID
+id-Source-ToTarget-TransparentContainer-Secondary ProtocolIE-ID
+id-Target-ToSource-TransparentContainer-Secondary ProtocolIE-ID
+id-EUTRANRoundTripDelayEstimationInfo ProtocolIE-ID
+id-BroadcastCancelledAreaList ProtocolIE-ID
+id-ConcurrentWarningMessageIndicator ProtocolIE-ID
+id-Data-Forwarding-Not-Possible ProtocolIE-ID
+id-ExtendedRepetitionPeriod ProtocolIE-ID
+id-CellAccessMode ProtocolIE-ID
+id-CSGMembershipStatus ProtocolIE-ID
+id-LPPa-PDU ProtocolIE-ID
+id-Routing-ID ProtocolIE-ID
+id-Time-Synchronization-Info ProtocolIE-ID
+id-PS-ServiceNotAvailable ProtocolIE-ID
#.END
#.REGISTER_NEW
E-RABToBeSetupListBearerSUReq N s1ap.ies id-E-RABToBeSetupListBearerSUReq
E-RABToBeSetupItemBearerSUReq N s1ap.ies id-E-RABToBeSetupItemBearerSUReq
E-RABAdmittedList N s1ap.ies id-E-RABAdmittedList
-#E-RABFailedtoSetupListHOReqAck N s1ap.ies id-E-RABFailedToSetupListHOReqAck
+E-RABFailedtoSetupListHOReqAck N s1ap.ies id-E-RABFailedToSetupListHOReqAck
E-RABAdmittedItem N s1ap.ies id-E-RABAdmittedItem
E-RABFailedToSetupItemHOReqAck N s1ap.ies id-E-RABFailedtoSetupItemHOReqAck
E-RABToBeSwitchedDLList N s1ap.ies id-E-RABToBeSwitchedDLList
E-RABToBeSetupItemHOReq N s1ap.ies id-E-RABToBeSetupItemHOReq
E-RABSetupListBearerSURes N s1ap.ies id-E-RABSetupListBearerSURes
E-RABList N s1ap.ies id-E-RABFailedToSetupListBearerSURes
-E-RABList N s1ap.ies id-E-RABToBeModifiedListBearerModReq
+E-RABToBeModifiedListBearerModReq N s1ap.ies id-E-RABToBeModifiedListBearerModReq
E-RABModifyListBearerModRes N s1ap.ies id-E-RABModifyListBearerModRes
E-RABList N s1ap.ies id-E-RABFailedToModifyList
E-RABList N s1ap.ies id-E-RABToBeReleasedList
E-RABSetupItemBearerSURes N s1ap.ies id-E-RABSetupItemBearerSURes
SecurityContext N s1ap.ies id-SecurityContext
HandoverRestrictionList N s1ap.ies id-HandoverRestrictionList
+UEPagingID N s1ap.ies id-UEPagingID
PagingDRX N s1ap.ies id-pagingDRX
TAIList N s1ap.ies id-TAIList
TAIItem N s1ap.ies id-TAIItem
NASSecurityParametersfromE-UTRAN N s1ap.ies id-NASSecurityParametersfromE-UTRAN
NASSecurityParameterstoE-UTRAN N s1ap.ies id-NASSecurityParameterstoE-UTRAN
PagingDRX N s1ap.ies id-DefaultPagingDRX
+Source-ToTarget-TransparentContainer N s1ap.ies id-Source-ToTarget-TransparentContainer-Secondary
+Target-ToSource-TransparentContainer N s1ap.ies id-Target-ToSource-TransparentContainer-Secondary
+EUTRANRoundTripDelayEstimationInfo N s1ap.ies id-EUTRANRoundTripDelayEstimationInfo
+BroadcastCancelledAreaList N s1ap.ies id-BroadcastCancelledAreaList
+ConcurrentWarningMessageIndicator N s1ap.ies id-ConcurrentWarningMessageIndicator
+ExtendedRepetitionPeriod N s1ap.ies id-ExtendedRepetitionPeriod
+CellAccessMode N s1ap.ies id-CellAccessMode
+CSGMembershipStatus N s1ap.ies id-CSGMembershipStatus
+LPPa-PDU N s1ap.ies id-LPPa-PDU
+Routing-ID N s1ap.ies id-Routing-ID
+PS-ServiceNotAvailable N s1ap.ies id-PS-ServiceNotAvailable
#S1AP-PROTOCOL-IES-PAIR
-#RAB-SetupOrModifyItemFirst N s1ap.ies.pair.first id-RAB-SetupOrModifyItem
-#RAB-SetupOrModifyItemSecond N s1ap.ies.pair.second id-RAB-SetupOrModifyItem
+#RAB-SetupOrModifyItemFirst N s1ap.ies.pair.first id-RAB-SetupOrModifyItem
+#RAB-SetupOrModifyItemSecond N s1ap.ies.pair.second id-RAB-SetupOrModifyItem
-#NBAP-PROTOCOL-EXTENSION
-#RAB-Parameters N s1ap.extension id-AlternativeRABConfiguration
+#S1AP-PROTOCOL-EXTENSION
+#RAB-Parameters N s1ap.extension id-AlternativeRABConfiguration
#Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf N s1ap.extension id-Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf
+Data-Forwarding-Not-Possible N s1ap.extension id-Data-Forwarding-Not-Possible
+TimeSynchronizationInfo N s1ap.extension id-Time-Synchronization-Info
-#NBAP-ELEMENTARY-PROCEDURE
+#S1AP-ELEMENTARY-PROCEDURE
HandoverRequired N s1ap.proc.imsg id-HandoverPreparation
HandoverCommand N s1ap.proc.sout id-HandoverPreparation
HandoverPreparationFailure N s1ap.proc.uout id-HandoverPreparation
CellTrafficTrace N s1ap.proc.imsg id-CellTrafficTrace
+KillRequest N s1ap.proc.imsg id-Kill
+KillResponse N s1ap.proc.sout id-Kill
+
+DownlinkUEAssociatedLPPaTransport N s1ap.proc.imsg id-downlinkUEAssociatedLPPaTransport
+
+UplinkUEAssociatedLPPaTransport N s1ap.proc.imsg id-uplinkUEAssociatedLPPaTransport
+
+DownlinkNonUEAssociatedLPPaTransport N s1ap.proc.imsg id-downlinkNonUEAssociatedLPPaTransport
+
+UplinkNonUEAssociatedLPPaTransport N s1ap.proc.imsg id-uplinkNonUEAssociatedLPPaTransport
+
#.TYPE_ATTR
BitRate TYPE = FT_UINT64 DISPLAY = BASE_DEC STRINGS = NULL