diff --git a/.ecrc b/.ecrc new file mode 100644 index 0000000000000000000000000000000000000000..830099c09299fc5fb9e921bcda9cf7472be47b7a --- /dev/null +++ b/.ecrc @@ -0,0 +1,10 @@ +{ + "Exclude" : [ + ".git", + "\\.py", + "33108", + "33128/r17", + "33128/r16", + "33128/r15" + ] +} diff --git a/.editorconfig b/.editorconfig index a3b7406700f4c49c8f9829c7e3ced5cecbf954da..e5f4dc9f1fec46907d62daa8f0fca275dd43ad44 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,7 +1,12 @@ [**] insert_final_newline = true -[**.{asn1,asn,xsd,xml}] +[**.{asn1,asn,json}] indent_style = space indent_size = 4 -trim_trailing_whitespace = true \ No newline at end of file +trim_trailing_whitespace = true + +[**.{xsd, xml}] +indent_style = space +indent_size = 2 +trim_trailing_whitespace = true diff --git a/.gitignore b/.gitignore index 58d77c67cce7380ed734c531d7302ce8827eceef..d1aed6cc9541a8c2ee34efdc7dff947a33e6c73f 100644 --- a/.gitignore +++ b/.gitignore @@ -125,4 +125,4 @@ venv.bak/ # mypy .mypy_cache/ .dmypy.json -dmypy.json \ No newline at end of file +dmypy.json diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index acf61b68c2abaec1a6f46f2a2adaecced78663de..56c28f471b4f894c07ec32bf4ccc186afb0784ef 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -27,11 +27,20 @@ process_asn: - python3 testing/asn_process.py process_xsd: - image: "forge.3gpp.org:5050/sa3/li/xsdtest:latest" + image: "forge.3gpp.org:5050/sa3/li/xsdtest_test:latest" stage: check interruptible: true script: - python3 testing/xsd_process.py + - python3 testing/lint_xml.py + +editorconfig_check: + image: "forge.3gpp.org:5050/sa3/li/ec_test:latest" + stage: check + interruptible: true + script: + - ec + generate_artefacts: image: "forge.3gpp.org:5050/sa3/li/forgelib" diff --git a/33128/r18/TS33128Dictionaries.xml b/33128/r18/TS33128Dictionaries.xml index a1c77b9f0ff35342b118c872215e2f907ee92f99..948c9e5d22ef6727ad3d268f64d1b1218c25712a 100644 --- a/33128/r18/TS33128Dictionaries.xml +++ b/33128/r18/TS33128Dictionaries.xml @@ -1,96 +1,95 @@ - + - - 3GPP - ServiceType - - - Voice - Service scoping shall include the Voice service type as defined in clause 4.4.2 - - - Data - Service scoping shall include the Data service type as defined in clause 4.4.2 - - - Messaging - Service scoping shall include the Messaging service type as defined in clause 4.4.2 - - - PTC - Service scoping shall include the Push-to-Talk service type as defined in clause 4.4.2 - - - LALS - Service scoping shall include the LALS service type as defined in clause 4.4.2 - - - RCS - Service scoping shall include the RCS service type as defined in clause 4.4.2 - + + 3GPP + ServiceType + + + Voice + Service scoping shall include the Voice service type as defined in clause 4.4.2 + + + Data + Service scoping shall include the Data service type as defined in clause 4.4.2 + + + Messaging + Service scoping shall include the Messaging service type as defined in clause 4.4.2 + + + PTC + Service scoping shall include the Push-to-Talk service type as defined in clause 4.4.2 + + + LALS + Service scoping shall include the LALS service type as defined in clause 4.4.2 + + + RCS + Service scoping shall include the RCS service type as defined in clause 4.4.2 + - - 3GPP - LATaskFlag - - - HILADelivery - The location information shall be delivered via the LI_HILA interface. - - - HI2Delivery - The location information shall be delivered via the LI_HI2 interface. - + + 3GPP + LATaskFlag + + + HILADelivery + The location information shall be delivered via the LI_HILA interface. + + + HI2Delivery + The location information shall be delivered via the LI_HI2 interface. + - - 3GPP - RequestType - - - IdentityAssociation - A request for a single IdentityResponseDetails response to the query provided. - - - OngoingIdentityAssociation - A request for location information of the target, consisting at least of the TAI and the NCGI. - + + 3GPP + RequestType + + + IdentityAssociation + A request for a single IdentityResponseDetails response to the query provided. + + + OngoingIdentityAssociation + A request for location information of the target, consisting at least of the TAI and the NCGI. + - LocationAcquisition - A request for an ongoing series of IdentityResponseDetails responses matching the query provided. - + LocationAcquisition + A request for an ongoing series of IdentityResponseDetails responses matching the query provided. + - - 3GPP - LIHIQRFlags - - - IncludeNCGIInResponse - A request for returning the NCGI in the response. - + + 3GPP + LIHIQRFlags + + + IncludeNCGIInResponse + A request for returning the NCGI in the response. + - - 3GPP - LIHILAFlags - - - ReqCurrentLoc - Indicates whether the current location of the UE is requested. - + + 3GPP + LIHILAFlags + + + ReqCurrentLoc + Indicates whether the current location of the UE is requested. + - - 3GPP - ManifestSpecification - - - LIHIQRResponse - The delivery contains IdentityResponseDetails (see Annex E). - + + 3GPP + ManifestSpecification + + + LIHIQRResponse + The delivery contains IdentityResponseDetails (see Annex E). + - - + diff --git a/33128/r18/TS33128IdentityAssociation.asn b/33128/r18/TS33128IdentityAssociation.asn index 707aaa27da1deeba4edd67c8676e7299731b03fc..b337180f2cf9dff90562dcae3991ccbb0e9c0aba 100644 --- a/33128/r18/TS33128IdentityAssociation.asn +++ b/33128/r18/TS33128IdentityAssociation.asn @@ -1,12 +1,12 @@ TS33128IdentityAssociation -{itu-t(0) identified-organization(4) etsi(0) securityDomain(2) lawfulIntercept(2) threeGPP(4) tS33128IdentityAssociation(20) r17(17) version0(0)} +{itu-t(0) identified-organization(4) etsi(0) securityDomain(2) lawfulIntercept(2) threeGPP(4) tS33128IdentityAssociation(20) r17(17) version1(1)} DEFINITIONS IMPLICIT TAGS EXTENSIBILITY IMPLIED ::= BEGIN -tS33128IdentityAssociationOID RELATIVE-OID ::= {threeGPP(4) tS33128IdentityAssociation(20) r17(17) version0(0)} +tS33128IdentityAssociationOID RELATIVE-OID ::= {threeGPP(4) tS33128IdentityAssociation(20) r17(17) version1(1)} iEFRecordOID RELATIVE-OID ::= {tS33128IdentityAssociationOID iEF(1)} @@ -35,7 +35,8 @@ IEFAssociationRecord ::= SEQUENCE sUCI [7] SUCI OPTIONAL, pEI [8] PEI OPTIONAL, fiveGSTAIList [9] FiveGSTAIList OPTIONAL, - gPSI [10] GPSI OPTIONAL + gPSI [10] GPSI OPTIONAL, + additionalCGIs [11] AdditionalCGIs OPTIONAL } IEFDeassociationRecord ::= SEQUENCE @@ -44,7 +45,8 @@ IEFDeassociationRecord ::= SEQUENCE fiveGGUTI [2] FiveGGUTI, timestamp [3] GeneralizedTime, nCGI [4] NCGI, - nCGITime [5] GeneralizedTime + nCGITime [5] GeneralizedTime, + additionalCGIs [6] AdditionalCGIs OPTIONAL } IEFKeepaliveMessage ::= SEQUENCE @@ -54,6 +56,16 @@ IEFKeepaliveMessage ::= SEQUENCE FiveGGUTI ::= OCTET STRING (SIZE(10)) +AdditionalCGIs ::= SEQUENCE +{ + additionalNCGIList [1] SEQUENCE (SIZE (1..MAX)) OF AdditionalNCGI OPTIONAL +} + +AdditionalNCGI ::= SEQUENCE +{ + nCGI [1] NCGI +} + NCGI ::= SEQUENCE { pLMNID [1] PLMNID, @@ -104,4 +116,4 @@ GPSI ::= CHOICE MSISDN ::= NumericString (SIZE(1..15)) -END \ No newline at end of file +END diff --git a/33128/r18/TS33128Payloads.asn b/33128/r18/TS33128Payloads.asn index 5684a1a0465e209a449cc09b5811728c5610ced1..3c66b8de17eda334c41d996c8d2229a001d4d82c 100644 --- a/33128/r18/TS33128Payloads.asn +++ b/33128/r18/TS33128Payloads.asn @@ -1,5 +1,5 @@ TS33128Payloads -{itu-t(0) identified-organization(4) etsi(0) securityDomain(2) lawfulIntercept(2) threeGPP(4) ts33128(19) r18(18) version6(6)} +{itu-t(0) identified-organization(4) etsi(0) securityDomain(2) lawfulIntercept(2) threeGPP(4) ts33128(19) r18(18) version7(7)} DEFINITIONS IMPLICIT TAGS EXTENSIBILITY IMPLIED ::= @@ -9,7 +9,7 @@ BEGIN -- Relative OIDs -- ============= -tS33128PayloadsOID RELATIVE-OID ::= {threeGPP(4) ts33128(19) r18(18) version6(6)} +tS33128PayloadsOID RELATIVE-OID ::= {threeGPP(4) ts33128(19) r18(18) version7(7)} xIRIPayloadOID RELATIVE-OID ::= {tS33128PayloadsOID xIRI(1)} xCCPayloadOID RELATIVE-OID ::= {tS33128PayloadsOID xCC(2)} @@ -251,7 +251,22 @@ XIRIEvent ::= CHOICE ePSRANHandoverCommand [148] EPSRANHandoverCommand, ePSRANHandoverRequest [149] EPSRANHandoverRequest, mMERANTraceReport [150] MMERANTraceReport, - mMEUEServiceAccept [151] MMEUEServiceAccept + mMEUEServiceAccept [151] MMEUEServiceAccept, + + --NWDAF events, see clause 7.16.2 + nWDAFEventsSubscription [152] NWDAFEventsSubscription, + nWDAFEventsNotification [153] NWDAFEventsNotification, + nWDAFAnalyticsInfoQuery [154] NWDAFAnalyticsInfoQuery, + nWDAFRoamingAnalyticsSubscription [155] NWDAFRoamingAnalyticsSubscription, + nWDAFRoamingAnalyticsNotification [156] NWDAFRoamingAnalyticsNotification, + + -- RCS events, see clause 7.13.3, continued from tag 145 + startOfInterceptForRegisteredRCSUser [157] StartOfInterceptForRegisteredRCSUser, + startOfInterceptWithEstablisedRCSSession [158] StartOfInterceptWithEstablisedRCSSession, + + -- UDM events, see clause 7.2.2.3, continued from tag 124 + uDMProSeTargetIdentifierDeconcealment [159] UDMProSeTargetIdentifierDeconcealment, + uDMProSeTargetAuthentication [160] UDMProSeTargetAuthentication } -- ============== @@ -495,7 +510,22 @@ IRIEvent ::= CHOICE ePSRANHandoverCommand [148] EPSRANHandoverCommand, ePSRANHandoverRequest [149] EPSRANHandoverRequest, mMERANTraceReport [150] MMERANTraceReport, - mMEUEServiceAccept [151] MMEUEServiceAccept + mMEUEServiceAccept [151] MMEUEServiceAccept, + + --NWDAF events, see clause 7.16.3 + nWDAFEventsSubscription [152] NWDAFEventsSubscription, + nWDAFEventsNotification [153] NWDAFEventsNotification, + nWDAFAnalyticsInfoQuery [154] NWDAFAnalyticsInfoQuery, + nWDAFRoamingAnalyticsSubscription [155] NWDAFRoamingAnalyticsSubscription, + nWDAFRoamingAnalyticsNotification [156] NWDAFRoamingAnalyticsNotification, + + -- RCS events, see clause 7.13.3, continued from tag 145 + startOfInterceptForRegisteredRCSUser [157] StartOfInterceptForRegisteredRCSUser, + startOfInterceptWithEstablisedRCSSession [158] StartOfInterceptWithEstablisedRCSSession, + + -- UDM events, see clause 7.2.2.3, continued from tag 124 + uDMProSeTargetIdentifierDeconcealment [159] UDMProSeTargetIdentifierDeconcealment, + uDMProSeTargetAuthentication [160] UDMProSeTargetAuthentication } IRITargetIdentifier ::= SEQUENCE @@ -527,7 +557,8 @@ CCPDU ::= CHOICE nIDDCCPDU [4] NIDDCCPDU, pTCCCPDU [5] PTCCCPDU, - iMSCCPDU [6] IMSCCPDU + iMSCCPDU [6] IMSCCPDU, + rCSCCPDU [7] RCSCCPDU } -- =========================== @@ -1187,14 +1218,14 @@ UAProtocolID ::= OCTET STRING (SIZE(5)) AKMAAFID ::= SEQUENCE { - aFFQDN [1] FQDN, - uaProtocolID [2] UAProtocolID + aFFQDN [1] FQDN, + uaProtocolID [2] UAProtocolID } UAStarParams ::= CHOICE { - tls12 [1] TLS12UAStarParams, - generic [2] GenericUAStarParams + tls12 [1] TLS12UAStarParams, + generic [2] GenericUAStarParams } GenericUAStarParams ::= SEQUENCE @@ -1216,38 +1247,38 @@ TLSCipherType ::= ENUMERATED TLSCompressionAlgorithm ::= ENUMERATED { - null(1), - deflate(2) + null(1), + deflate(2) } TLSPRFAlgorithm ::= ENUMERATED { - rfc5246(1) + rfc5246(1) } TLSCipherSuite ::= SEQUENCE (SIZE(2)) OF INTEGER (0..255) TLS12UAStarParams ::= SEQUENCE { - preMasterSecret [1] OCTET STRING (SIZE(48)) OPTIONAL, - masterSecret [2] OCTET STRING (SIZE(48)), - pRFAlgorithm [3] TLSPRFAlgorithm, - cipherSuite [4] TLSCipherSuite, - cipherType [5] TLSCipherType, - encKeyLength [6] INTEGER (0..255), - blockLength [7] INTEGER (0..255), - fixedIVLength [8] INTEGER (0..255), - recordIVLength [9] INTEGER (0..255), - macLength [10] INTEGER (0..255), - macKeyLength [11] INTEGER (0..255), - compressionAlgorithm [12] TLSCompressionAlgorithm, - clientRandom [13] OCTET STRING (SIZE(32)), - serverRandom [14] OCTET STRING (SIZE(32)), - clientSequenceNumber [15] INTEGER, - serverSequenceNumber [16] INTEGER, - sessionID [17] OCTET STRING (SIZE(0..32)), - tLSServerExtensions [18] OCTET STRING (SIZE(0..65535)), - tLSClientExtensions [19] OCTET STRING (SIZE(0..65535)) OPTIONAL + preMasterSecret [1] OCTET STRING (SIZE(48)) OPTIONAL, + masterSecret [2] OCTET STRING (SIZE(48)), + pRFAlgorithm [3] TLSPRFAlgorithm, + cipherSuite [4] TLSCipherSuite, + cipherType [5] TLSCipherType, + encKeyLength [6] INTEGER (0..255), + blockLength [7] INTEGER (0..255), + fixedIVLength [8] INTEGER (0..255), + recordIVLength [9] INTEGER (0..255), + macLength [10] INTEGER (0..255), + macKeyLength [11] INTEGER (0..255), + compressionAlgorithm [12] TLSCompressionAlgorithm, + clientRandom [13] OCTET STRING (SIZE(32)), + serverRandom [14] OCTET STRING (SIZE(32)), + clientSequenceNumber [15] INTEGER, + serverSequenceNumber [16] INTEGER, + sessionID [17] OCTET STRING (SIZE(0..32)), + tLSServerExtensions [18] OCTET STRING (SIZE(0..65535)), + tLSClientExtensions [19] OCTET STRING (SIZE(0..65535)) OPTIONAL } KAF ::= OCTET STRING @@ -2367,9 +2398,9 @@ FlowDescription ::= SEQUENCE IPAddressOrRangeOrAny ::= CHOICE { - iPAddress [1] IPAddress, - ipAddressRange [2] IPMask, - anyIPAddress [3] AnyIPAddress + iPAddress [1] IPAddress, + ipAddressRange [2] IPMask, + anyIPAddress [3] AnyIPAddress } IPMask ::= SEQUENCE @@ -2385,8 +2416,8 @@ AnyIPAddress ::= ENUMERATED NextLayerProtocolOrAny ::= CHOICE { - nextLayerProtocol [1] NextLayerProtocol, - anyNextLayerProtocol [2] AnyNextLayerProtocol + nextLayerProtocol [1] NextLayerProtocol, + anyNextLayerProtocol [2] AnyNextLayerProtocol } AnyNextLayerProtocol ::= ENUMERATED @@ -2916,6 +2947,20 @@ UDMStartOfInterceptionWithRegisteredTarget ::= SEQUENCE uDMSubscriptionDataSets [3] SBIType } +UDMProSeTargetIdentifierDeconcealment ::= SEQUENCE +{ + sUPI [1] SUPI, + sUCI [2] SUCI +} + +UDMProSeTargetAuthentication ::= SEQUENCE +{ + servingNetworkName [1] UTF8String, + relayServiceCode [2] INTEGER, + authenticationType [3] PrimaryAuthenticationType, + sUPI [4] SUPI +} + ServerAddressingInfoList ::= SEQUENCE (SIZE(1..MAX)) OF ServerAddressingInfo ServerAddressingInfo ::= SEQUENCE @@ -4096,21 +4141,20 @@ PTCTBReasonCode ::= ENUMERATED PTCListManagementType ::= ENUMERATED { - contactListManagementAttempt(1), - groupListManagementAttempt(2), - contactListManagementResult(3), - groupListManagementResult(4), - requestUnsuccessful(5) + contactListManagementAttempt(1), + groupListManagementAttempt(2), + contactListManagementResult(3), + groupListManagementResult(4), + requestUnsuccessful(5) } - PTCListManagementAction ::= ENUMERATED { - create(1), - modify(2), - retrieve(3), - delete(4), - notify(5) + create(1), + modify(2), + retrieve(3), + delete(4), + notify(5) } PTCAccessPolicyType ::= ENUMERATED @@ -4441,13 +4485,53 @@ RCSCapabilityDiscovery ::= SEQUENCE location [5] Location OPTIONAL } +-- See clause 7.13.3.6.1.2 for details of this structure +StartOfInterceptForRegisteredRCSUser ::= SEQUENCE +{ + rCSTargetIdentities [1] SEQUENCE SIZE (1..MAX) OF RCSIdentity, + rCSRegistrationInformation [2] SEQUENCE SIZE (1..MAX) OF RCSRegistrationInformation, + userOnline [3] BOOLEAN, + location [4] Location OPTIONAL, + additionalInstanceLocation [5] SEQUENCE SIZE (1..MAX) OF AdditionalInstanceLocation OPTIONAL +} + +-- See clause 7.13.3.6.1.3 for details of this structure +StartOfInterceptWithEstablisedRCSSession ::= SEQUENCE +{ + rCSTargetIdentities [1] SEQUENCE SIZE (1..MAX) OF RCSIdentity, + participants [2] SEQUENCE SIZE (1..MAX) OF RCSDestinations, + conversationID [3] RCSConversationID, + contributionID [4] RCSContributionID, + rCSSessionType [5] RCSSessionType, + rCSSessionEndpoints [6] RCSSessionEndpoints, + rCSSessionLegs [7] SEQUENCE SIZE (1..MAX) OF RCSSIPSessionExchange OPTIONAL, + rCSSessionInformation [8] SEQUENCE SIZE (1..MAX) OF RCSSessionContext, + location [9] Location OPTIONAL, + additionalInstanceLocation [10] SEQUENCE SIZE (1..MAX) OF AdditionalInstanceLocation OPTIONAL +} + +RCSCCPDU ::= CHOICE +{ + encapsulatedRCSPayload [1] EncapsulatedRCSPayload +} -- ============== -- RCS Parameters -- ============== +AdditionalInstanceLocation ::= SEQUENCE +{ + instance [1] SIPEndpoint, + location [2] Location +} + IMDNMessageID ::= UTF8String +MSRPPath ::= SEQUENCE +{ + path [1] UTF8String +} + RCSConversationID ::= UUID RCSContributionID ::= UUID @@ -4473,6 +4557,14 @@ RCSMessageType ::= ENUMERATED iMDNNotification(4) } +RCSRegistrationInformation ::= CHOICE +{ + sIPRegistration [1] RCSSIPRegistrationExchange, + userProfile [2] XMLType, + multiDevice [3] XMLType, + presenceDocument [4] XMLType +} + RCSRegistrationType ::= ENUMERATED { registration(1), @@ -4486,7 +4578,7 @@ RCSServerURI ::= UTF8String RCSSessionEndpoints ::= ENUMERATED { remoteOnly(1), - locatlOnly(2), + localOnly(2), localAndRemote(3) } @@ -4496,17 +4588,36 @@ RCSSessionLeg ::= ENUMERATED localLeg(2) } +RCSSessionContext ::= CHOICE +{ + cPMSessionInfo [1] MIMEEntity +} + RCSSessionType ::= ENUMERATED { largeMessageStandalone(1), oneTo1Chat(2) } +RCSSIPRegistrationExchange ::= SEQUENCE +{ + rCSRegistrationUpdateRequest [1] IMSPayload, + rCSRegistrationUpdateResponse [2] IMSPayload +} + +RCSSIPSessionExchange ::= SEQUENCE +{ + sessionLeg [1] RCSSessionLeg, + sIPRequest [2] IMSPayload, + sIPResponse [3] IMSPayload +} + RCSSIPSessionMessage ::= SEQUENCE { sessionLeg [1] RCSSessionLeg, sIPMessage [2] IMSPayload, - rCSSessionResult [3] RCSSessionResult + rCSSessionResult [3] RCSSessionResult, + mSRPPathInfo [4] MSRPPath } RCSSessionResult ::= ENUMERATED @@ -4519,6 +4630,8 @@ RCSSessionResult ::= ENUMERATED legRemovalComplete(6) } +SIPEndpoint ::= UTF8String + -- ================= -- EES definitions -- ================= @@ -4939,8 +5052,8 @@ FiveGMSAFUnsuccessfulProcedure ::= SEQUENCE -- See clause 7.15.2.8 for details of this structure FiveGMSAFStartOfInterceptionWithAlreadyConfiguredUE ::= SEQUENCE { - gPSI [1] GPSI, - serviceAccessInformationResource [2] SBIType + gPSI [1] GPSI, + serviceAccessInformationResource [2] SBIType } -- ============== @@ -4994,6 +5107,130 @@ FiveGMSAFErrorCode ::=ENUMERATED unsupportedMediaType415(4) } +-- ================= +-- NWDAF definitions +-- ================= + +NWDAFEventsSubscription ::=SEQUENCE +{ + sUPI [1] SUPI, + nWDAFConsumerNFType [2] NWDAFConsumerNFType, + nWDAFEventsSubscriptionOpType [3] NWDAFEventsSubscriptionOpType, + nWDAFSubscribedEventList [4] SEQUENCE SIZE(1..MAX) OF NWDAFEvent, + nWDAFEventsSubscription [5] SBIType, + nWDAFEventsSubscriptionID [6] UTF8String OPTIONAL, + nWDAFEventsSubscriptionResponseCode [7] NWDAFEventsSubscriptionResponseCode +} + +NWDAFEventsNotification ::=SEQUENCE +{ + sUPI [1] SUPI, + nWDAFNotifiedEventList [2] SEQUENCE SIZE(1..MAX) OF NWDAFEvent, + nWDAFEventsNotification [3] SBIType +} + +NWDAFAnalyticsInfoQuery ::=SEQUENCE +{ + sUPI [1] SUPI, + nWDAFEvent [2] NWDAFEvent, + nWDAFEventReportingRequirement [3] SBIType OPTIONAL, + nWDAFEventFilter [4] SBIType OPTIONAL, + nWDAFAnalyticsData [5] SBIType OPTIONAL, + nWDAFAnalyticsInfoResponseCode [6] NWDAFAnalyticsInfoResponseCode +} + +NWDAFRoamingAnalyticsSubscription ::=SEQUENCE +{ + sUPI [1] SUPI, + pLMNID [2] PLMNID, + nWDAFEventsSubscriptionOpType [3] NWDAFEventsSubscriptionOpType, + nWDAFSubscribedEventList [4] SEQUENCE SIZE(1..MAX) OF NWDAFEvent, + nWDAFEventsSubscription [5] SBIType, + nWDAFEventsSubscriptionID [6] UTF8String OPTIONAL, + nWDAFEventsSubscriptionResponseCode [7] NWDAFEventsSubscriptionResponseCode +} + +NWDAFRoamingAnalyticsNotification ::=SEQUENCE +{ + sUPI [1] SUPI, + nWDAFNotifiedEventList [2] SEQUENCE SIZE(1..MAX) OF NWDAFEvent, + nWDAFEventsNotification [3] SBIType +} + +-- ============== +-- NWDAF parameters +-- ============== + +NWDAFEventsSubscriptionOpType ::= ENUMERATED +{ + pOST(1), + pUT(2), + dELETE(3) +} + +NWDAFEventsSubscriptionResponseCode ::= ENUMERATED +{ + oK200(1), + created201(2), + noContent204(3), + temporaryRedirect307(4), + permanentRedirect308(5), + badRequest400(6), + unauthorized401(7), + forbidden403(8), + notFound404(9), + notAcceptable406(10), + lengthRequired411(11), + payloadTooLarge413(12), + unsupportedMediaType415(13), + tooManyRequests429(14), + internalServerError500(15), + notImplemented501(16), + badGateway502(17), + serviceUnavailable503(18) +} + +NWDAFAnalyticsInfoResponseCode ::= ENUMERATED +{ + oK200(1), + noContent204(2), + badRequest400(3), + unauthorized401(4), + forbidden403(5), + notFound404(6), + notAcceptable406(7), + uRITooLong414(8), + tooManyRequests429(9), + internalServerError500(10), + badGateway502(11), + serviceUnavailable503(12) +} + +NWDAFConsumerNFType ::= ENUMERATED +{ + pCF(1), + nSSF(2), + aMF(3), + sMF(4), + nEF(5), + aF(6), + lMF(7), + oAM(8), + nWDAF(9), + dCCF(10), + cEF(11) +} + +NWDAFEvent ::= ENUMERATED +{ + serviceExperience(1), + uEMobility(2), + uEComm(3), + abnormalBehaviour(4), + dispersion(5), + relativeProximity(6), + pDUSessionTraffic(7) +} -- =================== -- 5G LALS definitions @@ -5729,7 +5966,7 @@ FiveGSSubscriberID ::= CHOICE FiveGSSubscriberIDs ::= SEQUENCE { - fiveGSSubscriberID [1] SEQUENCE SIZE(1..MAX) OF FiveGSSubscriberID + fiveGSSubscriberID [1] SEQUENCE SIZE(1..MAX) OF FiveGSSubscriberID } FiveGSMRequestType ::= ENUMERATED diff --git a/33128/r18/urn_3GPP_ns_li_3GPPIdentityExtensions.xsd b/33128/r18/urn_3GPP_ns_li_3GPPIdentityExtensions.xsd index d79c3e1fb13f88e7a29544ec289b3ebde12d5569..347ad78207f46d42dd098cf7068a0c9132124c19 100644 --- a/33128/r18/urn_3GPP_ns_li_3GPPIdentityExtensions.xsd +++ b/33128/r18/urn_3GPP_ns_li_3GPPIdentityExtensions.xsd @@ -1,19 +1,13 @@ - + - + - + @@ -51,7 +45,7 @@ - + @@ -59,8 +53,9 @@ - - + + + @@ -71,7 +66,7 @@ - + @@ -81,7 +76,7 @@ - + @@ -118,4 +113,15 @@ + + + + + + + + + + + diff --git a/33128/r18/urn_3GPP_ns_li_3GPPLIQueryExtensions.xsd b/33128/r18/urn_3GPP_ns_li_3GPPLIQueryExtensions.xsd index 7cea78b854b910644b13d202a0acb8510be38b7f..e8049e8f110359eb33a5b719843491f31a12456c 100644 --- a/33128/r18/urn_3GPP_ns_li_3GPPLIQueryExtensions.xsd +++ b/33128/r18/urn_3GPP_ns_li_3GPPLIQueryExtensions.xsd @@ -1,189 +1,182 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/33128/r18/urn_3GPP_ns_li_3GPPStateTransfer.xsd b/33128/r18/urn_3GPP_ns_li_3GPPStateTransfer.xsd index 96f3da73e84b4809d90e9a8b2555c8cc2e58788a..09b8e865e88994155dcb8439b3a8d27de3c04d55 100644 --- a/33128/r18/urn_3GPP_ns_li_3GPPStateTransfer.xsd +++ b/33128/r18/urn_3GPP_ns_li_3GPPStateTransfer.xsd @@ -1,50 +1,46 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/33128/r18/urn_3GPP_ns_li_3GPPX1Extensions.xsd b/33128/r18/urn_3GPP_ns_li_3GPPX1Extensions.xsd index a81b59f54e76e0a88df3714eba02e724a227c12c..812c8b6dfc6cabc044a1c4b6a94b4a2497710a75 100644 --- a/33128/r18/urn_3GPP_ns_li_3GPPX1Extensions.xsd +++ b/33128/r18/urn_3GPP_ns_li_3GPPX1Extensions.xsd @@ -1,407 +1,402 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/33128/r18/urn_3GPP_ns_li_3GPPXLAExtensions.xsd b/33128/r18/urn_3GPP_ns_li_3GPPXLAExtensions.xsd index 6e3f041dbd9fb011f2469f36df86707282e83e87..9bdd599147e8d4d150b5a3dc2fd2e995b798e782 100644 --- a/33128/r18/urn_3GPP_ns_li_3GPPXLAExtensions.xsd +++ b/33128/r18/urn_3GPP_ns_li_3GPPXLAExtensions.xsd @@ -1,89 +1,82 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/asn_compile_targets.json b/testing/asn_compile_targets.json index 26ccf77cb9e2c0f2392657a7eed995a26b6b17e4..989c81dee7ffab60a813060ffdc0e931d211d582 100644 --- a/testing/asn_compile_targets.json +++ b/testing/asn_compile_targets.json @@ -6,4 +6,4 @@ ["./33128/r17/TS33128IdentityAssociation.asn"], ["./33128/r18/TS33128Payloads.asn"], ["./33128/r18/TS33128IdentityAssociation.asn"] -] \ No newline at end of file +] diff --git a/testing/asn_ignore.txt b/testing/asn_ignore.txt index 70aa0c5b7faba31cfa3e78e61bd66806e1df3474..8c2bf332ef641b45027d6356443c847c699279ee 100644 --- a/testing/asn_ignore.txt +++ b/testing/asn_ignore.txt @@ -1 +1 @@ -33108 \ No newline at end of file +33108 diff --git a/testing/asn_ignore_lint.txt b/testing/asn_ignore_lint.txt index 03e7f54e7937f1cf45bf259cef700a7624bf6912..800285ead1ec9de8b867a5c4cc2719340bb18fc0 100644 --- a/testing/asn_ignore_lint.txt +++ b/testing/asn_ignore_lint.txt @@ -1 +1 @@ -dependencies \ No newline at end of file +dependencies diff --git a/testing/dependencies/xsd/TS_103_221_01_DestinationSet.xsd b/testing/dependencies/xsd/TS_103_221_01_DestinationSet.xsd index 1bdcb98121179e30fb9899187955b904bf928f48..f35c8a3ba0b27ddd3df102c05e114c8ab01b9e95 100644 --- a/testing/dependencies/xsd/TS_103_221_01_DestinationSet.xsd +++ b/testing/dependencies/xsd/TS_103_221_01_DestinationSet.xsd @@ -1,40 +1,40 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/dependencies/xsd/TS_103_221_01_HashedID.xsd b/testing/dependencies/xsd/TS_103_221_01_HashedID.xsd index f5e735d2dd6a8fde7d80749d714be0e182c2212c..85a303f54087e4af727176d767b8ee05434326ab 100644 --- a/testing/dependencies/xsd/TS_103_221_01_HashedID.xsd +++ b/testing/dependencies/xsd/TS_103_221_01_HashedID.xsd @@ -1,35 +1,35 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/dependencies/xsd/TS_103_280_v020401.xsd b/testing/dependencies/xsd/TS_103_280_v020401.xsd index 3ff4ae13e53186ed51828193f383337448c8e3a1..2c2c2b616343716352105d95e6cdee981675a17c 100644 --- a/testing/dependencies/xsd/TS_103_280_v020401.xsd +++ b/testing/dependencies/xsd/TS_103_280_v020401.xsd @@ -220,7 +220,7 @@ - + diff --git a/testing/dependencies/xsd/ts_103120v011102p0_Common.xsd b/testing/dependencies/xsd/ts_103120v011102p0_Common.xsd index abaf3235af1ecc6e64e1038c7ede7fe7e8e53020..aa073830ef87b531889593acceabfb89d44868bb 100644 --- a/testing/dependencies/xsd/ts_103120v011102p0_Common.xsd +++ b/testing/dependencies/xsd/ts_103120v011102p0_Common.xsd @@ -1,76 +1,71 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/lint_xml.py b/testing/lint_xml.py new file mode 100644 index 0000000000000000000000000000000000000000..30afb0add11ead5f7af3587b4ea62bf724c7e857 --- /dev/null +++ b/testing/lint_xml.py @@ -0,0 +1,56 @@ +from pathlib import Path +from difflib import * +import subprocess + +def lint(file : Path): + completed = subprocess.run(["xmllint", str(file)], capture_output=True, text=True) + + if completed.returncode != 0: + print (f" {str(f)}: FAIL") + print (f" xmlint error code {completed.returncode}") + lines = completed.stderr.splitlines() + for line in lines: + print (f" {line}") + return len(lines) + + linted_xml = completed.stdout + orig_xml = file.read_text() + diff = list(unified_diff(orig_xml.splitlines(), linted_xml.splitlines())) + + if len(diff) == 0: + print (f" {str(f)}: OK") + return 0 + else: + print (f" {str(f)}: {len(diff)} linting errors") + for d in diff: + print("".join(d)) + return len(diff) + + + +if __name__ == "__main__": + root = Path("./") + + print ("Skipping pre-R18 files") + root = root / "33128" / "r18" + files = list(root.rglob("*.xml")) + list(root.rglob("*.xsd")) + + files_with_errors = 0 + errors = 0 + + print ("-------------------------------------------------") + print (f"Linting XML / XSD files...") + + for f in files: + new_errors = lint (f) + errors += new_errors + files_with_errors += 1 if new_errors > 0 else 0 + + print ("-------------------------------------------------") + print (f"Files: {len(files)} ({files_with_errors} with errors) Total errors: {errors}") + print ("-------------------------------------------------") + + if (files_with_errors > 0): + exit(-1) + else: + exit(0) \ No newline at end of file