Skip to content
Commits on Source (15)
...@@ -30,6 +30,7 @@ module _3gpp-common-managed-element { ...@@ -30,6 +30,7 @@ module _3gpp-common-managed-element {
3GPP TS 28.620 3GPP TS 28.620
Umbrella Information Model (UIM)"; Umbrella Information Model (UIM)";
revision 2023-08-10 { reference CR-0257; }
revision 2023-04-26 { reference CR-0250; } revision 2023-04-26 { reference CR-0250; }
revision 2023-02-14 { reference "CR-0234"; } revision 2023-02-14 { reference "CR-0234"; }
revision 2022-09-30 { reference "CR-0191"; } revision 2022-09-30 { reference "CR-0191"; }
...@@ -61,6 +62,11 @@ module _3gpp-common-managed-element { ...@@ -61,6 +62,11 @@ module _3gpp-common-managed-element {
ManagedElement"; ManagedElement";
} }
feature SupportedNotificationsUnderManagedElement {
description "The SupportedNotificationsSubtree shall be contained under
ManagedElement";
}
feature FmUnderManagedElement { feature FmUnderManagedElement {
description "The FmSubtree shall be contained under ManagedElement"; description "The FmSubtree shall be contained under ManagedElement";
} }
...@@ -265,6 +271,10 @@ module _3gpp-common-managed-element { ...@@ -265,6 +271,10 @@ module _3gpp-common-managed-element {
if-feature SubscriptionControlUnderManagedElement; if-feature SubscriptionControlUnderManagedElement;
} }
uses subscr3gpp:SupportedNotificationsSubtree {
if-feature SupportedNotificationsUnderManagedElement;
}
uses fm3gpp:FmSubtree { uses fm3gpp:FmSubtree {
if-feature FmUnderManagedElement; if-feature FmUnderManagedElement;
} }
......
...@@ -13,6 +13,7 @@ module _3gpp-common-mnsregistry { ...@@ -13,6 +13,7 @@ module _3gpp-common-mnsregistry {
Class (IOC) that is part of the Generic Network Resource Model (NRM)."; Class (IOC) that is part of the Generic Network Resource Model (NRM).";
reference "3GPP TS 28.623 Generic Network Resource Model (NRM)"; reference "3GPP TS 28.623 Generic Network Resource Model (NRM)";
revision 2023-05-10 { reference CR-0243; }
revision 2023-02-14 { reference CR-0234; } revision 2023-02-14 { reference CR-0234; }
revision 2021-11-23 { reference "S5-216090"; } revision 2021-11-23 { reference "S5-216090"; }
revision 2021-10-18 { reference "S5-215263"; } revision 2021-10-18 { reference "S5-215263"; }
...@@ -79,6 +80,9 @@ module _3gpp-common-mnsregistry { ...@@ -79,6 +80,9 @@ module _3gpp-common-mnsregistry {
and provides the data required to support its discovery. and provides the data required to support its discovery.
It is name-contained by MnsRegistry. It is name-contained by MnsRegistry.
This specification does not specify how 'MnsInfo' objects are
created and maintained.
This information is used by the consumer to discover the producers This information is used by the consumer to discover the producers
of specific Management Services and to derive the addresses of the of specific Management Services and to derive the addresses of the
Management Service. Management Service.
......
...@@ -30,6 +30,7 @@ module _3gpp-common-subnetwork { ...@@ -30,6 +30,7 @@ module _3gpp-common-subnetwork {
3GPP TS 28.620 3GPP TS 28.620
Umbrella Information Model (UIM)"; Umbrella Information Model (UIM)";
revision 2023-08-10 { reference CR-0257; }
revision 2023-04-26 { reference CR-0250; } revision 2023-04-26 { reference CR-0250; }
revision 2023-02-14 { reference CR-0234; } revision 2023-02-14 { reference CR-0234; }
revision 2022-09-30 { reference CR-0191 ; } revision 2022-09-30 { reference CR-0191 ; }
...@@ -78,6 +79,11 @@ module _3gpp-common-subnetwork { ...@@ -78,6 +79,11 @@ module _3gpp-common-subnetwork {
SubNetwork"; SubNetwork";
} }
feature SupportedNotificationsUnderSubNetwork {
description "The SupportedNotificationsSubtree shall be contained under
SubNetwork";
}
feature FmUnderSubNetwork { feature FmUnderSubNetwork {
description "The FmSubtree shall be contained under SubNetwork"; description "The FmSubtree shall be contained under SubNetwork";
} }
...@@ -223,6 +229,10 @@ module _3gpp-common-subnetwork { ...@@ -223,6 +229,10 @@ module _3gpp-common-subnetwork {
if-feature SubscriptionControlUnderSubNetwork; if-feature SubscriptionControlUnderSubNetwork;
} }
uses subscr3gpp:SupportedNotificationsSubtree {
if-feature SupportedNotificationsUnderSubNetwork;
}
uses fm3gpp:FmSubtree { uses fm3gpp:FmSubtree {
if-feature FmUnderSubNetwork; if-feature FmUnderSubNetwork;
} }
......
...@@ -16,6 +16,7 @@ module _3gpp-common-subscription-control { ...@@ -16,6 +16,7 @@ module _3gpp-common-subscription-control {
Solution Set (SS) definitions Solution Set (SS) definitions
3GPP TS 28.623"; 3GPP TS 28.623";
revision 2023-08-10 { reference "CR0257 CR0260"; }
revision 2022-10-20 { reference CR-0196; } revision 2022-10-20 { reference CR-0196; }
revision 2021-01-16 { reference "CR-0120"; } revision 2021-01-16 { reference "CR-0120"; }
revision 2020-08-26 { reference "CR-0106"; } revision 2020-08-26 { reference "CR-0106"; }
...@@ -33,7 +34,7 @@ module _3gpp-common-subscription-control { ...@@ -33,7 +34,7 @@ module _3gpp-common-subscription-control {
type string; type string;
description "Defines the types of notifications that are candidates description "Defines the types of notifications that are candidates
for being forwarded to the notification recipient. for being forwarded to the notification recipient.
If the notificationFilter attribute is not supported or not present If the notificationTypes attribute is not supported or not present
all candidate notifications types are forwarded to the notification; all candidate notifications types are forwarded to the notification;
discriminated by notificationFilter attribute."; discriminated by notificationFilter attribute.";
} }
...@@ -128,37 +129,58 @@ module _3gpp-common-subscription-control { ...@@ -128,37 +129,58 @@ module _3gpp-common-subscription-control {
augment all user classes!"; augment all user classes!";
list NtfSubscriptionControl { list NtfSubscriptionControl {
description "A NtfSubscriptionControl instance represents the description "NtfSubscriptionControl represents a notification
notification subscription of a particular notification recipient. subscription of a notification recipient.
The scope attribute is used to select managed object instances.
The base object instance of the scope is the object instance The scope attribute is used to select managed object instances included
name-containing the NtfSubscriptionControl instance. in the subscription. The base object instance of the scope is the
The notifications related to the selected managed object instances object instance name-containing the NtfSubscriptionControl instance.
are candidates to be sent to the address specified by the When the scope attribute is absent, all objects below and including
notificationRecipientAddress attribute. the base object are scoped. The notifications related to the selected
The notificationType attribute and notificationFilter attribute managed object instances are candidates to be sent to the address
allow MnS consumers to exercise control over which candidate specified by the notificationRecipientAddress attribute.
notifications are sent to the notificationRecipientAddress.
If the notificationType attribute is supported and present, its The notificationTypes attribute and notificationFilter attribute
value identifies the allow MnS consumers to control which candidate notifications are
types of notifications that are candidate to be sent to the sent to the notificationRecipientAddress.
notificationRecipientAddress. If the notificationType attribute is
not supported or not present, all types of notifications are If the notificationTypes attribute is present, its value identifies
candidate to be sent to notificationRecipientAddress. the notification types that are candidates to be sent to the
notificationRecipientAddress. If the notificationTypes attribute is
absent, notifications of all types are candidates to be sent to
notificationRecipientAddress. Notification types supported in the
NtfSubscriptionControl.notificationTypes attribute are the ones
listed in the attribute SupportedNotifications.notificationTypes.
If supported, the notificationFilter attribute defines a filter that If supported, the notificationFilter attribute defines a filter that
is applied to the set of candidate notifications. Only candidate is applied to the set of candidate notifications. The filter is
applicable to all parameters of a notification. Only candidate
notifications that pass the filter criteria are sent to the notifications that pass the filter criteria are sent to the
notificationRecipientAddress. If the notificationFilter attribute is notificationRecipientAddress. If the notificationFilter attribute is
not supported all candidate notificatios are sent to the absent, all candidate notificatios are sent to the
notificationRecipientAddress. notificationRecipientAddress.
To receive notifications, a MnS consumer has to create
NtfSubscriptionControl object instancess on the MnS producer. To receive notifications, a MnS consumer has to create a
A MnS consumer can create a subscription for another MnS consumer NtfSubscriptionControl instance on the MnS producer. A MnS consumer
since it is not required the notificationRecipientAddress be his own can create a subscription for another MnS consumer since it is not
address. required the notificationRecipientAddress be his own address.
When a MnS consumer does not wish to receive notifications any more When a MnS consumer does not wish to receive notifications any more
the MnS consumer shall delete the corresponding NtfSubscriptionControl the MnS consumer shall delete the corresponding NtfSubscriptionControl
instance. instance.
When a subscription is created and the notification scope inludes
the created subscription object and the subscribed notification types
include notifications reporting object creation (notifyMOICreation
or notifyMOIChanges), the first notification sent related to the
new subscription shall report the creation of the
NtfSubscriptionControl instance. Likewise, when a subscription is
deleted and the notification scope inludes the deleted subscription
object and the subscribed notification types include notifications
reporting object deletion (notifyMOIDeletion or notifyMOIChanges),
the last notification sent related to the subscription shall report
the deletion of the NtfSubscriptionControl instance.
Creation and deletion of NtfSubscriptionControl instances by MnS Creation and deletion of NtfSubscriptionControl instances by MnS
consumers is optional; when not supported, the NtfSubscriptionControl consumers is optional; when not supported, the NtfSubscriptionControl
instances may be created and deleted by the system or be instances may be created and deleted by the system or be
...@@ -172,9 +194,8 @@ module _3gpp-common-subscription-control { ...@@ -172,9 +194,8 @@ module _3gpp-common-subscription-control {
list HeartbeatControl { list HeartbeatControl {
description "MnS consumers (i.e. notification recipients) use heartbeat description "MnS consumers (i.e. notification recipients) use heartbeat
notifications to monitor the communication channels between them and notifications to monitor the communication channels between themselves
data reporting MnS producers emitting notifications such as and MnS producers configured to emit notifications.
notifyNewAlarm and notifyFileReady.
A HeartbeatControl instance allows controlling the emission of A HeartbeatControl instance allows controlling the emission of
heartbeat notifications by MnS producers. The recipients of heartbeat heartbeat notifications by MnS producers. The recipients of heartbeat
...@@ -221,4 +242,47 @@ module _3gpp-common-subscription-control { ...@@ -221,4 +242,47 @@ module _3gpp-common-subscription-control {
} }
} }
} }
grouping SupportedNotificationsGrp {
description "Attributes of SupportedNotifications.";
leaf-list notificationTypes {
type string;
config false;
description "List of notification types supported by the MnS producer";
}
leaf-list notificationProtocols {
type enumeration {
enum HTTP;
enum HTTP_VES_ENCAPS;
}
config false;
min-elements 1;
description "List of protocols supported for notifications.";
reference "3GPP TS 28.532";
}
}
grouping SupportedNotificationsSubtree {
description "Contains SupportedNotifications.";
list SupportedNotifications {
description "SupportedNotifications represents the notification related
capabilities of a MnS producer.
The notificationTypes attribute lists notificationTypes supported
by the MnSProducer. Specific IOCs can be the source of a specific
but not necessary every supported notificationType.
The notificationProtocols attribute identifies the notification
transport protocols supported by a MnS producer.";
key id;
uses top3gpp:Top_Grp;
container attributes {
uses SupportedNotificationsGrp;
}
}
}
} }
\ No newline at end of file
This diff is collapsed.
...@@ -14,6 +14,7 @@ module _3gpp-common-yang-types { ...@@ -14,6 +14,7 @@ module _3gpp-common-yang-types {
network slicing."; network slicing.";
reference "3GPP TS 28.623"; reference "3GPP TS 28.623";
revision 2023-08-09 { reference CR-0266; }
revision 2023-05-10 { reference CR-0250; } revision 2023-05-10 { reference CR-0250; }
revision 2023-02-14 { reference CR-0234; } revision 2023-02-14 { reference CR-0234; }
revision 2022-11-04 { reference "CR-0194"; } revision 2022-11-04 { reference "CR-0194"; }
...@@ -728,34 +729,89 @@ module _3gpp-common-yang-types { ...@@ -728,34 +729,89 @@ module _3gpp-common-yang-types {
} }
} }
typedef DistinguishedName { // TODO is this equivalent to TS 32.300 ? /* 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 { type string {
pattern '([a-zA-Z][a-zA-Z0-9-]*=(\\( |#|\\|>|<|;|"|\+|,|[a-fA-F0-9]{2})|[^\\><;"+,# ])' pattern '[A-Z][^,=+<>#;\\"\r\n*.]*=([^,=+<>#;\\"\r\n* ]|'
+ '((\\( |#|\\|>|<|;|"|\+|,|[a-fA-F0-9]{2})|[^\\><;"+,])*' + '(\\[a-fA-F0-9]{2}))(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*'
+ '(\\( |#|\\|>|<|;|"|\+|,|[a-fA-F0-9]{2})|[^\\><;"+, ]))?' + '([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?'
+ '[,\+])*[a-zA-Z][a-zA-Z0-9-]*=(\\( |#|\\|>|<|;|"|\+|,|[a-fA-F0-9]{2})|[^\\><;"+,# ])' + '(,[A-Z][^,=+<>#;\\"\r\n*.]*=([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2}))'
+ '((\\( |#|\\|>|<|;|"|\+|,|[a-fA-F0-9]{2})' + '(([^,=+<>#;\\"\r\n*]|(\\[a-fA-F0-9]{2}))*'
+ '|[^\\><;"+,])*(\\( |#|\\|>|<|;|"|\+|,|[a-fA-F0-9]{2})|[^\\><;"+, ]))?'; + '([^,=+<>#;\\"\r\n* ]|(\\[a-fA-F0-9]{2})))?)*';
} }
description "Represents the international standard for the representation description "Represents the 3GPP standard for DistinguishedName.
of Distinguished Name (RFC 4512).
The format of the DistinguishedName REGEX is: Limitations:
{AttributeType = AttributeValue} - RDNSeparator: don't allow SpaceChar or CarriageReturnChar
- NullDN: Disallow nullDN that is the same as not providing a DN
AttributeType consists of alphanumeric and hyphen (OIDs not allowed). - NamesOfClassAndNamingAttribute format not allowed
All other characters are restricted. (eg. ManagedElement.mykey=345436)";
The Attribute value cannot contain control characters or the reference "3GPP TS 32.300";
following characters : \\ > < ; \" + , (Comma) and White space }
The Attribute value can contain the following characters if they
are excaped : \\ > < ; \" + , (Comma) and White space
The Attribute value can contain control characters if its an escaped
double digit hex number.
Examples could be
UID=nobody@example.com,DC=example,DC=com
CN=John Smith,OU=Sales,O=ACME Limited,L=Moab,ST=Utah,C=US";
reference "RFC 4512 Lightweight Directory Access Protocol (LDAP):
Directory Information Models";
} // recheck regexp it doesn't handle posix [:cntrl:]
typedef QOffsetRange { typedef QOffsetRange {
type int8 { type int8 {
......