From 4e963f3110d780df7ca3042d6ab4f1db2f883450 Mon Sep 17 00:00:00 2001 From: "U-ERICSSON\\ETHBLL" Date: Tue, 17 Mar 2026 19:46:35 +0100 Subject: [PATCH 01/45] corrected TrafficControlData --- .../_3gpp-5gc-nrm-predefinedpccruleset.yang | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/yang-models/_3gpp-5gc-nrm-predefinedpccruleset.yang b/yang-models/_3gpp-5gc-nrm-predefinedpccruleset.yang index c54cbddb..fbe2aae7 100755 --- a/yang-models/_3gpp-5gc-nrm-predefinedpccruleset.yang +++ b/yang-models/_3gpp-5gc-nrm-predefinedpccruleset.yang @@ -6,6 +6,7 @@ module _3gpp-5gc-nrm-predefinedpccruleset { import _3gpp-common-managed-element { prefix me3gpp; } import _3gpp-common-top { prefix top3gpp; } + import _3gpp-5g-common-yang-types { prefix types5g3gpp; } import _3gpp-5gc-nrm-smffunction { prefix smf3gpp; } import _3gpp-5gc-nrm-pcffunction { prefix pcf3gpp; } import ietf-yang-types { prefix yang; } @@ -14,10 +15,11 @@ module _3gpp-5gc-nrm-predefinedpccruleset { contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; description "This IOC represents the predefined PCC rules, which are configured to SMF and referenced by PCF. - Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 28.541"; + revision 2026-03-19 { reference CR-xxxx ; } revision 2025-05-01 { reference CR-xxxx ; } revision 2025-04-25 { reference CR-1520 ; } revision 2025-03-25 { reference CR-1489 ; } @@ -237,7 +239,7 @@ module _3gpp-5gc-nrm-predefinedpccruleset { } } - grouping TrafficControlDataInformation { + grouping TrafficControlDataGrp { description "It specifies the traffic control data for a service flow of a PCC rule."; leaf tcId { @@ -301,6 +303,11 @@ module _3gpp-5gc-nrm-predefinedpccruleset { uses RouteToLocation; } } + leaf traffCorreInd { + type boolean; + default false; + description "It indicates the traffic correlation."; + } uses UpPathChgEvent; leaf steerFun { type enumeration { @@ -326,6 +333,13 @@ module _3gpp-5gc-nrm-predefinedpccruleset { } description "It indicates whether the service data flow, corresponding to the service data flow template, is allowed or not allowed."; } + list sNSSAIList { + description "It represents the list of S-NSSAI the managed object is + supporting. The S-NSSAI is defined in 3GPP TS 23.003."; + key idx; + leaf idx { type uint32 ; } + uses types5g3gpp:SNssai; + } } grouping ARP { @@ -598,7 +612,7 @@ module _3gpp-5gc-nrm-predefinedpccruleset { list trafficControlDataInfo { description "The list of traffic control policy data."; key "tcId"; - uses TrafficControlDataInformation; + uses TrafficControlDataGrp; } } uses ConditionData; -- GitLab From e3b0e1478a0aa4f36f444b97009a9ef13cc5a662 Mon Sep 17 00:00:00 2001 From: "U-ERICSSON\\ETHBLL" Date: Wed, 18 Mar 2026 20:03:20 +0100 Subject: [PATCH 02/45] remove geocircle as a list, it is a type only not a real attribute --- yang-models/_3gpp-common-yang-types.yang | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/yang-models/_3gpp-common-yang-types.yang b/yang-models/_3gpp-common-yang-types.yang index 51e946c7..de907382 100755 --- a/yang-models/_3gpp-common-yang-types.yang +++ b/yang-models/_3gpp-common-yang-types.yang @@ -12,11 +12,12 @@ module _3gpp-common-yang-types { description "The model defines a YANG mapping of the top level information classes used for management of 5G networks and network slicing. - Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 28.623"; // common for rel-19, rel-20 + revision 2026-03-19 { reference "CR-xxxx"; } revision 2025-10-07 { reference "CR-0573 CR-0582 CR-583"; } revision 2025-10-01 { reference "CR-0578" ; } revision 2025-08-31 { reference "CR-0551 CR-0556 CR-0562"; } @@ -698,14 +699,6 @@ module _3gpp-common-yang-types { reference "clause 2.10.1 of 3GPP TS 23.003"; } - list geoCircle { - description "a geographical circle identified by reference location and - associated distance radius"; - key idx; - leaf idx { type uint16; } - uses GeoCircleGrp; - } - typedef AmfSetId { type union { type uint16 { -- GitLab From 690b2bcbb400d3c36b5f4c76da1871c33d554ebc Mon Sep 17 00:00:00 2001 From: "U-ERICSSON\\ETHBLL" Date: Fri, 20 Mar 2026 17:32:18 +0100 Subject: [PATCH 03/45] mapping of SP-260250 Rel-19 CR TS 28.541 Addition of AdmInfo to ADMFunction --- yang-models/_3gpp-5gc-nrm-aiot.yang | 37 ++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/yang-models/_3gpp-5gc-nrm-aiot.yang b/yang-models/_3gpp-5gc-nrm-aiot.yang index be123060..9d3dfc19 100644 --- a/yang-models/_3gpp-5gc-nrm-aiot.yang +++ b/yang-models/_3gpp-5gc-nrm-aiot.yang @@ -14,11 +14,12 @@ module _3gpp-5gc-nrm-aiot { contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; description "Defines the YANG mapping AIOT (Ambient power-enabled Internet of Things). - Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 28.541 3GPP TS 23.369"; + revision 2026-03-19 { reference CR-xxxx; } //common r19-20 revision 2025-11-01 { reference CR-1640; } grouping ServedAIOTAreaIDGrp { @@ -169,6 +170,30 @@ module _3gpp-5gc-nrm-aiot { ////////////////////////////////////////////////////////////////////// + grouping AdmInfoGrp { + description "Represents the datatype AdmInfo"; + + leaf-list deviceIdList { + type string; + description "This attribute represents a list of device IDs served by + ADM as defined in TS 29.510 [23]. The format of String is specified + in TS 29.510."; + } + + leaf devIdRegEx { + type string; + description "This attribute represents a regular expression (according to + the ECMA-262 dialect) identifying the set of device IDs served by + the ADM as defined in TS 29.510."; + } + + leaf-list afIdList { + type string; + description "This attribute represents a list of AF IDs served by ADM as + defined in TS 29.510."; + } + } + grouping ADMFunctionGrp { description "Attributes of the IOC ADMFunction"; @@ -200,6 +225,16 @@ module _3gpp-5gc-nrm-aiot { description "This parameter defines profile for managed NF"; reference "3gpp TS 23.501"; } + + list admInfo { + description "This attribute represents ADM-specific information for + management purposes. The information carried by this attribute is + aligned with the ADM-related information defined in TS 29.510."; + max-elements 1; + key idx; + leaf idx { type uint32; } + uses AdmInfoGrp; + } } feature ADMFunctionUnderManagedElement { -- GitLab From b515fea43afa99eea05be2c372510d9cc2b765a5 Mon Sep 17 00:00:00 2001 From: "U-ERICSSON\\ETHBLL" Date: Mon, 23 Mar 2026 18:07:59 +0100 Subject: [PATCH 04/45] =?UTF-8?q?lastSequenceNo=E2=80=9D=20in=20NtfSubscri?= =?UTF-8?q?ptionControl=20is=20marked=20non-notifyable=20in=20YANG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yang-models/_3gpp-common-subscription-control.yang | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/yang-models/_3gpp-common-subscription-control.yang b/yang-models/_3gpp-common-subscription-control.yang index 8fbbbdf9..09760f77 100755 --- a/yang-models/_3gpp-common-subscription-control.yang +++ b/yang-models/_3gpp-common-subscription-control.yang @@ -13,7 +13,7 @@ module _3gpp-common-subscription-control { description "Defines IOCs for subscription, notification list and heartbeat control. - Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 28.623 Generic Network Resource Model (NRM) @@ -21,7 +21,8 @@ module _3gpp-common-subscription-control { Solution Set (SS) definitions 3GPP TS 28.623"; - revision 2025-11-07 { reference "CR-0551 CR-0586"; } //common for r19, r20 + revision 2026-03-19 { reference "CR-xxxx CR-xxxx"; } //common for r19, r20 + revision 2025-11-07 { reference "CR-0551 CR-0586"; } revision 2025-08-13 { reference "CR-0551 CR-0561"; } revision 2025-05-13 { reference "CR-0548"; } revision 2025-03-24 { reference "CR-0516 0518"; } @@ -331,6 +332,7 @@ module _3gpp-common-subscription-control { type uint64; config false; mandatory true; + yext3gpp:notNotifyable; description "The sequence number of the last notification that was sent by a 'NtfSubscriptionControl' instance."; } -- GitLab From ccc672ee2de194fdea6a54a5e8dfbabb912ea202 Mon Sep 17 00:00:00 2001 From: "U-ERICSSON\\ETHBLL" Date: Mon, 23 Mar 2026 18:29:17 +0100 Subject: [PATCH 05/45] updatte types --- yang-models/_3gpp-common-yang-types.yang | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/yang-models/_3gpp-common-yang-types.yang b/yang-models/_3gpp-common-yang-types.yang index de907382..9e8cbf69 100755 --- a/yang-models/_3gpp-common-yang-types.yang +++ b/yang-models/_3gpp-common-yang-types.yang @@ -16,7 +16,6 @@ module _3gpp-common-yang-types { TTA, TTC). All rights reserved."; reference "3GPP TS 28.623"; - // common for rel-19, rel-20 revision 2026-03-19 { reference "CR-xxxx"; } revision 2025-10-07 { reference "CR-0573 CR-0582 CR-583"; } revision 2025-10-01 { reference "CR-0578" ; } @@ -658,11 +657,13 @@ module _3gpp-common-yang-types { description "a geographical circle identified by reference location and associated distance radius"; - leaf referenceLocation { - description "Reference location of the serving cell provided via NTN - (quasi)-Earth fixed cell. This field is only present in an NTN cell. - It is defined as ReferenceLocation-r17 in TS 38.331"; - type string; + list referenceLocation { + description "Specifies a fixed geographic coordinate point, + see TS 38.331."; + min-elements 1; + max-elements 1; + key "latitude longitude altitude"; + uses GeoCoordinateGrp; } leaf distanceRadius { @@ -670,6 +671,7 @@ module _3gpp-common-yang-types { coordinates reference point, defined by referenceLocation. Each value represents 50m distance. This field is only present in an NTN cell."; type uint16; + mandatory true; units "50 meters"; } } -- GitLab From 5841c7e46aa505c5d4712c0c0d6ba9c1ddccf2a9 Mon Sep 17 00:00:00 2001 From: "U-ERICSSON\\ETHBLL" Date: Tue, 24 Mar 2026 22:13:34 +0100 Subject: [PATCH 06/45] Update tracejob description and ImmediateMdtConfig --- yang-models/_3gpp-common-trace.yang | 137 ++++++++++++++++++++++++---- 1 file changed, 119 insertions(+), 18 deletions(-) diff --git a/yang-models/_3gpp-common-trace.yang b/yang-models/_3gpp-common-trace.yang index 749340b4..3302f7ef 100755 --- a/yang-models/_3gpp-common-trace.yang +++ b/yang-models/_3gpp-common-trace.yang @@ -25,6 +25,7 @@ module _3gpp-common-trace { Integration Reference Point (IRP); Information Service (IS)" ; + revision 2026-03-20 { reference "CR-xxxx" ; } revision 2026-02-07 { reference "CR-1682" ; } revision 2025-10-07 { reference "CR-0573" ; } revision 2025-10-01 { reference "CR-0578" ; } @@ -745,6 +746,75 @@ module _3gpp-common-trace { } } + grouping EventTriggerConfigGrp { + description "Represent the EventTriggerConfig data type. Defines the + configuration parameters of trigger event used for M10 measurement in NR. + For details, please refer to TS 32.422 subclause 5.10.45."; + + leaf eventType { + type enumeration { + enum eventA1 { value 0; } + enum eventA2 { value 1; } + } + mandatory true; + description "It indicates the event type. Either Event A1 or Event A2 + can be configured. See also clause 5.10.45 of TS 32.422."; + } + + leaf thresholdRAN { + type uint8 { + range 0..127; + } + mandatory true; + description "Threshold parameter for an event. It is used to define the + entering and leaving condition of the event. For further details see + RSRP-Range in TS 38.331. See also clause 5.10.45 of TS 32.422"; + } + + leaf measurementQuantityRAN { + type int32; + mandatory true; + description "It indicates the measurement quantity. For further details + see MeasTriggerQuantity in TS 38.331. See also clause 5.10.45 of + TS 32.422"; + } + + leaf hysteresisRAN { + type uint8 { + range 0..30; + } + mandatory true; + description "Hysteresis parameter for an event. It is used to define the + entering and leaving condition of the event. For further details see + Hysteresis in TS 38.331. See also clause 5.10.45 of TS 32.422"; + } + + leaf timeToTriggerRAN { + type enumeration { + enum 0ms { value 0; } + enum 40ms { value 1; } + enum 64ms { value 2; } + enum 80ms { value 3; } + enum 100ms { value 4; } + enum 128ms { value 5; } + enum 160ms { value 6; } + enum 256ms { value 7; } + enum 320ms { value 8; } + enum 480ms { value 9; } + enum 512ms { value 10; } + enum 640ms { value 11; } + enum 1024ms { value 12; } + enum 1280ms { value 13; } + enum 2560ms { value 14; } + enum 5120ms { value 15; } + } + mandatory true; + description "It defines the time during which specific criteria for the + event needs to be met in order to trigger an action. + For further details see TimeToTrigger in TS 38.331 and clause 5.10.45 of TS 32.422."; + } + } + grouping ImmediateMdtConfigGrp { description "Represents the ImmediateMdtConfig dataType. This <> defines the configuration parameters of @@ -783,6 +853,8 @@ module _3gpp-common-trace { -measurementQuantity (conditional for 1F event reporting), -beamLevelMeasurement (conditional for M1 in NR), -excessPacketDelayThresholds (conditional for M6 UL measurement in NR). + -layerOneRsrpPeriodicity (conditional for M10 measurements in NR), + -eventTriggerConfig (conditional for event reporting for M10 measuremen For immediate MDT, the measurement reporting is dependent on the configured measurements: @@ -839,7 +911,14 @@ module _3gpp-common-trace { - Measurements M8 and M9 in NR or LTE are reported according to configured M1 and/or M6 related UE measurement reporting. - + + - For management based Immediate MDT M10 measurements + layerOneRsrpPeriodicity in NR, the + measurement is optionally triggered with periodically or event based . + The parameter layerOneRsrpPeriodicity determines the interval between + two successive UE measurements. If parameter eventTriggerConfig is + configured, the logging is performed only at the condition indicated + by eventTriggerConfigis met. "; leaf listOfMeasurements { @@ -864,6 +943,7 @@ module _3gpp-common-trace { enum M7; enum M8; enum M9; + enum M10; } description "It specifies the UE measurements that shall be collected in an Immediate MDT job. The attribute is @@ -1395,6 +1475,26 @@ module _3gpp-common-trace { measurements and applicable only for NR."; reference "Clause 5.10.6 of TS 32.422."; } + + leaf layerOneRsrpPeriodicity { + type enumeration { + enum 2 {value 0; } + enum 3 {value 1; } + enum 4 {value 2; } + enum 5 {value 3; } + } + description "It defines the periodicity that the UE shall use for the + M10 measurements."; + } + + list eventTriggerConfig { + description "It specifies the event-triggered configuration used for M10 + measurements."; + max-elements 1; + key idx; + leaf idx { type uint32; } + uses EventTriggerConfigGrp; + } } grouping LoggedMdtConfigGrp { @@ -2067,7 +2167,8 @@ module _3gpp-common-trace { description "A TraceJob instance represents the Trace Control and Configuration parameters of a particular Trace Job (see TS 32.421 and TS 32.422 for details). It can be name-contained by SubNetwork, - ManagedElement, ManagedFunction. + ManagedElement, ManagedFunction. In case of signalling based trace + activation, it shall be name-contained by the UDMFunction, see TS 28.541. To activate Trace Jobs, a MnS consumer has to create TraceJob object instances on the MnS producer. A MnS consumer can activate a Trace Job @@ -2079,16 +2180,15 @@ module _3gpp-common-trace { 4.1.2.1.2 of TS 32.422. When a MnS consumer wishes to deactivate a Trace Job, the MnS consumer - shall delete the corresponding TraceJob instance. + shall delete the corresponding TraceJob instance. For details of + management Trace Job deactivation see clauses 4.1.3.8 to 4.1.3.11 a + nd 4.1.4.10 to 4.1.4.13 of TS 32.422 - For details of management Trace Job activation/deactivation see clause - 4.1.1.1.2 of TS 32.422. - - The attribute traceReference specifies a globally unique ID and + The attribute traceReference specifies a globally unique ID and identifies a Trace session. One Trace Session may be activated to - multiple Network Elements. The traceReference is populated by the - consumer that makes the request for a Trace Session. - + multiple Network Elements. The traceReference is populated by the + consumer that makes the request for a Trace Session, TS 32.422. + The jobId attribute presents the job identifier of a TraceJob instance. The jobId can be used to associate multiple TraceJob instances. For example, it is possible to configure the same jobId value for @@ -2103,14 +2203,15 @@ module _3gpp-common-trace { stream-based reporting the attribute traceReportingConsumerUri specifies the streaming target. - The mandatory attribute traceTarget determines the target object of - the TraceJob. Dependent on the network element to which the Trace - Session is activated different types of the target object are possible. - The attribute pLMNTarget defines the PLMN for which sessions shall be - selected in the Trace Session in case of management based activation - when several PLMNs are supported in the RAN.The MDT configuration may - include area scope defined by network slice, in which case - the attribute pLMNTarget is not applicable. + The attribute traceTarget determines the target object of the + TraceJob. Dependent on the network element to which the Trace Session + is activated different types of the target object are possible. + + The attribute pLMNTarget defines the PLMN for which sessions shall be + selected in the Trace Session in case of management based activation + when several PLMNs are supported in the RAN. The MDT configuration + may include area scope defined by network slice, in which case the + attribute pLMNTarget is not applicable. The attribute listOfTraceMetrics allows configuraton of which metrics shall be recorded. -- GitLab From 703a2c10af8d8f04c41993aa9af410936c28a617 Mon Sep 17 00:00:00 2001 From: rosabolzek Date: Thu, 26 Mar 2026 10:09:29 +0100 Subject: [PATCH 07/45] update yang for NFService to aligne with state 2 --- yang-models/_3gpp-5g-common-yang-types.yang | 110 ++++++++++++ .../_3gpp-5gc-nrm-managed-nfprofile.yang | 27 +-- yang-models/_3gpp-5gc-nrm-nfservice.yang | 161 +++++++++++++++++- yang-models/_3gpp-common-yang-types.yang | 27 ++- 4 files changed, 286 insertions(+), 39 deletions(-) diff --git a/yang-models/_3gpp-5g-common-yang-types.yang b/yang-models/_3gpp-5g-common-yang-types.yang index 913f3f4f..a98b723f 100755 --- a/yang-models/_3gpp-5g-common-yang-types.yang +++ b/yang-models/_3gpp-5g-common-yang-types.yang @@ -348,6 +348,34 @@ module _3gpp-5g-common-yang-types { } } + grouping PlmnSnssai { + description "This data type represents the list of S-NSSAIs supported + per PLMN."; + list plmnId { + description "PLMN ID for which list of supported S-NSSAI(s) + is provided."; + min-elements 1; + max-elements 1; + key "mcc mnc"; + uses types3gpp:PLMNId; + } + list sNssaiList { + description "The specific list of S-NSSAIs supported + by the given PLMN."; + min-elements 1; + max-elements 1; + key "sst sd"; + uses SNssai; + } + leaf nid { + description "Network Identity; Shall be present if PlmnIdNid + identifies an SNPN."; + reference "see clauses 5.30.2.3, 5.30.2.9, 6.3.4, + and 6.3.8 in 3GPP TS 23.501"; + type string; + } + } + grouping PLMNInfo { description "The PLMNInfo data type define a S-NSSAI member in a specific PLMNId, and it have two attributes PLMNId and S-NSSAI (PLMNId, S-NSSAI). @@ -597,6 +625,88 @@ module _3gpp-5g-common-yang-types { } } + grouping RuleSetGrp { + description "This data type represents list of rules specifying whether + access/scopes are allowed/denied for NF-Consumers."; + reference "3GPP TS 29.510 clause 6.2.6.2.121"; + + leaf priority { + description "It indicates the unique Priority of the rule. Lower value + means higher priority."; + mandatory true; + type uint32; + } + + list plmns { + description "It indicates PLMNs allowed/dis-allowed to access the + service instance. When absent, NF-Consumers of all PLMNs are + assumed to match this criteria."; + key "mcc mnc"; + uses types3gpp:PLMNId; + } + + list snpns { + description "It indicates SNPNs allowed/dis-allowed to access the + service instance. When absent, NF-Consumers of all SNPNs are + assumed to match this criteria."; + key "mcc mnc"; + uses PlmnIdNid; + } + + leaf-list nfTypes { + description "It indicates type of the NFs allowed/dis-allowed to + access the service instance. When absent, NF-Consumers of all + nfTypes are assumed to match this criteria."; + type types3gpp:NfType; + } + + leaf-list nfDomains { + description "It represents pattern (regular expression according to + the ECMA-262 dialect) representing the NF domain names within the + PLMN of the NRF allowed/dis-allowed to access the service instance. + When absent, NF-Consumers of all nfDomains are assumed to match + this criteria."; + type string; + } + + list nssais { + description "It represents S-NSSAIs of the NF-Consumers + allowed/dis-allowed to access the service instance. When absent, + NF-Consumers of all slices are assumed to match this criteria."; + key idx; + leaf idx { type uint32; } + uses ExtSnssaiGrp; + } + + leaf-list nfInstances { + description "It represents NF-Instance IDs of the NF-Consumers + allowed/dis-allowed to access the NF/NF-Service instance. When + absent, all the NF-Consumers are assumed to match this criteria."; + type string; + } + + leaf-list scopes { + description "It represents list of scopes allowed or denied to the + NF-Consumers matching the rule. The scopes shall be any of those + defined in the API that defines the current service. When absent, + the NF-Consumer is allowed or denied full access to all the + resources/operations of service instance."; + type string; + } + + leaf action { + description "It specifies whether the scopes/access mentioned are + allowed or denied for a specific NF-Consumer. + ALLOW: The NF consumer is allowed to access NF producer. + DENY: The NF consumer is not allowed to access NF Producer."; + mandatory true; + type enumeration { + enum ALLOW; + enum DENY; + } + } + } + grouping LocationInfoGrp { description "This data type contains location information of an NR mobile node (e.g., IAB-node or MWAB)."; diff --git a/yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang b/yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang index a2e10ebc..265c52da 100755 --- a/yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang +++ b/yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang @@ -171,31 +171,6 @@ revision 2025-07-25 { reference CR-1558 ; } type string; } } - grouping PlmnSnssai { - list plmnId { - description "PLMN ID for which list of supported S-NSSAI(s) - is provided."; - min-elements 1; - max-elements 1; - key "mcc mnc"; - uses types3gpp:PLMNId; - } - list sNssaiList { - description "The specific list of S-NSSAIs supported - by the given PLMN."; - min-elements 1; - max-elements 1; - key "sst sd"; - uses types5g3gpp:SNssai; - } - leaf nid { - description "Network Identity; Shall be present if PlmnIdNid - identifies an SNPN "; - reference "see clauses 5.30.2.3, 5.30.2.9, 6.3.4, - and 6.3.8 in 3GPP TS 23.501 "; - type string; - } - } grouping ConditionGroupGrp { description "This <> represents a group of conditions that @@ -371,7 +346,7 @@ grouping ManagedNFProfileGrp { of the NFService(s)."; key idx; leaf idx { type uint32; } - uses PlmnSnssai; + uses types5g3gpp:PlmnSnssai; } list allowedSNPNs { diff --git a/yang-models/_3gpp-5gc-nrm-nfservice.yang b/yang-models/_3gpp-5gc-nrm-nfservice.yang index 1d58ba52..451b237c 100755 --- a/yang-models/_3gpp-5gc-nrm-nfservice.yang +++ b/yang-models/_3gpp-5gc-nrm-nfservice.yang @@ -8,6 +8,7 @@ module _3gpp-5gc-nrm-nfservice { import ietf-yang-types { prefix yang; } import ietf-inet-types { prefix inet; } import _3gpp-5g-common-yang-types { prefix types5g3gpp; } + import _3gpp-common-yang-extensions { prefix yext3gpp; } organization "3gpp SA5"; contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; @@ -134,7 +135,7 @@ module _3gpp-5gc-nrm-nfservice { type string; } - list allowedNSSAI { + list allowedNSSAIs { description "S-NSSAI of the allowed slices to access the service instance. The absence of this attribute indicates that any slice is allowed to access the service instance."; @@ -162,16 +163,28 @@ module _3gpp-5gc-nrm-nfservice { leaf allowedOperationsPerNfInstanceOverrides { type boolean; default false; + //optional support description "When it is present and set to true, indicates that the scopes defined in attribute allowedOperationsPerNfInstance for a given NF Instance ID take precedence over the scopes defined in attribute allowedOperationsPerNfType for the corresponding NF type of the NF Instance associated to such NF Instance ID.."; } + list sNssais { + description "S-NSSAIs of the Network Function. If not + provided, the NF can serve any S-NSSAI. When present + this IE represents the list of S-NSSAIs supported in + all the PLMNs listed in the plmnList IE."; + //optional support + min-elements 1; + key "sst sd"; + uses types5g3gpp:SNssai; + } leaf-list oauth2Required { type boolean; max-elements 1; + //optional support description "It indicates whether the NF Service Instance requires Oauth2-based authorization"; } @@ -179,6 +192,7 @@ module _3gpp-5gc-nrm-nfservice { leaf-list sharedServiceDataId { type string; max-elements 1; + //optional support description "String uniquely identifying SharedServiceData. The format of the sharedServiceDataId shall be a Universally Unique Identifier (UUID) version 4, as described in IETF RFC 4122 [44]. The hexadecimal @@ -213,13 +227,148 @@ module _3gpp-5gc-nrm-nfservice { //optional support type string; } - } - - typedef SupportedFeatures { - type string { - pattern '[A-Fa-f0-9]*'; + leaf-list callbackUriPrefixList { + description "It indicates the optional path segment(s) used to construct + the prefix of the Callback URIs during the reselection of an NF + service consumer."; + //optional support + reference "3GPP TS 29.501 [23], clause 4.4.3."; + type inet:uri; + min-elements 1; + } + leaf supportedFeatures { + description "It is a string, which indicates the features of the service + corresponding to the subscribed default notification, which are supported + by the NF (Service) instance acting as NF service consumer."; + reference "3GPP TS 29.571 table 5.2.2-3"; + //optional + type types3gpp:SupportedFeatures; + config false; + } + list supportedVendorSpecificFeatures { + description "It indicates a map of Vendor-Specific features, where the + key of the map is the IANA-assigned SMI Network Management Private + Enterprise Codes and the value of each entry of the map shall be + a list (array) of VendorSpecificFeature objects as defined + in the clause 5.3.247."; + key "enterpriseCode"; + + leaf enterpriseCode { + type uint32; + description "IANA-assigned SMI Network Management Private Enterprise Code"; + } + + list vendorSpecificFeature { + key "featureName"; + config false; + description "VendorSpecificFeature objects as defined + in the clause 5.3.247."; + uses types5g3gpp:VendorSpecificFeatureGrp; + } + } + leaf load { + description "Latest known load information of the NF, percentage."; + type types3gpp:Load; + config false; + } + leaf loadTimeStamp { + description "Timestamp of the reported load information."; + type yang:date-and-time; + config false; + } + leaf-list nfServiceSetIdList { + description "This attribute represents a list of NF Service Set ID. + At most one NF Service Set ID shall be indicated per PLMN-ID or + SNPN of the NF."; + type string; + min-elements 1; + } + list perPlmnSnssaiList { + description "It includes the S-NSSAIs supported by the Network Function + for each PLMN supported by the Network Function. When present, it + shall override sNssais IE."; + key idx; + leaf idx { type uint32; } + uses types5g3gpp:PlmnSnssai; + } + + list allowedScopesRuleSet { + description "It represents map of rules specifying scopes allowed or + denied for NF-Consumers. This attribute may be present when the + NF-Producer and the NRF support Allowed-ruleset feature as specified + in clause 6.1.9 in TS 29.510."; + //optional support + key idx; + leaf idx { type uint32; } + uses types5g3gpp:RuleSetGrp; + } + + leaf canaryRelease { + description "This attribute indicates whether an NF instance whose + nfStatus is set to REGISTERED is in Canary Release condition, i.e. + it should only be selected by NF Service Consumers under the + conditions indicated by the selectionConditions attribute. + True: the NF is under Canary Release condition, even if the + nfStatus is set to REGISTERED. + False: the NF instance indicates its Canary Release condition + via the nfStatus attribute."; + //optional support + type boolean; + default false; + } + + leaf exclusiveCanaryReleaseSelection { + description "This attribute indicates whether an NF Service Consumer + should only select an NF Service Producer in Canary Release condition. + True: the consumer shall only select producers in Canary Release + condition. + False: the consumer may select producers not in Canary Release + condition."; + //optional support + type boolean; + default false; + } + + leaf shutdownTime { + description "This attribute may be present if the nfStatus is set to + UNDISCOVERABLE due to scheduled shutdown. When present, it shall + indicate the timestamp when the NF Instance is planned to be + shut down."; + //optional support + type yang:date-and-time; + } + + leaf canaryPrecedenceOverPreferred { + description "This attribute indicates whether the NRF shall prioritize + the NF Service Producer in Canary Release condition over the + preferences (preferred-xxx, ext-preferred-xxx) present in NF + discovery requests. + True: NRF shall prioritize NF Service Producers in Canary Release + condition at NF discovery requests. + False: NRF shall prioritize the NF Service Producers according to + preferred-xxx and/or ext-preferred-xxx."; + //optional support + type boolean; + default false; + } + + leaf perPlmnOauth2ReqList { + description "This attribute includes the Oauth2-based authorization + requirement supported by the NF Service Instance per PLMN of the + NF Service Consumer. This attribute may be included when the + Oauth2.0 authorization requirement supported by the NF Service + Instance for different PLMN is different. When the requester + PLMN Id is available in perPlmnOauth2ReqList IE, this IE shall + override the oauth2Required IE. If the requester PLMN ID is not + present in perPlmnOauth2ReqList IE, then the value of + oauth2Required IE shall be applicable if available."; + //optional support + type boolean; + default false; } } + + list supportedVendorSpecificFeatures { description "It indicates a map of Vendor-Specific features, where the key of the map is the IANA-assigned SMI Network Management Private diff --git a/yang-models/_3gpp-common-yang-types.yang b/yang-models/_3gpp-common-yang-types.yang index 9e8cbf69..62600bb9 100755 --- a/yang-models/_3gpp-common-yang-types.yang +++ b/yang-models/_3gpp-common-yang-types.yang @@ -786,6 +786,23 @@ module _3gpp-common-yang-types { } } + typedef SupportedFeatures { + type string { + pattern '[A-Fa-f0-9]*'; + } + description "It is a string, which indicates the features of the service + corresponding to the subscribed default notification, which are supported + by the NF (Service) instance acting as NF service consumer, when it is + present of the attribute whose type is DefaultNotificationSubscription + <>. When it is present as the attribute of an NFService + instance, it indicates the supported features of the NF Service + A string containing a bitmask indicating supported features in hexadecimal + representation. Each character in the string shall take + a value of 0 to 9, a to f or A to F and shall represent the support + of 4 features as described in table 5.2.2-3 of TS 29.571."; + reference "3GPP TS 29.571"; + } + typedef N1MessageClass { type enumeration { enum 5GMM; @@ -857,14 +874,10 @@ module _3gpp-common-yang-types { leaf supportedFeatures { description "It is a string, which indicates the features of the service corresponding to the subscribed default notification, which are supported - by the NF (Service) instance acting as NF service consumer. The string - shall contain a bitmask indicating supported features in hexadecimal - representation:Each character in the string shall take a value - of 0 to 9, a to f or A to F "; - reference "shall represent the support of 4 features as described in - table 5.2.2-3 of TS 29.571 [61]."; + by the NF (Service) instance acting as NF service consumer."; + reference "3GPP TS 29.571 table 5.2.2-3"; //optional - type string; + type SupportedFeatures; config false; } leaf serviceInfoList { -- GitLab From 25b61bafd85183b2593f8a3b0cc3d4b5262ea84c Mon Sep 17 00:00:00 2001 From: rosabolzek Date: Thu, 26 Mar 2026 10:48:31 +0100 Subject: [PATCH 08/45] align yang ManagedNFProfile to stage 2 --- .../_3gpp-5gc-nrm-managed-nfprofile.yang | 321 ++++++++++-------- yang-models/_3gpp-5gc-nrm-nfservice.yang | 36 +- 2 files changed, 192 insertions(+), 165 deletions(-) diff --git a/yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang b/yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang index 265c52da..6226dd8f 100755 --- a/yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang +++ b/yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang @@ -12,9 +12,9 @@ module _3gpp-5gc-nrm-managed-nfprofile { organization "3gpp SA5"; contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; -description "NF profile class. -Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, -TTA, TTC). All rights reserved."; +description "NF profile dataType. + Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + TTA, TTC). All rights reserved."; reference "3GPP TS 29.510"; revision 2025-07-25 { reference CR-1558 ; } @@ -85,11 +85,12 @@ revision 2025-07-25 { reference CR-1558 ; } shall be evaluated to determine whether a discovered NF (Service) Instance shall be selected."; - leaf consumerNfTypes { + leaf-list consumerNfTypes { description "It represents the NF types of the consumers for - which the conditions included in this ConditionItem apply. - If this attribute is absent, the conditions are applicable - to all NF consumer types."; + which the conditions included in this ConditionItem apply. + If this attribute is absent, the conditions are applicable + to all NF consumer types."; + min-elements 1; type types3gpp:NfType; } leaf serviceFeature { @@ -149,10 +150,11 @@ revision 2025-07-25 { reference CR-1558 ; } leaf idx { type uint32; } uses IdentityRange; } - leaf peiList { + leaf-list peiList { description "It represents a set of PEIs of the UEs for - which the NF(Service) instance under CANARY_RELEASE status - shall be selected"; + which the NF (Service) instance under CANARY_RELEASE status + shall be selected."; + min-elements 1; type string; } list taiRangeList { @@ -164,68 +166,72 @@ revision 2025-07-25 { reference CR-1558 ; } leaf idx { type uint32; } uses types5g3gpp:TaiRangeGrp; } - leaf dnnList { - description " It represents a set of TAIs where the NF - (Service) instance under CANARY_RELEASE status shall be - selected for a certain UE"; - type string; + leaf-list dnnList { + description "It represents a set of DNNs where the NF + (Service) instance under CANARY_RELEASE status shall be + selected."; + min-elements 1; + type string; } } - grouping ConditionGroupGrp { - description "This <> represents a group of conditions that - shall be evaluated to determine whether a discovered NF (Service) - Instanceshall be selected. (See clause 6.1.6.2.125 TS 29.510 [23])."; - - choice LogicalOperator{ - case and { - list and { - description "It represents a list of conditions where the - overall evaluation is true only if all the conditions - in the list are evaluated as true."; - key idx; - leaf idx { type uint32; } - uses SelectionConditionsGrp; - } - - } - case or{ - list or { - description "It represents a list of conditions where the - overall evaluation is true if at least one of the conditions - in the list evaluated as true"; - key idx; - leaf idx { type uint32; } - uses SelectionConditionsGrp; - } - } - } - - } grouping SelectionConditionsGrp { description "This data type represents the list of conditions that - shall be selected by an NF Service Consumer."; - reference "(See clause 6.1.6.2.123 TS 29.510 [23])"; + shall be selected by an NF Service Consumer."; + reference "See clause 6.1.6.2.123 TS 29.510 [23]"; - list conditionItem{ + list conditionItem { key "id"; description "It represent a single condition item that shall be - evaluated Instance shall be selected."; - leaf id{ - type string; + evaluated to determine whether a discovered NF (Service) + Instance shall be selected."; + leaf id { + type string; } uses ConditionItemGrp; } - // circular dependency for grouping "ConditionGroupGrp" introduced in - //stage 2 - // container conditionGroup{ - // description "It represents a group of conditions - // that shall be evaluated"; - // uses ConditionGroupGrp; - // } - + container conditionGroup { + description "It represents a group of conditions + that shall be evaluated."; + // Note: ConditionGroupGrp references SelectionConditionsGrp + // creating a circular dependency. Inlined one level to avoid it. + choice LogicalOperator { + case and { + list and { + description "It represents a list of conditions where the + overall evaluation is true only if all the conditions + in the list are evaluated as true."; + key idx; + leaf idx { type uint32; } + list conditionItem { + key "id"; + description "It represent a single condition item that + shall be evaluated."; + leaf id { type string; } + uses ConditionItemGrp; + } + } + } + case or { + list or { + description "It represents a list of conditions where the + overall evaluation is true if at least one of the + conditions in the list is evaluated as true."; + key idx; + leaf idx { type uint32; } + list conditionItem { + key "id"; + description "It represent a single condition item that + shall be evaluated."; + leaf id { type string; } + uses ConditionItemGrp; + } + } + } + } + } } grouping IdentityRange { @@ -242,6 +248,8 @@ revision 2025-07-25 { reference CR-1558 ; } } grouping ManagedNFProfileGrp { + description "Represents the ManagedNFProfile <> as defined in + clause 5.3.54 of 3GPP TS 28.541."; leaf nfInstanceId { description "String uniquely identifying a NF instance."; @@ -380,12 +388,16 @@ grouping ManagedNFProfileGrp { uses types5g3gpp:SNssai; } - // list allowedRuleSet { - // description "S-NSSAI of the allowed slices to access the NF instance. - // If not provided, any slice is allowed to access the NF."; - // key "sst sd"; - // uses RuleSet;? -// } + list allowedRuleSet { + description "It represents map of rules specifying NF-Consumers + allowed or denied to access the NF-Producer. It may be present + when the NF-Producer and the NRF support Allowed-ruleset feature + as specified in clause 6.1.9."; + reference "3GPP TS 29.510"; + key idx; + leaf idx { type uint32; } + uses types5g3gpp:RuleSetGrp; + } leaf locality { description "Operator defined information about the location of the NF instance (e.g. geographic location, data center)."; @@ -410,33 +422,37 @@ grouping ManagedNFProfileGrp { leaf load { description "Dynamic load information, ranged from 0 to 100, - indicates the current load percentage of the NF."; + indicates the current load percentage of the NF."; type types3gpp:Load; + config false; } leaf loadTimeStamp { description "It indicates the point in time in which the latest load - information (sent by the NF in the load attribute of the NF Profile) - was generated at the NF Instance.If the NF did not provide a timestamp, - the NRF should set it to the instant when the NRF received the message - where the NF provided the latest load information."; - type yang:date-and-time ; + information (sent by the NF in the load attribute of the NF Profile) + was generated at the NF Instance. If the NF did not provide a + timestamp, the NRF should set it to the instant when the NRF received + the message where the NF provided the latest load information."; + type yang:date-and-time; + config false; } - leaf-list recoveryTime { - description "Timestamp when the NF was (re)started. The NRF shall notify - NFs subscribed to receiving notifications of changes of the NF profile, - if the NF recoveryTime is changed"; + leaf recoveryTime { + description "Timestamp when the NF was (re)started. The NRF shall + notify NFs subscribed to receiving notifications of changes of the + NF profile, if the NF recoveryTime is changed."; type yang:date-and-time; + config false; } leaf nfServicePersistence { description "This parameter indicates whether the different service - instances of a same NF Service in the NF instance, supporting a same - API version, are capable to persist their resource state in shared - storage and therefore these resources are available after a new NF - service instance supporting the same API version is selected by a NF - Service Consumer "; + instances of a same NF Service in the NF instance, supporting a same + API version, are capable to persist their resource state in shared + storage and therefore these resources are available after a new NF + service instance supporting the same API version is selected by a NF + Service Consumer."; reference "TS 29.510"; type boolean; + config false; } leaf-list nfSetIdList { type string ; @@ -452,41 +468,41 @@ grouping ManagedNFProfileGrp { in a SNPN.At most one NF Set ID shall be indicated per PLMN-ID or SNPN of the NF."; } - leaf-list nfProfileChangesSupportInd { - description "This parameter indicates if the NF Service Consumer supports - or does not support receiving NF Profile Changes. It may be present in - the NFRegister or NFUpdate (NF Profile Complete Replacement) request and - shall be absent in the response (see Annex B 3GPP TS 29.510 [23]). "; - max-elements 1; + leaf nfProfileChangesSupportInd { + description "This parameter indicates if the NF Service Consumer + supports or does not support receiving NF Profile Changes. It may + be present in the NFRegister or NFUpdate (NF Profile Complete + Replacement) request and shall be absent in the response."; + reference "Annex B 3GPP TS 29.510 [23]"; type boolean; + config false; } - leaf-list nfProfilePartialUpdateChangesSupportInd { + leaf nfProfilePartialUpdateChangesSupportInd { description "It represents NF Profile Partial Update Changes Support - Indicator. TRUE: the NF Service Consumer supports receiving NF Profile - Changes in the response to an NF Profile Partial Update operation. - FALSE (default): the NF Service Consumer does not support receiving - NF Profile Changes in the response to an NF Profile Partial Update - operation"; - max-elements 1; + Indicator. TRUE: the NF Service Consumer supports receiving NF + Profile Changes in the response to an NF Profile Partial Update + operation. FALSE (default): the NF Service Consumer does not + support receiving NF Profile Changes in the response to an NF + Profile Partial Update operation."; type boolean; } - leaf-list nfProfileChangesInd { + leaf nfProfileChangesInd { description "NF Profile Changes Indicator. This IE shall be absent - in the request to the NRF and may be included by the NRF - in NFRegister or NFUpdate (NF Profile Complete Replacement) response. - true: the NF Profile contains NF Profile changes. - false (default): complete NF Profile."; - + in the request to the NRF and may be included by the NRF in + NFRegister or NFUpdate (NF Profile Complete Replacement) response. + true: the NF Profile contains NF Profile changes. + false (default): complete NF Profile."; type boolean; - max-elements 1; + config false; } list defaultNotificationSubscriptions { description "Notification endpoints for different notification types. - This attribute may contain multiple default subscriptions for a same - notification type; in that case, those default subscriptions are used - as alternative notification endpoints."; + This attribute may contain multiple default subscriptions for a same + notification type; in that case, those default subscriptions are used + as alternative notification endpoints."; key notificationType; min-elements 1; + config false; uses types3gpp:DefaultNotificationSubscription; } leaf servingScope { @@ -546,65 +562,69 @@ grouping ManagedNFProfileGrp { for inter-PLMN routing is specified."; type inet:domain-name; } - list nfServices { + list nfServiceList { description "List of NF Service Instances. It shall include - the services produced by the NF that can be - discovered by other NFs."; + the services produced by the NF that can be discovered by + other NFs."; key serviceInstanceID; min-elements 1; uses nfs3gpp:NFServiceGrp; } - list supportedVendorSpecificFeatures { - description "It indicates a map of Vendor-Specific features, where the + list supportedVendorSpecificFeatures { + description "It indicates a map of Vendor-Specific features, where the key of the map is the IANA-assigned SMI Network Management Private Enterprise Codes and the value of each entry of the map shall be a list (array) of VendorSpecificFeature objects as defined in the clause 5.3.247."; - key "enterpriseCode"; - - leaf enterpriseCode { - type uint32; - description "IANA-assigned SMI Network Management Private Enterprise Code"; - } - - list vendorSpecificFeature { - key "featureName"; - config false; - description "VendorSpecificFeature objects as defined - in the clause 5.3.247."; + key "enterpriseCode"; + config false; + + leaf enterpriseCode { + type uint32; + description "IANA-assigned SMI Network Management Private Enterprise Code"; + } + + list vendorSpecificFeature { + key "featureName"; + config false; + description "VendorSpecificFeature objects as defined + in the clause 5.3.247."; uses types5g3gpp:VendorSpecificFeatureGrp; - } - } + } + } list selectionConditions { - description "Identifications of Credentials Holder or Default Credentials - Server. It is an array of FQDN."; + description "This attribute includes the conditions under which an NF + Instance with an NFStatus value set to CANARY_RELEASE, or with a + canaryRelease attribute set to true, shall be selected by an NF + Service Consumer."; leaf idx { type uint32; } key "idx"; + max-elements 1; uses SelectionConditionsGrp; } - leaf-list canaryRelease { - description "This attribute indicates whether an NF instance whose + leaf canaryRelease { + description "This attribute indicates whether an NF instance whose nfStatus is set to REGISTERED is in Canary Release condition, i.e. it should only be selected by NF Service Consumers under the conditions indicated by the selectionConditions attribute. True: the NF is under Canary Release condition, even if the - nfStatus is set to REGISTERED + nfStatus is set to REGISTERED. False: the NF instance indicates its Canary Release condition - via the nfStatus attribute"; - max-elements 1; - type boolean; + via the nfStatus attribute."; + type boolean; + default false; } - leaf-list exclusiveCanaryReleaseSelection { - description "This attribute indicates whether an NF Service - Consumer should only select an NF Service Producer in Canary - Release condition. + leaf exclusiveCanaryReleaseSelection { + description "This attribute indicates whether an NF Service Consumer + should only select an NF Service Producer in Canary Release + condition. True: the consumer shall only select producers in Canary Release - condition + condition. False: the consumer may select producers not in Canary Release - condition"; - max-elements 1; - type boolean; + condition."; + type boolean; + default false; } leaf sharedProfileDataId { description "This attribute indicates a string uniquely identifying @@ -616,16 +636,18 @@ grouping ManagedNFProfileGrp { Example: 4ace9d34-2c69-4f99-92d5-a73a3fe8e23b"; type string; } - leaf-list shutdownTime { + leaf shutdownTime { description "It indicates the timestamp when the NF Instance is - planned to be shut down. This attribute may be present if the - nfStatus is set to UNDISCOVERABLE due to scheduled shutdown"; - type yang:date-and-time ; - max-elements 1; + planned to be shut down. This attribute may be present if the + nfStatus is set to UNDISCOVERABLE due to scheduled shutdown."; + type yang:date-and-time; + config false; } - leaf supportedRcfs { - description "It represents a list of Resource Content Filter IDs"; - type string; + leaf-list supportedRcfs { + description "It represents a list of Resource Content Filter IDs."; + type string; + min-elements 1; + config false; } leaf canaryPrecedenceOverPreferred { description "ManagedNFProfile.canaryPrecedenceOverPreferred This @@ -644,14 +666,15 @@ grouping ManagedNFProfileGrp { in NF Service Producers shall not be prioritized over NF Service Consumer preferences at NF discovery requests)"; type boolean; + default false; } - typedef NFStatus { + } + + typedef NFStatus { type enumeration { enum REGISTERED; enum SUSPENDED; } } - -} } diff --git a/yang-models/_3gpp-5gc-nrm-nfservice.yang b/yang-models/_3gpp-5gc-nrm-nfservice.yang index 451b237c..2d2881ae 100755 --- a/yang-models/_3gpp-5gc-nrm-nfservice.yang +++ b/yang-models/_3gpp-5gc-nrm-nfservice.yang @@ -8,15 +8,16 @@ module _3gpp-5gc-nrm-nfservice { import ietf-yang-types { prefix yang; } import ietf-inet-types { prefix inet; } import _3gpp-5g-common-yang-types { prefix types5g3gpp; } - import _3gpp-common-yang-extensions { prefix yext3gpp; } + organization "3gpp SA5"; contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; - description "NF service class. + description "NF service dataType. Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 29.510"; + revision 2025-03-25 { reference CR-; } revision 2025-01-25 { reference CR-1442; } revision 2023-09-18 { reference CR-1043 ; } revision 2021-01-25 { reference CR-0454 ; } @@ -24,7 +25,7 @@ module _3gpp-5gc-nrm-nfservice { revision 2019-06-17 { reference "initial revision"; } grouping NFServiceGrp { - description "Represents the NFService IOC"; + description "This data type represents the NF Service defined in TS 29.510 [23]."; leaf serviceInstanceID { description "Unique ID of the service instance within a given NF Instance."; @@ -144,6 +145,18 @@ module _3gpp-5gc-nrm-nfservice { key "sd sst"; uses types5g3gpp:SNssai; } + + list allowedScopesRuleSet { + description "It represents map of rules specifying scopes allowed or + denied for NF-Consumers. This attribute may be present when the + NF-Producer and the NRF support Allowed-ruleset feature as specified + in clause 6.1.9 in TS 29.510."; + //optional support + key idx; + leaf idx { type uint32; } + uses types5g3gpp:RuleSetGrp; + } + leaf-list allowedOperationsPerNfType { description "It indicates the allowed operations on resources for each type of NF; the key of the map is the NF Type, and the value @@ -255,7 +268,8 @@ module _3gpp-5gc-nrm-nfservice { leaf enterpriseCode { type uint32; - description "IANA-assigned SMI Network Management Private Enterprise Code"; + description "IANA-assigned SMI Network Management Private + Enterprise Code"; } list vendorSpecificFeature { @@ -292,17 +306,6 @@ module _3gpp-5gc-nrm-nfservice { uses types5g3gpp:PlmnSnssai; } - list allowedScopesRuleSet { - description "It represents map of rules specifying scopes allowed or - denied for NF-Consumers. This attribute may be present when the - NF-Producer and the NRF support Allowed-ruleset feature as specified - in clause 6.1.9 in TS 29.510."; - //optional support - key idx; - leaf idx { type uint32; } - uses types5g3gpp:RuleSetGrp; - } - leaf canaryRelease { description "This attribute indicates whether an NF instance whose nfStatus is set to REGISTERED is in Canary Release condition, i.e. @@ -379,7 +382,8 @@ module _3gpp-5gc-nrm-nfservice { leaf enterpriseCode { type uint32; - description "IANA-assigned SMI Network Management Private Enterprise Code"; + description "IANA-assigned SMI Network Management Private Enterprise + Code"; } list vendorSpecificFeature { -- GitLab From ed40c79318358a8115d1dc138994bc9dbb8bbd01 Mon Sep 17 00:00:00 2001 From: rosabolzek Date: Thu, 26 Mar 2026 13:08:48 +0100 Subject: [PATCH 09/45] correct lint errors in nfservice and -managed-nfprofile --- yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang | 5 ++++- yang-models/_3gpp-5gc-nrm-nfservice.yang | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang b/yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang index 6226dd8f..ebe705ca 100755 --- a/yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang +++ b/yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang @@ -192,9 +192,12 @@ revision 2025-07-25 { reference CR-1558 ; } uses ConditionItemGrp; } - container conditionGroup { + list conditionGroup { description "It represents a group of conditions that shall be evaluated."; + key idx; + leaf idx { type uint32; } + max-elements 1; // Note: ConditionGroupGrp references SelectionConditionsGrp // creating a circular dependency. Inlined one level to avoid it. choice LogicalOperator { diff --git a/yang-models/_3gpp-5gc-nrm-nfservice.yang b/yang-models/_3gpp-5gc-nrm-nfservice.yang index 2d2881ae..aa882258 100755 --- a/yang-models/_3gpp-5gc-nrm-nfservice.yang +++ b/yang-models/_3gpp-5gc-nrm-nfservice.yang @@ -25,7 +25,8 @@ module _3gpp-5gc-nrm-nfservice { revision 2019-06-17 { reference "initial revision"; } grouping NFServiceGrp { - description "This data type represents the NF Service defined in TS 29.510 [23]."; + description "This data type represents the NF Service + defined in TS 29.510 [23]."; leaf serviceInstanceID { description "Unique ID of the service instance within a given NF Instance."; -- GitLab From def924ff8ce3f451f82695a744ae6e75c9e6c028 Mon Sep 17 00:00:00 2001 From: rosabolzek Date: Fri, 27 Mar 2026 08:55:11 +0100 Subject: [PATCH 10/45] correcting definition of callbackUriPrefixList accroding to stage2 --- yang-models/_3gpp-5gc-nrm-nfservice.yang | 26 ++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/yang-models/_3gpp-5gc-nrm-nfservice.yang b/yang-models/_3gpp-5gc-nrm-nfservice.yang index aa882258..bf569eb3 100755 --- a/yang-models/_3gpp-5gc-nrm-nfservice.yang +++ b/yang-models/_3gpp-5gc-nrm-nfservice.yang @@ -241,14 +241,15 @@ module _3gpp-5gc-nrm-nfservice { //optional support type string; } - leaf-list callbackUriPrefixList { + list callbackUriPrefixList { description "It indicates the optional path segment(s) used to construct the prefix of the Callback URIs during the reselection of an NF service consumer."; //optional support reference "3GPP TS 29.501 [23], clause 4.4.3."; - type inet:uri; + key callbackUriPrefix; min-elements 1; + uses CallbackUriPrefixItemGrp; } leaf supportedFeatures { description "It is a string, which indicates the features of the service @@ -396,6 +397,27 @@ module _3gpp-5gc-nrm-nfservice { } } + grouping CallbackUriPrefixItemGrp { + description "This <> represents Callback URI prefix value to + be used for specific notification types."; + reference "3GPP TS 29.510 clause 6.1.6.2.127"; + + leaf callbackUriPrefix { + description "It indicates the optional path segment(s) used to + construct the prefix of the Callback URIs during the reselection + of an NF service consumer."; + mandatory true; + type inet:uri; + reference "3GPP TS 29.501 clause 4.4.3"; + } + + leaf-list notificationTypes { + description "List of notification type values using the callback + URI prefix of the callbackUriPrefix."; + type string; + } + } + grouping ipEndPoint { choice address { leaf ipv4Address { -- GitLab From ac2cf3e14ca855d43542f92f8d7a523a6974190f Mon Sep 17 00:00:00 2001 From: rosabolzek Date: Tue, 31 Mar 2026 14:40:00 +0200 Subject: [PATCH 11/45] aligne stage 2 and yang for nfservice and managed profile attributes and datatype --- yang-models/_3gpp-5g-common-yang-types.yang | 1555 +++++------ yang-models/_3gpp-5gc-nrm-ausffunction.yang | 5 +- .../_3gpp-5gc-nrm-managed-nfprofile.yang | 224 +- yang-models/_3gpp-5gc-nrm-neffunction.yang | 4 +- yang-models/_3gpp-5gc-nrm-nfservice.yang | 1274 +++++---- yang-models/_3gpp-5gc-nrm-nfservice.yang.bak | 774 ++++++ yang-models/_3gpp-5gc-nrm-nrffunction.yang | 15 +- yang-models/_3gpp-5gc-nrm-pcffunction.yang | 5 +- yang-models/_3gpp-5gc-nrm-udmfunction.yang | 18 +- yang-models/_3gpp-5gc-nrm-udrfunction.yang | 18 +- yang-models/_3gpp-common-yang-types.yang | 2336 ++++++++--------- 11 files changed, 3500 insertions(+), 2728 deletions(-) create mode 100755 yang-models/_3gpp-5gc-nrm-nfservice.yang.bak diff --git a/yang-models/_3gpp-5g-common-yang-types.yang b/yang-models/_3gpp-5g-common-yang-types.yang index a98b723f..a24f52c3 100755 --- a/yang-models/_3gpp-5g-common-yang-types.yang +++ b/yang-models/_3gpp-5g-common-yang-types.yang @@ -1,757 +1,800 @@ -module _3gpp-5g-common-yang-types { - yang-version 1.1; - namespace "urn:3gpp:sa5:_3gpp-5g-common-yang-types"; - prefix "types5g3gpp"; - - import ietf-yang-types { prefix yang; } - import ietf-inet-types { prefix inet; } - import _3gpp-common-yang-types { prefix types3gpp; } - - organization "3GPP SA5"; - contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; - description "The model defines common types for 5G networks and - network slicing. - Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, - TTA, TTC). All rights reserved."; - reference "3GPP TS 28.541"; - - revision 2026-01-07 { reference CR- ; } - revision 2025-11-07 { reference CR-1640 ; } - revision 2025-11-01 { reference CR-1657 ; } - revision 2025-07-25 { reference CR-1558 ; } - revision 2025-03-25 { reference CR-1489 ; } - revision 2024-11-01 { reference CR-1405; } - revision 2024-10-06 { reference CR-1389; } - revision 2024-05-24 { reference CR-1273 ; } - revision 2023-09-18 { reference CR-1043 ; } - revision 2023-05-10 { reference CR-0916; } - revision 2021-08-05 { reference S5-214053/CR-0518; } - revision 2020-11-05 { reference CR-0412 ; } - revision 2019-10-20 { reference "Initial version."; } - - grouping AreaScopeGrp { - description "This <> defines an area scope."; - - choice AreaScopeChoice { - - case eutran-only { // choice 1 - leaf-list eutraCellIdList { - type types3gpp:EutraCellId; - min-elements 1; - max-elements 32; - description "List of E-UTRAN cells identified by E-UTRAN-CGI"; - } - } - case tac { // choice 3 - leaf-list tacList { - type types3gpp:Tac; - min-elements 1; - max-elements 8; - description "Tracking Area Code list"; - } - leaf-list cAGIdList { - type types3gpp:CagId; - max-elements 256; - description "It identifies a CAG list containing up to - 256 CAG-identifiers per UE or up to 12 CAG-identifiers - per cell, see TS 38.331 [38]. CAG ID is used to combine - with PLMN ID to identify a PNI-NPN.AG ID is a hexadecimal - range with size 32 bit."; - } - } - - case ntnGeoAreaList{ // choice 6 - list ntnGeoAreaList { - must 'not(../nrCellIdList)'; - description "geographical areas for NTN MDT"; - key idx; - max-elements 8; - leaf idx { type string; } - uses types3gpp:GeoAreaGrp; - } - } - - case else { - list nPNIdentityList { // choice 2, 4 , 5 - description "list of NPN IDs of in NR. It is either - a list of PNI-NPNs identified by CAG ID with - associated plmn-Identity or a list of SNPN - identified by Network ID with associated plmn-Identity"; - key idx; - min-elements 1; - uses types3gpp:NpnIdGrp; - leaf idx { type string; } - } - leaf-list nrCellIdList { - must 'not(../taiList)'; - type types3gpp:NrCellId; - max-elements 32; - description "List of NR cells identified by NG-RAN CGI"; - } - list taiList { - must 'not(../nrCellIdList)'; - description "Tracking Area Identity list"; - key idx; - max-elements 8; - leaf idx { type string; } - uses types3gpp:TaiGrp; - } - - } - } - - - list sliceIdList { - description "Network Slice Id list"; - key idx; - uses PLMNInfo; - min-elements 1; - max-elements 16384; - leaf idx { type string; } - } - } - - grouping VendorSpecificFeatureGrp { - description "This <> represents the information of vendor - specific feature as defined in clause 6.1.6.2.62 of 3GPP TS 29.510"; - - leaf featureName { - type string; - mandatory true; - config false; - description "It is a string representing a proprietary feature - specific to a given vendor. - It is recommended that the case convention for these strings is the - same as for enumerated data types (i.e. UPPER_WITH_UNDERSCORE; - see 3GPP TS 29.501, clause 5.1.1)."; - } - leaf featureVersion { - type string; - mandatory true; - config false; - description "It is a string representing the version of the feature."; - } - - } - - grouping IpInterfaceGrp { - leaf-list ipv4EndpointAddresses { - description "Available endpoint IPv4 address(es) of - the User Plane interface."; - type inet:ipv4-address; - must '../ipv4EndpointAddresses or ../ipv6EndpointAddresses or ../fqdn'; - } - - leaf-list ipv6EndpointAddresses { - description "Available endpoint IPv6 address(es) of - the User Plane interface."; - type inet:ipv6-address; - must '../ipv4EndpointAddresses or ../ipv6EndpointAddresses or ../fqdn'; - } - - leaf fqdn { - description "This parameter defines FQDN of the Network Function - (See TS 23.003)."; - type inet:domain-name; - must '../ipv4EndpointAddresses or ../ipv6EndpointAddresses or ../fqdn'; - } - } - - grouping SdRangeGrp { - leaf start { - type string { - pattern "[A-Fa-f0-9]{6}"; - } - mandatory true; - description "First value identifying the start of an SD range. - This string shall be formatted as specified for the sd attribute of the - Snssai data type in clause 5.4.4.2 of TS 29.571."; - } - - leaf end { - type string { - pattern "[A-Fa-f0-9]{6}"; - } - mandatory true; - description "Last value identifying the end of an SD range. - This string shall be formatted as specified for the sd attribute of the - Snssai data type in clause 5.4.4.2 in TS 29.571"; - } - } - - grouping SnssaiExtensionGrp { - list sdRanges { - min-elements 1; - key "start end"; - description "It shall contain the range(s) of Slice Differentiator values - supported for the Slice/Service Type value indicated in the sst - attribute of the Snssai data type (see clause 5.4.4.2 in TS 29.571)."; - uses SdRangeGrp; - } - - leaf wildcardSd { - type boolean; - default false; - description "It indicates that all SD values are supported for the - Slice/Service Type value indicated in the sst attribute of the Snssai - data type (see clause 5.4.4.2 in TS 29.571)."; - } - } - - grouping ExtSnssaiGrp { - list snssai { - description "It represents the S-NSSAI the NetworkSlice managed object - is supporting. The S-NSSAI is defined in TS 23.003 "; - min-elements 1; - max-elements 1; - key "sd sst"; - uses SNssai; - } - - list snssaiExtension { - description "It represents extensions to the Snssai."; - min-elements 1; - key idx; - leaf idx { type uint32; } - uses SnssaiExtensionGrp; - } - } - grouping sNssaiSmfInfoItem { - list sNssai { - description "Supported S-NSSAI."; - min-elements 1; - max-elements 1; - key "sst sd"; - uses SNssai; - } - - list dnnSmfInfoList { - description "List of parameters supported by the SMF per DNN. - The absence indicates the DNN can be selected for any DNAI."; - min-elements 1; - key dnn; - uses DnnSmfInfoItem; - } - } - - grouping MappedCellIdInfoGrp { - description "This data type represents the mapping relationship between - Mapped Cell IDs and geographical areas (see clause 16.14.5 of TS 38.300"; - - list ntnGeoArea { - description "This attribute indicates a specific geographical location - mapped to Mapped Cell ID(s)."; - min-elements 1; - max-elements 1; - key idx; - leaf idx { type uint32; } - uses types3gpp:GeoAreaGrp; - } - - list mappedCellId { - description "This attribute is in format of NCGI to indicate a fixed - geographical area (See subclause 16.14.5 in TS 38.300)"; - min-elements 1; - max-elements 1; - key idx; - leaf idx { type uint32; } - uses NcgiGrp; - } - } - - grouping NcgiGrp { - description "Represents the Ncgi datatype"; - - list plmnId { - description "This attribute represents a PLMN Identity."; - min-elements 1; - max-elements 1; - key "idx"; - leaf idx { type uint32 ; } - uses types3gpp:PLMNId ; - } - - leaf nrCellId { - type string; - mandatory true; - description "This attribute represents NR Cell Identity. - It's a 36-bit string identifying an NR Cell Id as specified in - clause 9.3.1.7 of TS 38.413, in hexadecimal representation. Each - character in the string shall take a value of - '0' to '9', 'a' to 'f' or 'A' to 'F' and shall represent 4 bits. - The most significant character representing the 4 most significant - bits of the Cell Id shall appear first in the string, and the - character representing the 4 least significant bit of the - Cell Id shall appear last in the string. - - Pattern: '^[A-Fa-f0-9]{9}$' - - Example: - An NR Cell Id 0x225BD6007 shall be encoded as '225BD6007'."; - } - - leaf nId { - type string; - mandatory true; - description "Network Identity; Shall be present if PlmnIdNid identifies - an SNPN (see clauses 5.30.2.3, 5.30.2.9, 6.3.4, and 6.3.8 in - 3GPP TS 23.501."; - } - } - - typedef NRTAC { - type string; - description "This holds the identity of the common Tracking Area Code - for the PLMNs. - - allowedValues: - a) It is the TAC or Extended-TAC. - b) A cell can only broadcast one TAC or Extended-TAC. See TS 36.300, - subclause 10.1.7 (PLMNID and TAC relation). - c) TAC is defined in subclause 19.4.2.3 of 3GPP TS 23.003 - and Extended-TAC is defined in subclause 9.3.1.29 of 3GPP TS 38.473. - d) For a 5G SA (Stand Alone), it has a non-null value."; - } - - grouping SNssai { - description - "Single Network Slice Selection Assistance Information(S-NSSAI)"; - reference "3GPP TS 23.003"; - - leaf sd { - description "Slice Differentiator - If not needed, the value can be set to ff:ff:ff."; - type yang:hex-string { - length 8; - } - reference "3GPP TS 23.003"; - } - - leaf sst { - type uint8; - description "Slice/Service Type. - Values 0 to 127 belong to standardized SST range and are defined in - 3GPP TS 23.501. Values 128 to 255 belong to operator-specific range."; - } - } - - grouping PlmnIdNid { - description "Represents the SCP domain specific information as defined - in TS 29.510 "; - uses types3gpp:PLMNId; - - leaf nid { - type string; - description "This attribute represents network Identity; - Shall be present if PlmnIdNid identifies an SNPN. - (see clauses 5.30.2.3, 5.30.2.9, 6.3.4, and 6.3.8 in TS 23.501"; - } - } - - grouping PlmnSnssai { - description "This data type represents the list of S-NSSAIs supported - per PLMN."; - list plmnId { - description "PLMN ID for which list of supported S-NSSAI(s) - is provided."; - min-elements 1; - max-elements 1; - key "mcc mnc"; - uses types3gpp:PLMNId; - } - list sNssaiList { - description "The specific list of S-NSSAIs supported - by the given PLMN."; - min-elements 1; - max-elements 1; - key "sst sd"; - uses SNssai; - } - leaf nid { - description "Network Identity; Shall be present if PlmnIdNid - identifies an SNPN."; - reference "see clauses 5.30.2.3, 5.30.2.9, 6.3.4, - and 6.3.8 in 3GPP TS 23.501"; - type string; - } - } - - grouping PLMNInfo { - description "The PLMNInfo data type define a S-NSSAI member in a specific - PLMNId, and it have two attributes PLMNId and S-NSSAI (PLMNId, S-NSSAI). - The PLMNId represents a data type that is comprised of mcc - (mobile country code) and mnc (mobile network code), (See TS 23.003 - subclause 2.2 and 12.1) and S-NSSAI represents an data type, that is - comprised of an SST (Slice/Service type) and an optional - SD (Slice Differentiator) field"; - uses types3gpp:PLMNId; - uses SNssai; - } - - typedef CommModelType { - reference "3GPP TS 23501"; - type enumeration { - enum DIRECT_COMMUNICATION_WO_NRF { - value 0; - description "Directly communicate to other pre-configured NF service."; - } - - enum DIRECT_COMMUNICATION_WITH_NRF { - value 1; - description "Directly communicate to other NF service discovered - by NRF."; - } - - enum INDIRECT_COMMUNICATION_WO_DEDICATED_DISCOVERY { - value 2; - description "Communicate to pre-configured other NF service through - SCP as a proxy."; - } - - enum INDIRECT_COMMUNICATION_WITH_DEDICATED_DISCOVERY { - value 3; - description "Communication to NF service discovered by NRF through SCP - as a proxy."; - } - - } - } - - grouping CommModel { - leaf groupId { - type uint16; - } - leaf commModelType { - type CommModelType; - } - leaf-list targetNFServiceList { - type types3gpp:DistinguishedName; - } - leaf commModelConfiguration { - type string; - } - } - grouping TaiRangeGrp { - list plmnId { - description "PLMN ID related to the TacRange."; - min-elements 1; - max-elements 1; - key "mcc mnc"; - uses types3gpp:PLMNId; - } - - list tacRangeList { - description "The range of the TACs."; - min-elements 1; - key "start end"; - uses TacRange; - } - } - - grouping TacRange { - leaf start { - description "First value identifying the start of a TAC range, - to be used when the range of TAC's can be represented - as a hexadecimal range (e.g., TAC ranges)."; - type string { - pattern '^([A-Fa-f0-9]{4}|[A-Fa-f0-9]{6}$)'; - } - } - - leaf end { - description "Last value identifying the end of a TAC range, - to be used when the range of TAC's can be represented as - a hexadecimal range (e.g. TAC ranges)."; - type string { - pattern '^([A-Fa-f0-9]{4}|[A-Fa-f0-9]{6})$'; - } - } - - leaf nRTACpattern { - description "Pattern (regular expression according to the ECMA-262) - representing the set of TAC's belonging to this range. - A TAC value is considered part of the range if and only if the - TAC string fully matches the regular expression."; - type string; - } - } - grouping DnnSmfInfoItem { - leaf dnn { - description "Supported DNN."; - mandatory true; - type string; - } - - leaf-list dnaiList { - description "List of Data network access identifiers supported by - the SMF for this DNN. The absence of this attribute indicates that - the SMF can be selected for this DNN for any DNAI."; - min-elements 1; - type string; - } - } - - grouping SupportedFunc { - leaf function { - type string; - } - leaf policy { - type string; - } - } - - typedef EnergySavingLoadThresholdT { - type uint32 { - range 0..10000; - } - units 1/10000; - } - - typedef EnergySavingTimeDurationT { - type uint32 { - range 0..900; - } - units seconds; - } - - typedef PhysCellID { - type uint32 { - range "0..1007"; - } - reference "clause 7.4.2 of TS 38.211"; - } - - typedef UTC24TimeOfDayT { - description "Time of day in HH:MM or H:MM 24-hour format per UTC - time zone."; - type string { - pattern "(([01]?[0-9])|(2[0-3])):([0-5][0-9])"; - } - } - - typedef DayOfWeekT { - type enumeration { - enum Monday; - enum Tuesday; - enum Wednesday; - enum Thursday; - enum Friday; - enum Saturday; - enum Sunday; - } - } - - grouping CaraConfigurationGrp { - description "This data type represents the configuration used for - an NR mobile node (e.g., IAB-node or MWAB), to perform certificate - enrolment procedure with Certification Authority server (CA/RA) - as specified in TS 28.315 clause 5.3"; - - leaf caraAddress { - type inet:host; - description "IP address or FQDN of the CMP (Certificate Management - Protocol) - server"; - } - - leaf portNumber { - type inet:port-number; - description "This parameter specifies the port number used by - CMP (Certificate Management Protocol) server. The port for HTTP/HTTPSs - transfer of CMP messages is not explicitly given in RFC 9811, therefore - this parameter is required. The port number is usually - represented as 2 octets."; - } - - leaf path { - type inet:uri; - mandatory true; - description "This parameter specifies the path (in ASCII string) to - the CMP server directory. A CMP server may be located in an - arbitrary path other than root."; - } - - leaf subjectName { - type string; - mandatory true; - description "This parameter specifies the subject name (in ASCII - string) of the CA/RA. The use is described in 3GPP TS 33.310 - clause 9.5.3."; - } - - leaf protocol { - type enumeration { - enum HTTP; - enum HTTPS; - } - description "This parameter specifies the protocol (HTTP or HTTPS) - to be used for certificate enrolment. The use is described in - 3GPP TS 33.310 clause 9.6."; - } - } - - grouping MnrOamIPConfigGrp { - description "This data type includes the configutation for OAM connectivity - used for an NR mobile node (e.g., IAB-node or MWAB), to establish connection with - management system. The configuration attributes include: - Configuration of certification authority (CA/RA) server, - Configuration of security gateway (SeGW), and - Configuration of software configuration server (SCS)"; - - list caraConfiguration { - description "configuration used for an NR mobile node (e.g., IAB-node or MWAB), - to perform certificate enrolment procedure as specified in - TS 28.315."; - uses CaraConfigurationGrp; - max-elements 1; - key caraAddress; - } - - leaf seGwConfiguration { - description "this parameter specifies IP address or - FQDN of security gateway (SeGW) used for an - an NR mobile node (e.g., IAB-node or MWAB) - to establish secure connection as specified in TS 28.315."; - type inet:host; - - } - - leaf scsConfiguration { - description "this parameter specifies IP address or FQDN of - configuration server (SCS) used for - an NR mobile node (e.g., IAB-node or MWAB) - to establish connection as specified in TS 28.315."; - type inet:host; - } - } - - grouping RuleSetGrp { - description "This data type represents list of rules specifying whether - access/scopes are allowed/denied for NF-Consumers."; - reference "3GPP TS 29.510 clause 6.2.6.2.121"; - - leaf priority { - description "It indicates the unique Priority of the rule. Lower value - means higher priority."; - mandatory true; - type uint32; - } - - list plmns { - description "It indicates PLMNs allowed/dis-allowed to access the - service instance. When absent, NF-Consumers of all PLMNs are - assumed to match this criteria."; - key "mcc mnc"; - uses types3gpp:PLMNId; - } - - list snpns { - description "It indicates SNPNs allowed/dis-allowed to access the - service instance. When absent, NF-Consumers of all SNPNs are - assumed to match this criteria."; - key "mcc mnc"; - uses PlmnIdNid; - } - - leaf-list nfTypes { - description "It indicates type of the NFs allowed/dis-allowed to - access the service instance. When absent, NF-Consumers of all - nfTypes are assumed to match this criteria."; - type types3gpp:NfType; - } - - leaf-list nfDomains { - description "It represents pattern (regular expression according to - the ECMA-262 dialect) representing the NF domain names within the - PLMN of the NRF allowed/dis-allowed to access the service instance. - When absent, NF-Consumers of all nfDomains are assumed to match - this criteria."; - type string; - } - - list nssais { - description "It represents S-NSSAIs of the NF-Consumers - allowed/dis-allowed to access the service instance. When absent, - NF-Consumers of all slices are assumed to match this criteria."; - key idx; - leaf idx { type uint32; } - uses ExtSnssaiGrp; - } - - leaf-list nfInstances { - description "It represents NF-Instance IDs of the NF-Consumers - allowed/dis-allowed to access the NF/NF-Service instance. When - absent, all the NF-Consumers are assumed to match this criteria."; - type string; - } - - leaf-list scopes { - description "It represents list of scopes allowed or denied to the - NF-Consumers matching the rule. The scopes shall be any of those - defined in the API that defines the current service. When absent, - the NF-Consumer is allowed or denied full access to all the - resources/operations of service instance."; - type string; - } - - leaf action { - description "It specifies whether the scopes/access mentioned are - allowed or denied for a specific NF-Consumer. - ALLOW: The NF consumer is allowed to access NF producer. - DENY: The NF consumer is not allowed to access NF Producer."; - mandatory true; - type enumeration { - enum ALLOW; - enum DENY; - } - } - } - - grouping LocationInfoGrp { - description "This data type contains location information - of an NR mobile node (e.g., IAB-node or MWAB)."; - - leaf gNBId { - type int64 { range "0..4294967295"; } - description "It is either the gNB ID of the IAB-donor-CU that target IAB-DU - connects to or the gNB Id of the IAB-nonor-CU that serves IAB-MT, or - the gNBId of the gNB that serves MWAB-UE."; - } - - list pLMNId { - uses types3gpp:PLMNId; - max-elements 1; - description "The PLMN ID where IAB-MT or MWAB-UE is connected to"; - key "mcc mnc"; - } - - leaf cellLocalId { - type int32 { range "0..16383"; } - description "Identifies an NR cell where IAB-MT or MWAB-UE - is connected to."; - } - - leaf nRTAC { - type types5g3gpp:NRTAC; - description "It is TAC pertaining to the cells where IAB-MT or MWAB-UE is - connected."; - } - - list tAI { - uses types3gpp:TaiGrp; - key idx; - leaf idx { type string; } - max-elements 1; - description "It is the TAI (see subclause 9.3.3.11 in TS 38.413) pertaining - to the cells where IAB-MT or MWAB-UE is connected"; - } - list geoArea { - uses types3gpp:GeoAreaGrp; - key idx; - leaf idx {type string;} - max-elements 1; - description "It specifies geographical area of mobile NR node - (e.g., IAB-node or MWAB-node)."; - } - } +module _3gpp-5g-common-yang-types { + yang-version 1.1; + namespace "urn:3gpp:sa5:_3gpp-5g-common-yang-types"; + prefix "types5g3gpp"; + + import ietf-yang-types { prefix yang; } + import ietf-inet-types { prefix inet; } + import _3gpp-common-yang-types { prefix types3gpp; } + + organization "3GPP SA5"; + contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; + description "The model defines common types for 5G networks and + network slicing. + Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + TTA, TTC). All rights reserved."; + reference "3GPP TS 28.541"; + + revision 2026-03-25 { reference CR- ; } + revision 2025-11-07 { reference CR-1640 ; } + revision 2025-11-01 { reference CR-1657 ; } + revision 2025-07-25 { reference CR-1558 ; } + revision 2025-03-25 { reference CR-1489 ; } + revision 2024-11-01 { reference CR-1405; } + revision 2024-10-06 { reference CR-1389; } + revision 2024-05-24 { reference CR-1273 ; } + revision 2023-09-18 { reference CR-1043 ; } + revision 2023-05-10 { reference CR-0916; } + revision 2021-08-05 { reference S5-214053/CR-0518; } + revision 2020-11-05 { reference CR-0412 ; } + revision 2019-10-20 { reference "Initial version."; } + + grouping AreaScopeGrp { + description "This <> defines an area scope."; + + choice AreaScopeChoice { + + case eutran-only { // choice 1 + leaf-list eutraCellIdList { + type types3gpp:EutraCellId; + min-elements 1; + max-elements 32; + description "List of E-UTRAN cells identified by E-UTRAN-CGI"; + } + } + case tac { // choice 3 + leaf-list tacList { + type types3gpp:Tac; + min-elements 1; + max-elements 8; + description "Tracking Area Code list"; + } + leaf-list cAGIdList { + type types3gpp:CagId; + max-elements 256; + description "It identifies a CAG list containing up to + 256 CAG-identifiers per UE or up to 12 CAG-identifiers + per cell, see TS 38.331 [38]. CAG ID is used to combine + with PLMN ID to identify a PNI-NPN.AG ID is a hexadecimal + range with size 32 bit."; + } + } + + case ntnGeoAreaList{ // choice 6 + list ntnGeoAreaList { + must 'not(../nrCellIdList)'; + description "geographical areas for NTN MDT"; + key idx; + max-elements 8; + leaf idx { type string; } + uses types3gpp:GeoAreaGrp; + } + } + + case else { + list nPNIdentityList { // choice 2, 4 , 5 + description "list of NPN IDs of in NR. It is either + a list of PNI-NPNs identified by CAG ID with + associated plmn-Identity or a list of SNPN + identified by Network ID with associated plmn-Identity"; + key idx; + min-elements 1; + uses types3gpp:NpnIdGrp; + leaf idx { type string; } + } + leaf-list nrCellIdList { + must 'not(../taiList)'; + type types3gpp:NrCellId; + max-elements 32; + description "List of NR cells identified by NG-RAN CGI"; + } + list taiList { + must 'not(../nrCellIdList)'; + description "Tracking Area Identity list"; + key idx; + max-elements 8; + leaf idx { type string; } + uses types3gpp:TaiGrp; + } + + } + } + + + list sliceIdList { + description "Network Slice Id list"; + key idx; + uses PLMNInfo; + min-elements 1; + max-elements 16384; + leaf idx { type string; } + } + } + + grouping VendorSpecificFeatureGrp { + description "This <> represents the information of vendor + specific feature as defined in clause 6.1.6.2.62 of 3GPP TS 29.510"; + + leaf featureName { + type string; + mandatory true; + config false; + description "It is a string representing a proprietary feature + specific to a given vendor. + It is recommended that the case convention for these strings is the + same as for enumerated data types (i.e. UPPER_WITH_UNDERSCORE; + see 3GPP TS 29.501, clause 5.1.1)."; + } + leaf featureVersion { + type string; + mandatory true; + config false; + description "It is a string representing the version of the feature."; + } + + } + + grouping IpInterfaceGrp { + leaf-list ipv4EndpointAddresses { + description "Available endpoint IPv4 address(es) of + the User Plane interface."; + type inet:ipv4-address; + must '../ipv4EndpointAddresses or ../ipv6EndpointAddresses or ../fqdn'; + } + + leaf-list ipv6EndpointAddresses { + description "Available endpoint IPv6 address(es) of + the User Plane interface."; + type inet:ipv6-address; + must '../ipv4EndpointAddresses or ../ipv6EndpointAddresses or ../fqdn'; + } + + leaf fqdn { + description "This parameter defines FQDN of the Network Function + (See TS 23.003)."; + type inet:domain-name; + must '../ipv4EndpointAddresses or ../ipv6EndpointAddresses or ../fqdn'; + } + } + + grouping SdRangeGrp { + leaf start { + type string { + pattern "[A-Fa-f0-9]{6}"; + } + mandatory true; + description "First value identifying the start of an SD range. + This string shall be formatted as specified for the sd attribute of the + Snssai data type in clause 5.4.4.2 of TS 29.571."; + } + + leaf end { + type string { + pattern "[A-Fa-f0-9]{6}"; + } + mandatory true; + description "Last value identifying the end of an SD range. + This string shall be formatted as specified for the sd attribute of the + Snssai data type in clause 5.4.4.2 in TS 29.571"; + } + } + + grouping SupiRangeGrp { + description "This <> represents a range of SUPIs."; + leaf start { + description "First value identifying the start of a SUPI range."; + type string { + pattern '^[0-9]+$'; + } + } + leaf end { + description "Last value identifying the end of a SUPI range."; + type string { + pattern '^[0-9]+$'; + } + } + leaf pattern { + description "Pattern representing the set of SUPIs belonging to + this range."; + type string; + } + } + + grouping IdentityRangeGrp { + description "This <> represents a range of identities."; + leaf start { + description "First value identifying the start of an identity range."; + type string { + pattern '^[0-9]+$'; + } + } + leaf end { + description "Last value identifying the end of an identity range."; + type string; + } + leaf pattern { + description "Pattern representing the set of identities belonging to + this range."; + type string; + } + } + + grouping SupportedVendorSpecificFeaturesGrp { + description "This <> represents a map of Vendor-Specific features, + where the key of the map is the IANA-assigned SMI Network Management + Private Enterprise Codes and the value of each entry of the map shall be + a list (array) of VendorSpecificFeature objects as defined in clause 5.3.247."; + reference "3GPP TS 29.510 clause 5.3.247"; + + list supportedVendorSpecificFeatures { + description "It indicates a map of Vendor-Specific features, where the + key of the map is the IANA-assigned SMI Network Management Private + Enterprise Codes and the value of each entry of the map shall be + a list (array) of VendorSpecificFeature objects as defined + in the clause 5.3.247."; + key "enterpriseCode"; + + leaf enterpriseCode { + type uint32; + description "IANA-assigned SMI Network Management Private + Enterprise Code"; + } + + list vendorSpecificFeature { + key "featureName"; + config false; + description "VendorSpecificFeature objects as defined + in the clause 5.3.247."; + uses VendorSpecificFeatureGrp; + } + } + } + + grouping SnssaiExtensionGrp { + list sdRanges { + min-elements 1; + key "start end"; + description "It shall contain the range(s) of Slice Differentiator values + supported for the Slice/Service Type value indicated in the sst + attribute of the Snssai data type (see clause 5.4.4.2 in TS 29.571)."; + uses SdRangeGrp; + } + + leaf wildcardSd { + type boolean; + default false; + description "It indicates that all SD values are supported for the + Slice/Service Type value indicated in the sst attribute of the Snssai + data type (see clause 5.4.4.2 in TS 29.571)."; + } + } + + grouping ExtSnssaiGrp { + list snssai { + description "It represents the S-NSSAI the NetworkSlice managed object + is supporting. The S-NSSAI is defined in TS 23.003 "; + min-elements 1; + max-elements 1; + key "sd sst"; + uses SNssai; + } + + list snssaiExtension { + description "It represents extensions to the Snssai."; + min-elements 1; + key idx; + leaf idx { type uint32; } + uses SnssaiExtensionGrp; + } + } + grouping sNssaiSmfInfoItem { + list sNssai { + description "Supported S-NSSAI."; + min-elements 1; + max-elements 1; + key "sst sd"; + uses SNssai; + } + + list dnnSmfInfoList { + description "List of parameters supported by the SMF per DNN. + The absence indicates the DNN can be selected for any DNAI."; + min-elements 1; + key dnn; + uses DnnSmfInfoItem; + } + } + + grouping MappedCellIdInfoGrp { + description "This data type represents the mapping relationship between + Mapped Cell IDs and geographical areas (see clause 16.14.5 of TS 38.300"; + + list ntnGeoArea { + description "This attribute indicates a specific geographical location + mapped to Mapped Cell ID(s)."; + min-elements 1; + max-elements 1; + key idx; + leaf idx { type uint32; } + uses types3gpp:GeoAreaGrp; + } + + list mappedCellId { + description "This attribute is in format of NCGI to indicate a fixed + geographical area (See subclause 16.14.5 in TS 38.300)"; + min-elements 1; + max-elements 1; + key idx; + leaf idx { type uint32; } + uses NcgiGrp; + } + } + + grouping NcgiGrp { + description "Represents the Ncgi datatype"; + + list plmnId { + description "This attribute represents a PLMN Identity."; + min-elements 1; + max-elements 1; + key "idx"; + leaf idx { type uint32 ; } + uses types3gpp:PLMNId ; + } + + leaf nrCellId { + type string; + mandatory true; + description "This attribute represents NR Cell Identity. + It's a 36-bit string identifying an NR Cell Id as specified in + clause 9.3.1.7 of TS 38.413, in hexadecimal representation. Each + character in the string shall take a value of + '0' to '9', 'a' to 'f' or 'A' to 'F' and shall represent 4 bits. + The most significant character representing the 4 most significant + bits of the Cell Id shall appear first in the string, and the + character representing the 4 least significant bit of the + Cell Id shall appear last in the string. + + Pattern: '^[A-Fa-f0-9]{9}$' + + Example: + An NR Cell Id 0x225BD6007 shall be encoded as '225BD6007'."; + } + + leaf nId { + type string; + mandatory true; + description "Network Identity; Shall be present if PlmnIdNid identifies + an SNPN (see clauses 5.30.2.3, 5.30.2.9, 6.3.4, and 6.3.8 in + 3GPP TS 23.501."; + } + } + + typedef NRTAC { + type string; + description "This holds the identity of the common Tracking Area Code + for the PLMNs. + + allowedValues: + a) It is the TAC or Extended-TAC. + b) A cell can only broadcast one TAC or Extended-TAC. See TS 36.300, + subclause 10.1.7 (PLMNID and TAC relation). + c) TAC is defined in subclause 19.4.2.3 of 3GPP TS 23.003 + and Extended-TAC is defined in subclause 9.3.1.29 of 3GPP TS 38.473. + d) For a 5G SA (Stand Alone), it has a non-null value."; + } + + grouping SNssai { + description + "Single Network Slice Selection Assistance Information(S-NSSAI)"; + reference "3GPP TS 23.003"; + + leaf sd { + description "Slice Differentiator + If not needed, the value can be set to ff:ff:ff."; + type yang:hex-string { + length 8; + } + reference "3GPP TS 23.003"; + } + + leaf sst { + type uint8; + description "Slice/Service Type. + Values 0 to 127 belong to standardized SST range and are defined in + 3GPP TS 23.501. Values 128 to 255 belong to operator-specific range."; + } + } + + grouping PlmnIdNid { + description "Represents the SCP domain specific information as defined + in TS 29.510 "; + uses types3gpp:PLMNId; + + leaf nid { + type string; + description "This attribute represents network Identity; + Shall be present if PlmnIdNid identifies an SNPN. + (see clauses 5.30.2.3, 5.30.2.9, 6.3.4, and 6.3.8 in TS 23.501"; + } + } + + grouping PLMNInfo { + description "The PLMNInfo data type define a S-NSSAI member in a specific + PLMNId, and it have two attributes PLMNId and S-NSSAI (PLMNId, S-NSSAI). + The PLMNId represents a data type that is comprised of mcc + (mobile country code) and mnc (mobile network code), (See TS 23.003 + subclause 2.2 and 12.1) and S-NSSAI represents an data type, that is + comprised of an SST (Slice/Service type) and an optional + SD (Slice Differentiator) field"; + uses types3gpp:PLMNId; + uses SNssai; + } + + typedef CommModelType { + reference "3GPP TS 23501"; + type enumeration { + enum DIRECT_COMMUNICATION_WO_NRF { + value 0; + description "Directly communicate to other pre-configured NF service."; + } + + enum DIRECT_COMMUNICATION_WITH_NRF { + value 1; + description "Directly communicate to other NF service discovered + by NRF."; + } + + enum INDIRECT_COMMUNICATION_WO_DEDICATED_DISCOVERY { + value 2; + description "Communicate to pre-configured other NF service through + SCP as a proxy."; + } + + enum INDIRECT_COMMUNICATION_WITH_DEDICATED_DISCOVERY { + value 3; + description "Communication to NF service discovered by NRF through SCP + as a proxy."; + } + + } + } + + grouping CommModel { + leaf groupId { + type uint16; + } + leaf commModelType { + type CommModelType; + } + leaf-list targetNFServiceList { + type types3gpp:DistinguishedName; + } + leaf commModelConfiguration { + type string; + } + } + grouping TaiRangeGrp { + list plmnId { + description "PLMN ID related to the TacRange."; + min-elements 1; + max-elements 1; + key "mcc mnc"; + uses types3gpp:PLMNId; + } + + list tacRangeList { + description "The range of the TACs."; + min-elements 1; + key "start end"; + uses TacRange; + } + } + + grouping TacRange { + leaf start { + description "First value identifying the start of a TAC range, + to be used when the range of TAC's can be represented + as a hexadecimal range (e.g., TAC ranges)."; + type string { + pattern '^([A-Fa-f0-9]{4}|[A-Fa-f0-9]{6}$)'; + } + } + + leaf end { + description "Last value identifying the end of a TAC range, + to be used when the range of TAC's can be represented as + a hexadecimal range (e.g. TAC ranges)."; + type string { + pattern '^([A-Fa-f0-9]{4}|[A-Fa-f0-9]{6})$'; + } + } + + leaf nRTACpattern { + description "Pattern (regular expression according to the ECMA-262) + representing the set of TAC's belonging to this range. + A TAC value is considered part of the range if and only if the + TAC string fully matches the regular expression."; + type string; + } + } + grouping DnnSmfInfoItem { + leaf dnn { + description "Supported DNN."; + mandatory true; + type string; + } + + leaf-list dnaiList { + description "List of Data network access identifiers supported by + the SMF for this DNN. The absence of this attribute indicates that + the SMF can be selected for this DNN for any DNAI."; + min-elements 1; + type string; + } + } + + grouping SupportedFunc { + leaf function { + type string; + } + leaf policy { + type string; + } + } + + typedef EnergySavingLoadThresholdT { + type uint32 { + range 0..10000; + } + units 1/10000; + } + + typedef EnergySavingTimeDurationT { + type uint32 { + range 0..900; + } + units seconds; + } + + typedef PhysCellID { + type uint32 { + range "0..1007"; + } + reference "clause 7.4.2 of TS 38.211"; + } + + typedef UTC24TimeOfDayT { + description "Time of day in HH:MM or H:MM 24-hour format per UTC + time zone."; + type string { + pattern "(([01]?[0-9])|(2[0-3])):([0-5][0-9])"; + } + } + + typedef DayOfWeekT { + type enumeration { + enum Monday; + enum Tuesday; + enum Wednesday; + enum Thursday; + enum Friday; + enum Saturday; + enum Sunday; + } + } + + grouping CaraConfigurationGrp { + description "This data type represents the configuration used for + an NR mobile node (e.g., IAB-node or MWAB), to perform certificate + enrolment procedure with Certification Authority server (CA/RA) + as specified in TS 28.315 clause 5.3"; + + leaf caraAddress { + type inet:host; + description "IP address or FQDN of the CMP (Certificate Management + Protocol) + server"; + } + + leaf portNumber { + type inet:port-number; + description "This parameter specifies the port number used by + CMP (Certificate Management Protocol) server. The port for HTTP/HTTPSs + transfer of CMP messages is not explicitly given in RFC 9811, therefore + this parameter is required. The port number is usually + represented as 2 octets."; + } + + leaf path { + type inet:uri; + mandatory true; + description "This parameter specifies the path (in ASCII string) to + the CMP server directory. A CMP server may be located in an + arbitrary path other than root."; + } + + leaf subjectName { + type string; + mandatory true; + description "This parameter specifies the subject name (in ASCII + string) of the CA/RA. The use is described in 3GPP TS 33.310 + clause 9.5.3."; + } + + leaf protocol { + type enumeration { + enum HTTP; + enum HTTPS; + } + description "This parameter specifies the protocol (HTTP or HTTPS) + to be used for certificate enrolment. The use is described in + 3GPP TS 33.310 clause 9.6."; + } + } + + grouping MnrOamIPConfigGrp { + description "This data type includes the configutation for OAM connectivity + used for an NR mobile node (e.g., IAB-node or MWAB), to establish connection with + management system. The configuration attributes include: + Configuration of certification authority (CA/RA) server, + Configuration of security gateway (SeGW), and + Configuration of software configuration server (SCS)"; + + list caraConfiguration { + description "configuration used for an NR mobile node (e.g., IAB-node or MWAB), + to perform certificate enrolment procedure as specified in + TS 28.315."; + uses CaraConfigurationGrp; + max-elements 1; + key caraAddress; + } + + leaf seGwConfiguration { + description "this parameter specifies IP address or + FQDN of security gateway (SeGW) used for an + an NR mobile node (e.g., IAB-node or MWAB) + to establish secure connection as specified in TS 28.315."; + type inet:host; + + } + + leaf scsConfiguration { + description "this parameter specifies IP address or FQDN of + configuration server (SCS) used for + an NR mobile node (e.g., IAB-node or MWAB) + to establish connection as specified in TS 28.315."; + type inet:host; + } + } + + grouping RuleSetGrp { + description "This data type represents list of rules specifying whether + access/scopes are allowed/denied for NF-Consumers."; + reference "3GPP TS 29.510 clause 6.2.6.2.121"; + + leaf priority { + description "It indicates the unique Priority of the rule. Lower value + means higher priority."; + mandatory true; + type uint32; + } + + list plmns { + description "It indicates PLMNs allowed/dis-allowed to access the + service instance. When absent, NF-Consumers of all PLMNs are + assumed to match this criteria."; + key "mcc mnc"; + uses types3gpp:PLMNId; + } + + list snpns { + description "It indicates SNPNs allowed/dis-allowed to access the + service instance. When absent, NF-Consumers of all SNPNs are + assumed to match this criteria."; + key "mcc mnc"; + uses PlmnIdNid; + } + + leaf-list nfTypes { + description "It indicates type of the NFs allowed/dis-allowed to + access the service instance. When absent, NF-Consumers of all + nfTypes are assumed to match this criteria."; + type types3gpp:NfType; + } + + leaf-list nfDomains { + description "It represents pattern (regular expression according to + the ECMA-262 dialect) representing the NF domain names within the + PLMN of the NRF allowed/dis-allowed to access the service instance. + When absent, NF-Consumers of all nfDomains are assumed to match + this criteria."; + type string; + } + + list nssais { + description "It represents S-NSSAIs of the NF-Consumers + allowed/dis-allowed to access the service instance. When absent, + NF-Consumers of all slices are assumed to match this criteria."; + key idx; + leaf idx { type uint32; } + uses ExtSnssaiGrp; + } + + leaf-list nfInstances { + description "It represents NF-Instance IDs of the NF-Consumers + allowed/dis-allowed to access the NF/NF-Service instance. When + absent, all the NF-Consumers are assumed to match this criteria."; + type string; + } + + leaf-list scopes { + description "It represents list of scopes allowed or denied to the + NF-Consumers matching the rule. The scopes shall be any of those + defined in the API that defines the current service. When absent, + the NF-Consumer is allowed or denied full access to all the + resources/operations of service instance."; + type string; + } + + leaf action { + description "It specifies whether the scopes/access mentioned are + allowed or denied for a specific NF-Consumer. + ALLOW: The NF consumer is allowed to access NF producer. + DENY: The NF consumer is not allowed to access NF Producer."; + mandatory true; + type enumeration { + enum ALLOW; + enum DENY; + } + } + } + + grouping LocationInfoGrp { + description "This data type contains location information + of an NR mobile node (e.g., IAB-node or MWAB)."; + + leaf gNBId { + type int64 { range "0..4294967295"; } + description "It is either the gNB ID of the IAB-donor-CU that target IAB-DU + connects to or the gNB Id of the IAB-nonor-CU that serves IAB-MT, or + the gNBId of the gNB that serves MWAB-UE."; + } + + list pLMNId { + uses types3gpp:PLMNId; + max-elements 1; + description "The PLMN ID where IAB-MT or MWAB-UE is connected to"; + key "mcc mnc"; + } + + leaf cellLocalId { + type int32 { range "0..16383"; } + description "Identifies an NR cell where IAB-MT or MWAB-UE + is connected to."; + } + + leaf nRTAC { + type types5g3gpp:NRTAC; + description "It is TAC pertaining to the cells where IAB-MT or MWAB-UE is + connected."; + } + + list tAI { + uses types3gpp:TaiGrp; + key idx; + leaf idx { type string; } + max-elements 1; + description "It is the TAI (see subclause 9.3.3.11 in TS 38.413) pertaining + to the cells where IAB-MT or MWAB-UE is connected"; + } + list geoArea { + uses types3gpp:GeoAreaGrp; + key idx; + leaf idx {type string;} + max-elements 1; + description "It specifies geographical area of mobile NR node + (e.g., IAB-node or MWAB-node)."; + } + } } \ No newline at end of file diff --git a/yang-models/_3gpp-5gc-nrm-ausffunction.yang b/yang-models/_3gpp-5gc-nrm-ausffunction.yang index 3f02fd5a..3131b340 100755 --- a/yang-models/_3gpp-5gc-nrm-ausffunction.yang +++ b/yang-models/_3gpp-5gc-nrm-ausffunction.yang @@ -16,10 +16,11 @@ module _3gpp-5gc-nrm-ausffunction { contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; description "This IOC represents the AUSF function in 5GC. For more information about the AUSF, see 3GPP TS 23.501. - Copyright 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 28.541"; + revision 2026-03-25 { reference CR- ; } revision 2023-09-18 { reference CR-1043 ; } revision 2022-01-07 { reference CR-0643; } revision 2020-11-06 { reference CR-0412 ; } @@ -66,7 +67,7 @@ module _3gpp-5gc-nrm-ausffunction { by the PCF instance."; key idx; leaf idx { type uint32 ; } - uses mnfp3gpp:SupiRangeGrp; + uses types5g3gpp:SupiRangeGrp; } leaf-list routingIndicators { diff --git a/yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang b/yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang index ebe705ca..e2953e19 100755 --- a/yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang +++ b/yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang @@ -53,202 +53,6 @@ revision 2025-07-25 { reference CR-1558 ; } type types3gpp:NfType; } } - grouping SupiRangeGrp { - leaf start { - description "First value identifying the start ofa SUPI range.To be - used when the range of SUPI's can be represented as a numeric range - (e.g., IMSI ranges)."; - type string { - pattern '^[0-9]+$'; - } - } - - leaf end { - description "Last value identifying the end of a SUPI range.To be - used when the range of SUPI's can be represented as a numeric range - (e.g. IMSI ranges)."; - type string { - pattern '^[0-9]+$'; - } - } - - leaf pattern { - description "Pattern representing the set of SUPI's belonging to - this range.A SUPI value is considered part of the range if and - only if the SUPI string fully matches the regular expression."; - type string; - } - } - - grouping ConditionItemGrp { - description "This data type represents a single condition item that - shall be evaluated to determine whether a discovered NF (Service) - Instance shall be selected."; - - leaf-list consumerNfTypes { - description "It represents the NF types of the consumers for - which the conditions included in this ConditionItem apply. - If this attribute is absent, the conditions are applicable - to all NF consumer types."; - min-elements 1; - type types3gpp:NfType; - } - leaf serviceFeature { - description "It represents a feature number of that NF Service - Instance,under CANARY_RELEASE status. This attribute only - applies when the selectionConditions, where this - ConditionItem is included, is included in a NF Service Instance - This condition is evaluated to when the service requests - froma consumer of this NF Service Instance require the support - of the indicated feature on the NF Service Instance."; - type uint32; // positive integer, 0 excluded by context - } - leaf vsServiceFeature { - description "It represents a Vendor-Specific feature - number of thatNF Service Instance, under CANARY_RELEASE - status. This attribute only applies when the - selectionConditions, where this ConditionItem is included, - is included in a NF Service Instance.This condition is - evaluated to true when the service requests from a - consumer of this NF Service Instance require the support - of the indicated Vendor-Specific feature on the NF - Service Instance."; - type uint32; - } - list supiRangeList { - description "It represents a set of SUPIs for which - the NF (Service) instance under CANARY_RELEASE status shall - be selected."; - key idx; - leaf idx { type uint32; } - uses SupiRangeGrp; - } - list gpsiRangeList { - description "It represents a set of GPSIs for which the NF - (Service) - instance under CANARY_RELEASE status shall be selected"; - min-elements 1; - key idx; - leaf idx { type uint32; } - uses IdentityRange; - } - list impuRangeList { - description "It represents a set of IMS Public Identities - for which the NF (Service) instance under CANARY_RELEASE - status shall be selected"; - min-elements 1; - key idx; - leaf idx { type uint32; } - uses IdentityRange; - } - list impiRangeList { - description "It represents a set of IMS Private Identities - for which theNF (Service) instance under - CANARY_RELEASE status shall be selected."; - min-elements 1; - key idx; - leaf idx { type uint32; } - uses IdentityRange; - } - leaf-list peiList { - description "It represents a set of PEIs of the UEs for - which the NF (Service) instance under CANARY_RELEASE status - shall be selected."; - min-elements 1; - type string; - } - list taiRangeList { - description "It represents a set of TAIs where the - NF(Service) instance under CANARY_RELEASE status shall - be selected for a certain UE"; - min-elements 1; - key idx; - leaf idx { type uint32; } - uses types5g3gpp:TaiRangeGrp; - } - leaf-list dnnList { - description "It represents a set of DNNs where the NF - (Service) instance under CANARY_RELEASE status shall be - selected."; - min-elements 1; - type string; - } - } - - - grouping SelectionConditionsGrp { - description "This data type represents the list of conditions that - shall be selected by an NF Service Consumer."; - reference "See clause 6.1.6.2.123 TS 29.510 [23]"; - - list conditionItem { - key "id"; - description "It represent a single condition item that shall be - evaluated to determine whether a discovered NF (Service) - Instance shall be selected."; - leaf id { - type string; - } - uses ConditionItemGrp; - } - - list conditionGroup { - description "It represents a group of conditions - that shall be evaluated."; - key idx; - leaf idx { type uint32; } - max-elements 1; - // Note: ConditionGroupGrp references SelectionConditionsGrp - // creating a circular dependency. Inlined one level to avoid it. - choice LogicalOperator { - case and { - list and { - description "It represents a list of conditions where the - overall evaluation is true only if all the conditions - in the list are evaluated as true."; - key idx; - leaf idx { type uint32; } - list conditionItem { - key "id"; - description "It represent a single condition item that - shall be evaluated."; - leaf id { type string; } - uses ConditionItemGrp; - } - } - } - case or { - list or { - description "It represents a list of conditions where the - overall evaluation is true if at least one of the - conditions in the list is evaluated as true."; - key idx; - leaf idx { type uint32; } - list conditionItem { - key "id"; - description "It represent a single condition item that - shall be evaluated."; - leaf id { type string; } - uses ConditionItemGrp; - } - } - } - } - } - } - - grouping IdentityRange { - leaf start { - description "First value identifying the start of an identity range. - To be used when the range of identities can be represented - as a numeric range (e.g., MSISDN ranges)."; - type string { - pattern '^[0-9]+$'; - } - } - leaf end {type string; } // dummy - leaf pattern {type string; } // dummy - } grouping ManagedNFProfileGrp { description "Represents the ManagedNFProfile <> as defined in @@ -357,7 +161,7 @@ grouping ManagedNFProfileGrp { of the NFService(s)."; key idx; leaf idx { type uint32; } - uses types5g3gpp:PlmnSnssai; + uses nfs3gpp:PlmnSnssai; } list allowedSNPNs { @@ -573,28 +377,7 @@ grouping ManagedNFProfileGrp { min-elements 1; uses nfs3gpp:NFServiceGrp; } - list supportedVendorSpecificFeatures { - description "It indicates a map of Vendor-Specific features, where the - key of the map is the IANA-assigned SMI Network Management Private - Enterprise Codes and the value of each entry of the map shall be - a list (array) of VendorSpecificFeature objects as defined - in the clause 5.3.247."; - key "enterpriseCode"; - config false; - - leaf enterpriseCode { - type uint32; - description "IANA-assigned SMI Network Management Private Enterprise Code"; - } - - list vendorSpecificFeature { - key "featureName"; - config false; - description "VendorSpecificFeature objects as defined - in the clause 5.3.247."; - uses types5g3gpp:VendorSpecificFeatureGrp; - } - } + uses types5g3gpp:SupportedVendorSpecificFeaturesGrp; list selectionConditions { description "This attribute includes the conditions under which an NF @@ -604,7 +387,7 @@ grouping ManagedNFProfileGrp { leaf idx { type uint32; } key "idx"; max-elements 1; - uses SelectionConditionsGrp; + uses nfs3gpp:SelectionConditionsGrp; } leaf canaryRelease { description "This attribute indicates whether an NF instance whose @@ -680,4 +463,3 @@ grouping ManagedNFProfileGrp { } } } - diff --git a/yang-models/_3gpp-5gc-nrm-neffunction.yang b/yang-models/_3gpp-5gc-nrm-neffunction.yang index 6f8b80c8..9c056d89 100755 --- a/yang-models/_3gpp-5gc-nrm-neffunction.yang +++ b/yang-models/_3gpp-5gc-nrm-neffunction.yang @@ -213,7 +213,7 @@ module _3gpp-5gc-nrm-neffunction { min-elements 1; key idx; leaf idx { type uint32 ; } - uses mnfp3gpp:IdentityRange; + uses types5g3gpp:IdentityRangeGrp; } list externalGroupIdentifiersRanges { @@ -222,7 +222,7 @@ module _3gpp-5gc-nrm-neffunction { min-elements 1; key idx; leaf idx { type uint32 ; } - uses mnfp3gpp:IdentityRange; + uses types5g3gpp:IdentityRangeGrp; } leaf-list servedFqdnList { diff --git a/yang-models/_3gpp-5gc-nrm-nfservice.yang b/yang-models/_3gpp-5gc-nrm-nfservice.yang index bf569eb3..7099add4 100755 --- a/yang-models/_3gpp-5gc-nrm-nfservice.yang +++ b/yang-models/_3gpp-5gc-nrm-nfservice.yang @@ -1,557 +1,719 @@ -module _3gpp-5gc-nrm-nfservice { - yang-version 1.1; - - namespace urn:3gpp:sa5:_3gpp-5gc-nrm-nfservice; - prefix nfs3gpp; - - import _3gpp-common-yang-types { prefix types3gpp; } - import ietf-yang-types { prefix yang; } - import ietf-inet-types { prefix inet; } - import _3gpp-5g-common-yang-types { prefix types5g3gpp; } - - - organization "3gpp SA5"; - contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; - description "NF service dataType. - Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, - TTA, TTC). All rights reserved."; - reference "3GPP TS 29.510"; - - revision 2025-03-25 { reference CR-; } - revision 2025-01-25 { reference CR-1442; } - revision 2023-09-18 { reference CR-1043 ; } - revision 2021-01-25 { reference CR-0454 ; } - revision 2020-11-05 { reference CR-0412 ; } - revision 2019-06-17 { reference "initial revision"; } - - grouping NFServiceGrp { - description "This data type represents the NF Service - defined in TS 29.510 [23]."; - leaf serviceInstanceID { - description - "Unique ID of the service instance within a given NF Instance."; - mandatory true; - type string; - } - - leaf serviceName { - description "Name of the service instance (e.g. 'nudm-sdm')."; - mandatory true; - type ServiceName; - } - - list versions { //check in review if key is ok (unique) - description "API versions supported by the NF Service and if available, - the corresponding retirement date of the NF Service."; - min-elements 1; - key "apiVersionInUri apiFullVersion"; - uses NFServiceVersion; - } - - leaf scheme { - description "URI scheme (e.g. 'http', 'https')."; - mandatory true; - type UriScheme; - } - - leaf nfServiceStatus { - description "Status of the NF Service Instance."; - mandatory true; - type NFServiceStatus; - } - - leaf fqdn { - description "FQDN of the NF Service Instance."; - //optional support - type inet:domain-name; - } - - leaf interPlmnFqdn { - description "If the NF service needs to be discoverable by other NFs in a - different PLMN, then an FQDN that is used for inter PLMN routing."; - //optional support - type inet:domain-name; - } - - list ipEndPoints { - description "IP address(es) and port information of the Network Function - (including IPv4 and/or IPv6 address)where the service is listening - for incoming service requests."; - //optional support - - key idx; - leaf idx { - type string; - } - min-elements 1; - uses ipEndPoint; - } - - leaf apiPrefix { - description "Optional path segment(s) used to construct the {apiRoot} - variable of the different API URIs."; - //optional support - type string; - } - - list defaultNotificationSubscriptions { - description "Notification endpoints for different notification types."; - key notificationType; - //optional support - min-elements 1; - uses types3gpp:DefaultNotificationSubscription; - } - - list allowedPLMNs { - description "PLMNs allowed to access the service instance. - The absence of this attribute indicates that any PLMN is allowed to - access the service instance."; - - min-elements 1; - //optional support - key "mcc mnc"; - uses types3gpp:PLMNId; - } - list allowedSnpns { - description "PLMNs allowed to access the service instance. - The absence of this attribute indicates that any PLMN is allowed to - access the service instance."; - - min-elements 1; - //optional support - key "mcc mnc"; - uses types3gpp:PLMNId; - } - leaf-list allowedNfTypes { - description "SNPNs allowed to access the NF instance"; - min-elements 1; - //optional support - type types3gpp:NfType; - } - - leaf-list allowedNfDomains { - description "Pattern representing the NF domain names allowed to - access the service instance."; - //optional support - min-elements 1; - type string; - } - - list allowedNSSAIs { - description "S-NSSAI of the allowed slices to access the service - instance. The absence of this attribute indicates that any slice - is allowed to access the service instance."; - min-elements 1; - //optional support - key "sd sst"; - uses types5g3gpp:SNssai; - } - - list allowedScopesRuleSet { - description "It represents map of rules specifying scopes allowed or - denied for NF-Consumers. This attribute may be present when the - NF-Producer and the NRF support Allowed-ruleset feature as specified - in clause 6.1.9 in TS 29.510."; - //optional support - key idx; - leaf idx { type uint32; } - uses types5g3gpp:RuleSetGrp; - } - - leaf-list allowedOperationsPerNfType { - description "It indicates the allowed operations on resources for - each type of NF; the key of the map is the NF Type, and the value - is an array of scopes"; - //optional support - type string; - min-elements 1; - } - leaf-list allowedOperationsPerNfInstance { - description "It indicates the allowed operations on resources for - a given NF Instance; the key of the map is the NF Instance Id, and - the value is an array of scopes"; - //optional support - type string; - min-elements 1; - } - leaf allowedOperationsPerNfInstanceOverrides { - type boolean; - default false; - //optional support - description "When it is present and set to true, indicates that - the scopes defined in attribute allowedOperationsPerNfInstance - for a given NF Instance ID take precedence over the scopes defined - in attribute allowedOperationsPerNfType for the corresponding - NF type of the NF Instance associated to such NF Instance ID.."; - } - list sNssais { - description "S-NSSAIs of the Network Function. If not - provided, the NF can serve any S-NSSAI. When present - this IE represents the list of S-NSSAIs supported in - all the PLMNs listed in the plmnList IE."; - //optional support - min-elements 1; - key "sst sd"; - uses types5g3gpp:SNssai; - } - - leaf-list oauth2Required { - type boolean; - max-elements 1; - //optional support - description "It indicates whether the NF Service Instance requires - Oauth2-based authorization"; - } - - leaf-list sharedServiceDataId { - type string; - max-elements 1; - //optional support - description "String uniquely identifying SharedServiceData. The format - of the sharedServiceDataId shall be a Universally Unique Identifier - (UUID) version 4, as described in IETF RFC 4122 [44]. The hexadecimal - letters should be formatted as lower-case characters by the sender, - and they shall be handled as case-insensitive by the receiver."; - } - - leaf priority { - description "Priority (relative to other services of the same type) - in the range of 0-65535, to be used for NF Service selection; lower - values indicate a higher priority."; - //optional support - type uint16 { range "0..65535"; } - } - - leaf capacity { - description "Static capacity information in the range of 0-65535, - expressed as a weight relative to other services of the same type."; - //optional support - type uint16; - } - - - leaf recoveryTime { - description "Timestamp when the NF was (re)started."; - //optional support - type yang:date-and-time; - } - - leaf vendorId { - description "Vendor ID of the NF instance"; - //optional support - type string; - } - list callbackUriPrefixList { - description "It indicates the optional path segment(s) used to construct - the prefix of the Callback URIs during the reselection of an NF - service consumer."; - //optional support - reference "3GPP TS 29.501 [23], clause 4.4.3."; - key callbackUriPrefix; - min-elements 1; - uses CallbackUriPrefixItemGrp; - } - leaf supportedFeatures { - description "It is a string, which indicates the features of the service - corresponding to the subscribed default notification, which are supported - by the NF (Service) instance acting as NF service consumer."; - reference "3GPP TS 29.571 table 5.2.2-3"; - //optional - type types3gpp:SupportedFeatures; - config false; - } - list supportedVendorSpecificFeatures { - description "It indicates a map of Vendor-Specific features, where the - key of the map is the IANA-assigned SMI Network Management Private - Enterprise Codes and the value of each entry of the map shall be - a list (array) of VendorSpecificFeature objects as defined - in the clause 5.3.247."; - key "enterpriseCode"; - - leaf enterpriseCode { - type uint32; - description "IANA-assigned SMI Network Management Private - Enterprise Code"; - } - - list vendorSpecificFeature { - key "featureName"; - config false; - description "VendorSpecificFeature objects as defined - in the clause 5.3.247."; - uses types5g3gpp:VendorSpecificFeatureGrp; - } - } - leaf load { - description "Latest known load information of the NF, percentage."; - type types3gpp:Load; - config false; - } - leaf loadTimeStamp { - description "Timestamp of the reported load information."; - type yang:date-and-time; - config false; - } - leaf-list nfServiceSetIdList { - description "This attribute represents a list of NF Service Set ID. - At most one NF Service Set ID shall be indicated per PLMN-ID or - SNPN of the NF."; - type string; - min-elements 1; - } - list perPlmnSnssaiList { - description "It includes the S-NSSAIs supported by the Network Function - for each PLMN supported by the Network Function. When present, it - shall override sNssais IE."; - key idx; - leaf idx { type uint32; } - uses types5g3gpp:PlmnSnssai; - } - - leaf canaryRelease { - description "This attribute indicates whether an NF instance whose - nfStatus is set to REGISTERED is in Canary Release condition, i.e. - it should only be selected by NF Service Consumers under the - conditions indicated by the selectionConditions attribute. - True: the NF is under Canary Release condition, even if the - nfStatus is set to REGISTERED. - False: the NF instance indicates its Canary Release condition - via the nfStatus attribute."; - //optional support - type boolean; - default false; - } - - leaf exclusiveCanaryReleaseSelection { - description "This attribute indicates whether an NF Service Consumer - should only select an NF Service Producer in Canary Release condition. - True: the consumer shall only select producers in Canary Release - condition. - False: the consumer may select producers not in Canary Release - condition."; - //optional support - type boolean; - default false; - } - - leaf shutdownTime { - description "This attribute may be present if the nfStatus is set to - UNDISCOVERABLE due to scheduled shutdown. When present, it shall - indicate the timestamp when the NF Instance is planned to be - shut down."; - //optional support - type yang:date-and-time; - } - - leaf canaryPrecedenceOverPreferred { - description "This attribute indicates whether the NRF shall prioritize - the NF Service Producer in Canary Release condition over the - preferences (preferred-xxx, ext-preferred-xxx) present in NF - discovery requests. - True: NRF shall prioritize NF Service Producers in Canary Release - condition at NF discovery requests. - False: NRF shall prioritize the NF Service Producers according to - preferred-xxx and/or ext-preferred-xxx."; - //optional support - type boolean; - default false; - } - - leaf perPlmnOauth2ReqList { - description "This attribute includes the Oauth2-based authorization - requirement supported by the NF Service Instance per PLMN of the - NF Service Consumer. This attribute may be included when the - Oauth2.0 authorization requirement supported by the NF Service - Instance for different PLMN is different. When the requester - PLMN Id is available in perPlmnOauth2ReqList IE, this IE shall - override the oauth2Required IE. If the requester PLMN ID is not - present in perPlmnOauth2ReqList IE, then the value of - oauth2Required IE shall be applicable if available."; - //optional support - type boolean; - default false; - } - } - - - list supportedVendorSpecificFeatures { - description "It indicates a map of Vendor-Specific features, where the - key of the map is the IANA-assigned SMI Network Management Private - Enterprise Codes and the value of each entry of the map shall be - a list (array) of VendorSpecificFeature objects as defined - in the clause 5.3.247."; - key "enterpriseCode"; - - leaf enterpriseCode { - type uint32; - description "IANA-assigned SMI Network Management Private Enterprise - Code"; - } - - list vendorSpecificFeature { - key "featureName"; - config false; - description "VendorSpecificFeature objects as defined - in the clause 5.3.247."; - uses types5g3gpp:VendorSpecificFeatureGrp; - } - } - - grouping CallbackUriPrefixItemGrp { - description "This <> represents Callback URI prefix value to - be used for specific notification types."; - reference "3GPP TS 29.510 clause 6.1.6.2.127"; - - leaf callbackUriPrefix { - description "It indicates the optional path segment(s) used to - construct the prefix of the Callback URIs during the reselection - of an NF service consumer."; - mandatory true; - type inet:uri; - reference "3GPP TS 29.501 clause 4.4.3"; - } - - leaf-list notificationTypes { - description "List of notification type values using the callback - URI prefix of the callbackUriPrefix."; - type string; - } - } - - grouping ipEndPoint { - choice address { - leaf ipv4Address { - type inet:ipv4-address; - } - - leaf ipv6Address { - type inet:ipv6-address; - } - - leaf ipv6Prefix { - type inet:ipv6-prefix; - } - } - - leaf transport { - type TransportProtocol; - } - - leaf port { - type uint16; - } - } - - typedef TransportProtocol { - type enumeration { - enum TCP; - enum STCP; - enum UDP; - } - } - - grouping NFServiceVersion { - leaf apiVersionInUri { - mandatory true; - type string; - } - - leaf apiFullVersion { - mandatory true; - type string; - } - - leaf expiry { - //optional to support - type yang:date-and-time; - } - } - - typedef ServiceName { - type enumeration { - enum NNRF_NFM; - enum NNRF_DISC; - enum NUDM_SDM; - enum NUDM_UECM; - enum NUDM_UEAU; - enum NUDM_EE; - enum NUDM_PP; - enum NAMF_COMM; - enum NAMF_EVTS; - enum NAMF_MT; - enum NAMF_LOC; - enum NSMF_PDUSESSION; - enum NSMF_EVENT-EXPOSURE; - enum NAUSF_AUTH; - enum NAUSF_SORPROTECTION; - enum NNEF_PFDMANAGEMENT; - enum NPCF_AM-POLICY-CONTROL; - enum NPCF_SMPOLICYCONTROL; - enum NPCF_POLICYAUTHORIZATION; - enum NPCF_BDTPOLICYCONTROL; - enum NPCF_EVENTEXPOSURE; - enum NPCF_UE_POLICY_CONTROL; - enum NSMSF_SMS; - enum NNSSF_NSSELECTION; - enum NNSSF_NSSAIAVAILABILITY; - enum NUDR_DR; - enum NLMF_LOC; - enum N5G_EIR_EIC; - enum NBSF_MANAGEMENT; - enum NCHF_SPENDINGLIMITCONTROL; - enum NCHF_CONVERGEDCHARGING; - enum NNWDAF_EVENTSSUBSCRIPTION; - enum NNWDAF_ANALYTICSINFO; - } - } - - typedef UriScheme { - type enumeration { - enum HTTP; - enum HTTPS; - } - } - - typedef NFServiceStatus { - type enumeration { - enum REGISTERED; - enum SUSPENDED; - enum UNDISCOVERABLE; - } - } - - grouping ChfServiceInfo { - leaf primaryChfServiceInstance { - description "Shall be present if the CHF service instance serves as a - secondary CHF instance of another primary CHF service instance."; - //conditional to support - type string; - } - - leaf secondaryChfServiceInstance { - description "Shall be present if the CHF service instance serves as a - primary CHF instance of another secondary CHF service instance."; - //conditional to support - type string; - } - } - grouping SNPNIdGrp { - description "This <> represents the information of a SNPN - identification"; - leaf mCC { - description "This is the Mobile Country Code (MCC) of the PLMN - identifier. See TS 23.003 [13] subclause 2.2 and 12.1"; - type string; - } - leaf mNC { - description "This is the Mobile Network Code (MNC) of the PLMN - identifier. See TS 23.003 [13] subclause 2.2 and 12.1."; - type string; - } - leaf nId { - description "Network Identity; Shall be present if PlmnIdNid - identifies an SNPN"; - type string; - } - } +module _3gpp-5gc-nrm-nfservice { + yang-version 1.1; + + namespace urn:3gpp:sa5:_3gpp-5gc-nrm-nfservice; + prefix nfs3gpp; + + import _3gpp-common-yang-types { prefix types3gpp; } + import ietf-yang-types { prefix yang; } + import ietf-inet-types { prefix inet; } + import _3gpp-5g-common-yang-types { prefix types5g3gpp; } + + + organization "3gpp SA5"; + contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; + description "NF service dataType. + Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + TTA, TTC). All rights reserved."; + reference "3GPP TS 29.510"; + + revision 2025-03-25 { reference CR-; } + revision 2025-01-25 { reference CR-1442; } + revision 2023-09-18 { reference CR-1043 ; } + revision 2021-01-25 { reference CR-0454 ; } + revision 2020-11-05 { reference CR-0412 ; } + revision 2019-06-17 { reference "initial revision"; } + + grouping NFServiceGrp { + description "This data type represents the NF Service + defined in TS 29.510 [23]."; + leaf serviceInstanceID { + description + "Unique ID of the service instance within a given NF Instance."; + mandatory true; + type string; + } + + leaf serviceName { + description "Name of the service instance (e.g. 'nudm-sdm')."; + mandatory true; + type ServiceName; + config false; + } + + list versions { + description "API versions supported by the NF Service and if available, + the corresponding retirement date of the NF Service."; + min-elements 1; + key "apiVersionInUri apiFullVersion"; + config false; + uses NFServiceVersion; + } + + leaf scheme { + description "URI scheme (e.g. 'http', 'https')."; + mandatory true; + type UriScheme; + } + + leaf nfServiceStatus { + description "Status of the NF Service Instance."; + mandatory true; + type NFServiceStatus; + } + + leaf fqdn { + description "FQDN of the NF Service Instance."; + //optional support + type inet:domain-name; + } + + leaf interPlmnFqdn { + description "If the NF service needs to be discoverable by other NFs in a + different PLMN, then an FQDN that is used for inter PLMN routing."; + //optional support + type inet:domain-name; + } + + list ipEndPoints { + description "IP address(es) and port information of the Network Function + (including IPv4 and/or IPv6 address)where the service is listening + for incoming service requests."; + //optional support + + key idx; + leaf idx { + type string; + } + min-elements 1; + uses ipEndPoint; + } + + leaf apiPrefix { + description "Optional path segment(s) used to construct the {apiRoot} + variable of the different API URIs."; + //optional support + type string; + } + + list defaultNotificationSubscriptions { + description "Notification endpoints for different notification types."; + key notificationType; + //optional support + min-elements 1; + uses types3gpp:DefaultNotificationSubscription; + } + + list allowedPLMNs { + description "PLMNs allowed to access the service instance. + The absence of this attribute indicates that any PLMN is allowed to + access the service instance."; + + min-elements 1; + //optional support + key "mcc mnc"; + uses types3gpp:PLMNId; + } + list allowedSnpns { + description "PLMNs allowed to access the service instance. + The absence of this attribute indicates that any PLMN is allowed to + access the service instance."; + + min-elements 1; + //optional support + key "mcc mnc"; + uses types3gpp:PLMNId; + } + leaf-list allowedNfTypes { + description "SNPNs allowed to access the NF instance"; + min-elements 1; + //optional support + type types3gpp:NfType; + } + + leaf-list allowedNfDomains { + description "Pattern representing the NF domain names allowed to + access the service instance."; + //optional support + min-elements 1; + type string; + } + + list allowedNSSAIs { + description "S-NSSAI of the allowed slices to access the service + instance. The absence of this attribute indicates that any slice + is allowed to access the service instance."; + min-elements 1; + //optional support + key "sd sst"; + uses types5g3gpp:SNssai; + } + + list allowedScopesRuleSet { + description "It represents map of rules specifying scopes allowed or + denied for NF-Consumers. This attribute may be present when the + NF-Producer and the NRF support Allowed-ruleset feature as specified + in clause 6.1.9 in TS 29.510."; + //optional support + key idx; + leaf idx { type uint32; } + uses types5g3gpp:RuleSetGrp; + } + + leaf-list allowedOperationsPerNfType { + description "It indicates the allowed operations on resources for + each type of NF; the key of the map is the NF Type, and the value + is an array of scopes"; + //optional support + type string; + min-elements 1; + } + leaf-list allowedOperationsPerNfInstance { + description "It indicates the allowed operations on resources for + a given NF Instance; the key of the map is the NF Instance Id, and + the value is an array of scopes"; + //optional support + type string; + min-elements 1; + } + leaf allowedOperationsPerNfInstanceOverrides { + type boolean; + default false; + //optional support + description "When it is present and set to true, indicates that + the scopes defined in attribute allowedOperationsPerNfInstance + for a given NF Instance ID take precedence over the scopes defined + in attribute allowedOperationsPerNfType for the corresponding + NF type of the NF Instance associated to such NF Instance ID.."; + } + list sNssais { + description "S-NSSAIs of the Network Function. If not + provided, the NF can serve any S-NSSAI. When present + this IE represents the list of S-NSSAIs supported in + all the PLMNs listed in the plmnList IE."; + //optional support + min-elements 1; + key "sst sd"; + uses types5g3gpp:SNssai; + } + + leaf oauth2Required { + type boolean; + //optional support + description "It indicates whether the NF Service Instance requires + Oauth2-based authorization."; + } + + leaf sharedServiceDataId { + type string; + //optional support + description "String uniquely identifying SharedServiceData. The format + of the sharedServiceDataId shall be a Universally Unique Identifier + (UUID) version 4, as described in IETF RFC 4122 [44]. The hexadecimal + letters should be formatted as lower-case characters by the sender, + and they shall be handled as case-insensitive by the receiver."; + } + + leaf priority { + description "Priority (relative to other services of the same type) + in the range of 0-65535, to be used for NF Service selection; lower + values indicate a higher priority."; + //optional support + type uint16 { range "0..65535"; } + } + + leaf capacity { + description "Static capacity information in the range of 0-65535, + expressed as a weight relative to other services of the same type."; + //optional support + type uint16; + } + + + leaf recoveryTime { + description "Timestamp when the NF was (re)started."; + //optional support + type yang:date-and-time; + } + + leaf vendorId { + description "Vendor ID of the NF instance"; + //optional support + type string; + } + list callbackUriPrefixList { + description "It indicates the optional path segment(s) used to construct + the prefix of the Callback URIs during the reselection of an NF + service consumer."; + //optional support + reference "3GPP TS 29.501 [23], clause 4.4.3."; + key callbackUriPrefix; + min-elements 1; + uses CallbackUriPrefixItemGrp; + } + leaf supportedFeatures { + description "It is a string, which indicates the features of the service + corresponding to the subscribed default notification, which are supported + by the NF (Service) instance acting as NF service consumer."; + reference "3GPP TS 29.571 table 5.2.2-3"; + //optional + type types3gpp:SupportedFeatures; + } + uses types5g3gpp:SupportedVendorSpecificFeaturesGrp; + leaf load { + description "Latest known load information of the NF, percentage."; + type types3gpp:Load; + config false; + } + leaf loadTimeStamp { + description "Timestamp of the reported load information."; + type yang:date-and-time; + config false; + } + leaf-list nfServiceSetIdList { + description "This attribute represents a list of NF Service Set ID. + At most one NF Service Set ID shall be indicated per PLMN-ID or + SNPN of the NF."; + type string; + min-elements 1; + } + list perPlmnSnssaiList { + description "It includes the S-NSSAIs supported by the Network Function + for each PLMN supported by the Network Function. When present, it + shall override sNssais IE."; + key idx; + leaf idx { type uint32; } + uses PlmnSnssai; + } + + leaf canaryRelease { + description "This attribute indicates whether an NF instance whose + nfStatus is set to REGISTERED is in Canary Release condition, i.e. + it should only be selected by NF Service Consumers under the + conditions indicated by the selectionConditions attribute. + True: the NF is under Canary Release condition, even if the + nfStatus is set to REGISTERED. + False: the NF instance indicates its Canary Release condition + via the nfStatus attribute."; + //optional support + type boolean; + default false; + } + + leaf exclusiveCanaryReleaseSelection { + description "This attribute indicates whether an NF Service Consumer + should only select an NF Service Producer in Canary Release condition. + True: the consumer shall only select producers in Canary Release + condition. + False: the consumer may select producers not in Canary Release + condition."; + //optional support + type boolean; + default false; + } + + leaf shutdownTime { + description "This attribute may be present if the nfStatus is set to + UNDISCOVERABLE due to scheduled shutdown. When present, it shall + indicate the timestamp when the NF Instance is planned to be + shut down."; + //optional support + type yang:date-and-time; + config false; + } + + leaf canaryPrecedenceOverPreferred { + description "This attribute indicates whether the NRF shall prioritize + the NF Service Producer in Canary Release condition over the + preferences (preferred-xxx, ext-preferred-xxx) present in NF + discovery requests. + True: NRF shall prioritize NF Service Producers in Canary Release + condition at NF discovery requests. + False: NRF shall prioritize the NF Service Producers according to + preferred-xxx and/or ext-preferred-xxx."; + //optional support + type boolean; + default false; + } + + list perPlmnOauth2ReqList { + description "This attribute includes the Oauth2-based authorization + requirement supported by the NF Service Instance per PLMN of the + NF Service Consumer. This attribute may be included when the + Oauth2.0 authorization requirement supported by the NF Service + Instance for different PLMN is different. When the requester + PLMN Id is available in perPlmnOauth2ReqList IE, this IE shall + override the oauth2Required IE. If the requester PLMN ID is not + present in perPlmnOauth2ReqList IE, then the value of + oauth2Required IE shall be applicable if available."; + //optional support + key idx; + leaf idx { type uint32; } + max-elements 1; + uses PlmnOauth2Grp; + } + + list selectionConditions { + description "This attribute includes the conditions under which an NF + Instance with an NFStatus value set to CANARY_RELEASE, or with a + canaryRelease attribute set to true, shall be selected by an NF + Service Consumer."; + //optional support + key idx; + leaf idx { type uint32; } + max-elements 1; + uses SelectionConditionsGrp; + } + } + + + + grouping CallbackUriPrefixItemGrp { + description "This <> represents Callback URI prefix value to + be used for specific notification types."; + reference "3GPP TS 29.510 clause 6.1.6.2.127"; + + leaf callbackUriPrefix { + description "It indicates the optional path segment(s) used to + construct the prefix of the Callback URIs during the reselection + of an NF service consumer."; + mandatory true; + type inet:uri; + reference "3GPP TS 29.501 clause 4.4.3"; + } + + leaf-list notificationTypes { + description "List of notification type values using the callback + URI prefix of the callbackUriPrefix."; + type string; + } + } + + grouping PlmnOauth2Grp { + description "This <> represents the per PLMN Oauth2.0 + indication."; + reference "3GPP TS 29.510 clause 6.1.6.2.102"; + + list oauth2RequiredPlmnIdList { + description "List of PLMN IDs for which Oauth2.0 authorization is + required."; + //optional support + min-elements 1; + key "mcc mnc"; + uses types3gpp:PLMNId; + } + + list oauth2NotRequiredPlmnIdList { + description "List of PLMN IDs for which Oauth2.0 authorization is + not required."; + //optional support + min-elements 1; + key "mcc mnc"; + uses types3gpp:PLMNId; + } + } + + grouping PlmnSnssai { + description "This data type represents the list of S-NSSAIs supported + per PLMN."; + list plmnId { + description "PLMN ID for which list of supported S-NSSAI(s) + is provided."; + min-elements 1; + max-elements 1; + key "mcc mnc"; + uses types3gpp:PLMNId; + } + list sNssaiList { + description "The specific list of S-NSSAIs supported + by the given PLMN."; + min-elements 1; + max-elements 1; + key "sst sd"; + uses types5g3gpp:SNssai; + } + leaf nid { + description "Network Identity; Shall be present if PlmnIdNid + identifies an SNPN."; + reference "see clauses 5.30.2.3, 5.30.2.9, 6.3.4, + and 6.3.8 in 3GPP TS 23.501"; + type string; + } + } + + grouping ConditionItemGrp { + description "This <> represents a single condition item that + shall be evaluated to determine whether a discovered NF (Service) + Instance shall be selected."; + reference "3GPP TS 29.510 clause 6.1.6.2.124"; + + leaf-list consumerNfTypes { + description "It represents the NF types of the consumers for which + the conditions included in this ConditionItem apply. If this + attribute is absent, the conditions are applicable to all NF + consumer types."; + min-elements 1; + type types3gpp:NfType; + } + leaf serviceFeature { + description "It represents a feature number of that NF Service + Instance, under CANARY_RELEASE status."; + type uint32; + } + leaf vsServiceFeature { + description "It represents a Vendor-Specific feature number of that + NF Service Instance, under CANARY_RELEASE status."; + type uint32; + } + list supiRangeList { + description "It represents a set of SUPIs for which the NF (Service) + instance under CANARY_RELEASE status shall be selected."; + key idx; + leaf idx { type uint32; } + min-elements 1; + uses types5g3gpp:SupiRangeGrp; + } + list gpsiRangeList { + description "It represents a set of GPSIs for which the NF (Service) + instance under CANARY_RELEASE status shall be selected."; + key idx; + leaf idx { type uint32; } + min-elements 1; + uses types5g3gpp:IdentityRangeGrp; + } + list impuRangeList { + description "It represents a set of IMS Public Identities for which + the NF (Service) instance under CANARY_RELEASE status shall be + selected."; + key idx; + leaf idx { type uint32; } + min-elements 1; + uses types5g3gpp:IdentityRangeGrp; + } + list impiRangeList { + description "It represents a set of IMS Private Identities for which + the NF (Service) instance under CANARY_RELEASE status shall be + selected."; + key idx; + leaf idx { type uint32; } + min-elements 1; + uses types5g3gpp:IdentityRangeGrp; + } + leaf-list peiList { + description "It represents a set of PEIs of the UEs for which the + NF (Service) instance under CANARY_RELEASE status shall be + selected."; + min-elements 1; + type string; + } + list taiRangeList { + description "It represents a set of TAIs where the NF (Service) + instance under CANARY_RELEASE status shall be selected for a + certain UE."; + key idx; + leaf idx { type uint32; } + min-elements 1; + uses types5g3gpp:TaiRangeGrp; + } + leaf-list dnnList { + description "It represents a set of DNNs where the NF (Service) + instance under CANARY_RELEASE status shall be selected."; + min-elements 1; + type string; + } + } + + grouping SelectionConditionsGrp { + description "This <> represents the list of conditions that + shall be selected by an NF Service Consumer."; + reference "3GPP TS 29.510 clause 6.1.6.2.123"; + + list conditionItem { + key "id"; + description "It represent a single condition item that shall be + evaluated to determine whether a discovered NF (Service) Instance + shall be selected."; + leaf id { type string; } + uses ConditionItemGrp; + } + + list conditionGroup { + description "It represents a group of conditions that shall be + evaluated."; + key idx; + leaf idx { type uint32; } + max-elements 1; + // Note: ConditionGroup references SelectionConditions creating a + // circular dependency. Inlined one level to avoid it. + choice LogicalOperator { + case and { + list and { + description "It represents a list of conditions where the + overall evaluation is true only if all the conditions in + the list are evaluated as true."; + key idx; + leaf idx { type uint32; } + list conditionItem { + key "id"; + description "Condition item to be evaluated."; + leaf id { type string; } + uses ConditionItemGrp; + } + } + } + case or { + list or { + description "It represents a list of conditions where the + overall evaluation is true if at least one of the conditions + in the list is evaluated as true."; + key idx; + leaf idx { type uint32; } + list conditionItem { + key "id"; + description "Condition item to be evaluated."; + leaf id { type string; } + uses ConditionItemGrp; + } + } + } + } + } + } + + grouping ipEndPoint { + choice address { + leaf ipv4Address { + type inet:ipv4-address; + } + + leaf ipv6Address { + type inet:ipv6-address; + } + + leaf ipv6Prefix { + type inet:ipv6-prefix; + } + } + + leaf transport { + type TransportProtocol; + } + + leaf port { + type uint16; + } + } + + typedef TransportProtocol { + type enumeration { + enum TCP; + enum STCP; + enum UDP; + } + } + + grouping NFServiceVersion { + leaf apiVersionInUri { + mandatory true; + type string; + } + + leaf apiFullVersion { + mandatory true; + type string; + } + + leaf expiry { + //optional to support + type yang:date-and-time; + } + } + + typedef ServiceName { + type enumeration { + enum NNRF_NFM; + enum NNRF_DISC; + enum NUDM_SDM; + enum NUDM_UECM; + enum NUDM_UEAU; + enum NUDM_EE; + enum NUDM_PP; + enum NAMF_COMM; + enum NAMF_EVTS; + enum NAMF_MT; + enum NAMF_LOC; + enum NSMF_PDUSESSION; + enum NSMF_EVENT-EXPOSURE; + enum NAUSF_AUTH; + enum NAUSF_SORPROTECTION; + enum NNEF_PFDMANAGEMENT; + enum NPCF_AM-POLICY-CONTROL; + enum NPCF_SMPOLICYCONTROL; + enum NPCF_POLICYAUTHORIZATION; + enum NPCF_BDTPOLICYCONTROL; + enum NPCF_EVENTEXPOSURE; + enum NPCF_UE_POLICY_CONTROL; + enum NSMSF_SMS; + enum NNSSF_NSSELECTION; + enum NNSSF_NSSAIAVAILABILITY; + enum NUDR_DR; + enum NLMF_LOC; + enum N5G_EIR_EIC; + enum NBSF_MANAGEMENT; + enum NCHF_SPENDINGLIMITCONTROL; + enum NCHF_CONVERGEDCHARGING; + enum NNWDAF_EVENTSSUBSCRIPTION; + enum NNWDAF_ANALYTICSINFO; + } + } + + typedef UriScheme { + type enumeration { + enum HTTP; + enum HTTPS; + } + } + + typedef NFServiceStatus { + type enumeration { + enum REGISTERED; + enum SUSPENDED; + enum UNDISCOVERABLE; + } + } + + grouping ChfServiceInfo { + leaf primaryChfServiceInstance { + description "Shall be present if the CHF service instance serves as a + secondary CHF instance of another primary CHF service instance."; + //conditional to support + type string; + } + + leaf secondaryChfServiceInstance { + description "Shall be present if the CHF service instance serves as a + primary CHF instance of another secondary CHF service instance."; + //conditional to support + type string; + } + } + grouping SNPNIdGrp { + description "This <> represents the information of a SNPN + identification"; + leaf mCC { + description "This is the Mobile Country Code (MCC) of the PLMN + identifier. See TS 23.003 [13] subclause 2.2 and 12.1"; + type string; + } + leaf mNC { + description "This is the Mobile Network Code (MNC) of the PLMN + identifier. See TS 23.003 [13] subclause 2.2 and 12.1."; + type string; + } + leaf nId { + description "Network Identity; Shall be present if PlmnIdNid + identifies an SNPN"; + type string; + } + } } \ No newline at end of file diff --git a/yang-models/_3gpp-5gc-nrm-nfservice.yang.bak b/yang-models/_3gpp-5gc-nrm-nfservice.yang.bak new file mode 100755 index 00000000..ffdff0a0 --- /dev/null +++ b/yang-models/_3gpp-5gc-nrm-nfservice.yang.bak @@ -0,0 +1,774 @@ +module _3gpp-5gc-nrm-nfservice { + yang-version 1.1; + + namespace urn:3gpp:sa5:_3gpp-5gc-nrm-nfservice; + prefix nfs3gpp; + + import _3gpp-common-yang-types { prefix types3gpp; } + import ietf-yang-types { prefix yang; } + import ietf-inet-types { prefix inet; } + import _3gpp-5g-common-yang-types { prefix types5g3gpp; } + + + organization "3gpp SA5"; + contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; + description "NF service dataType. + Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + TTA, TTC). All rights reserved."; + reference "3GPP TS 29.510"; + + revision 2025-03-25 { reference CR-; } + revision 2025-01-25 { reference CR-1442; } + revision 2023-09-18 { reference CR-1043 ; } + revision 2021-01-25 { reference CR-0454 ; } + revision 2020-11-05 { reference CR-0412 ; } + revision 2019-06-17 { reference "initial revision"; } + + grouping NFServiceGrp { + description "This data type represents the NF Service + defined in TS 29.510 [23]."; + leaf serviceInstanceID { + description + "Unique ID of the service instance within a given NF Instance."; + mandatory true; + type string; + config false; + } + + leaf serviceName { + description "Name of the service instance (e.g. 'nudm-sdm')."; + mandatory true; + type ServiceName; + config false; + } + + list versions { + description "API versions supported by the NF Service and if available, + the corresponding retirement date of the NF Service."; + min-elements 1; + key "apiVersionInUri apiFullVersion"; + config false; + uses NFServiceVersion; + } + + leaf scheme { + description "URI scheme (e.g. 'http', 'https')."; + mandatory true; + type UriScheme; + } + + leaf nfServiceStatus { + description "Status of the NF Service Instance."; + mandatory true; + type NFServiceStatus; + } + + leaf fqdn { + description "FQDN of the NF Service Instance."; + //optional support + type inet:domain-name; + } + + leaf interPlmnFqdn { + description "If the NF service needs to be discoverable by other NFs in a + different PLMN, then an FQDN that is used for inter PLMN routing."; + //optional support + type inet:domain-name; + } + + list ipEndPoints { + description "IP address(es) and port information of the Network Function + (including IPv4 and/or IPv6 address)where the service is listening + for incoming service requests."; + //optional support + + key idx; + leaf idx { + type string; + } + min-elements 1; + uses ipEndPoint; + } + + leaf apiPrefix { + description "Optional path segment(s) used to construct the {apiRoot} + variable of the different API URIs."; + //optional support + type string; + } + + list defaultNotificationSubscriptions { + description "Notification endpoints for different notification types."; + key notificationType; + //optional support + min-elements 1; + uses types3gpp:DefaultNotificationSubscription; + } + + list allowedPLMNs { + description "PLMNs allowed to access the service instance. + The absence of this attribute indicates that any PLMN is allowed to + access the service instance."; + + min-elements 1; + //optional support + key "mcc mnc"; + uses types3gpp:PLMNId; + } + list allowedSnpns { + description "PLMNs allowed to access the service instance. + The absence of this attribute indicates that any PLMN is allowed to + access the service instance."; + + min-elements 1; + //optional support + key "mcc mnc"; + uses types3gpp:PLMNId; + } + leaf-list allowedNfTypes { + description "SNPNs allowed to access the NF instance"; + min-elements 1; + //optional support + type types3gpp:NfType; + } + + leaf-list allowedNfDomains { + description "Pattern representing the NF domain names allowed to + access the service instance."; + //optional support + min-elements 1; + type string; + } + + list allowedNSSAIs { + description "S-NSSAI of the allowed slices to access the service + instance. The absence of this attribute indicates that any slice + is allowed to access the service instance."; + min-elements 1; + //optional support + key "sd sst"; + uses types5g3gpp:SNssai; + } + + list allowedScopesRuleSet { + description "It represents map of rules specifying scopes allowed or + denied for NF-Consumers. This attribute may be present when the + NF-Producer and the NRF support Allowed-ruleset feature as specified + in clause 6.1.9 in TS 29.510."; + //optional support + key idx; + leaf idx { type uint32; } + uses types5g3gpp:RuleSetGrp; + } + + leaf-list allowedOperationsPerNfType { + description "It indicates the allowed operations on resources for + each type of NF; the key of the map is the NF Type, and the value + is an array of scopes"; + //optional support + type string; + min-elements 1; + } + leaf-list allowedOperationsPerNfInstance { + description "It indicates the allowed operations on resources for + a given NF Instance; the key of the map is the NF Instance Id, and + the value is an array of scopes"; + //optional support + type string; + min-elements 1; + } + leaf allowedOperationsPerNfInstanceOverrides { + type boolean; + default false; + //optional support + description "When it is present and set to true, indicates that + the scopes defined in attribute allowedOperationsPerNfInstance + for a given NF Instance ID take precedence over the scopes defined + in attribute allowedOperationsPerNfType for the corresponding + NF type of the NF Instance associated to such NF Instance ID.."; + } + list sNssais { + description "S-NSSAIs of the Network Function. If not + provided, the NF can serve any S-NSSAI. When present + this IE represents the list of S-NSSAIs supported in + all the PLMNs listed in the plmnList IE."; + //optional support + min-elements 1; + key "sst sd"; + uses types5g3gpp:SNssai; + } + + leaf oauth2Required { + type boolean; + //optional support + description "It indicates whether the NF Service Instance requires + Oauth2-based authorization."; + } + + leaf sharedServiceDataId { + type string; + //optional support + description "String uniquely identifying SharedServiceData. The format + of the sharedServiceDataId shall be a Universally Unique Identifier + (UUID) version 4, as described in IETF RFC 4122 [44]. The hexadecimal + letters should be formatted as lower-case characters by the sender, + and they shall be handled as case-insensitive by the receiver."; + } + + leaf priority { + description "Priority (relative to other services of the same type) + in the range of 0-65535, to be used for NF Service selection; lower + values indicate a higher priority."; + //optional support + type uint16 { range "0..65535"; } + } + + leaf capacity { + description "Static capacity information in the range of 0-65535, + expressed as a weight relative to other services of the same type."; + //optional support + type uint16; + } + + + leaf recoveryTime { + description "Timestamp when the NF was (re)started."; + //optional support + type yang:date-and-time; + } + + leaf vendorId { + description "Vendor ID of the NF instance"; + //optional support + type string; + } + list callbackUriPrefixList { + description "It indicates the optional path segment(s) used to construct + the prefix of the Callback URIs during the reselection of an NF + service consumer."; + //optional support + reference "3GPP TS 29.501 [23], clause 4.4.3."; + key callbackUriPrefix; + min-elements 1; + uses CallbackUriPrefixItemGrp; + } + leaf supportedFeatures { + description "It is a string, which indicates the features of the service + corresponding to the subscribed default notification, which are supported + by the NF (Service) instance acting as NF service consumer."; + reference "3GPP TS 29.571 table 5.2.2-3"; + //optional + type types3gpp:SupportedFeatures; + } + list supportedVendorSpecificFeatures { + description "It indicates a map of Vendor-Specific features, where the + key of the map is the IANA-assigned SMI Network Management Private + Enterprise Codes and the value of each entry of the map shall be + a list (array) of VendorSpecificFeature objects as defined + in the clause 5.3.247."; + key "enterpriseCode"; + + leaf enterpriseCode { + type uint32; + description "IANA-assigned SMI Network Management Private + Enterprise Code"; + } + + list vendorSpecificFeature { + key "featureName"; + config false; + description "VendorSpecificFeature objects as defined + in the clause 5.3.247."; + uses types5g3gpp:VendorSpecificFeatureGrp; + } + } + leaf load { + description "Latest known load information of the NF, percentage."; + type types3gpp:Load; + config false; + } + leaf loadTimeStamp { + description "Timestamp of the reported load information."; + type yang:date-and-time; + config false; + } + leaf-list nfServiceSetIdList { + description "This attribute represents a list of NF Service Set ID. + At most one NF Service Set ID shall be indicated per PLMN-ID or + SNPN of the NF."; + type string; + min-elements 1; + } + list perPlmnSnssaiList { + description "It includes the S-NSSAIs supported by the Network Function + for each PLMN supported by the Network Function. When present, it + shall override sNssais IE."; + key idx; + leaf idx { type uint32; } + uses types5g3gpp:PlmnSnssai; + } + + leaf canaryRelease { + description "This attribute indicates whether an NF instance whose + nfStatus is set to REGISTERED is in Canary Release condition, i.e. + it should only be selected by NF Service Consumers under the + conditions indicated by the selectionConditions attribute. + True: the NF is under Canary Release condition, even if the + nfStatus is set to REGISTERED. + False: the NF instance indicates its Canary Release condition + via the nfStatus attribute."; + //optional support + type boolean; + default false; + } + + leaf exclusiveCanaryReleaseSelection { + description "This attribute indicates whether an NF Service Consumer + should only select an NF Service Producer in Canary Release condition. + True: the consumer shall only select producers in Canary Release + condition. + False: the consumer may select producers not in Canary Release + condition."; + //optional support + type boolean; + default false; + } + + leaf shutdownTime { + description "This attribute may be present if the nfStatus is set to + UNDISCOVERABLE due to scheduled shutdown. When present, it shall + indicate the timestamp when the NF Instance is planned to be + shut down."; + //optional support + type yang:date-and-time; + config false; + } + + leaf canaryPrecedenceOverPreferred { + description "This attribute indicates whether the NRF shall prioritize + the NF Service Producer in Canary Release condition over the + preferences (preferred-xxx, ext-preferred-xxx) present in NF + discovery requests. + True: NRF shall prioritize NF Service Producers in Canary Release + condition at NF discovery requests. + False: NRF shall prioritize the NF Service Producers according to + preferred-xxx and/or ext-preferred-xxx."; + //optional support + type boolean; + default false; + } + + list perPlmnOauth2ReqList { + description "This attribute includes the Oauth2-based authorization + requirement supported by the NF Service Instance per PLMN of the + NF Service Consumer. This attribute may be included when the + Oauth2.0 authorization requirement supported by the NF Service + Instance for different PLMN is different. When the requester + PLMN Id is available in perPlmnOauth2ReqList IE, this IE shall + override the oauth2Required IE. If the requester PLMN ID is not + present in perPlmnOauth2ReqList IE, then the value of + oauth2Required IE shall be applicable if available."; + //optional support + key idx; + leaf idx { type uint32; } + max-elements 1; + uses PlmnOauth2Grp; + } + + list selectionConditions { + description "This attribute includes the conditions under which an NF + Instance with an NFStatus value set to CANARY_RELEASE, or with a + canaryRelease attribute set to true, shall be selected by an NF + Service Consumer."; + //optional support + key idx; + leaf idx { type uint32; } + max-elements 1; + uses SelectionConditionsGrp; + } + } + + + list supportedVendorSpecificFeatures { + description "It indicates a map of Vendor-Specific features, where the + key of the map is the IANA-assigned SMI Network Management Private + Enterprise Codes and the value of each entry of the map shall be + a list (array) of VendorSpecificFeature objects as defined + in the clause 5.3.247."; + key "enterpriseCode"; + + leaf enterpriseCode { + type uint32; + description "IANA-assigned SMI Network Management Private Enterprise + Code"; + } + + list vendorSpecificFeature { + key "featureName"; + config false; + description "VendorSpecificFeature objects as defined + in the clause 5.3.247."; + uses types5g3gpp:VendorSpecificFeatureGrp; + } + } + + grouping CallbackUriPrefixItemGrp { + description "This <> represents Callback URI prefix value to + be used for specific notification types."; + reference "3GPP TS 29.510 clause 6.1.6.2.127"; + + leaf callbackUriPrefix { + description "It indicates the optional path segment(s) used to + construct the prefix of the Callback URIs during the reselection + of an NF service consumer."; + mandatory true; + type inet:uri; + reference "3GPP TS 29.501 clause 4.4.3"; + } + + leaf-list notificationTypes { + description "List of notification type values using the callback + URI prefix of the callbackUriPrefix."; + type string; + } + } + + grouping PlmnOauth2Grp { + description "This <> represents the per PLMN Oauth2.0 + indication."; + reference "3GPP TS 29.510 clause 6.1.6.2.102"; + + list oauth2RequiredPlmnIdList { + description "List of PLMN IDs for which Oauth2.0 authorization is + required."; + //optional support + min-elements 1; + key "mcc mnc"; + uses types3gpp:PLMNId; + } + + list oauth2NotRequiredPlmnIdList { + description "List of PLMN IDs for which Oauth2.0 authorization is + not required."; + min-elements 1; + key "mcc mnc"; + uses types3gpp:PLMNId; + } + } + + grouping SupiRangeGrp { + description "This <> represents a range of SUPIs."; + leaf start { + description "First value identifying the start of a SUPI range."; + type string { + pattern '^[0-9]+$'; + } + } + leaf end { + description "Last value identifying the end of a SUPI range."; + type string { + pattern '^[0-9]+$'; + } + } + leaf pattern { + description "Pattern representing the set of SUPIs belonging to + this range."; + type string; + } + } + + grouping IdentityRangeGrp { + description "This <> represents a range of identities."; + leaf start { + description "First value identifying the start of an identity range."; + type string { + pattern '^[0-9]+$'; + } + } + leaf end { + description "Last value identifying the end of an identity range."; + type string; + } + leaf pattern { + description "Pattern representing the set of identities belonging to + this range."; + type string; + } + } + + grouping ConditionItemGrp { + description "This <> represents a single condition item that + shall be evaluated to determine whether a discovered NF (Service) + Instance shall be selected."; + reference "3GPP TS 29.510 clause 6.1.6.2.124"; + + leaf-list consumerNfTypes { + description "It represents the NF types of the consumers for which + the conditions included in this ConditionItem apply. If this + attribute is absent, the conditions are applicable to all NF + consumer types."; + min-elements 1; + type types3gpp:NfType; + } + leaf serviceFeature { + description "It represents a feature number of that NF Service + Instance, under CANARY_RELEASE status."; + type uint32; + } + leaf vsServiceFeature { + description "It represents a Vendor-Specific feature number of that + NF Service Instance, under CANARY_RELEASE status."; + type uint32; + } + list supiRangeList { + description "It represents a set of SUPIs for which the NF (Service) + instance under CANARY_RELEASE status shall be selected."; + key idx; + leaf idx { type uint32; } + min-elements 1; + uses SupiRangeGrp; + } + list gpsiRangeList { + description "It represents a set of GPSIs for which the NF (Service) + instance under CANARY_RELEASE status shall be selected."; + key idx; + leaf idx { type uint32; } + min-elements 1; + uses IdentityRangeGrp; + } + list impuRangeList { + description "It represents a set of IMS Public Identities for which + the NF (Service) instance under CANARY_RELEASE status shall be + selected."; + key idx; + leaf idx { type uint32; } + min-elements 1; + uses IdentityRangeGrp; + } + list impiRangeList { + description "It represents a set of IMS Private Identities for which + the NF (Service) instance under CANARY_RELEASE status shall be + selected."; + key idx; + leaf idx { type uint32; } + min-elements 1; + uses IdentityRangeGrp; + } + leaf-list peiList { + description "It represents a set of PEIs of the UEs for which the + NF (Service) instance under CANARY_RELEASE status shall be + selected."; + min-elements 1; + type string; + } + list taiRangeList { + description "It represents a set of TAIs where the NF (Service) + instance under CANARY_RELEASE status shall be selected for a + certain UE."; + key idx; + leaf idx { type uint32; } + min-elements 1; + uses types5g3gpp:TaiRangeGrp; + } + leaf-list dnnList { + description "It represents a set of DNNs where the NF (Service) + instance under CANARY_RELEASE status shall be selected."; + min-elements 1; + type string; + } + } + + grouping SelectionConditionsGrp { + description "This <> represents the list of conditions that + shall be selected by an NF Service Consumer."; + reference "3GPP TS 29.510 clause 6.1.6.2.123"; + + list conditionItem { + key "id"; + description "It represent a single condition item that shall be + evaluated to determine whether a discovered NF (Service) Instance + shall be selected."; + leaf id { type string; } + uses ConditionItemGrp; + } + + list conditionGroup { + description "It represents a group of conditions that shall be + evaluated."; + key idx; + leaf idx { type uint32; } + max-elements 1; + // Note: ConditionGroup references SelectionConditions creating a + // circular dependency. Inlined one level to avoid it. + choice LogicalOperator { + case and { + list and { + description "It represents a list of conditions where the + overall evaluation is true only if all the conditions in + the list are evaluated as true."; + key idx; + leaf idx { type uint32; } + list conditionItem { + key "id"; + description "Condition item to be evaluated."; + leaf id { type string; } + uses ConditionItemGrp; + } + } + } + case or { + list or { + description "It represents a list of conditions where the + overall evaluation is true if at least one of the conditions + in the list is evaluated as true."; + key idx; + leaf idx { type uint32; } + list conditionItem { + key "id"; + description "Condition item to be evaluated."; + leaf id { type string; } + uses ConditionItemGrp; + } + } + } + } + } + } + + grouping ipEndPoint { + choice address { + leaf ipv4Address { + type inet:ipv4-address; + } + + leaf ipv6Address { + type inet:ipv6-address; + } + + leaf ipv6Prefix { + type inet:ipv6-prefix; + } + } + + leaf transport { + type TransportProtocol; + } + + leaf port { + type uint16; + } + } + + typedef TransportProtocol { + type enumeration { + enum TCP; + enum STCP; + enum UDP; + } + } + + grouping NFServiceVersion { + leaf apiVersionInUri { + mandatory true; + type string; + } + + leaf apiFullVersion { + mandatory true; + type string; + } + + leaf expiry { + //optional to support + type yang:date-and-time; + } + } + + typedef ServiceName { + type enumeration { + enum NNRF_NFM; + enum NNRF_DISC; + enum NUDM_SDM; + enum NUDM_UECM; + enum NUDM_UEAU; + enum NUDM_EE; + enum NUDM_PP; + enum NAMF_COMM; + enum NAMF_EVTS; + enum NAMF_MT; + enum NAMF_LOC; + enum NSMF_PDUSESSION; + enum NSMF_EVENT-EXPOSURE; + enum NAUSF_AUTH; + enum NAUSF_SORPROTECTION; + enum NNEF_PFDMANAGEMENT; + enum NPCF_AM-POLICY-CONTROL; + enum NPCF_SMPOLICYCONTROL; + enum NPCF_POLICYAUTHORIZATION; + enum NPCF_BDTPOLICYCONTROL; + enum NPCF_EVENTEXPOSURE; + enum NPCF_UE_POLICY_CONTROL; + enum NSMSF_SMS; + enum NNSSF_NSSELECTION; + enum NNSSF_NSSAIAVAILABILITY; + enum NUDR_DR; + enum NLMF_LOC; + enum N5G_EIR_EIC; + enum NBSF_MANAGEMENT; + enum NCHF_SPENDINGLIMITCONTROL; + enum NCHF_CONVERGEDCHARGING; + enum NNWDAF_EVENTSSUBSCRIPTION; + enum NNWDAF_ANALYTICSINFO; + } + } + + typedef UriScheme { + type enumeration { + enum HTTP; + enum HTTPS; + } + } + + typedef NFServiceStatus { + type enumeration { + enum REGISTERED; + enum SUSPENDED; + enum UNDISCOVERABLE; + } + } + + grouping ChfServiceInfo { + leaf primaryChfServiceInstance { + description "Shall be present if the CHF service instance serves as a + secondary CHF instance of another primary CHF service instance."; + //conditional to support + type string; + } + + leaf secondaryChfServiceInstance { + description "Shall be present if the CHF service instance serves as a + primary CHF instance of another secondary CHF service instance."; + //conditional to support + type string; + } + } + grouping SNPNIdGrp { + description "This <> represents the information of a SNPN + identification"; + leaf mCC { + description "This is the Mobile Country Code (MCC) of the PLMN + identifier. See TS 23.003 [13] subclause 2.2 and 12.1"; + type string; + } + leaf mNC { + description "This is the Mobile Network Code (MNC) of the PLMN + identifier. See TS 23.003 [13] subclause 2.2 and 12.1."; + type string; + } + leaf nId { + description "Network Identity; Shall be present if PlmnIdNid + identifies an SNPN"; + type string; + } + } +} \ No newline at end of file diff --git a/yang-models/_3gpp-5gc-nrm-nrffunction.yang b/yang-models/_3gpp-5gc-nrm-nrffunction.yang index 0355794c..c1a77c9c 100755 --- a/yang-models/_3gpp-5gc-nrm-nrffunction.yang +++ b/yang-models/_3gpp-5gc-nrm-nrffunction.yang @@ -28,10 +28,11 @@ module _3gpp-5gc-nrm-nrffunction { contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; description "This IOC represents the NRF function in 5GC. For more information about the NRF, see 3GPP TS 23.501 [2]. - Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 28.541"; + revision 2026-03-25 { reference CR- ; } revision 2025-11-01 { reference CR-1640 ; } revision 2025-07-25 { reference CR-1558 ; } revision 2025-01-25 { reference CR-1442 ; } @@ -78,7 +79,7 @@ module _3gpp-5gc-nrm-nrffunction { the CHF instance. If not provided, the CHF can serve any SUPI."; key "start end pattern"; min-elements 1; - uses mnfp3gpp:SupiRangeGrp; + uses types5g3gpp:SupiRangeGrp; } list gpsiRangeList { @@ -87,7 +88,7 @@ module _3gpp-5gc-nrm-nrffunction { key idx; leaf idx { type uint32; } min-elements 1; - uses mnfp3gpp:IdentityRange; + uses types5g3gpp:IdentityRangeGrp; } list plmnRangeList { @@ -212,7 +213,7 @@ module _3gpp-5gc-nrm-nrffunction { description "Unique identifier for the IMSI range."; type string; } - uses mnfp3gpp:IdentityRange; + uses types5g3gpp:IdentityRangeGrp; } list imsPublicIdentityRanges{ description "This attribute defines the list of ranges of MSISDNs whose @@ -223,7 +224,7 @@ module _3gpp-5gc-nrm-nrffunction { description "Unique identifier for the IMSI range."; type string; } - uses mnfp3gpp:IdentityRange; + uses types5g3gpp:IdentityRangeGrp; } list msisdnRanges{ description "This attribute defines the list of ranges of IMS Public @@ -234,7 +235,7 @@ module _3gpp-5gc-nrm-nrffunction { description "Unique identifier for the IMSI range."; type string; } - uses mnfp3gpp:IdentityRange; + uses types5g3gpp:IdentityRangeGrp; } list externalGroupIdentifiersRanges{ description "This attribute defines the list of ranges of external @@ -246,7 +247,7 @@ module _3gpp-5gc-nrm-nrffunction { description "Unique identifier for the IMSI range."; type string; } - uses mnfp3gpp:IdentityRange; + uses types5g3gpp:IdentityRangeGrp; } list hssDiameterAddress{ description "This attribute defines the Diameter Address of the HSS "; diff --git a/yang-models/_3gpp-5gc-nrm-pcffunction.yang b/yang-models/_3gpp-5gc-nrm-pcffunction.yang index a9ab6b43..dbaef0a0 100755 --- a/yang-models/_3gpp-5gc-nrm-pcffunction.yang +++ b/yang-models/_3gpp-5gc-nrm-pcffunction.yang @@ -16,10 +16,11 @@ module _3gpp-5gc-nrm-pcffunction { contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; description "This IOC represents the PCF function in 5GC. For more information about the PCF, see 3GPP TS 23.501. - Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 28.541"; + revision 2026-03-25 { reference CR- ; } revision 2025-07-25 { reference CR-1558 ; } revision 2024-05-24 { reference CR-1273 ; } revision 2023-09-18 { reference CR-1043 ; } @@ -116,7 +117,7 @@ module _3gpp-5gc-nrm-pcffunction { key idx; leaf idx { type uint32; } min-elements 1; - uses mnfp3gpp:SupiRangeGrp; + uses types5g3gpp:SupiRangeGrp; } leaf rxDiamHost { diff --git a/yang-models/_3gpp-5gc-nrm-udmfunction.yang b/yang-models/_3gpp-5gc-nrm-udmfunction.yang index 6fc1e879..293482eb 100755 --- a/yang-models/_3gpp-5gc-nrm-udmfunction.yang +++ b/yang-models/_3gpp-5gc-nrm-udmfunction.yang @@ -16,10 +16,11 @@ module _3gpp-5gc-nrm-udmfunction { contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; description "This IOC represents the UDM function in 5GC. For more information about the UDM, see 3GPP TS 23.501. - Copyright 2024, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 28.541"; + revision 2026-03-25 { reference CR- ; } revision 2025-07-25 { reference CR-1558 ; } revision 2024-04-04 { reference CR-1139; } revision 2023-09-18 { reference CR-1043 ; } @@ -84,25 +85,28 @@ module _3gpp-5gc-nrm-udmfunction { list supiRanges { description "List of ranges of SUPI's whose profile data is available in the UDM instance."; - key "start end pattern"; + key idx; + leaf idx { type uint32; } min-elements 1; - uses mnfp3gpp:SupiRangeGrp; + uses types5g3gpp:SupiRangeGrp; } list gpsiRanges { description "List of ranges of GPSIs whose profile data is available in the UDM instance."; - key "start end pattern"; + key idx; + leaf idx { type uint32; } min-elements 1; - uses mnfp3gpp:IdentityRange; + uses types5g3gpp:IdentityRangeGrp; } list externalGroupIdentifiersRanges { description "List of ranges of external groups whose profile data is available in the UDM instance."; - key "start end pattern"; + key idx; + leaf idx { type uint32; } min-elements 1; - uses mnfp3gpp:IdentityRange; + uses types5g3gpp:IdentityRangeGrp; } leaf-list routingIndicators { diff --git a/yang-models/_3gpp-5gc-nrm-udrfunction.yang b/yang-models/_3gpp-5gc-nrm-udrfunction.yang index 5f9ff102..3454151e 100755 --- a/yang-models/_3gpp-5gc-nrm-udrfunction.yang +++ b/yang-models/_3gpp-5gc-nrm-udrfunction.yang @@ -16,10 +16,11 @@ module _3gpp-5gc-nrm-udrfunction { contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; description "This IOC represents the UDR function in 5GC. For more information about the UDR, see 3GPP TS 23.501. - Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 28.541"; + revision 2026-03-25 { reference CR- ; } revision 2025-07-25 { reference CR-1558 ; } revision 2023-09-18 { reference CR-1043 ; } revision 2023-04-26 { reference CR-0916; } @@ -41,25 +42,28 @@ module _3gpp-5gc-nrm-udrfunction { list supiRanges { description "List of ranges of SUPI's whose profile data is available in the UDR instance."; - key "start end pattern"; + key idx; + leaf idx { type uint32; } min-elements 1; - uses mnfp3gpp:SupiRangeGrp; + uses types5g3gpp:SupiRangeGrp; } list gpsiRanges { description "List of ranges of GPSIs whose profile data is available in the UDR instance."; - key "start end pattern"; + key idx; + leaf idx { type uint32; } min-elements 1; - uses mnfp3gpp:IdentityRange; + uses types5g3gpp:IdentityRangeGrp; } list externalGroupIdentifiersRanges { description "List of ranges of external groups whose profile data is available in the UDR instance."; - key "start end pattern"; + key idx; + leaf idx { type uint32; } min-elements 1; - uses mnfp3gpp:IdentityRange; + uses types5g3gpp:IdentityRangeGrp; } leaf-list supportedDataSets { diff --git a/yang-models/_3gpp-common-yang-types.yang b/yang-models/_3gpp-common-yang-types.yang index 62600bb9..541468cf 100755 --- a/yang-models/_3gpp-common-yang-types.yang +++ b/yang-models/_3gpp-common-yang-types.yang @@ -1,1169 +1,1169 @@ -module _3gpp-common-yang-types { - yang-version 1.1; - namespace "urn:3gpp:sa5:_3gpp-common-yang-types"; - prefix "types3gpp"; - - import ietf-inet-types { prefix inet; } - import ietf-yang-types { prefix yang; } - import _3gpp-common-yang-extensions { prefix yext3gpp; } - - organization "3GPP SA5"; - contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; - description "The model defines a YANG mapping of the top level - information classes used for management of 5G networks and - network slicing. - Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, - TTA, TTC). All rights reserved."; - reference "3GPP TS 28.623"; - - revision 2026-03-19 { reference "CR-xxxx"; } - revision 2025-10-07 { reference "CR-0573 CR-0582 CR-583"; } - revision 2025-10-01 { reference "CR-0578" ; } - revision 2025-08-31 { reference "CR-0551 CR-0556 CR-0562"; } - revision 2025-02-19 { reference CR-0512; } - revision 2025-02-07 { reference CR-0492; } - revision 2024-11-25 { reference CR-1442; } - revision 2024-11-25 { reference CR-1412; } - revision 2024-11-01 { reference CR-0463; } - revision 2024-08-13 { reference CR-0387; } - revision 2024-05-18 { reference CR-0359; } - revision 2024-04-12 { reference CR-0346; } - revision 2023-11-06 { reference CR-0305; } - revision 2023-09-18 { reference CR-0271 ; } - revision 2023-08-09 { reference CR-0266; } - revision 2023-05-10 { reference CR-0250; } - revision 2023-02-14 { reference CR-0234; } - revision 2022-11-04 { reference "CR-0194"; } - revision 2022-10-24 { reference CR-0196; } - revision 2022-07-26 { reference "CR-0180" ; } - revision 2022-02-09 { reference "CR-0144"; } - revision 2021-11-01 { reference "CR-0141"; } - - revision 2021-09-30 { - description "Added Longitude, Latitude, TenthOfDegrees, OnOff."; - reference "CR-0138"; - } - - revision 2020-11-06 { - description "Removed incorrect S-NSSAI definitions."; - reference "CR-0118"; - } - - revision 2020-03-10 { - description "Removed faulty when statements."; - reference "SP-200229"; - } - - revision 2019-10-25 { - description "Added ManagedNFProfile."; - reference "S5-194457"; - } - - revision 2019-10-16 { - description "Added SAP and usageState."; - reference "S5-193518"; - } - - revision 2019-06-23 { - reference "Initial version."; - } - - typedef EnabledDisabled { - type enumeration { - enum DISABLED ; - enum ENABLED ; - } - } - - grouping nameValuePair { - leaf name { type string; } - leaf value { type string; } - } - - typedef DayOfWeek { - type enumeration { - enum MONDAY; - enum TUESDAY; - enum WEDNESDAY; - enum THURSDAY; - enum FRIDAY; - enum SATURDAY; - enum SUNDAY; - } - } - - typedef DateMonth { - type uint8 { - range 0..12; - } - } - - typedef DateMonthDay { - type uint8 { - range 0..31; - } - } - - typedef FullTime { - type yang:time; - } - - grouping DayInYearGrp { - description "This <> represents a day in a year."; - - leaf month { - description "It indicates the month in a year."; - type DateMonth; - mandatory true; - } - - leaf monthDay { - description "It indicates the day in a month."; - type DateMonthDay; - mandatory true; - } - } - - grouping TimeWindowGrp { - leaf startTime { - type yang:date-and-time; - yext3gpp:inVariant; - } - leaf endTime { - type yang:date-and-time; - yext3gpp:inVariant; - } - } - - grouping ProcessMonitorGrp { - description "Provides attributes to monitor the progress of processes - with specific purpose and limited lifetime running on MnS producers. - It may be used as data type for dedicated progress monitor attributes - when specifying the management representation of these processes. - The attributes in this clause are defined in a generic way. - For some attributes specialisations may be provided when specifying a - concrete process representation. - - If a management operation on some IOCs triggers an associated - asynchronous process (whose progress shall be monitored), this should - also result in creating an attribute named 'processMonitor' (of type - 'ProcessMonitor') in these IOC(s). The processMonitor attribute may be - accompanied by use-case specific additional data items. - - The progress of the process is described by the 'status' and - 'progressPercentage' attributes. Additional textual qualifications for - the 'status' attribute may be provided by the 'progressStateInfo' and - 'resultStateInfo' attributes. - - When the process is instantiated, the 'status' is set to 'NOT_STARTED' - and the 'progressPercentage' to '0'. The MnS producer decides when to - start executing the process and to transition into the 'RUNNING' state. - This time is captured in the 'startTime' attribute. Alternatively, the - process may start to execute directly upon its instantiation. One - alternative must be selected when using this data type. - - During the 'RUNNING' state the 'progressPercentage' attribute may be - repeatedly updated. The exact semantic of this attribute is subject to - further specialisation. The 'progressInfo' attribute may be used to - provide additional textual information in the 'NOT_STARTED', 'CANCELLING' - and 'RUNNING' states. Further specialisation of - 'progressStateInfo' may be provided where this data type is - used. - - Upon successful completion of the process, the 'status' attribute is set - to 'FINISHED', the 'progressPercentage' to 100%. The time is captured in - the 'endTime' attribute. Additional textual information may be provided - in the 'resultStateInfo' attribute. The type of - 'resultStateInfo' in this data type definition is 'String'. - Further specialisation of 'resultStateInfo' may be provided - where this data type is used. - - In case the process fails to complete successfully, the 'status' - attribute is set to 'FAILED' or 'PARTIALLY_FAILED', the current value of - 'progressPercentage' is frozen, and the time captured in 'endTime'. The - 'resultStateInfo' specifies the reason for the failure. - Specific failure reasons may be specified where the data type defined in - this clause is used. The exact semantic of failure may be subject for - further specialisation as well. - - In case the process is cancelled, the 'status' attribute is first set to - 'CANCELLING' and when the process is really cancelled then to 'CANCELLED'. - The transition to 'CANCELLED' is captured in the 'endTime' attribute. - The value of 'progressPercentage' is frozen. Additional textual - information may be provided in the 'resultStateInfo' attribute. - - The 'resultStateInfo' attribute is provided only for additional textual - qualification of the states 'FINISHED', 'FAILED', 'PARTIALLY_FAILED' or - 'CANCELLED'. It shall not be used for making the outcome, that the - process may produce in case of success, available. - - The process may have to be completed within a certain time after its - creation, for example because required data may not be available any - more after a certain time, or the process outcome is needed until a - certain time and when not provided by this time is not needed any more. - The time until the MnS producer automatically cancels the process is - indicated by the 'timer' attribute."; - - leaf id { - type string; - mandatory true; - description "Id of the process. It is unique within a single - multivalue attribute of type ProcessMonitor."; - } - - leaf status { - type enumeration { - enum NOT_STARTED ; - enum RUNNING ; - enum CANCELLING ; - enum FINISHED ; - enum FAILED ; - enum PARTIALLY_FAILED ; - enum CANCELLED ; - } - config false; - default RUNNING; - description "Represents the status of the associated process, - whether it fails, succeeds etc. - It does not represent the returned values of a successfully finished - process. "; - } - - leaf progressPercentage { - type uint8 { - range 0..100; - } - config false; - description "Progress of the associated process as percentage"; - } - - leaf-list progressStateInfo { - type string; - config false; - description "Additional textual qualification of the states - 'NOT_STARTED', 'CANCELLING' and 'RUNNING'. - - For specific processes, specific well-defined strings (e.g. string - patterns or enums) may be defined as a specialisation."; - } - - leaf resultStateInfo { - type string; - config false; - description "Additional textual qualification of the states - 'FINISHED', 'FAILED', 'PARTIALLY_FAILED and 'CANCELLED'. - For example, in the 'FAILED' or 'PARTIALLY_FAILED' state this - attribute may be used to provide error reasons. - - This attribute shall not be used to make the outcome of the process - available for retrieval, if any. For this purpose, dedicated - attributes shall be specified when specifying the representation of - a specific process. - - For specific processes, specific well-defined strings (e.g. string - patterns or enums) may be defined as a specialisation."; - } - - leaf startTime { - type yang:date-and-time; - config false; - description "Start time of the associated process, i.e. the time when the - status changed from 'NOT_STARTED' to 'RUNNING'."; - } - - leaf endTime { - type yang:date-and-time; - config false; - description "Date and time when status changed to 'SUCCESS', 'CANCELLED', - 'FAILED' or 'PARTIALLY_FAILED'. - - If the time is in the future, it is the estimated time - the process will end."; - } - - leaf timer { - type uint32; - units minutes; - description "Time until the associated process is automatically cancelled. - If set, the system decreases the timer with time. When it reaches zero - the cancellation of the associated process is initiated by the - MnS_Producer. - If not set, there is no time limit for the process. - - Once the timer is set, the consumer can not change it anymore. - If the consumer has not set the timer the MnS Producer may set it."; - yext3gpp:notNotifyable; - } - } - - - typedef EutraCellId { - type string { - pattern '^[A-Fa-f0-9]{7}$'; - } - description "28-bit string identifying an E-UTRA Cell Id - as specified in clause 9.3.1.9 of 3GPP TS 38.413 - in hexadecimal representation. Each character in the - string shall take a value of '0' to '9', 'a' to 'f' - or 'A' to 'F' and shall represent 4 bits. - The most significant character representing the 4 most - significant bits of the Cell Id shall appear first in the - string, and the character representing the 4 least - significant bit of the Cell Id shall appear last in the - string."; - } - - typedef NrCellId { - type string { - pattern '^[A-Fa-f0-9]{9}$'; - } - description "36-bit string identifying an NR Cell Id - as specified in clause 9.3.1.7 of 3GPP TS 38.413 - in hexadecimal representation. Each character in the - string shall take a value of '0' to '9', 'a' to 'f' - or 'A' to 'F' and shall represent 4 bits. - The most significant character representing the 4 most - significant bits of the Cell Id shall appear first in the - string, and the character representing the 4 least - significant bit of the Cell Id shall appear last in the - string."; - } - - grouping NpnIdGrp { - description "Represents the NPN supported by the <> using this - <> as one of its attributes in case of the cell is a - NPN-only cell."; - - list plmnId { - key "mcc mnc"; - min-elements 1; - description "It specifies the PLMN Id of the NPN network."; - uses types3gpp:PLMNId; - } - - choice npnidChoice { - leaf-list cAGIdList { - type CagId; - max-elements 256; - description "It identifies a CAG list containing up to 12 - CAG-identifiers per Ue or up to 12 CAG-identifiers per cell, - see TS 38.331. - CAG ID is used to combine with PLMN ID to identify a PNI-NPN.CAG ID is - a hexadecimal range with size 32 bit"; - } - - leaf-list nIDList { - type Nid; - max-elements 16; - description "It identifies a list of NIDs containing up to 16 NIDs, see - TS 38.331. NID is used to combine with PLMN ID to identify an SNPN. - NID is a hexadecimal range with size 44 bit."; - } - } - } - - typedef TenthOfDegrees { - type uint16 { - range 0..3600; - } - units "0.1 degrees"; - description "A single integral value corresponding to an angle in degrees - between 0 and 360 with a resolution of 0.1 degrees."; - } - - typedef Latitude { - type decimal64 { - fraction-digits 4; - range "-90.0000..+90.0000"; - } - description "Latitude values"; - } - - typedef Longitude { - type decimal64 { - fraction-digits 4; - range "-180.0000..+180.0000"; - } - description "Longitude values"; - } - - typedef Altitude { - type decimal64 { - fraction-digits 6; - } - units "meters"; - description - "Height from a reference 0 value."; - } - - grouping GeographicalCoordinates { - description "This datatype represents the geographical coordinates"; - reference "3GPP TS 28.538 clause 6.3.8"; - - leaf latitude { - type Latitude; - mandatory true; - } - - leaf longitude { - type Longitude; - mandatory true; - } - } - - typedef OnOff { - type enumeration { - enum ON; - enum OFF; - } - } - - - typedef usageState { - type enumeration { - enum IDLE; - enum ACTIVE; - enum BUSY; - } - description "It describes whether or not the resource is actively in - use at a specific instant, and if so, whether or not it has spare - capacity for additional users at that instant. The value is READ-ONLY."; - reference "ITU T Recommendation X.731"; - } - - grouping SAPGrp { - leaf host { - type inet:host; - mandatory true; - } - leaf port { - type inet:port-number; - mandatory true; - } - description "Service access point."; - reference "TS 28.622"; - } - - typedef Mcc { - description "The mobile country code consists of three decimal digits, - The first digit of the mobile country code identifies the geographic - region (the digits 1 and 8 are not used):"; - type string { - pattern '[02-79][0-9][0-9]'; - } - reference "3GPP TS 23.003 subclause 2.2 and 12.1"; - } - - typedef Mnc { - description "The mobile network code consists of two or three - decimal digits (for example: MNC of 001 is not the same as MNC of 01)"; - type string { - pattern '[0-9][0-9][0-9]|[0-9][0-9]'; - } - reference "3GPP TS 23.003 subclause 2.2 and 12.1"; - } - - grouping PLMNId { - leaf mcc { - mandatory true; - type Mcc; - } - leaf mnc { - mandatory true; - type Mnc; - } - reference "TS 38.413 clause 9.3.3.5"; - } - - typedef Nci { - description "NR Cell Identity. The NCI shall be of fixed length of 36 bits - and shall be coded using full hexadecimal representation. - The exact coding of the NCI is the responsibility of each PLMN operator"; - reference "TS 23.003"; - type union { - type string { - length 36; - pattern '[01]+'; - } - type string { - length 9; - pattern '[a-fA-F0-9]*'; - } - } - } - - typedef OperationalState { - reference "3GPP TS 28.625 and ITU-T X.731"; - type enumeration { - enum DISABLED { - value 0; - description "The resource is totally inoperable."; - } - - enum ENABLED { - value 1; - description "The resource is partially or fully operable."; - } - - } - } - - typedef BasicAdministrativeState { - reference "3GPP TS 28.625 and ITU-T X.731"; - type enumeration { - enum LOCKED { - value 0; - description "The resource is administratively prohibited from performing - services for its users."; - } - - enum UNLOCKED { - value 1; - description "The resource is administratively permitted to perform - services for its users. This is independent of its inherent - operability."; - } - } - } - - typedef AdministrativeState { - reference "3GPP TS 28.625 and ITU-T X.731"; - type enumeration { - enum LOCKED { - value 0; - description "The resource is administratively prohibited from performing - services for its users."; - } - - enum UNLOCKED { - value 1; - description "The resource is administratively permitted to perform - services for its users. This is independent of its inherent - operability."; - } - - enum SHUTTINGDOWN { - value 2; - description "Use of the resource is administratively permitted to - existing instances of use only. While the system remains in - the shutting down state the manager or the managed element - may at any time cause the resource to transition to the - locked state."; - } - } - } - - typedef AvailabilityStatus { - type enumeration { - enum IN_TEST; - enum FAILED; - enum POWER_OFF; - enum OFF_LINE; - enum OFF_DUTY; - enum DEPENDENCY; - enum DEGRADED; - enum NOT_INSTALLED; - enum LOG_FULL; - } - } - - typedef CellState { - type enumeration { - enum IDLE; - enum INACTIVE; - enum ACTIVE; - } - } - - typedef Nrpci { - type uint32; - description "Physical Cell Identity (PCI) of the NR cell."; - reference "TS 36.211 subclause 6.11"; - } - - typedef Tac { - type string { - pattern "([A-Fa-f0-9]{4})|([A-Fa-f0-9]{6})" ; - } - description "Tracking Area Code - 2 or 3-octet string identifying a tracking area code as specified in - clause 9.3.3.10 of 3GPP TS 38.413 [34], in hexadecimal representation. - Each character in the string shall take a value of - '0' to '9', 'a' to 'f' or 'A' to 'F' and shall represent 4 bits. - The most significant character representing the 4 most significant - bits of the TAC shall appear first in the string, and the character - representing the 4 least significant bit of the TAC shall appear last - in the string. - - pattern: '(^[A-Fa-f0-9]{4}$)|(^[A-Fa-f0-9]{6}$)' - - Examples: - A legacy TAC 0x4305 shall be encoded as '4305'. - An extended TAC 0x63F84B shall be encoded as '63F84B'"; - reference "TS 23.003 clause 19.4.2.3"; - } - - grouping TaiGrp { - description "This <> defines a Tracking Area Identity (TAI) - as specified in clause 28.6 of TS 23.003, clause 8.2 of TS 38.300 - and clause 9.3.3.11 of TS 38.413. It is composed of the PLMN - identifier (PLMN-Id, which is composed of the MCC and MNC) and - the Tracking Area Code (TAC)."; - list plmnId { - description "PLMN Identity."; - min-elements 1; - max-elements 1; - key "mcc mnc"; - uses types3gpp:PLMNId; - } - - leaf tac { - type Tac; - mandatory true; - description "Tracking Area Code"; - } - } - - grouping GeoCoordinateGrp { - description "Geographical location on earth"; - leaf latitude { - type decimal64 { - fraction-digits 4; - range -90..90 ; - } - mandatory true; - description "Latitude based on World Geodetic System (1984 version) - global reference frame (WGS 84). Positive values correspond to the - northern hemisphere."; - } - - leaf longitude { - type decimal64 { - fraction-digits 4; - range -180..180 ; - } - mandatory true; - description "Longitude based on World Geodetic System (1984 version) - global reference frame (WGS 84). Positive values correspond to - degrees east of 0 degrees longitude."; - } - - leaf altitude { - type Altitude; - } - } - - grouping GeoCircleGrp { - description "a geographical circle identified by reference location and - associated distance radius"; - - list referenceLocation { - description "Specifies a fixed geographic coordinate point, - see TS 38.331."; - min-elements 1; - max-elements 1; - key "latitude longitude altitude"; - uses GeoCoordinateGrp; - } - - leaf distanceRadius { - description "It specifies the radius distance from a geographical - coordinates reference point, defined by referenceLocation. Each value - represents 50m distance. This field is only present in an NTN cell."; - type uint16; - mandatory true; - units "50 meters"; - } - } - - grouping GeoAreaGrp { - description "This data type defines a geographical area. - The geo-area is either a 'geoPolygon' or a 'geoCircle'."; - - list geoPolygon { - description "Specifies the geographical area with a convex polygon. - The convex polygon is specified by its corners."; - key "latitude longitude"; - min-elements 3; - ordered-by user; - uses GeoCoordinateGrp; - } - } - - typedef AmfRegionId { - type union { - type uint8 ; - type string { - length 8; - pattern '[01]*'; - } - } - reference "clause 2.10.1 of 3GPP TS 23.003"; - } - - typedef AmfSetId { - type union { - type uint16 { - range '0..1023'; - } - type string { - length 8; - pattern '[01]*'; - } - } - reference "clause 2.10.1 of 3GPP TS 23.003"; - } - - typedef AmfPointer { - type union { - type uint8 { - range '0..63'; - } - type string { - length 6; - pattern '[01]*'; - } - } - reference "clause 2.10.1 of 3GPP TS 23.003"; - } - - grouping AmfIdentifier { - leaf amfRegionId { - type AmfRegionId; - } - leaf amfSetId { - type AmfSetId; - } - leaf amfPointer { - type AmfPointer; - } - description "The AMFI is constructed from an AMF Region ID, - an AMF Set ID and an AMF Pointer. - The AMF Region ID identifies the region, - the AMF Set ID uniquely identifies the AMF Set within the AMF Region, and - the AMF Pointer uniquely identifies the AMF within the AMF Set. "; - } - -// type definitions especially for core NFs - - typedef NfType { - type enumeration { - enum NRF; - enum UDM; - enum AMF; - enum SMF; - enum AUSF; - enum NEF; - enum PCF; - enum SMSF; - enum NSSF; - enum UDR; - enum LMF; - enum GMLC; - enum 5G_EIR; - enum SEPP; - enum UPF; - enum N3IWF; - enum AF; - enum UDSF; - enum BSF; - enum CHF; - } - } - - typedef NotificationType { - type enumeration { - enum N1_MESSAGES; - enum N2_INFORMATION; - enum LOCATION_NOTIFICATION; - } - } - - typedef Load { - description "Latest known load information of the NF, percentage "; - type uint8 { - range 0..100; - } - } - - typedef SupportedFeatures { - type string { - pattern '[A-Fa-f0-9]*'; - } - description "It is a string, which indicates the features of the service - corresponding to the subscribed default notification, which are supported - by the NF (Service) instance acting as NF service consumer, when it is - present of the attribute whose type is DefaultNotificationSubscription - <>. When it is present as the attribute of an NFService - instance, it indicates the supported features of the NF Service - A string containing a bitmask indicating supported features in hexadecimal - representation. Each character in the string shall take - a value of 0 to 9, a to f or A to F and shall represent the support - of 4 features as described in table 5.2.2-3 of TS 29.571."; - reference "3GPP TS 29.571"; - } - - typedef N1MessageClass { - type enumeration { - enum 5GMM; - enum SM; - enum LPP; - enum SMS; - } - } - - typedef N2InformationClass { - type enumeration { - enum SM; - enum NRPPA; - enum PWS; - enum PWS_BCAL; - enum PWS_RF; - } - } - - grouping DefaultNotificationSubscription { - - leaf notificationType { - type NotificationType; - } - - leaf callbackUri { - type inet:uri; - } - - leaf interPlmnCallbackUri { - description "It indicates the callback URI to be used by NF Service - Producers located in PLMNs that are different from the PLMN of - the NF consumer."; - type inet:uri; - } - leaf n1MessageClass { - type N1MessageClass; - } - - leaf n2InformationClass { - type N2InformationClass; - } - - leaf versions { - description "This attribute identifies the API versions - (e.g. v1) supported for the default notification type"; - //optional - type N2InformationClass; - } - leaf binding { - description "This attribute shall contain the value of the Binding - Indication for the default subscription notification "; - reference " i.e. the value part of 3gpp-Sbi-Binding header, as - specified in - clause 6.12.4 of 3GPP TS 29.500 76. "; - //optional - type string; - config false; - } - leaf acceptedEncoding { - description "It indicates the content encodings that are accepted by a - NF Service Consumer when receiving a notification related to a default - notification subscription"; - reference "IETF RFC 9110 clause 12.5.3 "; - //optional - type string; - config false; - } - leaf supportedFeatures { - description "It is a string, which indicates the features of the service - corresponding to the subscribed default notification, which are supported - by the NF (Service) instance acting as NF service consumer."; - reference "3GPP TS 29.571 table 5.2.2-3"; - //optional - type SupportedFeatures; - config false; - } - leaf serviceInfoList { - description "It indicates a list of service specific information. It may - be present when the notification request of the notification type may be - generated by multiple services, i.e. notifications from different - services may be received by the subscription."; - //optional - type string; - config false; - } - leaf callbackUriPrefix { - description "It indicates the optional path segment(s) used to construct - the prefix of the Callback URIs during the reselection of an NF service - consumer, as described in 3GPP TS 29.501"; - //optional - type inet:uri; - } - } - - grouping Ipv4AddressRange { - leaf start { - type inet:ipv4-address; - } - leaf end { - type inet:ipv4-address; - } - } - - grouping Ipv6PrefixRange { - leaf start { - type inet:ipv6-prefix; - } - leaf end { - type inet:ipv6-prefix; - } - } - - typedef NsiId { - type string; - } - - typedef UeMobilityLevel { - type enumeration { - enum STATIONARY; - enum NOMADIC; - enum RESTRICTED_MOBILITY; - enum FULLY_MOBILITY; - } - } - - typedef ResourceSharingLevel { - type enumeration { - enum SHARED; - enum NOT_SHARED; - } - } - - typedef TxDirection { - type enumeration { - enum DL; - enum UL; - enum DL_AND_UL; - } - } - - grouping AddressWithVlan { - leaf ipAddress { - type inet:ip-address; - } - leaf vlanId { - type uint16; - } - } - - typedef Nid { - description "This represents the Network Identifier, which - together with a PLMN ID is used to identify a SNPN."; - type string { - pattern '^[A-Fa-f0-9]{11}$'; - } - reference "3GPP TS 23.003 and 3GPP TS 23.501 clause 5.3.2.1."; - } - - typedef CagId { - description "This represents the identifier of a Closed Access - Group (CAG), which together with a PLMN ID is used to - identify a PNI-NPN."; - type string { - pattern '^[A-Fa-f0-9]{8}$'; - } - reference "3GPP TS 23.003 and 3GPP TS 23.501."; - } - - - /* DistinguishedName pattern is built up based on the - EBNF in 32.300 clause 7.3 EBNF of DN String Representation - - leaf DN { type string { // Same pattern as LocalDN - pattern '[A-Z][^,=+<>#;\\"\r\n*.]*=([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?(,[A-Z][^,=+<>#;\\"\r\n*.]*=([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?)*'; - } } - - leaf fullLocalDN { type string { // LocalRDN , { RDNSeparator , LocalRDN } RDNSeparator is a single , no space or \R allowed Me.mykey=1 allowed - // (fullLocalRDN)(,(fullLocalRDN))* - pattern '(([A-Z][^,=+<>#;\\"\r\n*.]*|([A-Z][^,=+<>#;\\"\r\n*.]*\.[a-z][^,=+<>#;\\"\r\n*.]*))=(([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?))(,(([A-Z][^,=+<>#;\\"\r\n*.]*|([A-Z][^,=+<>#;\\"\r\n*.]*\.[a-z][^,=+<>#;\\"\r\n*.]*))=(([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?)))*'; - } } - - leaf LocalDN { type string { // LocalRDN , { RDNSeparator , LocalRDN } RDNSeparator is a single , no space or \R allowed - // LocalRDN(,LocalRDN)* - pattern '[A-Z][^,=+<>#;\\"\r\n*.]*=([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?(,[A-Z][^,=+<>#;\\"\r\n*.]*=([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?)*'; - } } - - leaf fullLocalRDN { type string { // same as fullLocalDNAttributeTypeAndValue - pattern '([A-Z][^,=+<>#;\\"\r\n*.]*|([A-Z][^,=+<>#;\\"\r\n*.]*\.[a-z][^,=+<>#;\\"\r\n*.]*))=(([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?)'; - } } - - leaf LocalRDN { type string { // same as LocalDNAttributeTypeAndValue - pattern '[A-Z][^,=+<>#;\\"\r\n*.]*=([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?'; - } } - - leaf fullLocalDNAttributeTypeAndValue { type string { // LocalDNAttributeType , AttributeTypeAndValueSeparator , RegularAttributeValue - // pattern LocalDNAttributeType=RegularAttributeValue - pattern '([A-Z][^,=+<>#;\\"\r\n*.]*|([A-Z][^,=+<>#;\\"\r\n*.]*\.[a-z][^,=+<>#;\\"\r\n*.]*))=(([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?)'; - } } - - // limitation: NamesOfClassAndNamingAttributenot supported Me.mykey=1 - leaf LocalDNAttributeTypeAndValue { type string { - // ebnf1 LocalDNAttributeType , AttributeTypeAndValueSeparator , RegularAttributeValue - // ebnf2-limited NameOfClassWithIdAttribute , AttributeTypeAndValueSeparator , RegularAttributeValue - // pattern NameOfClassWithIdAttribute=RegularAttributeValue - pattern '[A-Z][^,=+<>#;\\"\r\n*.]*=([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?'; - } } - - leaf LocalDNAttributeType { type string { // NameOfClassWithIdAttribute | NamesOfClassAndNamingAttribute RDNSeparator is a single , no space or \R allowed - // NameOfClassWithIdAttribute|NamesOfClassAndNamingAttribute - pattern '[A-Z][^,=+<>#;\\"\r\n*.]*|([A-Z][^,=+<>#;\\"\r\n*.]*\.[a-z][^,=+<>#;\\"\r\n*.]*)'; - } } - - leaf RegularAttributeValue { type string { // ( AttributeValueChar - SpaceChar ) , [ { AttributeValueChar } , ( AttributeValueChar - SpaceChar ) ] - pattern '([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?' ; - } } - - leaf NamesOfClassAndNamingAttribute { type string { // ClassName , ClassNamingAttributeSeparator , NamingAttributeName - // pattern: ClassName\.NamingAttributeName - pattern '[A-Z][^,=+<>#;\\"\r\n*.]*\.[a-z][^,=+<>#;\\"\r\n*.]*' ; - } } - - leaf restrictiveClassName { type string { // - pattern '[a-zA-Z][a-zA-Z0-9-_]*' ; - } } - - leaf ClassName { type string { // CapitalLetterChar , { LocalDNAttributeTypeChar } - pattern '[A-Z][^,=+<>#;\\"\r\n*.]*' ; - } } - - leaf NamingAttributeName { type string { // SmallLetterChar , { LocalDNAttributeTypeChar } - pattern '[a-z][^,=+<>#;\\"\r\n*.]*' ; - } } - - */ - typedef DistinguishedName { - type string { - pattern '[A-Z][^,=+<>#;\\"\r\n*.]*=([^,=+<>#;\\"\r\n* ]|' - + '(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*' - + '([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?' - + '(,[A-Z][^,=+<>#;\\"\r\n*.]*=([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))' - + '(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*' - + '([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?)*'; - } - description "Represents the 3GPP standard for DistinguishedName. - - Limitations: - - RDNSeparator: don't allow SpaceChar or CarriageReturnChar - - NullDN: Disallow nullDN that is the same as not providing a DN - - NamesOfClassAndNamingAttribute format not allowed - (eg. ManagedElement.mykey=345436)"; - reference "3GPP TS 32.300"; - } - - typedef QOffsetRange { - type int8 { - range "-24 | -22 | -20 | -18 | -16 | -14 | -12 | -10 | -8 | -6 | " + - " -5 | -4 | -3 | -2 | -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | " + - " 12 | 14 | 16 | 18 | 20 | 22 | 24"; - } - units dB; - } - - grouping ReportingCtrl { - choice reportingCtrl { - mandatory true; - description " - This choice defines the method for reporting collected performance - metrics to MnS consumers as well as the parameters for configuring the - reporting function. It is a choice between the control parameter - required for the reporting methods, whose presence selects the - reporting method as follows: - - - When only the fileReportingPeriod attribute is present, the MnS - producer shall store files on the MnS producer at a location selected - by the MnS producer and, on condition that an appropriate subscription - is in place, inform the MnS consumer about the availability of new - files and the file location using the notifyFileReady notification. - In case the preparation of a file fails, 'notifyFilePreparationError' - shall be sent instead. - - - When the 'fileReportingPeriod' and 'notificationRecipientAddress' - attributes are present, then the MnS producer shall behave like - described for the case that only the 'fileReportingPeriod' is present. - In addition, the MnS producer shall create on behalf of the MnS - consumer a subscription, using 'NtfSubscriptionControl', for the - notification types 'notifyMOICreation' and 'notifyMOIDeletion' related - to the 'File' instances that will be produced later. In case an - existing subscription does already include the 'File' instances to be - produced, no new subscription shall be created. The - 'notificationRecipientAddress' attribute in the created - 'NtfSubscriptionControl' instance shall be set to the value of the - 'notificationRecipientAddress' in the related 'PerfMetricJob'. This - feature is called implicit notification subscription, as opposed to the - case where the MnS consumer creates the subscription (explicit - notification subscription). When the related 'PerfMetricJob' is - deleted, the 'NtfSubscriptionControl' instance created due to the - request for implicit subscription shall be deleted as well. - - When only the 'fileReportingPeriod' and 'fileLocation' attributes - are present (CHOICE_3), the MnS producer shall store the files at the - location specified by 'fileLocation'. The file location may identify - any entity such as a file server or a MnS consumer. The identified - MnS consumer may or may not be identical to the MnS consumer creating - the 'PerfMetricJob'. The MnS producer may emit 'notifyFileReady' and - 'notifyFilePreparationError' notifications to inform subscribers that - a file has been made available at the location specified by - 'fileLocation'. - - - When only the streamTarget attribute is present, the MnS producer - shall stream the data to the location specified by streamTarget. - - For the file-based reporting methods the fileReportingPeriod attribute - specifies the time window during which collected measurements are - stored into the same file before the file is closed and a new file is - opened."; - - case file-based-reporting { - leaf fileReportingPeriod { - type uint32 { - range 1..max; - } - units minutes; - mandatory true; - description "For the file-based reporting method this is the time - window during which collected measurements are stored into the same - file before the file is closed and a new file is opened. - The time-period must be a multiple of the granularityPeriod. - - Applicable when the file-based reporting method is supported."; - } - choice reporting-target { - case file-target { - leaf fileLocation { - type string ; - description "Applicable and must be present when the file-based - reporting method is supported, and the files are stored on the - MnS consumer."; - } - } - case notification-target { - leaf notificationRecipientAddress { - type string; - description "Must be present when the notification-based reporting - method is supported, and the the files are available as - notifications for the MnS consumer to subscribe to."; - } - } - description "When netiher fileLocation or notificationRecipientAddress - are present, the files are stored and available to the MnS consumer - if the MnS subscribes to the notifyFileReady notification."; - } - } - - case stream-based-reporting { - leaf streamTarget { - type string; - mandatory true; - description "Applicable when stream-based reporting method is - supported."; - } - } - } - } +module _3gpp-common-yang-types { + yang-version 1.1; + namespace "urn:3gpp:sa5:_3gpp-common-yang-types"; + prefix "types3gpp"; + + import ietf-inet-types { prefix inet; } + import ietf-yang-types { prefix yang; } + import _3gpp-common-yang-extensions { prefix yext3gpp; } + + organization "3GPP SA5"; + contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; + description "The model defines a YANG mapping of the top level + information classes used for management of 5G networks and + network slicing. + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + TTA, TTC). All rights reserved."; + reference "3GPP TS 28.623"; + + revision 2026-03-19 { reference "CR-xxxx"; } + revision 2025-10-07 { reference "CR-0573 CR-0582 CR-583"; } + revision 2025-10-01 { reference "CR-0578" ; } + revision 2025-08-31 { reference "CR-0551 CR-0556 CR-0562"; } + revision 2025-02-19 { reference CR-0512; } + revision 2025-02-07 { reference CR-0492; } + revision 2024-11-25 { reference CR-1442; } + revision 2024-11-25 { reference CR-1412; } + revision 2024-11-01 { reference CR-0463; } + revision 2024-08-13 { reference CR-0387; } + revision 2024-05-18 { reference CR-0359; } + revision 2024-04-12 { reference CR-0346; } + revision 2023-11-06 { reference CR-0305; } + revision 2023-09-18 { reference CR-0271 ; } + revision 2023-08-09 { reference CR-0266; } + revision 2023-05-10 { reference CR-0250; } + revision 2023-02-14 { reference CR-0234; } + revision 2022-11-04 { reference "CR-0194"; } + revision 2022-10-24 { reference CR-0196; } + revision 2022-07-26 { reference "CR-0180" ; } + revision 2022-02-09 { reference "CR-0144"; } + revision 2021-11-01 { reference "CR-0141"; } + + revision 2021-09-30 { + description "Added Longitude, Latitude, TenthOfDegrees, OnOff."; + reference "CR-0138"; + } + + revision 2020-11-06 { + description "Removed incorrect S-NSSAI definitions."; + reference "CR-0118"; + } + + revision 2020-03-10 { + description "Removed faulty when statements."; + reference "SP-200229"; + } + + revision 2019-10-25 { + description "Added ManagedNFProfile."; + reference "S5-194457"; + } + + revision 2019-10-16 { + description "Added SAP and usageState."; + reference "S5-193518"; + } + + revision 2019-06-23 { + reference "Initial version."; + } + + typedef EnabledDisabled { + type enumeration { + enum DISABLED ; + enum ENABLED ; + } + } + + grouping nameValuePair { + leaf name { type string; } + leaf value { type string; } + } + + typedef DayOfWeek { + type enumeration { + enum MONDAY; + enum TUESDAY; + enum WEDNESDAY; + enum THURSDAY; + enum FRIDAY; + enum SATURDAY; + enum SUNDAY; + } + } + + typedef DateMonth { + type uint8 { + range 0..12; + } + } + + typedef DateMonthDay { + type uint8 { + range 0..31; + } + } + + typedef FullTime { + type yang:time; + } + + grouping DayInYearGrp { + description "This <> represents a day in a year."; + + leaf month { + description "It indicates the month in a year."; + type DateMonth; + mandatory true; + } + + leaf monthDay { + description "It indicates the day in a month."; + type DateMonthDay; + mandatory true; + } + } + + grouping TimeWindowGrp { + leaf startTime { + type yang:date-and-time; + yext3gpp:inVariant; + } + leaf endTime { + type yang:date-and-time; + yext3gpp:inVariant; + } + } + + grouping ProcessMonitorGrp { + description "Provides attributes to monitor the progress of processes + with specific purpose and limited lifetime running on MnS producers. + It may be used as data type for dedicated progress monitor attributes + when specifying the management representation of these processes. + The attributes in this clause are defined in a generic way. + For some attributes specialisations may be provided when specifying a + concrete process representation. + + If a management operation on some IOCs triggers an associated + asynchronous process (whose progress shall be monitored), this should + also result in creating an attribute named 'processMonitor' (of type + 'ProcessMonitor') in these IOC(s). The processMonitor attribute may be + accompanied by use-case specific additional data items. + + The progress of the process is described by the 'status' and + 'progressPercentage' attributes. Additional textual qualifications for + the 'status' attribute may be provided by the 'progressStateInfo' and + 'resultStateInfo' attributes. + + When the process is instantiated, the 'status' is set to 'NOT_STARTED' + and the 'progressPercentage' to '0'. The MnS producer decides when to + start executing the process and to transition into the 'RUNNING' state. + This time is captured in the 'startTime' attribute. Alternatively, the + process may start to execute directly upon its instantiation. One + alternative must be selected when using this data type. + + During the 'RUNNING' state the 'progressPercentage' attribute may be + repeatedly updated. The exact semantic of this attribute is subject to + further specialisation. The 'progressInfo' attribute may be used to + provide additional textual information in the 'NOT_STARTED', 'CANCELLING' + and 'RUNNING' states. Further specialisation of + 'progressStateInfo' may be provided where this data type is + used. + + Upon successful completion of the process, the 'status' attribute is set + to 'FINISHED', the 'progressPercentage' to 100%. The time is captured in + the 'endTime' attribute. Additional textual information may be provided + in the 'resultStateInfo' attribute. The type of + 'resultStateInfo' in this data type definition is 'String'. + Further specialisation of 'resultStateInfo' may be provided + where this data type is used. + + In case the process fails to complete successfully, the 'status' + attribute is set to 'FAILED' or 'PARTIALLY_FAILED', the current value of + 'progressPercentage' is frozen, and the time captured in 'endTime'. The + 'resultStateInfo' specifies the reason for the failure. + Specific failure reasons may be specified where the data type defined in + this clause is used. The exact semantic of failure may be subject for + further specialisation as well. + + In case the process is cancelled, the 'status' attribute is first set to + 'CANCELLING' and when the process is really cancelled then to 'CANCELLED'. + The transition to 'CANCELLED' is captured in the 'endTime' attribute. + The value of 'progressPercentage' is frozen. Additional textual + information may be provided in the 'resultStateInfo' attribute. + + The 'resultStateInfo' attribute is provided only for additional textual + qualification of the states 'FINISHED', 'FAILED', 'PARTIALLY_FAILED' or + 'CANCELLED'. It shall not be used for making the outcome, that the + process may produce in case of success, available. + + The process may have to be completed within a certain time after its + creation, for example because required data may not be available any + more after a certain time, or the process outcome is needed until a + certain time and when not provided by this time is not needed any more. + The time until the MnS producer automatically cancels the process is + indicated by the 'timer' attribute."; + + leaf id { + type string; + mandatory true; + description "Id of the process. It is unique within a single + multivalue attribute of type ProcessMonitor."; + } + + leaf status { + type enumeration { + enum NOT_STARTED ; + enum RUNNING ; + enum CANCELLING ; + enum FINISHED ; + enum FAILED ; + enum PARTIALLY_FAILED ; + enum CANCELLED ; + } + config false; + default RUNNING; + description "Represents the status of the associated process, + whether it fails, succeeds etc. + It does not represent the returned values of a successfully finished + process. "; + } + + leaf progressPercentage { + type uint8 { + range 0..100; + } + config false; + description "Progress of the associated process as percentage"; + } + + leaf-list progressStateInfo { + type string; + config false; + description "Additional textual qualification of the states + 'NOT_STARTED', 'CANCELLING' and 'RUNNING'. + + For specific processes, specific well-defined strings (e.g. string + patterns or enums) may be defined as a specialisation."; + } + + leaf resultStateInfo { + type string; + config false; + description "Additional textual qualification of the states + 'FINISHED', 'FAILED', 'PARTIALLY_FAILED and 'CANCELLED'. + For example, in the 'FAILED' or 'PARTIALLY_FAILED' state this + attribute may be used to provide error reasons. + + This attribute shall not be used to make the outcome of the process + available for retrieval, if any. For this purpose, dedicated + attributes shall be specified when specifying the representation of + a specific process. + + For specific processes, specific well-defined strings (e.g. string + patterns or enums) may be defined as a specialisation."; + } + + leaf startTime { + type yang:date-and-time; + config false; + description "Start time of the associated process, i.e. the time when the + status changed from 'NOT_STARTED' to 'RUNNING'."; + } + + leaf endTime { + type yang:date-and-time; + config false; + description "Date and time when status changed to 'SUCCESS', 'CANCELLED', + 'FAILED' or 'PARTIALLY_FAILED'. + + If the time is in the future, it is the estimated time + the process will end."; + } + + leaf timer { + type uint32; + units minutes; + description "Time until the associated process is automatically cancelled. + If set, the system decreases the timer with time. When it reaches zero + the cancellation of the associated process is initiated by the + MnS_Producer. + If not set, there is no time limit for the process. + + Once the timer is set, the consumer can not change it anymore. + If the consumer has not set the timer the MnS Producer may set it."; + yext3gpp:notNotifyable; + } + } + + + typedef EutraCellId { + type string { + pattern '^[A-Fa-f0-9]{7}$'; + } + description "28-bit string identifying an E-UTRA Cell Id + as specified in clause 9.3.1.9 of 3GPP TS 38.413 + in hexadecimal representation. Each character in the + string shall take a value of '0' to '9', 'a' to 'f' + or 'A' to 'F' and shall represent 4 bits. + The most significant character representing the 4 most + significant bits of the Cell Id shall appear first in the + string, and the character representing the 4 least + significant bit of the Cell Id shall appear last in the + string."; + } + + typedef NrCellId { + type string { + pattern '^[A-Fa-f0-9]{9}$'; + } + description "36-bit string identifying an NR Cell Id + as specified in clause 9.3.1.7 of 3GPP TS 38.413 + in hexadecimal representation. Each character in the + string shall take a value of '0' to '9', 'a' to 'f' + or 'A' to 'F' and shall represent 4 bits. + The most significant character representing the 4 most + significant bits of the Cell Id shall appear first in the + string, and the character representing the 4 least + significant bit of the Cell Id shall appear last in the + string."; + } + + grouping NpnIdGrp { + description "Represents the NPN supported by the <> using this + <> as one of its attributes in case of the cell is a + NPN-only cell."; + + list plmnId { + key "mcc mnc"; + min-elements 1; + description "It specifies the PLMN Id of the NPN network."; + uses types3gpp:PLMNId; + } + + choice npnidChoice { + leaf-list cAGIdList { + type CagId; + max-elements 256; + description "It identifies a CAG list containing up to 12 + CAG-identifiers per Ue or up to 12 CAG-identifiers per cell, + see TS 38.331. + CAG ID is used to combine with PLMN ID to identify a PNI-NPN.CAG ID is + a hexadecimal range with size 32 bit"; + } + + leaf-list nIDList { + type Nid; + max-elements 16; + description "It identifies a list of NIDs containing up to 16 NIDs, see + TS 38.331. NID is used to combine with PLMN ID to identify an SNPN. + NID is a hexadecimal range with size 44 bit."; + } + } + } + + typedef TenthOfDegrees { + type uint16 { + range 0..3600; + } + units "0.1 degrees"; + description "A single integral value corresponding to an angle in degrees + between 0 and 360 with a resolution of 0.1 degrees."; + } + + typedef Latitude { + type decimal64 { + fraction-digits 4; + range "-90.0000..+90.0000"; + } + description "Latitude values"; + } + + typedef Longitude { + type decimal64 { + fraction-digits 4; + range "-180.0000..+180.0000"; + } + description "Longitude values"; + } + + typedef Altitude { + type decimal64 { + fraction-digits 6; + } + units "meters"; + description + "Height from a reference 0 value."; + } + + grouping GeographicalCoordinates { + description "This datatype represents the geographical coordinates"; + reference "3GPP TS 28.538 clause 6.3.8"; + + leaf latitude { + type Latitude; + mandatory true; + } + + leaf longitude { + type Longitude; + mandatory true; + } + } + + typedef OnOff { + type enumeration { + enum ON; + enum OFF; + } + } + + + typedef usageState { + type enumeration { + enum IDLE; + enum ACTIVE; + enum BUSY; + } + description "It describes whether or not the resource is actively in + use at a specific instant, and if so, whether or not it has spare + capacity for additional users at that instant. The value is READ-ONLY."; + reference "ITU T Recommendation X.731"; + } + + grouping SAPGrp { + leaf host { + type inet:host; + mandatory true; + } + leaf port { + type inet:port-number; + mandatory true; + } + description "Service access point."; + reference "TS 28.622"; + } + + typedef Mcc { + description "The mobile country code consists of three decimal digits, + The first digit of the mobile country code identifies the geographic + region (the digits 1 and 8 are not used):"; + type string { + pattern '[02-79][0-9][0-9]'; + } + reference "3GPP TS 23.003 subclause 2.2 and 12.1"; + } + + typedef Mnc { + description "The mobile network code consists of two or three + decimal digits (for example: MNC of 001 is not the same as MNC of 01)"; + type string { + pattern '[0-9][0-9][0-9]|[0-9][0-9]'; + } + reference "3GPP TS 23.003 subclause 2.2 and 12.1"; + } + + grouping PLMNId { + leaf mcc { + mandatory true; + type Mcc; + } + leaf mnc { + mandatory true; + type Mnc; + } + reference "TS 38.413 clause 9.3.3.5"; + } + + typedef Nci { + description "NR Cell Identity. The NCI shall be of fixed length of 36 bits + and shall be coded using full hexadecimal representation. + The exact coding of the NCI is the responsibility of each PLMN operator"; + reference "TS 23.003"; + type union { + type string { + length 36; + pattern '[01]+'; + } + type string { + length 9; + pattern '[a-fA-F0-9]*'; + } + } + } + + typedef OperationalState { + reference "3GPP TS 28.625 and ITU-T X.731"; + type enumeration { + enum DISABLED { + value 0; + description "The resource is totally inoperable."; + } + + enum ENABLED { + value 1; + description "The resource is partially or fully operable."; + } + + } + } + + typedef BasicAdministrativeState { + reference "3GPP TS 28.625 and ITU-T X.731"; + type enumeration { + enum LOCKED { + value 0; + description "The resource is administratively prohibited from performing + services for its users."; + } + + enum UNLOCKED { + value 1; + description "The resource is administratively permitted to perform + services for its users. This is independent of its inherent + operability."; + } + } + } + + typedef AdministrativeState { + reference "3GPP TS 28.625 and ITU-T X.731"; + type enumeration { + enum LOCKED { + value 0; + description "The resource is administratively prohibited from performing + services for its users."; + } + + enum UNLOCKED { + value 1; + description "The resource is administratively permitted to perform + services for its users. This is independent of its inherent + operability."; + } + + enum SHUTTINGDOWN { + value 2; + description "Use of the resource is administratively permitted to + existing instances of use only. While the system remains in + the shutting down state the manager or the managed element + may at any time cause the resource to transition to the + locked state."; + } + } + } + + typedef AvailabilityStatus { + type enumeration { + enum IN_TEST; + enum FAILED; + enum POWER_OFF; + enum OFF_LINE; + enum OFF_DUTY; + enum DEPENDENCY; + enum DEGRADED; + enum NOT_INSTALLED; + enum LOG_FULL; + } + } + + typedef CellState { + type enumeration { + enum IDLE; + enum INACTIVE; + enum ACTIVE; + } + } + + typedef Nrpci { + type uint32; + description "Physical Cell Identity (PCI) of the NR cell."; + reference "TS 36.211 subclause 6.11"; + } + + typedef Tac { + type string { + pattern "([A-Fa-f0-9]{4})|([A-Fa-f0-9]{6})" ; + } + description "Tracking Area Code + 2 or 3-octet string identifying a tracking area code as specified in + clause 9.3.3.10 of 3GPP TS 38.413 [34], in hexadecimal representation. + Each character in the string shall take a value of + '0' to '9', 'a' to 'f' or 'A' to 'F' and shall represent 4 bits. + The most significant character representing the 4 most significant + bits of the TAC shall appear first in the string, and the character + representing the 4 least significant bit of the TAC shall appear last + in the string. + + pattern: '(^[A-Fa-f0-9]{4}$)|(^[A-Fa-f0-9]{6}$)' + + Examples: + A legacy TAC 0x4305 shall be encoded as '4305'. + An extended TAC 0x63F84B shall be encoded as '63F84B'"; + reference "TS 23.003 clause 19.4.2.3"; + } + + grouping TaiGrp { + description "This <> defines a Tracking Area Identity (TAI) + as specified in clause 28.6 of TS 23.003, clause 8.2 of TS 38.300 + and clause 9.3.3.11 of TS 38.413. It is composed of the PLMN + identifier (PLMN-Id, which is composed of the MCC and MNC) and + the Tracking Area Code (TAC)."; + list plmnId { + description "PLMN Identity."; + min-elements 1; + max-elements 1; + key "mcc mnc"; + uses types3gpp:PLMNId; + } + + leaf tac { + type Tac; + mandatory true; + description "Tracking Area Code"; + } + } + + grouping GeoCoordinateGrp { + description "Geographical location on earth"; + leaf latitude { + type decimal64 { + fraction-digits 4; + range -90..90 ; + } + mandatory true; + description "Latitude based on World Geodetic System (1984 version) + global reference frame (WGS 84). Positive values correspond to the + northern hemisphere."; + } + + leaf longitude { + type decimal64 { + fraction-digits 4; + range -180..180 ; + } + mandatory true; + description "Longitude based on World Geodetic System (1984 version) + global reference frame (WGS 84). Positive values correspond to + degrees east of 0 degrees longitude."; + } + + leaf altitude { + type Altitude; + } + } + + grouping GeoCircleGrp { + description "a geographical circle identified by reference location and + associated distance radius"; + + list referenceLocation { + description "Specifies a fixed geographic coordinate point, + see TS 38.331."; + min-elements 1; + max-elements 1; + key "latitude longitude altitude"; + uses GeoCoordinateGrp; + } + + leaf distanceRadius { + description "It specifies the radius distance from a geographical + coordinates reference point, defined by referenceLocation. Each value + represents 50m distance. This field is only present in an NTN cell."; + type uint16; + mandatory true; + units "50 meters"; + } + } + + grouping GeoAreaGrp { + description "This data type defines a geographical area. + The geo-area is either a 'geoPolygon' or a 'geoCircle'."; + + list geoPolygon { + description "Specifies the geographical area with a convex polygon. + The convex polygon is specified by its corners."; + key "latitude longitude"; + min-elements 3; + ordered-by user; + uses GeoCoordinateGrp; + } + } + + typedef AmfRegionId { + type union { + type uint8 ; + type string { + length 8; + pattern '[01]*'; + } + } + reference "clause 2.10.1 of 3GPP TS 23.003"; + } + + typedef AmfSetId { + type union { + type uint16 { + range '0..1023'; + } + type string { + length 8; + pattern '[01]*'; + } + } + reference "clause 2.10.1 of 3GPP TS 23.003"; + } + + typedef AmfPointer { + type union { + type uint8 { + range '0..63'; + } + type string { + length 6; + pattern '[01]*'; + } + } + reference "clause 2.10.1 of 3GPP TS 23.003"; + } + + grouping AmfIdentifier { + leaf amfRegionId { + type AmfRegionId; + } + leaf amfSetId { + type AmfSetId; + } + leaf amfPointer { + type AmfPointer; + } + description "The AMFI is constructed from an AMF Region ID, + an AMF Set ID and an AMF Pointer. + The AMF Region ID identifies the region, + the AMF Set ID uniquely identifies the AMF Set within the AMF Region, and + the AMF Pointer uniquely identifies the AMF within the AMF Set. "; + } + +// type definitions especially for core NFs + + typedef NfType { + type enumeration { + enum NRF; + enum UDM; + enum AMF; + enum SMF; + enum AUSF; + enum NEF; + enum PCF; + enum SMSF; + enum NSSF; + enum UDR; + enum LMF; + enum GMLC; + enum 5G_EIR; + enum SEPP; + enum UPF; + enum N3IWF; + enum AF; + enum UDSF; + enum BSF; + enum CHF; + } + } + + typedef NotificationType { + type enumeration { + enum N1_MESSAGES; + enum N2_INFORMATION; + enum LOCATION_NOTIFICATION; + } + } + + typedef Load { + description "Latest known load information of the NF, percentage "; + type uint8 { + range 0..100; + } + } + + typedef SupportedFeatures { + type string { + pattern '[A-Fa-f0-9]*'; + } + description "It is a string, which indicates the features of the service + corresponding to the subscribed default notification, which are supported + by the NF (Service) instance acting as NF service consumer, when it is + present of the attribute whose type is DefaultNotificationSubscription + <>. When it is present as the attribute of an NFService + instance, it indicates the supported features of the NF Service + A string containing a bitmask indicating supported features in hexadecimal + representation. Each character in the string shall take + a value of 0 to 9, a to f or A to F and shall represent the support + of 4 features as described in table 5.2.2-3 of TS 29.571."; + reference "3GPP TS 29.571"; + } + + typedef N1MessageClass { + type enumeration { + enum 5GMM; + enum SM; + enum LPP; + enum SMS; + } + } + + typedef N2InformationClass { + type enumeration { + enum SM; + enum NRPPA; + enum PWS; + enum PWS_BCAL; + enum PWS_RF; + } + } + + grouping DefaultNotificationSubscription { + + leaf notificationType { + type NotificationType; + } + + leaf callbackUri { + type inet:uri; + } + + leaf interPlmnCallbackUri { + description "It indicates the callback URI to be used by NF Service + Producers located in PLMNs that are different from the PLMN of + the NF consumer."; + type inet:uri; + } + leaf n1MessageClass { + type N1MessageClass; + } + + leaf n2InformationClass { + type N2InformationClass; + } + + leaf versions { + description "This attribute identifies the API versions + (e.g. v1) supported for the default notification type"; + //optional + type N2InformationClass; + } + leaf binding { + description "This attribute shall contain the value of the Binding + Indication for the default subscription notification "; + reference " i.e. the value part of 3gpp-Sbi-Binding header, as + specified in + clause 6.12.4 of 3GPP TS 29.500 76. "; + //optional + type string; + config false; + } + leaf acceptedEncoding { + description "It indicates the content encodings that are accepted by a + NF Service Consumer when receiving a notification related to a default + notification subscription"; + reference "IETF RFC 9110 clause 12.5.3 "; + //optional + type string; + config false; + } + leaf supportedFeatures { + description "It is a string, which indicates the features of the service + corresponding to the subscribed default notification, which are supported + by the NF (Service) instance acting as NF service consumer."; + reference "3GPP TS 29.571 table 5.2.2-3"; + //optional + type SupportedFeatures; + config false; + } + leaf serviceInfoList { + description "It indicates a list of service specific information. It may + be present when the notification request of the notification type may be + generated by multiple services, i.e. notifications from different + services may be received by the subscription."; + //optional + type string; + config false; + } + leaf callbackUriPrefix { + description "It indicates the optional path segment(s) used to construct + the prefix of the Callback URIs during the reselection of an NF service + consumer, as described in 3GPP TS 29.501"; + //optional + type inet:uri; + } + } + + grouping Ipv4AddressRange { + leaf start { + type inet:ipv4-address; + } + leaf end { + type inet:ipv4-address; + } + } + + grouping Ipv6PrefixRange { + leaf start { + type inet:ipv6-prefix; + } + leaf end { + type inet:ipv6-prefix; + } + } + + typedef NsiId { + type string; + } + + typedef UeMobilityLevel { + type enumeration { + enum STATIONARY; + enum NOMADIC; + enum RESTRICTED_MOBILITY; + enum FULLY_MOBILITY; + } + } + + typedef ResourceSharingLevel { + type enumeration { + enum SHARED; + enum NOT_SHARED; + } + } + + typedef TxDirection { + type enumeration { + enum DL; + enum UL; + enum DL_AND_UL; + } + } + + grouping AddressWithVlan { + leaf ipAddress { + type inet:ip-address; + } + leaf vlanId { + type uint16; + } + } + + typedef Nid { + description "This represents the Network Identifier, which + together with a PLMN ID is used to identify a SNPN."; + type string { + pattern '^[A-Fa-f0-9]{11}$'; + } + reference "3GPP TS 23.003 and 3GPP TS 23.501 clause 5.3.2.1."; + } + + typedef CagId { + description "This represents the identifier of a Closed Access + Group (CAG), which together with a PLMN ID is used to + identify a PNI-NPN."; + type string { + pattern '^[A-Fa-f0-9]{8}$'; + } + reference "3GPP TS 23.003 and 3GPP TS 23.501."; + } + + + /* DistinguishedName pattern is built up based on the + EBNF in 32.300 clause 7.3 EBNF of DN String Representation + + leaf DN { type string { // Same pattern as LocalDN + pattern '[A-Z][^,=+<>#;\\"\r\n*.]*=([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?(,[A-Z][^,=+<>#;\\"\r\n*.]*=([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?)*'; + } } + + leaf fullLocalDN { type string { // LocalRDN , { RDNSeparator , LocalRDN } RDNSeparator is a single , no space or \R allowed Me.mykey=1 allowed + // (fullLocalRDN)(,(fullLocalRDN))* + pattern '(([A-Z][^,=+<>#;\\"\r\n*.]*|([A-Z][^,=+<>#;\\"\r\n*.]*\.[a-z][^,=+<>#;\\"\r\n*.]*))=(([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?))(,(([A-Z][^,=+<>#;\\"\r\n*.]*|([A-Z][^,=+<>#;\\"\r\n*.]*\.[a-z][^,=+<>#;\\"\r\n*.]*))=(([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?)))*'; + } } + + leaf LocalDN { type string { // LocalRDN , { RDNSeparator , LocalRDN } RDNSeparator is a single , no space or \R allowed + // LocalRDN(,LocalRDN)* + pattern '[A-Z][^,=+<>#;\\"\r\n*.]*=([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?(,[A-Z][^,=+<>#;\\"\r\n*.]*=([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?)*'; + } } + + leaf fullLocalRDN { type string { // same as fullLocalDNAttributeTypeAndValue + pattern '([A-Z][^,=+<>#;\\"\r\n*.]*|([A-Z][^,=+<>#;\\"\r\n*.]*\.[a-z][^,=+<>#;\\"\r\n*.]*))=(([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?)'; + } } + + leaf LocalRDN { type string { // same as LocalDNAttributeTypeAndValue + pattern '[A-Z][^,=+<>#;\\"\r\n*.]*=([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?'; + } } + + leaf fullLocalDNAttributeTypeAndValue { type string { // LocalDNAttributeType , AttributeTypeAndValueSeparator , RegularAttributeValue + // pattern LocalDNAttributeType=RegularAttributeValue + pattern '([A-Z][^,=+<>#;\\"\r\n*.]*|([A-Z][^,=+<>#;\\"\r\n*.]*\.[a-z][^,=+<>#;\\"\r\n*.]*))=(([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?)'; + } } + + // limitation: NamesOfClassAndNamingAttributenot supported Me.mykey=1 + leaf LocalDNAttributeTypeAndValue { type string { + // ebnf1 LocalDNAttributeType , AttributeTypeAndValueSeparator , RegularAttributeValue + // ebnf2-limited NameOfClassWithIdAttribute , AttributeTypeAndValueSeparator , RegularAttributeValue + // pattern NameOfClassWithIdAttribute=RegularAttributeValue + pattern '[A-Z][^,=+<>#;\\"\r\n*.]*=([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?'; + } } + + leaf LocalDNAttributeType { type string { // NameOfClassWithIdAttribute | NamesOfClassAndNamingAttribute RDNSeparator is a single , no space or \R allowed + // NameOfClassWithIdAttribute|NamesOfClassAndNamingAttribute + pattern '[A-Z][^,=+<>#;\\"\r\n*.]*|([A-Z][^,=+<>#;\\"\r\n*.]*\.[a-z][^,=+<>#;\\"\r\n*.]*)'; + } } + + leaf RegularAttributeValue { type string { // ( AttributeValueChar - SpaceChar ) , [ { AttributeValueChar } , ( AttributeValueChar - SpaceChar ) ] + pattern '([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?' ; + } } + + leaf NamesOfClassAndNamingAttribute { type string { // ClassName , ClassNamingAttributeSeparator , NamingAttributeName + // pattern: ClassName\.NamingAttributeName + pattern '[A-Z][^,=+<>#;\\"\r\n*.]*\.[a-z][^,=+<>#;\\"\r\n*.]*' ; + } } + + leaf restrictiveClassName { type string { // + pattern '[a-zA-Z][a-zA-Z0-9-_]*' ; + } } + + leaf ClassName { type string { // CapitalLetterChar , { LocalDNAttributeTypeChar } + pattern '[A-Z][^,=+<>#;\\"\r\n*.]*' ; + } } + + leaf NamingAttributeName { type string { // SmallLetterChar , { LocalDNAttributeTypeChar } + pattern '[a-z][^,=+<>#;\\"\r\n*.]*' ; + } } + + */ + typedef DistinguishedName { + type string { + pattern '[A-Z][^,=+<>#;\\"\r\n*.]*=([^,=+<>#;\\"\r\n* ]|' + + '(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*' + + '([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?' + + '(,[A-Z][^,=+<>#;\\"\r\n*.]*=([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))' + + '(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*' + + '([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?)*'; + } + description "Represents the 3GPP standard for DistinguishedName. + + Limitations: + - RDNSeparator: don't allow SpaceChar or CarriageReturnChar + - NullDN: Disallow nullDN that is the same as not providing a DN + - NamesOfClassAndNamingAttribute format not allowed + (eg. ManagedElement.mykey=345436)"; + reference "3GPP TS 32.300"; + } + + typedef QOffsetRange { + type int8 { + range "-24 | -22 | -20 | -18 | -16 | -14 | -12 | -10 | -8 | -6 | " + + " -5 | -4 | -3 | -2 | -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | " + + " 12 | 14 | 16 | 18 | 20 | 22 | 24"; + } + units dB; + } + + grouping ReportingCtrl { + choice reportingCtrl { + mandatory true; + description " + This choice defines the method for reporting collected performance + metrics to MnS consumers as well as the parameters for configuring the + reporting function. It is a choice between the control parameter + required for the reporting methods, whose presence selects the + reporting method as follows: + + - When only the fileReportingPeriod attribute is present, the MnS + producer shall store files on the MnS producer at a location selected + by the MnS producer and, on condition that an appropriate subscription + is in place, inform the MnS consumer about the availability of new + files and the file location using the notifyFileReady notification. + In case the preparation of a file fails, 'notifyFilePreparationError' + shall be sent instead. + + - When the 'fileReportingPeriod' and 'notificationRecipientAddress' + attributes are present, then the MnS producer shall behave like + described for the case that only the 'fileReportingPeriod' is present. + In addition, the MnS producer shall create on behalf of the MnS + consumer a subscription, using 'NtfSubscriptionControl', for the + notification types 'notifyMOICreation' and 'notifyMOIDeletion' related + to the 'File' instances that will be produced later. In case an + existing subscription does already include the 'File' instances to be + produced, no new subscription shall be created. The + 'notificationRecipientAddress' attribute in the created + 'NtfSubscriptionControl' instance shall be set to the value of the + 'notificationRecipientAddress' in the related 'PerfMetricJob'. This + feature is called implicit notification subscription, as opposed to the + case where the MnS consumer creates the subscription (explicit + notification subscription). When the related 'PerfMetricJob' is + deleted, the 'NtfSubscriptionControl' instance created due to the + request for implicit subscription shall be deleted as well. + - When only the 'fileReportingPeriod' and 'fileLocation' attributes + are present (CHOICE_3), the MnS producer shall store the files at the + location specified by 'fileLocation'. The file location may identify + any entity such as a file server or a MnS consumer. The identified + MnS consumer may or may not be identical to the MnS consumer creating + the 'PerfMetricJob'. The MnS producer may emit 'notifyFileReady' and + 'notifyFilePreparationError' notifications to inform subscribers that + a file has been made available at the location specified by + 'fileLocation'. + + - When only the streamTarget attribute is present, the MnS producer + shall stream the data to the location specified by streamTarget. + + For the file-based reporting methods the fileReportingPeriod attribute + specifies the time window during which collected measurements are + stored into the same file before the file is closed and a new file is + opened."; + + case file-based-reporting { + leaf fileReportingPeriod { + type uint32 { + range 1..max; + } + units minutes; + mandatory true; + description "For the file-based reporting method this is the time + window during which collected measurements are stored into the same + file before the file is closed and a new file is opened. + The time-period must be a multiple of the granularityPeriod. + + Applicable when the file-based reporting method is supported."; + } + choice reporting-target { + case file-target { + leaf fileLocation { + type string ; + description "Applicable and must be present when the file-based + reporting method is supported, and the files are stored on the + MnS consumer."; + } + } + case notification-target { + leaf notificationRecipientAddress { + type string; + description "Must be present when the notification-based reporting + method is supported, and the the files are available as + notifications for the MnS consumer to subscribe to."; + } + } + description "When netiher fileLocation or notificationRecipientAddress + are present, the files are stored and available to the MnS consumer + if the MnS subscribes to the notifyFileReady notification."; + } + } + + case stream-based-reporting { + leaf streamTarget { + type string; + mandatory true; + description "Applicable when stream-based reporting method is + supported."; + } + } + } + } } \ No newline at end of file -- GitLab From 2c0aadbee09fb6a7479b7482c55b186f18b1a050 Mon Sep 17 00:00:00 2001 From: rosabolzek Date: Wed, 1 Apr 2026 17:05:26 +0200 Subject: [PATCH 12/45] fix CRLF to LF line endings for changed yang files --- yang-models/_3gpp-5g-common-yang-types.yang | 1598 ++++++------- yang-models/_3gpp-5gc-nrm-nfservice.yang | 1436 ++++++------ yang-models/_3gpp-common-yang-types.yang | 2336 +++++++++---------- 3 files changed, 2685 insertions(+), 2685 deletions(-) diff --git a/yang-models/_3gpp-5g-common-yang-types.yang b/yang-models/_3gpp-5g-common-yang-types.yang index a24f52c3..a17bfd56 100755 --- a/yang-models/_3gpp-5g-common-yang-types.yang +++ b/yang-models/_3gpp-5g-common-yang-types.yang @@ -1,800 +1,800 @@ -module _3gpp-5g-common-yang-types { - yang-version 1.1; - namespace "urn:3gpp:sa5:_3gpp-5g-common-yang-types"; - prefix "types5g3gpp"; - - import ietf-yang-types { prefix yang; } - import ietf-inet-types { prefix inet; } - import _3gpp-common-yang-types { prefix types3gpp; } - - organization "3GPP SA5"; - contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; - description "The model defines common types for 5G networks and - network slicing. - Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, - TTA, TTC). All rights reserved."; - reference "3GPP TS 28.541"; - - revision 2026-03-25 { reference CR- ; } - revision 2025-11-07 { reference CR-1640 ; } - revision 2025-11-01 { reference CR-1657 ; } - revision 2025-07-25 { reference CR-1558 ; } - revision 2025-03-25 { reference CR-1489 ; } - revision 2024-11-01 { reference CR-1405; } - revision 2024-10-06 { reference CR-1389; } - revision 2024-05-24 { reference CR-1273 ; } - revision 2023-09-18 { reference CR-1043 ; } - revision 2023-05-10 { reference CR-0916; } - revision 2021-08-05 { reference S5-214053/CR-0518; } - revision 2020-11-05 { reference CR-0412 ; } - revision 2019-10-20 { reference "Initial version."; } - - grouping AreaScopeGrp { - description "This <> defines an area scope."; - - choice AreaScopeChoice { - - case eutran-only { // choice 1 - leaf-list eutraCellIdList { - type types3gpp:EutraCellId; - min-elements 1; - max-elements 32; - description "List of E-UTRAN cells identified by E-UTRAN-CGI"; - } - } - case tac { // choice 3 - leaf-list tacList { - type types3gpp:Tac; - min-elements 1; - max-elements 8; - description "Tracking Area Code list"; - } - leaf-list cAGIdList { - type types3gpp:CagId; - max-elements 256; - description "It identifies a CAG list containing up to - 256 CAG-identifiers per UE or up to 12 CAG-identifiers - per cell, see TS 38.331 [38]. CAG ID is used to combine - with PLMN ID to identify a PNI-NPN.AG ID is a hexadecimal - range with size 32 bit."; - } - } - - case ntnGeoAreaList{ // choice 6 - list ntnGeoAreaList { - must 'not(../nrCellIdList)'; - description "geographical areas for NTN MDT"; - key idx; - max-elements 8; - leaf idx { type string; } - uses types3gpp:GeoAreaGrp; - } - } - - case else { - list nPNIdentityList { // choice 2, 4 , 5 - description "list of NPN IDs of in NR. It is either - a list of PNI-NPNs identified by CAG ID with - associated plmn-Identity or a list of SNPN - identified by Network ID with associated plmn-Identity"; - key idx; - min-elements 1; - uses types3gpp:NpnIdGrp; - leaf idx { type string; } - } - leaf-list nrCellIdList { - must 'not(../taiList)'; - type types3gpp:NrCellId; - max-elements 32; - description "List of NR cells identified by NG-RAN CGI"; - } - list taiList { - must 'not(../nrCellIdList)'; - description "Tracking Area Identity list"; - key idx; - max-elements 8; - leaf idx { type string; } - uses types3gpp:TaiGrp; - } - - } - } - - - list sliceIdList { - description "Network Slice Id list"; - key idx; - uses PLMNInfo; - min-elements 1; - max-elements 16384; - leaf idx { type string; } - } - } - - grouping VendorSpecificFeatureGrp { - description "This <> represents the information of vendor - specific feature as defined in clause 6.1.6.2.62 of 3GPP TS 29.510"; - - leaf featureName { - type string; - mandatory true; - config false; - description "It is a string representing a proprietary feature - specific to a given vendor. - It is recommended that the case convention for these strings is the - same as for enumerated data types (i.e. UPPER_WITH_UNDERSCORE; - see 3GPP TS 29.501, clause 5.1.1)."; - } - leaf featureVersion { - type string; - mandatory true; - config false; - description "It is a string representing the version of the feature."; - } - - } - - grouping IpInterfaceGrp { - leaf-list ipv4EndpointAddresses { - description "Available endpoint IPv4 address(es) of - the User Plane interface."; - type inet:ipv4-address; - must '../ipv4EndpointAddresses or ../ipv6EndpointAddresses or ../fqdn'; - } - - leaf-list ipv6EndpointAddresses { - description "Available endpoint IPv6 address(es) of - the User Plane interface."; - type inet:ipv6-address; - must '../ipv4EndpointAddresses or ../ipv6EndpointAddresses or ../fqdn'; - } - - leaf fqdn { - description "This parameter defines FQDN of the Network Function - (See TS 23.003)."; - type inet:domain-name; - must '../ipv4EndpointAddresses or ../ipv6EndpointAddresses or ../fqdn'; - } - } - - grouping SdRangeGrp { - leaf start { - type string { - pattern "[A-Fa-f0-9]{6}"; - } - mandatory true; - description "First value identifying the start of an SD range. - This string shall be formatted as specified for the sd attribute of the - Snssai data type in clause 5.4.4.2 of TS 29.571."; - } - - leaf end { - type string { - pattern "[A-Fa-f0-9]{6}"; - } - mandatory true; - description "Last value identifying the end of an SD range. - This string shall be formatted as specified for the sd attribute of the - Snssai data type in clause 5.4.4.2 in TS 29.571"; - } - } - - grouping SupiRangeGrp { - description "This <> represents a range of SUPIs."; - leaf start { - description "First value identifying the start of a SUPI range."; - type string { - pattern '^[0-9]+$'; - } - } - leaf end { - description "Last value identifying the end of a SUPI range."; - type string { - pattern '^[0-9]+$'; - } - } - leaf pattern { - description "Pattern representing the set of SUPIs belonging to - this range."; - type string; - } - } - - grouping IdentityRangeGrp { - description "This <> represents a range of identities."; - leaf start { - description "First value identifying the start of an identity range."; - type string { - pattern '^[0-9]+$'; - } - } - leaf end { - description "Last value identifying the end of an identity range."; - type string; - } - leaf pattern { - description "Pattern representing the set of identities belonging to - this range."; - type string; - } - } - - grouping SupportedVendorSpecificFeaturesGrp { - description "This <> represents a map of Vendor-Specific features, - where the key of the map is the IANA-assigned SMI Network Management - Private Enterprise Codes and the value of each entry of the map shall be - a list (array) of VendorSpecificFeature objects as defined in clause 5.3.247."; - reference "3GPP TS 29.510 clause 5.3.247"; - - list supportedVendorSpecificFeatures { - description "It indicates a map of Vendor-Specific features, where the - key of the map is the IANA-assigned SMI Network Management Private - Enterprise Codes and the value of each entry of the map shall be - a list (array) of VendorSpecificFeature objects as defined - in the clause 5.3.247."; - key "enterpriseCode"; - - leaf enterpriseCode { - type uint32; - description "IANA-assigned SMI Network Management Private - Enterprise Code"; - } - - list vendorSpecificFeature { - key "featureName"; - config false; - description "VendorSpecificFeature objects as defined - in the clause 5.3.247."; - uses VendorSpecificFeatureGrp; - } - } - } - - grouping SnssaiExtensionGrp { - list sdRanges { - min-elements 1; - key "start end"; - description "It shall contain the range(s) of Slice Differentiator values - supported for the Slice/Service Type value indicated in the sst - attribute of the Snssai data type (see clause 5.4.4.2 in TS 29.571)."; - uses SdRangeGrp; - } - - leaf wildcardSd { - type boolean; - default false; - description "It indicates that all SD values are supported for the - Slice/Service Type value indicated in the sst attribute of the Snssai - data type (see clause 5.4.4.2 in TS 29.571)."; - } - } - - grouping ExtSnssaiGrp { - list snssai { - description "It represents the S-NSSAI the NetworkSlice managed object - is supporting. The S-NSSAI is defined in TS 23.003 "; - min-elements 1; - max-elements 1; - key "sd sst"; - uses SNssai; - } - - list snssaiExtension { - description "It represents extensions to the Snssai."; - min-elements 1; - key idx; - leaf idx { type uint32; } - uses SnssaiExtensionGrp; - } - } - grouping sNssaiSmfInfoItem { - list sNssai { - description "Supported S-NSSAI."; - min-elements 1; - max-elements 1; - key "sst sd"; - uses SNssai; - } - - list dnnSmfInfoList { - description "List of parameters supported by the SMF per DNN. - The absence indicates the DNN can be selected for any DNAI."; - min-elements 1; - key dnn; - uses DnnSmfInfoItem; - } - } - - grouping MappedCellIdInfoGrp { - description "This data type represents the mapping relationship between - Mapped Cell IDs and geographical areas (see clause 16.14.5 of TS 38.300"; - - list ntnGeoArea { - description "This attribute indicates a specific geographical location - mapped to Mapped Cell ID(s)."; - min-elements 1; - max-elements 1; - key idx; - leaf idx { type uint32; } - uses types3gpp:GeoAreaGrp; - } - - list mappedCellId { - description "This attribute is in format of NCGI to indicate a fixed - geographical area (See subclause 16.14.5 in TS 38.300)"; - min-elements 1; - max-elements 1; - key idx; - leaf idx { type uint32; } - uses NcgiGrp; - } - } - - grouping NcgiGrp { - description "Represents the Ncgi datatype"; - - list plmnId { - description "This attribute represents a PLMN Identity."; - min-elements 1; - max-elements 1; - key "idx"; - leaf idx { type uint32 ; } - uses types3gpp:PLMNId ; - } - - leaf nrCellId { - type string; - mandatory true; - description "This attribute represents NR Cell Identity. - It's a 36-bit string identifying an NR Cell Id as specified in - clause 9.3.1.7 of TS 38.413, in hexadecimal representation. Each - character in the string shall take a value of - '0' to '9', 'a' to 'f' or 'A' to 'F' and shall represent 4 bits. - The most significant character representing the 4 most significant - bits of the Cell Id shall appear first in the string, and the - character representing the 4 least significant bit of the - Cell Id shall appear last in the string. - - Pattern: '^[A-Fa-f0-9]{9}$' - - Example: - An NR Cell Id 0x225BD6007 shall be encoded as '225BD6007'."; - } - - leaf nId { - type string; - mandatory true; - description "Network Identity; Shall be present if PlmnIdNid identifies - an SNPN (see clauses 5.30.2.3, 5.30.2.9, 6.3.4, and 6.3.8 in - 3GPP TS 23.501."; - } - } - - typedef NRTAC { - type string; - description "This holds the identity of the common Tracking Area Code - for the PLMNs. - - allowedValues: - a) It is the TAC or Extended-TAC. - b) A cell can only broadcast one TAC or Extended-TAC. See TS 36.300, - subclause 10.1.7 (PLMNID and TAC relation). - c) TAC is defined in subclause 19.4.2.3 of 3GPP TS 23.003 - and Extended-TAC is defined in subclause 9.3.1.29 of 3GPP TS 38.473. - d) For a 5G SA (Stand Alone), it has a non-null value."; - } - - grouping SNssai { - description - "Single Network Slice Selection Assistance Information(S-NSSAI)"; - reference "3GPP TS 23.003"; - - leaf sd { - description "Slice Differentiator - If not needed, the value can be set to ff:ff:ff."; - type yang:hex-string { - length 8; - } - reference "3GPP TS 23.003"; - } - - leaf sst { - type uint8; - description "Slice/Service Type. - Values 0 to 127 belong to standardized SST range and are defined in - 3GPP TS 23.501. Values 128 to 255 belong to operator-specific range."; - } - } - - grouping PlmnIdNid { - description "Represents the SCP domain specific information as defined - in TS 29.510 "; - uses types3gpp:PLMNId; - - leaf nid { - type string; - description "This attribute represents network Identity; - Shall be present if PlmnIdNid identifies an SNPN. - (see clauses 5.30.2.3, 5.30.2.9, 6.3.4, and 6.3.8 in TS 23.501"; - } - } - - grouping PLMNInfo { - description "The PLMNInfo data type define a S-NSSAI member in a specific - PLMNId, and it have two attributes PLMNId and S-NSSAI (PLMNId, S-NSSAI). - The PLMNId represents a data type that is comprised of mcc - (mobile country code) and mnc (mobile network code), (See TS 23.003 - subclause 2.2 and 12.1) and S-NSSAI represents an data type, that is - comprised of an SST (Slice/Service type) and an optional - SD (Slice Differentiator) field"; - uses types3gpp:PLMNId; - uses SNssai; - } - - typedef CommModelType { - reference "3GPP TS 23501"; - type enumeration { - enum DIRECT_COMMUNICATION_WO_NRF { - value 0; - description "Directly communicate to other pre-configured NF service."; - } - - enum DIRECT_COMMUNICATION_WITH_NRF { - value 1; - description "Directly communicate to other NF service discovered - by NRF."; - } - - enum INDIRECT_COMMUNICATION_WO_DEDICATED_DISCOVERY { - value 2; - description "Communicate to pre-configured other NF service through - SCP as a proxy."; - } - - enum INDIRECT_COMMUNICATION_WITH_DEDICATED_DISCOVERY { - value 3; - description "Communication to NF service discovered by NRF through SCP - as a proxy."; - } - - } - } - - grouping CommModel { - leaf groupId { - type uint16; - } - leaf commModelType { - type CommModelType; - } - leaf-list targetNFServiceList { - type types3gpp:DistinguishedName; - } - leaf commModelConfiguration { - type string; - } - } - grouping TaiRangeGrp { - list plmnId { - description "PLMN ID related to the TacRange."; - min-elements 1; - max-elements 1; - key "mcc mnc"; - uses types3gpp:PLMNId; - } - - list tacRangeList { - description "The range of the TACs."; - min-elements 1; - key "start end"; - uses TacRange; - } - } - - grouping TacRange { - leaf start { - description "First value identifying the start of a TAC range, - to be used when the range of TAC's can be represented - as a hexadecimal range (e.g., TAC ranges)."; - type string { - pattern '^([A-Fa-f0-9]{4}|[A-Fa-f0-9]{6}$)'; - } - } - - leaf end { - description "Last value identifying the end of a TAC range, - to be used when the range of TAC's can be represented as - a hexadecimal range (e.g. TAC ranges)."; - type string { - pattern '^([A-Fa-f0-9]{4}|[A-Fa-f0-9]{6})$'; - } - } - - leaf nRTACpattern { - description "Pattern (regular expression according to the ECMA-262) - representing the set of TAC's belonging to this range. - A TAC value is considered part of the range if and only if the - TAC string fully matches the regular expression."; - type string; - } - } - grouping DnnSmfInfoItem { - leaf dnn { - description "Supported DNN."; - mandatory true; - type string; - } - - leaf-list dnaiList { - description "List of Data network access identifiers supported by - the SMF for this DNN. The absence of this attribute indicates that - the SMF can be selected for this DNN for any DNAI."; - min-elements 1; - type string; - } - } - - grouping SupportedFunc { - leaf function { - type string; - } - leaf policy { - type string; - } - } - - typedef EnergySavingLoadThresholdT { - type uint32 { - range 0..10000; - } - units 1/10000; - } - - typedef EnergySavingTimeDurationT { - type uint32 { - range 0..900; - } - units seconds; - } - - typedef PhysCellID { - type uint32 { - range "0..1007"; - } - reference "clause 7.4.2 of TS 38.211"; - } - - typedef UTC24TimeOfDayT { - description "Time of day in HH:MM or H:MM 24-hour format per UTC - time zone."; - type string { - pattern "(([01]?[0-9])|(2[0-3])):([0-5][0-9])"; - } - } - - typedef DayOfWeekT { - type enumeration { - enum Monday; - enum Tuesday; - enum Wednesday; - enum Thursday; - enum Friday; - enum Saturday; - enum Sunday; - } - } - - grouping CaraConfigurationGrp { - description "This data type represents the configuration used for - an NR mobile node (e.g., IAB-node or MWAB), to perform certificate - enrolment procedure with Certification Authority server (CA/RA) - as specified in TS 28.315 clause 5.3"; - - leaf caraAddress { - type inet:host; - description "IP address or FQDN of the CMP (Certificate Management - Protocol) - server"; - } - - leaf portNumber { - type inet:port-number; - description "This parameter specifies the port number used by - CMP (Certificate Management Protocol) server. The port for HTTP/HTTPSs - transfer of CMP messages is not explicitly given in RFC 9811, therefore - this parameter is required. The port number is usually - represented as 2 octets."; - } - - leaf path { - type inet:uri; - mandatory true; - description "This parameter specifies the path (in ASCII string) to - the CMP server directory. A CMP server may be located in an - arbitrary path other than root."; - } - - leaf subjectName { - type string; - mandatory true; - description "This parameter specifies the subject name (in ASCII - string) of the CA/RA. The use is described in 3GPP TS 33.310 - clause 9.5.3."; - } - - leaf protocol { - type enumeration { - enum HTTP; - enum HTTPS; - } - description "This parameter specifies the protocol (HTTP or HTTPS) - to be used for certificate enrolment. The use is described in - 3GPP TS 33.310 clause 9.6."; - } - } - - grouping MnrOamIPConfigGrp { - description "This data type includes the configutation for OAM connectivity - used for an NR mobile node (e.g., IAB-node or MWAB), to establish connection with - management system. The configuration attributes include: - Configuration of certification authority (CA/RA) server, - Configuration of security gateway (SeGW), and - Configuration of software configuration server (SCS)"; - - list caraConfiguration { - description "configuration used for an NR mobile node (e.g., IAB-node or MWAB), - to perform certificate enrolment procedure as specified in - TS 28.315."; - uses CaraConfigurationGrp; - max-elements 1; - key caraAddress; - } - - leaf seGwConfiguration { - description "this parameter specifies IP address or - FQDN of security gateway (SeGW) used for an - an NR mobile node (e.g., IAB-node or MWAB) - to establish secure connection as specified in TS 28.315."; - type inet:host; - - } - - leaf scsConfiguration { - description "this parameter specifies IP address or FQDN of - configuration server (SCS) used for - an NR mobile node (e.g., IAB-node or MWAB) - to establish connection as specified in TS 28.315."; - type inet:host; - } - } - - grouping RuleSetGrp { - description "This data type represents list of rules specifying whether - access/scopes are allowed/denied for NF-Consumers."; - reference "3GPP TS 29.510 clause 6.2.6.2.121"; - - leaf priority { - description "It indicates the unique Priority of the rule. Lower value - means higher priority."; - mandatory true; - type uint32; - } - - list plmns { - description "It indicates PLMNs allowed/dis-allowed to access the - service instance. When absent, NF-Consumers of all PLMNs are - assumed to match this criteria."; - key "mcc mnc"; - uses types3gpp:PLMNId; - } - - list snpns { - description "It indicates SNPNs allowed/dis-allowed to access the - service instance. When absent, NF-Consumers of all SNPNs are - assumed to match this criteria."; - key "mcc mnc"; - uses PlmnIdNid; - } - - leaf-list nfTypes { - description "It indicates type of the NFs allowed/dis-allowed to - access the service instance. When absent, NF-Consumers of all - nfTypes are assumed to match this criteria."; - type types3gpp:NfType; - } - - leaf-list nfDomains { - description "It represents pattern (regular expression according to - the ECMA-262 dialect) representing the NF domain names within the - PLMN of the NRF allowed/dis-allowed to access the service instance. - When absent, NF-Consumers of all nfDomains are assumed to match - this criteria."; - type string; - } - - list nssais { - description "It represents S-NSSAIs of the NF-Consumers - allowed/dis-allowed to access the service instance. When absent, - NF-Consumers of all slices are assumed to match this criteria."; - key idx; - leaf idx { type uint32; } - uses ExtSnssaiGrp; - } - - leaf-list nfInstances { - description "It represents NF-Instance IDs of the NF-Consumers - allowed/dis-allowed to access the NF/NF-Service instance. When - absent, all the NF-Consumers are assumed to match this criteria."; - type string; - } - - leaf-list scopes { - description "It represents list of scopes allowed or denied to the - NF-Consumers matching the rule. The scopes shall be any of those - defined in the API that defines the current service. When absent, - the NF-Consumer is allowed or denied full access to all the - resources/operations of service instance."; - type string; - } - - leaf action { - description "It specifies whether the scopes/access mentioned are - allowed or denied for a specific NF-Consumer. - ALLOW: The NF consumer is allowed to access NF producer. - DENY: The NF consumer is not allowed to access NF Producer."; - mandatory true; - type enumeration { - enum ALLOW; - enum DENY; - } - } - } - - grouping LocationInfoGrp { - description "This data type contains location information - of an NR mobile node (e.g., IAB-node or MWAB)."; - - leaf gNBId { - type int64 { range "0..4294967295"; } - description "It is either the gNB ID of the IAB-donor-CU that target IAB-DU - connects to or the gNB Id of the IAB-nonor-CU that serves IAB-MT, or - the gNBId of the gNB that serves MWAB-UE."; - } - - list pLMNId { - uses types3gpp:PLMNId; - max-elements 1; - description "The PLMN ID where IAB-MT or MWAB-UE is connected to"; - key "mcc mnc"; - } - - leaf cellLocalId { - type int32 { range "0..16383"; } - description "Identifies an NR cell where IAB-MT or MWAB-UE - is connected to."; - } - - leaf nRTAC { - type types5g3gpp:NRTAC; - description "It is TAC pertaining to the cells where IAB-MT or MWAB-UE is - connected."; - } - - list tAI { - uses types3gpp:TaiGrp; - key idx; - leaf idx { type string; } - max-elements 1; - description "It is the TAI (see subclause 9.3.3.11 in TS 38.413) pertaining - to the cells where IAB-MT or MWAB-UE is connected"; - } - list geoArea { - uses types3gpp:GeoAreaGrp; - key idx; - leaf idx {type string;} - max-elements 1; - description "It specifies geographical area of mobile NR node - (e.g., IAB-node or MWAB-node)."; - } - } +module _3gpp-5g-common-yang-types { + yang-version 1.1; + namespace "urn:3gpp:sa5:_3gpp-5g-common-yang-types"; + prefix "types5g3gpp"; + + import ietf-yang-types { prefix yang; } + import ietf-inet-types { prefix inet; } + import _3gpp-common-yang-types { prefix types3gpp; } + + organization "3GPP SA5"; + contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; + description "The model defines common types for 5G networks and + network slicing. + Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + TTA, TTC). All rights reserved."; + reference "3GPP TS 28.541"; + + revision 2026-03-25 { reference CR- ; } + revision 2025-11-07 { reference CR-1640 ; } + revision 2025-11-01 { reference CR-1657 ; } + revision 2025-07-25 { reference CR-1558 ; } + revision 2025-03-25 { reference CR-1489 ; } + revision 2024-11-01 { reference CR-1405; } + revision 2024-10-06 { reference CR-1389; } + revision 2024-05-24 { reference CR-1273 ; } + revision 2023-09-18 { reference CR-1043 ; } + revision 2023-05-10 { reference CR-0916; } + revision 2021-08-05 { reference S5-214053/CR-0518; } + revision 2020-11-05 { reference CR-0412 ; } + revision 2019-10-20 { reference "Initial version."; } + + grouping AreaScopeGrp { + description "This <> defines an area scope."; + + choice AreaScopeChoice { + + case eutran-only { // choice 1 + leaf-list eutraCellIdList { + type types3gpp:EutraCellId; + min-elements 1; + max-elements 32; + description "List of E-UTRAN cells identified by E-UTRAN-CGI"; + } + } + case tac { // choice 3 + leaf-list tacList { + type types3gpp:Tac; + min-elements 1; + max-elements 8; + description "Tracking Area Code list"; + } + leaf-list cAGIdList { + type types3gpp:CagId; + max-elements 256; + description "It identifies a CAG list containing up to + 256 CAG-identifiers per UE or up to 12 CAG-identifiers + per cell, see TS 38.331 [38]. CAG ID is used to combine + with PLMN ID to identify a PNI-NPN.AG ID is a hexadecimal + range with size 32 bit."; + } + } + + case ntnGeoAreaList{ // choice 6 + list ntnGeoAreaList { + must 'not(../nrCellIdList)'; + description "geographical areas for NTN MDT"; + key idx; + max-elements 8; + leaf idx { type string; } + uses types3gpp:GeoAreaGrp; + } + } + + case else { + list nPNIdentityList { // choice 2, 4 , 5 + description "list of NPN IDs of in NR. It is either + a list of PNI-NPNs identified by CAG ID with + associated plmn-Identity or a list of SNPN + identified by Network ID with associated plmn-Identity"; + key idx; + min-elements 1; + uses types3gpp:NpnIdGrp; + leaf idx { type string; } + } + leaf-list nrCellIdList { + must 'not(../taiList)'; + type types3gpp:NrCellId; + max-elements 32; + description "List of NR cells identified by NG-RAN CGI"; + } + list taiList { + must 'not(../nrCellIdList)'; + description "Tracking Area Identity list"; + key idx; + max-elements 8; + leaf idx { type string; } + uses types3gpp:TaiGrp; + } + + } + } + + + list sliceIdList { + description "Network Slice Id list"; + key idx; + uses PLMNInfo; + min-elements 1; + max-elements 16384; + leaf idx { type string; } + } + } + + grouping VendorSpecificFeatureGrp { + description "This <> represents the information of vendor + specific feature as defined in clause 6.1.6.2.62 of 3GPP TS 29.510"; + + leaf featureName { + type string; + mandatory true; + config false; + description "It is a string representing a proprietary feature + specific to a given vendor. + It is recommended that the case convention for these strings is the + same as for enumerated data types (i.e. UPPER_WITH_UNDERSCORE; + see 3GPP TS 29.501, clause 5.1.1)."; + } + leaf featureVersion { + type string; + mandatory true; + config false; + description "It is a string representing the version of the feature."; + } + + } + + grouping IpInterfaceGrp { + leaf-list ipv4EndpointAddresses { + description "Available endpoint IPv4 address(es) of + the User Plane interface."; + type inet:ipv4-address; + must '../ipv4EndpointAddresses or ../ipv6EndpointAddresses or ../fqdn'; + } + + leaf-list ipv6EndpointAddresses { + description "Available endpoint IPv6 address(es) of + the User Plane interface."; + type inet:ipv6-address; + must '../ipv4EndpointAddresses or ../ipv6EndpointAddresses or ../fqdn'; + } + + leaf fqdn { + description "This parameter defines FQDN of the Network Function + (See TS 23.003)."; + type inet:domain-name; + must '../ipv4EndpointAddresses or ../ipv6EndpointAddresses or ../fqdn'; + } + } + + grouping SdRangeGrp { + leaf start { + type string { + pattern "[A-Fa-f0-9]{6}"; + } + mandatory true; + description "First value identifying the start of an SD range. + This string shall be formatted as specified for the sd attribute of the + Snssai data type in clause 5.4.4.2 of TS 29.571."; + } + + leaf end { + type string { + pattern "[A-Fa-f0-9]{6}"; + } + mandatory true; + description "Last value identifying the end of an SD range. + This string shall be formatted as specified for the sd attribute of the + Snssai data type in clause 5.4.4.2 in TS 29.571"; + } + } + + grouping SupiRangeGrp { + description "This <> represents a range of SUPIs."; + leaf start { + description "First value identifying the start of a SUPI range."; + type string { + pattern '^[0-9]+$'; + } + } + leaf end { + description "Last value identifying the end of a SUPI range."; + type string { + pattern '^[0-9]+$'; + } + } + leaf pattern { + description "Pattern representing the set of SUPIs belonging to + this range."; + type string; + } + } + + grouping IdentityRangeGrp { + description "This <> represents a range of identities."; + leaf start { + description "First value identifying the start of an identity range."; + type string { + pattern '^[0-9]+$'; + } + } + leaf end { + description "Last value identifying the end of an identity range."; + type string; + } + leaf pattern { + description "Pattern representing the set of identities belonging to + this range."; + type string; + } + } + + grouping SupportedVendorSpecificFeaturesGrp { + description "This <> represents a map of Vendor-Specific features, + where the key of the map is the IANA-assigned SMI Network Management + Private Enterprise Codes and the value of each entry of the map shall be + a list (array) of VendorSpecificFeature objects as defined in clause 5.3.247."; + reference "3GPP TS 29.510 clause 5.3.247"; + + list supportedVendorSpecificFeatures { + description "It indicates a map of Vendor-Specific features, where the + key of the map is the IANA-assigned SMI Network Management Private + Enterprise Codes and the value of each entry of the map shall be + a list (array) of VendorSpecificFeature objects as defined + in the clause 5.3.247."; + key "enterpriseCode"; + + leaf enterpriseCode { + type uint32; + description "IANA-assigned SMI Network Management Private + Enterprise Code"; + } + + list vendorSpecificFeature { + key "featureName"; + config false; + description "VendorSpecificFeature objects as defined + in the clause 5.3.247."; + uses VendorSpecificFeatureGrp; + } + } + } + + grouping SnssaiExtensionGrp { + list sdRanges { + min-elements 1; + key "start end"; + description "It shall contain the range(s) of Slice Differentiator values + supported for the Slice/Service Type value indicated in the sst + attribute of the Snssai data type (see clause 5.4.4.2 in TS 29.571)."; + uses SdRangeGrp; + } + + leaf wildcardSd { + type boolean; + default false; + description "It indicates that all SD values are supported for the + Slice/Service Type value indicated in the sst attribute of the Snssai + data type (see clause 5.4.4.2 in TS 29.571)."; + } + } + + grouping ExtSnssaiGrp { + list snssai { + description "It represents the S-NSSAI the NetworkSlice managed object + is supporting. The S-NSSAI is defined in TS 23.003 "; + min-elements 1; + max-elements 1; + key "sd sst"; + uses SNssai; + } + + list snssaiExtension { + description "It represents extensions to the Snssai."; + min-elements 1; + key idx; + leaf idx { type uint32; } + uses SnssaiExtensionGrp; + } + } + grouping sNssaiSmfInfoItem { + list sNssai { + description "Supported S-NSSAI."; + min-elements 1; + max-elements 1; + key "sst sd"; + uses SNssai; + } + + list dnnSmfInfoList { + description "List of parameters supported by the SMF per DNN. + The absence indicates the DNN can be selected for any DNAI."; + min-elements 1; + key dnn; + uses DnnSmfInfoItem; + } + } + + grouping MappedCellIdInfoGrp { + description "This data type represents the mapping relationship between + Mapped Cell IDs and geographical areas (see clause 16.14.5 of TS 38.300"; + + list ntnGeoArea { + description "This attribute indicates a specific geographical location + mapped to Mapped Cell ID(s)."; + min-elements 1; + max-elements 1; + key idx; + leaf idx { type uint32; } + uses types3gpp:GeoAreaGrp; + } + + list mappedCellId { + description "This attribute is in format of NCGI to indicate a fixed + geographical area (See subclause 16.14.5 in TS 38.300)"; + min-elements 1; + max-elements 1; + key idx; + leaf idx { type uint32; } + uses NcgiGrp; + } + } + + grouping NcgiGrp { + description "Represents the Ncgi datatype"; + + list plmnId { + description "This attribute represents a PLMN Identity."; + min-elements 1; + max-elements 1; + key "idx"; + leaf idx { type uint32 ; } + uses types3gpp:PLMNId ; + } + + leaf nrCellId { + type string; + mandatory true; + description "This attribute represents NR Cell Identity. + It's a 36-bit string identifying an NR Cell Id as specified in + clause 9.3.1.7 of TS 38.413, in hexadecimal representation. Each + character in the string shall take a value of + '0' to '9', 'a' to 'f' or 'A' to 'F' and shall represent 4 bits. + The most significant character representing the 4 most significant + bits of the Cell Id shall appear first in the string, and the + character representing the 4 least significant bit of the + Cell Id shall appear last in the string. + + Pattern: '^[A-Fa-f0-9]{9}$' + + Example: + An NR Cell Id 0x225BD6007 shall be encoded as '225BD6007'."; + } + + leaf nId { + type string; + mandatory true; + description "Network Identity; Shall be present if PlmnIdNid identifies + an SNPN (see clauses 5.30.2.3, 5.30.2.9, 6.3.4, and 6.3.8 in + 3GPP TS 23.501."; + } + } + + typedef NRTAC { + type string; + description "This holds the identity of the common Tracking Area Code + for the PLMNs. + + allowedValues: + a) It is the TAC or Extended-TAC. + b) A cell can only broadcast one TAC or Extended-TAC. See TS 36.300, + subclause 10.1.7 (PLMNID and TAC relation). + c) TAC is defined in subclause 19.4.2.3 of 3GPP TS 23.003 + and Extended-TAC is defined in subclause 9.3.1.29 of 3GPP TS 38.473. + d) For a 5G SA (Stand Alone), it has a non-null value."; + } + + grouping SNssai { + description + "Single Network Slice Selection Assistance Information(S-NSSAI)"; + reference "3GPP TS 23.003"; + + leaf sd { + description "Slice Differentiator + If not needed, the value can be set to ff:ff:ff."; + type yang:hex-string { + length 8; + } + reference "3GPP TS 23.003"; + } + + leaf sst { + type uint8; + description "Slice/Service Type. + Values 0 to 127 belong to standardized SST range and are defined in + 3GPP TS 23.501. Values 128 to 255 belong to operator-specific range."; + } + } + + grouping PlmnIdNid { + description "Represents the SCP domain specific information as defined + in TS 29.510 "; + uses types3gpp:PLMNId; + + leaf nid { + type string; + description "This attribute represents network Identity; + Shall be present if PlmnIdNid identifies an SNPN. + (see clauses 5.30.2.3, 5.30.2.9, 6.3.4, and 6.3.8 in TS 23.501"; + } + } + + grouping PLMNInfo { + description "The PLMNInfo data type define a S-NSSAI member in a specific + PLMNId, and it have two attributes PLMNId and S-NSSAI (PLMNId, S-NSSAI). + The PLMNId represents a data type that is comprised of mcc + (mobile country code) and mnc (mobile network code), (See TS 23.003 + subclause 2.2 and 12.1) and S-NSSAI represents an data type, that is + comprised of an SST (Slice/Service type) and an optional + SD (Slice Differentiator) field"; + uses types3gpp:PLMNId; + uses SNssai; + } + + typedef CommModelType { + reference "3GPP TS 23501"; + type enumeration { + enum DIRECT_COMMUNICATION_WO_NRF { + value 0; + description "Directly communicate to other pre-configured NF service."; + } + + enum DIRECT_COMMUNICATION_WITH_NRF { + value 1; + description "Directly communicate to other NF service discovered + by NRF."; + } + + enum INDIRECT_COMMUNICATION_WO_DEDICATED_DISCOVERY { + value 2; + description "Communicate to pre-configured other NF service through + SCP as a proxy."; + } + + enum INDIRECT_COMMUNICATION_WITH_DEDICATED_DISCOVERY { + value 3; + description "Communication to NF service discovered by NRF through SCP + as a proxy."; + } + + } + } + + grouping CommModel { + leaf groupId { + type uint16; + } + leaf commModelType { + type CommModelType; + } + leaf-list targetNFServiceList { + type types3gpp:DistinguishedName; + } + leaf commModelConfiguration { + type string; + } + } + grouping TaiRangeGrp { + list plmnId { + description "PLMN ID related to the TacRange."; + min-elements 1; + max-elements 1; + key "mcc mnc"; + uses types3gpp:PLMNId; + } + + list tacRangeList { + description "The range of the TACs."; + min-elements 1; + key "start end"; + uses TacRange; + } + } + + grouping TacRange { + leaf start { + description "First value identifying the start of a TAC range, + to be used when the range of TAC's can be represented + as a hexadecimal range (e.g., TAC ranges)."; + type string { + pattern '^([A-Fa-f0-9]{4}|[A-Fa-f0-9]{6}$)'; + } + } + + leaf end { + description "Last value identifying the end of a TAC range, + to be used when the range of TAC's can be represented as + a hexadecimal range (e.g. TAC ranges)."; + type string { + pattern '^([A-Fa-f0-9]{4}|[A-Fa-f0-9]{6})$'; + } + } + + leaf nRTACpattern { + description "Pattern (regular expression according to the ECMA-262) + representing the set of TAC's belonging to this range. + A TAC value is considered part of the range if and only if the + TAC string fully matches the regular expression."; + type string; + } + } + grouping DnnSmfInfoItem { + leaf dnn { + description "Supported DNN."; + mandatory true; + type string; + } + + leaf-list dnaiList { + description "List of Data network access identifiers supported by + the SMF for this DNN. The absence of this attribute indicates that + the SMF can be selected for this DNN for any DNAI."; + min-elements 1; + type string; + } + } + + grouping SupportedFunc { + leaf function { + type string; + } + leaf policy { + type string; + } + } + + typedef EnergySavingLoadThresholdT { + type uint32 { + range 0..10000; + } + units 1/10000; + } + + typedef EnergySavingTimeDurationT { + type uint32 { + range 0..900; + } + units seconds; + } + + typedef PhysCellID { + type uint32 { + range "0..1007"; + } + reference "clause 7.4.2 of TS 38.211"; + } + + typedef UTC24TimeOfDayT { + description "Time of day in HH:MM or H:MM 24-hour format per UTC + time zone."; + type string { + pattern "(([01]?[0-9])|(2[0-3])):([0-5][0-9])"; + } + } + + typedef DayOfWeekT { + type enumeration { + enum Monday; + enum Tuesday; + enum Wednesday; + enum Thursday; + enum Friday; + enum Saturday; + enum Sunday; + } + } + + grouping CaraConfigurationGrp { + description "This data type represents the configuration used for + an NR mobile node (e.g., IAB-node or MWAB), to perform certificate + enrolment procedure with Certification Authority server (CA/RA) + as specified in TS 28.315 clause 5.3"; + + leaf caraAddress { + type inet:host; + description "IP address or FQDN of the CMP (Certificate Management + Protocol) + server"; + } + + leaf portNumber { + type inet:port-number; + description "This parameter specifies the port number used by + CMP (Certificate Management Protocol) server. The port for HTTP/HTTPSs + transfer of CMP messages is not explicitly given in RFC 9811, therefore + this parameter is required. The port number is usually + represented as 2 octets."; + } + + leaf path { + type inet:uri; + mandatory true; + description "This parameter specifies the path (in ASCII string) to + the CMP server directory. A CMP server may be located in an + arbitrary path other than root."; + } + + leaf subjectName { + type string; + mandatory true; + description "This parameter specifies the subject name (in ASCII + string) of the CA/RA. The use is described in 3GPP TS 33.310 + clause 9.5.3."; + } + + leaf protocol { + type enumeration { + enum HTTP; + enum HTTPS; + } + description "This parameter specifies the protocol (HTTP or HTTPS) + to be used for certificate enrolment. The use is described in + 3GPP TS 33.310 clause 9.6."; + } + } + + grouping MnrOamIPConfigGrp { + description "This data type includes the configutation for OAM connectivity + used for an NR mobile node (e.g., IAB-node or MWAB), to establish connection with + management system. The configuration attributes include: + Configuration of certification authority (CA/RA) server, + Configuration of security gateway (SeGW), and + Configuration of software configuration server (SCS)"; + + list caraConfiguration { + description "configuration used for an NR mobile node (e.g., IAB-node or MWAB), + to perform certificate enrolment procedure as specified in + TS 28.315."; + uses CaraConfigurationGrp; + max-elements 1; + key caraAddress; + } + + leaf seGwConfiguration { + description "this parameter specifies IP address or + FQDN of security gateway (SeGW) used for an + an NR mobile node (e.g., IAB-node or MWAB) + to establish secure connection as specified in TS 28.315."; + type inet:host; + + } + + leaf scsConfiguration { + description "this parameter specifies IP address or FQDN of + configuration server (SCS) used for + an NR mobile node (e.g., IAB-node or MWAB) + to establish connection as specified in TS 28.315."; + type inet:host; + } + } + + grouping RuleSetGrp { + description "This data type represents list of rules specifying whether + access/scopes are allowed/denied for NF-Consumers."; + reference "3GPP TS 29.510 clause 6.2.6.2.121"; + + leaf priority { + description "It indicates the unique Priority of the rule. Lower value + means higher priority."; + mandatory true; + type uint32; + } + + list plmns { + description "It indicates PLMNs allowed/dis-allowed to access the + service instance. When absent, NF-Consumers of all PLMNs are + assumed to match this criteria."; + key "mcc mnc"; + uses types3gpp:PLMNId; + } + + list snpns { + description "It indicates SNPNs allowed/dis-allowed to access the + service instance. When absent, NF-Consumers of all SNPNs are + assumed to match this criteria."; + key "mcc mnc"; + uses PlmnIdNid; + } + + leaf-list nfTypes { + description "It indicates type of the NFs allowed/dis-allowed to + access the service instance. When absent, NF-Consumers of all + nfTypes are assumed to match this criteria."; + type types3gpp:NfType; + } + + leaf-list nfDomains { + description "It represents pattern (regular expression according to + the ECMA-262 dialect) representing the NF domain names within the + PLMN of the NRF allowed/dis-allowed to access the service instance. + When absent, NF-Consumers of all nfDomains are assumed to match + this criteria."; + type string; + } + + list nssais { + description "It represents S-NSSAIs of the NF-Consumers + allowed/dis-allowed to access the service instance. When absent, + NF-Consumers of all slices are assumed to match this criteria."; + key idx; + leaf idx { type uint32; } + uses ExtSnssaiGrp; + } + + leaf-list nfInstances { + description "It represents NF-Instance IDs of the NF-Consumers + allowed/dis-allowed to access the NF/NF-Service instance. When + absent, all the NF-Consumers are assumed to match this criteria."; + type string; + } + + leaf-list scopes { + description "It represents list of scopes allowed or denied to the + NF-Consumers matching the rule. The scopes shall be any of those + defined in the API that defines the current service. When absent, + the NF-Consumer is allowed or denied full access to all the + resources/operations of service instance."; + type string; + } + + leaf action { + description "It specifies whether the scopes/access mentioned are + allowed or denied for a specific NF-Consumer. + ALLOW: The NF consumer is allowed to access NF producer. + DENY: The NF consumer is not allowed to access NF Producer."; + mandatory true; + type enumeration { + enum ALLOW; + enum DENY; + } + } + } + + grouping LocationInfoGrp { + description "This data type contains location information + of an NR mobile node (e.g., IAB-node or MWAB)."; + + leaf gNBId { + type int64 { range "0..4294967295"; } + description "It is either the gNB ID of the IAB-donor-CU that target IAB-DU + connects to or the gNB Id of the IAB-nonor-CU that serves IAB-MT, or + the gNBId of the gNB that serves MWAB-UE."; + } + + list pLMNId { + uses types3gpp:PLMNId; + max-elements 1; + description "The PLMN ID where IAB-MT or MWAB-UE is connected to"; + key "mcc mnc"; + } + + leaf cellLocalId { + type int32 { range "0..16383"; } + description "Identifies an NR cell where IAB-MT or MWAB-UE + is connected to."; + } + + leaf nRTAC { + type types5g3gpp:NRTAC; + description "It is TAC pertaining to the cells where IAB-MT or MWAB-UE is + connected."; + } + + list tAI { + uses types3gpp:TaiGrp; + key idx; + leaf idx { type string; } + max-elements 1; + description "It is the TAI (see subclause 9.3.3.11 in TS 38.413) pertaining + to the cells where IAB-MT or MWAB-UE is connected"; + } + list geoArea { + uses types3gpp:GeoAreaGrp; + key idx; + leaf idx {type string;} + max-elements 1; + description "It specifies geographical area of mobile NR node + (e.g., IAB-node or MWAB-node)."; + } + } } \ No newline at end of file diff --git a/yang-models/_3gpp-5gc-nrm-nfservice.yang b/yang-models/_3gpp-5gc-nrm-nfservice.yang index 7099add4..f72613fc 100755 --- a/yang-models/_3gpp-5gc-nrm-nfservice.yang +++ b/yang-models/_3gpp-5gc-nrm-nfservice.yang @@ -1,719 +1,719 @@ -module _3gpp-5gc-nrm-nfservice { - yang-version 1.1; - - namespace urn:3gpp:sa5:_3gpp-5gc-nrm-nfservice; - prefix nfs3gpp; - - import _3gpp-common-yang-types { prefix types3gpp; } - import ietf-yang-types { prefix yang; } - import ietf-inet-types { prefix inet; } - import _3gpp-5g-common-yang-types { prefix types5g3gpp; } - - - organization "3gpp SA5"; - contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; - description "NF service dataType. - Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, - TTA, TTC). All rights reserved."; - reference "3GPP TS 29.510"; - - revision 2025-03-25 { reference CR-; } - revision 2025-01-25 { reference CR-1442; } - revision 2023-09-18 { reference CR-1043 ; } - revision 2021-01-25 { reference CR-0454 ; } - revision 2020-11-05 { reference CR-0412 ; } - revision 2019-06-17 { reference "initial revision"; } - - grouping NFServiceGrp { - description "This data type represents the NF Service - defined in TS 29.510 [23]."; - leaf serviceInstanceID { - description - "Unique ID of the service instance within a given NF Instance."; - mandatory true; - type string; - } - - leaf serviceName { - description "Name of the service instance (e.g. 'nudm-sdm')."; - mandatory true; - type ServiceName; - config false; - } - - list versions { - description "API versions supported by the NF Service and if available, - the corresponding retirement date of the NF Service."; - min-elements 1; - key "apiVersionInUri apiFullVersion"; - config false; - uses NFServiceVersion; - } - - leaf scheme { - description "URI scheme (e.g. 'http', 'https')."; - mandatory true; - type UriScheme; - } - - leaf nfServiceStatus { - description "Status of the NF Service Instance."; - mandatory true; - type NFServiceStatus; - } - - leaf fqdn { - description "FQDN of the NF Service Instance."; - //optional support - type inet:domain-name; - } - - leaf interPlmnFqdn { - description "If the NF service needs to be discoverable by other NFs in a - different PLMN, then an FQDN that is used for inter PLMN routing."; - //optional support - type inet:domain-name; - } - - list ipEndPoints { - description "IP address(es) and port information of the Network Function - (including IPv4 and/or IPv6 address)where the service is listening - for incoming service requests."; - //optional support - - key idx; - leaf idx { - type string; - } - min-elements 1; - uses ipEndPoint; - } - - leaf apiPrefix { - description "Optional path segment(s) used to construct the {apiRoot} - variable of the different API URIs."; - //optional support - type string; - } - - list defaultNotificationSubscriptions { - description "Notification endpoints for different notification types."; - key notificationType; - //optional support - min-elements 1; - uses types3gpp:DefaultNotificationSubscription; - } - - list allowedPLMNs { - description "PLMNs allowed to access the service instance. - The absence of this attribute indicates that any PLMN is allowed to - access the service instance."; - - min-elements 1; - //optional support - key "mcc mnc"; - uses types3gpp:PLMNId; - } - list allowedSnpns { - description "PLMNs allowed to access the service instance. - The absence of this attribute indicates that any PLMN is allowed to - access the service instance."; - - min-elements 1; - //optional support - key "mcc mnc"; - uses types3gpp:PLMNId; - } - leaf-list allowedNfTypes { - description "SNPNs allowed to access the NF instance"; - min-elements 1; - //optional support - type types3gpp:NfType; - } - - leaf-list allowedNfDomains { - description "Pattern representing the NF domain names allowed to - access the service instance."; - //optional support - min-elements 1; - type string; - } - - list allowedNSSAIs { - description "S-NSSAI of the allowed slices to access the service - instance. The absence of this attribute indicates that any slice - is allowed to access the service instance."; - min-elements 1; - //optional support - key "sd sst"; - uses types5g3gpp:SNssai; - } - - list allowedScopesRuleSet { - description "It represents map of rules specifying scopes allowed or - denied for NF-Consumers. This attribute may be present when the - NF-Producer and the NRF support Allowed-ruleset feature as specified - in clause 6.1.9 in TS 29.510."; - //optional support - key idx; - leaf idx { type uint32; } - uses types5g3gpp:RuleSetGrp; - } - - leaf-list allowedOperationsPerNfType { - description "It indicates the allowed operations on resources for - each type of NF; the key of the map is the NF Type, and the value - is an array of scopes"; - //optional support - type string; - min-elements 1; - } - leaf-list allowedOperationsPerNfInstance { - description "It indicates the allowed operations on resources for - a given NF Instance; the key of the map is the NF Instance Id, and - the value is an array of scopes"; - //optional support - type string; - min-elements 1; - } - leaf allowedOperationsPerNfInstanceOverrides { - type boolean; - default false; - //optional support - description "When it is present and set to true, indicates that - the scopes defined in attribute allowedOperationsPerNfInstance - for a given NF Instance ID take precedence over the scopes defined - in attribute allowedOperationsPerNfType for the corresponding - NF type of the NF Instance associated to such NF Instance ID.."; - } - list sNssais { - description "S-NSSAIs of the Network Function. If not - provided, the NF can serve any S-NSSAI. When present - this IE represents the list of S-NSSAIs supported in - all the PLMNs listed in the plmnList IE."; - //optional support - min-elements 1; - key "sst sd"; - uses types5g3gpp:SNssai; - } - - leaf oauth2Required { - type boolean; - //optional support - description "It indicates whether the NF Service Instance requires - Oauth2-based authorization."; - } - - leaf sharedServiceDataId { - type string; - //optional support - description "String uniquely identifying SharedServiceData. The format - of the sharedServiceDataId shall be a Universally Unique Identifier - (UUID) version 4, as described in IETF RFC 4122 [44]. The hexadecimal - letters should be formatted as lower-case characters by the sender, - and they shall be handled as case-insensitive by the receiver."; - } - - leaf priority { - description "Priority (relative to other services of the same type) - in the range of 0-65535, to be used for NF Service selection; lower - values indicate a higher priority."; - //optional support - type uint16 { range "0..65535"; } - } - - leaf capacity { - description "Static capacity information in the range of 0-65535, - expressed as a weight relative to other services of the same type."; - //optional support - type uint16; - } - - - leaf recoveryTime { - description "Timestamp when the NF was (re)started."; - //optional support - type yang:date-and-time; - } - - leaf vendorId { - description "Vendor ID of the NF instance"; - //optional support - type string; - } - list callbackUriPrefixList { - description "It indicates the optional path segment(s) used to construct - the prefix of the Callback URIs during the reselection of an NF - service consumer."; - //optional support - reference "3GPP TS 29.501 [23], clause 4.4.3."; - key callbackUriPrefix; - min-elements 1; - uses CallbackUriPrefixItemGrp; - } - leaf supportedFeatures { - description "It is a string, which indicates the features of the service - corresponding to the subscribed default notification, which are supported - by the NF (Service) instance acting as NF service consumer."; - reference "3GPP TS 29.571 table 5.2.2-3"; - //optional - type types3gpp:SupportedFeatures; - } - uses types5g3gpp:SupportedVendorSpecificFeaturesGrp; - leaf load { - description "Latest known load information of the NF, percentage."; - type types3gpp:Load; - config false; - } - leaf loadTimeStamp { - description "Timestamp of the reported load information."; - type yang:date-and-time; - config false; - } - leaf-list nfServiceSetIdList { - description "This attribute represents a list of NF Service Set ID. - At most one NF Service Set ID shall be indicated per PLMN-ID or - SNPN of the NF."; - type string; - min-elements 1; - } - list perPlmnSnssaiList { - description "It includes the S-NSSAIs supported by the Network Function - for each PLMN supported by the Network Function. When present, it - shall override sNssais IE."; - key idx; - leaf idx { type uint32; } - uses PlmnSnssai; - } - - leaf canaryRelease { - description "This attribute indicates whether an NF instance whose - nfStatus is set to REGISTERED is in Canary Release condition, i.e. - it should only be selected by NF Service Consumers under the - conditions indicated by the selectionConditions attribute. - True: the NF is under Canary Release condition, even if the - nfStatus is set to REGISTERED. - False: the NF instance indicates its Canary Release condition - via the nfStatus attribute."; - //optional support - type boolean; - default false; - } - - leaf exclusiveCanaryReleaseSelection { - description "This attribute indicates whether an NF Service Consumer - should only select an NF Service Producer in Canary Release condition. - True: the consumer shall only select producers in Canary Release - condition. - False: the consumer may select producers not in Canary Release - condition."; - //optional support - type boolean; - default false; - } - - leaf shutdownTime { - description "This attribute may be present if the nfStatus is set to - UNDISCOVERABLE due to scheduled shutdown. When present, it shall - indicate the timestamp when the NF Instance is planned to be - shut down."; - //optional support - type yang:date-and-time; - config false; - } - - leaf canaryPrecedenceOverPreferred { - description "This attribute indicates whether the NRF shall prioritize - the NF Service Producer in Canary Release condition over the - preferences (preferred-xxx, ext-preferred-xxx) present in NF - discovery requests. - True: NRF shall prioritize NF Service Producers in Canary Release - condition at NF discovery requests. - False: NRF shall prioritize the NF Service Producers according to - preferred-xxx and/or ext-preferred-xxx."; - //optional support - type boolean; - default false; - } - - list perPlmnOauth2ReqList { - description "This attribute includes the Oauth2-based authorization - requirement supported by the NF Service Instance per PLMN of the - NF Service Consumer. This attribute may be included when the - Oauth2.0 authorization requirement supported by the NF Service - Instance for different PLMN is different. When the requester - PLMN Id is available in perPlmnOauth2ReqList IE, this IE shall - override the oauth2Required IE. If the requester PLMN ID is not - present in perPlmnOauth2ReqList IE, then the value of - oauth2Required IE shall be applicable if available."; - //optional support - key idx; - leaf idx { type uint32; } - max-elements 1; - uses PlmnOauth2Grp; - } - - list selectionConditions { - description "This attribute includes the conditions under which an NF - Instance with an NFStatus value set to CANARY_RELEASE, or with a - canaryRelease attribute set to true, shall be selected by an NF - Service Consumer."; - //optional support - key idx; - leaf idx { type uint32; } - max-elements 1; - uses SelectionConditionsGrp; - } - } - - - - grouping CallbackUriPrefixItemGrp { - description "This <> represents Callback URI prefix value to - be used for specific notification types."; - reference "3GPP TS 29.510 clause 6.1.6.2.127"; - - leaf callbackUriPrefix { - description "It indicates the optional path segment(s) used to - construct the prefix of the Callback URIs during the reselection - of an NF service consumer."; - mandatory true; - type inet:uri; - reference "3GPP TS 29.501 clause 4.4.3"; - } - - leaf-list notificationTypes { - description "List of notification type values using the callback - URI prefix of the callbackUriPrefix."; - type string; - } - } - - grouping PlmnOauth2Grp { - description "This <> represents the per PLMN Oauth2.0 - indication."; - reference "3GPP TS 29.510 clause 6.1.6.2.102"; - - list oauth2RequiredPlmnIdList { - description "List of PLMN IDs for which Oauth2.0 authorization is - required."; - //optional support - min-elements 1; - key "mcc mnc"; - uses types3gpp:PLMNId; - } - - list oauth2NotRequiredPlmnIdList { - description "List of PLMN IDs for which Oauth2.0 authorization is - not required."; - //optional support - min-elements 1; - key "mcc mnc"; - uses types3gpp:PLMNId; - } - } - - grouping PlmnSnssai { - description "This data type represents the list of S-NSSAIs supported - per PLMN."; - list plmnId { - description "PLMN ID for which list of supported S-NSSAI(s) - is provided."; - min-elements 1; - max-elements 1; - key "mcc mnc"; - uses types3gpp:PLMNId; - } - list sNssaiList { - description "The specific list of S-NSSAIs supported - by the given PLMN."; - min-elements 1; - max-elements 1; - key "sst sd"; - uses types5g3gpp:SNssai; - } - leaf nid { - description "Network Identity; Shall be present if PlmnIdNid - identifies an SNPN."; - reference "see clauses 5.30.2.3, 5.30.2.9, 6.3.4, - and 6.3.8 in 3GPP TS 23.501"; - type string; - } - } - - grouping ConditionItemGrp { - description "This <> represents a single condition item that - shall be evaluated to determine whether a discovered NF (Service) - Instance shall be selected."; - reference "3GPP TS 29.510 clause 6.1.6.2.124"; - - leaf-list consumerNfTypes { - description "It represents the NF types of the consumers for which - the conditions included in this ConditionItem apply. If this - attribute is absent, the conditions are applicable to all NF - consumer types."; - min-elements 1; - type types3gpp:NfType; - } - leaf serviceFeature { - description "It represents a feature number of that NF Service - Instance, under CANARY_RELEASE status."; - type uint32; - } - leaf vsServiceFeature { - description "It represents a Vendor-Specific feature number of that - NF Service Instance, under CANARY_RELEASE status."; - type uint32; - } - list supiRangeList { - description "It represents a set of SUPIs for which the NF (Service) - instance under CANARY_RELEASE status shall be selected."; - key idx; - leaf idx { type uint32; } - min-elements 1; - uses types5g3gpp:SupiRangeGrp; - } - list gpsiRangeList { - description "It represents a set of GPSIs for which the NF (Service) - instance under CANARY_RELEASE status shall be selected."; - key idx; - leaf idx { type uint32; } - min-elements 1; - uses types5g3gpp:IdentityRangeGrp; - } - list impuRangeList { - description "It represents a set of IMS Public Identities for which - the NF (Service) instance under CANARY_RELEASE status shall be - selected."; - key idx; - leaf idx { type uint32; } - min-elements 1; - uses types5g3gpp:IdentityRangeGrp; - } - list impiRangeList { - description "It represents a set of IMS Private Identities for which - the NF (Service) instance under CANARY_RELEASE status shall be - selected."; - key idx; - leaf idx { type uint32; } - min-elements 1; - uses types5g3gpp:IdentityRangeGrp; - } - leaf-list peiList { - description "It represents a set of PEIs of the UEs for which the - NF (Service) instance under CANARY_RELEASE status shall be - selected."; - min-elements 1; - type string; - } - list taiRangeList { - description "It represents a set of TAIs where the NF (Service) - instance under CANARY_RELEASE status shall be selected for a - certain UE."; - key idx; - leaf idx { type uint32; } - min-elements 1; - uses types5g3gpp:TaiRangeGrp; - } - leaf-list dnnList { - description "It represents a set of DNNs where the NF (Service) - instance under CANARY_RELEASE status shall be selected."; - min-elements 1; - type string; - } - } - - grouping SelectionConditionsGrp { - description "This <> represents the list of conditions that - shall be selected by an NF Service Consumer."; - reference "3GPP TS 29.510 clause 6.1.6.2.123"; - - list conditionItem { - key "id"; - description "It represent a single condition item that shall be - evaluated to determine whether a discovered NF (Service) Instance - shall be selected."; - leaf id { type string; } - uses ConditionItemGrp; - } - - list conditionGroup { - description "It represents a group of conditions that shall be - evaluated."; - key idx; - leaf idx { type uint32; } - max-elements 1; - // Note: ConditionGroup references SelectionConditions creating a - // circular dependency. Inlined one level to avoid it. - choice LogicalOperator { - case and { - list and { - description "It represents a list of conditions where the - overall evaluation is true only if all the conditions in - the list are evaluated as true."; - key idx; - leaf idx { type uint32; } - list conditionItem { - key "id"; - description "Condition item to be evaluated."; - leaf id { type string; } - uses ConditionItemGrp; - } - } - } - case or { - list or { - description "It represents a list of conditions where the - overall evaluation is true if at least one of the conditions - in the list is evaluated as true."; - key idx; - leaf idx { type uint32; } - list conditionItem { - key "id"; - description "Condition item to be evaluated."; - leaf id { type string; } - uses ConditionItemGrp; - } - } - } - } - } - } - - grouping ipEndPoint { - choice address { - leaf ipv4Address { - type inet:ipv4-address; - } - - leaf ipv6Address { - type inet:ipv6-address; - } - - leaf ipv6Prefix { - type inet:ipv6-prefix; - } - } - - leaf transport { - type TransportProtocol; - } - - leaf port { - type uint16; - } - } - - typedef TransportProtocol { - type enumeration { - enum TCP; - enum STCP; - enum UDP; - } - } - - grouping NFServiceVersion { - leaf apiVersionInUri { - mandatory true; - type string; - } - - leaf apiFullVersion { - mandatory true; - type string; - } - - leaf expiry { - //optional to support - type yang:date-and-time; - } - } - - typedef ServiceName { - type enumeration { - enum NNRF_NFM; - enum NNRF_DISC; - enum NUDM_SDM; - enum NUDM_UECM; - enum NUDM_UEAU; - enum NUDM_EE; - enum NUDM_PP; - enum NAMF_COMM; - enum NAMF_EVTS; - enum NAMF_MT; - enum NAMF_LOC; - enum NSMF_PDUSESSION; - enum NSMF_EVENT-EXPOSURE; - enum NAUSF_AUTH; - enum NAUSF_SORPROTECTION; - enum NNEF_PFDMANAGEMENT; - enum NPCF_AM-POLICY-CONTROL; - enum NPCF_SMPOLICYCONTROL; - enum NPCF_POLICYAUTHORIZATION; - enum NPCF_BDTPOLICYCONTROL; - enum NPCF_EVENTEXPOSURE; - enum NPCF_UE_POLICY_CONTROL; - enum NSMSF_SMS; - enum NNSSF_NSSELECTION; - enum NNSSF_NSSAIAVAILABILITY; - enum NUDR_DR; - enum NLMF_LOC; - enum N5G_EIR_EIC; - enum NBSF_MANAGEMENT; - enum NCHF_SPENDINGLIMITCONTROL; - enum NCHF_CONVERGEDCHARGING; - enum NNWDAF_EVENTSSUBSCRIPTION; - enum NNWDAF_ANALYTICSINFO; - } - } - - typedef UriScheme { - type enumeration { - enum HTTP; - enum HTTPS; - } - } - - typedef NFServiceStatus { - type enumeration { - enum REGISTERED; - enum SUSPENDED; - enum UNDISCOVERABLE; - } - } - - grouping ChfServiceInfo { - leaf primaryChfServiceInstance { - description "Shall be present if the CHF service instance serves as a - secondary CHF instance of another primary CHF service instance."; - //conditional to support - type string; - } - - leaf secondaryChfServiceInstance { - description "Shall be present if the CHF service instance serves as a - primary CHF instance of another secondary CHF service instance."; - //conditional to support - type string; - } - } - grouping SNPNIdGrp { - description "This <> represents the information of a SNPN - identification"; - leaf mCC { - description "This is the Mobile Country Code (MCC) of the PLMN - identifier. See TS 23.003 [13] subclause 2.2 and 12.1"; - type string; - } - leaf mNC { - description "This is the Mobile Network Code (MNC) of the PLMN - identifier. See TS 23.003 [13] subclause 2.2 and 12.1."; - type string; - } - leaf nId { - description "Network Identity; Shall be present if PlmnIdNid - identifies an SNPN"; - type string; - } - } +module _3gpp-5gc-nrm-nfservice { + yang-version 1.1; + + namespace urn:3gpp:sa5:_3gpp-5gc-nrm-nfservice; + prefix nfs3gpp; + + import _3gpp-common-yang-types { prefix types3gpp; } + import ietf-yang-types { prefix yang; } + import ietf-inet-types { prefix inet; } + import _3gpp-5g-common-yang-types { prefix types5g3gpp; } + + + organization "3gpp SA5"; + contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; + description "NF service dataType. + Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + TTA, TTC). All rights reserved."; + reference "3GPP TS 29.510"; + + revision 2025-03-25 { reference CR-; } + revision 2025-01-25 { reference CR-1442; } + revision 2023-09-18 { reference CR-1043 ; } + revision 2021-01-25 { reference CR-0454 ; } + revision 2020-11-05 { reference CR-0412 ; } + revision 2019-06-17 { reference "initial revision"; } + + grouping NFServiceGrp { + description "This data type represents the NF Service + defined in TS 29.510 [23]."; + leaf serviceInstanceID { + description + "Unique ID of the service instance within a given NF Instance."; + mandatory true; + type string; + } + + leaf serviceName { + description "Name of the service instance (e.g. 'nudm-sdm')."; + mandatory true; + type ServiceName; + config false; + } + + list versions { + description "API versions supported by the NF Service and if available, + the corresponding retirement date of the NF Service."; + min-elements 1; + key "apiVersionInUri apiFullVersion"; + config false; + uses NFServiceVersion; + } + + leaf scheme { + description "URI scheme (e.g. 'http', 'https')."; + mandatory true; + type UriScheme; + } + + leaf nfServiceStatus { + description "Status of the NF Service Instance."; + mandatory true; + type NFServiceStatus; + } + + leaf fqdn { + description "FQDN of the NF Service Instance."; + //optional support + type inet:domain-name; + } + + leaf interPlmnFqdn { + description "If the NF service needs to be discoverable by other NFs in a + different PLMN, then an FQDN that is used for inter PLMN routing."; + //optional support + type inet:domain-name; + } + + list ipEndPoints { + description "IP address(es) and port information of the Network Function + (including IPv4 and/or IPv6 address)where the service is listening + for incoming service requests."; + //optional support + + key idx; + leaf idx { + type string; + } + min-elements 1; + uses ipEndPoint; + } + + leaf apiPrefix { + description "Optional path segment(s) used to construct the {apiRoot} + variable of the different API URIs."; + //optional support + type string; + } + + list defaultNotificationSubscriptions { + description "Notification endpoints for different notification types."; + key notificationType; + //optional support + min-elements 1; + uses types3gpp:DefaultNotificationSubscription; + } + + list allowedPLMNs { + description "PLMNs allowed to access the service instance. + The absence of this attribute indicates that any PLMN is allowed to + access the service instance."; + + min-elements 1; + //optional support + key "mcc mnc"; + uses types3gpp:PLMNId; + } + list allowedSnpns { + description "PLMNs allowed to access the service instance. + The absence of this attribute indicates that any PLMN is allowed to + access the service instance."; + + min-elements 1; + //optional support + key "mcc mnc"; + uses types3gpp:PLMNId; + } + leaf-list allowedNfTypes { + description "SNPNs allowed to access the NF instance"; + min-elements 1; + //optional support + type types3gpp:NfType; + } + + leaf-list allowedNfDomains { + description "Pattern representing the NF domain names allowed to + access the service instance."; + //optional support + min-elements 1; + type string; + } + + list allowedNSSAIs { + description "S-NSSAI of the allowed slices to access the service + instance. The absence of this attribute indicates that any slice + is allowed to access the service instance."; + min-elements 1; + //optional support + key "sd sst"; + uses types5g3gpp:SNssai; + } + + list allowedScopesRuleSet { + description "It represents map of rules specifying scopes allowed or + denied for NF-Consumers. This attribute may be present when the + NF-Producer and the NRF support Allowed-ruleset feature as specified + in clause 6.1.9 in TS 29.510."; + //optional support + key idx; + leaf idx { type uint32; } + uses types5g3gpp:RuleSetGrp; + } + + leaf-list allowedOperationsPerNfType { + description "It indicates the allowed operations on resources for + each type of NF; the key of the map is the NF Type, and the value + is an array of scopes"; + //optional support + type string; + min-elements 1; + } + leaf-list allowedOperationsPerNfInstance { + description "It indicates the allowed operations on resources for + a given NF Instance; the key of the map is the NF Instance Id, and + the value is an array of scopes"; + //optional support + type string; + min-elements 1; + } + leaf allowedOperationsPerNfInstanceOverrides { + type boolean; + default false; + //optional support + description "When it is present and set to true, indicates that + the scopes defined in attribute allowedOperationsPerNfInstance + for a given NF Instance ID take precedence over the scopes defined + in attribute allowedOperationsPerNfType for the corresponding + NF type of the NF Instance associated to such NF Instance ID.."; + } + list sNssais { + description "S-NSSAIs of the Network Function. If not + provided, the NF can serve any S-NSSAI. When present + this IE represents the list of S-NSSAIs supported in + all the PLMNs listed in the plmnList IE."; + //optional support + min-elements 1; + key "sst sd"; + uses types5g3gpp:SNssai; + } + + leaf oauth2Required { + type boolean; + //optional support + description "It indicates whether the NF Service Instance requires + Oauth2-based authorization."; + } + + leaf sharedServiceDataId { + type string; + //optional support + description "String uniquely identifying SharedServiceData. The format + of the sharedServiceDataId shall be a Universally Unique Identifier + (UUID) version 4, as described in IETF RFC 4122 [44]. The hexadecimal + letters should be formatted as lower-case characters by the sender, + and they shall be handled as case-insensitive by the receiver."; + } + + leaf priority { + description "Priority (relative to other services of the same type) + in the range of 0-65535, to be used for NF Service selection; lower + values indicate a higher priority."; + //optional support + type uint16 { range "0..65535"; } + } + + leaf capacity { + description "Static capacity information in the range of 0-65535, + expressed as a weight relative to other services of the same type."; + //optional support + type uint16; + } + + + leaf recoveryTime { + description "Timestamp when the NF was (re)started."; + //optional support + type yang:date-and-time; + } + + leaf vendorId { + description "Vendor ID of the NF instance"; + //optional support + type string; + } + list callbackUriPrefixList { + description "It indicates the optional path segment(s) used to construct + the prefix of the Callback URIs during the reselection of an NF + service consumer."; + //optional support + reference "3GPP TS 29.501 [23], clause 4.4.3."; + key callbackUriPrefix; + min-elements 1; + uses CallbackUriPrefixItemGrp; + } + leaf supportedFeatures { + description "It is a string, which indicates the features of the service + corresponding to the subscribed default notification, which are supported + by the NF (Service) instance acting as NF service consumer."; + reference "3GPP TS 29.571 table 5.2.2-3"; + //optional + type types3gpp:SupportedFeatures; + } + uses types5g3gpp:SupportedVendorSpecificFeaturesGrp; + leaf load { + description "Latest known load information of the NF, percentage."; + type types3gpp:Load; + config false; + } + leaf loadTimeStamp { + description "Timestamp of the reported load information."; + type yang:date-and-time; + config false; + } + leaf-list nfServiceSetIdList { + description "This attribute represents a list of NF Service Set ID. + At most one NF Service Set ID shall be indicated per PLMN-ID or + SNPN of the NF."; + type string; + min-elements 1; + } + list perPlmnSnssaiList { + description "It includes the S-NSSAIs supported by the Network Function + for each PLMN supported by the Network Function. When present, it + shall override sNssais IE."; + key idx; + leaf idx { type uint32; } + uses PlmnSnssai; + } + + leaf canaryRelease { + description "This attribute indicates whether an NF instance whose + nfStatus is set to REGISTERED is in Canary Release condition, i.e. + it should only be selected by NF Service Consumers under the + conditions indicated by the selectionConditions attribute. + True: the NF is under Canary Release condition, even if the + nfStatus is set to REGISTERED. + False: the NF instance indicates its Canary Release condition + via the nfStatus attribute."; + //optional support + type boolean; + default false; + } + + leaf exclusiveCanaryReleaseSelection { + description "This attribute indicates whether an NF Service Consumer + should only select an NF Service Producer in Canary Release condition. + True: the consumer shall only select producers in Canary Release + condition. + False: the consumer may select producers not in Canary Release + condition."; + //optional support + type boolean; + default false; + } + + leaf shutdownTime { + description "This attribute may be present if the nfStatus is set to + UNDISCOVERABLE due to scheduled shutdown. When present, it shall + indicate the timestamp when the NF Instance is planned to be + shut down."; + //optional support + type yang:date-and-time; + config false; + } + + leaf canaryPrecedenceOverPreferred { + description "This attribute indicates whether the NRF shall prioritize + the NF Service Producer in Canary Release condition over the + preferences (preferred-xxx, ext-preferred-xxx) present in NF + discovery requests. + True: NRF shall prioritize NF Service Producers in Canary Release + condition at NF discovery requests. + False: NRF shall prioritize the NF Service Producers according to + preferred-xxx and/or ext-preferred-xxx."; + //optional support + type boolean; + default false; + } + + list perPlmnOauth2ReqList { + description "This attribute includes the Oauth2-based authorization + requirement supported by the NF Service Instance per PLMN of the + NF Service Consumer. This attribute may be included when the + Oauth2.0 authorization requirement supported by the NF Service + Instance for different PLMN is different. When the requester + PLMN Id is available in perPlmnOauth2ReqList IE, this IE shall + override the oauth2Required IE. If the requester PLMN ID is not + present in perPlmnOauth2ReqList IE, then the value of + oauth2Required IE shall be applicable if available."; + //optional support + key idx; + leaf idx { type uint32; } + max-elements 1; + uses PlmnOauth2Grp; + } + + list selectionConditions { + description "This attribute includes the conditions under which an NF + Instance with an NFStatus value set to CANARY_RELEASE, or with a + canaryRelease attribute set to true, shall be selected by an NF + Service Consumer."; + //optional support + key idx; + leaf idx { type uint32; } + max-elements 1; + uses SelectionConditionsGrp; + } + } + + + + grouping CallbackUriPrefixItemGrp { + description "This <> represents Callback URI prefix value to + be used for specific notification types."; + reference "3GPP TS 29.510 clause 6.1.6.2.127"; + + leaf callbackUriPrefix { + description "It indicates the optional path segment(s) used to + construct the prefix of the Callback URIs during the reselection + of an NF service consumer."; + mandatory true; + type inet:uri; + reference "3GPP TS 29.501 clause 4.4.3"; + } + + leaf-list notificationTypes { + description "List of notification type values using the callback + URI prefix of the callbackUriPrefix."; + type string; + } + } + + grouping PlmnOauth2Grp { + description "This <> represents the per PLMN Oauth2.0 + indication."; + reference "3GPP TS 29.510 clause 6.1.6.2.102"; + + list oauth2RequiredPlmnIdList { + description "List of PLMN IDs for which Oauth2.0 authorization is + required."; + //optional support + min-elements 1; + key "mcc mnc"; + uses types3gpp:PLMNId; + } + + list oauth2NotRequiredPlmnIdList { + description "List of PLMN IDs for which Oauth2.0 authorization is + not required."; + //optional support + min-elements 1; + key "mcc mnc"; + uses types3gpp:PLMNId; + } + } + + grouping PlmnSnssai { + description "This data type represents the list of S-NSSAIs supported + per PLMN."; + list plmnId { + description "PLMN ID for which list of supported S-NSSAI(s) + is provided."; + min-elements 1; + max-elements 1; + key "mcc mnc"; + uses types3gpp:PLMNId; + } + list sNssaiList { + description "The specific list of S-NSSAIs supported + by the given PLMN."; + min-elements 1; + max-elements 1; + key "sst sd"; + uses types5g3gpp:SNssai; + } + leaf nid { + description "Network Identity; Shall be present if PlmnIdNid + identifies an SNPN."; + reference "see clauses 5.30.2.3, 5.30.2.9, 6.3.4, + and 6.3.8 in 3GPP TS 23.501"; + type string; + } + } + + grouping ConditionItemGrp { + description "This <> represents a single condition item that + shall be evaluated to determine whether a discovered NF (Service) + Instance shall be selected."; + reference "3GPP TS 29.510 clause 6.1.6.2.124"; + + leaf-list consumerNfTypes { + description "It represents the NF types of the consumers for which + the conditions included in this ConditionItem apply. If this + attribute is absent, the conditions are applicable to all NF + consumer types."; + min-elements 1; + type types3gpp:NfType; + } + leaf serviceFeature { + description "It represents a feature number of that NF Service + Instance, under CANARY_RELEASE status."; + type uint32; + } + leaf vsServiceFeature { + description "It represents a Vendor-Specific feature number of that + NF Service Instance, under CANARY_RELEASE status."; + type uint32; + } + list supiRangeList { + description "It represents a set of SUPIs for which the NF (Service) + instance under CANARY_RELEASE status shall be selected."; + key idx; + leaf idx { type uint32; } + min-elements 1; + uses types5g3gpp:SupiRangeGrp; + } + list gpsiRangeList { + description "It represents a set of GPSIs for which the NF (Service) + instance under CANARY_RELEASE status shall be selected."; + key idx; + leaf idx { type uint32; } + min-elements 1; + uses types5g3gpp:IdentityRangeGrp; + } + list impuRangeList { + description "It represents a set of IMS Public Identities for which + the NF (Service) instance under CANARY_RELEASE status shall be + selected."; + key idx; + leaf idx { type uint32; } + min-elements 1; + uses types5g3gpp:IdentityRangeGrp; + } + list impiRangeList { + description "It represents a set of IMS Private Identities for which + the NF (Service) instance under CANARY_RELEASE status shall be + selected."; + key idx; + leaf idx { type uint32; } + min-elements 1; + uses types5g3gpp:IdentityRangeGrp; + } + leaf-list peiList { + description "It represents a set of PEIs of the UEs for which the + NF (Service) instance under CANARY_RELEASE status shall be + selected."; + min-elements 1; + type string; + } + list taiRangeList { + description "It represents a set of TAIs where the NF (Service) + instance under CANARY_RELEASE status shall be selected for a + certain UE."; + key idx; + leaf idx { type uint32; } + min-elements 1; + uses types5g3gpp:TaiRangeGrp; + } + leaf-list dnnList { + description "It represents a set of DNNs where the NF (Service) + instance under CANARY_RELEASE status shall be selected."; + min-elements 1; + type string; + } + } + + grouping SelectionConditionsGrp { + description "This <> represents the list of conditions that + shall be selected by an NF Service Consumer."; + reference "3GPP TS 29.510 clause 6.1.6.2.123"; + + list conditionItem { + key "id"; + description "It represent a single condition item that shall be + evaluated to determine whether a discovered NF (Service) Instance + shall be selected."; + leaf id { type string; } + uses ConditionItemGrp; + } + + list conditionGroup { + description "It represents a group of conditions that shall be + evaluated."; + key idx; + leaf idx { type uint32; } + max-elements 1; + // Note: ConditionGroup references SelectionConditions creating a + // circular dependency. Inlined one level to avoid it. + choice LogicalOperator { + case and { + list and { + description "It represents a list of conditions where the + overall evaluation is true only if all the conditions in + the list are evaluated as true."; + key idx; + leaf idx { type uint32; } + list conditionItem { + key "id"; + description "Condition item to be evaluated."; + leaf id { type string; } + uses ConditionItemGrp; + } + } + } + case or { + list or { + description "It represents a list of conditions where the + overall evaluation is true if at least one of the conditions + in the list is evaluated as true."; + key idx; + leaf idx { type uint32; } + list conditionItem { + key "id"; + description "Condition item to be evaluated."; + leaf id { type string; } + uses ConditionItemGrp; + } + } + } + } + } + } + + grouping ipEndPoint { + choice address { + leaf ipv4Address { + type inet:ipv4-address; + } + + leaf ipv6Address { + type inet:ipv6-address; + } + + leaf ipv6Prefix { + type inet:ipv6-prefix; + } + } + + leaf transport { + type TransportProtocol; + } + + leaf port { + type uint16; + } + } + + typedef TransportProtocol { + type enumeration { + enum TCP; + enum STCP; + enum UDP; + } + } + + grouping NFServiceVersion { + leaf apiVersionInUri { + mandatory true; + type string; + } + + leaf apiFullVersion { + mandatory true; + type string; + } + + leaf expiry { + //optional to support + type yang:date-and-time; + } + } + + typedef ServiceName { + type enumeration { + enum NNRF_NFM; + enum NNRF_DISC; + enum NUDM_SDM; + enum NUDM_UECM; + enum NUDM_UEAU; + enum NUDM_EE; + enum NUDM_PP; + enum NAMF_COMM; + enum NAMF_EVTS; + enum NAMF_MT; + enum NAMF_LOC; + enum NSMF_PDUSESSION; + enum NSMF_EVENT-EXPOSURE; + enum NAUSF_AUTH; + enum NAUSF_SORPROTECTION; + enum NNEF_PFDMANAGEMENT; + enum NPCF_AM-POLICY-CONTROL; + enum NPCF_SMPOLICYCONTROL; + enum NPCF_POLICYAUTHORIZATION; + enum NPCF_BDTPOLICYCONTROL; + enum NPCF_EVENTEXPOSURE; + enum NPCF_UE_POLICY_CONTROL; + enum NSMSF_SMS; + enum NNSSF_NSSELECTION; + enum NNSSF_NSSAIAVAILABILITY; + enum NUDR_DR; + enum NLMF_LOC; + enum N5G_EIR_EIC; + enum NBSF_MANAGEMENT; + enum NCHF_SPENDINGLIMITCONTROL; + enum NCHF_CONVERGEDCHARGING; + enum NNWDAF_EVENTSSUBSCRIPTION; + enum NNWDAF_ANALYTICSINFO; + } + } + + typedef UriScheme { + type enumeration { + enum HTTP; + enum HTTPS; + } + } + + typedef NFServiceStatus { + type enumeration { + enum REGISTERED; + enum SUSPENDED; + enum UNDISCOVERABLE; + } + } + + grouping ChfServiceInfo { + leaf primaryChfServiceInstance { + description "Shall be present if the CHF service instance serves as a + secondary CHF instance of another primary CHF service instance."; + //conditional to support + type string; + } + + leaf secondaryChfServiceInstance { + description "Shall be present if the CHF service instance serves as a + primary CHF instance of another secondary CHF service instance."; + //conditional to support + type string; + } + } + grouping SNPNIdGrp { + description "This <> represents the information of a SNPN + identification"; + leaf mCC { + description "This is the Mobile Country Code (MCC) of the PLMN + identifier. See TS 23.003 [13] subclause 2.2 and 12.1"; + type string; + } + leaf mNC { + description "This is the Mobile Network Code (MNC) of the PLMN + identifier. See TS 23.003 [13] subclause 2.2 and 12.1."; + type string; + } + leaf nId { + description "Network Identity; Shall be present if PlmnIdNid + identifies an SNPN"; + type string; + } + } } \ No newline at end of file diff --git a/yang-models/_3gpp-common-yang-types.yang b/yang-models/_3gpp-common-yang-types.yang index 541468cf..62600bb9 100755 --- a/yang-models/_3gpp-common-yang-types.yang +++ b/yang-models/_3gpp-common-yang-types.yang @@ -1,1169 +1,1169 @@ -module _3gpp-common-yang-types { - yang-version 1.1; - namespace "urn:3gpp:sa5:_3gpp-common-yang-types"; - prefix "types3gpp"; - - import ietf-inet-types { prefix inet; } - import ietf-yang-types { prefix yang; } - import _3gpp-common-yang-extensions { prefix yext3gpp; } - - organization "3GPP SA5"; - contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; - description "The model defines a YANG mapping of the top level - information classes used for management of 5G networks and - network slicing. - Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, - TTA, TTC). All rights reserved."; - reference "3GPP TS 28.623"; - - revision 2026-03-19 { reference "CR-xxxx"; } - revision 2025-10-07 { reference "CR-0573 CR-0582 CR-583"; } - revision 2025-10-01 { reference "CR-0578" ; } - revision 2025-08-31 { reference "CR-0551 CR-0556 CR-0562"; } - revision 2025-02-19 { reference CR-0512; } - revision 2025-02-07 { reference CR-0492; } - revision 2024-11-25 { reference CR-1442; } - revision 2024-11-25 { reference CR-1412; } - revision 2024-11-01 { reference CR-0463; } - revision 2024-08-13 { reference CR-0387; } - revision 2024-05-18 { reference CR-0359; } - revision 2024-04-12 { reference CR-0346; } - revision 2023-11-06 { reference CR-0305; } - revision 2023-09-18 { reference CR-0271 ; } - revision 2023-08-09 { reference CR-0266; } - revision 2023-05-10 { reference CR-0250; } - revision 2023-02-14 { reference CR-0234; } - revision 2022-11-04 { reference "CR-0194"; } - revision 2022-10-24 { reference CR-0196; } - revision 2022-07-26 { reference "CR-0180" ; } - revision 2022-02-09 { reference "CR-0144"; } - revision 2021-11-01 { reference "CR-0141"; } - - revision 2021-09-30 { - description "Added Longitude, Latitude, TenthOfDegrees, OnOff."; - reference "CR-0138"; - } - - revision 2020-11-06 { - description "Removed incorrect S-NSSAI definitions."; - reference "CR-0118"; - } - - revision 2020-03-10 { - description "Removed faulty when statements."; - reference "SP-200229"; - } - - revision 2019-10-25 { - description "Added ManagedNFProfile."; - reference "S5-194457"; - } - - revision 2019-10-16 { - description "Added SAP and usageState."; - reference "S5-193518"; - } - - revision 2019-06-23 { - reference "Initial version."; - } - - typedef EnabledDisabled { - type enumeration { - enum DISABLED ; - enum ENABLED ; - } - } - - grouping nameValuePair { - leaf name { type string; } - leaf value { type string; } - } - - typedef DayOfWeek { - type enumeration { - enum MONDAY; - enum TUESDAY; - enum WEDNESDAY; - enum THURSDAY; - enum FRIDAY; - enum SATURDAY; - enum SUNDAY; - } - } - - typedef DateMonth { - type uint8 { - range 0..12; - } - } - - typedef DateMonthDay { - type uint8 { - range 0..31; - } - } - - typedef FullTime { - type yang:time; - } - - grouping DayInYearGrp { - description "This <> represents a day in a year."; - - leaf month { - description "It indicates the month in a year."; - type DateMonth; - mandatory true; - } - - leaf monthDay { - description "It indicates the day in a month."; - type DateMonthDay; - mandatory true; - } - } - - grouping TimeWindowGrp { - leaf startTime { - type yang:date-and-time; - yext3gpp:inVariant; - } - leaf endTime { - type yang:date-and-time; - yext3gpp:inVariant; - } - } - - grouping ProcessMonitorGrp { - description "Provides attributes to monitor the progress of processes - with specific purpose and limited lifetime running on MnS producers. - It may be used as data type for dedicated progress monitor attributes - when specifying the management representation of these processes. - The attributes in this clause are defined in a generic way. - For some attributes specialisations may be provided when specifying a - concrete process representation. - - If a management operation on some IOCs triggers an associated - asynchronous process (whose progress shall be monitored), this should - also result in creating an attribute named 'processMonitor' (of type - 'ProcessMonitor') in these IOC(s). The processMonitor attribute may be - accompanied by use-case specific additional data items. - - The progress of the process is described by the 'status' and - 'progressPercentage' attributes. Additional textual qualifications for - the 'status' attribute may be provided by the 'progressStateInfo' and - 'resultStateInfo' attributes. - - When the process is instantiated, the 'status' is set to 'NOT_STARTED' - and the 'progressPercentage' to '0'. The MnS producer decides when to - start executing the process and to transition into the 'RUNNING' state. - This time is captured in the 'startTime' attribute. Alternatively, the - process may start to execute directly upon its instantiation. One - alternative must be selected when using this data type. - - During the 'RUNNING' state the 'progressPercentage' attribute may be - repeatedly updated. The exact semantic of this attribute is subject to - further specialisation. The 'progressInfo' attribute may be used to - provide additional textual information in the 'NOT_STARTED', 'CANCELLING' - and 'RUNNING' states. Further specialisation of - 'progressStateInfo' may be provided where this data type is - used. - - Upon successful completion of the process, the 'status' attribute is set - to 'FINISHED', the 'progressPercentage' to 100%. The time is captured in - the 'endTime' attribute. Additional textual information may be provided - in the 'resultStateInfo' attribute. The type of - 'resultStateInfo' in this data type definition is 'String'. - Further specialisation of 'resultStateInfo' may be provided - where this data type is used. - - In case the process fails to complete successfully, the 'status' - attribute is set to 'FAILED' or 'PARTIALLY_FAILED', the current value of - 'progressPercentage' is frozen, and the time captured in 'endTime'. The - 'resultStateInfo' specifies the reason for the failure. - Specific failure reasons may be specified where the data type defined in - this clause is used. The exact semantic of failure may be subject for - further specialisation as well. - - In case the process is cancelled, the 'status' attribute is first set to - 'CANCELLING' and when the process is really cancelled then to 'CANCELLED'. - The transition to 'CANCELLED' is captured in the 'endTime' attribute. - The value of 'progressPercentage' is frozen. Additional textual - information may be provided in the 'resultStateInfo' attribute. - - The 'resultStateInfo' attribute is provided only for additional textual - qualification of the states 'FINISHED', 'FAILED', 'PARTIALLY_FAILED' or - 'CANCELLED'. It shall not be used for making the outcome, that the - process may produce in case of success, available. - - The process may have to be completed within a certain time after its - creation, for example because required data may not be available any - more after a certain time, or the process outcome is needed until a - certain time and when not provided by this time is not needed any more. - The time until the MnS producer automatically cancels the process is - indicated by the 'timer' attribute."; - - leaf id { - type string; - mandatory true; - description "Id of the process. It is unique within a single - multivalue attribute of type ProcessMonitor."; - } - - leaf status { - type enumeration { - enum NOT_STARTED ; - enum RUNNING ; - enum CANCELLING ; - enum FINISHED ; - enum FAILED ; - enum PARTIALLY_FAILED ; - enum CANCELLED ; - } - config false; - default RUNNING; - description "Represents the status of the associated process, - whether it fails, succeeds etc. - It does not represent the returned values of a successfully finished - process. "; - } - - leaf progressPercentage { - type uint8 { - range 0..100; - } - config false; - description "Progress of the associated process as percentage"; - } - - leaf-list progressStateInfo { - type string; - config false; - description "Additional textual qualification of the states - 'NOT_STARTED', 'CANCELLING' and 'RUNNING'. - - For specific processes, specific well-defined strings (e.g. string - patterns or enums) may be defined as a specialisation."; - } - - leaf resultStateInfo { - type string; - config false; - description "Additional textual qualification of the states - 'FINISHED', 'FAILED', 'PARTIALLY_FAILED and 'CANCELLED'. - For example, in the 'FAILED' or 'PARTIALLY_FAILED' state this - attribute may be used to provide error reasons. - - This attribute shall not be used to make the outcome of the process - available for retrieval, if any. For this purpose, dedicated - attributes shall be specified when specifying the representation of - a specific process. - - For specific processes, specific well-defined strings (e.g. string - patterns or enums) may be defined as a specialisation."; - } - - leaf startTime { - type yang:date-and-time; - config false; - description "Start time of the associated process, i.e. the time when the - status changed from 'NOT_STARTED' to 'RUNNING'."; - } - - leaf endTime { - type yang:date-and-time; - config false; - description "Date and time when status changed to 'SUCCESS', 'CANCELLED', - 'FAILED' or 'PARTIALLY_FAILED'. - - If the time is in the future, it is the estimated time - the process will end."; - } - - leaf timer { - type uint32; - units minutes; - description "Time until the associated process is automatically cancelled. - If set, the system decreases the timer with time. When it reaches zero - the cancellation of the associated process is initiated by the - MnS_Producer. - If not set, there is no time limit for the process. - - Once the timer is set, the consumer can not change it anymore. - If the consumer has not set the timer the MnS Producer may set it."; - yext3gpp:notNotifyable; - } - } - - - typedef EutraCellId { - type string { - pattern '^[A-Fa-f0-9]{7}$'; - } - description "28-bit string identifying an E-UTRA Cell Id - as specified in clause 9.3.1.9 of 3GPP TS 38.413 - in hexadecimal representation. Each character in the - string shall take a value of '0' to '9', 'a' to 'f' - or 'A' to 'F' and shall represent 4 bits. - The most significant character representing the 4 most - significant bits of the Cell Id shall appear first in the - string, and the character representing the 4 least - significant bit of the Cell Id shall appear last in the - string."; - } - - typedef NrCellId { - type string { - pattern '^[A-Fa-f0-9]{9}$'; - } - description "36-bit string identifying an NR Cell Id - as specified in clause 9.3.1.7 of 3GPP TS 38.413 - in hexadecimal representation. Each character in the - string shall take a value of '0' to '9', 'a' to 'f' - or 'A' to 'F' and shall represent 4 bits. - The most significant character representing the 4 most - significant bits of the Cell Id shall appear first in the - string, and the character representing the 4 least - significant bit of the Cell Id shall appear last in the - string."; - } - - grouping NpnIdGrp { - description "Represents the NPN supported by the <> using this - <> as one of its attributes in case of the cell is a - NPN-only cell."; - - list plmnId { - key "mcc mnc"; - min-elements 1; - description "It specifies the PLMN Id of the NPN network."; - uses types3gpp:PLMNId; - } - - choice npnidChoice { - leaf-list cAGIdList { - type CagId; - max-elements 256; - description "It identifies a CAG list containing up to 12 - CAG-identifiers per Ue or up to 12 CAG-identifiers per cell, - see TS 38.331. - CAG ID is used to combine with PLMN ID to identify a PNI-NPN.CAG ID is - a hexadecimal range with size 32 bit"; - } - - leaf-list nIDList { - type Nid; - max-elements 16; - description "It identifies a list of NIDs containing up to 16 NIDs, see - TS 38.331. NID is used to combine with PLMN ID to identify an SNPN. - NID is a hexadecimal range with size 44 bit."; - } - } - } - - typedef TenthOfDegrees { - type uint16 { - range 0..3600; - } - units "0.1 degrees"; - description "A single integral value corresponding to an angle in degrees - between 0 and 360 with a resolution of 0.1 degrees."; - } - - typedef Latitude { - type decimal64 { - fraction-digits 4; - range "-90.0000..+90.0000"; - } - description "Latitude values"; - } - - typedef Longitude { - type decimal64 { - fraction-digits 4; - range "-180.0000..+180.0000"; - } - description "Longitude values"; - } - - typedef Altitude { - type decimal64 { - fraction-digits 6; - } - units "meters"; - description - "Height from a reference 0 value."; - } - - grouping GeographicalCoordinates { - description "This datatype represents the geographical coordinates"; - reference "3GPP TS 28.538 clause 6.3.8"; - - leaf latitude { - type Latitude; - mandatory true; - } - - leaf longitude { - type Longitude; - mandatory true; - } - } - - typedef OnOff { - type enumeration { - enum ON; - enum OFF; - } - } - - - typedef usageState { - type enumeration { - enum IDLE; - enum ACTIVE; - enum BUSY; - } - description "It describes whether or not the resource is actively in - use at a specific instant, and if so, whether or not it has spare - capacity for additional users at that instant. The value is READ-ONLY."; - reference "ITU T Recommendation X.731"; - } - - grouping SAPGrp { - leaf host { - type inet:host; - mandatory true; - } - leaf port { - type inet:port-number; - mandatory true; - } - description "Service access point."; - reference "TS 28.622"; - } - - typedef Mcc { - description "The mobile country code consists of three decimal digits, - The first digit of the mobile country code identifies the geographic - region (the digits 1 and 8 are not used):"; - type string { - pattern '[02-79][0-9][0-9]'; - } - reference "3GPP TS 23.003 subclause 2.2 and 12.1"; - } - - typedef Mnc { - description "The mobile network code consists of two or three - decimal digits (for example: MNC of 001 is not the same as MNC of 01)"; - type string { - pattern '[0-9][0-9][0-9]|[0-9][0-9]'; - } - reference "3GPP TS 23.003 subclause 2.2 and 12.1"; - } - - grouping PLMNId { - leaf mcc { - mandatory true; - type Mcc; - } - leaf mnc { - mandatory true; - type Mnc; - } - reference "TS 38.413 clause 9.3.3.5"; - } - - typedef Nci { - description "NR Cell Identity. The NCI shall be of fixed length of 36 bits - and shall be coded using full hexadecimal representation. - The exact coding of the NCI is the responsibility of each PLMN operator"; - reference "TS 23.003"; - type union { - type string { - length 36; - pattern '[01]+'; - } - type string { - length 9; - pattern '[a-fA-F0-9]*'; - } - } - } - - typedef OperationalState { - reference "3GPP TS 28.625 and ITU-T X.731"; - type enumeration { - enum DISABLED { - value 0; - description "The resource is totally inoperable."; - } - - enum ENABLED { - value 1; - description "The resource is partially or fully operable."; - } - - } - } - - typedef BasicAdministrativeState { - reference "3GPP TS 28.625 and ITU-T X.731"; - type enumeration { - enum LOCKED { - value 0; - description "The resource is administratively prohibited from performing - services for its users."; - } - - enum UNLOCKED { - value 1; - description "The resource is administratively permitted to perform - services for its users. This is independent of its inherent - operability."; - } - } - } - - typedef AdministrativeState { - reference "3GPP TS 28.625 and ITU-T X.731"; - type enumeration { - enum LOCKED { - value 0; - description "The resource is administratively prohibited from performing - services for its users."; - } - - enum UNLOCKED { - value 1; - description "The resource is administratively permitted to perform - services for its users. This is independent of its inherent - operability."; - } - - enum SHUTTINGDOWN { - value 2; - description "Use of the resource is administratively permitted to - existing instances of use only. While the system remains in - the shutting down state the manager or the managed element - may at any time cause the resource to transition to the - locked state."; - } - } - } - - typedef AvailabilityStatus { - type enumeration { - enum IN_TEST; - enum FAILED; - enum POWER_OFF; - enum OFF_LINE; - enum OFF_DUTY; - enum DEPENDENCY; - enum DEGRADED; - enum NOT_INSTALLED; - enum LOG_FULL; - } - } - - typedef CellState { - type enumeration { - enum IDLE; - enum INACTIVE; - enum ACTIVE; - } - } - - typedef Nrpci { - type uint32; - description "Physical Cell Identity (PCI) of the NR cell."; - reference "TS 36.211 subclause 6.11"; - } - - typedef Tac { - type string { - pattern "([A-Fa-f0-9]{4})|([A-Fa-f0-9]{6})" ; - } - description "Tracking Area Code - 2 or 3-octet string identifying a tracking area code as specified in - clause 9.3.3.10 of 3GPP TS 38.413 [34], in hexadecimal representation. - Each character in the string shall take a value of - '0' to '9', 'a' to 'f' or 'A' to 'F' and shall represent 4 bits. - The most significant character representing the 4 most significant - bits of the TAC shall appear first in the string, and the character - representing the 4 least significant bit of the TAC shall appear last - in the string. - - pattern: '(^[A-Fa-f0-9]{4}$)|(^[A-Fa-f0-9]{6}$)' - - Examples: - A legacy TAC 0x4305 shall be encoded as '4305'. - An extended TAC 0x63F84B shall be encoded as '63F84B'"; - reference "TS 23.003 clause 19.4.2.3"; - } - - grouping TaiGrp { - description "This <> defines a Tracking Area Identity (TAI) - as specified in clause 28.6 of TS 23.003, clause 8.2 of TS 38.300 - and clause 9.3.3.11 of TS 38.413. It is composed of the PLMN - identifier (PLMN-Id, which is composed of the MCC and MNC) and - the Tracking Area Code (TAC)."; - list plmnId { - description "PLMN Identity."; - min-elements 1; - max-elements 1; - key "mcc mnc"; - uses types3gpp:PLMNId; - } - - leaf tac { - type Tac; - mandatory true; - description "Tracking Area Code"; - } - } - - grouping GeoCoordinateGrp { - description "Geographical location on earth"; - leaf latitude { - type decimal64 { - fraction-digits 4; - range -90..90 ; - } - mandatory true; - description "Latitude based on World Geodetic System (1984 version) - global reference frame (WGS 84). Positive values correspond to the - northern hemisphere."; - } - - leaf longitude { - type decimal64 { - fraction-digits 4; - range -180..180 ; - } - mandatory true; - description "Longitude based on World Geodetic System (1984 version) - global reference frame (WGS 84). Positive values correspond to - degrees east of 0 degrees longitude."; - } - - leaf altitude { - type Altitude; - } - } - - grouping GeoCircleGrp { - description "a geographical circle identified by reference location and - associated distance radius"; - - list referenceLocation { - description "Specifies a fixed geographic coordinate point, - see TS 38.331."; - min-elements 1; - max-elements 1; - key "latitude longitude altitude"; - uses GeoCoordinateGrp; - } - - leaf distanceRadius { - description "It specifies the radius distance from a geographical - coordinates reference point, defined by referenceLocation. Each value - represents 50m distance. This field is only present in an NTN cell."; - type uint16; - mandatory true; - units "50 meters"; - } - } - - grouping GeoAreaGrp { - description "This data type defines a geographical area. - The geo-area is either a 'geoPolygon' or a 'geoCircle'."; - - list geoPolygon { - description "Specifies the geographical area with a convex polygon. - The convex polygon is specified by its corners."; - key "latitude longitude"; - min-elements 3; - ordered-by user; - uses GeoCoordinateGrp; - } - } - - typedef AmfRegionId { - type union { - type uint8 ; - type string { - length 8; - pattern '[01]*'; - } - } - reference "clause 2.10.1 of 3GPP TS 23.003"; - } - - typedef AmfSetId { - type union { - type uint16 { - range '0..1023'; - } - type string { - length 8; - pattern '[01]*'; - } - } - reference "clause 2.10.1 of 3GPP TS 23.003"; - } - - typedef AmfPointer { - type union { - type uint8 { - range '0..63'; - } - type string { - length 6; - pattern '[01]*'; - } - } - reference "clause 2.10.1 of 3GPP TS 23.003"; - } - - grouping AmfIdentifier { - leaf amfRegionId { - type AmfRegionId; - } - leaf amfSetId { - type AmfSetId; - } - leaf amfPointer { - type AmfPointer; - } - description "The AMFI is constructed from an AMF Region ID, - an AMF Set ID and an AMF Pointer. - The AMF Region ID identifies the region, - the AMF Set ID uniquely identifies the AMF Set within the AMF Region, and - the AMF Pointer uniquely identifies the AMF within the AMF Set. "; - } - -// type definitions especially for core NFs - - typedef NfType { - type enumeration { - enum NRF; - enum UDM; - enum AMF; - enum SMF; - enum AUSF; - enum NEF; - enum PCF; - enum SMSF; - enum NSSF; - enum UDR; - enum LMF; - enum GMLC; - enum 5G_EIR; - enum SEPP; - enum UPF; - enum N3IWF; - enum AF; - enum UDSF; - enum BSF; - enum CHF; - } - } - - typedef NotificationType { - type enumeration { - enum N1_MESSAGES; - enum N2_INFORMATION; - enum LOCATION_NOTIFICATION; - } - } - - typedef Load { - description "Latest known load information of the NF, percentage "; - type uint8 { - range 0..100; - } - } - - typedef SupportedFeatures { - type string { - pattern '[A-Fa-f0-9]*'; - } - description "It is a string, which indicates the features of the service - corresponding to the subscribed default notification, which are supported - by the NF (Service) instance acting as NF service consumer, when it is - present of the attribute whose type is DefaultNotificationSubscription - <>. When it is present as the attribute of an NFService - instance, it indicates the supported features of the NF Service - A string containing a bitmask indicating supported features in hexadecimal - representation. Each character in the string shall take - a value of 0 to 9, a to f or A to F and shall represent the support - of 4 features as described in table 5.2.2-3 of TS 29.571."; - reference "3GPP TS 29.571"; - } - - typedef N1MessageClass { - type enumeration { - enum 5GMM; - enum SM; - enum LPP; - enum SMS; - } - } - - typedef N2InformationClass { - type enumeration { - enum SM; - enum NRPPA; - enum PWS; - enum PWS_BCAL; - enum PWS_RF; - } - } - - grouping DefaultNotificationSubscription { - - leaf notificationType { - type NotificationType; - } - - leaf callbackUri { - type inet:uri; - } - - leaf interPlmnCallbackUri { - description "It indicates the callback URI to be used by NF Service - Producers located in PLMNs that are different from the PLMN of - the NF consumer."; - type inet:uri; - } - leaf n1MessageClass { - type N1MessageClass; - } - - leaf n2InformationClass { - type N2InformationClass; - } - - leaf versions { - description "This attribute identifies the API versions - (e.g. v1) supported for the default notification type"; - //optional - type N2InformationClass; - } - leaf binding { - description "This attribute shall contain the value of the Binding - Indication for the default subscription notification "; - reference " i.e. the value part of 3gpp-Sbi-Binding header, as - specified in - clause 6.12.4 of 3GPP TS 29.500 76. "; - //optional - type string; - config false; - } - leaf acceptedEncoding { - description "It indicates the content encodings that are accepted by a - NF Service Consumer when receiving a notification related to a default - notification subscription"; - reference "IETF RFC 9110 clause 12.5.3 "; - //optional - type string; - config false; - } - leaf supportedFeatures { - description "It is a string, which indicates the features of the service - corresponding to the subscribed default notification, which are supported - by the NF (Service) instance acting as NF service consumer."; - reference "3GPP TS 29.571 table 5.2.2-3"; - //optional - type SupportedFeatures; - config false; - } - leaf serviceInfoList { - description "It indicates a list of service specific information. It may - be present when the notification request of the notification type may be - generated by multiple services, i.e. notifications from different - services may be received by the subscription."; - //optional - type string; - config false; - } - leaf callbackUriPrefix { - description "It indicates the optional path segment(s) used to construct - the prefix of the Callback URIs during the reselection of an NF service - consumer, as described in 3GPP TS 29.501"; - //optional - type inet:uri; - } - } - - grouping Ipv4AddressRange { - leaf start { - type inet:ipv4-address; - } - leaf end { - type inet:ipv4-address; - } - } - - grouping Ipv6PrefixRange { - leaf start { - type inet:ipv6-prefix; - } - leaf end { - type inet:ipv6-prefix; - } - } - - typedef NsiId { - type string; - } - - typedef UeMobilityLevel { - type enumeration { - enum STATIONARY; - enum NOMADIC; - enum RESTRICTED_MOBILITY; - enum FULLY_MOBILITY; - } - } - - typedef ResourceSharingLevel { - type enumeration { - enum SHARED; - enum NOT_SHARED; - } - } - - typedef TxDirection { - type enumeration { - enum DL; - enum UL; - enum DL_AND_UL; - } - } - - grouping AddressWithVlan { - leaf ipAddress { - type inet:ip-address; - } - leaf vlanId { - type uint16; - } - } - - typedef Nid { - description "This represents the Network Identifier, which - together with a PLMN ID is used to identify a SNPN."; - type string { - pattern '^[A-Fa-f0-9]{11}$'; - } - reference "3GPP TS 23.003 and 3GPP TS 23.501 clause 5.3.2.1."; - } - - typedef CagId { - description "This represents the identifier of a Closed Access - Group (CAG), which together with a PLMN ID is used to - identify a PNI-NPN."; - type string { - pattern '^[A-Fa-f0-9]{8}$'; - } - reference "3GPP TS 23.003 and 3GPP TS 23.501."; - } - - - /* DistinguishedName pattern is built up based on the - EBNF in 32.300 clause 7.3 EBNF of DN String Representation - - leaf DN { type string { // Same pattern as LocalDN - pattern '[A-Z][^,=+<>#;\\"\r\n*.]*=([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?(,[A-Z][^,=+<>#;\\"\r\n*.]*=([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?)*'; - } } - - leaf fullLocalDN { type string { // LocalRDN , { RDNSeparator , LocalRDN } RDNSeparator is a single , no space or \R allowed Me.mykey=1 allowed - // (fullLocalRDN)(,(fullLocalRDN))* - pattern '(([A-Z][^,=+<>#;\\"\r\n*.]*|([A-Z][^,=+<>#;\\"\r\n*.]*\.[a-z][^,=+<>#;\\"\r\n*.]*))=(([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?))(,(([A-Z][^,=+<>#;\\"\r\n*.]*|([A-Z][^,=+<>#;\\"\r\n*.]*\.[a-z][^,=+<>#;\\"\r\n*.]*))=(([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?)))*'; - } } - - leaf LocalDN { type string { // LocalRDN , { RDNSeparator , LocalRDN } RDNSeparator is a single , no space or \R allowed - // LocalRDN(,LocalRDN)* - pattern '[A-Z][^,=+<>#;\\"\r\n*.]*=([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?(,[A-Z][^,=+<>#;\\"\r\n*.]*=([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?)*'; - } } - - leaf fullLocalRDN { type string { // same as fullLocalDNAttributeTypeAndValue - pattern '([A-Z][^,=+<>#;\\"\r\n*.]*|([A-Z][^,=+<>#;\\"\r\n*.]*\.[a-z][^,=+<>#;\\"\r\n*.]*))=(([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?)'; - } } - - leaf LocalRDN { type string { // same as LocalDNAttributeTypeAndValue - pattern '[A-Z][^,=+<>#;\\"\r\n*.]*=([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?'; - } } - - leaf fullLocalDNAttributeTypeAndValue { type string { // LocalDNAttributeType , AttributeTypeAndValueSeparator , RegularAttributeValue - // pattern LocalDNAttributeType=RegularAttributeValue - pattern '([A-Z][^,=+<>#;\\"\r\n*.]*|([A-Z][^,=+<>#;\\"\r\n*.]*\.[a-z][^,=+<>#;\\"\r\n*.]*))=(([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?)'; - } } - - // limitation: NamesOfClassAndNamingAttributenot supported Me.mykey=1 - leaf LocalDNAttributeTypeAndValue { type string { - // ebnf1 LocalDNAttributeType , AttributeTypeAndValueSeparator , RegularAttributeValue - // ebnf2-limited NameOfClassWithIdAttribute , AttributeTypeAndValueSeparator , RegularAttributeValue - // pattern NameOfClassWithIdAttribute=RegularAttributeValue - pattern '[A-Z][^,=+<>#;\\"\r\n*.]*=([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?'; - } } - - leaf LocalDNAttributeType { type string { // NameOfClassWithIdAttribute | NamesOfClassAndNamingAttribute RDNSeparator is a single , no space or \R allowed - // NameOfClassWithIdAttribute|NamesOfClassAndNamingAttribute - pattern '[A-Z][^,=+<>#;\\"\r\n*.]*|([A-Z][^,=+<>#;\\"\r\n*.]*\.[a-z][^,=+<>#;\\"\r\n*.]*)'; - } } - - leaf RegularAttributeValue { type string { // ( AttributeValueChar - SpaceChar ) , [ { AttributeValueChar } , ( AttributeValueChar - SpaceChar ) ] - pattern '([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?' ; - } } - - leaf NamesOfClassAndNamingAttribute { type string { // ClassName , ClassNamingAttributeSeparator , NamingAttributeName - // pattern: ClassName\.NamingAttributeName - pattern '[A-Z][^,=+<>#;\\"\r\n*.]*\.[a-z][^,=+<>#;\\"\r\n*.]*' ; - } } - - leaf restrictiveClassName { type string { // - pattern '[a-zA-Z][a-zA-Z0-9-_]*' ; - } } - - leaf ClassName { type string { // CapitalLetterChar , { LocalDNAttributeTypeChar } - pattern '[A-Z][^,=+<>#;\\"\r\n*.]*' ; - } } - - leaf NamingAttributeName { type string { // SmallLetterChar , { LocalDNAttributeTypeChar } - pattern '[a-z][^,=+<>#;\\"\r\n*.]*' ; - } } - - */ - typedef DistinguishedName { - type string { - pattern '[A-Z][^,=+<>#;\\"\r\n*.]*=([^,=+<>#;\\"\r\n* ]|' - + '(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*' - + '([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?' - + '(,[A-Z][^,=+<>#;\\"\r\n*.]*=([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))' - + '(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*' - + '([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?)*'; - } - description "Represents the 3GPP standard for DistinguishedName. - - Limitations: - - RDNSeparator: don't allow SpaceChar or CarriageReturnChar - - NullDN: Disallow nullDN that is the same as not providing a DN - - NamesOfClassAndNamingAttribute format not allowed - (eg. ManagedElement.mykey=345436)"; - reference "3GPP TS 32.300"; - } - - typedef QOffsetRange { - type int8 { - range "-24 | -22 | -20 | -18 | -16 | -14 | -12 | -10 | -8 | -6 | " + - " -5 | -4 | -3 | -2 | -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | " + - " 12 | 14 | 16 | 18 | 20 | 22 | 24"; - } - units dB; - } - - grouping ReportingCtrl { - choice reportingCtrl { - mandatory true; - description " - This choice defines the method for reporting collected performance - metrics to MnS consumers as well as the parameters for configuring the - reporting function. It is a choice between the control parameter - required for the reporting methods, whose presence selects the - reporting method as follows: - - - When only the fileReportingPeriod attribute is present, the MnS - producer shall store files on the MnS producer at a location selected - by the MnS producer and, on condition that an appropriate subscription - is in place, inform the MnS consumer about the availability of new - files and the file location using the notifyFileReady notification. - In case the preparation of a file fails, 'notifyFilePreparationError' - shall be sent instead. - - - When the 'fileReportingPeriod' and 'notificationRecipientAddress' - attributes are present, then the MnS producer shall behave like - described for the case that only the 'fileReportingPeriod' is present. - In addition, the MnS producer shall create on behalf of the MnS - consumer a subscription, using 'NtfSubscriptionControl', for the - notification types 'notifyMOICreation' and 'notifyMOIDeletion' related - to the 'File' instances that will be produced later. In case an - existing subscription does already include the 'File' instances to be - produced, no new subscription shall be created. The - 'notificationRecipientAddress' attribute in the created - 'NtfSubscriptionControl' instance shall be set to the value of the - 'notificationRecipientAddress' in the related 'PerfMetricJob'. This - feature is called implicit notification subscription, as opposed to the - case where the MnS consumer creates the subscription (explicit - notification subscription). When the related 'PerfMetricJob' is - deleted, the 'NtfSubscriptionControl' instance created due to the - request for implicit subscription shall be deleted as well. - - When only the 'fileReportingPeriod' and 'fileLocation' attributes - are present (CHOICE_3), the MnS producer shall store the files at the - location specified by 'fileLocation'. The file location may identify - any entity such as a file server or a MnS consumer. The identified - MnS consumer may or may not be identical to the MnS consumer creating - the 'PerfMetricJob'. The MnS producer may emit 'notifyFileReady' and - 'notifyFilePreparationError' notifications to inform subscribers that - a file has been made available at the location specified by - 'fileLocation'. - - - When only the streamTarget attribute is present, the MnS producer - shall stream the data to the location specified by streamTarget. - - For the file-based reporting methods the fileReportingPeriod attribute - specifies the time window during which collected measurements are - stored into the same file before the file is closed and a new file is - opened."; - - case file-based-reporting { - leaf fileReportingPeriod { - type uint32 { - range 1..max; - } - units minutes; - mandatory true; - description "For the file-based reporting method this is the time - window during which collected measurements are stored into the same - file before the file is closed and a new file is opened. - The time-period must be a multiple of the granularityPeriod. - - Applicable when the file-based reporting method is supported."; - } - choice reporting-target { - case file-target { - leaf fileLocation { - type string ; - description "Applicable and must be present when the file-based - reporting method is supported, and the files are stored on the - MnS consumer."; - } - } - case notification-target { - leaf notificationRecipientAddress { - type string; - description "Must be present when the notification-based reporting - method is supported, and the the files are available as - notifications for the MnS consumer to subscribe to."; - } - } - description "When netiher fileLocation or notificationRecipientAddress - are present, the files are stored and available to the MnS consumer - if the MnS subscribes to the notifyFileReady notification."; - } - } - - case stream-based-reporting { - leaf streamTarget { - type string; - mandatory true; - description "Applicable when stream-based reporting method is - supported."; - } - } - } - } +module _3gpp-common-yang-types { + yang-version 1.1; + namespace "urn:3gpp:sa5:_3gpp-common-yang-types"; + prefix "types3gpp"; + + import ietf-inet-types { prefix inet; } + import ietf-yang-types { prefix yang; } + import _3gpp-common-yang-extensions { prefix yext3gpp; } + + organization "3GPP SA5"; + contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; + description "The model defines a YANG mapping of the top level + information classes used for management of 5G networks and + network slicing. + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + TTA, TTC). All rights reserved."; + reference "3GPP TS 28.623"; + + revision 2026-03-19 { reference "CR-xxxx"; } + revision 2025-10-07 { reference "CR-0573 CR-0582 CR-583"; } + revision 2025-10-01 { reference "CR-0578" ; } + revision 2025-08-31 { reference "CR-0551 CR-0556 CR-0562"; } + revision 2025-02-19 { reference CR-0512; } + revision 2025-02-07 { reference CR-0492; } + revision 2024-11-25 { reference CR-1442; } + revision 2024-11-25 { reference CR-1412; } + revision 2024-11-01 { reference CR-0463; } + revision 2024-08-13 { reference CR-0387; } + revision 2024-05-18 { reference CR-0359; } + revision 2024-04-12 { reference CR-0346; } + revision 2023-11-06 { reference CR-0305; } + revision 2023-09-18 { reference CR-0271 ; } + revision 2023-08-09 { reference CR-0266; } + revision 2023-05-10 { reference CR-0250; } + revision 2023-02-14 { reference CR-0234; } + revision 2022-11-04 { reference "CR-0194"; } + revision 2022-10-24 { reference CR-0196; } + revision 2022-07-26 { reference "CR-0180" ; } + revision 2022-02-09 { reference "CR-0144"; } + revision 2021-11-01 { reference "CR-0141"; } + + revision 2021-09-30 { + description "Added Longitude, Latitude, TenthOfDegrees, OnOff."; + reference "CR-0138"; + } + + revision 2020-11-06 { + description "Removed incorrect S-NSSAI definitions."; + reference "CR-0118"; + } + + revision 2020-03-10 { + description "Removed faulty when statements."; + reference "SP-200229"; + } + + revision 2019-10-25 { + description "Added ManagedNFProfile."; + reference "S5-194457"; + } + + revision 2019-10-16 { + description "Added SAP and usageState."; + reference "S5-193518"; + } + + revision 2019-06-23 { + reference "Initial version."; + } + + typedef EnabledDisabled { + type enumeration { + enum DISABLED ; + enum ENABLED ; + } + } + + grouping nameValuePair { + leaf name { type string; } + leaf value { type string; } + } + + typedef DayOfWeek { + type enumeration { + enum MONDAY; + enum TUESDAY; + enum WEDNESDAY; + enum THURSDAY; + enum FRIDAY; + enum SATURDAY; + enum SUNDAY; + } + } + + typedef DateMonth { + type uint8 { + range 0..12; + } + } + + typedef DateMonthDay { + type uint8 { + range 0..31; + } + } + + typedef FullTime { + type yang:time; + } + + grouping DayInYearGrp { + description "This <> represents a day in a year."; + + leaf month { + description "It indicates the month in a year."; + type DateMonth; + mandatory true; + } + + leaf monthDay { + description "It indicates the day in a month."; + type DateMonthDay; + mandatory true; + } + } + + grouping TimeWindowGrp { + leaf startTime { + type yang:date-and-time; + yext3gpp:inVariant; + } + leaf endTime { + type yang:date-and-time; + yext3gpp:inVariant; + } + } + + grouping ProcessMonitorGrp { + description "Provides attributes to monitor the progress of processes + with specific purpose and limited lifetime running on MnS producers. + It may be used as data type for dedicated progress monitor attributes + when specifying the management representation of these processes. + The attributes in this clause are defined in a generic way. + For some attributes specialisations may be provided when specifying a + concrete process representation. + + If a management operation on some IOCs triggers an associated + asynchronous process (whose progress shall be monitored), this should + also result in creating an attribute named 'processMonitor' (of type + 'ProcessMonitor') in these IOC(s). The processMonitor attribute may be + accompanied by use-case specific additional data items. + + The progress of the process is described by the 'status' and + 'progressPercentage' attributes. Additional textual qualifications for + the 'status' attribute may be provided by the 'progressStateInfo' and + 'resultStateInfo' attributes. + + When the process is instantiated, the 'status' is set to 'NOT_STARTED' + and the 'progressPercentage' to '0'. The MnS producer decides when to + start executing the process and to transition into the 'RUNNING' state. + This time is captured in the 'startTime' attribute. Alternatively, the + process may start to execute directly upon its instantiation. One + alternative must be selected when using this data type. + + During the 'RUNNING' state the 'progressPercentage' attribute may be + repeatedly updated. The exact semantic of this attribute is subject to + further specialisation. The 'progressInfo' attribute may be used to + provide additional textual information in the 'NOT_STARTED', 'CANCELLING' + and 'RUNNING' states. Further specialisation of + 'progressStateInfo' may be provided where this data type is + used. + + Upon successful completion of the process, the 'status' attribute is set + to 'FINISHED', the 'progressPercentage' to 100%. The time is captured in + the 'endTime' attribute. Additional textual information may be provided + in the 'resultStateInfo' attribute. The type of + 'resultStateInfo' in this data type definition is 'String'. + Further specialisation of 'resultStateInfo' may be provided + where this data type is used. + + In case the process fails to complete successfully, the 'status' + attribute is set to 'FAILED' or 'PARTIALLY_FAILED', the current value of + 'progressPercentage' is frozen, and the time captured in 'endTime'. The + 'resultStateInfo' specifies the reason for the failure. + Specific failure reasons may be specified where the data type defined in + this clause is used. The exact semantic of failure may be subject for + further specialisation as well. + + In case the process is cancelled, the 'status' attribute is first set to + 'CANCELLING' and when the process is really cancelled then to 'CANCELLED'. + The transition to 'CANCELLED' is captured in the 'endTime' attribute. + The value of 'progressPercentage' is frozen. Additional textual + information may be provided in the 'resultStateInfo' attribute. + + The 'resultStateInfo' attribute is provided only for additional textual + qualification of the states 'FINISHED', 'FAILED', 'PARTIALLY_FAILED' or + 'CANCELLED'. It shall not be used for making the outcome, that the + process may produce in case of success, available. + + The process may have to be completed within a certain time after its + creation, for example because required data may not be available any + more after a certain time, or the process outcome is needed until a + certain time and when not provided by this time is not needed any more. + The time until the MnS producer automatically cancels the process is + indicated by the 'timer' attribute."; + + leaf id { + type string; + mandatory true; + description "Id of the process. It is unique within a single + multivalue attribute of type ProcessMonitor."; + } + + leaf status { + type enumeration { + enum NOT_STARTED ; + enum RUNNING ; + enum CANCELLING ; + enum FINISHED ; + enum FAILED ; + enum PARTIALLY_FAILED ; + enum CANCELLED ; + } + config false; + default RUNNING; + description "Represents the status of the associated process, + whether it fails, succeeds etc. + It does not represent the returned values of a successfully finished + process. "; + } + + leaf progressPercentage { + type uint8 { + range 0..100; + } + config false; + description "Progress of the associated process as percentage"; + } + + leaf-list progressStateInfo { + type string; + config false; + description "Additional textual qualification of the states + 'NOT_STARTED', 'CANCELLING' and 'RUNNING'. + + For specific processes, specific well-defined strings (e.g. string + patterns or enums) may be defined as a specialisation."; + } + + leaf resultStateInfo { + type string; + config false; + description "Additional textual qualification of the states + 'FINISHED', 'FAILED', 'PARTIALLY_FAILED and 'CANCELLED'. + For example, in the 'FAILED' or 'PARTIALLY_FAILED' state this + attribute may be used to provide error reasons. + + This attribute shall not be used to make the outcome of the process + available for retrieval, if any. For this purpose, dedicated + attributes shall be specified when specifying the representation of + a specific process. + + For specific processes, specific well-defined strings (e.g. string + patterns or enums) may be defined as a specialisation."; + } + + leaf startTime { + type yang:date-and-time; + config false; + description "Start time of the associated process, i.e. the time when the + status changed from 'NOT_STARTED' to 'RUNNING'."; + } + + leaf endTime { + type yang:date-and-time; + config false; + description "Date and time when status changed to 'SUCCESS', 'CANCELLED', + 'FAILED' or 'PARTIALLY_FAILED'. + + If the time is in the future, it is the estimated time + the process will end."; + } + + leaf timer { + type uint32; + units minutes; + description "Time until the associated process is automatically cancelled. + If set, the system decreases the timer with time. When it reaches zero + the cancellation of the associated process is initiated by the + MnS_Producer. + If not set, there is no time limit for the process. + + Once the timer is set, the consumer can not change it anymore. + If the consumer has not set the timer the MnS Producer may set it."; + yext3gpp:notNotifyable; + } + } + + + typedef EutraCellId { + type string { + pattern '^[A-Fa-f0-9]{7}$'; + } + description "28-bit string identifying an E-UTRA Cell Id + as specified in clause 9.3.1.9 of 3GPP TS 38.413 + in hexadecimal representation. Each character in the + string shall take a value of '0' to '9', 'a' to 'f' + or 'A' to 'F' and shall represent 4 bits. + The most significant character representing the 4 most + significant bits of the Cell Id shall appear first in the + string, and the character representing the 4 least + significant bit of the Cell Id shall appear last in the + string."; + } + + typedef NrCellId { + type string { + pattern '^[A-Fa-f0-9]{9}$'; + } + description "36-bit string identifying an NR Cell Id + as specified in clause 9.3.1.7 of 3GPP TS 38.413 + in hexadecimal representation. Each character in the + string shall take a value of '0' to '9', 'a' to 'f' + or 'A' to 'F' and shall represent 4 bits. + The most significant character representing the 4 most + significant bits of the Cell Id shall appear first in the + string, and the character representing the 4 least + significant bit of the Cell Id shall appear last in the + string."; + } + + grouping NpnIdGrp { + description "Represents the NPN supported by the <> using this + <> as one of its attributes in case of the cell is a + NPN-only cell."; + + list plmnId { + key "mcc mnc"; + min-elements 1; + description "It specifies the PLMN Id of the NPN network."; + uses types3gpp:PLMNId; + } + + choice npnidChoice { + leaf-list cAGIdList { + type CagId; + max-elements 256; + description "It identifies a CAG list containing up to 12 + CAG-identifiers per Ue or up to 12 CAG-identifiers per cell, + see TS 38.331. + CAG ID is used to combine with PLMN ID to identify a PNI-NPN.CAG ID is + a hexadecimal range with size 32 bit"; + } + + leaf-list nIDList { + type Nid; + max-elements 16; + description "It identifies a list of NIDs containing up to 16 NIDs, see + TS 38.331. NID is used to combine with PLMN ID to identify an SNPN. + NID is a hexadecimal range with size 44 bit."; + } + } + } + + typedef TenthOfDegrees { + type uint16 { + range 0..3600; + } + units "0.1 degrees"; + description "A single integral value corresponding to an angle in degrees + between 0 and 360 with a resolution of 0.1 degrees."; + } + + typedef Latitude { + type decimal64 { + fraction-digits 4; + range "-90.0000..+90.0000"; + } + description "Latitude values"; + } + + typedef Longitude { + type decimal64 { + fraction-digits 4; + range "-180.0000..+180.0000"; + } + description "Longitude values"; + } + + typedef Altitude { + type decimal64 { + fraction-digits 6; + } + units "meters"; + description + "Height from a reference 0 value."; + } + + grouping GeographicalCoordinates { + description "This datatype represents the geographical coordinates"; + reference "3GPP TS 28.538 clause 6.3.8"; + + leaf latitude { + type Latitude; + mandatory true; + } + + leaf longitude { + type Longitude; + mandatory true; + } + } + + typedef OnOff { + type enumeration { + enum ON; + enum OFF; + } + } + + + typedef usageState { + type enumeration { + enum IDLE; + enum ACTIVE; + enum BUSY; + } + description "It describes whether or not the resource is actively in + use at a specific instant, and if so, whether or not it has spare + capacity for additional users at that instant. The value is READ-ONLY."; + reference "ITU T Recommendation X.731"; + } + + grouping SAPGrp { + leaf host { + type inet:host; + mandatory true; + } + leaf port { + type inet:port-number; + mandatory true; + } + description "Service access point."; + reference "TS 28.622"; + } + + typedef Mcc { + description "The mobile country code consists of three decimal digits, + The first digit of the mobile country code identifies the geographic + region (the digits 1 and 8 are not used):"; + type string { + pattern '[02-79][0-9][0-9]'; + } + reference "3GPP TS 23.003 subclause 2.2 and 12.1"; + } + + typedef Mnc { + description "The mobile network code consists of two or three + decimal digits (for example: MNC of 001 is not the same as MNC of 01)"; + type string { + pattern '[0-9][0-9][0-9]|[0-9][0-9]'; + } + reference "3GPP TS 23.003 subclause 2.2 and 12.1"; + } + + grouping PLMNId { + leaf mcc { + mandatory true; + type Mcc; + } + leaf mnc { + mandatory true; + type Mnc; + } + reference "TS 38.413 clause 9.3.3.5"; + } + + typedef Nci { + description "NR Cell Identity. The NCI shall be of fixed length of 36 bits + and shall be coded using full hexadecimal representation. + The exact coding of the NCI is the responsibility of each PLMN operator"; + reference "TS 23.003"; + type union { + type string { + length 36; + pattern '[01]+'; + } + type string { + length 9; + pattern '[a-fA-F0-9]*'; + } + } + } + + typedef OperationalState { + reference "3GPP TS 28.625 and ITU-T X.731"; + type enumeration { + enum DISABLED { + value 0; + description "The resource is totally inoperable."; + } + + enum ENABLED { + value 1; + description "The resource is partially or fully operable."; + } + + } + } + + typedef BasicAdministrativeState { + reference "3GPP TS 28.625 and ITU-T X.731"; + type enumeration { + enum LOCKED { + value 0; + description "The resource is administratively prohibited from performing + services for its users."; + } + + enum UNLOCKED { + value 1; + description "The resource is administratively permitted to perform + services for its users. This is independent of its inherent + operability."; + } + } + } + + typedef AdministrativeState { + reference "3GPP TS 28.625 and ITU-T X.731"; + type enumeration { + enum LOCKED { + value 0; + description "The resource is administratively prohibited from performing + services for its users."; + } + + enum UNLOCKED { + value 1; + description "The resource is administratively permitted to perform + services for its users. This is independent of its inherent + operability."; + } + + enum SHUTTINGDOWN { + value 2; + description "Use of the resource is administratively permitted to + existing instances of use only. While the system remains in + the shutting down state the manager or the managed element + may at any time cause the resource to transition to the + locked state."; + } + } + } + + typedef AvailabilityStatus { + type enumeration { + enum IN_TEST; + enum FAILED; + enum POWER_OFF; + enum OFF_LINE; + enum OFF_DUTY; + enum DEPENDENCY; + enum DEGRADED; + enum NOT_INSTALLED; + enum LOG_FULL; + } + } + + typedef CellState { + type enumeration { + enum IDLE; + enum INACTIVE; + enum ACTIVE; + } + } + + typedef Nrpci { + type uint32; + description "Physical Cell Identity (PCI) of the NR cell."; + reference "TS 36.211 subclause 6.11"; + } + + typedef Tac { + type string { + pattern "([A-Fa-f0-9]{4})|([A-Fa-f0-9]{6})" ; + } + description "Tracking Area Code + 2 or 3-octet string identifying a tracking area code as specified in + clause 9.3.3.10 of 3GPP TS 38.413 [34], in hexadecimal representation. + Each character in the string shall take a value of + '0' to '9', 'a' to 'f' or 'A' to 'F' and shall represent 4 bits. + The most significant character representing the 4 most significant + bits of the TAC shall appear first in the string, and the character + representing the 4 least significant bit of the TAC shall appear last + in the string. + + pattern: '(^[A-Fa-f0-9]{4}$)|(^[A-Fa-f0-9]{6}$)' + + Examples: + A legacy TAC 0x4305 shall be encoded as '4305'. + An extended TAC 0x63F84B shall be encoded as '63F84B'"; + reference "TS 23.003 clause 19.4.2.3"; + } + + grouping TaiGrp { + description "This <> defines a Tracking Area Identity (TAI) + as specified in clause 28.6 of TS 23.003, clause 8.2 of TS 38.300 + and clause 9.3.3.11 of TS 38.413. It is composed of the PLMN + identifier (PLMN-Id, which is composed of the MCC and MNC) and + the Tracking Area Code (TAC)."; + list plmnId { + description "PLMN Identity."; + min-elements 1; + max-elements 1; + key "mcc mnc"; + uses types3gpp:PLMNId; + } + + leaf tac { + type Tac; + mandatory true; + description "Tracking Area Code"; + } + } + + grouping GeoCoordinateGrp { + description "Geographical location on earth"; + leaf latitude { + type decimal64 { + fraction-digits 4; + range -90..90 ; + } + mandatory true; + description "Latitude based on World Geodetic System (1984 version) + global reference frame (WGS 84). Positive values correspond to the + northern hemisphere."; + } + + leaf longitude { + type decimal64 { + fraction-digits 4; + range -180..180 ; + } + mandatory true; + description "Longitude based on World Geodetic System (1984 version) + global reference frame (WGS 84). Positive values correspond to + degrees east of 0 degrees longitude."; + } + + leaf altitude { + type Altitude; + } + } + + grouping GeoCircleGrp { + description "a geographical circle identified by reference location and + associated distance radius"; + + list referenceLocation { + description "Specifies a fixed geographic coordinate point, + see TS 38.331."; + min-elements 1; + max-elements 1; + key "latitude longitude altitude"; + uses GeoCoordinateGrp; + } + + leaf distanceRadius { + description "It specifies the radius distance from a geographical + coordinates reference point, defined by referenceLocation. Each value + represents 50m distance. This field is only present in an NTN cell."; + type uint16; + mandatory true; + units "50 meters"; + } + } + + grouping GeoAreaGrp { + description "This data type defines a geographical area. + The geo-area is either a 'geoPolygon' or a 'geoCircle'."; + + list geoPolygon { + description "Specifies the geographical area with a convex polygon. + The convex polygon is specified by its corners."; + key "latitude longitude"; + min-elements 3; + ordered-by user; + uses GeoCoordinateGrp; + } + } + + typedef AmfRegionId { + type union { + type uint8 ; + type string { + length 8; + pattern '[01]*'; + } + } + reference "clause 2.10.1 of 3GPP TS 23.003"; + } + + typedef AmfSetId { + type union { + type uint16 { + range '0..1023'; + } + type string { + length 8; + pattern '[01]*'; + } + } + reference "clause 2.10.1 of 3GPP TS 23.003"; + } + + typedef AmfPointer { + type union { + type uint8 { + range '0..63'; + } + type string { + length 6; + pattern '[01]*'; + } + } + reference "clause 2.10.1 of 3GPP TS 23.003"; + } + + grouping AmfIdentifier { + leaf amfRegionId { + type AmfRegionId; + } + leaf amfSetId { + type AmfSetId; + } + leaf amfPointer { + type AmfPointer; + } + description "The AMFI is constructed from an AMF Region ID, + an AMF Set ID and an AMF Pointer. + The AMF Region ID identifies the region, + the AMF Set ID uniquely identifies the AMF Set within the AMF Region, and + the AMF Pointer uniquely identifies the AMF within the AMF Set. "; + } + +// type definitions especially for core NFs + + typedef NfType { + type enumeration { + enum NRF; + enum UDM; + enum AMF; + enum SMF; + enum AUSF; + enum NEF; + enum PCF; + enum SMSF; + enum NSSF; + enum UDR; + enum LMF; + enum GMLC; + enum 5G_EIR; + enum SEPP; + enum UPF; + enum N3IWF; + enum AF; + enum UDSF; + enum BSF; + enum CHF; + } + } + + typedef NotificationType { + type enumeration { + enum N1_MESSAGES; + enum N2_INFORMATION; + enum LOCATION_NOTIFICATION; + } + } + + typedef Load { + description "Latest known load information of the NF, percentage "; + type uint8 { + range 0..100; + } + } + + typedef SupportedFeatures { + type string { + pattern '[A-Fa-f0-9]*'; + } + description "It is a string, which indicates the features of the service + corresponding to the subscribed default notification, which are supported + by the NF (Service) instance acting as NF service consumer, when it is + present of the attribute whose type is DefaultNotificationSubscription + <>. When it is present as the attribute of an NFService + instance, it indicates the supported features of the NF Service + A string containing a bitmask indicating supported features in hexadecimal + representation. Each character in the string shall take + a value of 0 to 9, a to f or A to F and shall represent the support + of 4 features as described in table 5.2.2-3 of TS 29.571."; + reference "3GPP TS 29.571"; + } + + typedef N1MessageClass { + type enumeration { + enum 5GMM; + enum SM; + enum LPP; + enum SMS; + } + } + + typedef N2InformationClass { + type enumeration { + enum SM; + enum NRPPA; + enum PWS; + enum PWS_BCAL; + enum PWS_RF; + } + } + + grouping DefaultNotificationSubscription { + + leaf notificationType { + type NotificationType; + } + + leaf callbackUri { + type inet:uri; + } + + leaf interPlmnCallbackUri { + description "It indicates the callback URI to be used by NF Service + Producers located in PLMNs that are different from the PLMN of + the NF consumer."; + type inet:uri; + } + leaf n1MessageClass { + type N1MessageClass; + } + + leaf n2InformationClass { + type N2InformationClass; + } + + leaf versions { + description "This attribute identifies the API versions + (e.g. v1) supported for the default notification type"; + //optional + type N2InformationClass; + } + leaf binding { + description "This attribute shall contain the value of the Binding + Indication for the default subscription notification "; + reference " i.e. the value part of 3gpp-Sbi-Binding header, as + specified in + clause 6.12.4 of 3GPP TS 29.500 76. "; + //optional + type string; + config false; + } + leaf acceptedEncoding { + description "It indicates the content encodings that are accepted by a + NF Service Consumer when receiving a notification related to a default + notification subscription"; + reference "IETF RFC 9110 clause 12.5.3 "; + //optional + type string; + config false; + } + leaf supportedFeatures { + description "It is a string, which indicates the features of the service + corresponding to the subscribed default notification, which are supported + by the NF (Service) instance acting as NF service consumer."; + reference "3GPP TS 29.571 table 5.2.2-3"; + //optional + type SupportedFeatures; + config false; + } + leaf serviceInfoList { + description "It indicates a list of service specific information. It may + be present when the notification request of the notification type may be + generated by multiple services, i.e. notifications from different + services may be received by the subscription."; + //optional + type string; + config false; + } + leaf callbackUriPrefix { + description "It indicates the optional path segment(s) used to construct + the prefix of the Callback URIs during the reselection of an NF service + consumer, as described in 3GPP TS 29.501"; + //optional + type inet:uri; + } + } + + grouping Ipv4AddressRange { + leaf start { + type inet:ipv4-address; + } + leaf end { + type inet:ipv4-address; + } + } + + grouping Ipv6PrefixRange { + leaf start { + type inet:ipv6-prefix; + } + leaf end { + type inet:ipv6-prefix; + } + } + + typedef NsiId { + type string; + } + + typedef UeMobilityLevel { + type enumeration { + enum STATIONARY; + enum NOMADIC; + enum RESTRICTED_MOBILITY; + enum FULLY_MOBILITY; + } + } + + typedef ResourceSharingLevel { + type enumeration { + enum SHARED; + enum NOT_SHARED; + } + } + + typedef TxDirection { + type enumeration { + enum DL; + enum UL; + enum DL_AND_UL; + } + } + + grouping AddressWithVlan { + leaf ipAddress { + type inet:ip-address; + } + leaf vlanId { + type uint16; + } + } + + typedef Nid { + description "This represents the Network Identifier, which + together with a PLMN ID is used to identify a SNPN."; + type string { + pattern '^[A-Fa-f0-9]{11}$'; + } + reference "3GPP TS 23.003 and 3GPP TS 23.501 clause 5.3.2.1."; + } + + typedef CagId { + description "This represents the identifier of a Closed Access + Group (CAG), which together with a PLMN ID is used to + identify a PNI-NPN."; + type string { + pattern '^[A-Fa-f0-9]{8}$'; + } + reference "3GPP TS 23.003 and 3GPP TS 23.501."; + } + + + /* DistinguishedName pattern is built up based on the + EBNF in 32.300 clause 7.3 EBNF of DN String Representation + + leaf DN { type string { // Same pattern as LocalDN + pattern '[A-Z][^,=+<>#;\\"\r\n*.]*=([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?(,[A-Z][^,=+<>#;\\"\r\n*.]*=([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?)*'; + } } + + leaf fullLocalDN { type string { // LocalRDN , { RDNSeparator , LocalRDN } RDNSeparator is a single , no space or \R allowed Me.mykey=1 allowed + // (fullLocalRDN)(,(fullLocalRDN))* + pattern '(([A-Z][^,=+<>#;\\"\r\n*.]*|([A-Z][^,=+<>#;\\"\r\n*.]*\.[a-z][^,=+<>#;\\"\r\n*.]*))=(([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?))(,(([A-Z][^,=+<>#;\\"\r\n*.]*|([A-Z][^,=+<>#;\\"\r\n*.]*\.[a-z][^,=+<>#;\\"\r\n*.]*))=(([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?)))*'; + } } + + leaf LocalDN { type string { // LocalRDN , { RDNSeparator , LocalRDN } RDNSeparator is a single , no space or \R allowed + // LocalRDN(,LocalRDN)* + pattern '[A-Z][^,=+<>#;\\"\r\n*.]*=([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?(,[A-Z][^,=+<>#;\\"\r\n*.]*=([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?)*'; + } } + + leaf fullLocalRDN { type string { // same as fullLocalDNAttributeTypeAndValue + pattern '([A-Z][^,=+<>#;\\"\r\n*.]*|([A-Z][^,=+<>#;\\"\r\n*.]*\.[a-z][^,=+<>#;\\"\r\n*.]*))=(([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?)'; + } } + + leaf LocalRDN { type string { // same as LocalDNAttributeTypeAndValue + pattern '[A-Z][^,=+<>#;\\"\r\n*.]*=([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?'; + } } + + leaf fullLocalDNAttributeTypeAndValue { type string { // LocalDNAttributeType , AttributeTypeAndValueSeparator , RegularAttributeValue + // pattern LocalDNAttributeType=RegularAttributeValue + pattern '([A-Z][^,=+<>#;\\"\r\n*.]*|([A-Z][^,=+<>#;\\"\r\n*.]*\.[a-z][^,=+<>#;\\"\r\n*.]*))=(([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?)'; + } } + + // limitation: NamesOfClassAndNamingAttributenot supported Me.mykey=1 + leaf LocalDNAttributeTypeAndValue { type string { + // ebnf1 LocalDNAttributeType , AttributeTypeAndValueSeparator , RegularAttributeValue + // ebnf2-limited NameOfClassWithIdAttribute , AttributeTypeAndValueSeparator , RegularAttributeValue + // pattern NameOfClassWithIdAttribute=RegularAttributeValue + pattern '[A-Z][^,=+<>#;\\"\r\n*.]*=([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?'; + } } + + leaf LocalDNAttributeType { type string { // NameOfClassWithIdAttribute | NamesOfClassAndNamingAttribute RDNSeparator is a single , no space or \R allowed + // NameOfClassWithIdAttribute|NamesOfClassAndNamingAttribute + pattern '[A-Z][^,=+<>#;\\"\r\n*.]*|([A-Z][^,=+<>#;\\"\r\n*.]*\.[a-z][^,=+<>#;\\"\r\n*.]*)'; + } } + + leaf RegularAttributeValue { type string { // ( AttributeValueChar - SpaceChar ) , [ { AttributeValueChar } , ( AttributeValueChar - SpaceChar ) ] + pattern '([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?' ; + } } + + leaf NamesOfClassAndNamingAttribute { type string { // ClassName , ClassNamingAttributeSeparator , NamingAttributeName + // pattern: ClassName\.NamingAttributeName + pattern '[A-Z][^,=+<>#;\\"\r\n*.]*\.[a-z][^,=+<>#;\\"\r\n*.]*' ; + } } + + leaf restrictiveClassName { type string { // + pattern '[a-zA-Z][a-zA-Z0-9-_]*' ; + } } + + leaf ClassName { type string { // CapitalLetterChar , { LocalDNAttributeTypeChar } + pattern '[A-Z][^,=+<>#;\\"\r\n*.]*' ; + } } + + leaf NamingAttributeName { type string { // SmallLetterChar , { LocalDNAttributeTypeChar } + pattern '[a-z][^,=+<>#;\\"\r\n*.]*' ; + } } + + */ + typedef DistinguishedName { + type string { + pattern '[A-Z][^,=+<>#;\\"\r\n*.]*=([^,=+<>#;\\"\r\n* ]|' + + '(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*' + + '([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?' + + '(,[A-Z][^,=+<>#;\\"\r\n*.]*=([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))' + + '(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*' + + '([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?)*'; + } + description "Represents the 3GPP standard for DistinguishedName. + + Limitations: + - RDNSeparator: don't allow SpaceChar or CarriageReturnChar + - NullDN: Disallow nullDN that is the same as not providing a DN + - NamesOfClassAndNamingAttribute format not allowed + (eg. ManagedElement.mykey=345436)"; + reference "3GPP TS 32.300"; + } + + typedef QOffsetRange { + type int8 { + range "-24 | -22 | -20 | -18 | -16 | -14 | -12 | -10 | -8 | -6 | " + + " -5 | -4 | -3 | -2 | -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | " + + " 12 | 14 | 16 | 18 | 20 | 22 | 24"; + } + units dB; + } + + grouping ReportingCtrl { + choice reportingCtrl { + mandatory true; + description " + This choice defines the method for reporting collected performance + metrics to MnS consumers as well as the parameters for configuring the + reporting function. It is a choice between the control parameter + required for the reporting methods, whose presence selects the + reporting method as follows: + + - When only the fileReportingPeriod attribute is present, the MnS + producer shall store files on the MnS producer at a location selected + by the MnS producer and, on condition that an appropriate subscription + is in place, inform the MnS consumer about the availability of new + files and the file location using the notifyFileReady notification. + In case the preparation of a file fails, 'notifyFilePreparationError' + shall be sent instead. + + - When the 'fileReportingPeriod' and 'notificationRecipientAddress' + attributes are present, then the MnS producer shall behave like + described for the case that only the 'fileReportingPeriod' is present. + In addition, the MnS producer shall create on behalf of the MnS + consumer a subscription, using 'NtfSubscriptionControl', for the + notification types 'notifyMOICreation' and 'notifyMOIDeletion' related + to the 'File' instances that will be produced later. In case an + existing subscription does already include the 'File' instances to be + produced, no new subscription shall be created. The + 'notificationRecipientAddress' attribute in the created + 'NtfSubscriptionControl' instance shall be set to the value of the + 'notificationRecipientAddress' in the related 'PerfMetricJob'. This + feature is called implicit notification subscription, as opposed to the + case where the MnS consumer creates the subscription (explicit + notification subscription). When the related 'PerfMetricJob' is + deleted, the 'NtfSubscriptionControl' instance created due to the + request for implicit subscription shall be deleted as well. + - When only the 'fileReportingPeriod' and 'fileLocation' attributes + are present (CHOICE_3), the MnS producer shall store the files at the + location specified by 'fileLocation'. The file location may identify + any entity such as a file server or a MnS consumer. The identified + MnS consumer may or may not be identical to the MnS consumer creating + the 'PerfMetricJob'. The MnS producer may emit 'notifyFileReady' and + 'notifyFilePreparationError' notifications to inform subscribers that + a file has been made available at the location specified by + 'fileLocation'. + + - When only the streamTarget attribute is present, the MnS producer + shall stream the data to the location specified by streamTarget. + + For the file-based reporting methods the fileReportingPeriod attribute + specifies the time window during which collected measurements are + stored into the same file before the file is closed and a new file is + opened."; + + case file-based-reporting { + leaf fileReportingPeriod { + type uint32 { + range 1..max; + } + units minutes; + mandatory true; + description "For the file-based reporting method this is the time + window during which collected measurements are stored into the same + file before the file is closed and a new file is opened. + The time-period must be a multiple of the granularityPeriod. + + Applicable when the file-based reporting method is supported."; + } + choice reporting-target { + case file-target { + leaf fileLocation { + type string ; + description "Applicable and must be present when the file-based + reporting method is supported, and the files are stored on the + MnS consumer."; + } + } + case notification-target { + leaf notificationRecipientAddress { + type string; + description "Must be present when the notification-based reporting + method is supported, and the the files are available as + notifications for the MnS consumer to subscribe to."; + } + } + description "When netiher fileLocation or notificationRecipientAddress + are present, the files are stored and available to the MnS consumer + if the MnS subscribes to the notifyFileReady notification."; + } + } + + case stream-based-reporting { + leaf streamTarget { + type string; + mandatory true; + description "Applicable when stream-based reporting method is + supported."; + } + } + } + } } \ No newline at end of file -- GitLab From 0a180454aafed3b6c5b00eab48ac817939af2cf3 Mon Sep 17 00:00:00 2001 From: "U-ERICSSON\\ETHBLL" Date: Wed, 1 Apr 2026 17:27:59 +0200 Subject: [PATCH 13/45] Update CR numbers --- yang-models/_3gpp-5g-common-yang-types.yang | 2 +- yang-models/_3gpp-5gc-nrm-aiot.yang | 2 +- yang-models/_3gpp-5gc-nrm-ausffunction.yang | 2 +- .../_3gpp-5gc-nrm-managed-nfprofile.yang | 11 +- yang-models/_3gpp-5gc-nrm-neffunction.yang | 3 +- yang-models/_3gpp-5gc-nrm-nfservice.yang | 4 +- yang-models/_3gpp-5gc-nrm-nfservice.yang.bak | 1491 ++++++++--------- yang-models/_3gpp-5gc-nrm-nrffunction.yang | 2 +- yang-models/_3gpp-5gc-nrm-pcffunction.yang | 2 +- .../_3gpp-5gc-nrm-predefinedpccruleset.yang | 4 +- yang-models/_3gpp-5gc-nrm-udmfunction.yang | 2 +- yang-models/_3gpp-5gc-nrm-udrfunction.yang | 2 +- .../_3gpp-common-subscription-control.yang | 2 +- yang-models/_3gpp-common-trace.yang | 2 +- yang-models/_3gpp-common-yang-types.yang | 2 +- 15 files changed, 740 insertions(+), 793 deletions(-) diff --git a/yang-models/_3gpp-5g-common-yang-types.yang b/yang-models/_3gpp-5g-common-yang-types.yang index a17bfd56..d1eba76b 100755 --- a/yang-models/_3gpp-5g-common-yang-types.yang +++ b/yang-models/_3gpp-5g-common-yang-types.yang @@ -15,7 +15,7 @@ module _3gpp-5g-common-yang-types { TTA, TTC). All rights reserved."; reference "3GPP TS 28.541"; - revision 2026-03-25 { reference CR- ; } + revision 2026-03-25 { reference CR-1694 ; } revision 2025-11-07 { reference CR-1640 ; } revision 2025-11-01 { reference CR-1657 ; } revision 2025-07-25 { reference CR-1558 ; } diff --git a/yang-models/_3gpp-5gc-nrm-aiot.yang b/yang-models/_3gpp-5gc-nrm-aiot.yang index 9d3dfc19..74fed3b7 100644 --- a/yang-models/_3gpp-5gc-nrm-aiot.yang +++ b/yang-models/_3gpp-5gc-nrm-aiot.yang @@ -19,7 +19,7 @@ module _3gpp-5gc-nrm-aiot { reference "3GPP TS 28.541 3GPP TS 23.369"; - revision 2026-03-19 { reference CR-xxxx; } //common r19-20 + revision 2026-03-19 { reference "CR-1695 CR-1694"; } //common r19-20 revision 2025-11-01 { reference CR-1640; } grouping ServedAIOTAreaIDGrp { diff --git a/yang-models/_3gpp-5gc-nrm-ausffunction.yang b/yang-models/_3gpp-5gc-nrm-ausffunction.yang index 3131b340..ee443f45 100755 --- a/yang-models/_3gpp-5gc-nrm-ausffunction.yang +++ b/yang-models/_3gpp-5gc-nrm-ausffunction.yang @@ -20,7 +20,7 @@ module _3gpp-5gc-nrm-ausffunction { TTA, TTC). All rights reserved."; reference "3GPP TS 28.541"; - revision 2026-03-25 { reference CR- ; } + revision 2026-03-25 { reference CR-1694 ; } revision 2023-09-18 { reference CR-1043 ; } revision 2022-01-07 { reference CR-0643; } revision 2020-11-06 { reference CR-0412 ; } diff --git a/yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang b/yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang index e2953e19..d950cb9c 100755 --- a/yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang +++ b/yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang @@ -10,14 +10,15 @@ module _3gpp-5gc-nrm-managed-nfprofile { import _3gpp-5gc-nrm-nfservice { prefix nfs3gpp; } import _3gpp-5g-common-yang-types { prefix types5g3gpp; } -organization "3gpp SA5"; -contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; -description "NF profile dataType. - Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + organization "3gpp SA5"; + contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; + description "NF profile dataType. + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 29.510"; -revision 2025-07-25 { reference CR-1558 ; } + revision 2026-03-25 { reference CR-1694 ; } + revision 2025-07-25 { reference CR-1558 ; } revision 2025-07-25 { reference "initial revision"; } grouping SPNInfoIdGrp { diff --git a/yang-models/_3gpp-5gc-nrm-neffunction.yang b/yang-models/_3gpp-5gc-nrm-neffunction.yang index 9c056d89..bcd3d088 100755 --- a/yang-models/_3gpp-5gc-nrm-neffunction.yang +++ b/yang-models/_3gpp-5gc-nrm-neffunction.yang @@ -17,10 +17,11 @@ module _3gpp-5gc-nrm-neffunction { contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; description "This IOC represents the NEF function in 5GC. For more information about the NEF, see 3GPP TS 23.501. - Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 28.541"; + revision 2026-03-25 { reference CR-1694 ; } revision 2025-11-07 { reference CR-1640 ; } revision 2025-07-25 { reference CR-1558 ; } revision 2025-03-25 { reference CR-1489 ; } diff --git a/yang-models/_3gpp-5gc-nrm-nfservice.yang b/yang-models/_3gpp-5gc-nrm-nfservice.yang index f72613fc..d9ad6a5b 100755 --- a/yang-models/_3gpp-5gc-nrm-nfservice.yang +++ b/yang-models/_3gpp-5gc-nrm-nfservice.yang @@ -13,11 +13,11 @@ module _3gpp-5gc-nrm-nfservice { organization "3gpp SA5"; contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; description "NF service dataType. - Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 29.510"; - revision 2025-03-25 { reference CR-; } + revision 2026-03-25 { reference CR-1694 ; } revision 2025-01-25 { reference CR-1442; } revision 2023-09-18 { reference CR-1043 ; } revision 2021-01-25 { reference CR-0454 ; } diff --git a/yang-models/_3gpp-5gc-nrm-nfservice.yang.bak b/yang-models/_3gpp-5gc-nrm-nfservice.yang.bak index ffdff0a0..f72613fc 100755 --- a/yang-models/_3gpp-5gc-nrm-nfservice.yang.bak +++ b/yang-models/_3gpp-5gc-nrm-nfservice.yang.bak @@ -1,774 +1,719 @@ -module _3gpp-5gc-nrm-nfservice { - yang-version 1.1; - - namespace urn:3gpp:sa5:_3gpp-5gc-nrm-nfservice; - prefix nfs3gpp; - - import _3gpp-common-yang-types { prefix types3gpp; } - import ietf-yang-types { prefix yang; } - import ietf-inet-types { prefix inet; } - import _3gpp-5g-common-yang-types { prefix types5g3gpp; } - - - organization "3gpp SA5"; - contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; - description "NF service dataType. - Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, - TTA, TTC). All rights reserved."; - reference "3GPP TS 29.510"; - - revision 2025-03-25 { reference CR-; } - revision 2025-01-25 { reference CR-1442; } - revision 2023-09-18 { reference CR-1043 ; } - revision 2021-01-25 { reference CR-0454 ; } - revision 2020-11-05 { reference CR-0412 ; } - revision 2019-06-17 { reference "initial revision"; } - - grouping NFServiceGrp { - description "This data type represents the NF Service - defined in TS 29.510 [23]."; - leaf serviceInstanceID { - description - "Unique ID of the service instance within a given NF Instance."; - mandatory true; - type string; - config false; - } - - leaf serviceName { - description "Name of the service instance (e.g. 'nudm-sdm')."; - mandatory true; - type ServiceName; - config false; - } - - list versions { - description "API versions supported by the NF Service and if available, - the corresponding retirement date of the NF Service."; - min-elements 1; - key "apiVersionInUri apiFullVersion"; - config false; - uses NFServiceVersion; - } - - leaf scheme { - description "URI scheme (e.g. 'http', 'https')."; - mandatory true; - type UriScheme; - } - - leaf nfServiceStatus { - description "Status of the NF Service Instance."; - mandatory true; - type NFServiceStatus; - } - - leaf fqdn { - description "FQDN of the NF Service Instance."; - //optional support - type inet:domain-name; - } - - leaf interPlmnFqdn { - description "If the NF service needs to be discoverable by other NFs in a - different PLMN, then an FQDN that is used for inter PLMN routing."; - //optional support - type inet:domain-name; - } - - list ipEndPoints { - description "IP address(es) and port information of the Network Function - (including IPv4 and/or IPv6 address)where the service is listening - for incoming service requests."; - //optional support - - key idx; - leaf idx { - type string; - } - min-elements 1; - uses ipEndPoint; - } - - leaf apiPrefix { - description "Optional path segment(s) used to construct the {apiRoot} - variable of the different API URIs."; - //optional support - type string; - } - - list defaultNotificationSubscriptions { - description "Notification endpoints for different notification types."; - key notificationType; - //optional support - min-elements 1; - uses types3gpp:DefaultNotificationSubscription; - } - - list allowedPLMNs { - description "PLMNs allowed to access the service instance. - The absence of this attribute indicates that any PLMN is allowed to - access the service instance."; - - min-elements 1; - //optional support - key "mcc mnc"; - uses types3gpp:PLMNId; - } - list allowedSnpns { - description "PLMNs allowed to access the service instance. - The absence of this attribute indicates that any PLMN is allowed to - access the service instance."; - - min-elements 1; - //optional support - key "mcc mnc"; - uses types3gpp:PLMNId; - } - leaf-list allowedNfTypes { - description "SNPNs allowed to access the NF instance"; - min-elements 1; - //optional support - type types3gpp:NfType; - } - - leaf-list allowedNfDomains { - description "Pattern representing the NF domain names allowed to - access the service instance."; - //optional support - min-elements 1; - type string; - } - - list allowedNSSAIs { - description "S-NSSAI of the allowed slices to access the service - instance. The absence of this attribute indicates that any slice - is allowed to access the service instance."; - min-elements 1; - //optional support - key "sd sst"; - uses types5g3gpp:SNssai; - } - - list allowedScopesRuleSet { - description "It represents map of rules specifying scopes allowed or - denied for NF-Consumers. This attribute may be present when the - NF-Producer and the NRF support Allowed-ruleset feature as specified - in clause 6.1.9 in TS 29.510."; - //optional support - key idx; - leaf idx { type uint32; } - uses types5g3gpp:RuleSetGrp; - } - - leaf-list allowedOperationsPerNfType { - description "It indicates the allowed operations on resources for - each type of NF; the key of the map is the NF Type, and the value - is an array of scopes"; - //optional support - type string; - min-elements 1; - } - leaf-list allowedOperationsPerNfInstance { - description "It indicates the allowed operations on resources for - a given NF Instance; the key of the map is the NF Instance Id, and - the value is an array of scopes"; - //optional support - type string; - min-elements 1; - } - leaf allowedOperationsPerNfInstanceOverrides { - type boolean; - default false; - //optional support - description "When it is present and set to true, indicates that - the scopes defined in attribute allowedOperationsPerNfInstance - for a given NF Instance ID take precedence over the scopes defined - in attribute allowedOperationsPerNfType for the corresponding - NF type of the NF Instance associated to such NF Instance ID.."; - } - list sNssais { - description "S-NSSAIs of the Network Function. If not - provided, the NF can serve any S-NSSAI. When present - this IE represents the list of S-NSSAIs supported in - all the PLMNs listed in the plmnList IE."; - //optional support - min-elements 1; - key "sst sd"; - uses types5g3gpp:SNssai; - } - - leaf oauth2Required { - type boolean; - //optional support - description "It indicates whether the NF Service Instance requires - Oauth2-based authorization."; - } - - leaf sharedServiceDataId { - type string; - //optional support - description "String uniquely identifying SharedServiceData. The format - of the sharedServiceDataId shall be a Universally Unique Identifier - (UUID) version 4, as described in IETF RFC 4122 [44]. The hexadecimal - letters should be formatted as lower-case characters by the sender, - and they shall be handled as case-insensitive by the receiver."; - } - - leaf priority { - description "Priority (relative to other services of the same type) - in the range of 0-65535, to be used for NF Service selection; lower - values indicate a higher priority."; - //optional support - type uint16 { range "0..65535"; } - } - - leaf capacity { - description "Static capacity information in the range of 0-65535, - expressed as a weight relative to other services of the same type."; - //optional support - type uint16; - } - - - leaf recoveryTime { - description "Timestamp when the NF was (re)started."; - //optional support - type yang:date-and-time; - } - - leaf vendorId { - description "Vendor ID of the NF instance"; - //optional support - type string; - } - list callbackUriPrefixList { - description "It indicates the optional path segment(s) used to construct - the prefix of the Callback URIs during the reselection of an NF - service consumer."; - //optional support - reference "3GPP TS 29.501 [23], clause 4.4.3."; - key callbackUriPrefix; - min-elements 1; - uses CallbackUriPrefixItemGrp; - } - leaf supportedFeatures { - description "It is a string, which indicates the features of the service - corresponding to the subscribed default notification, which are supported - by the NF (Service) instance acting as NF service consumer."; - reference "3GPP TS 29.571 table 5.2.2-3"; - //optional - type types3gpp:SupportedFeatures; - } - list supportedVendorSpecificFeatures { - description "It indicates a map of Vendor-Specific features, where the - key of the map is the IANA-assigned SMI Network Management Private - Enterprise Codes and the value of each entry of the map shall be - a list (array) of VendorSpecificFeature objects as defined - in the clause 5.3.247."; - key "enterpriseCode"; - - leaf enterpriseCode { - type uint32; - description "IANA-assigned SMI Network Management Private - Enterprise Code"; - } - - list vendorSpecificFeature { - key "featureName"; - config false; - description "VendorSpecificFeature objects as defined - in the clause 5.3.247."; - uses types5g3gpp:VendorSpecificFeatureGrp; - } - } - leaf load { - description "Latest known load information of the NF, percentage."; - type types3gpp:Load; - config false; - } - leaf loadTimeStamp { - description "Timestamp of the reported load information."; - type yang:date-and-time; - config false; - } - leaf-list nfServiceSetIdList { - description "This attribute represents a list of NF Service Set ID. - At most one NF Service Set ID shall be indicated per PLMN-ID or - SNPN of the NF."; - type string; - min-elements 1; - } - list perPlmnSnssaiList { - description "It includes the S-NSSAIs supported by the Network Function - for each PLMN supported by the Network Function. When present, it - shall override sNssais IE."; - key idx; - leaf idx { type uint32; } - uses types5g3gpp:PlmnSnssai; - } - - leaf canaryRelease { - description "This attribute indicates whether an NF instance whose - nfStatus is set to REGISTERED is in Canary Release condition, i.e. - it should only be selected by NF Service Consumers under the - conditions indicated by the selectionConditions attribute. - True: the NF is under Canary Release condition, even if the - nfStatus is set to REGISTERED. - False: the NF instance indicates its Canary Release condition - via the nfStatus attribute."; - //optional support - type boolean; - default false; - } - - leaf exclusiveCanaryReleaseSelection { - description "This attribute indicates whether an NF Service Consumer - should only select an NF Service Producer in Canary Release condition. - True: the consumer shall only select producers in Canary Release - condition. - False: the consumer may select producers not in Canary Release - condition."; - //optional support - type boolean; - default false; - } - - leaf shutdownTime { - description "This attribute may be present if the nfStatus is set to - UNDISCOVERABLE due to scheduled shutdown. When present, it shall - indicate the timestamp when the NF Instance is planned to be - shut down."; - //optional support - type yang:date-and-time; - config false; - } - - leaf canaryPrecedenceOverPreferred { - description "This attribute indicates whether the NRF shall prioritize - the NF Service Producer in Canary Release condition over the - preferences (preferred-xxx, ext-preferred-xxx) present in NF - discovery requests. - True: NRF shall prioritize NF Service Producers in Canary Release - condition at NF discovery requests. - False: NRF shall prioritize the NF Service Producers according to - preferred-xxx and/or ext-preferred-xxx."; - //optional support - type boolean; - default false; - } - - list perPlmnOauth2ReqList { - description "This attribute includes the Oauth2-based authorization - requirement supported by the NF Service Instance per PLMN of the - NF Service Consumer. This attribute may be included when the - Oauth2.0 authorization requirement supported by the NF Service - Instance for different PLMN is different. When the requester - PLMN Id is available in perPlmnOauth2ReqList IE, this IE shall - override the oauth2Required IE. If the requester PLMN ID is not - present in perPlmnOauth2ReqList IE, then the value of - oauth2Required IE shall be applicable if available."; - //optional support - key idx; - leaf idx { type uint32; } - max-elements 1; - uses PlmnOauth2Grp; - } - - list selectionConditions { - description "This attribute includes the conditions under which an NF - Instance with an NFStatus value set to CANARY_RELEASE, or with a - canaryRelease attribute set to true, shall be selected by an NF - Service Consumer."; - //optional support - key idx; - leaf idx { type uint32; } - max-elements 1; - uses SelectionConditionsGrp; - } - } - - - list supportedVendorSpecificFeatures { - description "It indicates a map of Vendor-Specific features, where the - key of the map is the IANA-assigned SMI Network Management Private - Enterprise Codes and the value of each entry of the map shall be - a list (array) of VendorSpecificFeature objects as defined - in the clause 5.3.247."; - key "enterpriseCode"; - - leaf enterpriseCode { - type uint32; - description "IANA-assigned SMI Network Management Private Enterprise - Code"; - } - - list vendorSpecificFeature { - key "featureName"; - config false; - description "VendorSpecificFeature objects as defined - in the clause 5.3.247."; - uses types5g3gpp:VendorSpecificFeatureGrp; - } - } - - grouping CallbackUriPrefixItemGrp { - description "This <> represents Callback URI prefix value to - be used for specific notification types."; - reference "3GPP TS 29.510 clause 6.1.6.2.127"; - - leaf callbackUriPrefix { - description "It indicates the optional path segment(s) used to - construct the prefix of the Callback URIs during the reselection - of an NF service consumer."; - mandatory true; - type inet:uri; - reference "3GPP TS 29.501 clause 4.4.3"; - } - - leaf-list notificationTypes { - description "List of notification type values using the callback - URI prefix of the callbackUriPrefix."; - type string; - } - } - - grouping PlmnOauth2Grp { - description "This <> represents the per PLMN Oauth2.0 - indication."; - reference "3GPP TS 29.510 clause 6.1.6.2.102"; - - list oauth2RequiredPlmnIdList { - description "List of PLMN IDs for which Oauth2.0 authorization is - required."; - //optional support - min-elements 1; - key "mcc mnc"; - uses types3gpp:PLMNId; - } - - list oauth2NotRequiredPlmnIdList { - description "List of PLMN IDs for which Oauth2.0 authorization is - not required."; - min-elements 1; - key "mcc mnc"; - uses types3gpp:PLMNId; - } - } - - grouping SupiRangeGrp { - description "This <> represents a range of SUPIs."; - leaf start { - description "First value identifying the start of a SUPI range."; - type string { - pattern '^[0-9]+$'; - } - } - leaf end { - description "Last value identifying the end of a SUPI range."; - type string { - pattern '^[0-9]+$'; - } - } - leaf pattern { - description "Pattern representing the set of SUPIs belonging to - this range."; - type string; - } - } - - grouping IdentityRangeGrp { - description "This <> represents a range of identities."; - leaf start { - description "First value identifying the start of an identity range."; - type string { - pattern '^[0-9]+$'; - } - } - leaf end { - description "Last value identifying the end of an identity range."; - type string; - } - leaf pattern { - description "Pattern representing the set of identities belonging to - this range."; - type string; - } - } - - grouping ConditionItemGrp { - description "This <> represents a single condition item that - shall be evaluated to determine whether a discovered NF (Service) - Instance shall be selected."; - reference "3GPP TS 29.510 clause 6.1.6.2.124"; - - leaf-list consumerNfTypes { - description "It represents the NF types of the consumers for which - the conditions included in this ConditionItem apply. If this - attribute is absent, the conditions are applicable to all NF - consumer types."; - min-elements 1; - type types3gpp:NfType; - } - leaf serviceFeature { - description "It represents a feature number of that NF Service - Instance, under CANARY_RELEASE status."; - type uint32; - } - leaf vsServiceFeature { - description "It represents a Vendor-Specific feature number of that - NF Service Instance, under CANARY_RELEASE status."; - type uint32; - } - list supiRangeList { - description "It represents a set of SUPIs for which the NF (Service) - instance under CANARY_RELEASE status shall be selected."; - key idx; - leaf idx { type uint32; } - min-elements 1; - uses SupiRangeGrp; - } - list gpsiRangeList { - description "It represents a set of GPSIs for which the NF (Service) - instance under CANARY_RELEASE status shall be selected."; - key idx; - leaf idx { type uint32; } - min-elements 1; - uses IdentityRangeGrp; - } - list impuRangeList { - description "It represents a set of IMS Public Identities for which - the NF (Service) instance under CANARY_RELEASE status shall be - selected."; - key idx; - leaf idx { type uint32; } - min-elements 1; - uses IdentityRangeGrp; - } - list impiRangeList { - description "It represents a set of IMS Private Identities for which - the NF (Service) instance under CANARY_RELEASE status shall be - selected."; - key idx; - leaf idx { type uint32; } - min-elements 1; - uses IdentityRangeGrp; - } - leaf-list peiList { - description "It represents a set of PEIs of the UEs for which the - NF (Service) instance under CANARY_RELEASE status shall be - selected."; - min-elements 1; - type string; - } - list taiRangeList { - description "It represents a set of TAIs where the NF (Service) - instance under CANARY_RELEASE status shall be selected for a - certain UE."; - key idx; - leaf idx { type uint32; } - min-elements 1; - uses types5g3gpp:TaiRangeGrp; - } - leaf-list dnnList { - description "It represents a set of DNNs where the NF (Service) - instance under CANARY_RELEASE status shall be selected."; - min-elements 1; - type string; - } - } - - grouping SelectionConditionsGrp { - description "This <> represents the list of conditions that - shall be selected by an NF Service Consumer."; - reference "3GPP TS 29.510 clause 6.1.6.2.123"; - - list conditionItem { - key "id"; - description "It represent a single condition item that shall be - evaluated to determine whether a discovered NF (Service) Instance - shall be selected."; - leaf id { type string; } - uses ConditionItemGrp; - } - - list conditionGroup { - description "It represents a group of conditions that shall be - evaluated."; - key idx; - leaf idx { type uint32; } - max-elements 1; - // Note: ConditionGroup references SelectionConditions creating a - // circular dependency. Inlined one level to avoid it. - choice LogicalOperator { - case and { - list and { - description "It represents a list of conditions where the - overall evaluation is true only if all the conditions in - the list are evaluated as true."; - key idx; - leaf idx { type uint32; } - list conditionItem { - key "id"; - description "Condition item to be evaluated."; - leaf id { type string; } - uses ConditionItemGrp; - } - } - } - case or { - list or { - description "It represents a list of conditions where the - overall evaluation is true if at least one of the conditions - in the list is evaluated as true."; - key idx; - leaf idx { type uint32; } - list conditionItem { - key "id"; - description "Condition item to be evaluated."; - leaf id { type string; } - uses ConditionItemGrp; - } - } - } - } - } - } - - grouping ipEndPoint { - choice address { - leaf ipv4Address { - type inet:ipv4-address; - } - - leaf ipv6Address { - type inet:ipv6-address; - } - - leaf ipv6Prefix { - type inet:ipv6-prefix; - } - } - - leaf transport { - type TransportProtocol; - } - - leaf port { - type uint16; - } - } - - typedef TransportProtocol { - type enumeration { - enum TCP; - enum STCP; - enum UDP; - } - } - - grouping NFServiceVersion { - leaf apiVersionInUri { - mandatory true; - type string; - } - - leaf apiFullVersion { - mandatory true; - type string; - } - - leaf expiry { - //optional to support - type yang:date-and-time; - } - } - - typedef ServiceName { - type enumeration { - enum NNRF_NFM; - enum NNRF_DISC; - enum NUDM_SDM; - enum NUDM_UECM; - enum NUDM_UEAU; - enum NUDM_EE; - enum NUDM_PP; - enum NAMF_COMM; - enum NAMF_EVTS; - enum NAMF_MT; - enum NAMF_LOC; - enum NSMF_PDUSESSION; - enum NSMF_EVENT-EXPOSURE; - enum NAUSF_AUTH; - enum NAUSF_SORPROTECTION; - enum NNEF_PFDMANAGEMENT; - enum NPCF_AM-POLICY-CONTROL; - enum NPCF_SMPOLICYCONTROL; - enum NPCF_POLICYAUTHORIZATION; - enum NPCF_BDTPOLICYCONTROL; - enum NPCF_EVENTEXPOSURE; - enum NPCF_UE_POLICY_CONTROL; - enum NSMSF_SMS; - enum NNSSF_NSSELECTION; - enum NNSSF_NSSAIAVAILABILITY; - enum NUDR_DR; - enum NLMF_LOC; - enum N5G_EIR_EIC; - enum NBSF_MANAGEMENT; - enum NCHF_SPENDINGLIMITCONTROL; - enum NCHF_CONVERGEDCHARGING; - enum NNWDAF_EVENTSSUBSCRIPTION; - enum NNWDAF_ANALYTICSINFO; - } - } - - typedef UriScheme { - type enumeration { - enum HTTP; - enum HTTPS; - } - } - - typedef NFServiceStatus { - type enumeration { - enum REGISTERED; - enum SUSPENDED; - enum UNDISCOVERABLE; - } - } - - grouping ChfServiceInfo { - leaf primaryChfServiceInstance { - description "Shall be present if the CHF service instance serves as a - secondary CHF instance of another primary CHF service instance."; - //conditional to support - type string; - } - - leaf secondaryChfServiceInstance { - description "Shall be present if the CHF service instance serves as a - primary CHF instance of another secondary CHF service instance."; - //conditional to support - type string; - } - } - grouping SNPNIdGrp { - description "This <> represents the information of a SNPN - identification"; - leaf mCC { - description "This is the Mobile Country Code (MCC) of the PLMN - identifier. See TS 23.003 [13] subclause 2.2 and 12.1"; - type string; - } - leaf mNC { - description "This is the Mobile Network Code (MNC) of the PLMN - identifier. See TS 23.003 [13] subclause 2.2 and 12.1."; - type string; - } - leaf nId { - description "Network Identity; Shall be present if PlmnIdNid - identifies an SNPN"; - type string; - } - } +module _3gpp-5gc-nrm-nfservice { + yang-version 1.1; + + namespace urn:3gpp:sa5:_3gpp-5gc-nrm-nfservice; + prefix nfs3gpp; + + import _3gpp-common-yang-types { prefix types3gpp; } + import ietf-yang-types { prefix yang; } + import ietf-inet-types { prefix inet; } + import _3gpp-5g-common-yang-types { prefix types5g3gpp; } + + + organization "3gpp SA5"; + contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; + description "NF service dataType. + Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + TTA, TTC). All rights reserved."; + reference "3GPP TS 29.510"; + + revision 2025-03-25 { reference CR-; } + revision 2025-01-25 { reference CR-1442; } + revision 2023-09-18 { reference CR-1043 ; } + revision 2021-01-25 { reference CR-0454 ; } + revision 2020-11-05 { reference CR-0412 ; } + revision 2019-06-17 { reference "initial revision"; } + + grouping NFServiceGrp { + description "This data type represents the NF Service + defined in TS 29.510 [23]."; + leaf serviceInstanceID { + description + "Unique ID of the service instance within a given NF Instance."; + mandatory true; + type string; + } + + leaf serviceName { + description "Name of the service instance (e.g. 'nudm-sdm')."; + mandatory true; + type ServiceName; + config false; + } + + list versions { + description "API versions supported by the NF Service and if available, + the corresponding retirement date of the NF Service."; + min-elements 1; + key "apiVersionInUri apiFullVersion"; + config false; + uses NFServiceVersion; + } + + leaf scheme { + description "URI scheme (e.g. 'http', 'https')."; + mandatory true; + type UriScheme; + } + + leaf nfServiceStatus { + description "Status of the NF Service Instance."; + mandatory true; + type NFServiceStatus; + } + + leaf fqdn { + description "FQDN of the NF Service Instance."; + //optional support + type inet:domain-name; + } + + leaf interPlmnFqdn { + description "If the NF service needs to be discoverable by other NFs in a + different PLMN, then an FQDN that is used for inter PLMN routing."; + //optional support + type inet:domain-name; + } + + list ipEndPoints { + description "IP address(es) and port information of the Network Function + (including IPv4 and/or IPv6 address)where the service is listening + for incoming service requests."; + //optional support + + key idx; + leaf idx { + type string; + } + min-elements 1; + uses ipEndPoint; + } + + leaf apiPrefix { + description "Optional path segment(s) used to construct the {apiRoot} + variable of the different API URIs."; + //optional support + type string; + } + + list defaultNotificationSubscriptions { + description "Notification endpoints for different notification types."; + key notificationType; + //optional support + min-elements 1; + uses types3gpp:DefaultNotificationSubscription; + } + + list allowedPLMNs { + description "PLMNs allowed to access the service instance. + The absence of this attribute indicates that any PLMN is allowed to + access the service instance."; + + min-elements 1; + //optional support + key "mcc mnc"; + uses types3gpp:PLMNId; + } + list allowedSnpns { + description "PLMNs allowed to access the service instance. + The absence of this attribute indicates that any PLMN is allowed to + access the service instance."; + + min-elements 1; + //optional support + key "mcc mnc"; + uses types3gpp:PLMNId; + } + leaf-list allowedNfTypes { + description "SNPNs allowed to access the NF instance"; + min-elements 1; + //optional support + type types3gpp:NfType; + } + + leaf-list allowedNfDomains { + description "Pattern representing the NF domain names allowed to + access the service instance."; + //optional support + min-elements 1; + type string; + } + + list allowedNSSAIs { + description "S-NSSAI of the allowed slices to access the service + instance. The absence of this attribute indicates that any slice + is allowed to access the service instance."; + min-elements 1; + //optional support + key "sd sst"; + uses types5g3gpp:SNssai; + } + + list allowedScopesRuleSet { + description "It represents map of rules specifying scopes allowed or + denied for NF-Consumers. This attribute may be present when the + NF-Producer and the NRF support Allowed-ruleset feature as specified + in clause 6.1.9 in TS 29.510."; + //optional support + key idx; + leaf idx { type uint32; } + uses types5g3gpp:RuleSetGrp; + } + + leaf-list allowedOperationsPerNfType { + description "It indicates the allowed operations on resources for + each type of NF; the key of the map is the NF Type, and the value + is an array of scopes"; + //optional support + type string; + min-elements 1; + } + leaf-list allowedOperationsPerNfInstance { + description "It indicates the allowed operations on resources for + a given NF Instance; the key of the map is the NF Instance Id, and + the value is an array of scopes"; + //optional support + type string; + min-elements 1; + } + leaf allowedOperationsPerNfInstanceOverrides { + type boolean; + default false; + //optional support + description "When it is present and set to true, indicates that + the scopes defined in attribute allowedOperationsPerNfInstance + for a given NF Instance ID take precedence over the scopes defined + in attribute allowedOperationsPerNfType for the corresponding + NF type of the NF Instance associated to such NF Instance ID.."; + } + list sNssais { + description "S-NSSAIs of the Network Function. If not + provided, the NF can serve any S-NSSAI. When present + this IE represents the list of S-NSSAIs supported in + all the PLMNs listed in the plmnList IE."; + //optional support + min-elements 1; + key "sst sd"; + uses types5g3gpp:SNssai; + } + + leaf oauth2Required { + type boolean; + //optional support + description "It indicates whether the NF Service Instance requires + Oauth2-based authorization."; + } + + leaf sharedServiceDataId { + type string; + //optional support + description "String uniquely identifying SharedServiceData. The format + of the sharedServiceDataId shall be a Universally Unique Identifier + (UUID) version 4, as described in IETF RFC 4122 [44]. The hexadecimal + letters should be formatted as lower-case characters by the sender, + and they shall be handled as case-insensitive by the receiver."; + } + + leaf priority { + description "Priority (relative to other services of the same type) + in the range of 0-65535, to be used for NF Service selection; lower + values indicate a higher priority."; + //optional support + type uint16 { range "0..65535"; } + } + + leaf capacity { + description "Static capacity information in the range of 0-65535, + expressed as a weight relative to other services of the same type."; + //optional support + type uint16; + } + + + leaf recoveryTime { + description "Timestamp when the NF was (re)started."; + //optional support + type yang:date-and-time; + } + + leaf vendorId { + description "Vendor ID of the NF instance"; + //optional support + type string; + } + list callbackUriPrefixList { + description "It indicates the optional path segment(s) used to construct + the prefix of the Callback URIs during the reselection of an NF + service consumer."; + //optional support + reference "3GPP TS 29.501 [23], clause 4.4.3."; + key callbackUriPrefix; + min-elements 1; + uses CallbackUriPrefixItemGrp; + } + leaf supportedFeatures { + description "It is a string, which indicates the features of the service + corresponding to the subscribed default notification, which are supported + by the NF (Service) instance acting as NF service consumer."; + reference "3GPP TS 29.571 table 5.2.2-3"; + //optional + type types3gpp:SupportedFeatures; + } + uses types5g3gpp:SupportedVendorSpecificFeaturesGrp; + leaf load { + description "Latest known load information of the NF, percentage."; + type types3gpp:Load; + config false; + } + leaf loadTimeStamp { + description "Timestamp of the reported load information."; + type yang:date-and-time; + config false; + } + leaf-list nfServiceSetIdList { + description "This attribute represents a list of NF Service Set ID. + At most one NF Service Set ID shall be indicated per PLMN-ID or + SNPN of the NF."; + type string; + min-elements 1; + } + list perPlmnSnssaiList { + description "It includes the S-NSSAIs supported by the Network Function + for each PLMN supported by the Network Function. When present, it + shall override sNssais IE."; + key idx; + leaf idx { type uint32; } + uses PlmnSnssai; + } + + leaf canaryRelease { + description "This attribute indicates whether an NF instance whose + nfStatus is set to REGISTERED is in Canary Release condition, i.e. + it should only be selected by NF Service Consumers under the + conditions indicated by the selectionConditions attribute. + True: the NF is under Canary Release condition, even if the + nfStatus is set to REGISTERED. + False: the NF instance indicates its Canary Release condition + via the nfStatus attribute."; + //optional support + type boolean; + default false; + } + + leaf exclusiveCanaryReleaseSelection { + description "This attribute indicates whether an NF Service Consumer + should only select an NF Service Producer in Canary Release condition. + True: the consumer shall only select producers in Canary Release + condition. + False: the consumer may select producers not in Canary Release + condition."; + //optional support + type boolean; + default false; + } + + leaf shutdownTime { + description "This attribute may be present if the nfStatus is set to + UNDISCOVERABLE due to scheduled shutdown. When present, it shall + indicate the timestamp when the NF Instance is planned to be + shut down."; + //optional support + type yang:date-and-time; + config false; + } + + leaf canaryPrecedenceOverPreferred { + description "This attribute indicates whether the NRF shall prioritize + the NF Service Producer in Canary Release condition over the + preferences (preferred-xxx, ext-preferred-xxx) present in NF + discovery requests. + True: NRF shall prioritize NF Service Producers in Canary Release + condition at NF discovery requests. + False: NRF shall prioritize the NF Service Producers according to + preferred-xxx and/or ext-preferred-xxx."; + //optional support + type boolean; + default false; + } + + list perPlmnOauth2ReqList { + description "This attribute includes the Oauth2-based authorization + requirement supported by the NF Service Instance per PLMN of the + NF Service Consumer. This attribute may be included when the + Oauth2.0 authorization requirement supported by the NF Service + Instance for different PLMN is different. When the requester + PLMN Id is available in perPlmnOauth2ReqList IE, this IE shall + override the oauth2Required IE. If the requester PLMN ID is not + present in perPlmnOauth2ReqList IE, then the value of + oauth2Required IE shall be applicable if available."; + //optional support + key idx; + leaf idx { type uint32; } + max-elements 1; + uses PlmnOauth2Grp; + } + + list selectionConditions { + description "This attribute includes the conditions under which an NF + Instance with an NFStatus value set to CANARY_RELEASE, or with a + canaryRelease attribute set to true, shall be selected by an NF + Service Consumer."; + //optional support + key idx; + leaf idx { type uint32; } + max-elements 1; + uses SelectionConditionsGrp; + } + } + + + + grouping CallbackUriPrefixItemGrp { + description "This <> represents Callback URI prefix value to + be used for specific notification types."; + reference "3GPP TS 29.510 clause 6.1.6.2.127"; + + leaf callbackUriPrefix { + description "It indicates the optional path segment(s) used to + construct the prefix of the Callback URIs during the reselection + of an NF service consumer."; + mandatory true; + type inet:uri; + reference "3GPP TS 29.501 clause 4.4.3"; + } + + leaf-list notificationTypes { + description "List of notification type values using the callback + URI prefix of the callbackUriPrefix."; + type string; + } + } + + grouping PlmnOauth2Grp { + description "This <> represents the per PLMN Oauth2.0 + indication."; + reference "3GPP TS 29.510 clause 6.1.6.2.102"; + + list oauth2RequiredPlmnIdList { + description "List of PLMN IDs for which Oauth2.0 authorization is + required."; + //optional support + min-elements 1; + key "mcc mnc"; + uses types3gpp:PLMNId; + } + + list oauth2NotRequiredPlmnIdList { + description "List of PLMN IDs for which Oauth2.0 authorization is + not required."; + //optional support + min-elements 1; + key "mcc mnc"; + uses types3gpp:PLMNId; + } + } + + grouping PlmnSnssai { + description "This data type represents the list of S-NSSAIs supported + per PLMN."; + list plmnId { + description "PLMN ID for which list of supported S-NSSAI(s) + is provided."; + min-elements 1; + max-elements 1; + key "mcc mnc"; + uses types3gpp:PLMNId; + } + list sNssaiList { + description "The specific list of S-NSSAIs supported + by the given PLMN."; + min-elements 1; + max-elements 1; + key "sst sd"; + uses types5g3gpp:SNssai; + } + leaf nid { + description "Network Identity; Shall be present if PlmnIdNid + identifies an SNPN."; + reference "see clauses 5.30.2.3, 5.30.2.9, 6.3.4, + and 6.3.8 in 3GPP TS 23.501"; + type string; + } + } + + grouping ConditionItemGrp { + description "This <> represents a single condition item that + shall be evaluated to determine whether a discovered NF (Service) + Instance shall be selected."; + reference "3GPP TS 29.510 clause 6.1.6.2.124"; + + leaf-list consumerNfTypes { + description "It represents the NF types of the consumers for which + the conditions included in this ConditionItem apply. If this + attribute is absent, the conditions are applicable to all NF + consumer types."; + min-elements 1; + type types3gpp:NfType; + } + leaf serviceFeature { + description "It represents a feature number of that NF Service + Instance, under CANARY_RELEASE status."; + type uint32; + } + leaf vsServiceFeature { + description "It represents a Vendor-Specific feature number of that + NF Service Instance, under CANARY_RELEASE status."; + type uint32; + } + list supiRangeList { + description "It represents a set of SUPIs for which the NF (Service) + instance under CANARY_RELEASE status shall be selected."; + key idx; + leaf idx { type uint32; } + min-elements 1; + uses types5g3gpp:SupiRangeGrp; + } + list gpsiRangeList { + description "It represents a set of GPSIs for which the NF (Service) + instance under CANARY_RELEASE status shall be selected."; + key idx; + leaf idx { type uint32; } + min-elements 1; + uses types5g3gpp:IdentityRangeGrp; + } + list impuRangeList { + description "It represents a set of IMS Public Identities for which + the NF (Service) instance under CANARY_RELEASE status shall be + selected."; + key idx; + leaf idx { type uint32; } + min-elements 1; + uses types5g3gpp:IdentityRangeGrp; + } + list impiRangeList { + description "It represents a set of IMS Private Identities for which + the NF (Service) instance under CANARY_RELEASE status shall be + selected."; + key idx; + leaf idx { type uint32; } + min-elements 1; + uses types5g3gpp:IdentityRangeGrp; + } + leaf-list peiList { + description "It represents a set of PEIs of the UEs for which the + NF (Service) instance under CANARY_RELEASE status shall be + selected."; + min-elements 1; + type string; + } + list taiRangeList { + description "It represents a set of TAIs where the NF (Service) + instance under CANARY_RELEASE status shall be selected for a + certain UE."; + key idx; + leaf idx { type uint32; } + min-elements 1; + uses types5g3gpp:TaiRangeGrp; + } + leaf-list dnnList { + description "It represents a set of DNNs where the NF (Service) + instance under CANARY_RELEASE status shall be selected."; + min-elements 1; + type string; + } + } + + grouping SelectionConditionsGrp { + description "This <> represents the list of conditions that + shall be selected by an NF Service Consumer."; + reference "3GPP TS 29.510 clause 6.1.6.2.123"; + + list conditionItem { + key "id"; + description "It represent a single condition item that shall be + evaluated to determine whether a discovered NF (Service) Instance + shall be selected."; + leaf id { type string; } + uses ConditionItemGrp; + } + + list conditionGroup { + description "It represents a group of conditions that shall be + evaluated."; + key idx; + leaf idx { type uint32; } + max-elements 1; + // Note: ConditionGroup references SelectionConditions creating a + // circular dependency. Inlined one level to avoid it. + choice LogicalOperator { + case and { + list and { + description "It represents a list of conditions where the + overall evaluation is true only if all the conditions in + the list are evaluated as true."; + key idx; + leaf idx { type uint32; } + list conditionItem { + key "id"; + description "Condition item to be evaluated."; + leaf id { type string; } + uses ConditionItemGrp; + } + } + } + case or { + list or { + description "It represents a list of conditions where the + overall evaluation is true if at least one of the conditions + in the list is evaluated as true."; + key idx; + leaf idx { type uint32; } + list conditionItem { + key "id"; + description "Condition item to be evaluated."; + leaf id { type string; } + uses ConditionItemGrp; + } + } + } + } + } + } + + grouping ipEndPoint { + choice address { + leaf ipv4Address { + type inet:ipv4-address; + } + + leaf ipv6Address { + type inet:ipv6-address; + } + + leaf ipv6Prefix { + type inet:ipv6-prefix; + } + } + + leaf transport { + type TransportProtocol; + } + + leaf port { + type uint16; + } + } + + typedef TransportProtocol { + type enumeration { + enum TCP; + enum STCP; + enum UDP; + } + } + + grouping NFServiceVersion { + leaf apiVersionInUri { + mandatory true; + type string; + } + + leaf apiFullVersion { + mandatory true; + type string; + } + + leaf expiry { + //optional to support + type yang:date-and-time; + } + } + + typedef ServiceName { + type enumeration { + enum NNRF_NFM; + enum NNRF_DISC; + enum NUDM_SDM; + enum NUDM_UECM; + enum NUDM_UEAU; + enum NUDM_EE; + enum NUDM_PP; + enum NAMF_COMM; + enum NAMF_EVTS; + enum NAMF_MT; + enum NAMF_LOC; + enum NSMF_PDUSESSION; + enum NSMF_EVENT-EXPOSURE; + enum NAUSF_AUTH; + enum NAUSF_SORPROTECTION; + enum NNEF_PFDMANAGEMENT; + enum NPCF_AM-POLICY-CONTROL; + enum NPCF_SMPOLICYCONTROL; + enum NPCF_POLICYAUTHORIZATION; + enum NPCF_BDTPOLICYCONTROL; + enum NPCF_EVENTEXPOSURE; + enum NPCF_UE_POLICY_CONTROL; + enum NSMSF_SMS; + enum NNSSF_NSSELECTION; + enum NNSSF_NSSAIAVAILABILITY; + enum NUDR_DR; + enum NLMF_LOC; + enum N5G_EIR_EIC; + enum NBSF_MANAGEMENT; + enum NCHF_SPENDINGLIMITCONTROL; + enum NCHF_CONVERGEDCHARGING; + enum NNWDAF_EVENTSSUBSCRIPTION; + enum NNWDAF_ANALYTICSINFO; + } + } + + typedef UriScheme { + type enumeration { + enum HTTP; + enum HTTPS; + } + } + + typedef NFServiceStatus { + type enumeration { + enum REGISTERED; + enum SUSPENDED; + enum UNDISCOVERABLE; + } + } + + grouping ChfServiceInfo { + leaf primaryChfServiceInstance { + description "Shall be present if the CHF service instance serves as a + secondary CHF instance of another primary CHF service instance."; + //conditional to support + type string; + } + + leaf secondaryChfServiceInstance { + description "Shall be present if the CHF service instance serves as a + primary CHF instance of another secondary CHF service instance."; + //conditional to support + type string; + } + } + grouping SNPNIdGrp { + description "This <> represents the information of a SNPN + identification"; + leaf mCC { + description "This is the Mobile Country Code (MCC) of the PLMN + identifier. See TS 23.003 [13] subclause 2.2 and 12.1"; + type string; + } + leaf mNC { + description "This is the Mobile Network Code (MNC) of the PLMN + identifier. See TS 23.003 [13] subclause 2.2 and 12.1."; + type string; + } + leaf nId { + description "Network Identity; Shall be present if PlmnIdNid + identifies an SNPN"; + type string; + } + } } \ No newline at end of file diff --git a/yang-models/_3gpp-5gc-nrm-nrffunction.yang b/yang-models/_3gpp-5gc-nrm-nrffunction.yang index c1a77c9c..92de7f5a 100755 --- a/yang-models/_3gpp-5gc-nrm-nrffunction.yang +++ b/yang-models/_3gpp-5gc-nrm-nrffunction.yang @@ -32,7 +32,7 @@ module _3gpp-5gc-nrm-nrffunction { TTA, TTC). All rights reserved."; reference "3GPP TS 28.541"; - revision 2026-03-25 { reference CR- ; } + revision 2026-03-25 { reference CR-1694 ; } revision 2025-11-01 { reference CR-1640 ; } revision 2025-07-25 { reference CR-1558 ; } revision 2025-01-25 { reference CR-1442 ; } diff --git a/yang-models/_3gpp-5gc-nrm-pcffunction.yang b/yang-models/_3gpp-5gc-nrm-pcffunction.yang index dbaef0a0..208254ea 100755 --- a/yang-models/_3gpp-5gc-nrm-pcffunction.yang +++ b/yang-models/_3gpp-5gc-nrm-pcffunction.yang @@ -20,7 +20,7 @@ module _3gpp-5gc-nrm-pcffunction { TTA, TTC). All rights reserved."; reference "3GPP TS 28.541"; - revision 2026-03-25 { reference CR- ; } + revision 2026-03-25 { reference CR-1694 ; } revision 2025-07-25 { reference CR-1558 ; } revision 2024-05-24 { reference CR-1273 ; } revision 2023-09-18 { reference CR-1043 ; } diff --git a/yang-models/_3gpp-5gc-nrm-predefinedpccruleset.yang b/yang-models/_3gpp-5gc-nrm-predefinedpccruleset.yang index fbe2aae7..bc6dd6fc 100755 --- a/yang-models/_3gpp-5gc-nrm-predefinedpccruleset.yang +++ b/yang-models/_3gpp-5gc-nrm-predefinedpccruleset.yang @@ -19,8 +19,8 @@ module _3gpp-5gc-nrm-predefinedpccruleset { TTA, TTC). All rights reserved."; reference "3GPP TS 28.541"; - revision 2026-03-19 { reference CR-xxxx ; } - revision 2025-05-01 { reference CR-xxxx ; } + revision 2026-03-19 { reference CR-1694 ; } + revision 2025-05-01 { reference CR- ; } revision 2025-04-25 { reference CR-1520 ; } revision 2025-03-25 { reference CR-1489 ; } revision 2023-09-18 { reference CR-1043 ; } diff --git a/yang-models/_3gpp-5gc-nrm-udmfunction.yang b/yang-models/_3gpp-5gc-nrm-udmfunction.yang index 293482eb..a5902141 100755 --- a/yang-models/_3gpp-5gc-nrm-udmfunction.yang +++ b/yang-models/_3gpp-5gc-nrm-udmfunction.yang @@ -20,7 +20,7 @@ module _3gpp-5gc-nrm-udmfunction { TTA, TTC). All rights reserved."; reference "3GPP TS 28.541"; - revision 2026-03-25 { reference CR- ; } + revision 2026-03-25 { reference CR-1694 ; } revision 2025-07-25 { reference CR-1558 ; } revision 2024-04-04 { reference CR-1139; } revision 2023-09-18 { reference CR-1043 ; } diff --git a/yang-models/_3gpp-5gc-nrm-udrfunction.yang b/yang-models/_3gpp-5gc-nrm-udrfunction.yang index 3454151e..79016d7f 100755 --- a/yang-models/_3gpp-5gc-nrm-udrfunction.yang +++ b/yang-models/_3gpp-5gc-nrm-udrfunction.yang @@ -20,7 +20,7 @@ module _3gpp-5gc-nrm-udrfunction { TTA, TTC). All rights reserved."; reference "3GPP TS 28.541"; - revision 2026-03-25 { reference CR- ; } + revision 2026-03-25 { reference CR-1694 ; } revision 2025-07-25 { reference CR-1558 ; } revision 2023-09-18 { reference CR-1043 ; } revision 2023-04-26 { reference CR-0916; } diff --git a/yang-models/_3gpp-common-subscription-control.yang b/yang-models/_3gpp-common-subscription-control.yang index 09760f77..833e46ad 100755 --- a/yang-models/_3gpp-common-subscription-control.yang +++ b/yang-models/_3gpp-common-subscription-control.yang @@ -21,7 +21,7 @@ module _3gpp-common-subscription-control { Solution Set (SS) definitions 3GPP TS 28.623"; - revision 2026-03-19 { reference "CR-xxxx CR-xxxx"; } //common for r19, r20 + revision 2026-03-19 { reference "CR-0618 CR-0619"; } //common for r19, r20 revision 2025-11-07 { reference "CR-0551 CR-0586"; } revision 2025-08-13 { reference "CR-0551 CR-0561"; } revision 2025-05-13 { reference "CR-0548"; } diff --git a/yang-models/_3gpp-common-trace.yang b/yang-models/_3gpp-common-trace.yang index 3302f7ef..648238fa 100755 --- a/yang-models/_3gpp-common-trace.yang +++ b/yang-models/_3gpp-common-trace.yang @@ -25,7 +25,7 @@ module _3gpp-common-trace { Integration Reference Point (IRP); Information Service (IS)" ; - revision 2026-03-20 { reference "CR-xxxx" ; } + revision 2026-03-19 { reference "CR-0618" ; } revision 2026-02-07 { reference "CR-1682" ; } revision 2025-10-07 { reference "CR-0573" ; } revision 2025-10-01 { reference "CR-0578" ; } diff --git a/yang-models/_3gpp-common-yang-types.yang b/yang-models/_3gpp-common-yang-types.yang index 62600bb9..c7f015ed 100755 --- a/yang-models/_3gpp-common-yang-types.yang +++ b/yang-models/_3gpp-common-yang-types.yang @@ -16,7 +16,7 @@ module _3gpp-common-yang-types { TTA, TTC). All rights reserved."; reference "3GPP TS 28.623"; - revision 2026-03-19 { reference "CR-xxxx"; } + revision 2026-03-19 { reference "CR-0618" ; } revision 2025-10-07 { reference "CR-0573 CR-0582 CR-583"; } revision 2025-10-01 { reference "CR-0578" ; } revision 2025-08-31 { reference "CR-0551 CR-0556 CR-0562"; } -- GitLab From 3e12aaa0a4765a358609a3dafe1c948443622dc4 Mon Sep 17 00:00:00 2001 From: scottma Date: Fri, 3 Apr 2026 13:48:17 +0000 Subject: [PATCH 14/45] Update trace MDT config to include NTN geo scope definition. --- yang-models/_3gpp-common-trace.yang | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/yang-models/_3gpp-common-trace.yang b/yang-models/_3gpp-common-trace.yang index 648238fa..ea5c4c92 100755 --- a/yang-models/_3gpp-common-trace.yang +++ b/yang-models/_3gpp-common-trace.yang @@ -2123,7 +2123,8 @@ module _3gpp-common-trace { attribute loggedMdtConfig are applicable. The optional attribute plmnList allows to specify the PLMNs where measurements collection, status indication and log reporting is - allowed."; + allowed. For NTN MDT, if the list of plmnList is included, it will + only log measurements for the cells belonging to the listed PLMNs."; max-elements 1; uses MdtConfigGrp; leaf idx { type string; } -- GitLab From 8691b0dbc59c543b05a354ba90cd5c26b7acebd5 Mon Sep 17 00:00:00 2001 From: scottma Date: Fri, 3 Apr 2026 14:18:45 +0000 Subject: [PATCH 15/45] Update MDT config definition for NTN geo area. --- yang-models/_3gpp-common-trace.yang | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/yang-models/_3gpp-common-trace.yang b/yang-models/_3gpp-common-trace.yang index ea5c4c92..beeec4fb 100755 --- a/yang-models/_3gpp-common-trace.yang +++ b/yang-models/_3gpp-common-trace.yang @@ -25,6 +25,7 @@ module _3gpp-common-trace { Integration Reference Point (IRP); Information Service (IS)" ; + revision 2026-04-01 { reference "CR-0623" ; } revision 2026-03-19 { reference "CR-0618" ; } revision 2026-02-07 { reference "CR-1682" ; } revision 2025-10-07 { reference "CR-0573" ; } @@ -1723,7 +1724,9 @@ module _3gpp-common-trace { the attribute loggedMdtConfig are applicable. The optional attribute plmnList allows to specify the PLMNs where - measurements collection, status indication and log reporting is allowed."; + measurements collection, status indication and log reporting is allowed. + For NTN MDT, if the list of plmnList is included, it will only log + measurements for the cells belonging to the listed PLMNs."; leaf anonymizationOfMdtData { when ../areaScope ; -- GitLab From 35a55b46d84fcda576258c0c50b1894f7787a292 Mon Sep 17 00:00:00 2001 From: rosabolzek Date: Mon, 13 Apr 2026 12:27:20 +0200 Subject: [PATCH 16/45] aligne stage 2 to stage 3 28.541 EP_RP --- yang-models/_3gpp-5gc-nrm-ep.yang | 523 +++++++++++++++++++++++++++++- 1 file changed, 510 insertions(+), 13 deletions(-) diff --git a/yang-models/_3gpp-5gc-nrm-ep.yang b/yang-models/_3gpp-5gc-nrm-ep.yang index 52cd3f5b..f52664c9 100755 --- a/yang-models/_3gpp-5gc-nrm-ep.yang +++ b/yang-models/_3gpp-5gc-nrm-ep.yang @@ -23,6 +23,11 @@ module _3gpp-5gc-nrm-ep { import _3gpp-common-yang-types { prefix types3gpp; } import _3gpp-common-top { prefix top3gpp; } import ietf-inet-types { prefix inet; } + import _3gpp-5gc-nrm-neffunction {prefix nef3gpp;} + import _3gpp-5gc-nrm-gmlcfunction {prefix gmlc3gpp;} + import _3gpp-5gc-nrm-nwdaffunction {prefix nwdaf3gpp;} + import _3gpp-nr-nrm-gnbcucpfunction {prefix gnbcucp3gpp;} + import _3gpp-5gc-nrm-scpfunction {prefix scp3gpp;} organization "3GPP SA5"; contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; @@ -126,7 +131,129 @@ module _3gpp-5gc-nrm-ep { grouping EP_N31Grp { uses eprp3gpp:EP_Common; } - + grouping EP_NL1Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N60Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N33Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_Npc4Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_Npc6Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_Npc7Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N88Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_Npc8Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N58Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N59Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N40Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N41Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N42Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N28Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N61Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N63Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N84Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N85Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N86Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N87Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N89Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N96Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_NL3Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_NL5Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_NL6Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_NL9Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N3mbGrp { + uses eprp3gpp:EP_Common; + } + grouping EP_N19mbGrp { + uses eprp3gpp:EP_Common; + } + grouping EP_N4mbGrp { + uses eprp3gpp:EP_Common; + } + grouping EP_N9mbGrp { + uses eprp3gpp:EP_Common; + } + grouping EP_N16mbGrp { + uses eprp3gpp:EP_Common; + } + grouping EP_N11mbGrp { + uses eprp3gpp:EP_Common; + } + grouping EP_Nmb1Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_SM12Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_SM13Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_SM14Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N34Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_NL7Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_NL8Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_NL10Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N62Grp { + uses eprp3gpp:EP_Common; + } grouping EP_N32Grp { uses eprp3gpp:EP_Common; list remotePlmnId { @@ -194,21 +321,77 @@ module _3gpp-5gc-nrm-ep { } augment "/me3gpp:ManagedElement/af3gpp:AFFunction" { - list EP_N6 { - description "Represents the EP_N6 IOC."; + + list EP_Rx { + description "Represents the EP_Rx IOC."; key id; uses top3gpp:Top_Grp; container attributes { - uses EP_N6Grp; + uses EP_RxGrp; + } + } + list EP_N33 { + description "This IOC represents the N33 interface + between NEF and AF"; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_N33Grp; + } + } + list EP_N62 { + description "This IOC represents an end point of N62 + interface between AF and AAnF,"; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_N62Grp; + } + } + list EP_N86 { + description "Represents the EP_N86 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_N86Grp; } } + } + augment "/me3gpp:ManagedElement/nef3gpp:NEFFunction" { - list EP_Rx { - description "Represents the EP_Rx IOC."; + list EP_N33 { + description "This IOC represents the N33 interface + between NEF and AF."; key id; uses top3gpp:Top_Grp; container attributes { - uses EP_RxGrp; + uses EP_N33Grp; + } + } + list EP_N63 { + description "This IOC represents an end point of N63 interface + between NEF and AAnF"; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_N63Grp; + } + } + list EP_N85 { + description "This IOC represents an end point of N85 interface + between TSCTSF and NEF"; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_N85Grp; + } + } + list EP_NL5 { + description "Represents the EP_NL5 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_NL5Grp; } } } @@ -312,15 +495,67 @@ module _3gpp-5gc-nrm-ep { uses EP_NLSGrp; } } - + list EP_NL1 { + description "This IOC represents the NL1 interface between + AMF and LMF"; + reference "3GPP TS 23.501"; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_NL1Grp; + } + } + list EP_N60 { + description "This IOC represents the N60 interface between + AMF and ASACF,"; + reference "3GPP TS 23.501"; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_N60Grp; + } + } list EP_NL2 { - description "Represents the EP_NL2 IOC."; + description "This IOC represents the NL2 interface + between AMF and GMLC,"; key id; uses top3gpp:Top_Grp; container attributes { uses EP_NL2Grp; } } + list EP_N58 { + description "Represents the EP_N58 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_N58Grp; + } + } + list EP_N41 { + description "Represents the EP_N41 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_N41Grp; + } + } + list EP_N42 { + description "Represents the EP_N41 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_N42Grp; + } + } + list EP_N11mb { + description "Represents the EP_N11mb IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_N11mbGrp; + } + } } augment "/me3gpp:ManagedElement/ausf3gpp:AUSFFunction" { @@ -341,8 +576,15 @@ module _3gpp-5gc-nrm-ep { uses EP_N13Grp; } } + list EP_N61 { + description "Represents the EP_N61 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_N61Grp; + } + } } - augment "/me3gpp:ManagedElement/dn3gpp:DNFunction" { list EP_N6 { description "Represents the EP_N6 IOC."; @@ -363,6 +605,46 @@ module _3gpp-5gc-nrm-ep { uses EP_NLSGrp; } } + list EP_NL1 { + description "This IOC represents the NL1 interface + between AMF and LMF,"; + reference "3GPP TS 23.501"; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_NL1Grp; + } + } + list EP_NL7 { + description "This IOC represents the NL7 interface + between two LMFs"; + reference "3GPP TS 23.273"; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_NL7Grp; + } + } + list EP_NL8 { + description "This IOC represents the NL8 interface + between LMF and NWDAF"; + reference "3GPP TS 23.273"; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_NL8Grp; + } + } + list EP_NL10 { + description "This IOC represents the NL10 interface + between LMF and GMLC"; + reference "3GPP TS 23.273"; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_NL10Grp; + } + } } augment "/me3gpp:ManagedElement/n3iwf3gpp:N3IWFFunction" { @@ -405,7 +687,23 @@ module _3gpp-5gc-nrm-ep { uses EP_N26Grp; } } - + list EP_N96 { + description "Represents the EP_N96 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_N96Grp; + } + } + list EP_SM14 { + description "This IOC represents the SM14 interface + between MNPF and NRF"; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_SM14Grp; + } + } } augment "/me3gpp:ManagedElement/nssf3gpp:NSSFFunction" { @@ -426,6 +724,15 @@ module _3gpp-5gc-nrm-ep { uses EP_N31Grp; } } + list EP_N34 { + description "This IOC represents the N34 interface + between NWDAF and NSSF"; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_N34Grp; + } + } } augment "/me3gpp:ManagedElement/pcf3gpp:PCFFunction" { @@ -473,6 +780,30 @@ module _3gpp-5gc-nrm-ep { uses EP_RxGrp; } } + list EP_Npc8 { + description "Represents the EP_Npc8 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_Npc8Grp; + } + } + list EP_N28 { + description "Represents the EP_N28 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_N28Grp; + } + } + list EP_N84 { + description "Represents the EP_N84 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_N84Grp; + } + } } augment "/me3gpp:ManagedElement/sepp3gpp:SEPPFunction" { @@ -569,6 +900,30 @@ module _3gpp-5gc-nrm-ep { uses EP_S5CGrp; } } + list EP_N88 { + description "Represents the EP_N88 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_N88Grp; + } + } + list EP_N40 { + description "Represents the EP_N40 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_N40Grp; + } + } + list EP_N16mb { + description "Represents the EP_N16mb IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_N16mbGrp; + } + } } augment "/me3gpp:ManagedElement/udm3gpp:UDMFunction" { @@ -580,7 +935,16 @@ module _3gpp-5gc-nrm-ep { uses EP_N8Grp; } } - + list EP_Npc4 { + description "This IOC represents the Npc4 interface between + the UDM and 5G DDNMF,"; + reference "3GPP TS 23.304"; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_Npc4Grp; + } + } list EP_N10 { description "Represents the EP_N10 IOC."; key id; @@ -598,7 +962,30 @@ module _3gpp-5gc-nrm-ep { uses EP_N13Grp; } } - + list EP_N59 { + description "Represents the EP_N59 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_N59Grp; + } + } + list EP_N87 { + description "Represents the EP_N87 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_N87Grp; + } + } + list EP_NL6 { + description "Represents the EP_NL6 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_NL6Grp; + } + } } augment "/me3gpp:ManagedElement/upf3gpp:UPFFunction" { @@ -646,5 +1033,115 @@ module _3gpp-5gc-nrm-ep { uses EP_N6Grp; } } + list EP_N19mb { + description "Represents the EP_N19mb IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_N19mbGrp; + } + } + } + augment "/me3gpp:ManagedElement/gmlc3gpp:GMLCFunction" { + list EP_NL3 { + description "Represents the EP_NL3 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_NL3Grp; + } + } + list EP_NL5 { + description "Represents the EP_NL5 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_NL5Grp; + } + } + list EP_NL6 { + description "Represents the EP_NL6 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_NL6Grp; + } + } + list EP_NL9 { + description "Represents the EP_NL9 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_NL9Grp; + } + } + list EP_NL10 { + description "This IOC represents the NL10 interface + between LMF and GMLC"; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_NL10Grp; + } + } + list EP_NL2 { + description "This IOC represents the NL2 interface + between AMF and GMLC,"; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_NL2Grp; + } + } + } + augment "/me3gpp:ManagedElement/nwdaf3gpp:NWDAFFunction" { + list EP_NL9 { + description "Represents the EP_NL9 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_NL9Grp; + } + } + list EP_N34 { + description "This IOC represents the N34 interface + between NWDAF and NSSF"; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_N34Grp; + } + } + list EP_NL8 { + description "This IOC represents the NL8 interface + between LMF and NWDAF"; + reference "3GPP TS 23.273"; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_NL8Grp; + } + } + } + augment "/me3gpp:ManagedElement/gnbcucp3gpp:GNBCUCPFunction" { + list EP_N3mb { + description "Represents the EP_N3mb IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_N3mbGrp; + } + } + } + augment "/me3gpp:ManagedElement/scp3gpp:SCPFunction" { + list EP_SM13 { + description "This IOC represents the SM13 interface + between MNPF and SCP"; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EP_SM13Grp; + } + } } } \ No newline at end of file -- GitLab From 9a709488b981bf2fd98619c04654368532a95837 Mon Sep 17 00:00:00 2001 From: "U-ERICSSON\\ETHBLL" Date: Mon, 13 Apr 2026 18:53:34 +0200 Subject: [PATCH 17/45] added mnpffunction --- yang-models/_3gpp-5gc-nrm-mnpffunction.yang | 84 +++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 yang-models/_3gpp-5gc-nrm-mnpffunction.yang diff --git a/yang-models/_3gpp-5gc-nrm-mnpffunction.yang b/yang-models/_3gpp-5gc-nrm-mnpffunction.yang new file mode 100644 index 00000000..6813e861 --- /dev/null +++ b/yang-models/_3gpp-5gc-nrm-mnpffunction.yang @@ -0,0 +1,84 @@ +module _3gpp-5gc-nrm-mnpffunction { + yang-version 1.1; + namespace urn:3gpp:sa5:_3gpp-5gc-nrm-mnpffunction; + prefix mnpf3gpp; + + import _3gpp-common-managed-function { prefix mf3gpp; } + import _3gpp-common-managed-element { prefix me3gpp; } + import _3gpp-5g-common-yang-types { prefix types5g3gpp; } + import _3gpp-common-top { prefix top3gpp; } + import _3gpp-5gc-nrm-managed-nfprofile { prefix mnfp3gpp; } + + organization "3gpp SA5"; + contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; + description "MNNPFFunction derived from basic ManagedFunction. + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + TTA, TTC). All rights reserved."; + reference "3GPP TS 28.541"; + + revision 2026-04-13 { reference CR-1694 ; } + + grouping MnpfInfoGrp { + description "Represents the data type MnpfInfo."; + + list msisdnRanges { + description "Represents the list of ranges of MSISDNs whose portability + status is available in the MNPF."; + min-elements 1; + key idx; + leaf idx { type uint32; } + uses types5g3gpp:IdentityRangeGrp; + } + } + + grouping MNPFFunctionGrp { + description "Represents the SMFFuntion IOC"; + uses mf3gpp:ManagedFunctionGrp; + + list pLMNInfoList { + description "It defines the PLMN(s) of a Network Function."; + key "mcc mnc sd sst"; + min-elements 1; + uses types5g3gpp:PLMNInfo; + } + + list managedNFProfile { + key idx; + leaf idx { type uint32; } + min-elements 1; + max-elements 1; + description "Profile definition of a Managed NF (See TS 23.501)"; + uses mnfp3gpp:ManagedNFProfileGrp; + } + + list commModelList { + min-elements 1; + key "groupId"; + description "Specifies a list of commModel. It can be used by NF and + NF services to interact with each other in 5G Core network "; + reference "3GPP TS 23.501"; + uses types5g3gpp:CommModel; + } + + list mnpfInfo { + description "This attribute represents information of an MNPF NF + Instance"; + max-elements 1; + key idx; + leaf idx { type uint32; } + uses MnpfInfoGrp; + } + } + + augment "/me3gpp:ManagedElement" { + list MNPFFunction { + description "MNPF NF"; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses MNPFFunctionGrp; + } + uses mf3gpp:ManagedFunctionContainedClasses; + } + } +} \ No newline at end of file -- GitLab From a9ee63e08e252b3ac6749f522a5d5e2437cc470d Mon Sep 17 00:00:00 2001 From: "U-ERICSSON\\ETHBLL" Date: Tue, 14 Apr 2026 09:19:26 +0200 Subject: [PATCH 18/45] updated revision to indicate commonality --- yang-models/_3gpp-5gc-nrm-smffunction.yang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yang-models/_3gpp-5gc-nrm-smffunction.yang b/yang-models/_3gpp-5gc-nrm-smffunction.yang index d62b1cfa..f3b20a11 100755 --- a/yang-models/_3gpp-5gc-nrm-smffunction.yang +++ b/yang-models/_3gpp-5gc-nrm-smffunction.yang @@ -18,7 +18,7 @@ module _3gpp-5gc-nrm-smffunction { TTA, TTC). All rights reserved."; reference "3GPP TS 28.541"; - revision 2024-05-24 { reference CR-1273 ; } + revision 2024-05-24 { reference CR-1273 ; } // common for rel-19,20 revision 2023-09-18 { reference CR-1043 ; } revision 2023-04-26 { reference CR-0916; } revision 2020-11-08 { reference CR-0412 ; } -- GitLab From 08f49a4d18b614f144a967baa232f59cda9423d3 Mon Sep 17 00:00:00 2001 From: rosabolzek Date: Tue, 14 Apr 2026 17:23:21 +0200 Subject: [PATCH 19/45] aligne stage 2 and 3 adding _3gpp-5gc-nrm-nsacffunction.yang --- yang-models/_3gpp-5gc-nrm-ep.yang | 523 +------------------ yang-models/_3gpp-5gc-nrm-nsacffunction.yang | 276 ++++++++++ 2 files changed, 289 insertions(+), 510 deletions(-) create mode 100755 yang-models/_3gpp-5gc-nrm-nsacffunction.yang diff --git a/yang-models/_3gpp-5gc-nrm-ep.yang b/yang-models/_3gpp-5gc-nrm-ep.yang index f52664c9..52cd3f5b 100755 --- a/yang-models/_3gpp-5gc-nrm-ep.yang +++ b/yang-models/_3gpp-5gc-nrm-ep.yang @@ -23,11 +23,6 @@ module _3gpp-5gc-nrm-ep { import _3gpp-common-yang-types { prefix types3gpp; } import _3gpp-common-top { prefix top3gpp; } import ietf-inet-types { prefix inet; } - import _3gpp-5gc-nrm-neffunction {prefix nef3gpp;} - import _3gpp-5gc-nrm-gmlcfunction {prefix gmlc3gpp;} - import _3gpp-5gc-nrm-nwdaffunction {prefix nwdaf3gpp;} - import _3gpp-nr-nrm-gnbcucpfunction {prefix gnbcucp3gpp;} - import _3gpp-5gc-nrm-scpfunction {prefix scp3gpp;} organization "3GPP SA5"; contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; @@ -131,129 +126,7 @@ module _3gpp-5gc-nrm-ep { grouping EP_N31Grp { uses eprp3gpp:EP_Common; } - grouping EP_NL1Grp { - uses eprp3gpp:EP_Common; - } - grouping EP_N60Grp { - uses eprp3gpp:EP_Common; - } - grouping EP_N33Grp { - uses eprp3gpp:EP_Common; - } - grouping EP_Npc4Grp { - uses eprp3gpp:EP_Common; - } - grouping EP_Npc6Grp { - uses eprp3gpp:EP_Common; - } - grouping EP_Npc7Grp { - uses eprp3gpp:EP_Common; - } - grouping EP_N88Grp { - uses eprp3gpp:EP_Common; - } - grouping EP_Npc8Grp { - uses eprp3gpp:EP_Common; - } - grouping EP_N58Grp { - uses eprp3gpp:EP_Common; - } - grouping EP_N59Grp { - uses eprp3gpp:EP_Common; - } - grouping EP_N40Grp { - uses eprp3gpp:EP_Common; - } - grouping EP_N41Grp { - uses eprp3gpp:EP_Common; - } - grouping EP_N42Grp { - uses eprp3gpp:EP_Common; - } - grouping EP_N28Grp { - uses eprp3gpp:EP_Common; - } - grouping EP_N61Grp { - uses eprp3gpp:EP_Common; - } - grouping EP_N63Grp { - uses eprp3gpp:EP_Common; - } - grouping EP_N84Grp { - uses eprp3gpp:EP_Common; - } - grouping EP_N85Grp { - uses eprp3gpp:EP_Common; - } - grouping EP_N86Grp { - uses eprp3gpp:EP_Common; - } - grouping EP_N87Grp { - uses eprp3gpp:EP_Common; - } - grouping EP_N89Grp { - uses eprp3gpp:EP_Common; - } - grouping EP_N96Grp { - uses eprp3gpp:EP_Common; - } - grouping EP_NL3Grp { - uses eprp3gpp:EP_Common; - } - grouping EP_NL5Grp { - uses eprp3gpp:EP_Common; - } - grouping EP_NL6Grp { - uses eprp3gpp:EP_Common; - } - grouping EP_NL9Grp { - uses eprp3gpp:EP_Common; - } - grouping EP_N3mbGrp { - uses eprp3gpp:EP_Common; - } - grouping EP_N19mbGrp { - uses eprp3gpp:EP_Common; - } - grouping EP_N4mbGrp { - uses eprp3gpp:EP_Common; - } - grouping EP_N9mbGrp { - uses eprp3gpp:EP_Common; - } - grouping EP_N16mbGrp { - uses eprp3gpp:EP_Common; - } - grouping EP_N11mbGrp { - uses eprp3gpp:EP_Common; - } - grouping EP_Nmb1Grp { - uses eprp3gpp:EP_Common; - } - grouping EP_SM12Grp { - uses eprp3gpp:EP_Common; - } - grouping EP_SM13Grp { - uses eprp3gpp:EP_Common; - } - grouping EP_SM14Grp { - uses eprp3gpp:EP_Common; - } - grouping EP_N34Grp { - uses eprp3gpp:EP_Common; - } - grouping EP_NL7Grp { - uses eprp3gpp:EP_Common; - } - grouping EP_NL8Grp { - uses eprp3gpp:EP_Common; - } - grouping EP_NL10Grp { - uses eprp3gpp:EP_Common; - } - grouping EP_N62Grp { - uses eprp3gpp:EP_Common; - } + grouping EP_N32Grp { uses eprp3gpp:EP_Common; list remotePlmnId { @@ -321,77 +194,21 @@ module _3gpp-5gc-nrm-ep { } augment "/me3gpp:ManagedElement/af3gpp:AFFunction" { - - list EP_Rx { - description "Represents the EP_Rx IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_RxGrp; - } - } - list EP_N33 { - description "This IOC represents the N33 interface - between NEF and AF"; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N33Grp; - } - } - list EP_N62 { - description "This IOC represents an end point of N62 - interface between AF and AAnF,"; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N62Grp; - } - } - list EP_N86 { - description "Represents the EP_N86 IOC."; + list EP_N6 { + description "Represents the EP_N6 IOC."; key id; uses top3gpp:Top_Grp; container attributes { - uses EP_N86Grp; + uses EP_N6Grp; } } - } - augment "/me3gpp:ManagedElement/nef3gpp:NEFFunction" { - list EP_N33 { - description "This IOC represents the N33 interface - between NEF and AF."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N33Grp; - } - } - list EP_N63 { - description "This IOC represents an end point of N63 interface - between NEF and AAnF"; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N63Grp; - } - } - list EP_N85 { - description "This IOC represents an end point of N85 interface - between TSCTSF and NEF"; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N85Grp; - } - } - list EP_NL5 { - description "Represents the EP_NL5 IOC."; + list EP_Rx { + description "Represents the EP_Rx IOC."; key id; uses top3gpp:Top_Grp; container attributes { - uses EP_NL5Grp; + uses EP_RxGrp; } } } @@ -495,67 +312,15 @@ module _3gpp-5gc-nrm-ep { uses EP_NLSGrp; } } - list EP_NL1 { - description "This IOC represents the NL1 interface between - AMF and LMF"; - reference "3GPP TS 23.501"; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_NL1Grp; - } - } - list EP_N60 { - description "This IOC represents the N60 interface between - AMF and ASACF,"; - reference "3GPP TS 23.501"; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N60Grp; - } - } + list EP_NL2 { - description "This IOC represents the NL2 interface - between AMF and GMLC,"; + description "Represents the EP_NL2 IOC."; key id; uses top3gpp:Top_Grp; container attributes { uses EP_NL2Grp; } } - list EP_N58 { - description "Represents the EP_N58 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N58Grp; - } - } - list EP_N41 { - description "Represents the EP_N41 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N41Grp; - } - } - list EP_N42 { - description "Represents the EP_N41 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N42Grp; - } - } - list EP_N11mb { - description "Represents the EP_N11mb IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N11mbGrp; - } - } } augment "/me3gpp:ManagedElement/ausf3gpp:AUSFFunction" { @@ -576,15 +341,8 @@ module _3gpp-5gc-nrm-ep { uses EP_N13Grp; } } - list EP_N61 { - description "Represents the EP_N61 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N61Grp; - } - } } + augment "/me3gpp:ManagedElement/dn3gpp:DNFunction" { list EP_N6 { description "Represents the EP_N6 IOC."; @@ -605,46 +363,6 @@ module _3gpp-5gc-nrm-ep { uses EP_NLSGrp; } } - list EP_NL1 { - description "This IOC represents the NL1 interface - between AMF and LMF,"; - reference "3GPP TS 23.501"; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_NL1Grp; - } - } - list EP_NL7 { - description "This IOC represents the NL7 interface - between two LMFs"; - reference "3GPP TS 23.273"; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_NL7Grp; - } - } - list EP_NL8 { - description "This IOC represents the NL8 interface - between LMF and NWDAF"; - reference "3GPP TS 23.273"; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_NL8Grp; - } - } - list EP_NL10 { - description "This IOC represents the NL10 interface - between LMF and GMLC"; - reference "3GPP TS 23.273"; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_NL10Grp; - } - } } augment "/me3gpp:ManagedElement/n3iwf3gpp:N3IWFFunction" { @@ -687,23 +405,7 @@ module _3gpp-5gc-nrm-ep { uses EP_N26Grp; } } - list EP_N96 { - description "Represents the EP_N96 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N96Grp; - } - } - list EP_SM14 { - description "This IOC represents the SM14 interface - between MNPF and NRF"; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_SM14Grp; - } - } + } augment "/me3gpp:ManagedElement/nssf3gpp:NSSFFunction" { @@ -724,15 +426,6 @@ module _3gpp-5gc-nrm-ep { uses EP_N31Grp; } } - list EP_N34 { - description "This IOC represents the N34 interface - between NWDAF and NSSF"; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N34Grp; - } - } } augment "/me3gpp:ManagedElement/pcf3gpp:PCFFunction" { @@ -780,30 +473,6 @@ module _3gpp-5gc-nrm-ep { uses EP_RxGrp; } } - list EP_Npc8 { - description "Represents the EP_Npc8 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_Npc8Grp; - } - } - list EP_N28 { - description "Represents the EP_N28 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N28Grp; - } - } - list EP_N84 { - description "Represents the EP_N84 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N84Grp; - } - } } augment "/me3gpp:ManagedElement/sepp3gpp:SEPPFunction" { @@ -900,30 +569,6 @@ module _3gpp-5gc-nrm-ep { uses EP_S5CGrp; } } - list EP_N88 { - description "Represents the EP_N88 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N88Grp; - } - } - list EP_N40 { - description "Represents the EP_N40 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N40Grp; - } - } - list EP_N16mb { - description "Represents the EP_N16mb IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N16mbGrp; - } - } } augment "/me3gpp:ManagedElement/udm3gpp:UDMFunction" { @@ -935,16 +580,7 @@ module _3gpp-5gc-nrm-ep { uses EP_N8Grp; } } - list EP_Npc4 { - description "This IOC represents the Npc4 interface between - the UDM and 5G DDNMF,"; - reference "3GPP TS 23.304"; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_Npc4Grp; - } - } + list EP_N10 { description "Represents the EP_N10 IOC."; key id; @@ -962,30 +598,7 @@ module _3gpp-5gc-nrm-ep { uses EP_N13Grp; } } - list EP_N59 { - description "Represents the EP_N59 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N59Grp; - } - } - list EP_N87 { - description "Represents the EP_N87 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N87Grp; - } - } - list EP_NL6 { - description "Represents the EP_NL6 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_NL6Grp; - } - } + } augment "/me3gpp:ManagedElement/upf3gpp:UPFFunction" { @@ -1033,115 +646,5 @@ module _3gpp-5gc-nrm-ep { uses EP_N6Grp; } } - list EP_N19mb { - description "Represents the EP_N19mb IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N19mbGrp; - } - } - } - augment "/me3gpp:ManagedElement/gmlc3gpp:GMLCFunction" { - list EP_NL3 { - description "Represents the EP_NL3 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_NL3Grp; - } - } - list EP_NL5 { - description "Represents the EP_NL5 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_NL5Grp; - } - } - list EP_NL6 { - description "Represents the EP_NL6 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_NL6Grp; - } - } - list EP_NL9 { - description "Represents the EP_NL9 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_NL9Grp; - } - } - list EP_NL10 { - description "This IOC represents the NL10 interface - between LMF and GMLC"; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_NL10Grp; - } - } - list EP_NL2 { - description "This IOC represents the NL2 interface - between AMF and GMLC,"; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_NL2Grp; - } - } - } - augment "/me3gpp:ManagedElement/nwdaf3gpp:NWDAFFunction" { - list EP_NL9 { - description "Represents the EP_NL9 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_NL9Grp; - } - } - list EP_N34 { - description "This IOC represents the N34 interface - between NWDAF and NSSF"; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N34Grp; - } - } - list EP_NL8 { - description "This IOC represents the NL8 interface - between LMF and NWDAF"; - reference "3GPP TS 23.273"; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_NL8Grp; - } - } - } - augment "/me3gpp:ManagedElement/gnbcucp3gpp:GNBCUCPFunction" { - list EP_N3mb { - description "Represents the EP_N3mb IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N3mbGrp; - } - } - } - augment "/me3gpp:ManagedElement/scp3gpp:SCPFunction" { - list EP_SM13 { - description "This IOC represents the SM13 interface - between MNPF and SCP"; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_SM13Grp; - } - } } } \ No newline at end of file diff --git a/yang-models/_3gpp-5gc-nrm-nsacffunction.yang b/yang-models/_3gpp-5gc-nrm-nsacffunction.yang new file mode 100755 index 00000000..d323ed42 --- /dev/null +++ b/yang-models/_3gpp-5gc-nrm-nsacffunction.yang @@ -0,0 +1,276 @@ +module _3gpp-5gc-nrm-nsacffunction { + yang-version 1.1; + + namespace urn:3gpp:sa5:_3gpp-5gc-nrm-nsacffunction; + prefix nsacf3gpp; + + import _3gpp-common-managed-function { prefix mf3gpp; } + import _3gpp-common-managed-element { prefix me3gpp; } + import ietf-inet-types { prefix inet; } + import _3gpp-common-yang-types { prefix types3gpp; } + import _3gpp-5g-common-yang-types { prefix types5g3gpp; } + import _3gpp-common-top { prefix top3gpp; } + import _3gpp-5gc-nrm-managed-nfprofile { prefix mnfp3gpp; } + + organization "3gpp SA5"; + contact + "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; + description "This IOC represents the NSACF function in 5GC. + The NSACF monitors and controls the number of registered + UEs per network slice for the network slices that are + subject to Network Slice Admission Control (NSAC). + For more information about the NSACF, see TS 23.501 + and TS 23.502. + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, + CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; + reference "3GPP TS 28.541"; + + revision 2026-03-25 { reference "CR-"; } + + grouping NsacfCapabilityGrp { + description "This data type represents the NSACF service + capability. (See TS 29.510)."; + reference "3GPP TS 29.510"; + + leaf supportUeSAC { + type boolean; + description "This attribute indicates the service capability of the + NSACF to monitor and control the number of + registered UEs per network slice for the network + slice that is subject to NSAC."; + } + + leaf supportPduSAC { + type boolean; + description "This attribute indicates the service capability of the + NSACF to monitor and control the number of + established PDU sessions per network slice for the + network slice that is subject to NSAC."; + } + } + + grouping NsacfInfoGrp { + description "This data type represents the information + of an NSACF NF Instance. (see TS 29.510)."; + reference "3GPP TS 29.510"; + + list nsacfCapability { + description "It represents the NSACF service + capability."; + min-elements 1; + max-elements 1; + key idx; + leaf idx { type uint32; } + uses NsacfCapabilityGrp; + } + + list taiList { + description "List of TAIs."; + key idx; + leaf idx { type uint32; } + uses types3gpp:TaiGrp; + } + + list taiRangeList { + description "Range of TAIs."; + key idx; + leaf idx { type uint32; } + uses types5g3gpp:TaiRangeGrp; + } + } + + grouping SnssaiInfoGrp { + description "This data type defines generic information + for a S-NSSAI."; + + list pLMNInfo { + description "It represents the PLMN and S-NSSAI + information."; + min-elements 1; + max-elements 1; + key "mcc mnc sd sst"; + uses types5g3gpp:PLMNInfo; + } + + leaf administrativeState { + type types3gpp:BasicAdministrativeState; + mandatory true; + description "It represents the administrative state + of the Network Slice."; + } + } + + grouping NsacfInfoSnssaiGrp { + description "This data type defines NSACF specific + information per S-NSSAI."; + + list snssaiInfo { + description "It defines generic information for a + S-NSSAI. The information includes global unique + identifier of a Network Slice and + administrativeState of the Network Slice."; + min-elements 1; + max-elements 1; + key idx; + leaf idx { type uint32; } + uses SnssaiInfoGrp; + } + + leaf isSubjectToNsac { + type boolean; + mandatory true; + description "It defines if the Network Slice subjects + to network slice admission control. The value is + set to False if the maxNumberofUEs attribute in + corresponding SliceProfile is absent."; + } + + leaf maxNumberofUEs { + type uint16 { + range "0..65535"; + } + mandatory true; + description "It defines the maximum number of UEs + which are allowed to be served by the Network + Slice that is subject to network slice admission + control."; + } + + leaf eACMode { + type enumeration { + enum ACTIVE; + enum INACTIVE; + } + default INACTIVE; + description "It represents if early admission + control (EAC) mode is activated."; + } + + leaf activeEacThreshold { + type uint8 { + range "0..100"; + } + default 0; + description "It defines threshold in percentage + value of the number of the UEs registered with + the network slice to the maximum number of UEs + allowed to register with the network slice. The + eACMode is set to active when the number of the + UEs registered with the network slice is above + this threshold."; + } + + leaf deactiveEacThreshold { + type uint8 { + range "0..100"; + } + default 100; + description "It defines threshold in percentage + value of the number of the UEs registered with + the network slice to the maximum number of UEs + allowed to register with the network slice. The + eACMode is set to inactive when the number of + the UEs registered with the network slice is + below this threshold. If this attribute is + absent, activeEacThreshold is used to trigger + deactivation of eACMode."; + } + + leaf numberofUEs { + type uint16 { + range "0..65535"; + } + config false; + description "It represents the number of the UEs + registered with the network slice. This attribute + is updated by NSACF."; + } + + leaf-list uEIdList { + type string; + config false; + description "It represents the UEs registered with + the network slice. This attribute is updated by + NSACF."; + } + + list taiList { + description "Tracking Area Identity list."; + key idx; + leaf idx { type uint32; } + uses types3gpp:TaiGrp; + } + + leaf maxNumberofPDUSessions { + type uint32; + mandatory true; + description "It defines the maximum number of + concurrent PDU sessions supported by the network + slice."; + } + } + + grouping NSACFFunctionGrp { + description "Represents the NSACFFunction IOC."; + uses mf3gpp:ManagedFunctionGrp; + + list pLMNInfoList { + description "List of at most six entries of PLMN + Identifiers, but at least one (the primary + PLMN Id). The PLMN Identifier is composed of a + Mobile Country Code (MCC) and a Mobile Network + Code (MNC)."; + min-elements 1; + key idx; + leaf idx { type uint32; } + uses types5g3gpp:PLMNInfo; + } + + leaf sBIFQDN { + description "The FQDN of the registered NF instance + in the service-based interface."; + type inet:domain-name; + } + + list managedNFProfile { + description "This data type represents a Profile + definition of a Managed NF."; + key idx; + leaf idx { type uint32; } + min-elements 1; + max-elements 1; + uses mnfp3gpp:ManagedNFProfileGrp; + } + + list nsacfInfoSnssaiList { + description "It represents a list of NSACF + information per SNSSAI."; + key idx; + leaf idx { type uint32; } + uses NsacfInfoSnssaiGrp; + } + + list nsacfInfo { + description "This attribute represents the + information of an NSACF NF Instance. + (see TS 29.510)."; + max-elements 1; + key idx; + leaf idx { type uint32; } + uses NsacfInfoGrp; + } + } + + augment "/me3gpp:ManagedElement" { + list NSACFFunction { + description "5G Core NSACF Function"; + reference "3GPP TS 28.541"; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses NSACFFunctionGrp; + } + uses mf3gpp:ManagedFunctionContainedClasses; + } + } +} -- GitLab From 252bbb556cf02ea5572f00be2f04aacbc99ec672 Mon Sep 17 00:00:00 2001 From: rosabolzek Date: Tue, 14 Apr 2026 18:53:02 +0200 Subject: [PATCH 20/45] add -nssaaffunction to align stage 2 and stage 3 yang --- yang-models/_3gpp-5g-common-yang-types.yang | 34 +++++ yang-models/_3gpp-5gc-nrm-nssaaffunction.yang | 119 ++++++++++++++++++ 2 files changed, 153 insertions(+) create mode 100755 yang-models/_3gpp-5gc-nrm-nssaaffunction.yang diff --git a/yang-models/_3gpp-5g-common-yang-types.yang b/yang-models/_3gpp-5g-common-yang-types.yang index d1eba76b..e9207d4c 100755 --- a/yang-models/_3gpp-5g-common-yang-types.yang +++ b/yang-models/_3gpp-5g-common-yang-types.yang @@ -219,6 +219,40 @@ module _3gpp-5g-common-yang-types { } } + grouping InternalGroupIdRangeGrp { + description "This data type represents a range of Group + IDs (internal group identities), either based on a + numeric range, or based on regular-expression + matching. (See TS 29.510)."; + reference "3GPP TS 28.541 clause 5.3.132"; + + leaf start { + description "It indicates first value identifying + the start of an identity range, to be used when + the range of identities can be represented as a + consecutive numeric range."; + type string; + } + + leaf end { + description "It indicates last value identifying + the end of an identity range, to be used when + the range of identities can be represented as a + consecutive numeric range."; + type string; + } + + leaf pattern { + description "It indicates pattern (regular + expression according to the ECMA-262 dialect) + representing the set of identities belonging to + this range. An identity value is considered part + of the range if and only if the identity string + fully matches the regular expression."; + type string; + } + } + grouping SupportedVendorSpecificFeaturesGrp { description "This <> represents a map of Vendor-Specific features, where the key of the map is the IANA-assigned SMI Network Management diff --git a/yang-models/_3gpp-5gc-nrm-nssaaffunction.yang b/yang-models/_3gpp-5gc-nrm-nssaaffunction.yang new file mode 100755 index 00000000..f521e442 --- /dev/null +++ b/yang-models/_3gpp-5gc-nrm-nssaaffunction.yang @@ -0,0 +1,119 @@ +module _3gpp-5gc-nrm-nssaaffunction { + yang-version 1.1; + namespace urn:3gpp:sa5:_3gpp-5gc-nrm-nssaaffunction; + prefix nssaaf3gpp; + + import _3gpp-common-managed-function { prefix mf3gpp; } + import _3gpp-common-managed-element { prefix me3gpp; } + import _3gpp-5g-common-yang-types { prefix types5g3gpp; } + import _3gpp-common-top { prefix top3gpp; } + import _3gpp-5gc-nrm-managed-nfprofile { prefix mnfp3gpp; } + import ietf-inet-types { prefix inet; } + + organization "3gpp SA5"; + contact + "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; + description "This IOC represents the NSSAAF function in 5GC. + For more information about the NSSAAF, see TS 23.501. + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, + CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; + reference "3GPP TS 28.541"; + + revision 2026-03-25 { reference "CR-"; } + + grouping NssaafInfoGrp { + description "This data type represents the information + of a NSSAAF NF Instance. + (See clause 6.1.6.2.104 TS 29.510)."; + + list supiRanges { + description "List of ranges of SUPIs that can be + served by the NSSAAF instance."; + key idx; + leaf idx { type uint32; } + uses types5g3gpp:SupiRangeGrp; + } + + list internalGroupIdentifiersRanges { + description "List of ranges of Internal Group + Identifiers that can be served by the NSSAAF + instance. If not provided, it does not imply + that the NSSAAF supports all internal groups."; + key idx; + leaf idx { type uint32; } + uses types5g3gpp:InternalGroupIdRangeGrp; + } + } + + grouping NSSAAFFunctionGrp { + description "Represents the NSSAAFFunction IOC."; + uses mf3gpp:ManagedFunctionGrp; + + list pLMNInfoList { + description "It defines the PLMN(s) of a Network + Function."; + key "mcc mnc sd sst"; + min-elements 1; + uses types5g3gpp:PLMNInfo; + } + + leaf sBIFQDN { + description "The FQDN of the registered NF instance + in the service-based interface."; + type inet:domain-name; + } + + leaf-list cNSIIdList { + description "NSI ID. NSI ID is an identifier for + identifying the Core Network part of a Network + Slice instance when multiple Network Slice + instances of the same Network Slice are deployed, + and there is a need to differentiate between them + in the 5GC, see clause 3.1 of TS 23.501 and + subclause 6.1.6.2.7 of 3GPP TS 29.531."; + type string; + } + + list managedNFProfile { + key idx; + leaf idx { type uint32; } + min-elements 1; + max-elements 1; + description "Profile definition of a Managed NF + (See TS 23.501)."; + uses mnfp3gpp:ManagedNFProfileGrp; + } + + list commModelList { + min-elements 1; + key "groupId"; + description "Specifies a list of commModel. It can + be used by NF and NF services to interact with + each other in 5G Core network."; + reference "3GPP TS 23.501"; + uses types5g3gpp:CommModel; + } + + list nssaafInfo { + description "This attribute represents information + of a NSSAAF NF Instance."; + max-elements 1; + key idx; + leaf idx { type uint32; } + uses NssaafInfoGrp; + } + } + + augment "/me3gpp:ManagedElement" { + list NSSAAFFunction { + description "5G Core NSSAAF Function"; + reference "3GPP TS 28.541"; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses NSSAAFFunctionGrp; + } + uses mf3gpp:ManagedFunctionContainedClasses; + } + } +} -- GitLab From c889f9f5fda28a5a0fc62cf1d3b12acea0695505 Mon Sep 17 00:00:00 2001 From: rosabolzek Date: Wed, 15 Apr 2026 08:14:24 +0200 Subject: [PATCH 21/45] add function chffunction to aligne with stage 2 --- yang-models/_3gpp-5gc-nrm-chffunction.yang | 143 +++++++++++++++++++++ yang-models/_3gpp-5gc-nrm-nrffunction.yang | 44 +------ 2 files changed, 145 insertions(+), 42 deletions(-) create mode 100755 yang-models/_3gpp-5gc-nrm-chffunction.yang diff --git a/yang-models/_3gpp-5gc-nrm-chffunction.yang b/yang-models/_3gpp-5gc-nrm-chffunction.yang new file mode 100755 index 00000000..8dd71b9f --- /dev/null +++ b/yang-models/_3gpp-5gc-nrm-chffunction.yang @@ -0,0 +1,143 @@ +module _3gpp-5gc-nrm-chffunction { + yang-version 1.1; + namespace urn:3gpp:sa5:_3gpp-5gc-nrm-chffunction; + prefix chf3gpp; + + import _3gpp-common-managed-function { prefix mf3gpp; } + import _3gpp-common-managed-element { prefix me3gpp; } + import _3gpp-common-yang-types { prefix types3gpp; } + import _3gpp-5g-common-yang-types { prefix types5g3gpp; } + import _3gpp-common-top { prefix top3gpp; } + import _3gpp-5gc-nrm-managed-nfprofile { prefix mnfp3gpp; } + import ietf-inet-types { prefix inet; } + + organization "3gpp SA5"; + contact + "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; + description "This IOC represents the CHF function. For more + information about the CHF, see TS 23.501 and + TS 32.240. + Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, + CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; + reference "3GPP TS 28.541"; + + revision 2025-03-25 { reference "CR-"; } + + grouping ChfInfoGrp { + description "This data type represents the Specific + data for the CHF. + (See clause 6.1.6.2.32 TS 29.510)."; + + list supiRangeList { + description "List of ranges of SUPIs that can be + served by the CHF instance. If not provided, + the CHF can serve any SUPI."; + key idx; + leaf idx { type uint32; } + uses types5g3gpp:SupiRangeGrp; + } + + list gpsiRangeList { + description "List of ranges of GPSI that can be + served by the CHF instance. If not provided, + the CHF can serve any GPSI."; + key idx; + leaf idx { type uint32; } + uses types5g3gpp:IdentityRangeGrp; + } + + list plmnRangeList { + description "List of ranges of PLMNs (including + the PLMN IDs of the CHF instance) that can be + served by the CHF instance. If not provided, + the CHF can serve any PLMN."; + key "mcc mnc"; + uses types3gpp:PLMNId; + } + + leaf groupId { + description "It represents the identity of the CHF + group that is served by the CHF instance. If not + provided, the CHF instance does not pertain to + any CHF group."; + type string; + } + + leaf primaryChfInstance { + description "This attribute represents the NF + Instance Id of the primary CHF instance. This + attribute shall be absent if the + secondaryChfInstance is present."; + type string; + } + + leaf secondaryChfInstance { + description "This attribute represents the NF + Instance Id of the secondary CHF instance. + This attribute shall be absent if the + primaryChfInstance is present."; + type string; + } + } + + grouping CHFFunctionGrp { + description "Represents the CHFFunction IOC."; + uses mf3gpp:ManagedFunctionGrp; + + list pLMNInfoList { + description "It defines the PLMN(s) of a Network + Function."; + key "mcc mnc sd sst"; + min-elements 1; + uses types5g3gpp:PLMNInfo; + } + + leaf sBIFQDN { + description "The FQDN of the registered NF instance + in the service-based interface."; + type inet:domain-name; + } + + list managedNFProfile { + key idx; + leaf idx { type uint32; } + min-elements 1; + max-elements 1; + description "Profile definition of a Managed NF + (See TS 23.501)."; + uses mnfp3gpp:ManagedNFProfileGrp; + } + + list commModelList { + min-elements 1; + key "groupId"; + description "Specifies a list of commModel. It can + be used by NF and NF services to interact with + each other in 5G Core network."; + reference "3GPP TS 23.501"; + uses types5g3gpp:CommModel; + } + + list chfInfo { + description "This attribute represents information + of a CHF NF Instance."; + max-elements 1; + key idx; + leaf idx { type uint32; } + uses ChfInfoGrp; + } + } + + augment "/me3gpp:ManagedElement" { + list CHFFunction { + description "5G Core CHF Function"; + reference "3GPP TS 28.541"; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses CHFFunctionGrp; + } + uses mf3gpp:ManagedFunctionContainedClasses; + } + } +} diff --git a/yang-models/_3gpp-5gc-nrm-nrffunction.yang b/yang-models/_3gpp-5gc-nrm-nrffunction.yang index 92de7f5a..5aa4ccb4 100755 --- a/yang-models/_3gpp-5gc-nrm-nrffunction.yang +++ b/yang-models/_3gpp-5gc-nrm-nrffunction.yang @@ -23,6 +23,7 @@ module _3gpp-5gc-nrm-nrffunction { import _3gpp-5gc-nrm-gmlcfunction { prefix gmlc3gpp;} import _3gpp-5gc-nrm-lmffunction { prefix lmf3gpp;} import _3gpp-5gc-nrm-aiot { prefix aiot3gpp;} + import _3gpp-5gc-nrm-chffunction { prefix chf3gpp;} organization "3gpp SA5"; contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; @@ -73,47 +74,6 @@ module _3gpp-5gc-nrm-nrffunction { uses types3gpp:Ipv6PrefixRange; } } - grouping chfInfo { - list supiRangeList { - description "List of ranges of SUPIs that can be served by - the CHF instance. If not provided, the CHF can serve any SUPI."; - key "start end pattern"; - min-elements 1; - uses types5g3gpp:SupiRangeGrp; - } - - list gpsiRangeList { - description "List of ranges of GPSI that can be served - by the CHF instance. If not provided, the CHF can serve any GPSI."; - key idx; - leaf idx { type uint32; } - min-elements 1; - uses types5g3gpp:IdentityRangeGrp; - } - - list plmnRangeList { - description "List of ranges of PLMNs (including the PLMN - IDs of the CHF instance) that can be served by the CHF instance. - If not provided, the CHF can serve any PLMN."; - - min-elements 1; - key "mcc mnc"; - uses types3gpp:PLMNId; - } - leaf primaryChfInstance { - description "This attribute represents the NF Instance Id of the - primary CHF instance. This attribute shall be absent if the - secondaryChfInstance is present."; - type string; - - } - leaf secondaryChfInstance { - description "This attribute represents the NF Instance Id of the - secondary CHF instance.This attribute shall be absent if the - primaryChfInstance is present."; - type string; - } - } grouping pcscfInfo { description "This data type represents the information of a P-CSCF NF Instance. @@ -414,7 +374,7 @@ module _3gpp-5gc-nrm-nrffunction { } min-elements 1; - uses chfInfo; + uses chf3gpp:ChfInfoGrp; } list servedNwdafInfo { -- GitLab From d098322ddc2481cd342ddc6d96cfbc1bf8fd5c22 Mon Sep 17 00:00:00 2001 From: "U-ERICSSON\\ETHBLL" Date: Wed, 15 Apr 2026 18:22:59 +0200 Subject: [PATCH 22/45] Added mbsmffunction --- yang-models/_3gpp-5gc-nrm-mbsmffunction.yang | 277 +++++++ yang-models/_3gpp-5gc-nrm-mnpffunction.yang | 2 +- yang-models/_3gpp-5gc-nrm-nfservice.yang.bak | 719 ------------------- yang-models/_3gpp-5gc-nrm-smffunction.yang | 2 +- 4 files changed, 279 insertions(+), 721 deletions(-) create mode 100644 yang-models/_3gpp-5gc-nrm-mbsmffunction.yang delete mode 100755 yang-models/_3gpp-5gc-nrm-nfservice.yang.bak diff --git a/yang-models/_3gpp-5gc-nrm-mbsmffunction.yang b/yang-models/_3gpp-5gc-nrm-mbsmffunction.yang new file mode 100644 index 00000000..3dde496e --- /dev/null +++ b/yang-models/_3gpp-5gc-nrm-mbsmffunction.yang @@ -0,0 +1,277 @@ +module _3gpp-5gc-nrm-mbsmffunction { + yang-version 1.1; + namespace urn:3gpp:sa5:_3gpp-5gc-nrm-mbsmffunction; + prefix mbsmf3gpp; + + import _3gpp-common-managed-function { prefix mf3gpp; } + import _3gpp-common-managed-element { prefix me3gpp; } + import _3gpp-5g-common-yang-types { prefix types5g3gpp; } + import _3gpp-common-top { prefix top3gpp; } + import _3gpp-5gc-nrm-managed-nfprofile { prefix mnfp3gpp; } + import _3gpp-common-yang-types { prefix types3gpp; } + import _3gpp-5gc-nrm-neffunction { prefix nef3gpp; } + import ietf-inet-types { prefix inet; } + + organization "3gpp SA5"; + contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; + description "MNNPFFunction derived from basic ManagedFunction. + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + TTA, TTC). All rights reserved."; + reference "3GPP TS 28.541"; + + revision 2026-04-13 { reference CR-1694 ; } // common for rel-19,20 + + grouping TmgiRangeGrp { + description "This data type represents range of TMGIs. + (See clause 6.1.6.2.86 TS 29.510)."; + + leaf mbsServiceIdStart { + type string { + pattern "[A-Fa-f0-9]{6}"; + } + mandatory true; + description "Represents the first MBS Service ID value identifying the + start of a TMGI range. + The value shall be coded as defined for the mbsServiceId attribute of + the Tmgi data type defined in 3GPP TS 29.571"; + } + + leaf mbsServiceIdEnd { + type string { + pattern "[A-Fa-f0-9]{6}"; + } + mandatory true; + description "Represents the last MBS Service ID value identifying the + end of a TMGI range. + The value shall be coded as defined for the mbsServiceId attribute of + the Tmgi data type defined in 3GPP TS 29.571"; + } + + list pLMNId { + description "The PLMN identifier."; + key "mcc mnc"; + min-elements 1; + max-elements 1; + uses types3gpp:PLMNId; + } + + leaf nId { + type string; + mandatory true; + description "Network Identity; Shall be present if PlmnIdNid identifies + an SNPN (see clauses 5.30.2.3, 5.30.2.9, 6.3.4, and 6.3.8 in + 3GPP TS 23.501)"; + } + } + + grouping mbsSessionIdGrp { + description "The MBS session ID is used to identify a Multicast/Broadcast + MBS Session by the 5G system on external interface towards AF and between + AF and UE, and towards the UE."; + reference "3GPP TS 23.247 clause 6.5.1"; + + choice idType { + mandatory true; + leaf mbsServiceId { + description "MBS Service ID - Temporary Mobile Group Identity"; + type string { + pattern "[A-Fa-f0-9]{6}"; + } + } + case Ssm { + leaf sourceIpAddr { + type inet:ipv4-address; + mandatory true; + description "sourceIpAddr"; + } + leaf destIpAddr { + type inet:ipv4-address; + mandatory true; + description "destIpAddr"; + } + } + } + + leaf nid { + description ""; + type string { + pattern "[A-Fa-f0-9]{11}"; + } + } + } + + grouping MbsServiceAreaGrp { + description "This data type represents MBS Service Area Information for + Location dependent MBS session. (See clause 5.9.4.15 TS 29.571)."; + + list ncgiList { + description "Represents a list of NR cell ids with their pertaining TAIs."; + key idx; + leaf idx { type uint32 ; } + uses types5g3gpp:NcgiGrp; + } + + list taiList { + description "Tracking Area Identity list"; + key idx; + min-elements 1; + leaf idx { type uint32; } + uses types3gpp:TaiGrp; + } + } + + grouping MbsServiceAreaInfoGrp { + description "This data type represents MBS Service Area Information for + Location dependent MBS session. (See clause 5.9.4.15 TS 29.571"; + + leaf areaSessionId { + type uint16; + mandatory true; + description "This attribute represents Area Session Identifier used for + MBS session with location dependent content."; + } + + list mbsServiceArea { + description "Represents Area Session Identifier used for MBS session + with location dependent content."; + key idx; + leaf idx { type uint32 ; } + uses MbsServiceAreaGrp; + } + } + + grouping MbsSessionGrp { + description "This data type represents MBS Session served by an MB-SMF. + (See clause 6.1.6.2.87 TS 29.510)."; + + list mbsSessionId { + description "This attribute represents the MBS Session Identifier."; + min-elements 1; + max-elements 1; + key idx; + leaf idx { type uint32 ; } + uses mbsSessionIdGrp; + } + + list mbsAreaSessions { + description "This attribute represents map of Area Session Id and related + MBS Service Area information used for MBS session with location + dependent content. The Area Session ID together with the mbsSessionId + (TMGI) uniquely identifies the MBS session in a specific MBS service + area. + For an MBS session with location dependent content, one map entry shall + be registered for each MBS Service Area served by the MBS session. + The key of the map shall be the areaSessionId."; + key idx; + leaf idx { type uint32 ; } + uses MbsServiceAreaInfoGrp; + } + } + + grouping MbSmfInfoGrp { + description "This data type represents the specific data for the MB-SMF. + (See clause 6.1.6.2.85 TS 29.510)."; + + list sNssaiInfoList { + description "This attribute represents the list of S-NSSAIs and DNNs + supported by the MB-SMF. + The key of the map shall be a (unique) valid JSON string per clause 7 + of IETF RFC 8259, with a maximum of 32 characters."; + min-elements 1; + key idx; + leaf idx { type uint32 ; } + uses nef3gpp:SnssaiInfoItemGrp; + } + + list tmgiRangeList { + description "This attribute represents the list of TMGI range(s) + supported by the MB-SMF + The key of the map shall be a (unique) valid JSON string per clause 7 + of IETF RFC 8259, with a maximum of 32 characters."; + key idx; + leaf idx { type uint32 ; } + uses TmgiRangeGrp; + } + + list taiList { + description "This attribute represents the list of TAIs the MB-SMF can + serve. + The absence of this attribute and the taiRangeList attribute indicates + that the MB-SMF can be selected for any TAI in the serving network."; + key idx; + leaf idx { type uint32; } + uses types3gpp:TaiGrp; + } + + list taiRangeList { + description "This attribute represents the range of TAIs the MB-SMF can + serve. + The absence of this attribute and the taiList attribute indicates that + the MB-SMF can be selected for any TAI in the serving network."; + key idx; + leaf idx { type uint32; } + uses types5g3gpp:TaiRangeGrp; + } + + list mbsSessionList { + description "This attribute represents the list of MBS sessions currently + served by the MB-SMF + The key of the map shall be a (unique) valid JSON string per clause 7 of + IETF RFC 8259, with a maximum of 32 characters."; + key idx; + leaf idx { type uint32; } + uses MbsSessionGrp; + } + } + + grouping MBSMFFunctionGrp { + description "Represents the SMFFuntion IOC"; + uses mf3gpp:ManagedFunctionGrp; + + list pLMNIdList { + description "List of PLMN IDs."; + key "mcc mnc"; + uses types3gpp:PLMNId; + } + + list managedNFProfile { + key idx; + leaf idx { type uint32; } + min-elements 1; + max-elements 1; + description "Profile definition of a Managed NF (See TS 23.501)"; + uses mnfp3gpp:ManagedNFProfileGrp; + } + + list commModelList { + min-elements 1; + key "groupId"; + description "Specifies a list of commModel. It can be used by NF and + NF services to interact with each other in 5G Core network "; + reference "3GPP TS 23.501"; + uses types5g3gpp:CommModel; + } + + list mbSmfInfo { + description "This attribute represents information of an + MB-SMF NF Instance"; + max-elements 1; + key idx; + leaf idx { type uint32; } + uses MbSmfInfoGrp; + } + } + + augment "/me3gpp:ManagedElement" { + list MBSMFFunction { + description "This IOC represents the MB-SMF function defined in TS 23.501 + and TS 23.247."; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses MBSMFFunctionGrp; + } + uses mf3gpp:ManagedFunctionContainedClasses; + } + } +} \ No newline at end of file diff --git a/yang-models/_3gpp-5gc-nrm-mnpffunction.yang b/yang-models/_3gpp-5gc-nrm-mnpffunction.yang index 6813e861..5edb89fc 100644 --- a/yang-models/_3gpp-5gc-nrm-mnpffunction.yang +++ b/yang-models/_3gpp-5gc-nrm-mnpffunction.yang @@ -16,7 +16,7 @@ module _3gpp-5gc-nrm-mnpffunction { TTA, TTC). All rights reserved."; reference "3GPP TS 28.541"; - revision 2026-04-13 { reference CR-1694 ; } + revision 2026-04-13 { reference CR-1694 ; } // common for rel-19,20 grouping MnpfInfoGrp { description "Represents the data type MnpfInfo."; diff --git a/yang-models/_3gpp-5gc-nrm-nfservice.yang.bak b/yang-models/_3gpp-5gc-nrm-nfservice.yang.bak deleted file mode 100755 index f72613fc..00000000 --- a/yang-models/_3gpp-5gc-nrm-nfservice.yang.bak +++ /dev/null @@ -1,719 +0,0 @@ -module _3gpp-5gc-nrm-nfservice { - yang-version 1.1; - - namespace urn:3gpp:sa5:_3gpp-5gc-nrm-nfservice; - prefix nfs3gpp; - - import _3gpp-common-yang-types { prefix types3gpp; } - import ietf-yang-types { prefix yang; } - import ietf-inet-types { prefix inet; } - import _3gpp-5g-common-yang-types { prefix types5g3gpp; } - - - organization "3gpp SA5"; - contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; - description "NF service dataType. - Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, - TTA, TTC). All rights reserved."; - reference "3GPP TS 29.510"; - - revision 2025-03-25 { reference CR-; } - revision 2025-01-25 { reference CR-1442; } - revision 2023-09-18 { reference CR-1043 ; } - revision 2021-01-25 { reference CR-0454 ; } - revision 2020-11-05 { reference CR-0412 ; } - revision 2019-06-17 { reference "initial revision"; } - - grouping NFServiceGrp { - description "This data type represents the NF Service - defined in TS 29.510 [23]."; - leaf serviceInstanceID { - description - "Unique ID of the service instance within a given NF Instance."; - mandatory true; - type string; - } - - leaf serviceName { - description "Name of the service instance (e.g. 'nudm-sdm')."; - mandatory true; - type ServiceName; - config false; - } - - list versions { - description "API versions supported by the NF Service and if available, - the corresponding retirement date of the NF Service."; - min-elements 1; - key "apiVersionInUri apiFullVersion"; - config false; - uses NFServiceVersion; - } - - leaf scheme { - description "URI scheme (e.g. 'http', 'https')."; - mandatory true; - type UriScheme; - } - - leaf nfServiceStatus { - description "Status of the NF Service Instance."; - mandatory true; - type NFServiceStatus; - } - - leaf fqdn { - description "FQDN of the NF Service Instance."; - //optional support - type inet:domain-name; - } - - leaf interPlmnFqdn { - description "If the NF service needs to be discoverable by other NFs in a - different PLMN, then an FQDN that is used for inter PLMN routing."; - //optional support - type inet:domain-name; - } - - list ipEndPoints { - description "IP address(es) and port information of the Network Function - (including IPv4 and/or IPv6 address)where the service is listening - for incoming service requests."; - //optional support - - key idx; - leaf idx { - type string; - } - min-elements 1; - uses ipEndPoint; - } - - leaf apiPrefix { - description "Optional path segment(s) used to construct the {apiRoot} - variable of the different API URIs."; - //optional support - type string; - } - - list defaultNotificationSubscriptions { - description "Notification endpoints for different notification types."; - key notificationType; - //optional support - min-elements 1; - uses types3gpp:DefaultNotificationSubscription; - } - - list allowedPLMNs { - description "PLMNs allowed to access the service instance. - The absence of this attribute indicates that any PLMN is allowed to - access the service instance."; - - min-elements 1; - //optional support - key "mcc mnc"; - uses types3gpp:PLMNId; - } - list allowedSnpns { - description "PLMNs allowed to access the service instance. - The absence of this attribute indicates that any PLMN is allowed to - access the service instance."; - - min-elements 1; - //optional support - key "mcc mnc"; - uses types3gpp:PLMNId; - } - leaf-list allowedNfTypes { - description "SNPNs allowed to access the NF instance"; - min-elements 1; - //optional support - type types3gpp:NfType; - } - - leaf-list allowedNfDomains { - description "Pattern representing the NF domain names allowed to - access the service instance."; - //optional support - min-elements 1; - type string; - } - - list allowedNSSAIs { - description "S-NSSAI of the allowed slices to access the service - instance. The absence of this attribute indicates that any slice - is allowed to access the service instance."; - min-elements 1; - //optional support - key "sd sst"; - uses types5g3gpp:SNssai; - } - - list allowedScopesRuleSet { - description "It represents map of rules specifying scopes allowed or - denied for NF-Consumers. This attribute may be present when the - NF-Producer and the NRF support Allowed-ruleset feature as specified - in clause 6.1.9 in TS 29.510."; - //optional support - key idx; - leaf idx { type uint32; } - uses types5g3gpp:RuleSetGrp; - } - - leaf-list allowedOperationsPerNfType { - description "It indicates the allowed operations on resources for - each type of NF; the key of the map is the NF Type, and the value - is an array of scopes"; - //optional support - type string; - min-elements 1; - } - leaf-list allowedOperationsPerNfInstance { - description "It indicates the allowed operations on resources for - a given NF Instance; the key of the map is the NF Instance Id, and - the value is an array of scopes"; - //optional support - type string; - min-elements 1; - } - leaf allowedOperationsPerNfInstanceOverrides { - type boolean; - default false; - //optional support - description "When it is present and set to true, indicates that - the scopes defined in attribute allowedOperationsPerNfInstance - for a given NF Instance ID take precedence over the scopes defined - in attribute allowedOperationsPerNfType for the corresponding - NF type of the NF Instance associated to such NF Instance ID.."; - } - list sNssais { - description "S-NSSAIs of the Network Function. If not - provided, the NF can serve any S-NSSAI. When present - this IE represents the list of S-NSSAIs supported in - all the PLMNs listed in the plmnList IE."; - //optional support - min-elements 1; - key "sst sd"; - uses types5g3gpp:SNssai; - } - - leaf oauth2Required { - type boolean; - //optional support - description "It indicates whether the NF Service Instance requires - Oauth2-based authorization."; - } - - leaf sharedServiceDataId { - type string; - //optional support - description "String uniquely identifying SharedServiceData. The format - of the sharedServiceDataId shall be a Universally Unique Identifier - (UUID) version 4, as described in IETF RFC 4122 [44]. The hexadecimal - letters should be formatted as lower-case characters by the sender, - and they shall be handled as case-insensitive by the receiver."; - } - - leaf priority { - description "Priority (relative to other services of the same type) - in the range of 0-65535, to be used for NF Service selection; lower - values indicate a higher priority."; - //optional support - type uint16 { range "0..65535"; } - } - - leaf capacity { - description "Static capacity information in the range of 0-65535, - expressed as a weight relative to other services of the same type."; - //optional support - type uint16; - } - - - leaf recoveryTime { - description "Timestamp when the NF was (re)started."; - //optional support - type yang:date-and-time; - } - - leaf vendorId { - description "Vendor ID of the NF instance"; - //optional support - type string; - } - list callbackUriPrefixList { - description "It indicates the optional path segment(s) used to construct - the prefix of the Callback URIs during the reselection of an NF - service consumer."; - //optional support - reference "3GPP TS 29.501 [23], clause 4.4.3."; - key callbackUriPrefix; - min-elements 1; - uses CallbackUriPrefixItemGrp; - } - leaf supportedFeatures { - description "It is a string, which indicates the features of the service - corresponding to the subscribed default notification, which are supported - by the NF (Service) instance acting as NF service consumer."; - reference "3GPP TS 29.571 table 5.2.2-3"; - //optional - type types3gpp:SupportedFeatures; - } - uses types5g3gpp:SupportedVendorSpecificFeaturesGrp; - leaf load { - description "Latest known load information of the NF, percentage."; - type types3gpp:Load; - config false; - } - leaf loadTimeStamp { - description "Timestamp of the reported load information."; - type yang:date-and-time; - config false; - } - leaf-list nfServiceSetIdList { - description "This attribute represents a list of NF Service Set ID. - At most one NF Service Set ID shall be indicated per PLMN-ID or - SNPN of the NF."; - type string; - min-elements 1; - } - list perPlmnSnssaiList { - description "It includes the S-NSSAIs supported by the Network Function - for each PLMN supported by the Network Function. When present, it - shall override sNssais IE."; - key idx; - leaf idx { type uint32; } - uses PlmnSnssai; - } - - leaf canaryRelease { - description "This attribute indicates whether an NF instance whose - nfStatus is set to REGISTERED is in Canary Release condition, i.e. - it should only be selected by NF Service Consumers under the - conditions indicated by the selectionConditions attribute. - True: the NF is under Canary Release condition, even if the - nfStatus is set to REGISTERED. - False: the NF instance indicates its Canary Release condition - via the nfStatus attribute."; - //optional support - type boolean; - default false; - } - - leaf exclusiveCanaryReleaseSelection { - description "This attribute indicates whether an NF Service Consumer - should only select an NF Service Producer in Canary Release condition. - True: the consumer shall only select producers in Canary Release - condition. - False: the consumer may select producers not in Canary Release - condition."; - //optional support - type boolean; - default false; - } - - leaf shutdownTime { - description "This attribute may be present if the nfStatus is set to - UNDISCOVERABLE due to scheduled shutdown. When present, it shall - indicate the timestamp when the NF Instance is planned to be - shut down."; - //optional support - type yang:date-and-time; - config false; - } - - leaf canaryPrecedenceOverPreferred { - description "This attribute indicates whether the NRF shall prioritize - the NF Service Producer in Canary Release condition over the - preferences (preferred-xxx, ext-preferred-xxx) present in NF - discovery requests. - True: NRF shall prioritize NF Service Producers in Canary Release - condition at NF discovery requests. - False: NRF shall prioritize the NF Service Producers according to - preferred-xxx and/or ext-preferred-xxx."; - //optional support - type boolean; - default false; - } - - list perPlmnOauth2ReqList { - description "This attribute includes the Oauth2-based authorization - requirement supported by the NF Service Instance per PLMN of the - NF Service Consumer. This attribute may be included when the - Oauth2.0 authorization requirement supported by the NF Service - Instance for different PLMN is different. When the requester - PLMN Id is available in perPlmnOauth2ReqList IE, this IE shall - override the oauth2Required IE. If the requester PLMN ID is not - present in perPlmnOauth2ReqList IE, then the value of - oauth2Required IE shall be applicable if available."; - //optional support - key idx; - leaf idx { type uint32; } - max-elements 1; - uses PlmnOauth2Grp; - } - - list selectionConditions { - description "This attribute includes the conditions under which an NF - Instance with an NFStatus value set to CANARY_RELEASE, or with a - canaryRelease attribute set to true, shall be selected by an NF - Service Consumer."; - //optional support - key idx; - leaf idx { type uint32; } - max-elements 1; - uses SelectionConditionsGrp; - } - } - - - - grouping CallbackUriPrefixItemGrp { - description "This <> represents Callback URI prefix value to - be used for specific notification types."; - reference "3GPP TS 29.510 clause 6.1.6.2.127"; - - leaf callbackUriPrefix { - description "It indicates the optional path segment(s) used to - construct the prefix of the Callback URIs during the reselection - of an NF service consumer."; - mandatory true; - type inet:uri; - reference "3GPP TS 29.501 clause 4.4.3"; - } - - leaf-list notificationTypes { - description "List of notification type values using the callback - URI prefix of the callbackUriPrefix."; - type string; - } - } - - grouping PlmnOauth2Grp { - description "This <> represents the per PLMN Oauth2.0 - indication."; - reference "3GPP TS 29.510 clause 6.1.6.2.102"; - - list oauth2RequiredPlmnIdList { - description "List of PLMN IDs for which Oauth2.0 authorization is - required."; - //optional support - min-elements 1; - key "mcc mnc"; - uses types3gpp:PLMNId; - } - - list oauth2NotRequiredPlmnIdList { - description "List of PLMN IDs for which Oauth2.0 authorization is - not required."; - //optional support - min-elements 1; - key "mcc mnc"; - uses types3gpp:PLMNId; - } - } - - grouping PlmnSnssai { - description "This data type represents the list of S-NSSAIs supported - per PLMN."; - list plmnId { - description "PLMN ID for which list of supported S-NSSAI(s) - is provided."; - min-elements 1; - max-elements 1; - key "mcc mnc"; - uses types3gpp:PLMNId; - } - list sNssaiList { - description "The specific list of S-NSSAIs supported - by the given PLMN."; - min-elements 1; - max-elements 1; - key "sst sd"; - uses types5g3gpp:SNssai; - } - leaf nid { - description "Network Identity; Shall be present if PlmnIdNid - identifies an SNPN."; - reference "see clauses 5.30.2.3, 5.30.2.9, 6.3.4, - and 6.3.8 in 3GPP TS 23.501"; - type string; - } - } - - grouping ConditionItemGrp { - description "This <> represents a single condition item that - shall be evaluated to determine whether a discovered NF (Service) - Instance shall be selected."; - reference "3GPP TS 29.510 clause 6.1.6.2.124"; - - leaf-list consumerNfTypes { - description "It represents the NF types of the consumers for which - the conditions included in this ConditionItem apply. If this - attribute is absent, the conditions are applicable to all NF - consumer types."; - min-elements 1; - type types3gpp:NfType; - } - leaf serviceFeature { - description "It represents a feature number of that NF Service - Instance, under CANARY_RELEASE status."; - type uint32; - } - leaf vsServiceFeature { - description "It represents a Vendor-Specific feature number of that - NF Service Instance, under CANARY_RELEASE status."; - type uint32; - } - list supiRangeList { - description "It represents a set of SUPIs for which the NF (Service) - instance under CANARY_RELEASE status shall be selected."; - key idx; - leaf idx { type uint32; } - min-elements 1; - uses types5g3gpp:SupiRangeGrp; - } - list gpsiRangeList { - description "It represents a set of GPSIs for which the NF (Service) - instance under CANARY_RELEASE status shall be selected."; - key idx; - leaf idx { type uint32; } - min-elements 1; - uses types5g3gpp:IdentityRangeGrp; - } - list impuRangeList { - description "It represents a set of IMS Public Identities for which - the NF (Service) instance under CANARY_RELEASE status shall be - selected."; - key idx; - leaf idx { type uint32; } - min-elements 1; - uses types5g3gpp:IdentityRangeGrp; - } - list impiRangeList { - description "It represents a set of IMS Private Identities for which - the NF (Service) instance under CANARY_RELEASE status shall be - selected."; - key idx; - leaf idx { type uint32; } - min-elements 1; - uses types5g3gpp:IdentityRangeGrp; - } - leaf-list peiList { - description "It represents a set of PEIs of the UEs for which the - NF (Service) instance under CANARY_RELEASE status shall be - selected."; - min-elements 1; - type string; - } - list taiRangeList { - description "It represents a set of TAIs where the NF (Service) - instance under CANARY_RELEASE status shall be selected for a - certain UE."; - key idx; - leaf idx { type uint32; } - min-elements 1; - uses types5g3gpp:TaiRangeGrp; - } - leaf-list dnnList { - description "It represents a set of DNNs where the NF (Service) - instance under CANARY_RELEASE status shall be selected."; - min-elements 1; - type string; - } - } - - grouping SelectionConditionsGrp { - description "This <> represents the list of conditions that - shall be selected by an NF Service Consumer."; - reference "3GPP TS 29.510 clause 6.1.6.2.123"; - - list conditionItem { - key "id"; - description "It represent a single condition item that shall be - evaluated to determine whether a discovered NF (Service) Instance - shall be selected."; - leaf id { type string; } - uses ConditionItemGrp; - } - - list conditionGroup { - description "It represents a group of conditions that shall be - evaluated."; - key idx; - leaf idx { type uint32; } - max-elements 1; - // Note: ConditionGroup references SelectionConditions creating a - // circular dependency. Inlined one level to avoid it. - choice LogicalOperator { - case and { - list and { - description "It represents a list of conditions where the - overall evaluation is true only if all the conditions in - the list are evaluated as true."; - key idx; - leaf idx { type uint32; } - list conditionItem { - key "id"; - description "Condition item to be evaluated."; - leaf id { type string; } - uses ConditionItemGrp; - } - } - } - case or { - list or { - description "It represents a list of conditions where the - overall evaluation is true if at least one of the conditions - in the list is evaluated as true."; - key idx; - leaf idx { type uint32; } - list conditionItem { - key "id"; - description "Condition item to be evaluated."; - leaf id { type string; } - uses ConditionItemGrp; - } - } - } - } - } - } - - grouping ipEndPoint { - choice address { - leaf ipv4Address { - type inet:ipv4-address; - } - - leaf ipv6Address { - type inet:ipv6-address; - } - - leaf ipv6Prefix { - type inet:ipv6-prefix; - } - } - - leaf transport { - type TransportProtocol; - } - - leaf port { - type uint16; - } - } - - typedef TransportProtocol { - type enumeration { - enum TCP; - enum STCP; - enum UDP; - } - } - - grouping NFServiceVersion { - leaf apiVersionInUri { - mandatory true; - type string; - } - - leaf apiFullVersion { - mandatory true; - type string; - } - - leaf expiry { - //optional to support - type yang:date-and-time; - } - } - - typedef ServiceName { - type enumeration { - enum NNRF_NFM; - enum NNRF_DISC; - enum NUDM_SDM; - enum NUDM_UECM; - enum NUDM_UEAU; - enum NUDM_EE; - enum NUDM_PP; - enum NAMF_COMM; - enum NAMF_EVTS; - enum NAMF_MT; - enum NAMF_LOC; - enum NSMF_PDUSESSION; - enum NSMF_EVENT-EXPOSURE; - enum NAUSF_AUTH; - enum NAUSF_SORPROTECTION; - enum NNEF_PFDMANAGEMENT; - enum NPCF_AM-POLICY-CONTROL; - enum NPCF_SMPOLICYCONTROL; - enum NPCF_POLICYAUTHORIZATION; - enum NPCF_BDTPOLICYCONTROL; - enum NPCF_EVENTEXPOSURE; - enum NPCF_UE_POLICY_CONTROL; - enum NSMSF_SMS; - enum NNSSF_NSSELECTION; - enum NNSSF_NSSAIAVAILABILITY; - enum NUDR_DR; - enum NLMF_LOC; - enum N5G_EIR_EIC; - enum NBSF_MANAGEMENT; - enum NCHF_SPENDINGLIMITCONTROL; - enum NCHF_CONVERGEDCHARGING; - enum NNWDAF_EVENTSSUBSCRIPTION; - enum NNWDAF_ANALYTICSINFO; - } - } - - typedef UriScheme { - type enumeration { - enum HTTP; - enum HTTPS; - } - } - - typedef NFServiceStatus { - type enumeration { - enum REGISTERED; - enum SUSPENDED; - enum UNDISCOVERABLE; - } - } - - grouping ChfServiceInfo { - leaf primaryChfServiceInstance { - description "Shall be present if the CHF service instance serves as a - secondary CHF instance of another primary CHF service instance."; - //conditional to support - type string; - } - - leaf secondaryChfServiceInstance { - description "Shall be present if the CHF service instance serves as a - primary CHF instance of another secondary CHF service instance."; - //conditional to support - type string; - } - } - grouping SNPNIdGrp { - description "This <> represents the information of a SNPN - identification"; - leaf mCC { - description "This is the Mobile Country Code (MCC) of the PLMN - identifier. See TS 23.003 [13] subclause 2.2 and 12.1"; - type string; - } - leaf mNC { - description "This is the Mobile Network Code (MNC) of the PLMN - identifier. See TS 23.003 [13] subclause 2.2 and 12.1."; - type string; - } - leaf nId { - description "Network Identity; Shall be present if PlmnIdNid - identifies an SNPN"; - type string; - } - } -} \ No newline at end of file diff --git a/yang-models/_3gpp-5gc-nrm-smffunction.yang b/yang-models/_3gpp-5gc-nrm-smffunction.yang index f3b20a11..d62b1cfa 100755 --- a/yang-models/_3gpp-5gc-nrm-smffunction.yang +++ b/yang-models/_3gpp-5gc-nrm-smffunction.yang @@ -18,7 +18,7 @@ module _3gpp-5gc-nrm-smffunction { TTA, TTC). All rights reserved."; reference "3GPP TS 28.541"; - revision 2024-05-24 { reference CR-1273 ; } // common for rel-19,20 + revision 2024-05-24 { reference CR-1273 ; } revision 2023-09-18 { reference CR-1043 ; } revision 2023-04-26 { reference CR-0916; } revision 2020-11-08 { reference CR-0412 ; } -- GitLab From 1be4338a1f8364710c06ceea44e6ce594c72911f Mon Sep 17 00:00:00 2001 From: rosabolzek Date: Wed, 15 Apr 2026 19:28:36 +0200 Subject: [PATCH 23/45] correct EP_x parent and chield class --- yang-models/_3gpp-5gc-nrm-ep.yang | 812 ++++++++++++++++++------------ 1 file changed, 479 insertions(+), 333 deletions(-) diff --git a/yang-models/_3gpp-5gc-nrm-ep.yang b/yang-models/_3gpp-5gc-nrm-ep.yang index 52cd3f5b..f3e58560 100755 --- a/yang-models/_3gpp-5gc-nrm-ep.yang +++ b/yang-models/_3gpp-5gc-nrm-ep.yang @@ -20,6 +20,9 @@ module _3gpp-5gc-nrm-ep { import _3gpp-5gc-nrm-smsffunction { prefix smsf3gpp; } import _3gpp-5gc-nrm-udmfunction { prefix udm3gpp; } import _3gpp-5gc-nrm-upffunction { prefix upf3gpp; } + import _3gpp-5gc-nrm-chffunction { prefix chf3gpp; } + import _3gpp-5gc-nrm-nsacffunction { prefix nsacf3gpp; } + import _3gpp-5gc-nrm-nssaaffunction { prefix nssaaf3gpp; } import _3gpp-common-yang-types { prefix types3gpp; } import _3gpp-common-top { prefix top3gpp; } import ietf-inet-types { prefix inet; } @@ -27,163 +30,282 @@ module _3gpp-5gc-nrm-ep { organization "3GPP SA5"; contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; description "Defines the YANG mapping of the 5GC related endpoint - Information Object Classes (IOCs) that are part of the 5G Core - Network Resource Model. - Copyright 2024, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, - TTA, TTC). All rights reserved."; + Information Object Classes (IOCs) that are part of the 5G Core + Network Resource Model. + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + TTA, TTC). All rights reserved."; reference "3GPP TS 28.541"; revision 2025-07-25 { reference CR-1558 ; } revision 2024-08-19 { reference CR-1314 ; } revision 2023-09-18 { reference CR-1043 ; } - revision 2019-11-18 { reference "Ericsson refactoring."; } + revision 2019-11-18 {reference "Ericsson refactoring."; } revision 2018-07-31 { reference "Initial revision"; } + // === Features for EPs under 2+ functions === + + feature EP_N2UnderAMFFunction { + description "EP_N2 contained under AMFFunction"; + } + feature EP_N2UnderN3IWFFunction { + description "EP_N2 contained under N3IWFFunction"; + } + feature EP_N3UnderN3IWFFunction { + description "EP_N3 contained under N3IWFFunction"; + } + feature EP_N3UnderUPFFunction { + description "EP_N3 contained under UPFFunction"; + } + feature EP_N4UnderSMFFunction { + description "EP_N4 contained under SMFFunction"; + } + feature EP_N4UnderUPFFunction { + description "EP_N4 contained under UPFFunction"; + } + feature EP_N5UnderAFFunction { + description "EP_N5 contained under AFFunction"; + } + feature EP_N5UnderPCFFunction { + description "EP_N5 contained under PCFFunction"; + } + feature EP_N6UnderDNFunction { + description "EP_N6 contained under DNFunction"; + } + feature EP_N6UnderUPFFunction { + description "EP_N6 contained under UPFFunction"; + } + feature EP_N7UnderPCFFunction { + description "EP_N7 contained under PCFFunction"; + } + feature EP_N7UnderSMFFunction { + description "EP_N7 contained under SMFFunction"; + } + feature EP_N8UnderAMFFunction { + description "EP_N8 contained under AMFFunction"; + } + feature EP_N8UnderUDMFunction { + description "EP_N8 contained under UDMFunction"; + } + feature EP_N10UnderSMFFunction { + description "EP_N10 contained under SMFFunction"; + } + feature EP_N10UnderUDMFunction { + description "EP_N10 contained under UDMFunction"; + } + feature EP_N11UnderAMFFunction { + description "EP_N11 contained under AMFFunction"; + } + feature EP_N11UnderSMFFunction { + description "EP_N11 contained under SMFFunction"; + } + feature EP_N12UnderAMFFunction { + description "EP_N12 contained under AMFFunction"; + } + feature EP_N12UnderAUSFFunction { + description "EP_N12 contained under AUSFFunction"; + } + feature EP_N13UnderAUSFFunction { + description "EP_N13 contained under AUSFFunction"; + } + feature EP_N13UnderUDMFunction { + description "EP_N13 contained under UDMFunction"; + } + feature EP_N15UnderAMFFunction { + description "EP_N15 contained under AMFFunction"; + } + feature EP_N15UnderPCFFunction { + description "EP_N15 contained under PCFFunction"; + } + feature EP_N16UnderPCFFunction { + description "EP_N16 contained under PCFFunction"; + } + feature EP_N16UnderSMFFunction { + description "EP_N16 contained under SMFFunction"; + } + feature EP_N17UnderAMFFunction { + description "EP_N17 contained under AMFFunction"; + } + feature EP_N17UnderNGEIRFunction { + description + "EP_N17 contained under NGEIRFunction"; + } + feature EP_N20UnderAMFFunction { + description "EP_N20 contained under AMFFunction"; + } + feature EP_N20UnderSMSFFunction { + description "EP_N20 contained under SMSFFunction"; + } + feature EP_N22UnderAMFFunction { + description "EP_N22 contained under AMFFunction"; + } + feature EP_N22UnderNSSFFunction { + description "EP_N22 contained under NSSFFunction"; + } + feature EP_NLSUnderAMFFunction { + description "EP_NLS contained under AMFFunction"; + } + feature EP_NLSUnderLMFFunction { + description "EP_NLS contained under LMFFunction"; + } + feature EP_RxUnderAFFunction { + description "EP_Rx contained under AFFunction"; + } + feature EP_RxUnderPCFFunction { + description "EP_Rx contained under PCFFunction"; + } + feature EP_N40UnderCHFFunction { + description "EP_N40 contained under CHFFunction"; + } + feature EP_N40UnderSMFFunction { + description "EP_N40 contained under SMFFunction"; + } + feature EP_N28UnderCHFFunction { + description "EP_N28 contained under CHFFunction"; + } + feature EP_N28UnderPCFFunction { + description "EP_N28 contained under PCFFunction"; + } + feature EP_N41UnderAMFFunction { + description "EP_N41 contained under AMFFunction"; + } + feature EP_N41UnderCHFFunction { + description "EP_N41 contained under CHFFunction"; + } + feature EP_N60UnderAMFFunction { + description "EP_N60 contained under AMFFunction"; + } + feature EP_N60UnderNSACFFunction { + description + "EP_N60 contained under NSACFFunction"; + } + feature EP_N58UnderNSSAAFFunction { + description + "EP_N58 contained under NSSAAFFunction"; + } + feature EP_N58UnderAMFFunction { + description "EP_N58 contained under AMFFunction"; + } + feature EP_N59UnderNSSAAFFunction { + description + "EP_N59 contained under NSSAAFFunction"; + } + feature EP_N59UnderUDMFunction { + description "EP_N59 contained under UDMFunction"; + } + + // === EP Groupings === + grouping EP_N2Grp { uses eprp3gpp:EP_Common; } - grouping EP_N3Grp { uses eprp3gpp:EP_Common; } - grouping EP_N4Grp { uses eprp3gpp:EP_Common; } - grouping EP_N5Grp { uses eprp3gpp:EP_Common; } - grouping EP_N6Grp { uses eprp3gpp:EP_Common; } - grouping EP_N7Grp { uses eprp3gpp:EP_Common; } - grouping EP_N8Grp { uses eprp3gpp:EP_Common; } - grouping EP_N9Grp { uses eprp3gpp:EP_Common; } - grouping EP_N10Grp { uses eprp3gpp:EP_Common; } - grouping EP_N11Grp { uses eprp3gpp:EP_Common; } - grouping EP_N12Grp { uses eprp3gpp:EP_Common; } - grouping EP_N13Grp { uses eprp3gpp:EP_Common; } - grouping EP_N14Grp { uses eprp3gpp:EP_Common; } - grouping EP_N15Grp { uses eprp3gpp:EP_Common; } - grouping EP_N16Grp { uses eprp3gpp:EP_Common; } - grouping EP_N17Grp { uses eprp3gpp:EP_Common; } - grouping EP_N20Grp { uses eprp3gpp:EP_Common; } - grouping EP_N21Grp { uses eprp3gpp:EP_Common; } - grouping EP_N22Grp { uses eprp3gpp:EP_Common; } - grouping EP_N26Grp { uses eprp3gpp:EP_Common; } - grouping EP_N27Grp { uses eprp3gpp:EP_Common; } - grouping EP_N31Grp { uses eprp3gpp:EP_Common; } - grouping EP_N32Grp { uses eprp3gpp:EP_Common; - list remotePlmnId { + list remotePlmnId { key idx; leaf idx { type uint32;} description "PLMN Identifiers of the remote sepp. - The PLMN Identifier is composed of a Mobile Country Code - (MCC) and a Mobile Network Code (MNC)."; + The PLMN Identifier is composed of a Mobile Country Code + (MCC) and a Mobile Network Code (MNC)."; uses types3gpp:PLMNId; } - - leaf remoteSeppAddress { + leaf remoteSeppAddress { description "The host address of the SEPP."; type inet:host; } - - leaf remoteSeppId { + leaf remoteSeppId { type uint16; } - leaf n32cParas { type string; } - leaf n32fPolicy { type string; } - leaf withIPX { type boolean; } } - grouping EP_S5CGrp { uses eprp3gpp:EP_Common; } - grouping EP_S5UGrp { uses eprp3gpp:EP_Common; } - grouping EP_RxGrp { uses eprp3gpp:EP_Common; } - grouping EP_MAP_SMSCGrp { uses eprp3gpp:EP_Common; } - grouping EP_NLSGrp { uses eprp3gpp:EP_Common; } - grouping EP_NL2Grp { uses eprp3gpp:EP_Common; } - grouping EP_SBI_IPXGrp { uses eprp3gpp:EP_Common; leaf-list sBIService { @@ -192,207 +314,321 @@ module _3gpp-5gc-nrm-ep { type string; } } + grouping EP_N40Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N28Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N41Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N60Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N58Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N59Grp { + uses eprp3gpp:EP_Common; + } - augment "/me3gpp:ManagedElement/af3gpp:AFFunction" { - list EP_N6 { - description "Represents the EP_N6 IOC."; + // === Subtree groupings for EPs under 2+ functions === + + grouping EP_N2Subtree { + list EP_N2 { + description "Represents the EP_N2 IOC."; key id; uses top3gpp:Top_Grp; - container attributes { - uses EP_N6Grp; - } + container attributes { uses EP_N2Grp; } } - - list EP_Rx { - description "Represents the EP_Rx IOC."; + } + grouping EP_N3Subtree { + list EP_N3 { + description "Represents the EP_N3 IOC."; key id; uses top3gpp:Top_Grp; - container attributes { - uses EP_RxGrp; - } + container attributes { uses EP_N3Grp; } } } - - augment "/me3gpp:ManagedElement/amf3gpp:AMFFunction" { - list EP_N2 { - description "Represents the EP_N2 IOC."; + grouping EP_N4Subtree { + list EP_N4 { + description "Represents the EP_N4 IOC."; key id; uses top3gpp:Top_Grp; - container attributes { - uses EP_N2Grp; - } + container attributes { uses EP_N4Grp; } } - + } + grouping EP_N5Subtree { + list EP_N5 { + description "Represents the EP_N5 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_N5Grp; } + } + } + grouping EP_N6Subtree { + list EP_N6 { + description "Represents the EP_N6 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_N6Grp; } + } + } + grouping EP_N7Subtree { + list EP_N7 { + description "Represents the EP_N7 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_N7Grp; } + } + } + grouping EP_N8Subtree { list EP_N8 { description "Represents the EP_N8 IOC."; key id; uses top3gpp:Top_Grp; - container attributes { - uses EP_N8Grp; - } + container attributes { uses EP_N8Grp; } } - + } + grouping EP_N10Subtree { + list EP_N10 { + description "Represents the EP_N10 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_N10Grp; } + } + } + grouping EP_N11Subtree { list EP_N11 { description "Represents the EP_N11 IOC."; key id; uses top3gpp:Top_Grp; - container attributes { - uses EP_N11Grp; - } + container attributes { uses EP_N11Grp; } } - + } + grouping EP_N12Subtree { list EP_N12 { description "Represents the EP_N12 IOC."; key id; uses top3gpp:Top_Grp; - container attributes { - uses EP_N12Grp; - } + container attributes { uses EP_N12Grp; } } - - list EP_N14 { - description "Represents the EP_N14 IOC."; + } + grouping EP_N13Subtree { + list EP_N13 { + description "Represents the EP_N13 IOC."; key id; uses top3gpp:Top_Grp; - container attributes { - uses EP_N14Grp; - } + container attributes { uses EP_N13Grp; } } - + } + grouping EP_N15Subtree { list EP_N15 { description "Represents the EP_N15 IOC."; key id; uses top3gpp:Top_Grp; - container attributes { - uses EP_N15Grp; - } + container attributes { uses EP_N15Grp; } } - + } + grouping EP_N16Subtree { + list EP_N16 { + description "Represents the EP_N16 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_N16Grp; } + } + } + grouping EP_N17Subtree { list EP_N17 { description "Represents the EP_N17 IOC."; key id; uses top3gpp:Top_Grp; - container attributes { - uses EP_N17Grp; - } + container attributes { uses EP_N17Grp; } } - + } + grouping EP_N20Subtree { list EP_N20 { description "Represents the EP_N20 IOC."; key id; uses top3gpp:Top_Grp; - container attributes { - uses EP_N20Grp; - } + container attributes { uses EP_N20Grp; } } - + } + grouping EP_N22Subtree { list EP_N22 { description "Represents the EP_N22 IOC."; key id; uses top3gpp:Top_Grp; - container attributes { - uses EP_N22Grp; - } + container attributes { uses EP_N22Grp; } } - - list EP_N26 { - description "Represents the EP_N26 IOC."; + } + grouping EP_NLSSubtree { + list EP_NLS { + description "Represents the EP_NLS IOC."; key id; uses top3gpp:Top_Grp; - container attributes { - uses EP_N26Grp; - } + container attributes { uses EP_NLSGrp; } } - - list EP_NLS { - description "Represents the EP_NLS IOC."; + } + grouping EP_RxSubtree { + list EP_Rx { + description "Represents the EP_Rx IOC."; key id; uses top3gpp:Top_Grp; - container attributes { - uses EP_NLSGrp; - } + container attributes { uses EP_RxGrp; } } - - list EP_NL2 { - description "Represents the EP_NL2 IOC."; + } + grouping EP_N40Subtree { + list EP_N40 { + description "Represents the EP_N40 IOC."; key id; uses top3gpp:Top_Grp; - container attributes { - uses EP_NL2Grp; - } + container attributes { uses EP_N40Grp; } } } - - augment "/me3gpp:ManagedElement/ausf3gpp:AUSFFunction" { - list EP_N12 { - description "Represents the EP_N12 IOC."; + grouping EP_N28Subtree { + list EP_N28 { + description "Represents the EP_N28 IOC."; key id; uses top3gpp:Top_Grp; - container attributes { - uses EP_N12Grp; - } + container attributes { uses EP_N28Grp; } } - - list EP_N13 { - description "Represents the EP_N13 IOC."; + } + grouping EP_N41Subtree { + list EP_N41 { + description "Represents the EP_N41 IOC."; key id; uses top3gpp:Top_Grp; - container attributes { - uses EP_N13Grp; - } + container attributes { uses EP_N41Grp; } } } - - augment "/me3gpp:ManagedElement/dn3gpp:DNFunction" { - list EP_N6 { - description "Represents the EP_N6 IOC."; + grouping EP_N60Subtree { + list EP_N60 { + description "Represents the EP_N60 IOC."; key id; uses top3gpp:Top_Grp; - container attributes { - uses EP_N6Grp; - } + container attributes { uses EP_N60Grp; } } } - - augment "/me3gpp:ManagedElement/lmf3gpp:LMFFunction" { - list EP_NLS { - description "Represents the EP_NLS IOC."; + grouping EP_N58Subtree { + list EP_N58 { + description "Represents the EP_N58 IOC."; key id; uses top3gpp:Top_Grp; - container attributes { - uses EP_NLSGrp; - } + container attributes { uses EP_N58Grp; } } } - - augment "/me3gpp:ManagedElement/n3iwf3gpp:N3IWFFunction" { - list EP_N2 { - description "Represents the EP_N2 IOC."; + grouping EP_N59Subtree { + list EP_N59 { + description "Represents the EP_N59 IOC."; key id; uses top3gpp:Top_Grp; - container attributes { - uses EP_N2Grp; - } + container attributes { uses EP_N59Grp; } } + } - list EP_N3 { - description "Represents the EP_N3 IOC."; + // === Augments === + + augment "/me3gpp:ManagedElement/af3gpp:AFFunction" { + uses EP_N5Subtree { + if-feature EP_N5UnderAFFunction; + } + uses EP_RxSubtree { + if-feature EP_RxUnderAFFunction; + } + } + + augment "/me3gpp:ManagedElement/amf3gpp:AMFFunction" { + uses EP_N2Subtree { + if-feature EP_N2UnderAMFFunction; + } + uses EP_N8Subtree { + if-feature EP_N8UnderAMFFunction; + } + uses EP_N11Subtree { + if-feature EP_N11UnderAMFFunction; + } + uses EP_N12Subtree { + if-feature EP_N12UnderAMFFunction; + } + list EP_N14 { + description "Represents the EP_N14 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_N14Grp; } + } + uses EP_N15Subtree { + if-feature EP_N15UnderAMFFunction; + } + uses EP_N17Subtree { + if-feature EP_N17UnderAMFFunction; + } + uses EP_N20Subtree { + if-feature EP_N20UnderAMFFunction; + } + uses EP_N22Subtree { + if-feature EP_N22UnderAMFFunction; + } + list EP_N26 { + description "Represents the EP_N26 IOC."; key id; uses top3gpp:Top_Grp; - container attributes { - uses EP_N3Grp; - } + container attributes { uses EP_N26Grp; } + } + uses EP_NLSSubtree { + if-feature EP_NLSUnderAMFFunction; + } + list EP_NL2 { + description "Represents the EP_NL2 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_NL2Grp; } + } + uses EP_N41Subtree { + if-feature EP_N41UnderAMFFunction; + } + uses EP_N60Subtree { + if-feature EP_N60UnderAMFFunction; + } + uses EP_N58Subtree { + if-feature EP_N58UnderAMFFunction; + } + } + + augment "/me3gpp:ManagedElement/ausf3gpp:AUSFFunction" { + uses EP_N12Subtree { + if-feature EP_N12UnderAUSFFunction; + } + uses EP_N13Subtree { + if-feature EP_N13UnderAUSFFunction; + } + } + + augment "/me3gpp:ManagedElement/dn3gpp:DNFunction" { + uses EP_N6Subtree { + if-feature EP_N6UnderDNFunction; + } + } + + augment "/me3gpp:ManagedElement/lmf3gpp:LMFFunction" { + uses EP_NLSSubtree { + if-feature EP_NLSUnderLMFFunction; + } + } + + augment "/me3gpp:ManagedElement/n3iwf3gpp:N3IWFFunction" { + uses EP_N2Subtree { + if-feature EP_N2UnderN3IWFFunction; + } + uses EP_N3Subtree { + if-feature EP_N3UnderN3IWFFunction; } } augment "/me3gpp:ManagedElement/ngeir3gpp:NGEIRFunction" { - list EP_N17 { - description "Represents the EP_N17 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N17Grp; - } + uses EP_N17Subtree { + if-feature EP_N17UnderNGEIRFunction; } } @@ -401,77 +637,40 @@ module _3gpp-5gc-nrm-ep { description "Represents the EP_N27 IOC."; key id; uses top3gpp:Top_Grp; - container attributes { - uses EP_N26Grp; - } + container attributes { uses EP_N27Grp; } } - } augment "/me3gpp:ManagedElement/nssf3gpp:NSSFFunction" { - list EP_N22 { - description "Represents the EP_N22 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N22Grp; - } + uses EP_N22Subtree { + if-feature EP_N22UnderNSSFFunction; } - list EP_N31 { description "Represents the EP_N31 IOC."; key id; uses top3gpp:Top_Grp; - container attributes { - uses EP_N31Grp; - } + container attributes { uses EP_N31Grp; } } } augment "/me3gpp:ManagedElement/pcf3gpp:PCFFunction" { - list EP_N5 { - description "Represents the EP_N5 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N5Grp; - } + uses EP_N5Subtree { + if-feature EP_N5UnderPCFFunction; } - - list EP_N7 { - description "Represents the EP_N7 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N7Grp; - } + uses EP_N7Subtree { + if-feature EP_N7UnderPCFFunction; } - - list EP_N15 { - description "Represents the EP_N15 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N15Grp; - } + uses EP_N15Subtree { + if-feature EP_N15UnderPCFFunction; } - - list EP_N16 { - description "Represents the EP_N16 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N16Grp; - } + uses EP_N16Subtree { + if-feature EP_N16UnderPCFFunction; } - - list EP_Rx { - description "Represents the EP_Rx IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_RxGrp; - } + uses EP_RxSubtree { + if-feature EP_RxUnderPCFFunction; + } + uses EP_N28Subtree { + if-feature EP_N28UnderPCFFunction; } } @@ -480,171 +679,118 @@ module _3gpp-5gc-nrm-ep { description "Represents the EP_N32 IOC."; key id; uses top3gpp:Top_Grp; - container attributes { - uses EP_N32Grp; - } + container attributes { uses EP_N32Grp; } } + } - } augment "/me3gpp:ManagedElement/smsf3gpp:SMSFFunction" { - list EP_N20 { - description "Represents the EP_20 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N20Grp; - } + uses EP_N20Subtree { + if-feature EP_N20UnderSMSFFunction; } - list EP_N21 { description "Represents the EP_N21 IOC."; key id; uses top3gpp:Top_Grp; - container attributes { - uses EP_N21Grp; - } + container attributes { uses EP_N21Grp; } } - list EP_MAP_SMSC { description "Represents the EP_MAP_SMSC IOC."; key id; uses top3gpp:Top_Grp; - container attributes { - uses EP_MAP_SMSCGrp; - } + container attributes { uses EP_MAP_SMSCGrp; } } } augment "/me3gpp:ManagedElement/smf3gpp:SMFFunction" { - list EP_N4 { - description "Represents the EP_N4 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N4Grp; - } + uses EP_N4Subtree { + if-feature EP_N4UnderSMFFunction; } - - list EP_N7 { - description "Represents the EP_N7 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N7Grp; - } + uses EP_N7Subtree { + if-feature EP_N7UnderSMFFunction; } - - list EP_N10 { - description "Represents the EP_N10 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N10Grp; - } + uses EP_N10Subtree { + if-feature EP_N10UnderSMFFunction; } - - list EP_N11 { - description "Represents the EP_N11 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N11Grp; - } + uses EP_N11Subtree { + if-feature EP_N11UnderSMFFunction; } - - list EP_N16 { - description "Represents the EP_N16 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N16Grp; - } + uses EP_N16Subtree { + if-feature EP_N16UnderSMFFunction; } - list EP_S5C { - description "Represents the EP_S5C IOC."; + description "Represents the EP_S5C IOC."; key id; uses top3gpp:Top_Grp; - container attributes { - uses EP_S5CGrp; - } + container attributes { uses EP_S5CGrp; } + } + uses EP_N40Subtree { + if-feature EP_N40UnderSMFFunction; } } augment "/me3gpp:ManagedElement/udm3gpp:UDMFunction" { - list EP_N8 { - description "Represents the EP_N8 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N8Grp; - } + uses EP_N8Subtree { + if-feature EP_N8UnderUDMFunction; } - - list EP_N10 { - description "Represents the EP_N10 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N10Grp; - } + uses EP_N10Subtree { + if-feature EP_N10UnderUDMFunction; } - - list EP_N13 { - description "Represents the EP_N13 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N13Grp; - } + uses EP_N13Subtree { + if-feature EP_N13UnderUDMFunction; + } + uses EP_N59Subtree { + if-feature EP_N59UnderUDMFunction; } - } augment "/me3gpp:ManagedElement/upf3gpp:UPFFunction" { - list EP_N4 { - description "Represents the EP_N4 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N4Grp; - } + uses EP_N4Subtree { + if-feature EP_N4UnderUPFFunction; } - - list EP_N3 { - description "Represents the EP_N3 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N3Grp; - } + uses EP_N3Subtree { + if-feature EP_N3UnderUPFFunction; } - list EP_N9 { description "Represents the EP_N9 IOC."; key id; uses top3gpp:Top_Grp; - container attributes { - uses EP_N9Grp; - } + container attributes { uses EP_N9Grp; } } - list EP_S5U { description "Represents the EP_S5U IOC."; key id; uses top3gpp:Top_Grp; - container attributes { - uses EP_S5UGrp; - } + container attributes { uses EP_S5UGrp; } + } + uses EP_N6Subtree { + if-feature EP_N6UnderUPFFunction; } + } - list EP_EP_N6 { - description "Represents the EP_N6 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { - uses EP_N6Grp; - } + augment "/me3gpp:ManagedElement/chf3gpp:CHFFunction" { + uses EP_N40Subtree { + if-feature EP_N40UnderCHFFunction; + } + uses EP_N28Subtree { + if-feature EP_N28UnderCHFFunction; + } + uses EP_N41Subtree { + if-feature EP_N41UnderCHFFunction; + } + } + + augment "/me3gpp:ManagedElement/nsacf3gpp:NSACFFunction" { + uses EP_N60Subtree { + if-feature EP_N60UnderNSACFFunction; + } + } + + augment "/me3gpp:ManagedElement/nssaaf3gpp:NSSAAFFunction" { + uses EP_N58Subtree { + if-feature EP_N58UnderNSSAAFFunction; + } + uses EP_N59Subtree { + if-feature EP_N59UnderNSSAAFFunction; } } -} \ No newline at end of file +} -- GitLab From 9569ecf9e2bcdaba33fd5f8f13497a95d39306a4 Mon Sep 17 00:00:00 2001 From: "U-ERICSSON\\ETHBLL" Date: Mon, 27 Apr 2026 19:58:07 +0200 Subject: [PATCH 24/45] added dLTMControl to CUCP --- yang-models/_3gpp-nr-nrm-gnbcucpfunction.yang | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/yang-models/_3gpp-nr-nrm-gnbcucpfunction.yang b/yang-models/_3gpp-nr-nrm-gnbcucpfunction.yang index e2940624..d0fee672 100755 --- a/yang-models/_3gpp-nr-nrm-gnbcucpfunction.yang +++ b/yang-models/_3gpp-nr-nrm-gnbcucpfunction.yang @@ -16,10 +16,11 @@ module _3gpp-nr-nrm-gnbcucpfunction { contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; description "Defines the YANG mapping of the GNBCUCPFunction Information Object Class (IOC) that is part of the NR Network Resource Model (NRM). - Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 28.541 5G Network Resource Model (NRM)"; + revision 2026-04-25 { reference "CR-xxxx" ; } revision 2025-05-25 { reference "CR-1527" ; } revision 2025-05-07 { reference "CR-1548"; } revision 2025-03-25 { reference "CR-1509"; } @@ -255,6 +256,13 @@ module _3gpp-nr-nrm-gnbcucpfunction { enabled or disabled."; } + leaf dLTMControl { + type boolean; + default false; + description "Determines whether the LTM cell switch function is enabled + or disabled."; + } + list qceIdMappingInfoList { description "List of the mapping relationship between QoE collection entity identity, PLMN where QoE collection entity resides, and the IP address of @@ -292,12 +300,6 @@ module _3gpp-nr-nrm-gnbcucpfunction { uses types5g3gpp:MappedCellIdInfoGrp; } - leaf configurable5QISetRef { - type types3gpp:DistinguishedName; - description "DN of the Configurable5QISet that the GNBCUCPFunction - supports (is associated to)."; - } - leaf isOnboardSatellite { type boolean; default false; @@ -313,6 +315,12 @@ module _3gpp-nr-nrm-gnbcucpfunction { leading digits '0' to complete a 5-digit length."; } + leaf configurable5QISetRef { + type types3gpp:DistinguishedName; + description "DN of the Configurable5QISet that the GNBCUCPFunction + supports (is associated to)."; + } + leaf dynamic5QISetRef { type types3gpp:DistinguishedName; description "DN of the Dynamic5QISet that the GNBCUCPFunction supports -- GitLab From d99fb50c2a2beee57fe08c94be77a417adab575f Mon Sep 17 00:00:00 2001 From: "U-ERICSSON\\ETHBLL" Date: Mon, 27 Apr 2026 23:12:46 +0200 Subject: [PATCH 25/45] added mbupffunction --- yang-models/_3gpp-5gc-nrm-mbupffunction.yang | 167 +++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 yang-models/_3gpp-5gc-nrm-mbupffunction.yang diff --git a/yang-models/_3gpp-5gc-nrm-mbupffunction.yang b/yang-models/_3gpp-5gc-nrm-mbupffunction.yang new file mode 100644 index 00000000..39b3a161 --- /dev/null +++ b/yang-models/_3gpp-5gc-nrm-mbupffunction.yang @@ -0,0 +1,167 @@ +module _3gpp-5gc-nrm-mbupffunction { + yang-version 1.1; + + namespace urn:3gpp:sa5:_3gpp-5gc-nrm-mbupffunction; + prefix mbupf3gpp; + + import _3gpp-common-managed-function { prefix mf3gpp; } + import _3gpp-common-managed-element { prefix me3gpp; } + import _3gpp-common-yang-types { prefix types3gpp; } + import _3gpp-common-top { prefix top3gpp; } + import _3gpp-5g-common-yang-types { prefix types5g3gpp; } + import _3gpp-5gc-nrm-managed-nfprofile { prefix mnfp3gpp; } + import _3gpp-5gc-nrm-upffunction { prefix upf3gpp; } + + organization "3gpp SA5"; + contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; + description "This IOC represents the UDR function in 5GC. For more information + about the UDR, see 3GPP TS 23.501. + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + TTA, TTC). All rights reserved."; + reference "3GPP TS 28.541"; + + revision 2026-04-26 { reference "CR-xxxx CR-yyyy" ; } // common in r19, r20 + + grouping MbUpfInfoGrp { + description "represents the data type MnpfInfoGrp."; + + list sNssaiMbUpfInfoList { + description "This attribute represents the list of parameters supported + by the MB-UPF per S-NSSAI."; + min-elements 1; + key idx; + leaf idx { type uint32; } + uses upf3gpp:SnssaiUpfInfoItemGrp; + } + + leaf-list mbSmfServingArea { + type string; + description "This attribute represents the MB-SMF service area(s) the + MB-UPF can serve. + If not provided, the MB-UPF can serve any MB-SMF service area."; + } + + list interfaceMbUpfInfoList { + description "This attribute represents the list of User Plane interfaces + configured on the MB-UPF. When this IE is provided in the NF Discovery + response, the NF Service Consumer (e.g. MB-SMF) may use this information + for MB-UPF selection."; + key idx; + leaf idx { type uint32; } + uses upf3gpp:InterfaceUpfInfoItemGrp; + } + + list taiList { + description "This attribute represents the list of TAIs the MB-UPF can + serve. + + The absence of this attribute and the taiRangeList attribute indicates + that the MB-UPF can serve the whole MB-SMF service area defined by the + MbSmfServingArea attribute."; + key idx; + leaf idx { type uint32; } + uses types3gpp:TaiGrp; + } + + list taiRangeList { + description "This attribute represents the range of TAIs the MB-UPF can + serve. + + The absence of this attribute and the taiList attribute indicates that + the MB-UPF can serve the whole MB-SMF service area defined by the + MbSmfServingArea attribute."; + key idx; + leaf idx { type uint32; } + uses types5g3gpp:TaiRangeGrp; + } + + leaf priority { + type uint16; + description "This attribute represents priority (relative to other NFs + of the same type) in the range of 0-65535, to be used for NF selection + for a service request matching the attributes of the MbUpfInfo; lower + values indicate a higher priority. + + See the precedence rules in the description of the priority attribute + in NFProfile, if Priority is also present in NFProfile. + + The NRF may overwrite the received priority value when exposing an + NFProfile with the Nnrf_NFDiscovery service."; + } + + leaf supportedPfcpFeatures { + type string; + description "Supported Packet Forwarding Control Protocol (PFCP) Features. + A string used to indicate the PFCP features supported by the UPF, + which encodes the 'UP Function Features' as specified in + Table 8.2.25-1 of TS 29.244 (starting from Octet 5), in hexadecimal + representation. + + Each character in the string shall take a value of '0' to '9', 'a' + to 'f' or 'A' to 'F' and each two characters shall represent one octet + of 'UP Function Features' (starting from Octet 5, to higher octets). + For each two characters representing one octet, the first character + representing the 4 most significant bits of the octet and the second + character the 4 least significant bits of the octet. + + The supported PFCP features shall be provisioned in addition and be + consistent with the existing UPF features (atsssCapability, ueIpAddrInd, + redundantGtpu and ipups), e.g., if the ueIpAddrInd is set to 'true', + then the UEIP flag shall also be set to '1' in the supported PFCP + features."; + } + } + + grouping MBUPFFunctionGrp { + description "Representse the MBUPFFunction IOC"; + uses mf3gpp:ManagedFunctionGrp; + + list pLMNIdList { + description "List of PLMN Identifiers. + The PLMN Identifier is composed of a Mobile Country Code (MCC) and a + Mobile Network Code (MNC)."; + + key "mcc mnc"; + uses types3gpp:PLMNId; + } + + list managedNFProfile { + key idx; + leaf idx { type uint32; } + min-elements 1; + max-elements 1; + description "Profile definition of a Managed NF (See TS 23.501)"; + uses mnfp3gpp:ManagedNFProfileGrp; + } + + list commModelList { + min-elements 1; + key "groupId"; + description "Specifies a list of commModel. It can be used by NF and + NF services to interact with each other in 5G Core network "; + reference "3GPP TS 23.501"; + uses types5g3gpp:CommModel; + } + + list mbUpfInfo { + description "Represents information of an MNPF NF Instance"; + key idx; + leaf idx { type uint32; } + max-elements 1; + uses MbUpfInfoGrp; + } + } + + augment "/me3gpp:ManagedElement" { + list MBUPFFunction { + description "This IOC represents the MB-UPF function defined in + TS 23.501 and TS 23.247"; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses MBUPFFunctionGrp; + } + uses mf3gpp:ManagedFunctionContainedClasses; + } + } +} \ No newline at end of file -- GitLab From 9a6a4f7180640d51dc4df081f0ba59445bca5b00 Mon Sep 17 00:00:00 2001 From: rosabolzek Date: Wed, 29 Apr 2026 09:32:11 +0200 Subject: [PATCH 26/45] add _3gpp-5gc-nrm-aanffunction.yang and _3gpp-5gc-nrm-bsffunction.yang to align with stage 2 --- yang-models/_3gpp-5gc-nrm-aanffunction.yang | 102 +++++++++++ yang-models/_3gpp-5gc-nrm-bsffunction.yang | 188 ++++++++++++++++++++ 2 files changed, 290 insertions(+) create mode 100755 yang-models/_3gpp-5gc-nrm-aanffunction.yang create mode 100755 yang-models/_3gpp-5gc-nrm-bsffunction.yang diff --git a/yang-models/_3gpp-5gc-nrm-aanffunction.yang b/yang-models/_3gpp-5gc-nrm-aanffunction.yang new file mode 100755 index 00000000..ecdc42ec --- /dev/null +++ b/yang-models/_3gpp-5gc-nrm-aanffunction.yang @@ -0,0 +1,102 @@ +module _3gpp-5gc-nrm-aanffunction { + yang-version 1.1; + namespace urn:3gpp:sa5:_3gpp-5gc-nrm-aanffunction; + prefix aanf3gpp; + + import _3gpp-common-managed-function { prefix mf3gpp; } + import _3gpp-common-managed-element { prefix me3gpp; } + import _3gpp-5g-common-yang-types { prefix types5g3gpp; } + import _3gpp-common-top { prefix top3gpp; } + import _3gpp-5gc-nrm-managed-nfprofile { prefix mnfp3gpp; } + import ietf-inet-types { prefix inet; } + + organization "3gpp SA5"; + contact + "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; + description "This IOC represents the AAnF function in 5GC. + For more information about the AANF, see TS 33.535. + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, + CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; + reference "3GPP TS 28.541"; + + revision 2025-04-25 { reference "CR-"; } + + grouping AanfInfoGrp { + description "This data type represents the Specific + data for the AAnF. + (See clause 6.1.6.2.73 TS 29.510)."; + + leaf-list routingIndicators { + description "This attribute represents the List of + Routing Indicators supported by the AAnf + instance. If not provided, the AAnf can serve + any Routing Indicator."; + //optional + type string { + pattern '[0-9]{1,4}'; + } + } + } + + grouping AANFFunctionGrp { + description "Represents the AANFFunction IOC."; + uses mf3gpp:ManagedFunctionGrp; + + list pLMNInfoList { + description "It defines the PLMN(s) of a Network + Function."; + key "mcc mnc sd sst"; + min-elements 1; + uses types5g3gpp:PLMNInfo; + } + + leaf sBIFQDN { + description "The FQDN of the registered NF instance + in the service-based interface."; + type inet:domain-name; + } + + list managedNFProfile { + key idx; + leaf idx { type uint32; } + min-elements 1; + max-elements 1; + description "Profile definition of a Managed NF + (See TS 23.501)."; + uses mnfp3gpp:ManagedNFProfileGrp; + } + + list commModelList { + min-elements 1; + key "groupId"; + description "Specifies a list of commModel. It can + be used by NF and NF services to interact with + each other in 5G Core network."; + reference "3GPP TS 23.501"; + uses types5g3gpp:CommModel; + } + + list aanfInfo { + description "This attribute represents information + of an AAnF NF Instance."; + //optional + max-elements 1; + key idx; + leaf idx { type uint32; } + uses AanfInfoGrp; + } + } + + augment "/me3gpp:ManagedElement" { + list AANFFunction { + description "5G Core AAnF Function"; + reference "3GPP TS 28.541"; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses AANFFunctionGrp; + } + uses mf3gpp:ManagedFunctionContainedClasses; + } + } +} diff --git a/yang-models/_3gpp-5gc-nrm-bsffunction.yang b/yang-models/_3gpp-5gc-nrm-bsffunction.yang new file mode 100755 index 00000000..32196e91 --- /dev/null +++ b/yang-models/_3gpp-5gc-nrm-bsffunction.yang @@ -0,0 +1,188 @@ +module _3gpp-5gc-nrm-bsffunction { + yang-version 1.1; + namespace urn:3gpp:sa5:_3gpp-5gc-nrm-bsffunction; + prefix bsf3gpp; + + import _3gpp-common-managed-function { prefix mf3gpp; } + import _3gpp-common-managed-element { prefix me3gpp; } + import _3gpp-common-yang-types { prefix types3gpp; } + import _3gpp-5g-common-yang-types { prefix types5g3gpp; } + import _3gpp-common-top { prefix top3gpp; } + import _3gpp-5gc-nrm-managed-nfprofile { prefix mnfp3gpp; } + import ietf-inet-types { prefix inet; } + + organization "3gpp SA5"; + contact + "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; + description "This IOC represents the BSF function in 5GC. + For more information about the BSF, see TS 23.503. + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, + CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; + reference "3GPP TS 28.541"; + + revision 2025-04-25 { reference "CR-"; } + + grouping BsfInfoGrp { + description "This data type represents the Specific + data for the BSF. + (See clause 6.1.6.2.21 TS 29.510)."; + + list ipv4AddressRanges { + description "This attribute represents the list of + ranges of IPv4 addresses handled by BSF. If not + provided, the BSF can serve any IPv4 address."; + key "start end"; + //optional + uses types3gpp:Ipv4AddressRange; + } + + leaf-list dnnList { + description "This attribute represents the list of + DNNs handled by the BSF. The DNN shall contain + the Network Identifier and it may additionally + contain an Operator Identifier. If the Operator + Identifier is not included, the DNN is supported + for all the PLMNs in the plmnList of the NF + Profile. If not provided, the BSF can serve + any DNN."; + //optional + type string; + } + + leaf-list ipDomainList { + description "This attribute represents the list of + IPv4 address domains, as described in clause 6.2 + of 3GPP TS 29.513, handled by the BSF. If not + provided, the BSF can serve any IP domain."; + //optional + type string; + } + + list ipv6PrefixRanges { + description "This attribute represents the list of + ranges of IPv6 prefixes handled by the BSF. If + not provided, the BSF can serve any IPv6 + prefix."; + //optional + key "start end"; + uses types3gpp:Ipv6PrefixRange; + } + + leaf rxDiamHost { + description "This attribute represents the Diameter + host of the Rx interface for the BSF."; + type string; + } + + leaf rxDiamRealm { + description "This attribute represents the Diameter + realm of the Rx interface for the BSF. See + TS 29.571. String contains a Diameter Identity + (FQDN)."; + type string; + } + + leaf groupId { + description "This attribute represents the identity + of the BSF group that is served by the BSF + instance. If not provided, the BSF instance does + not pertain to any BSF group."; + //optional + type string; + } + + list supiRanges { + description "This attribute represents list of + ranges of SUPIs served by the BSF instance."; + //optional + key idx; + leaf idx { type uint32; } + uses types5g3gpp:SupiRangeGrp; + } + + list gpsiRanges { + description "This attribute represents list of + ranges of GPSIs served by the BSF instance."; + //optional + key idx; + leaf idx { type uint32; } + uses types5g3gpp:IdentityRangeGrp; + } + } + + grouping BSFFunctionGrp { + description "Represents the BSFFunction IOC."; + uses mf3gpp:ManagedFunctionGrp; + + list pLMNInfoList { + description "It defines the PLMN(s) of a Network + Function."; + key "mcc mnc sd sst"; + min-elements 1; + uses types5g3gpp:PLMNInfo; + } + + leaf sBIFQDN { + description "The FQDN of the registered NF instance + in the service-based interface."; + type inet:domain-name; + } + + leaf-list cNSIIdList { + description "NSI ID. NSI ID is an identifier for + identifying the Core Network part of a Network + Slice instance when multiple Network Slice + instances of the same Network Slice are deployed, + and there is a need to differentiate between them + in the 5GC, see clause 3.1 of TS 23.501 and + subclause 6.1.6.2.7 of 3GPP TS 29.531."; + //optional + type string; + } + + list managedNFProfile { + key idx; + leaf idx { type uint32; } + min-elements 1; + max-elements 1; + description "Profile definition of a Managed NF + (See TS 23.501)."; + uses mnfp3gpp:ManagedNFProfileGrp; + } + + list commModelList { + min-elements 1; + key "groupId"; + description "Specifies a list of commModel. It can + be used by NF and NF services to interact with + each other in 5G Core network."; + reference "3GPP TS 23.501"; + uses types5g3gpp:CommModel; + } + + list bsfInfo { + description "This attribute represents information + of a BSF NF Instance. Multiple bsfInfo may be + allowed when BSF provides binding service for + various combinations of IPv4 addresses and + ipDomains."; + //optional + key idx; + leaf idx { type uint32; } + uses BsfInfoGrp; + } + } + + augment "/me3gpp:ManagedElement" { + list BSFFunction { + description "5G Core BSF Function"; + reference "3GPP TS 28.541"; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses BSFFunctionGrp; + } + uses mf3gpp:ManagedFunctionContainedClasses; + } + } +} -- GitLab From 4823eee13fc2be2d3a3940888a367ce0b36c58de Mon Sep 17 00:00:00 2001 From: rosabolzek Date: Wed, 29 Apr 2026 09:40:47 +0200 Subject: [PATCH 27/45] add _3gpp-5gc-nrm-dccffunction.yang --- yang-models/_3gpp-5gc-nrm-dccffunction.yang | 151 ++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100755 yang-models/_3gpp-5gc-nrm-dccffunction.yang diff --git a/yang-models/_3gpp-5gc-nrm-dccffunction.yang b/yang-models/_3gpp-5gc-nrm-dccffunction.yang new file mode 100755 index 00000000..56c3a7c7 --- /dev/null +++ b/yang-models/_3gpp-5gc-nrm-dccffunction.yang @@ -0,0 +1,151 @@ +module _3gpp-5gc-nrm-dccffunction { + yang-version 1.1; + namespace urn:3gpp:sa5:_3gpp-5gc-nrm-dccffunction; + prefix dccf3gpp; + + import _3gpp-common-managed-function { prefix mf3gpp; } + import _3gpp-common-managed-element { prefix me3gpp; } + import _3gpp-common-yang-types { prefix types3gpp; } + import _3gpp-5g-common-yang-types { prefix types5g3gpp; } + import _3gpp-common-top { prefix top3gpp; } + import _3gpp-5gc-nrm-managed-nfprofile { prefix mnfp3gpp; } + import ietf-inet-types { prefix inet; } + + organization "3gpp SA5"; + contact + "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; + description "This IOC represents the DCCF function in 5GC. + For more information about the DCCF, see TS 23.501. + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, + CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; + reference "3GPP TS 28.541"; + + revision 2025-04-25 { reference "CR-"; } + + grouping DccfInfoGrp { + description "This data type represents the Specific + data for the DCCF. + (See clause 6.1.6.2.46 TS 29.510)."; + + leaf-list servingNfTypeList { + //optional support + type types3gpp:NfType; + description "This attribute represents the list of + NF type(s) from which the DCCF NF can collect + data. The absence of this attribute indicates + that the DCCF can collect data from any NF + type."; + } + + leaf-list servingNfSetIdList { + //optional support + type string; + description "This attribute represents the list of + NF Set Id(s) from which the DCCF NF can collect + data. The absence of this attribute indicates + that the DCCF can collect data from any NF + Set."; + } + + list taiList { + //optional support + description "This attribute represents the list of + TAIs the DCCF can serve. It may contain one or + more non-3GPP access TAIs. The absence of both + this attribute and the taiRangeList attribute + indicates that the DCCF can be selected for any + TAI in the serving network."; + key idx; + leaf idx { type uint32; } + uses types3gpp:TaiGrp; + } + + list taiRangeList { + //optional support + description "This attribute represents the range + of TAIs the DCCF can serve. It may contain one + or more non-3GPP access TAI ranges. The absence + of both this attribute and the taiList attribute + indicates that the DCCF can be selected for any + TAI in the serving network."; + key idx; + leaf idx { type uint32; } + uses types5g3gpp:TaiRangeGrp; + } + } + + grouping DCCFFunctionGrp { + description "Represents the DCCFFunction IOC."; + uses mf3gpp:ManagedFunctionGrp; + + list pLMNInfoList { + description "It defines the PLMN(s) of a Network + Function."; + key "mcc mnc sd sst"; + min-elements 1; + uses types5g3gpp:PLMNInfo; + } + + leaf sBIFQDN { + description "The FQDN of the registered NF instance + in the service-based interface."; + type inet:domain-name; + } + + leaf-list cNSIIdList { + //optional support + description "NSI ID. NSI ID is an identifier for + identifying the Core Network part of a Network + Slice instance when multiple Network Slice + instances of the same Network Slice are deployed, + and there is a need to differentiate between them + in the 5GC"; + reference " see clause 3.1 of TS 23.501 and + subclause 6.1.6.2.7 of 3GPP TS 29.531."; + type string; + } + + list managedNFProfile { + key idx; + leaf idx { type uint32; } + min-elements 1; + max-elements 1; + description "Profile definition of a Managed NF"; + reference "(See TS 23.501)."; + uses mnfp3gpp:ManagedNFProfileGrp; + } + + list commModelList { + min-elements 1; + key "groupId"; + description "Specifies a list of commModel. It can + be used by NF and NF services to interact with + each other in 5G Core network."; + reference "3GPP TS 23.501"; + uses types5g3gpp:CommModel; + } + + list dccfInfo { + //optional support + description "This attribute represents information + of a DCCF NF Instance."; + max-elements 1; + key idx; + leaf idx { type uint32; } + uses DccfInfoGrp; + } + } + + augment "/me3gpp:ManagedElement" { + list DCCFFunction { + description "5G Core DCCF Function"; + reference "3GPP TS 28.541"; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses DCCFFunctionGrp; + } + uses mf3gpp:ManagedFunctionContainedClasses; + } + } +} -- GitLab From 0f1a36e2c566d576f1da0138dca63393d31047ae Mon Sep 17 00:00:00 2001 From: rosabolzek Date: Wed, 29 Apr 2026 09:48:06 +0200 Subject: [PATCH 28/45] add _3gpp-5gc-nrm-mfaffunction.yang --- yang-models/_3gpp-5gc-nrm-mfaffunction.yang | 136 ++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100755 yang-models/_3gpp-5gc-nrm-mfaffunction.yang diff --git a/yang-models/_3gpp-5gc-nrm-mfaffunction.yang b/yang-models/_3gpp-5gc-nrm-mfaffunction.yang new file mode 100755 index 00000000..0e8dd6fd --- /dev/null +++ b/yang-models/_3gpp-5gc-nrm-mfaffunction.yang @@ -0,0 +1,136 @@ +module _3gpp-5gc-nrm-mfaffunction { + yang-version 1.1; + namespace urn:3gpp:sa5:_3gpp-5gc-nrm-mfaffunction; + prefix mfaf3gpp; + + import _3gpp-common-managed-function { prefix mf3gpp; } + import _3gpp-common-managed-element { prefix me3gpp; } + import _3gpp-common-yang-types { prefix types3gpp; } + import _3gpp-5g-common-yang-types { prefix types5g3gpp; } + import _3gpp-common-top { prefix top3gpp; } + import _3gpp-5gc-nrm-managed-nfprofile { prefix mnfp3gpp; } + import ietf-inet-types { prefix inet; } + + organization "3gpp SA5"; + contact + "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; + description "This IOC represents the MFAF function in 5GC. + For more information about the MFAF, see TS 23.501. + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, + CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; + reference "3GPP TS 28.541"; + + revision 2025-04-25 { reference "CR-"; } + + grouping MfafInfoGrp { + description "This data type represents the Specific + data for the MFAF. + (See clause 6.1.6.2.75 TS 29.510)."; + + leaf-list servingNfTypeList { + //optional support + type types3gpp:NfType; + description "This attribute represents a List of + NF type(s) served by MFAF NF. The absence of + this attribute indicates that the MFAF can be + selected for any NF type."; + } + + leaf-list servingNfSetIdList { + //optional support + type string; + description "This attribute represents a List of + NF Set Id(s) served by MFAF NF. The absence of + this attribute indicates that the MFAF can be + selected for any NF Set Id."; + } + + list taiList { + //optional support + description "This attribute represents a List of + TAIs the MFAF can serve. It may contain one or + more non-3GPP access TAIs. The absence of both + this attribute and the taiRangeList attribute + indicates that the MFAF can be selected for any + TAI in the serving network."; + key idx; + leaf idx { type uint32; } + uses types3gpp:TaiGrp; + } + + list taiRangeList { + //optional support + description "This attribute represents the range + of TAIs the MFAF can serve. It may contain one + or more non-3GPP access TAI ranges. The absence + of both this attribute and the taiList attribute + indicates that the MFAF can be selected for any + TAI in the serving network."; + key idx; + leaf idx { type uint32; } + uses types5g3gpp:TaiRangeGrp; + } + } + + grouping MFAFFunctionGrp { + description "Represents the MFAFFunction IOC."; + uses mf3gpp:ManagedFunctionGrp; + + list pLMNInfoList { + description "It defines the PLMN(s) of a Network + Function."; + key "mcc mnc sd sst"; + min-elements 1; + uses types5g3gpp:PLMNInfo; + } + + leaf sBIFQDN { + description "The FQDN of the registered NF instance + in the service-based interface."; + type inet:domain-name; + } + + list managedNFProfile { + key idx; + leaf idx { type uint32; } + min-elements 1; + max-elements 1; + description "Profile definition of a Managed NF"; + reference " (See TS 23.501)."; + uses mnfp3gpp:ManagedNFProfileGrp; + } + + list commModelList { + min-elements 1; + key "groupId"; + description "Specifies a list of commModel. It can + be used by NF and NF services to interact with + each other in 5G Core network."; + reference "3GPP TS 23.501"; + uses types5g3gpp:CommModel; + } + + list mfafInfo { + //optional support + description "This attribute represents information + of an MFAF NF Instance."; + max-elements 1; + key idx; + leaf idx { type uint32; } + uses MfafInfoGrp; + } + } + + augment "/me3gpp:ManagedElement" { + list MFAFFunction { + description "5G Core MFAF Function"; + reference "3GPP TS 28.541"; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses MFAFFunctionGrp; + } + uses mf3gpp:ManagedFunctionContainedClasses; + } + } +} -- GitLab From d9466271ce391261fd0ff3e323fff65b8f44aeee Mon Sep 17 00:00:00 2001 From: rosabolzek Date: Wed, 29 Apr 2026 10:58:05 +0200 Subject: [PATCH 29/45] add _3gpp-5gc-nrm-easdffunction.yang --- yang-models/_3gpp-5gc-nrm-easdffunction.yang | 191 +++++++++++++++++++ 1 file changed, 191 insertions(+) create mode 100755 yang-models/_3gpp-5gc-nrm-easdffunction.yang diff --git a/yang-models/_3gpp-5gc-nrm-easdffunction.yang b/yang-models/_3gpp-5gc-nrm-easdffunction.yang new file mode 100755 index 00000000..c7a44d8f --- /dev/null +++ b/yang-models/_3gpp-5gc-nrm-easdffunction.yang @@ -0,0 +1,191 @@ +module _3gpp-5gc-nrm-easdffunction { + yang-version 1.1; + namespace urn:3gpp:sa5:_3gpp-5gc-nrm-easdffunction; + prefix easdf3gpp; + + import _3gpp-common-managed-function { prefix mf3gpp; } + import _3gpp-common-managed-element { prefix me3gpp; } + import _3gpp-common-yang-types { prefix types3gpp; } + import _3gpp-5g-common-yang-types { prefix types5g3gpp; } + import _3gpp-common-yang-extensions { prefix yext3gpp; } + import _3gpp-common-top { prefix top3gpp; } + import _3gpp-5gc-nrm-managed-nfprofile { prefix mnfp3gpp; } + import ietf-inet-types { prefix inet; } + + organization "3gpp SA5"; + contact + "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; + description "This IOC represents the Edge Application + Server Discovery Function (EASDF) in 5GC which can + handle the DNS messages according to the instruction + from the SMF. For more information about the 5G + EASDF, see 3GPP TS 23.548. + Copyright 2026, 3GPP Organizational Partners (ARIB, + ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved."; + reference "3GPP TS 28.541"; + + revision 2025-04-25 { reference "CR-"; } + + grouping DnnEasdfInfoItemGrp { + description "This data type represents parameters + supported by the EASDF per DNN. + (See clause 6.1.6.2.79 TS 29.510)."; + + leaf dnn { + type string; + mandatory true; + description "This attribute represents a supported + DNN or Wildcard DNN if the EASDF supports all + DNNs for the related S-NSSAI. The DNN shall + contain the Network Identifier and it may + additionally contain an Operator Identifier. + If the Operator Identifier is not included, the + DNN is supported for all the PLMNs in the + plmnList of the NF Profile."; + } + + leaf-list dnaiList { + //optional support + type string; + min-elements 1; + description "List of Data network access + identifiers supported for this DNN."; + } + } + + grouping SnssaiEasdfInfoItemGrp { + description "This data type represents parameters + supported by the EASDF per S-NSSAI."; + reference "(See clause 6.1.6.2.78 TS 29.510)."; + + list sNssai { + description "This attribute represents a S-NSSAI."; + min-elements 1; + max-elements 1; + key idx; + leaf idx { type uint32; } + uses types5g3gpp:SnssaiExtensionGrp; + } + + list dnnEasdfInfoList { + description "This attribute represents a list of + parameters supported by the EASDF per DNN."; + min-elements 1; + key dnn; + uses DnnEasdfInfoItemGrp; + } + } + + grouping EasdfInfoGrp { + description "This data type represents EASDF specific + data. (See clause 5.4.5.1 of TS 29.571)."; + + list sNssaiEasdfInfoList { + //optional support + description "This attribute represents a list of + parameters supported by the EASDF per + S-NSSAI."; + key idx; + leaf idx { type uint32; } + uses SnssaiEasdfInfoItemGrp; + } + + leaf-list easdfN6IpAddressList { + //optional support + type inet:ip-address; + description "This attribute represents N6 IP + addresses of the EASDF."; + } + + leaf-list upfN6IpAddressList { + //optional support + type inet:ip-address; + description "This attribute represents N6 IP + addresses of PSA UPFs."; + } + } + + grouping EASDFFunctionGrp { + description "Represents the EASDFFunction IOC."; + uses mf3gpp:ManagedFunctionGrp; + + list pLMNId { + description "It defines the PLMN of the EASDF."; + min-elements 1; + max-elements 1; + key "mcc mnc"; + uses types3gpp:PLMNId; + } + + leaf sBIFQDN { + description "The FQDN of the registered NF instance + in the service-based interface."; + type inet:domain-name; + } + + list managedNFProfile { + key idx; + leaf idx { type uint32; } + min-elements 1; + max-elements 1; + description "Profile definition of a Managed NF + (See TS 23.501)."; + uses mnfp3gpp:ManagedNFProfileGrp; + } + + leaf serverAddr { + type string; + mandatory true; + description "This attribute indicates the DNS + server address for the PDU Session + (see clause 6.2.2.2 in TS 23.548)."; + } + + list easdfInfo { + //optional support + description "This attribute represents EASDF + specific data."; + max-elements 1; + key idx; + leaf idx { type uint32; } + uses EasdfInfoGrp; + } + + leaf isOnboardSatellite { + //optional support + type boolean; + default false; + config false; + yext3gpp:inVariant; + description "This attribute indicates whether the + function is on board the satellite."; + } + + leaf onboardSatelliteId { + //optional support + type string { + pattern "[0-9]{5}"; + } + config false; + yext3gpp:inVariant; + description "This attribute indicates the onboard + satellite Id. It shall be formatted as a fixed + 5-digit string, padding with leading digits '0' + to complete a 5-digit length."; + } + } + + augment "/me3gpp:ManagedElement" { + list EASDFFunction { + description "5G Core EASDF Function"; + reference "3GPP TS 28.541"; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses EASDFFunctionGrp; + } + uses mf3gpp:ManagedFunctionContainedClasses; + } + } +} -- GitLab From 10745a2614101a9bb5d02a63eef9a7d51474b405 Mon Sep 17 00:00:00 2001 From: rosabolzek Date: Wed, 6 May 2026 09:13:53 +0200 Subject: [PATCH 30/45] add _3gpp-5gc-nrm-tsctsffunction.yang to aligne with stage2 --- yang-models/_3gpp-5gc-nrm-tsctsffunction.yang | 190 ++++++++++++++++++ 1 file changed, 190 insertions(+) create mode 100755 yang-models/_3gpp-5gc-nrm-tsctsffunction.yang diff --git a/yang-models/_3gpp-5gc-nrm-tsctsffunction.yang b/yang-models/_3gpp-5gc-nrm-tsctsffunction.yang new file mode 100755 index 00000000..58bcfde2 --- /dev/null +++ b/yang-models/_3gpp-5gc-nrm-tsctsffunction.yang @@ -0,0 +1,190 @@ +module _3gpp-5gc-nrm-tsctsffunction { + yang-version 1.1; + namespace urn:3gpp:sa5:_3gpp-5gc-nrm-tsctsffunction; + prefix tsctsf3gpp; + + import _3gpp-common-managed-function { prefix mf3gpp; } + import _3gpp-common-managed-element { prefix me3gpp; } + import _3gpp-5g-common-yang-types { prefix types5g3gpp; } + import _3gpp-common-top { prefix top3gpp; } + import _3gpp-5gc-nrm-managed-nfprofile { prefix mnfp3gpp; } + import ietf-inet-types { prefix inet; } + + organization "3gpp SA5"; + contact + "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; + description "This IOC represents the TSCTSF function in + 5GC. For more information about the TSCTSF, see + TS 23.501. + Copyright 2026, 3GPP Organizational Partners (ARIB, + ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved."; + reference "3GPP TS 28.541"; + + revision 2025-04-25 { reference "CR-"; } + + grouping DnnTsctsfInfoItemGrp { + description "This data type represents set of + parameters supported by TSCTSF for a given DNN. + (See clause 6.1.6.2.93 TS 29.510)."; + + leaf dnn { + type string; + mandatory true; + description "It represents supported DNN or + Wildcard DNN if the TSCTSF supports all DNNs + for the related S-NSSAI. The DNN shall contain + the Network Identifier and it may additionally + contain an Operator Identifier. If the Operator + Identifier is not included, the DNN is supported + for all the PLMNs in the plmnList of the NF + Profile."; + } + } + + grouping SnssaiTsctsfInfoItemGrp { + description "This data type represents set of + parameters supported by TSCTSF for a given + S-NSSAI."; + + list sNssai { + description "This attribute represents a S-NSSAI."; + min-elements 1; + max-elements 1; + key idx; + leaf idx { type uint32; } + uses types5g3gpp:ExtSnssaiGrp; + } + + list dnnInfoList { + description "It represents list of parameters + supported by the TSCTSF per DNN."; + min-elements 1; + key dnn; + uses DnnTsctsfInfoItemGrp; + } + } + + grouping TsctsfInfoGrp { + description "This data type represents the Specific + data for the TSCTSF. + (See clause 6.1.6.2.91 TS 29.510)."; + + list sNssaiInfoList { + //optional support + description "This attribute represents the + S-NSSAIs and DNNs supported by the TSCTSF."; + key idx; + leaf idx { type uint32; } + uses SnssaiTsctsfInfoItemGrp; + } + + list externalGroupIdentifiersRanges { + //optional support + description "This attribute represents the ranges + of External Group Identifiers that can be served + by the TSCTSF. The absence of this IE indicates + that the TSCTSF can serve any external group + managed by the PLMN (or SNPN) of the TSCTSF + instance."; + key idx; + leaf idx { type uint32; } + uses types5g3gpp:IdentityRangeGrp; + } + + list supiRanges { + //optional support + description "This attribute represents the ranges + of SUPIs that can be served by the TSCTSF + instance."; + key idx; + leaf idx { type uint32; } + uses types5g3gpp:SupiRangeGrp; + } + + list gpsiRanges { + //optional support + description "This attribute represents the ranges + of GPSIs that can be served by the TSCTSF + instance."; + key idx; + leaf idx { type uint32; } + uses types5g3gpp:IdentityRangeGrp; + } + + list internalGroupIdentifiersRanges { + //optional support + description "This attribute represents the ranges + of Internal Group Identifiers that can be served + by the TSCTSF instance. The absence of this IE + indicates that the TSCTSF can serve any internal + group managed by the PLMN (or SNPN) of the + TSCTSF instance."; + key idx; + leaf idx { type uint32; } + uses types5g3gpp:InternalGroupIdRangeGrp; + } + } + + grouping TSCTSFFunctionGrp { + description "Represents the TSCTSFFunction IOC."; + uses mf3gpp:ManagedFunctionGrp; + + list pLMNInfoList { + description "It defines the PLMN(s) of a Network + Function."; + key "mcc mnc sd sst"; + min-elements 1; + uses types5g3gpp:PLMNInfo; + } + + leaf sBIFQDN { + description "The FQDN of the registered NF instance + in the service-based interface."; + type inet:domain-name; + } + + list managedNFProfile { + key idx; + leaf idx { type uint32; } + min-elements 1; + max-elements 1; + description "Profile definition of a Managed NF + (See TS 23.501)."; + uses mnfp3gpp:ManagedNFProfileGrp; + } + + list commModelList { + min-elements 1; + key "groupId"; + description "Specifies a list of commModel. It can + be used by NF and NF services to interact with + each other in 5G Core network."; + reference "3GPP TS 23.501"; + uses types5g3gpp:CommModel; + } + + list tsctsfInfo { + //optional support + description "This attribute represents information + of a TSCTSF NF Instance."; + max-elements 1; + key idx; + leaf idx { type uint32; } + uses TsctsfInfoGrp; + } + } + + augment "/me3gpp:ManagedElement" { + list TSCTSFFunction { + description "5G Core TSCTSF Function"; + reference "3GPP TS 28.541"; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses TSCTSFFunctionGrp; + } + uses mf3gpp:ManagedFunctionContainedClasses; + } + } +} -- GitLab From 03bd82631ffb806777e2cddd7a5cdd2dcf8d4b2a Mon Sep 17 00:00:00 2001 From: rosabolzek Date: Thu, 7 May 2026 21:41:33 +0200 Subject: [PATCH 31/45] add _3gpp-5gc-nrm-ddnmffunction.yang to align with stage 2 and openapi --- yang-models/_3gpp-5gc-nrm-ddnmffunction.yang | 78 ++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100755 yang-models/_3gpp-5gc-nrm-ddnmffunction.yang diff --git a/yang-models/_3gpp-5gc-nrm-ddnmffunction.yang b/yang-models/_3gpp-5gc-nrm-ddnmffunction.yang new file mode 100755 index 00000000..cc09739f --- /dev/null +++ b/yang-models/_3gpp-5gc-nrm-ddnmffunction.yang @@ -0,0 +1,78 @@ +module _3gpp-5gc-nrm-ddnmffunction { + yang-version 1.1; + namespace urn:3gpp:sa5:_3gpp-5gc-nrm-ddnmffunction; + prefix ddnmf3gpp; + + import _3gpp-common-managed-function { prefix mf3gpp; } + import _3gpp-common-managed-element { prefix me3gpp; } + import _3gpp-5g-common-yang-types { prefix types5g3gpp; } + import _3gpp-common-yang-types { prefix types3gpp; } + import _3gpp-common-top { prefix top3gpp; } + import _3gpp-5gc-nrm-managed-nfprofile { prefix mnfp3gpp; } + import ietf-inet-types { prefix inet; } + + organization "3gpp SA5"; + contact + "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; + description "This IOC represents the 5G DDNMF function in + 5GC. For more information about the 5G DDNMF, see + TS 23.501. + Copyright 2026, 3GPP Organizational Partners (ARIB, + ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved."; + reference "3GPP TS 28.541"; + + revision 2025-04-25 { reference "CR-"; } + + grouping DDNMFFunctionGrp { + description "Represents the DDNMFFunction IOC."; + uses mf3gpp:ManagedFunctionGrp; + + list pLMNId { + description "The PLMN identifier."; + key "mcc mnc"; + min-elements 1; + max-elements 1; + uses types3gpp:PLMNId; + } + + leaf sBIFQDN { + description "The FQDN of the registered NF instance + in the service-based interface."; + type inet:domain-name; + } + + list managedNFProfile { + key idx; + leaf idx { type uint32; } + min-elements 1; + max-elements 1; + description "Profile definition of a Managed NF + (See TS 23.501)."; + uses mnfp3gpp:ManagedNFProfileGrp; + } + + list commModelList { + min-elements 1; + key "groupId"; + description "Specifies a list of commModel. It can + be used by NF and NF services to interact with + each other in 5G Core network."; + reference "3GPP TS 23.501"; + uses types5g3gpp:CommModel; + } + } + + augment "/me3gpp:ManagedElement" { + list DDNMFFunction { + description "5G Core DDNMF Function"; + reference "3GPP TS 28.541"; + key id; + uses top3gpp:Top_Grp; + container attributes { + uses DDNMFFunctionGrp; + } + uses mf3gpp:ManagedFunctionContainedClasses; + } + } +} -- GitLab From e687dd40b01f983b7093a46f7cf3c5f688e16e18 Mon Sep 17 00:00:00 2001 From: rosabolzek Date: Fri, 8 May 2026 00:09:01 +0200 Subject: [PATCH 32/45] correct eps to aligne qith stage 2 --- yang-models/_3gpp-5gc-nrm-ep.yang | 264 +++++++++++++++++++++++++++--- 1 file changed, 242 insertions(+), 22 deletions(-) diff --git a/yang-models/_3gpp-5gc-nrm-ep.yang b/yang-models/_3gpp-5gc-nrm-ep.yang index f3e58560..3390f73e 100755 --- a/yang-models/_3gpp-5gc-nrm-ep.yang +++ b/yang-models/_3gpp-5gc-nrm-ep.yang @@ -20,9 +20,13 @@ module _3gpp-5gc-nrm-ep { import _3gpp-5gc-nrm-smsffunction { prefix smsf3gpp; } import _3gpp-5gc-nrm-udmfunction { prefix udm3gpp; } import _3gpp-5gc-nrm-upffunction { prefix upf3gpp; } + import _3gpp-5gc-nrm-mbupffunction { prefix mbupf3gpp; } import _3gpp-5gc-nrm-chffunction { prefix chf3gpp; } import _3gpp-5gc-nrm-nsacffunction { prefix nsacf3gpp; } + import _3gpp-5gc-nrm-neffunction { prefix nef3gpp; } import _3gpp-5gc-nrm-nssaaffunction { prefix nssaaf3gpp; } + import _3gpp-5gc-nrm-ddnmffunction { prefix ddnmf3gpp; } + import _3gpp-5gc-nrm-tsctsffunction { prefix tsctsf3gpp; } import _3gpp-common-yang-types { prefix types3gpp; } import _3gpp-common-top { prefix top3gpp; } import ietf-inet-types { prefix inet; } @@ -178,21 +182,14 @@ module _3gpp-5gc-nrm-ep { description "EP_N60 contained under NSACFFunction"; } - feature EP_N58UnderNSSAAFFunction { - description - "EP_N58 contained under NSSAAFFunction"; - } - feature EP_N58UnderAMFFunction { - description "EP_N58 contained under AMFFunction"; - } - feature EP_N59UnderNSSAAFFunction { - description - "EP_N59 contained under NSSAAFFunction"; + feature EP_N19mbUnderMBUPFFunction { + description "EP_N19mb contained under MBUPFFunction"; } - feature EP_N59UnderUDMFunction { - description "EP_N59 contained under UDMFunction"; + feature EP_N19mbUnderUPFFunction { + description "EP_N19mb contained under UPFFunction"; } + // === EP Groupings === grouping EP_N2Grp { @@ -326,12 +323,54 @@ module _3gpp-5gc-nrm-ep { grouping EP_N60Grp { uses eprp3gpp:EP_Common; } + grouping EP_N3mbGrp { + uses eprp3gpp:EP_Common; + } + grouping EP_N19mbGrp { + uses eprp3gpp:EP_Common; + } + grouping EP_N4mbGrp { + uses eprp3gpp:EP_Common; + } + grouping EP_Nmb9Grp { + uses eprp3gpp:EP_Common; + } grouping EP_N58Grp { uses eprp3gpp:EP_Common; } grouping EP_N59Grp { uses eprp3gpp:EP_Common; } + grouping EP_Npc4Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_Npc6Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_Npc7Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_Npc8Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N84Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N85Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N86Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N87Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N89Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N96Grp { + uses eprp3gpp:EP_Common; + } // === Subtree groupings for EPs under 2+ functions === @@ -511,6 +550,14 @@ module _3gpp-5gc-nrm-ep { container attributes { uses EP_N60Grp; } } } + grouping EP_N19mbSubtree { + list EP_N19mb { + description "Represents the EP_N19mb IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_N19mbGrp; } + } + } grouping EP_N58Subtree { list EP_N58 { description "Represents the EP_N58 IOC."; @@ -591,9 +638,6 @@ module _3gpp-5gc-nrm-ep { uses EP_N60Subtree { if-feature EP_N60UnderAMFFunction; } - uses EP_N58Subtree { - if-feature EP_N58UnderAMFFunction; - } } augment "/me3gpp:ManagedElement/ausf3gpp:AUSFFunction" { @@ -738,9 +782,6 @@ module _3gpp-5gc-nrm-ep { uses EP_N13Subtree { if-feature EP_N13UnderUDMFunction; } - uses EP_N59Subtree { - if-feature EP_N59UnderUDMFunction; - } } augment "/me3gpp:ManagedElement/upf3gpp:UPFFunction" { @@ -765,6 +806,33 @@ module _3gpp-5gc-nrm-ep { uses EP_N6Subtree { if-feature EP_N6UnderUPFFunction; } + uses EP_N19mbSubtree { + if-feature EP_N19mbUnderUPFFunction; + } + } + + augment "/me3gpp:ManagedElement/mbupf3gpp:MBUPFFunction" { + list EP_N3mb { + description "Represents the EP_N3mb IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_N3mbGrp; } + } + uses EP_N19mbSubtree { + if-feature EP_N19mbUnderMBUPFFunction; + } + list EP_N4mb { + description "Represents the EP_N4mb IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_N4mbGrp; } + } + list EP_Nmb9 { + description "Represents the EP_Nmb9 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_Nmb9Grp; } + } } augment "/me3gpp:ManagedElement/chf3gpp:CHFFunction" { @@ -786,11 +854,163 @@ module _3gpp-5gc-nrm-ep { } augment "/me3gpp:ManagedElement/nssaaf3gpp:NSSAAFFunction" { - uses EP_N58Subtree { - if-feature EP_N58UnderNSSAAFFunction; + uses EP_N58Subtree; + uses EP_N59Subtree; + } + + augment "/me3gpp:ManagedElement/ddnmf3gpp:DDNMFFunction" { + list EP_Npc4 { + description "Represents the EP_Npc4 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_Npc4Grp; } + } + + list EP_Npc6 { + description "Represents the EP_Npc6 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_Npc6Grp; } + } + + list EP_Npc7 { + description "Represents the EP_Npc7 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_Npc7Grp; } } - uses EP_N59Subtree { - if-feature EP_N59UnderNSSAAFFunction; + + list EP_Npc8 { + description "Represents the EP_Npc8 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_Npc8Grp; } + } + } + + feature EP_N84UnderTSCTSFFunction { + description "EP_N84 contained under TSCTSFFunction"; + } + feature EP_N84UnderPCFFunction { + description "EP_N84 contained under PCFFunction"; + } + feature EP_N85UnderTSCTSFFunction { + description "EP_N85 contained under TSCTSFFunction"; + } + feature EP_N85UnderNEFFunction { + description "EP_N85 contained under NEFFunction"; + } + feature EP_N86UnderTSCTSFFunction { + description "EP_N86 contained under TSCTSFFunction"; + } + feature EP_N86UnderAFFunction { + description "EP_N86 contained under AFFunction"; + } + feature EP_N87UnderTSCTSFFunction { + description "EP_N87 contained under TSCTSFFunction"; + } + feature EP_N87UnderUDMFunction { + description "EP_N87 contained under UDMFunction"; + } + feature EP_N96UnderTSCTSFFunction { + description "EP_N96 contained under TSCTSFFunction"; + } + feature EP_N96UnderNRFFunction { + description "EP_N96 contained under NRFFunction"; + } + + grouping EP_N84Subtree { + list EP_N84 { + description "Represents the EP_N84 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_N84Grp; } + } + } + grouping EP_N85Subtree { + list EP_N85 { + description "Represents the EP_N85 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_N85Grp; } + } + } + grouping EP_N86Subtree { + list EP_N86 { + description "Represents the EP_N86 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_N86Grp; } + } + } + grouping EP_N87Subtree { + list EP_N87 { + description "Represents the EP_N87 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_N87Grp; } + } + } + grouping EP_N96Subtree { + list EP_N96 { + description "Represents the EP_N96 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_N96Grp; } + } + } + + augment "/me3gpp:ManagedElement/tsctsf3gpp:TSCTSFFunction" { + uses EP_N84Subtree { + if-feature EP_N84UnderTSCTSFFunction; + } + uses EP_N85Subtree { + if-feature EP_N85UnderTSCTSFFunction; + } + uses EP_N86Subtree { + if-feature EP_N86UnderTSCTSFFunction; + } + uses EP_N87Subtree { + if-feature EP_N87UnderTSCTSFFunction; + } + list EP_N89 { + description "Represents the EP_N89 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_N89Grp; } + } + uses EP_N96Subtree { + if-feature EP_N96UnderTSCTSFFunction; + } + } + + augment "/me3gpp:ManagedElement/pcf3gpp:PCFFunction" { + uses EP_N84Subtree { + if-feature EP_N84UnderPCFFunction; + } + } + + augment "/me3gpp:ManagedElement/nef3gpp:NEFFunction" { + uses EP_N85Subtree { + if-feature EP_N85UnderNEFFunction; + } + } + + augment "/me3gpp:ManagedElement/af3gpp:AFFunction" { + uses EP_N86Subtree { + if-feature EP_N86UnderAFFunction; + } + } + + augment "/me3gpp:ManagedElement/udm3gpp:UDMFunction" { + uses EP_N87Subtree { + if-feature EP_N87UnderUDMFunction; + } + } + + augment "/me3gpp:ManagedElement/nrf3gpp:NRFFunction" { + uses EP_N96Subtree { + if-feature EP_N96UnderNRFFunction; } } } -- GitLab From e359b1c9bff57b46a36eca9ade2bfaf37b2f2d3a Mon Sep 17 00:00:00 2001 From: lengyelb Date: Mon, 18 May 2026 06:07:07 +0200 Subject: [PATCH 33/45] Edit _3gpp-5gc-nrm-aanffunction.yang --- yang-models/_3gpp-5gc-nrm-aanffunction.yang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yang-models/_3gpp-5gc-nrm-aanffunction.yang b/yang-models/_3gpp-5gc-nrm-aanffunction.yang index ecdc42ec..7ce31e90 100755 --- a/yang-models/_3gpp-5gc-nrm-aanffunction.yang +++ b/yang-models/_3gpp-5gc-nrm-aanffunction.yang @@ -19,7 +19,7 @@ module _3gpp-5gc-nrm-aanffunction { CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 28.541"; - revision 2025-04-25 { reference "CR-"; } + revision 2025-04-25 { reference CR-1702; } grouping AanfInfoGrp { description "This data type represents the Specific -- GitLab From c5e2cef678d1dffc74f801de7626ae7c5b8e9af8 Mon Sep 17 00:00:00 2001 From: "U-ERICSSON\\ETHBLL" Date: Mon, 18 May 2026 12:23:52 +0800 Subject: [PATCH 34/45] Update CR numbers --- yang-models/_3gpp-5gc-nrm-aanffunction.yang | 2 +- yang-models/_3gpp-5gc-nrm-bsffunction.yang | 2 +- yang-models/_3gpp-5gc-nrm-dccffunction.yang | 2 +- yang-models/_3gpp-5gc-nrm-ddnmffunction.yang | 2 +- yang-models/_3gpp-5gc-nrm-easdffunction.yang | 2 +- yang-models/_3gpp-5gc-nrm-ep.yang | 1 + yang-models/_3gpp-5gc-nrm-mbupffunction.yang | 2 +- yang-models/_3gpp-5gc-nrm-mfaffunction.yang | 2 +- yang-models/_3gpp-5gc-nrm-tsctsffunction.yang | 2 +- yang-models/_3gpp-nr-nrm-gnbcucpfunction.yang | 2 +- 10 files changed, 10 insertions(+), 9 deletions(-) diff --git a/yang-models/_3gpp-5gc-nrm-aanffunction.yang b/yang-models/_3gpp-5gc-nrm-aanffunction.yang index 7ce31e90..c440c944 100755 --- a/yang-models/_3gpp-5gc-nrm-aanffunction.yang +++ b/yang-models/_3gpp-5gc-nrm-aanffunction.yang @@ -19,7 +19,7 @@ module _3gpp-5gc-nrm-aanffunction { CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 28.541"; - revision 2025-04-25 { reference CR-1702; } + revision 2026-04-25 { reference CR-1702; } grouping AanfInfoGrp { description "This data type represents the Specific diff --git a/yang-models/_3gpp-5gc-nrm-bsffunction.yang b/yang-models/_3gpp-5gc-nrm-bsffunction.yang index 32196e91..51551d83 100755 --- a/yang-models/_3gpp-5gc-nrm-bsffunction.yang +++ b/yang-models/_3gpp-5gc-nrm-bsffunction.yang @@ -20,7 +20,7 @@ module _3gpp-5gc-nrm-bsffunction { CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 28.541"; - revision 2025-04-25 { reference "CR-"; } + revision 2026-04-25 { reference CR-1702; } grouping BsfInfoGrp { description "This data type represents the Specific diff --git a/yang-models/_3gpp-5gc-nrm-dccffunction.yang b/yang-models/_3gpp-5gc-nrm-dccffunction.yang index 56c3a7c7..47695422 100755 --- a/yang-models/_3gpp-5gc-nrm-dccffunction.yang +++ b/yang-models/_3gpp-5gc-nrm-dccffunction.yang @@ -20,7 +20,7 @@ module _3gpp-5gc-nrm-dccffunction { CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 28.541"; - revision 2025-04-25 { reference "CR-"; } + revision 2026-04-25 { reference CR-1702; } grouping DccfInfoGrp { description "This data type represents the Specific diff --git a/yang-models/_3gpp-5gc-nrm-ddnmffunction.yang b/yang-models/_3gpp-5gc-nrm-ddnmffunction.yang index cc09739f..990b3a9c 100755 --- a/yang-models/_3gpp-5gc-nrm-ddnmffunction.yang +++ b/yang-models/_3gpp-5gc-nrm-ddnmffunction.yang @@ -22,7 +22,7 @@ module _3gpp-5gc-nrm-ddnmffunction { All rights reserved."; reference "3GPP TS 28.541"; - revision 2025-04-25 { reference "CR-"; } + revision 2026-04-25 { reference CR-1702; } grouping DDNMFFunctionGrp { description "Represents the DDNMFFunction IOC."; diff --git a/yang-models/_3gpp-5gc-nrm-easdffunction.yang b/yang-models/_3gpp-5gc-nrm-easdffunction.yang index c7a44d8f..0c86824e 100755 --- a/yang-models/_3gpp-5gc-nrm-easdffunction.yang +++ b/yang-models/_3gpp-5gc-nrm-easdffunction.yang @@ -25,7 +25,7 @@ module _3gpp-5gc-nrm-easdffunction { All rights reserved."; reference "3GPP TS 28.541"; - revision 2025-04-25 { reference "CR-"; } + revision 2026-04-25 { reference CR-1702; } grouping DnnEasdfInfoItemGrp { description "This data type represents parameters diff --git a/yang-models/_3gpp-5gc-nrm-ep.yang b/yang-models/_3gpp-5gc-nrm-ep.yang index 3390f73e..56a2c111 100755 --- a/yang-models/_3gpp-5gc-nrm-ep.yang +++ b/yang-models/_3gpp-5gc-nrm-ep.yang @@ -40,6 +40,7 @@ module _3gpp-5gc-nrm-ep { TTA, TTC). All rights reserved."; reference "3GPP TS 28.541"; + revision 2026-04-25 { reference CR-1702; } revision 2025-07-25 { reference CR-1558 ; } revision 2024-08-19 { reference CR-1314 ; } revision 2023-09-18 { reference CR-1043 ; } diff --git a/yang-models/_3gpp-5gc-nrm-mbupffunction.yang b/yang-models/_3gpp-5gc-nrm-mbupffunction.yang index 39b3a161..b4f51507 100644 --- a/yang-models/_3gpp-5gc-nrm-mbupffunction.yang +++ b/yang-models/_3gpp-5gc-nrm-mbupffunction.yang @@ -20,7 +20,7 @@ module _3gpp-5gc-nrm-mbupffunction { TTA, TTC). All rights reserved."; reference "3GPP TS 28.541"; - revision 2026-04-26 { reference "CR-xxxx CR-yyyy" ; } // common in r19, r20 + revision 2026-04-26 { reference "CR-1702 CR-1703" ; } // common in r19, r20 grouping MbUpfInfoGrp { description "represents the data type MnpfInfoGrp."; diff --git a/yang-models/_3gpp-5gc-nrm-mfaffunction.yang b/yang-models/_3gpp-5gc-nrm-mfaffunction.yang index 0e8dd6fd..39291ca4 100755 --- a/yang-models/_3gpp-5gc-nrm-mfaffunction.yang +++ b/yang-models/_3gpp-5gc-nrm-mfaffunction.yang @@ -20,7 +20,7 @@ module _3gpp-5gc-nrm-mfaffunction { CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 28.541"; - revision 2025-04-25 { reference "CR-"; } + revision 2026-04-25 { reference CR-1702; } grouping MfafInfoGrp { description "This data type represents the Specific diff --git a/yang-models/_3gpp-5gc-nrm-tsctsffunction.yang b/yang-models/_3gpp-5gc-nrm-tsctsffunction.yang index 58bcfde2..14831cbc 100755 --- a/yang-models/_3gpp-5gc-nrm-tsctsffunction.yang +++ b/yang-models/_3gpp-5gc-nrm-tsctsffunction.yang @@ -21,7 +21,7 @@ module _3gpp-5gc-nrm-tsctsffunction { All rights reserved."; reference "3GPP TS 28.541"; - revision 2025-04-25 { reference "CR-"; } + revision 2026-04-25 { reference CR-1702; } grouping DnnTsctsfInfoItemGrp { description "This data type represents set of diff --git a/yang-models/_3gpp-nr-nrm-gnbcucpfunction.yang b/yang-models/_3gpp-nr-nrm-gnbcucpfunction.yang index d0fee672..ef4324b1 100755 --- a/yang-models/_3gpp-nr-nrm-gnbcucpfunction.yang +++ b/yang-models/_3gpp-nr-nrm-gnbcucpfunction.yang @@ -20,7 +20,7 @@ module _3gpp-nr-nrm-gnbcucpfunction { TTA, TTC). All rights reserved."; reference "3GPP TS 28.541 5G Network Resource Model (NRM)"; - revision 2026-04-25 { reference "CR-xxxx" ; } + revision 2026-04-25 { reference "CR-1702" ; } revision 2025-05-25 { reference "CR-1527" ; } revision 2025-05-07 { reference "CR-1548"; } revision 2025-03-25 { reference "CR-1509"; } -- GitLab From fee5681aa631c4bcfb9682f310317df955b4c3c6 Mon Sep 17 00:00:00 2001 From: "U-ERICSSON\\ETHBLL" Date: Mon, 18 May 2026 15:22:50 +0800 Subject: [PATCH 35/45] update-1 --- yang-models/_3gpp-nr-nrm-gnbcuupfunction.yang | 20 +++++++++++++- yang-models/_3gpp-nr-nrm-nrcelldu.yang | 22 +++++++++++++-- yang-models/_3gpp-nr-nrm-nrcellrelation.yang | 27 ++++++++++++++++++- yang-models/_3gpp-nr-nrm-nrfreqrelation.yang | 5 ++-- 4 files changed, 68 insertions(+), 6 deletions(-) diff --git a/yang-models/_3gpp-nr-nrm-gnbcuupfunction.yang b/yang-models/_3gpp-nr-nrm-gnbcuupfunction.yang index 4238ccf3..531c338b 100755 --- a/yang-models/_3gpp-nr-nrm-gnbcuupfunction.yang +++ b/yang-models/_3gpp-nr-nrm-gnbcuupfunction.yang @@ -15,10 +15,11 @@ module _3gpp-nr-nrm-gnbcuupfunction { contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; description "Defines the YANG mapping of the GNBCUUPFunction Information Object Class (IOC) that is part of the NR Network Resource Model (NRM). - Copyright 2024, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 28.541 5G Network Resource Model (NRM)"; + revision 2026-04-25 { reference CR-1703; } revision 2024-11-01 { reference CR-1405 ; } revision 2024-05-24 { reference CR-1273 ; } revision 2023-09-18 { reference CR-1043 ; } @@ -79,6 +80,23 @@ module _3gpp-nr-nrm-gnbcuupfunction { key "mcc mnc sd sst"; uses types5g3gpp:PLMNInfo; } + + leaf isOnboardSatellite { + type boolean; + default false; + config false; + yext3gpp:inVariant; + description "This attribute indicates whether the function is + on board the satellite."; + } + leaf onboardSatelliteId { + type string; + config false; + yext3gpp:inVariant; + description "This attribute indicates the onboard satellite Id. + It shall be formatted as a fixed 5-digit string, padding with + leading digits '0' to complete a 5-digit length."; + } leaf configurable5QISetRef { type types3gpp:DistinguishedName; diff --git a/yang-models/_3gpp-nr-nrm-nrcelldu.yang b/yang-models/_3gpp-nr-nrm-nrcelldu.yang index a6b8fd77..8b2c751e 100755 --- a/yang-models/_3gpp-nr-nrm-nrcelldu.yang +++ b/yang-models/_3gpp-nr-nrm-nrcelldu.yang @@ -19,7 +19,8 @@ module _3gpp-nr-nrm-nrcelldu { TTA, TTC). All rights reserved."; reference "3GPP TS 28.541 5G Network Resource Model (NRM)"; - revision 2025-11-07 { reference "CR-1640 CR-1643"; } // common for r19, r20 + revision 2026-05-19 { reference CR-1702 ; } + revision 2025-11-07 { reference "CR-1640 CR-1643"; } revision 2025-07-25 { reference CR-1558 ; } revision 2025-02-07 { reference CR-1442; } revision 2024-05-25 { reference CR-1412 ; } @@ -340,6 +341,23 @@ module _3gpp-nr-nrm-nrcelldu { units MHz; } + leaf-list uECellBarredAccess { + type enumeration { + enum REDCAP_1RX; + enum REDCAP_2RX; + enum EREDCAP_1RX; + enum EREDCAP_2RX; + } + description "Represents whether the NR Cell bars access to a UE type + (e.g. RedCap UE). + If present, a value indicates the UE type is not allowed access to + the cell. + allowedValues: + - REDCAP_1RX and REDCAP_2RX for RedCap UE(s), + - EREDCAP_1RX and EREDCAP_2RX for eRedCap UE(s)."; + reference "TS 38.331"; + } + leaf-list nRSectorCarrierRef { description "This attribute contains the DN of the referenced NRSectorCarrier."; @@ -356,7 +374,7 @@ module _3gpp-nr-nrm-nrcelldu { type types3gpp:DistinguishedName; } - leaf-list nRFrequencyRef { + leaf nRFrequencyRef { description "Reference to corresponding NRFrequency instance."; type types3gpp:DistinguishedName; } diff --git a/yang-models/_3gpp-nr-nrm-nrcellrelation.yang b/yang-models/_3gpp-nr-nrm-nrcellrelation.yang index 67d76432..b89915d7 100755 --- a/yang-models/_3gpp-nr-nrm-nrcellrelation.yang +++ b/yang-models/_3gpp-nr-nrm-nrcellrelation.yang @@ -12,10 +12,11 @@ module _3gpp-nr-nrm-nrcellrelation { organization "3GPP SA5"; description "Defines the YANG mapping of the NRCellRelation Information Object Class (IOC) that is part of the NR Network Resource Model (NRM). - Copyright 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 28.541 5G Network Resource Model (NRM)"; + revision 2026-05-19 { reference CR-1702 ; } revision 2023-09-18 { reference CR-1043 ; } revision 2023-04-26 { reference CR-0916; } revision 2021-01-25 { reference CR-0454 ; } @@ -127,6 +128,30 @@ module _3gpp-nr-nrm-nrcellrelation { changed to energy saving state."; type EnergySavingCoverage; } + + leaf isENDCAllowed { + type boolean; + mandatory true; + description "This indicates if EN-DC is allowed or prohibited. + If TRUE, the target cell is allowed to be used for EN-DC. The target + cell is referenced by the NRCellRelation that contains this isENDCAllowed. + If FALSE, EN-DC shall not be allowed."; + } + + leaf isMLBAllowed { + type boolean; + mandatory true; + description "This indicates if mobility load balancing is allowed or + prohibited from source cell to target cell. + If TRUE, load balancing is allowed from source cell to target cell. + The source cell is identified by the name-containing NRCellCU of the + NRCellRelation that contains the isMLBAllowed. The target cell is + referenced by the NRCellRelation that contains this isLBAllowed. In + case of isHOAllowed is FALSE, mobility load balancing is prohibited by + handover from source cell to target cell. + If FALSE, load balancing shall be prohibited from source cell to target + cell."; + } } augment /me3gpp:ManagedElement/gnbcucp3gpp:GNBCUCPFunction/nrcellcu3gpp:NRCellCU { diff --git a/yang-models/_3gpp-nr-nrm-nrfreqrelation.yang b/yang-models/_3gpp-nr-nrm-nrfreqrelation.yang index 9a80eddf..b7b634a2 100755 --- a/yang-models/_3gpp-nr-nrm-nrfreqrelation.yang +++ b/yang-models/_3gpp-nr-nrm-nrfreqrelation.yang @@ -14,10 +14,11 @@ module _3gpp-nr-nrm-nrfreqrelation { contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; description "Defines the YANG mapping of the NRFreqRelation Information Object Class (IOC) that is part of the NR Network Resource Model (NRM). - Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 28.541 5G Network Resource Model (NRM)"; + revision 2026-05-19 { reference CR-1702; } revision 2025-11-07 { reference CR-1640; } revision 2025-01-25 { reference CR-1442; } revision 2024-02-24 { reference CR-1218; } @@ -205,7 +206,7 @@ module _3gpp-nr-nrm-nrfreqrelation { units dB; } - leaf tReselectionNR { + leaf tReselectionNr { description "Cell reselection timer for NR."; reference "TreselectionRAT for NR in 3GPP TS 38.331"; mandatory true; -- GitLab From 3bb944a47de0509b13267f6a17a5118483f5ab2a Mon Sep 17 00:00:00 2001 From: "U-ERICSSON\\ETHBLL" Date: Mon, 18 May 2026 18:38:01 +0800 Subject: [PATCH 36/45] attribute corrections-2 --- yang-models/_3gpp-nr-nrm-ecmappingrule.yang | 20 ++++++++++++-------- yang-models/_3gpp-nr-nrm-nrfrequency.yang | 7 ++++--- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/yang-models/_3gpp-nr-nrm-ecmappingrule.yang b/yang-models/_3gpp-nr-nrm-ecmappingrule.yang index 629b5dee..0dc27040 100644 --- a/yang-models/_3gpp-nr-nrm-ecmappingrule.yang +++ b/yang-models/_3gpp-nr-nrm-ecmappingrule.yang @@ -9,31 +9,35 @@ module _3gpp-nr-nrm-ecmappingrule { contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; description "This IOC represents the unified mapping rule input to support Energy Cost Index Mapping when Energy Cost Reporting. - Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 28.541"; - revision 2025-05-06 { reference "CR-1526 CR-1527" ; } // common for R18, R19 + revision 2026-05-19 { reference "CR-1702 CR-1703" ; } // common for R19, R20 + revision 2025-05-06 { reference "CR-1526 CR-1527" ; } revision 2024-08-12 { reference "CR-1336 CR-1337"; } grouping NRECMappingRuleGrp { description "Represents the unified mapping rule to support Energy Cost Mapping when Energy Cost Reporting is supported. Can be name-contained by SubNetwork or ManagedElement. It applies to all ManagedEntity contained by the parent."; - leaf eCMRInputMinValue { - type uint8; + leaf ecMRInputMinimumValue { + type uint32; + mandatory true; description "The minimum value of to be applied for mapping from this attribute to the energy cost."; } - leaf eCMRInputMaxValue { - type uint8; + leaf ecMRInputMaximumValue { + type uint32; + mandatory true; description "The maximum value of to be applied for mapping from this attribute to the energy cost."; } - leaf eCTimeInterval { - type uint8; + leaf ecTimeInterval { + type uint32; + mandatory true; description "Time interval (in seconds) that should be applied for collecting values of mapping rule attribute to be used for computing the energy cost."; diff --git a/yang-models/_3gpp-nr-nrm-nrfrequency.yang b/yang-models/_3gpp-nr-nrm-nrfrequency.yang index 39f3795a..8a13796c 100755 --- a/yang-models/_3gpp-nr-nrm-nrfrequency.yang +++ b/yang-models/_3gpp-nr-nrm-nrfrequency.yang @@ -13,11 +13,12 @@ module _3gpp-nr-nrm-nrfrequency { contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; description "Defines the YANG mapping of the NRFrequency Information Object Class (IOC) that is part of the NR Network Resource Model (NRM). - Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 28.541 5G Network Resource Model (NRM)"; - revision 2025-04-25 { reference "CR-1526 CR-1527"; } // common for r18, r19 + revision 2026-05-19 { reference "CR-1702 CR-1703"; } // common for r19, r20 + revision 2025-04-25 { reference "CR-1526 CR-1527"; } revision 2023-09-18 { reference CR-1043 ; } revision 2019-10-28 { reference S5-193518 ; } revision 2019-06-17 { reference "Initial version"; } @@ -32,7 +33,7 @@ module _3gpp-nr-nrm-nrfrequency { type uint32 { range "0.. 3279165"; } } - leaf ssBSubCarrierSpacing { + leaf ssbSubCarrierSpacing { description "Sub-carrier spacing of the SSB. Note that the allowed values of SSB used for representing data, by e.g. a BWP, are: 15, 30, 60 and 120 in units of kHz."; -- GitLab From c8b43859331a4b5aee21f9fd959bf59e909ed4b5 Mon Sep 17 00:00:00 2001 From: "U-ERICSSON\\ETHBLL" Date: Tue, 19 May 2026 00:04:32 +0800 Subject: [PATCH 37/45] attribute corrections-3 --- yang-models/_3gpp-5gc-nrm-gmlcfunction.yang | 176 +++++++++--------- yang-models/_3gpp-nr-nrm-gnbcucpfunction.yang | 2 +- yang-models/_3gpp-nr-nrm-rimrsset.yang | 17 +- 3 files changed, 101 insertions(+), 94 deletions(-) diff --git a/yang-models/_3gpp-5gc-nrm-gmlcfunction.yang b/yang-models/_3gpp-5gc-nrm-gmlcfunction.yang index b44dd211..59c37386 100644 --- a/yang-models/_3gpp-5gc-nrm-gmlcfunction.yang +++ b/yang-models/_3gpp-5gc-nrm-gmlcfunction.yang @@ -13,109 +13,111 @@ module _3gpp-5gc-nrm-gmlcfunction { organization "3GPP SA5"; contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; description "This module defines the GMLC Function IOC per 3GPP TS 28.541. - Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 28.541"; - revision 2025-07-25 { reference CR-1558 ; } - revision 2025-03-25 { reference CR-1489 ; } - revision 2025-03-25 { + revision 2026-05-19 { reference "CR-1702 CR-1703" ; } // rel-19, 20 common + revision 2025-07-25 { reference CR-1558 ; } + revision 2025-03-25 { reference CR-1489 ; } + revision 2025-03-25 { description "Initial revision."; reference "3GPP TS 28.541"; } - grouping GmlcInfoGrp { - description "Information of a GMLC NF Instance (see TS 29.510, - clause 6.1.6.2.41)."; + grouping GmlcInfoGrp { + description "Information of a GMLC NF Instance (see TS 29.510, + clause 6.1.6.2.41)."; - leaf servingClientTypes { - description "Identity of the GMLC group that is served by - the GMLC instance."; - type enumeration { - enum EMERGENCY_SERVICES { - description "External client for emergency services"; - } - enum VALUE_ADDED_SERVICES { - description "External client for value added services"; - } - enum PLMN_OPERATOR_SERVICES { - description "External client for PLMN operator services"; - } - enum LAWFUL_INTERCEPT_SERVICES { - description "External client for Lawful Intercept services"; - } - enum EXTERNAL_CLIENT_FOR_LAWFUL_INTERCEPT_SERVICES { - description "External client for PLMN Operator Broadcast - services"; - } - enum PLMN_OPERATOR_OM { - description "External client for PLMN Operator O&M"; - } - enum PLMN_OPERATOR_ANONYMOUS_STATISTICS { - description "External client for PLMN Operator anonymous - statistics"; - } - enum PLMN_OPERATOR_TARGET_MS_SERVICE_SUPPORT { - description "External client for PLMN Operator target MS - service support"; - } - } + leaf servingClientTypes { + description "Identity of the GMLC group that is served by + the GMLC instance."; + type enumeration { + enum EMERGENCY_SERVICES { + description "External client for emergency services"; + } + enum VALUE_ADDED_SERVICES { + description "External client for value added services"; + } + enum PLMN_OPERATOR_SERVICES { + description "External client for PLMN operator services"; + } + enum LAWFUL_INTERCEPT_SERVICES { + description "External client for Lawful Intercept services"; + } + enum EXTERNAL_CLIENT_FOR_LAWFUL_INTERCEPT_SERVICES { + description "External client for PLMN Operator Broadcast + services"; + } + enum PLMN_OPERATOR_OM { + description "External client for PLMN Operator O&M"; + } + enum PLMN_OPERATOR_ANONYMOUS_STATISTICS { + description "External client for PLMN Operator anonymous + statistics"; + } + enum PLMN_OPERATOR_TARGET_MS_SERVICE_SUPPORT { + description "External client for PLMN Operator target MS + service support"; + } + } - } - leaf gmlcNumbers{ - type string{ - pattern "^[0-9]{5,15}$"; - } - description "This attribute represents each item of the array - shall carry an OctetString indicating the ISDN number of the GMLC in - international number format as described in ITU-T Rec. E.164 [94] and - shall be encoded as a TBCD-string."; + } + leaf gmlcNumbers{ + type string{ + pattern "^[0-9]{5,15}$"; + } + description "This attribute represents each item of the array + shall carry an OctetString indicating the ISDN number of the GMLC in + international number format as described in ITU-T Rec. E.164 [94] and + shall be encoded as a TBCD-string."; - } - } + } + } - grouping GMLCFunctionGrp { + grouping GMLCFunctionGrp { description "GMLC Function IOC grouping."; uses mf3gpp:ManagedFunctionGrp; - list pLMNInfoList { - description "It defines the PLMN(s) of a Network Function. "; - key "idx"; - leaf idx { type uint32; } - min-elements 1; - uses types3gpp:PLMNId; - } - leaf sBIFqdn { - type string; - description "FQDN of the registered NF instance in the - service-based interface."; - } - list managedNFProfile { - description "This parameter defines profile for managed NF. - See TS 23.501"; - key idx; + list pLMNInfoList { + description "It defines the PLMN(s) of a Network Function. "; + key "idx"; leaf idx { type uint32; } min-elements 1; - uses mnfp3gpp:ManagedNFProfileGrp; - } - list commModelList { - description "The attribute specifies a list of commModel which is - defined as a datatype (see clause 5.3.69). It can be used by NF - and NF services to interact with each other in 5G Core network "; - reference "see TS 23.501."; - key "groupId"; - min-elements 1; - uses types5g3gpp:CommModel; - } - list gmlcInfo { - description "This attribute represents information of an GMLC NF - Instance."; - key "idx"; - leaf idx { type uint32; } - max-elements 1; - uses GmlcInfoGrp; - } - } + uses types3gpp:PLMNId; + } + leaf sBIFQDN { + type string; + description "FQDN of the registered NF instance in the + service-based interface."; + } + list managedNFProfile { + description "This parameter defines profile for managed NF. + See TS 23.501"; + key idx; + leaf idx { type uint32; } + min-elements 1; + uses mnfp3gpp:ManagedNFProfileGrp; + } + list commModelList { + description "The attribute specifies a list of commModel which is + defined as a datatype (see clause 5.3.69). It can be used by NF + and NF services to interact with each other in 5G Core network "; + reference "see TS 23.501."; + key "groupId"; + min-elements 1; + uses types5g3gpp:CommModel; + } + list gmlcInfo { + description "This attribute represents information of an GMLC NF + Instance."; + key "idx"; + leaf idx { type uint32; } + max-elements 1; + uses GmlcInfoGrp; + } + } + augment "/me3gpp:ManagedElement" { list GMLCFunction { description "5G Core LMF Function defined in TS 23.501"; diff --git a/yang-models/_3gpp-nr-nrm-gnbcucpfunction.yang b/yang-models/_3gpp-nr-nrm-gnbcucpfunction.yang index ef4324b1..0a029c4b 100755 --- a/yang-models/_3gpp-nr-nrm-gnbcucpfunction.yang +++ b/yang-models/_3gpp-nr-nrm-gnbcucpfunction.yang @@ -394,7 +394,7 @@ module _3gpp-nr-nrm-gnbcucpfunction { grouping GeNBIdGrp { description "Represents the properties of a global eNB ID (GeNBId)."; - uses types3gpp:PLMNId; + uses types3gpp:PLMNId; // missing list wrapper, omitted due to BC leaf enbId { description "It identifies an eNB within a PLMN. The eNB ID is part of diff --git a/yang-models/_3gpp-nr-nrm-rimrsset.yang b/yang-models/_3gpp-nr-nrm-rimrsset.yang index 69caf25e..b04141cc 100755 --- a/yang-models/_3gpp-nr-nrm-rimrsset.yang +++ b/yang-models/_3gpp-nr-nrm-rimrsset.yang @@ -11,10 +11,11 @@ module _3gpp-nr-nrm-rimrsset { contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; description "Defines the YANG mapping of the RimRSSet Information Object Class (IOC) that is part of the NR Network Resource Model (NRM). - Copyright 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 28.541 5G Network Resource Model (NRM)"; + revision 2026-05-19 { reference "CR-1702 CR-1703"; } // rel-19, 20 common revision 2023-09-18 { reference CR-1043 ; } revision 2021-10-28 { reference CR-0607 ; } @@ -59,11 +60,15 @@ module _3gpp-nr-nrm-rimrsset { network (N_f^RIM ) (see 38.211 subclause 7.4.1.6)."; } - leaf-list rimRSCommonCarrierReferencePoint { - type int32 ; + leaf rimRSCommonCarrierReferencePoint { + type int32 { range 0..3279165 ; } + mandatory true; + description "This attribute is used to configure the common reference + point for RIM RS. Where represents the frequency-location of point A + expressed as in ARFCN. See 3GPP TS 38.211 subclause 4.4.4.2"; } - leaf rimRSStartingFrequencyOffsetIdList { + leaf-list rimRSStartingFrequencyOffsetIdList { type uint32 { range 0..550; } @@ -152,7 +157,7 @@ module _3gpp-nr-nrm-rimrsset { (see 38.211 subclause 7.4.1.6)"; } - leaf RIMRSScrambleTimerMultiplier { + leaf rIMRSScrambleTimerMultiplier { type uint32 { range 0..2147483647; } @@ -163,7 +168,7 @@ module _3gpp-nr-nrm-rimrsset { allowedValues: 0,1...2^31-1"; } - leaf RIMRSScrambleTimerOffset { + leaf rIMRSScrambleTimerOffset { type uint32 { range 0..2147483647; } -- GitLab From 52f9bcc60563bdcac478f2a712267b69222b550d Mon Sep 17 00:00:00 2001 From: rosabolzek Date: Tue, 19 May 2026 12:11:17 +0200 Subject: [PATCH 38/45] add EP_Nmb1 to align with stage 2 --- yang-models/_3gpp-5gc-nrm-ep.yang | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/yang-models/_3gpp-5gc-nrm-ep.yang b/yang-models/_3gpp-5gc-nrm-ep.yang index 56a2c111..02954068 100755 --- a/yang-models/_3gpp-5gc-nrm-ep.yang +++ b/yang-models/_3gpp-5gc-nrm-ep.yang @@ -21,6 +21,7 @@ module _3gpp-5gc-nrm-ep { import _3gpp-5gc-nrm-udmfunction { prefix udm3gpp; } import _3gpp-5gc-nrm-upffunction { prefix upf3gpp; } import _3gpp-5gc-nrm-mbupffunction { prefix mbupf3gpp; } + import _3gpp-5gc-nrm-mbsmffunction { prefix mbsmf3gpp; } import _3gpp-5gc-nrm-chffunction { prefix chf3gpp; } import _3gpp-5gc-nrm-nsacffunction { prefix nsacf3gpp; } import _3gpp-5gc-nrm-neffunction { prefix nef3gpp; } @@ -336,6 +337,9 @@ module _3gpp-5gc-nrm-ep { grouping EP_Nmb9Grp { uses eprp3gpp:EP_Common; } + grouping EP_Nmb1Grp { + uses eprp3gpp:EP_Common; + } grouping EP_N58Grp { uses eprp3gpp:EP_Common; } @@ -836,6 +840,17 @@ module _3gpp-5gc-nrm-ep { } } + augment "/me3gpp:ManagedElement/mbsmf3gpp:MBSMFFunction" { + list EP_Nmb1 { + description "This IOC represents the Nmb1 interface + between MB-SMF and MBSF, which is defined in + TS 23.247."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_Nmb1Grp; } + } + } + augment "/me3gpp:ManagedElement/chf3gpp:CHFFunction" { uses EP_N40Subtree { if-feature EP_N40UnderCHFFunction; -- GitLab From ba19ebadce60cb6cb6e5abfbfbf83c594334ea13 Mon Sep 17 00:00:00 2001 From: rosabolzek Date: Tue, 19 May 2026 17:32:08 +0200 Subject: [PATCH 39/45] aligne ep iocs --- yang-models/_3gpp-5gc-nrm-ep.yang | 730 +++++++++++++++++++++++------- 1 file changed, 573 insertions(+), 157 deletions(-) diff --git a/yang-models/_3gpp-5gc-nrm-ep.yang b/yang-models/_3gpp-5gc-nrm-ep.yang index 02954068..d9c137b5 100755 --- a/yang-models/_3gpp-5gc-nrm-ep.yang +++ b/yang-models/_3gpp-5gc-nrm-ep.yang @@ -8,7 +8,6 @@ module _3gpp-5gc-nrm-ep { import _3gpp-5gc-nrm-affunction { prefix af3gpp; } import _3gpp-5gc-nrm-amffunction { prefix amf3gpp; } import _3gpp-5gc-nrm-ausffunction { prefix ausf3gpp; } - import _3gpp-5gc-nrm-dnfunction { prefix dn3gpp; } import _3gpp-5gc-nrm-lmffunction { prefix lmf3gpp; } import _3gpp-5gc-nrm-n3iwffunction { prefix n3iwf3gpp; } import _3gpp-5gc-nrm-ngeirfunction { prefix ngeir3gpp; } @@ -31,6 +30,13 @@ module _3gpp-5gc-nrm-ep { import _3gpp-common-yang-types { prefix types3gpp; } import _3gpp-common-top { prefix top3gpp; } import ietf-inet-types { prefix inet; } + import _3gpp-5gc-nrm-nwdaffunction { prefix nwdaf3gpp; } + import _3gpp-5gc-nrm-scpfunction {prefix scp3gpp;} + import _3gpp-5gc-nrm-aanffunction {prefix aanf3gpp;} + import _3gpp-5gc-nrm-easdffunction {prefix easdf3gpp;} + import _3gpp-5gc-nrm-gmlcfunction {prefix gmlc3gpp;} + + organization "3GPP SA5"; contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; @@ -74,8 +80,23 @@ module _3gpp-5gc-nrm-ep { feature EP_N5UnderPCFFunction { description "EP_N5 contained under PCFFunction"; } - feature EP_N6UnderDNFunction { - description "EP_N6 contained under DNFunction"; + feature EP_N61UnderAUSFFunction { + description "EP_N61 contained under AUSFFunction"; + } + feature EP_N61UnderAANFFunction { + description "EP_N61 contained under AANFFunction"; + } + feature EP_N62UnderAFFunction { + description "EP_N62 contained under AFFunction"; + } + feature EP_N62UnderAANFFunction { + description "EP_N62 contained under AANFFunction"; + } + feature EP_N63UnderNEFFunction { + description "EP_N63 contained under NEFFunction"; + } + feature EP_N63UnderAANFFunction { + description "EP_N63 contained under AANFFunction"; } feature EP_N6UnderUPFFunction { description "EP_N6 contained under UPFFunction"; @@ -132,8 +153,7 @@ module _3gpp-5gc-nrm-ep { description "EP_N17 contained under AMFFunction"; } feature EP_N17UnderNGEIRFunction { - description - "EP_N17 contained under NGEIRFunction"; + description "EP_N17 contained under NGEIRFunction"; } feature EP_N20UnderAMFFunction { description "EP_N20 contained under AMFFunction"; @@ -147,11 +167,89 @@ module _3gpp-5gc-nrm-ep { feature EP_N22UnderNSSFFunction { description "EP_N22 contained under NSSFFunction"; } - feature EP_NLSUnderAMFFunction { - description "EP_NLS contained under AMFFunction"; + feature EP_NL1UnderAMFFunction { + description "EP_NL1 contained under AMFFunction"; + } + feature EP_NL1UnderLMFFunction { + description "EP_NL1 contained under LMFFunction"; + } + feature EP_NL6UnderGMLCFunction { + description "EP_NL6 contained under GMLCFunction"; + } + feature EP_NL6UnderUDMFunction { + description "EP_NL6 contained under UDMFunction"; + } + feature EP_NL9UnderGMLCFunction { + description "EP_NL9 contained under GMLCFunction"; + } + feature EP_NL9UnderNWDAFFunction { + description "EP_NL9 contained under NWDAFFunction"; + } + feature EP_N34UnderNSSFFunction { + description "EP_N34 contained under NSSFFunction"; + } + feature EP_N34UnderNWDAFFunction { + description "EP_N34 contained under NWDAFFunction"; + } + feature EP_NL2UnderGMLCFunction { + description "EP_NL2 contained under GMLCFunction"; + } + feature EP_NL2UnderAMFFunction { + description "EP_NL2 contained under AMFFunction"; + } + feature EP_N26UnderAMFFunction { + description "EP_N26 contained under AMFFunction"; + } + feature EP_N26UnderMMEFunction { + description "EP_N26 contained under MMEFunction"; + } + feature EP_N89UnderAMFFunction { + description "EP_N89 contained under AMFFunction"; + } + feature EP_N89UnderTSCTSFFunction { + description "EP_N89 contained under TSCTSFFunction"; + } + feature EP_N11mbUnderAMFFunction { + description "EP_N11mb contained under AMFFunction"; + } + feature EP_N11mbUnderMBSMFFunction { + description "EP_N11mb contained under MBSMFFunction"; + } + feature EP_N88UnderSMFFunction { + description "EP_N88 contained under SMFFunction"; + } + feature EP_N88UnderEASDFFunction { + description "EP_N88 contained under EASDFFunction"; + } + feature EP_N16mbUnderSMFFunction { + description "EP_N16mb contained under SMFFunction"; + } + feature EP_N16mbUnderMBSMFFunction { + description "EP_N16mb contained under MBSMFFunction"; + } + feature EP_N4mbUnderMBUPFFunction { + description "EP_N4mb contained under MBUPFFunction"; } - feature EP_NLSUnderLMFFunction { - description "EP_NLS contained under LMFFunction"; + feature EP_N4mbUnderMBSMFFunction { + description "EP_N4mb contained under MBSMFFunction"; + } + feature EP_NL3UnderGMLCFunction { + description "EP_NL3 contained under GMLCFunction"; + } + feature EP_NL5UnderGMLCFunction { + description "EP_NL5 contained under GMLCFunction"; + } + feature EP_NL5UnderNEFFunction { + description "EP_NL5 contained under NEFFunction"; + } + feature EP_NL10UnderGMLCFunction { + description "EP_NL10 contained under GMLCFunction"; + } + feature EP_NL10UnderLMFFunction { + description "EP_NL10 contained under LMFFunction"; + } + feature EP_NL8UnderLMFFunction { + description "EP_NL8 contained under LMFFunction"; } feature EP_RxUnderAFFunction { description "EP_Rx contained under AFFunction"; @@ -181,8 +279,7 @@ module _3gpp-5gc-nrm-ep { description "EP_N60 contained under AMFFunction"; } feature EP_N60UnderNSACFFunction { - description - "EP_N60 contained under NSACFFunction"; + description "EP_N60 contained under NSACFFunction"; } feature EP_N19mbUnderMBUPFFunction { description "EP_N19mb contained under MBUPFFunction"; @@ -190,121 +287,181 @@ module _3gpp-5gc-nrm-ep { feature EP_N19mbUnderUPFFunction { description "EP_N19mb contained under UPFFunction"; } - - + feature EP_N84UnderTSCTSFFunction { + description "EP_N84 contained under TSCTSFFunction"; + } + feature EP_N84UnderPCFFunction { + description "EP_N84 contained under PCFFunction"; + } + feature EP_N85UnderTSCTSFFunction { + description "EP_N85 contained under TSCTSFFunction"; + } + feature EP_N85UnderNEFFunction { + description "EP_N85 contained under NEFFunction"; + } + feature EP_N86UnderTSCTSFFunction { + description "EP_N86 contained under TSCTSFFunction"; + } + feature EP_N86UnderAFFunction { + description "EP_N86 contained under AFFunction"; + } + feature EP_N87UnderTSCTSFFunction { + description "EP_N87 contained under TSCTSFFunction"; + } + feature EP_N87UnderUDMFunction { + description "EP_N87 contained under UDMFunction"; + } + feature EP_N96UnderTSCTSFFunction { + description "EP_N96 contained under TSCTSFFunction"; + } + feature EP_N96UnderNRFFunction { + description "EP_N96 contained under NRFFunction"; + } // === EP Groupings === grouping EP_N2Grp { uses eprp3gpp:EP_Common; } + grouping EP_N3Grp { uses eprp3gpp:EP_Common; } + grouping EP_N4Grp { uses eprp3gpp:EP_Common; } + grouping EP_N5Grp { uses eprp3gpp:EP_Common; } + grouping EP_N6Grp { uses eprp3gpp:EP_Common; } + grouping EP_N7Grp { uses eprp3gpp:EP_Common; } + grouping EP_N8Grp { uses eprp3gpp:EP_Common; } + grouping EP_N9Grp { uses eprp3gpp:EP_Common; } + grouping EP_N10Grp { uses eprp3gpp:EP_Common; } + grouping EP_N11Grp { uses eprp3gpp:EP_Common; } + grouping EP_N12Grp { uses eprp3gpp:EP_Common; } + grouping EP_N13Grp { uses eprp3gpp:EP_Common; } + grouping EP_N14Grp { uses eprp3gpp:EP_Common; } + grouping EP_N15Grp { uses eprp3gpp:EP_Common; } + grouping EP_N16Grp { uses eprp3gpp:EP_Common; } + grouping EP_N17Grp { uses eprp3gpp:EP_Common; } + grouping EP_N20Grp { uses eprp3gpp:EP_Common; } + grouping EP_N21Grp { uses eprp3gpp:EP_Common; } + grouping EP_N22Grp { uses eprp3gpp:EP_Common; } + grouping EP_N26Grp { uses eprp3gpp:EP_Common; } + grouping EP_N27Grp { uses eprp3gpp:EP_Common; } + grouping EP_N31Grp { uses eprp3gpp:EP_Common; } + grouping EP_N32Grp { uses eprp3gpp:EP_Common; - list remotePlmnId { + list remotePlmnId { key idx; leaf idx { type uint32;} description "PLMN Identifiers of the remote sepp. - The PLMN Identifier is composed of a Mobile Country Code - (MCC) and a Mobile Network Code (MNC)."; + The PLMN Identifier is composed of a Mobile Country Code + (MCC) and a Mobile Network Code (MNC)."; uses types3gpp:PLMNId; } - leaf remoteSeppAddress { + + leaf remoteSeppAddress { description "The host address of the SEPP."; type inet:host; } - leaf remoteSeppId { + + leaf remoteSeppId { type uint16; } + leaf n32cParas { type string; } + leaf n32fPolicy { type string; } + leaf withIPX { type boolean; } } + grouping EP_S5CGrp { uses eprp3gpp:EP_Common; } + grouping EP_S5UGrp { uses eprp3gpp:EP_Common; } + grouping EP_RxGrp { uses eprp3gpp:EP_Common; } + grouping EP_MAP_SMSCGrp { uses eprp3gpp:EP_Common; } - grouping EP_NLSGrp { + grouping EP_NL1Grp { uses eprp3gpp:EP_Common; } grouping EP_NL2Grp { uses eprp3gpp:EP_Common; } + grouping EP_SBI_IPXGrp { uses eprp3gpp:EP_Common; leaf-list sBIService { @@ -355,15 +512,73 @@ module _3gpp-5gc-nrm-ep { grouping EP_Npc7Grp { uses eprp3gpp:EP_Common; } + grouping EP_NL7Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_NL10Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N96Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_SM14Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N34Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N33Grp { + uses eprp3gpp:EP_Common; + } grouping EP_Npc8Grp { uses eprp3gpp:EP_Common; } + grouping EP_N84Grp { uses eprp3gpp:EP_Common; } grouping EP_N85Grp { uses eprp3gpp:EP_Common; } + grouping EP_N63Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_NL5Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_NL9Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_NL3Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_NL6Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_NL8Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_SM13Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N61Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N62Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N42Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N11mbGrp { + uses eprp3gpp:EP_Common; + } + grouping EP_N88Grp { + uses eprp3gpp:EP_Common; + } + grouping EP_N16mbGrp { + uses eprp3gpp:EP_Common; + } grouping EP_N86Grp { uses eprp3gpp:EP_Common; } @@ -373,10 +588,6 @@ module _3gpp-5gc-nrm-ep { grouping EP_N89Grp { uses eprp3gpp:EP_Common; } - grouping EP_N96Grp { - uses eprp3gpp:EP_Common; - } - // === Subtree groupings for EPs under 2+ functions === grouping EP_N2Subtree { @@ -507,12 +718,148 @@ module _3gpp-5gc-nrm-ep { container attributes { uses EP_N22Grp; } } } - grouping EP_NLSSubtree { - list EP_NLS { - description "Represents the EP_NLS IOC."; + grouping EP_NL1Subtree { + list EP_NL1 { + description "Represents the EP_NL1 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_NL1Grp; } + } + } + grouping EP_NL6Subtree { + list EP_NL6 { + description "Represents the EP_NL6 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_NL6Grp; } + } + } + grouping EP_NL9Subtree { + list EP_NL9 { + description "Represents the EP_NL9 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_NL9Grp; } + } + } + grouping EP_NL2Subtree { + list EP_NL2 { + description "Represents the EP_NL2 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_NL2Grp; } + } + } + grouping EP_NL3Subtree { + list EP_NL3 { + description "Represents the EP_NL3 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_NL3Grp; } + } + } + grouping EP_NL5Subtree { + list EP_NL5 { + description "Represents the EP_NL5 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_NL5Grp; } + } + } + grouping EP_NL10Subtree { + list EP_NL10 { + description "Represents the EP_NL10 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_NL10Grp; } + } + } + grouping EP_NL8Subtree { + list EP_NL8 { + description "Represents the EP_NL8 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_NL8Grp; } + } + } + grouping EP_N34Subtree { + list EP_N34 { + description "Represents the EP_N34 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_N34Grp; } + } + } + grouping EP_N26Subtree { + list EP_N26 { + description "Represents the EP_N26 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_N26Grp; } + } + } + grouping EP_N89Subtree { + list EP_N89 { + description "Represents the EP_N89 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_N89Grp; } + } + } + grouping EP_N11mbSubtree { + list EP_N11mb { + description "Represents the EP_N11mb IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_N11mbGrp; } + } + } + grouping EP_N61Subtree { + list EP_N61 { + description "Represents the EP_N61 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_N61Grp; } + } + } + grouping EP_N62Subtree { + list EP_N62 { + description "Represents the EP_N62 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_N62Grp; } + } + } + grouping EP_N63Subtree { + list EP_N63 { + description "Represents the EP_N63 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_N63Grp; } + } + } + grouping EP_N88Subtree { + list EP_N88 { + description "Represents the EP_N88 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_N88Grp; } + } + } + grouping EP_N16mbSubtree { + list EP_N16mb { + description "Represents the EP_N16mb IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_N16mbGrp; } + } + } + grouping EP_N4mbSubtree { + list EP_N4mb { + description "Represents the EP_N4mb IOC."; key id; uses top3gpp:Top_Grp; - container attributes { uses EP_NLSGrp; } + container attributes { uses EP_N4mbGrp; } } } grouping EP_RxSubtree { @@ -563,20 +910,44 @@ module _3gpp-5gc-nrm-ep { container attributes { uses EP_N19mbGrp; } } } - grouping EP_N58Subtree { - list EP_N58 { - description "Represents the EP_N58 IOC."; + grouping EP_N84Subtree { + list EP_N84 { + description "Represents the EP_N84 IOC."; key id; uses top3gpp:Top_Grp; - container attributes { uses EP_N58Grp; } + container attributes { uses EP_N84Grp; } } } - grouping EP_N59Subtree { - list EP_N59 { - description "Represents the EP_N59 IOC."; + grouping EP_N85Subtree { + list EP_N85 { + description "Represents the EP_N85 IOC."; key id; uses top3gpp:Top_Grp; - container attributes { uses EP_N59Grp; } + container attributes { uses EP_N85Grp; } + } + } + grouping EP_N86Subtree { + list EP_N86 { + description "Represents the EP_N86 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_N86Grp; } + } + } + grouping EP_N87Subtree { + list EP_N87 { + description "Represents the EP_N87 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_N87Grp; } + } + } + grouping EP_N96Subtree { + list EP_N96 { + description "Represents the EP_N96 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_N96Grp; } } } @@ -589,6 +960,12 @@ module _3gpp-5gc-nrm-ep { uses EP_RxSubtree { if-feature EP_RxUnderAFFunction; } + uses EP_N62Subtree { + if-feature EP_N62UnderAFFunction; + } + uses EP_N86Subtree { + if-feature EP_N86UnderAFFunction; + } } augment "/me3gpp:ManagedElement/amf3gpp:AMFFunction" { @@ -622,20 +999,14 @@ module _3gpp-5gc-nrm-ep { uses EP_N22Subtree { if-feature EP_N22UnderAMFFunction; } - list EP_N26 { - description "Represents the EP_N26 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { uses EP_N26Grp; } + uses EP_N26Subtree { + if-feature EP_N26UnderAMFFunction; } - uses EP_NLSSubtree { - if-feature EP_NLSUnderAMFFunction; + uses EP_NL1Subtree { + if-feature EP_NL1UnderAMFFunction; } - list EP_NL2 { - description "Represents the EP_NL2 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { uses EP_NL2Grp; } + uses EP_NL2Subtree { + if-feature EP_NL2UnderAMFFunction; } uses EP_N41Subtree { if-feature EP_N41UnderAMFFunction; @@ -643,6 +1014,18 @@ module _3gpp-5gc-nrm-ep { uses EP_N60Subtree { if-feature EP_N60UnderAMFFunction; } + list EP_N42 { + description "Represents the EP_N42 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_N42Grp; } + } + uses EP_N89Subtree { + if-feature EP_N89UnderAMFFunction; + } + uses EP_N11mbSubtree { + if-feature EP_N11mbUnderAMFFunction; + } } augment "/me3gpp:ManagedElement/ausf3gpp:AUSFFunction" { @@ -652,17 +1035,26 @@ module _3gpp-5gc-nrm-ep { uses EP_N13Subtree { if-feature EP_N13UnderAUSFFunction; } - } - - augment "/me3gpp:ManagedElement/dn3gpp:DNFunction" { - uses EP_N6Subtree { - if-feature EP_N6UnderDNFunction; + uses EP_N61Subtree { + if-feature EP_N61UnderAUSFFunction; } } augment "/me3gpp:ManagedElement/lmf3gpp:LMFFunction" { - uses EP_NLSSubtree { - if-feature EP_NLSUnderLMFFunction; + uses EP_NL1Subtree { + if-feature EP_NL1UnderLMFFunction; + } + uses EP_NL8Subtree { + if-feature EP_NL8UnderLMFFunction; + } + list EP_NL7 { + description "Represents the EP_NL7 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_NL7Grp; } + } + uses EP_NL10Subtree { + if-feature EP_NL10UnderLMFFunction; } } @@ -688,6 +1080,15 @@ module _3gpp-5gc-nrm-ep { uses top3gpp:Top_Grp; container attributes { uses EP_N27Grp; } } + uses EP_N96Subtree { + if-feature EP_N96UnderNRFFunction; + } + list EP_SM14 { + description "Represents the EP_SM14 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_SM14Grp; } + } } augment "/me3gpp:ManagedElement/nssf3gpp:NSSFFunction" { @@ -700,6 +1101,9 @@ module _3gpp-5gc-nrm-ep { uses top3gpp:Top_Grp; container attributes { uses EP_N31Grp; } } + uses EP_N34Subtree { + if-feature EP_N34UnderNSSFFunction; + } } augment "/me3gpp:ManagedElement/pcf3gpp:PCFFunction" { @@ -721,6 +1125,9 @@ module _3gpp-5gc-nrm-ep { uses EP_N28Subtree { if-feature EP_N28UnderPCFFunction; } + uses EP_N84Subtree { + if-feature EP_N84UnderPCFFunction; + } } augment "/me3gpp:ManagedElement/sepp3gpp:SEPPFunction" { @@ -775,6 +1182,12 @@ module _3gpp-5gc-nrm-ep { uses EP_N40Subtree { if-feature EP_N40UnderSMFFunction; } + uses EP_N88Subtree { + if-feature EP_N88UnderSMFFunction; + } + uses EP_N16mbSubtree { + if-feature EP_N16mbUnderSMFFunction; + } } augment "/me3gpp:ManagedElement/udm3gpp:UDMFunction" { @@ -787,6 +1200,12 @@ module _3gpp-5gc-nrm-ep { uses EP_N13Subtree { if-feature EP_N13UnderUDMFunction; } + uses EP_NL6Subtree { + if-feature EP_NL6UnderUDMFunction; + } + uses EP_N87Subtree { + if-feature EP_N87UnderUDMFunction; + } } augment "/me3gpp:ManagedElement/upf3gpp:UPFFunction" { @@ -826,11 +1245,8 @@ module _3gpp-5gc-nrm-ep { uses EP_N19mbSubtree { if-feature EP_N19mbUnderMBUPFFunction; } - list EP_N4mb { - description "Represents the EP_N4mb IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { uses EP_N4mbGrp; } + uses EP_N4mbSubtree { + if-feature EP_N4mbUnderMBUPFFunction; } list EP_Nmb9 { description "Represents the EP_Nmb9 IOC."; @@ -849,6 +1265,15 @@ module _3gpp-5gc-nrm-ep { uses top3gpp:Top_Grp; container attributes { uses EP_Nmb1Grp; } } + uses EP_N11mbSubtree { + if-feature EP_N11mbUnderMBSMFFunction; + } + uses EP_N16mbSubtree { + if-feature EP_N16mbUnderMBSMFFunction; + } + uses EP_N4mbSubtree { + if-feature EP_N4mbUnderMBSMFFunction; + } } augment "/me3gpp:ManagedElement/chf3gpp:CHFFunction" { @@ -870,112 +1295,60 @@ module _3gpp-5gc-nrm-ep { } augment "/me3gpp:ManagedElement/nssaaf3gpp:NSSAAFFunction" { - uses EP_N58Subtree; - uses EP_N59Subtree; + list EP_N58 { + description "This IOC represents an end point of N58 interface + between NSSAAF and AMF, which is defined in TS 23.501 [2] and + 33.501 [52]."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_N58Grp; } + } + list EP_N59 { + description "This IOC represents an end point of N59 interface + between NSSAAF and UDM, which is defined in TS 23.501 [2] and + 33.501 [52]."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_N59Grp; } + } } augment "/me3gpp:ManagedElement/ddnmf3gpp:DDNMFFunction" { list EP_Npc4 { - description "Represents the EP_Npc4 IOC."; + description "This IOC represents the Npc4 interface between the UDM + and 5G DDNMF, which is defined in 3GPP TS 23.304 [73]."; key id; uses top3gpp:Top_Grp; container attributes { uses EP_Npc4Grp; } } list EP_Npc6 { - description "Represents the EP_Npc6 IOC."; + description "This IOC represents the Npc6 interface between the 5G DDNMF + in the HPLMN and the 5G DDNMF in a Local PLMN (5G ProSe Direct Discovery) + , which is defined in TS 23.304 [73]."; key id; uses top3gpp:Top_Grp; container attributes { uses EP_Npc6Grp; } } list EP_Npc7 { - description "Represents the EP_Npc7 IOC."; + description "This IOC represents the Npc7 interface between the 5G DDNMF + in the HPLMN and the 5G DDNMF in the VPLMN, which is defined in + TS 23.304 [73]."; key id; uses top3gpp:Top_Grp; container attributes { uses EP_Npc7Grp; } } list EP_Npc8 { - description "Represents the EP_Npc8 IOC."; + description "This IOC represents the Npc8 interface between the PCF and 5 + G DDNMF, which is defined in 3GPP TS 23.304 [73]."; key id; uses top3gpp:Top_Grp; container attributes { uses EP_Npc8Grp; } } } - feature EP_N84UnderTSCTSFFunction { - description "EP_N84 contained under TSCTSFFunction"; - } - feature EP_N84UnderPCFFunction { - description "EP_N84 contained under PCFFunction"; - } - feature EP_N85UnderTSCTSFFunction { - description "EP_N85 contained under TSCTSFFunction"; - } - feature EP_N85UnderNEFFunction { - description "EP_N85 contained under NEFFunction"; - } - feature EP_N86UnderTSCTSFFunction { - description "EP_N86 contained under TSCTSFFunction"; - } - feature EP_N86UnderAFFunction { - description "EP_N86 contained under AFFunction"; - } - feature EP_N87UnderTSCTSFFunction { - description "EP_N87 contained under TSCTSFFunction"; - } - feature EP_N87UnderUDMFunction { - description "EP_N87 contained under UDMFunction"; - } - feature EP_N96UnderTSCTSFFunction { - description "EP_N96 contained under TSCTSFFunction"; - } - feature EP_N96UnderNRFFunction { - description "EP_N96 contained under NRFFunction"; - } - - grouping EP_N84Subtree { - list EP_N84 { - description "Represents the EP_N84 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { uses EP_N84Grp; } - } - } - grouping EP_N85Subtree { - list EP_N85 { - description "Represents the EP_N85 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { uses EP_N85Grp; } - } - } - grouping EP_N86Subtree { - list EP_N86 { - description "Represents the EP_N86 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { uses EP_N86Grp; } - } - } - grouping EP_N87Subtree { - list EP_N87 { - description "Represents the EP_N87 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { uses EP_N87Grp; } - } - } - grouping EP_N96Subtree { - list EP_N96 { - description "Represents the EP_N96 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { uses EP_N96Grp; } - } - } - augment "/me3gpp:ManagedElement/tsctsf3gpp:TSCTSFFunction" { uses EP_N84Subtree { if-feature EP_N84UnderTSCTSFFunction; @@ -989,44 +1362,87 @@ module _3gpp-5gc-nrm-ep { uses EP_N87Subtree { if-feature EP_N87UnderTSCTSFFunction; } - list EP_N89 { - description "Represents the EP_N89 IOC."; - key id; - uses top3gpp:Top_Grp; - container attributes { uses EP_N89Grp; } + uses EP_N89Subtree { + if-feature EP_N89UnderTSCTSFFunction; } uses EP_N96Subtree { if-feature EP_N96UnderTSCTSFFunction; } } - augment "/me3gpp:ManagedElement/pcf3gpp:PCFFunction" { - uses EP_N84Subtree { - if-feature EP_N84UnderPCFFunction; - } - } - augment "/me3gpp:ManagedElement/nef3gpp:NEFFunction" { + list EP_N33 { + description "Represents the EP_N33 IOC."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_N33Grp; } + } uses EP_N85Subtree { if-feature EP_N85UnderNEFFunction; } + uses EP_N63Subtree { + if-feature EP_N63UnderNEFFunction; + } + uses EP_NL5Subtree { + if-feature EP_NL5UnderNEFFunction; + } } - augment "/me3gpp:ManagedElement/af3gpp:AFFunction" { - uses EP_N86Subtree { - if-feature EP_N86UnderAFFunction; + augment "/me3gpp:ManagedElement/nwdaf3gpp:NWDAFFunction" { + uses EP_NL9Subtree { + if-feature EP_NL9UnderNWDAFFunction; + } + uses EP_N34Subtree { + if-feature EP_N34UnderNWDAFFunction; } } - augment "/me3gpp:ManagedElement/udm3gpp:UDMFunction" { - uses EP_N87Subtree { - if-feature EP_N87UnderUDMFunction; + augment "/me3gpp:ManagedElement/gmlc3gpp:GMLCFunction" { + uses EP_NL9Subtree { + if-feature EP_NL9UnderGMLCFunction; + } + uses EP_NL2Subtree { + if-feature EP_NL2UnderGMLCFunction; + } + uses EP_NL3Subtree { + if-feature EP_NL3UnderGMLCFunction; + } + uses EP_NL5Subtree { + if-feature EP_NL5UnderGMLCFunction; + } + uses EP_NL6Subtree { + if-feature EP_NL6UnderGMLCFunction; + } + uses EP_NL10Subtree { + if-feature EP_NL10UnderGMLCFunction; } } - augment "/me3gpp:ManagedElement/nrf3gpp:NRFFunction" { - uses EP_N96Subtree { - if-feature EP_N96UnderNRFFunction; + augment "/me3gpp:ManagedElement/scp3gpp:SCPFunction" { + list EP_SM13 { + description "This IOC represents the SM13 interface between MNPF + and SCP, and it is defined in TS 23.540 [100]."; + key id; + uses top3gpp:Top_Grp; + container attributes { uses EP_SM13Grp; } + } + } + + augment "/me3gpp:ManagedElement/aanf3gpp:AANFFunction" { + uses EP_N61Subtree { + if-feature EP_N61UnderAANFFunction; + } + uses EP_N62Subtree { + if-feature EP_N62UnderAANFFunction; + } + uses EP_N63Subtree { + if-feature EP_N63UnderAANFFunction; + } + } + + augment "/me3gpp:ManagedElement/easdf3gpp:EASDFFunction" { + uses EP_N88Subtree { + if-feature EP_N88UnderEASDFFunction; } } } -- GitLab From 8f6fb724a4339e958989c80c28914d223f2849ed Mon Sep 17 00:00:00 2001 From: rosabolzek Date: Tue, 19 May 2026 18:46:08 +0200 Subject: [PATCH 40/45] add attribute priority to managed-nfprofile to aligne with stateg2 --- yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang b/yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang index d950cb9c..54cf4019 100755 --- a/yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang +++ b/yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang @@ -164,7 +164,13 @@ grouping ManagedNFProfileGrp { leaf idx { type uint32; } uses nfs3gpp:PlmnSnssai; } - + leaf priority { + description "Priority (relative weight) of the NF instance, in the + range of 0-65535, compared to other NF instances of the same type, + to be used for NF selection; if capacity is also present in the + nfServiceList parameters, those will have precedence over this value."; + type uint16; + } list allowedSNPNs { description "SNPNs allowed to access the NF instance. The absence of this attribute in the NF profile indicates that no SNPN, -- GitLab From cc61e1db6ac065b91a21161c3cf025db2b6a2846 Mon Sep 17 00:00:00 2001 From: rosabolzek Date: Tue, 19 May 2026 18:47:30 +0200 Subject: [PATCH 41/45] add attribute priority to managed-nfprofile to aligne with stateg2 --- yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang | 1 + 1 file changed, 1 insertion(+) diff --git a/yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang b/yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang index 54cf4019..031a4ea6 100755 --- a/yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang +++ b/yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang @@ -17,6 +17,7 @@ module _3gpp-5gc-nrm-managed-nfprofile { TTA, TTC). All rights reserved."; reference "3GPP TS 29.510"; + revision 2026-05-25 { reference CR-1702 ; } revision 2026-03-25 { reference CR-1694 ; } revision 2025-07-25 { reference CR-1558 ; } revision 2025-07-25 { reference "initial revision"; } -- GitLab From f3004238c8f326e83cf6ef859fa8a50ec27f24aa Mon Sep 17 00:00:00 2001 From: "U-ERICSSON\\ETHBLL" Date: Wed, 20 May 2026 01:14:16 +0800 Subject: [PATCH 42/45] update-5 --- yang-models/_3gpp-5g-common-yang-types.yang | 28 +++++- yang-models/_3gpp-5gc-nrm-affunction.yang | 98 +++++++++++++++++++- yang-models/_3gpp-5gc-nrm-nwdaffunction.yang | 32 +------ yang-models/_3gpp-common-yang-types.yang | 40 ++++++++ 4 files changed, 168 insertions(+), 30 deletions(-) diff --git a/yang-models/_3gpp-5g-common-yang-types.yang b/yang-models/_3gpp-5g-common-yang-types.yang index e9207d4c..1a89b6ca 100755 --- a/yang-models/_3gpp-5g-common-yang-types.yang +++ b/yang-models/_3gpp-5g-common-yang-types.yang @@ -11,10 +11,11 @@ module _3gpp-5g-common-yang-types { contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; description "The model defines common types for 5G networks and network slicing. - Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 28.541"; + revision 2026-03-25 { reference CR-1694 ; } revision 2025-11-07 { reference CR-1640 ; } revision 2025-11-01 { reference CR-1657 ; } @@ -29,6 +30,31 @@ module _3gpp-5g-common-yang-types { revision 2020-11-05 { reference CR-0412 ; } revision 2019-10-20 { reference "Initial version."; } + typedef NwdafEvent { + description "The detailed ENUM value for NwdafEvent see the + Table 5.1.6.3.4-1 in TS 29.520"; + type union { + type enumeration { + enum SLICE_LOAD_LEVEL; + enum NETWORK_PERFORMANCE; + enum NF_LOAD; + enum SERVICE_EXPERIENCE; + enum UE_MOBILITY; + enum UE_COMMUNICATION; + enum QOS_SUSTAINABILITY; + enum ABNORMAL_BEHAVIOUR; + enum USER_DATA_CONGESTION; + enum NSI_LOAD_LEVEL; + enum DN_PERFORMANCE; + enum DISPERSION; + enum RED_TRANS_EXP; + enum WLAN_PERFORMANCE; + enum SM_CONGESTION; + } + type string; + } + } + grouping AreaScopeGrp { description "This <> defines an area scope."; diff --git a/yang-models/_3gpp-5gc-nrm-affunction.yang b/yang-models/_3gpp-5gc-nrm-affunction.yang index f3ec7376..e193ba8c 100755 --- a/yang-models/_3gpp-5gc-nrm-affunction.yang +++ b/yang-models/_3gpp-5gc-nrm-affunction.yang @@ -6,24 +6,120 @@ module _3gpp-5gc-nrm-affunction { import _3gpp-common-managed-function { prefix mf3gpp; } import _3gpp-common-managed-element { prefix me3gpp; } + import _3gpp-common-yang-types { prefix types3gpp; } + import _3gpp-5g-common-yang-types { prefix types5g3gpp; } + import _3gpp-5gc-nrm-neffunction { prefix nef3gpp; } import _3gpp-common-top { prefix top3gpp; } + import _3gpp-5gc-nrm-managed-nfprofile { prefix mnfp3gpp;} organization "3gpp SA5"; contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; description "This IOC is defined only to describe the IOCs representing its interaction interface with 5GC (i.e. EP_Rx and EP_N5). It has no attributes defined. - Copyright 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 28.541"; + revision 2026-05-19 { reference CR-1702 ; } revision 2023-09-18 { reference CR-1043 ; } revision 2023-04-26 { reference CR-0916; } revision 2019-10-28 { reference S5-193518 ; } revision 2019-05-15 {reference "initial revision"; } + grouping TrustAfInfoGrp { + description "Represent the data type TrustAfInfo."; + + list sNssaiInfoList { + description "It represents S-NSSAIs and DNNs supported by the trust AF."; + min-elements 1; + key idx; + leaf idx { type uint32 ; } + uses nef3gpp:SnssaiInfoItemGrp; + } + + leaf-list afEvents { + type enumeration { + enum SVC_EXPERIENCE; + enum UE_MOBILITY; + enum UE_COMM; + enum EXCEPTIONS; + enum USER_DATA_CONGESTION; + enum PERF_DATA; + enum COLLECTIVE_BEHAVIOUR; + enum DISPERSION; + enum MS_QOE_METRICS; + enum MS_CONSUMPTION; + enum MS_NET_ASSIST_INVOCATION; + enum MS_DYN_POLICY_INVOCATION; + enum MS_ACCESS_ACTIVITY; + } + description "This attribute represents list of AF Event(s) supported + by the trusted AF."; + reference "Clause 5.6.3.3 TS 29.517"; + } + + leaf-list appIds { + type string; + description "This attribute represents a list of Application ID(s) + supported by the trusted AF. The absence of this attribute indicate + that the AF can be selected for any Application."; + } + + leaf-list internalGroupId { + type string { + pattern + '[A-Fa-f0-9]{8}-[0-9]{3}-[0-9]{2,3}-([A-Fa-f0-9][A-Fa-f0-9]){1,10}'; + } + description "This attribute represents a list of Internal Group + Identifiers supported by the trusted AF. + If not provided, it does not imply that the AF supports all internal + groups."; + } + + leaf mappingInd { + type boolean; + default false; + description "This attribute indicates whether the trusted AF supports + mapping between UE IP address (IPv4 address or IPv6 prefix) and UE ID + (i.e. SUPI)."; + } + } + grouping AFFunctionGrp { uses mf3gpp:ManagedFunctionGrp; + + list pLMNIdList { + description "List of PLMN IDs."; + key "mcc mnc"; + uses types3gpp:PLMNId; + } + + list managedNFProfile { + key idx; + leaf idx { type uint32;} + min-elements 1; + max-elements 1; + description "Profile definition of a Managed NF (See TS 23.501)"; + uses mnfp3gpp:ManagedNFProfileGrp; + } + + list commModelList { + min-elements 1; + key "groupId"; + description "Specifies a list of commModel. It can be used by NF and + NF services to interact with each other in 5G Core network "; + reference "3GPP TS 23.501"; + uses types5g3gpp:CommModel; + } + + list trustAfInfo { + description "Represents information of a trusted AF Instance."; + key idx; + leaf idx { type uint32;} + max-elements 1; + uses TrustAfInfoGrp; + } } augment "/me3gpp:ManagedElement" { diff --git a/yang-models/_3gpp-5gc-nrm-nwdaffunction.yang b/yang-models/_3gpp-5gc-nrm-nwdaffunction.yang index c9500400..920cb188 100755 --- a/yang-models/_3gpp-5gc-nrm-nwdaffunction.yang +++ b/yang-models/_3gpp-5gc-nrm-nwdaffunction.yang @@ -17,10 +17,11 @@ module _3gpp-5gc-nrm-nwdaffunction { contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; description "This IOC represents the NWDAF function in 5GC. For more information about the NWDAF, see 3GPP TS 23.501. - Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 28.541"; + revision 2026-05-20 { reference CR-1702 ; } revision 2025-07-25 { reference CR-1558 ; } revision 2025-03-25 { reference CR-1489 ; } revision 2024-08-07 { reference CR-1329; } @@ -32,31 +33,6 @@ module _3gpp-5gc-nrm-nwdaffunction { revision 2019-05-15 {reference "initial revision"; } - typedef NwdafEvent { - description "The detailed ENUM value for NwdafEvent see the - Table 5.1.6.3.4-1 in TS 29.520"; - type union { - type enumeration { - enum SLICE_LOAD_LEVEL; - enum NETWORK_PERFORMANCE; - enum NF_LOAD; - enum SERVICE_EXPERIENCE; - enum UE_MOBILITY; - enum UE_COMMUNICATION; - enum QOS_SUSTAINABILITY; - enum ABNORMAL_BEHAVIOUR; - enum USER_DATA_CONGESTION; - enum NSI_LOAD_LEVEL; - enum DN_PERFORMANCE; - enum DISPERSION; - enum RED_TRANS_EXP; - enum WLAN_PERFORMANCE; - enum SM_CONGESTION; - } - type string; - } - } - grouping NwdafCapabilityGrp { description "This data type represents the capability supported by the NWDAF."; @@ -91,7 +67,7 @@ module _3gpp-5gc-nrm-nwdaffunction { reference "TS 29.510"; leaf-list mlAnalyticsIds { - type NwdafEvent; + type types5g3gpp:NwdafEvent; ordered-by user; description "This attribute represents the Analytic functionalities (identified by nwdafEvent defined in TS 29.520 [85]) of the NWDAF @@ -172,7 +148,7 @@ module _3gpp-5gc-nrm-nwdaffunction { reference "TS 29.510"; leaf-list nwdafEvents { - type NwdafEvent; + type types5g3gpp:NwdafEvent; ordered-by user; description "This attribute represents the Analytic functionalities (identified by nwdafEvent defined in TS 29.520) of the NWDAF instance. diff --git a/yang-models/_3gpp-common-yang-types.yang b/yang-models/_3gpp-common-yang-types.yang index c7f015ed..8574bf4f 100755 --- a/yang-models/_3gpp-common-yang-types.yang +++ b/yang-models/_3gpp-common-yang-types.yang @@ -768,6 +768,46 @@ module _3gpp-common-yang-types { enum UDSF; enum BSF; enum CHF; + enum NWDAF; + enum PCSCF; + enum CBCF; + enum HSS; + enum UCMF; + enum SOR_AF; + enum SPAF; + enum MME; + enum SCSAS; + enum SCEF; + enum SCP; + enum NSSAAF; + enum ICSCF; + enum SCSCF; + enum DRA; + enum IMS_AS; + enum AANF; + enum 5G_DDNMF; + enum NSACF; + enum MFAF; + enum EASDF; + enum DCCF; + enum MB_SMF; + enum TSCTSF; + enum ADRF; + enum GBA_BSF; + enum CEF; + enum MB_UPF; + enum NSWOF; + enum PKMF; + enum MNPF; + enum SMS_GMSC; + enum SMS_IWMSC; + enum MBSF; + enum MBSTF; + enum PANF; + enum TNGF; + enum W_AGF; + enum TWIF; + enum TSN_AF; } } -- GitLab From 3f4e384cc7b1be3fac336476b1dfc1f79bb970b9 Mon Sep 17 00:00:00 2001 From: rosabolzek Date: Tue, 19 May 2026 22:32:47 +0200 Subject: [PATCH 43/45] correct mismaches from stage 2 to stage 3 yang --- yang-models/_3gpp-5gc-nrm-amffunction.yang | 7 ++++--- yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang | 10 ++++------ yang-models/_3gpp-5gc-nrm-nfservice.yang | 9 +++++---- yang-models/_3gpp-5gc-nrm-nrffunction.yang | 3 ++- yang-models/_3gpp-5gc-nrm-smffunction.yang | 11 +++++------ yang-models/_3gpp-5gc-nrm-upffunction.yang | 8 +++++++- 6 files changed, 27 insertions(+), 21 deletions(-) diff --git a/yang-models/_3gpp-5gc-nrm-amffunction.yang b/yang-models/_3gpp-5gc-nrm-amffunction.yang index 89ecbe3f..24b487a6 100755 --- a/yang-models/_3gpp-5gc-nrm-amffunction.yang +++ b/yang-models/_3gpp-5gc-nrm-amffunction.yang @@ -17,10 +17,11 @@ module _3gpp-5gc-nrm-amffunction { organization "3gpp SA5"; contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; description "AMFFunction derived from basic ManagedFunction. - Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 28.541 5G Network Resource Model (NRM)"; + revision 2026-05-25 { reference CR-1702 ; } revision 2025-07-25 { reference CR-1558 ; } revision 2025-03-25 { reference "CR-1489 CR-1512" ; } revision 2024-11-01 { reference CR-1405; } @@ -368,14 +369,14 @@ module _3gpp-5gc-nrm-amffunction { grouping AmfInfoGrp { description "Represents the data type AmfInfo."; - leaf amfRegionId { + leaf aMFRegionId { type int64; mandatory true; description "It represents the AMF Region ID, which identifies the region. AllowedValues: defined in subclause 2.10.1 of 3GPP TS 23.003 "; } - leaf amfSetId { + leaf aMFSetId { type int64; mandatory true; description "It represents the AMF Set ID, which is uniquely identifies diff --git a/yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang b/yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang index 031a4ea6..2d6d6cae 100755 --- a/yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang +++ b/yang-models/_3gpp-5gc-nrm-managed-nfprofile.yang @@ -325,18 +325,16 @@ grouping ManagedNFProfileGrp { of a NF instance."; type string; } - leaf-list lcHSupportInd { + leaf lcHSupportInd { description "This parameter indicates whether the NF supports or does not support Load Control based on LCI Header."; reference "clause 6.3 of 3gpp TS 29.500"; - max-elements 1; type boolean; } - leaf-list olcHSupportInd { + leaf olcHSupportInd { description "This parameter indicates whether the NF supports or does not support Overload Control based on OCI Header ."; reference "clause 6.4 of 3gpp TS 29.500"; - max-elements 1; type boolean; } leaf-list nfSetRecoveryTimeList { @@ -371,7 +369,7 @@ grouping ManagedNFProfileGrp { Server. It is an array of FQDN."; type string; } - leaf-list interPlmnFqdn { + leaf interPlmnFqdn { description "If the NF needs to be discoverable by other NFs in a different PLMN, then an FQDN that is used for inter-PLMN routing is specified."; @@ -381,7 +379,7 @@ grouping ManagedNFProfileGrp { description "List of NF Service Instances. It shall include the services produced by the NF that can be discovered by other NFs."; - key serviceInstanceID; + key serviceInstanceId; min-elements 1; uses nfs3gpp:NFServiceGrp; } diff --git a/yang-models/_3gpp-5gc-nrm-nfservice.yang b/yang-models/_3gpp-5gc-nrm-nfservice.yang index d9ad6a5b..22fcf1d8 100755 --- a/yang-models/_3gpp-5gc-nrm-nfservice.yang +++ b/yang-models/_3gpp-5gc-nrm-nfservice.yang @@ -17,6 +17,7 @@ module _3gpp-5gc-nrm-nfservice { TTA, TTC). All rights reserved."; reference "3GPP TS 29.510"; + revision 2026-05-25 { reference CR-1702 ; } revision 2026-03-25 { reference CR-1694 ; } revision 2025-01-25 { reference CR-1442; } revision 2023-09-18 { reference CR-1043 ; } @@ -27,7 +28,7 @@ module _3gpp-5gc-nrm-nfservice { grouping NFServiceGrp { description "This data type represents the NF Service defined in TS 29.510 [23]."; - leaf serviceInstanceID { + leaf serviceInstanceId { description "Unique ID of the service instance within a given NF Instance."; mandatory true; @@ -50,10 +51,10 @@ module _3gpp-5gc-nrm-nfservice { uses NFServiceVersion; } - leaf scheme { + leaf schema { description "URI scheme (e.g. 'http', 'https')."; mandatory true; - type UriScheme; + type UriSchema; } leaf nfServiceStatus { @@ -667,7 +668,7 @@ module _3gpp-5gc-nrm-nfservice { } } - typedef UriScheme { + typedef UriSchema { type enumeration { enum HTTP; enum HTTPS; diff --git a/yang-models/_3gpp-5gc-nrm-nrffunction.yang b/yang-models/_3gpp-5gc-nrm-nrffunction.yang index 5aa4ccb4..38d67f20 100755 --- a/yang-models/_3gpp-5gc-nrm-nrffunction.yang +++ b/yang-models/_3gpp-5gc-nrm-nrffunction.yang @@ -33,6 +33,7 @@ module _3gpp-5gc-nrm-nrffunction { TTA, TTC). All rights reserved."; reference "3GPP TS 28.541"; + revision 2026-05-25 { reference CR-1702 ; } revision 2026-03-25 { reference CR-1694 ; } revision 2025-11-01 { reference CR-1640 ; } revision 2025-07-25 { reference CR-1558 ; } @@ -147,7 +148,7 @@ module _3gpp-5gc-nrm-nrffunction { } grouping HssInfoGrp { description " Information of an HSS NF Instance"; - leaf groupID{ + leaf groupId{ description "This attribute defines the identity of the HSS group that is served by the HSS instance.If not provided, the HSS instance does not pertain to any HSS group."; diff --git a/yang-models/_3gpp-5gc-nrm-smffunction.yang b/yang-models/_3gpp-5gc-nrm-smffunction.yang index d62b1cfa..5ef47273 100755 --- a/yang-models/_3gpp-5gc-nrm-smffunction.yang +++ b/yang-models/_3gpp-5gc-nrm-smffunction.yang @@ -14,10 +14,11 @@ module _3gpp-5gc-nrm-smffunction { organization "3gpp SA5"; contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; description "SMFFunction derived from basic ManagedFunction. - Copyright 2024, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 28.541"; + revision 2026-05-25 { reference CR-1702 ; } revision 2024-05-24 { reference CR-1273 ; } revision 2023-09-18 { reference CR-1043 ; } revision 2023-04-26 { reference CR-0916; } @@ -87,7 +88,7 @@ module _3gpp-5gc-nrm-smffunction { those will have precedence over this value "; type uint16; } - leaf-list vsmfSupportInd { + leaf vsmfSupportInd { description "Used by an SMF to explicitly indicate the support of V-SMF capability and its preference to be selected as V-SMF. When present it indicate whether the V-SMF capability is supported @@ -96,7 +97,6 @@ module _3gpp-5gc-nrm-smffunction { - false: V-SMF capability not supported by the SMF. When absent the V-SMF capability support of the SMF is not specified."; type boolean; - } leaf pgwFqdnList { description "When present, this attribute provides additional FQDNs @@ -105,7 +105,7 @@ module _3gpp-5gc-nrm-smffunction { is present."; type string; } - leaf-list ismfSupportInd { + leaf ismfSupportInd { description "This attribute may be used by an SMF to explicitly indicate the support of I-SMF capability and its preference to be selected as I-SMF. When present, this attribute shall indicate @@ -114,7 +114,6 @@ module _3gpp-5gc-nrm-smffunction { - FALSE: I-SMF capability not supported by the SMF. Absence of this attribute indicates the I-SMF capability support of the SMF is not specified."; - max-elements 1; type boolean; } leaf-list smfOnboardingCapability { @@ -127,7 +126,7 @@ module _3gpp-5gc-nrm-smffunction { type boolean; max-elements 1; } - leaf-list smfUPRPCapability { + leaf smfUPRPCapability { description "This attribute IE indicates the SMF supports User Plane Remote Provisioning (UPRP) capability. This is used for the case of Onboarding of UEs for SNPNs , diff --git a/yang-models/_3gpp-5gc-nrm-upffunction.yang b/yang-models/_3gpp-5gc-nrm-upffunction.yang index ce549740..37b38e51 100755 --- a/yang-models/_3gpp-5gc-nrm-upffunction.yang +++ b/yang-models/_3gpp-5gc-nrm-upffunction.yang @@ -15,10 +15,11 @@ module _3gpp-5gc-nrm-upffunction { organization "3GPP SA5"; contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; description "UPFFunction derived from basic ManagedFunction. - Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, + Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 28.541 5G Network Resource Model (NRM)"; + revision 2026-05-25 { reference CR-1702 ; } revision 2025-07-25 { reference CR-1558 ; } revision 2025-07-25 { reference CR-1558 ; } revision 2024-05-24 { reference CR-1273 ; } @@ -163,6 +164,11 @@ module _3gpp-5gc-nrm-upffunction { true: supported false: not supported"; } + + leaf dnnUpfInfoListId { + type uint32; + description "Identifier of the DNN UPF Info List."; + } } typedef UPInterfaceType { -- GitLab From 604b8417906886de25d000cbad6db94b526d39b1 Mon Sep 17 00:00:00 2001 From: rosabolzek Date: Tue, 19 May 2026 22:43:27 +0200 Subject: [PATCH 44/45] correct yang litting error --- yang-models/_3gpp-5gc-nrm-nrffunction.yang | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/yang-models/_3gpp-5gc-nrm-nrffunction.yang b/yang-models/_3gpp-5gc-nrm-nrffunction.yang index 38d67f20..145066d4 100755 --- a/yang-models/_3gpp-5gc-nrm-nrffunction.yang +++ b/yang-models/_3gpp-5gc-nrm-nrffunction.yang @@ -588,8 +588,9 @@ module _3gpp-5gc-nrm-nrffunction { } list internalTargetArea { - description "It is the (internal) target area used by NRF (as provided - by NEF) to accurately locate the AIOTF instance. It is mapped to aIOTFdN. + description "It is the (internal) target area used by NRF (as provided + by NEF) to accurately locate the AIOTF instance. + It is mapped to aIOTFdN. It could refer to a list of AIoT Areas."; key idx; leaf idx { type uint32; } -- GitLab From 3dc026029e5f8f16b391b7ef3290fa51ecf480c8 Mon Sep 17 00:00:00 2001 From: scottma Date: Fri, 8 May 2026 14:58:49 +0000 Subject: [PATCH 45/45] Edit _3gpp-nr-nrm-ntnfunction.yang --- yang-models/_3gpp-nr-nrm-ntnfunction.yang | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/yang-models/_3gpp-nr-nrm-ntnfunction.yang b/yang-models/_3gpp-nr-nrm-ntnfunction.yang index 53095b40..2adb28dd 100644 --- a/yang-models/_3gpp-nr-nrm-ntnfunction.yang +++ b/yang-models/_3gpp-nr-nrm-ntnfunction.yang @@ -19,6 +19,7 @@ module _3gpp-nr-nrm-ntnfunction { TTA, TTC). All rights reserved."; reference "3GPP TS 28.541"; + revision 2026-05-07 { reference CR-1717; } revision 2026-02-02 { reference "CR-1682 CR-1683"; } //Common in r19, r20 revision 2025-03-27 { reference CR-1512; } revision 2025-02-17 { reference CR-1479 ; } @@ -114,8 +115,7 @@ module _3gpp-nr-nrm-ntnfunction { } default 0; units meter; - description "Satellite orbital parameter: semi major axis alpha, - see NIMA TR 8350.2. + description "Satellite orbital parameter: semi major axis alpha. Step of 4.249 * 10**-3 m. Actual value = 6500000 + field value * (4.249 * 10**-3)."; } @@ -125,8 +125,7 @@ module _3gpp-nr-nrm-ntnfunction { range -524288..524287; } default 0; - description "Satellite orbital parameter: eccentricity e, - see NIMA TR 8350.2. + description "Satellite orbital parameter: eccentricity e. Step 1.431 * 10**-8. Actual value = field value * (1.431 * 10**-8)."; } @@ -137,8 +136,7 @@ module _3gpp-nr-nrm-ntnfunction { } default 0; units radian; - description "Satellite orbital parameter: argument of periapsis omega, - see NIMA TR 8350.2. + description "Satellite orbital parameter: argument of periapsis omega. Step of 2.341* 10**-8 rad. Actual value = field value * (2.341* 10**-8)."; } @@ -150,7 +148,7 @@ module _3gpp-nr-nrm-ntnfunction { default 0; units radian; description "Satellite orbital parameter: longitude of ascending node - OMEGA, see NIMA TR 8350.2. + omega. Step of 2.341* 10**-8 rad. Actual value = field value * (2.341* 10**-8)."; } @@ -161,8 +159,7 @@ module _3gpp-nr-nrm-ntnfunction { } default 0; units radian; - description "Satellite orbital parameter: inclination i, - see NIMA TR 8350.2. + description "Satellite orbital parameter: inclination i. Step of 2.341* 10**-8 rad. Actual value = field value * (2.341* 10**-8)."; } @@ -173,8 +170,7 @@ module _3gpp-nr-nrm-ntnfunction { } default 0; units radian; - description "Satellite orbital parameter: Mean anomaly M at epoch time, - see NIMA TR 8350.2. + description "Satellite orbital parameter: Mean anomaly M at epoch time. Step of 2.341* 10**-8 rad. Actual value = field value * (2.341* 10**-8)."; } @@ -213,7 +209,7 @@ module _3gpp-nr-nrm-ntnfunction { list orbital { description "It indicates ephemeris is in orbital parameter ephemeris - format, as specified in NIMA TR 8350.2"; + format."; max-elements 1; key idx; leaf idx { type uint32; } -- GitLab