generate ASN.1 structures for each message withotu iformation object class

this is done semi-automatically using the asn1msgs.pl script.
This commit is contained in:
Harald Welte 2015-08-30 19:49:16 +02:00
parent 96ec96e3b4
commit 8d6026742f
4 changed files with 584 additions and 1 deletions

35
asn1/asn1msgs.pl Executable file
View File

@ -0,0 +1,35 @@
#!/usr/bin/perl -w
#use strict;
# small script to extract the types used in elementary procedures
# {HNBAP,RUA,RANAP}-PDU-Descriptions.asn and print them in an ASN.1
# format that will trigger asn1c to generate associated structures
#
# Usage: ./asn1enum.pl < HNBAP-PDU-Descriptions.asn
my $l;
my @a;
while ($l = <STDIN>) {
chomp($l);
if ($l =~ /^\s*(\S+\s*\S+)\s+(\S+)\s*$/) {
if ($1 eq 'INITIATING MESSAGE' ||
$1 eq 'SUCCESSFUL OUTCOME' ||
$1 eq 'UNSUCCESSFUL OUTCOME' ||
$1 eq 'OUTCOME') {
push(@a, $2);
}
}
}
foreach my $k (@a) {
my $lk = $k;
my $firstchar = substr($lk, 0, 1);
if ($firstchar =~ /^[A-Z]/) {
substr($lk, 0, 1, lc($firstchar));
}
printf("%s ::= SEQUENCE {\n", $k);
printf(" %s-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,\n", $lk);
printf(" ...\n");
printf("}\n\n");
}

View File

@ -7,12 +7,14 @@ DEFINITIONS AUTOMATIC TAGS ::=
BEGIN BEGIN
IMPORTS IMPORTS
maxProtocolIEs,
Criticality, Criticality,
ProcedureCode, ProcedureCode,
ProtocolIE-ID ProtocolIE-ID
FROM HNBAP-CommonDataTypes; FROM HNBAP-CommonDataTypes;
HNBAP-PDU ::= CHOICE { HNBAP-PDU ::= CHOICE {
initiatingMessage InitiatingMessage, initiatingMessage InitiatingMessage,
successfulOutcome SuccessfulOutcome, successfulOutcome SuccessfulOutcome,
@ -38,6 +40,103 @@ UnsuccessfulOutcome ::= SEQUENCE {
value ANY value ANY
} }
HNBRegisterRequest ::= SEQUENCE {
hnbRegisterRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
HNBRegisterAccept ::= SEQUENCE {
hnbRegisterAccept-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
HNBRegisterReject ::= SEQUENCE {
hnbRegisterReject-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
UERegisterRequest ::= SEQUENCE {
ueRegisterRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
UERegisterAccept ::= SEQUENCE {
ueRegisterAccept-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
UERegisterReject ::= SEQUENCE {
ueRegisterReject-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
UEDe-Register ::= SEQUENCE {
ueDe-Register-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
HNBDe-Register ::= SEQUENCE {
hnbDe-Register-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
ErrorIndication ::= SEQUENCE {
errorIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
CSGMembershipUpdate ::= SEQUENCE {
csgMembershipUpdate-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
TNLUpdateRequest ::= SEQUENCE {
tnlUpdateRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
TNLUpdateResponse ::= SEQUENCE {
tnlUpdateResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
TNLUpdateFailure ::= SEQUENCE {
tnlUpdateFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
HNBConfigTransferRequest ::= SEQUENCE {
hnbConfigTransferRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
HNBConfigTransferResponse ::= SEQUENCE {
hnbConfigTransferResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
RelocationComplete ::= SEQUENCE {
relocationComplete-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
U-RNTIQueryRequest ::= SEQUENCE {
u-RNTIQueryRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
U-RNTIQueryResponse ::= SEQUENCE {
u-RNTIQueryResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
PrivateMessage ::= SEQUENCE {
privateMessage-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
IE ::= SEQUENCE { IE ::= SEQUENCE {
id ProtocolIE-ID, id ProtocolIE-ID,
criticality Criticality, criticality Criticality,

View File

@ -11,7 +11,11 @@ IMPORTS
ProcedureCode, ProcedureCode,
ProtocolIE-ID ProtocolIE-ID
FROM RANAP-CommonDataTypes; FROM RANAP-CommonDataTypes
maxProtocolIEs
FROM RANAP-Constants;
RANAP-PDU ::= CHOICE { RANAP-PDU ::= CHOICE {
initiatingMessage InitiatingMessage, initiatingMessage InitiatingMessage,
@ -45,6 +49,418 @@ Outcome ::= SEQUENCE {
value ANY value ANY
} }
Iu-ReleaseCommand ::= SEQUENCE {
iu-ReleaseCommand-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
Iu-ReleaseComplete ::= SEQUENCE {
iu-ReleaseComplete-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
RelocationRequired ::= SEQUENCE {
relocationRequired-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
RelocationCommand ::= SEQUENCE {
relocationCommand-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
RelocationPreparationFailure ::= SEQUENCE {
relocationPreparationFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
RelocationRequest ::= SEQUENCE {
relocationRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
RelocationRequestAcknowledge ::= SEQUENCE {
relocationRequestAcknowledge-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
RelocationFailure ::= SEQUENCE {
relocationFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
RelocationCancel ::= SEQUENCE {
relocationCancel-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
RelocationCancelAcknowledge ::= SEQUENCE {
relocationCancelAcknowledge-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
SRNS-ContextRequest ::= SEQUENCE {
sRNS-ContextRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
SRNS-ContextResponse ::= SEQUENCE {
sRNS-ContextResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
SecurityModeCommand ::= SEQUENCE {
securityModeCommand-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
SecurityModeComplete ::= SEQUENCE {
securityModeComplete-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
SecurityModeReject ::= SEQUENCE {
securityModeReject-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
DataVolumeReportRequest ::= SEQUENCE {
dataVolumeReportRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
DataVolumeReport ::= SEQUENCE {
dataVolumeReport-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
Reset ::= SEQUENCE {
reset-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
ResetAcknowledge ::= SEQUENCE {
resetAcknowledge-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
RAB-ReleaseRequest ::= SEQUENCE {
rAB-ReleaseRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
Iu-ReleaseRequest ::= SEQUENCE {
iu-ReleaseRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
RelocationDetect ::= SEQUENCE {
relocationDetect-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
RelocationComplete ::= SEQUENCE {
relocationComplete-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
Paging ::= SEQUENCE {
paging-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
CommonID ::= SEQUENCE {
commonID-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
CN-InvokeTrace ::= SEQUENCE {
cN-InvokeTrace-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
CN-DeactivateTrace ::= SEQUENCE {
cN-DeactivateTrace-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
LocationReportingControl ::= SEQUENCE {
locationReportingControl-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
LocationReport ::= SEQUENCE {
locationReport-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
InitialUE-Message ::= SEQUENCE {
initialUE-Message-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
DirectTransfer ::= SEQUENCE {
directTransfer-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
Overload ::= SEQUENCE {
overload-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
ErrorIndication ::= SEQUENCE {
errorIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
SRNS-DataForwardCommand ::= SEQUENCE {
sRNS-DataForwardCommand-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
ForwardSRNS-Context ::= SEQUENCE {
forwardSRNS-Context-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
RAB-AssignmentRequest ::= SEQUENCE {
rAB-AssignmentRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
RAB-AssignmentResponse ::= SEQUENCE {
rAB-AssignmentResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
PrivateMessage ::= SEQUENCE {
privateMessage-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
ResetResource ::= SEQUENCE {
resetResource-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
ResetResourceAcknowledge ::= SEQUENCE {
resetResourceAcknowledge-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
RANAP-RelocationInformation ::= SEQUENCE {
rANAP-RelocationInformation-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
RAB-ModifyRequest ::= SEQUENCE {
rAB-ModifyRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
LocationRelatedDataRequest ::= SEQUENCE {
locationRelatedDataRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
LocationRelatedDataResponse ::= SEQUENCE {
locationRelatedDataResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
LocationRelatedDataFailure ::= SEQUENCE {
locationRelatedDataFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
InformationTransferIndication ::= SEQUENCE {
informationTransferIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
InformationTransferConfirmation ::= SEQUENCE {
informationTransferConfirmation-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
InformationTransferFailure ::= SEQUENCE {
informationTransferFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
UESpecificInformationIndication ::= SEQUENCE {
uESpecificInformationIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
DirectInformationTransfer ::= SEQUENCE {
directInformationTransfer-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
UplinkInformationExchangeRequest ::= SEQUENCE {
uplinkInformationExchangeRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
UplinkInformationExchangeResponse ::= SEQUENCE {
uplinkInformationExchangeResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
UplinkInformationExchangeFailure ::= SEQUENCE {
uplinkInformationExchangeFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
MBMSSessionStart ::= SEQUENCE {
mBMSSessionStart-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
MBMSSessionStartResponse ::= SEQUENCE {
mBMSSessionStartResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
MBMSSessionStartFailure ::= SEQUENCE {
mBMSSessionStartFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
MBMSSessionUpdate ::= SEQUENCE {
mBMSSessionUpdate-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
MBMSSessionUpdateResponse ::= SEQUENCE {
mBMSSessionUpdateResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
MBMSSessionUpdateFailure ::= SEQUENCE {
mBMSSessionUpdateFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
MBMSSessionStop ::= SEQUENCE {
mBMSSessionStop-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
MBMSSessionStopResponse ::= SEQUENCE {
mBMSSessionStopResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
MBMSUELinkingRequest ::= SEQUENCE {
mBMSUELinkingRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
MBMSUELinkingResponse ::= SEQUENCE {
mBMSUELinkingResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
MBMSRegistrationRequest ::= SEQUENCE {
mBMSRegistrationRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
MBMSRegistrationResponse ::= SEQUENCE {
mBMSRegistrationResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
MBMSRegistrationFailure ::= SEQUENCE {
mBMSRegistrationFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
MBMSCNDe-RegistrationRequest ::= SEQUENCE {
mBMSCNDe-RegistrationRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
MBMSCNDe-RegistrationResponse ::= SEQUENCE {
mBMSCNDe-RegistrationResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
MBMSRABEstablishmentIndication ::= SEQUENCE {
mBMSRABEstablishmentIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
MBMSRABReleaseRequest ::= SEQUENCE {
mBMSRABReleaseRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
MBMSRABRelease ::= SEQUENCE {
mBMSRABRelease-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
MBMSRABReleaseFailure ::= SEQUENCE {
mBMSRABReleaseFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
EnhancedRelocationCompleteRequest ::= SEQUENCE {
enhancedRelocationCompleteRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
EnhancedRelocationCompleteResponse ::= SEQUENCE {
enhancedRelocationCompleteResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
EnhancedRelocationCompleteFailure ::= SEQUENCE {
enhancedRelocationCompleteFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
EnhancedRelocationCompleteConfirm ::= SEQUENCE {
enhancedRelocationCompleteConfirm-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
RANAP-EnhancedRelocationInformationRequest ::= SEQUENCE {
rANAP-EnhancedRelocationInformationRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
RANAP-EnhancedRelocationInformationResponse ::= SEQUENCE {
rANAP-EnhancedRelocationInformationResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
SRVCC-CSKeysRequest ::= SEQUENCE {
sRVCC-CSKeysRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
SRVCC-CSKeysResponse ::= SEQUENCE {
sRVCC-CSKeysResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
UeRadioCapabilityMatchRequest ::= SEQUENCE {
ueRadioCapabilityMatchRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
UeRadioCapabilityMatchResponse ::= SEQUENCE {
ueRadioCapabilityMatchResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
IE ::= SEQUENCE { IE ::= SEQUENCE {
id ProtocolIE-ID, id ProtocolIE-ID,
criticality Criticality, criticality Criticality,

View File

@ -7,6 +7,7 @@ DEFINITIONS AUTOMATIC TAGS ::=
BEGIN BEGIN
IMPORTS IMPORTS
maxProtocolIEs,
Criticality, Criticality,
ProcedureCode, ProcedureCode,
ProtocolIE-ID ProtocolIE-ID
@ -38,6 +39,38 @@ UnsuccessfulOutcome ::= SEQUENCE {
value ANY value ANY
} }
Connect ::= SEQUENCE {
connect-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
DirectTransfer ::= SEQUENCE {
directTransfer-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
Disconnect ::= SEQUENCE {
disconnect-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
ConnectionlessTransfer ::= SEQUENCE {
connectionlessTransfer-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
ErrorIndication ::= SEQUENCE {
errorIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
PrivateMessage ::= SEQUENCE {
privateMessage-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
IE ::= SEQUENCE { IE ::= SEQUENCE {
id ProtocolIE-ID, id ProtocolIE-ID,
criticality Criticality, criticality Criticality,