Skip to content
Commits on Source (15)
......@@ -30,6 +30,7 @@ module _3gpp-common-managed-element {
3GPP TS 28.620
Umbrella Information Model (UIM)";
revision 2023-08-10 { reference CR-0257; }
revision 2023-04-26 { reference CR-0250; }
revision 2023-02-14 { reference "CR-0234"; }
revision 2022-09-30 { reference "CR-0191"; }
......@@ -61,6 +62,11 @@ module _3gpp-common-managed-element {
ManagedElement";
}
feature SupportedNotificationsUnderManagedElement {
description "The SupportedNotificationsSubtree shall be contained under
ManagedElement";
}
feature FmUnderManagedElement {
description "The FmSubtree shall be contained under ManagedElement";
}
......@@ -265,6 +271,10 @@ module _3gpp-common-managed-element {
if-feature SubscriptionControlUnderManagedElement;
}
uses subscr3gpp:SupportedNotificationsSubtree {
if-feature SupportedNotificationsUnderManagedElement;
}
uses fm3gpp:FmSubtree {
if-feature FmUnderManagedElement;
}
......
......@@ -13,6 +13,7 @@ module _3gpp-common-mnsregistry {
Class (IOC) that is part of the 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 2021-11-23 { reference "S5-216090"; }
revision 2021-10-18 { reference "S5-215263"; }
......@@ -79,6 +80,9 @@ module _3gpp-common-mnsregistry {
and provides the data required to support its discovery.
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
of specific Management Services and to derive the addresses of the
Management Service.
......
......@@ -30,6 +30,7 @@ module _3gpp-common-subnetwork {
3GPP TS 28.620
Umbrella Information Model (UIM)";
revision 2023-08-10 { reference CR-0257; }
revision 2023-04-26 { reference CR-0250; }
revision 2023-02-14 { reference CR-0234; }
revision 2022-09-30 { reference CR-0191 ; }
......@@ -78,6 +79,11 @@ module _3gpp-common-subnetwork {
SubNetwork";
}
feature SupportedNotificationsUnderSubNetwork {
description "The SupportedNotificationsSubtree shall be contained under
SubNetwork";
}
feature FmUnderSubNetwork {
description "The FmSubtree shall be contained under SubNetwork";
}
......@@ -223,6 +229,10 @@ module _3gpp-common-subnetwork {
if-feature SubscriptionControlUnderSubNetwork;
}
uses subscr3gpp:SupportedNotificationsSubtree {
if-feature SupportedNotificationsUnderSubNetwork;
}
uses fm3gpp:FmSubtree {
if-feature FmUnderSubNetwork;
}
......
......@@ -16,6 +16,7 @@ module _3gpp-common-subscription-control {
Solution Set (SS) definitions
3GPP TS 28.623";
revision 2023-08-10 { reference "CR0257 CR0260"; }
revision 2022-10-20 { reference CR-0196; }
revision 2021-01-16 { reference "CR-0120"; }
revision 2020-08-26 { reference "CR-0106"; }
......@@ -33,7 +34,7 @@ module _3gpp-common-subscription-control {
type string;
description "Defines the types of notifications that are candidates
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;
discriminated by notificationFilter attribute.";
}
......@@ -128,37 +129,58 @@ module _3gpp-common-subscription-control {
augment all user classes!";
list NtfSubscriptionControl {
description "A NtfSubscriptionControl instance represents the
notification subscription of a particular notification recipient.
The scope attribute is used to select managed object instances.
The base object instance of the scope is the object instance
name-containing the NtfSubscriptionControl instance.
The notifications related to the selected managed object instances
are candidates to be sent to the address specified by the
notificationRecipientAddress attribute.
The notificationType attribute and notificationFilter attribute
allow MnS consumers to exercise control over which candidate
notifications are sent to the notificationRecipientAddress.
If the notificationType attribute is supported and present, its
value identifies the
types of notifications that are candidate to be sent to the
notificationRecipientAddress. If the notificationType attribute is
not supported or not present, all types of notifications are
candidate to be sent to notificationRecipientAddress.
description "NtfSubscriptionControl represents a notification
subscription of a notification recipient.
The scope attribute is used to select managed object instances included
in the subscription. The base object instance of the scope is the
object instance name-containing the NtfSubscriptionControl instance.
When the scope attribute is absent, all objects below and including
the base object are scoped. The notifications related to the selected
managed object instances are candidates to be sent to the address
specified by the notificationRecipientAddress attribute.
The notificationTypes attribute and notificationFilter attribute
allow MnS consumers to control which candidate notifications are
sent to the notificationRecipientAddress.
If the notificationTypes attribute is present, its value identifies
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
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
notificationRecipientAddress. If the notificationFilter attribute is
not supported all candidate notificatios are sent to the
absent, all candidate notificatios are sent to the
notificationRecipientAddress.
To receive notifications, a MnS consumer has to create
NtfSubscriptionControl object instancess on the MnS producer.
A MnS consumer can create a subscription for another MnS consumer
since it is not required the notificationRecipientAddress be his own
address.
To receive notifications, a MnS consumer has to create a
NtfSubscriptionControl instance on the MnS producer. A MnS consumer
can create a subscription for another MnS consumer since it is not
required the notificationRecipientAddress be his own address.
When a MnS consumer does not wish to receive notifications any more
the MnS consumer shall delete the corresponding NtfSubscriptionControl
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
consumers is optional; when not supported, the NtfSubscriptionControl
instances may be created and deleted by the system or be
......@@ -172,9 +194,8 @@ module _3gpp-common-subscription-control {
list HeartbeatControl {
description "MnS consumers (i.e. notification recipients) use heartbeat
notifications to monitor the communication channels between them and
data reporting MnS producers emitting notifications such as
notifyNewAlarm and notifyFileReady.
notifications to monitor the communication channels between themselves
and MnS producers configured to emit notifications.
A HeartbeatControl instance allows controlling the emission of
heartbeat notifications by MnS producers. The recipients of heartbeat
......@@ -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 {
network slicing.";
reference "3GPP TS 28.623";
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"; }
......@@ -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 {
pattern '([a-zA-Z][a-zA-Z0-9-]*=(\\( |#|\\|>|<|;|"|\+|,|[a-fA-F0-9]{2})|[^\\><;"+,# ])'
+ '((\\( |#|\\|>|<|;|"|\+|,|[a-fA-F0-9]{2})|[^\\><;"+,])*'
+ '(\\( |#|\\|>|<|;|"|\+|,|[a-fA-F0-9]{2})|[^\\><;"+, ]))?'
+ '[,\+])*[a-zA-Z][a-zA-Z0-9-]*=(\\( |#|\\|>|<|;|"|\+|,|[a-fA-F0-9]{2})|[^\\><;"+,# ])'
+ '((\\( |#|\\|>|<|;|"|\+|,|[a-fA-F0-9]{2})'
+ '|[^\\><;"+,])*(\\( |#|\\|>|<|;|"|\+|,|[a-fA-F0-9]{2})|[^\\><;"+, ]))?';
}
description "Represents the international standard for the representation
of Distinguished Name (RFC 4512).
The format of the DistinguishedName REGEX is:
{AttributeType = AttributeValue}
AttributeType consists of alphanumeric and hyphen (OIDs not allowed).
All other characters are restricted.
The Attribute value cannot contain control characters or the
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:]
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 {
......