Several common and component specific yang modules created. The sysmbolic links in each component specific folder indicate a dependency to a common yang modules.
The template folder could be used to create new
specific yang modules for new components/functions.
Issue-ID: OAM-58
Change-Id: I01f278e25f6dc1e2e20fe6d5923ceca32b640c3f
Signed-off-by: demx8as6 <martin.skorupski@highstreet-technologies.com>
+++ /dev/null
-# Data models under discussion and development
-
-A directory to share ideas for data model development and to experiment with
-the new model artifacts.
-
-Please use pyang to validate the proposed yang modules and to generate
-the yang tree.
-
-```
-pyang -f tree -o all-in-one.tree *.yang
-```
-
-Note: The yang module "o-ran-sc-TEMPLATE-v1.yang" should be used as templated
-for project specific configuration management.
\ No newline at end of file
+++ /dev/null
-module iana-hardware {
- yang-version 1.1;
- namespace "urn:ietf:params:xml:ns:yang:iana-hardware";
- prefix ianahw;
-
- organization "IANA";
- contact
- " Internet Assigned Numbers Authority
-
- Postal: ICANN
- 12025 Waterfront Drive, Suite 300
- Los Angeles, CA 90094-2536
- United States of America
-
- Tel: +1 310 301 5800
- E-Mail: iana@iana.org>";
-
- description
- "IANA-defined identities for hardware class.
-
- The latest revision of this YANG module can be obtained from
- the IANA website.
-
- Requests for new values should be made to IANA via
- email (iana@iana.org).
-
- Copyright (c) 2018 IETF Trust and the persons identified as
- authors of the code. All rights reserved.
-
- Redistribution and use in source and binary forms, with or
- without modification, is permitted pursuant to, and subject
- to the license terms contained in, the Simplified BSD License
-
- set forth in Section 4.c of the IETF Trust's Legal Provisions
- Relating to IETF Documents
- (https://trustee.ietf.org/license-info).
-
- The initial version of this YANG module is part of RFC 8348;
- see the RFC itself for full legal notices.";
- reference
- "https://www.iana.org/assignments/yang-parameters";
-
- revision 2018-03-13 {
- description
- "Initial revision.";
- reference
- "RFC 8348: A YANG Data Model for Hardware Management";
- }
-
- /*
- * Identities
- */
-
- identity hardware-class {
- description
- "This identity is the base for all hardware class
- identifiers.";
- }
-
- identity unknown {
- base ianahw:hardware-class;
- description
- "This identity is applicable if the hardware class is unknown
- to the server.";
- }
-
- identity chassis {
- base ianahw:hardware-class;
- description
- "This identity is applicable if the hardware class is an
- overall container for networking equipment. Any class of
- physical component, except a stack, may be contained within a
- chassis; a chassis may only be contained within a stack.";
- }
-
- identity backplane {
- base ianahw:hardware-class;
- description
- "This identity is applicable if the hardware class is some sort
- of device for aggregating and forwarding networking traffic,
- such as a shared backplane in a modular ethernet switch. Note
- that an implementation may model a backplane as a single
- physical component, which is actually implemented as multiple
- discrete physical components (within a chassis or stack).";
- }
-
- identity container {
- base ianahw:hardware-class;
- description
- "This identity is applicable if the hardware class is capable
- of containing one or more removable physical entities,
- possibly of different types. For example, each (empty or
- full) slot in a chassis will be modeled as a container. Note
- that all removable physical components should be modeled
- within a container component, such as field-replaceable
- modules, fans, or power supplies. Note that all known
- containers should be modeled by the agent, including empty
- containers.";
- }
-
- identity power-supply {
- base ianahw:hardware-class;
- description
- "This identity is applicable if the hardware class is a
- power-supplying component.";
- }
-
- identity fan {
- base ianahw:hardware-class;
- description
- "This identity is applicable if the hardware class is a fan or
- other heat-reduction component.";
- }
-
- identity sensor {
- base ianahw:hardware-class;
- description
- "This identity is applicable if the hardware class is some sort
- of sensor, such as a temperature sensor within a router
- chassis.";
- }
-
- identity module {
- base ianahw:hardware-class;
- description
- "This identity is applicable if the hardware class is some sort
- of self-contained sub-system. If a module component is
- removable, then it should be modeled within a container
-
- component; otherwise, it should be modeled directly within
- another physical component (e.g., a chassis or another
- module).";
- }
-
- identity port {
- base ianahw:hardware-class;
- description
- "This identity is applicable if the hardware class is some sort
- of networking port capable of receiving and/or transmitting
- networking traffic.";
- }
-
- identity stack {
- base ianahw:hardware-class;
- description
- "This identity is applicable if the hardware class is some sort
- of super-container (possibly virtual) intended to group
- together multiple chassis entities. A stack may be realized
- by a virtual cable, a real interconnect cable attached to
- multiple chassis, or multiple interconnect cables. A stack
- should not be modeled within any other physical components,
- but a stack may be contained within another stack. Only
- chassis components should be contained within a stack.";
- }
-
- identity cpu {
- base ianahw:hardware-class;
- description
- "This identity is applicable if the hardware class is some sort
- of central processing unit.";
- }
-
- identity energy-object {
- base ianahw:hardware-class;
- description
- "This identity is applicable if the hardware class is some sort
- of energy object, i.e., it is a piece of equipment that is
- part of or attached to a communications network that is
- monitored, it is controlled, or it aids in the management of
- another device for Energy Management.";
- }
-
- identity battery {
- base ianahw:hardware-class;
- description
- "This identity is applicable if the hardware class is some sort
- of battery.";
- }
-
- identity storage-drive {
- base ianahw:hardware-class;
- description
- "This identity is applicable if the hardware class is some sort
- of component with data storage capability as its main
- functionality, e.g., hard disk drive (HDD), solid-state device
- (SSD), solid-state hybrid drive (SSHD), object storage device
- (OSD), or other.";
- }
-}
+++ /dev/null
-module ietf-hardware {
- yang-version 1.1;
- namespace "urn:ietf:params:xml:ns:yang:ietf-hardware";
- prefix hw;
-
- import ietf-inet-types {
- prefix inet;
- }
- import ietf-yang-types {
- prefix yang;
- }
- import iana-hardware {
- prefix ianahw;
- }
-
- organization
- "IETF NETMOD (Network Modeling) Working Group";
-
- contact
- "WG Web: <https://datatracker.ietf.org/wg/netmod/>
- WG List: <mailto:netmod@ietf.org>
-
- Editor: Andy Bierman
- <mailto:andy@yumaworks.com>
-
- Editor: Martin Bjorklund
- <mailto:mbj@tail-f.com>
-
- Editor: Jie Dong
- <mailto:jie.dong@huawei.com>
-
- Editor: Dan Romascanu
- <mailto:dromasca@gmail.com>";
-
- description
- "This module contains a collection of YANG definitions for
- managing hardware.
-
- This data model is designed for the Network Management Datastore
- Architecture (NMDA) defined in RFC 8342.
- Copyright (c) 2018 IETF Trust and the persons identified as
- authors of the code. All rights reserved.
-
- Redistribution and use in source and binary forms, with or
- without modification, is permitted pursuant to, and subject
- to the license terms contained in, the Simplified BSD License
- set forth in Section 4.c of the IETF Trust's Legal Provisions
- Relating to IETF Documents
- (https://trustee.ietf.org/license-info).
-
- This version of this YANG module is part of RFC 8348; see
- the RFC itself for full legal notices.";
-
- revision 2018-03-13 {
- description
- "Initial revision.";
- reference
- "RFC 8348: A YANG Data Model for Hardware Management";
- }
-
- /*
- * Features
- */
-
- feature entity-mib {
- description
- "This feature indicates that the device implements
- the ENTITY-MIB.";
- reference
- "RFC 6933: Entity MIB (Version 4)";
- }
-
- feature hardware-state {
- description
- "Indicates that ENTITY-STATE-MIB objects are supported";
- reference
- "RFC 4268: Entity State MIB";
- }
-
- feature hardware-sensor {
- description
- "Indicates that ENTITY-SENSOR-MIB objects are supported";
- reference
- "RFC 3433: Entity Sensor Management Information Base";
- }
-
- /*
- * Typedefs
- */
-
- typedef admin-state {
- type enumeration {
- enum unknown {
- value 1;
- description
- "The resource is unable to report administrative state.";
- }
- enum locked {
- value 2;
- description
- "The resource is administratively prohibited from use.";
- }
- enum shutting-down {
- value 3;
- description
- "The resource usage is administratively limited to current
- instances of use.";
- }
- enum unlocked {
- value 4;
- description
- "The resource is not administratively prohibited from
- use.";
- }
- }
- description
- "Represents the various possible administrative states.";
- reference
- "RFC 4268: Entity State MIB - EntityAdminState";
- }
-
- typedef oper-state {
- type enumeration {
- enum unknown {
- value 1;
- description
- "The resource is unable to report its operational state.";
- }
- enum disabled {
- value 2;
- description
- "The resource is totally inoperable.";
- }
- enum enabled {
- value 3;
-
- description
- "The resource is partially or fully operable.";
- }
- enum testing {
- value 4;
- description
- "The resource is currently being tested and cannot
- therefore report whether or not it is operational.";
- }
- }
- description
- "Represents the possible values of operational states.";
- reference
- "RFC 4268: Entity State MIB - EntityOperState";
- }
-
- typedef usage-state {
- type enumeration {
- enum unknown {
- value 1;
- description
- "The resource is unable to report usage state.";
- }
- enum idle {
- value 2;
- description
- "The resource is servicing no users.";
- }
- enum active {
- value 3;
- description
- "The resource is currently in use, and it has sufficient
- spare capacity to provide for additional users.";
- }
- enum busy {
- value 4;
- description
- "The resource is currently in use, but it currently has no
- spare capacity to provide for additional users.";
- }
- }
- description
- "Represents the possible values of usage states.";
- reference
- "RFC 4268: Entity State MIB - EntityUsageState";
- }
-
- typedef alarm-state {
- type bits {
- bit unknown {
- position 0;
- description
- "The resource is unable to report alarm state.";
- }
- bit under-repair {
- position 1;
- description
- "The resource is currently being repaired, which, depending
- on the implementation, may make the other values in this
- bit string not meaningful.";
- }
- bit critical {
- position 2;
- description
- "One or more critical alarms are active against the
- resource.";
- }
- bit major {
- position 3;
- description
- "One or more major alarms are active against the
- resource.";
- }
- bit minor {
- position 4;
- description
- "One or more minor alarms are active against the
- resource.";
- }
- bit warning {
- position 5;
- description
- "One or more warning alarms are active against the
- resource.";
- }
- bit indeterminate {
- position 6;
- description
- "One or more alarms of whose perceived severity cannot be
- determined are active against this resource.";
- }
- }
- description
- "Represents the possible values of alarm states. An alarm is a
- persistent indication of an error or warning condition.
-
- When no bits of this attribute are set, then no active alarms
- are known against this component and it is not under repair.";
- reference
- "RFC 4268: Entity State MIB - EntityAlarmStatus";
- }
-
- typedef standby-state {
- type enumeration {
- enum unknown {
- value 1;
- description
- "The resource is unable to report standby state.";
- }
- enum hot-standby {
- value 2;
- description
- "The resource is not providing service, but it will be
- immediately able to take over the role of the resource to
- be backed up, without the need for initialization
- activity, and will contain the same information as the
- resource to be backed up.";
- }
- enum cold-standby {
- value 3;
- description
- "The resource is to back up another resource, but it will
- not be immediately able to take over the role of a
- resource to be backed up and will require some
- initialization activity.";
- }
- enum providing-service {
- value 4;
- description
- "The resource is providing service.";
- }
- }
- description
- "Represents the possible values of standby states.";
- reference
- "RFC 4268: Entity State MIB - EntityStandbyStatus";
- }
-
- typedef sensor-value-type {
- type enumeration {
- enum other {
- value 1;
- description
- "A measure other than those listed below.";
- }
- enum unknown {
- value 2;
- description
- "An unknown measurement or arbitrary, relative numbers";
- }
- enum volts-AC {
- value 3;
- description
- "A measure of electric potential (alternating current).";
- }
- enum volts-DC {
- value 4;
- description
- "A measure of electric potential (direct current).";
- }
- enum amperes {
- value 5;
- description
- "A measure of electric current.";
- }
- enum watts {
- value 6;
- description
- "A measure of power.";
- }
- enum hertz {
- value 7;
- description
- "A measure of frequency.";
- }
- enum celsius {
- value 8;
- description
- "A measure of temperature.";
- }
- enum percent-RH {
- value 9;
- description
- "A measure of percent relative humidity.";
- }
- enum rpm {
- value 10;
- description
- "A measure of shaft revolutions per minute.";
- }
- enum cmm {
- value 11;
- description
- "A measure of cubic meters per minute (airflow).";
- }
- enum truth-value {
- value 12;
- description
- "Value is one of 1 (true) or 2 (false)";
- }
- }
- description
- "A node using this data type represents the sensor measurement
- data type associated with a physical sensor value. The actual
- data units are determined by examining a node of this type
- together with the associated sensor-value-scale node.
-
- A node of this type SHOULD be defined together with nodes of
- type sensor-value-scale and type sensor-value-precision.
- These three types are used to identify the semantics of a node
- of type sensor-value.";
- reference
- "RFC 3433: Entity Sensor Management Information Base -
- EntitySensorDataType";
- }
-
- typedef sensor-value-scale {
- type enumeration {
- enum yocto {
- value 1;
- description
- "Data scaling factor of 10^-24.";
- }
- enum zepto {
- value 2;
- description
- "Data scaling factor of 10^-21.";
- }
- enum atto {
- value 3;
- description
- "Data scaling factor of 10^-18.";
- }
- enum femto {
- value 4;
- description
- "Data scaling factor of 10^-15.";
- }
- enum pico {
- value 5;
- description
- "Data scaling factor of 10^-12.";
- }
- enum nano {
- value 6;
- description
- "Data scaling factor of 10^-9.";
- }
- enum micro {
- value 7;
- description
- "Data scaling factor of 10^-6.";
- }
- enum milli {
- value 8;
- description
- "Data scaling factor of 10^-3.";
- }
- enum units {
- value 9;
- description
- "Data scaling factor of 10^0.";
- }
- enum kilo {
- value 10;
- description
- "Data scaling factor of 10^3.";
- }
- enum mega {
- value 11;
- description
- "Data scaling factor of 10^6.";
- }
- enum giga {
- value 12;
- description
- "Data scaling factor of 10^9.";
- }
- enum tera {
- value 13;
- description
- "Data scaling factor of 10^12.";
- }
- enum peta {
- value 14;
- description
- "Data scaling factor of 10^15.";
- }
- enum exa {
- value 15;
- description
- "Data scaling factor of 10^18.";
- }
- enum zetta {
- value 16;
- description
- "Data scaling factor of 10^21.";
- }
- enum yotta {
- value 17;
- description
- "Data scaling factor of 10^24.";
- }
- }
- description
- "A node using this data type represents a data scaling factor,
- represented with an International System of Units (SI) prefix.
- The actual data units are determined by examining a node of
- this type together with the associated sensor-value-type.
-
- A node of this type SHOULD be defined together with nodes of
- type sensor-value-type and type sensor-value-precision.
- Together, associated nodes of these three types are used to
- identify the semantics of a node of type sensor-value.";
- reference
- "RFC 3433: Entity Sensor Management Information Base -
- EntitySensorDataScale";
- }
-
- typedef sensor-value-precision {
- type int8 {
- range "-8 .. 9";
- }
- description
- "A node using this data type represents a sensor value
- precision range.
-
- A node of this type SHOULD be defined together with nodes of
- type sensor-value-type and type sensor-value-scale. Together,
- associated nodes of these three types are used to identify the
- semantics of a node of type sensor-value.
-
- If a node of this type contains a value in the range 1 to 9,
- it represents the number of decimal places in the fractional
- part of an associated sensor-value fixed-point number.
-
- If a node of this type contains a value in the range -8 to -1,
- it represents the number of accurate digits in the associated
- sensor-value fixed-point number.
-
- The value zero indicates the associated sensor-value node is
- not a fixed-point number.
-
- Server implementers must choose a value for the associated
- sensor-value-precision node so that the precision and accuracy
- of the associated sensor-value node is correctly indicated.
-
- For example, a component representing a temperature sensor
- that can measure 0 to 100 degrees C in 0.1 degree
- increments, +/- 0.05 degrees, would have a
- sensor-value-precision value of '1', a sensor-value-scale
- value of 'units', and a sensor-value ranging from '0' to
- '1000'. The sensor-value would be interpreted as
- 'degrees C * 10'.";
- reference
- "RFC 3433: Entity Sensor Management Information Base -
- EntitySensorPrecision";
- }
-
- typedef sensor-value {
- type int32 {
- range "-1000000000 .. 1000000000";
- }
- description
- "A node using this data type represents a sensor value.
-
- A node of this type SHOULD be defined together with nodes of
- type sensor-value-type, type sensor-value-scale, and
- type sensor-value-precision. Together, associated nodes of
- those three types are used to identify the semantics of a node
- of this data type.
-
- The semantics of a node using this data type are determined by
- the value of the associated sensor-value-type node.
-
- If the associated sensor-value-type node is equal to 'voltsAC',
- 'voltsDC', 'amperes', 'watts', 'hertz', 'celsius', or 'cmm',
- then a node of this type MUST contain a fixed-point number
- ranging from -999,999,999 to +999,999,999. The value
- -1000000000 indicates an underflow error. The value
- +1000000000 indicates an overflow error. The
- sensor-value-precision indicates how many fractional digits
- are represented in the associated sensor-value node.
-
- If the associated sensor-value-type node is equal to
- 'percentRH', then a node of this type MUST contain a number
- ranging from 0 to 100.
-
- If the associated sensor-value-type node is equal to 'rpm',
- then a node of this type MUST contain a number ranging from
- -999,999,999 to +999,999,999.
-
- If the associated sensor-value-type node is equal to
- 'truth-value', then a node of this type MUST contain either the
- value 1 (true) or the value 2 (false).
-
- If the associated sensor-value-type node is equal to 'other' or
- 'unknown', then a node of this type MUST contain a number
- ranging from -1000000000 to 1000000000.";
- reference
- "RFC 3433: Entity Sensor Management Information Base -
- EntitySensorValue";
- }
-
- typedef sensor-status {
- type enumeration {
- enum ok {
- value 1;
- description
- "Indicates that the server can obtain the sensor value.";
- }
- enum unavailable {
- value 2;
- description
- "Indicates that the server presently cannot obtain the
- sensor value.";
- }
- enum nonoperational {
- value 3;
- description
- "Indicates that the server believes the sensor is broken.
- The sensor could have a hard failure (disconnected wire)
- or a soft failure such as out-of-range, jittery, or wildly
- fluctuating readings.";
- }
- }
- description
- "A node using this data type represents the operational status
- of a physical sensor.";
- reference
- "RFC 3433: Entity Sensor Management Information Base -
- EntitySensorStatus";
- }
-
- /*
- * Data nodes
- */
-
- container hardware {
- description
- "Data nodes representing components.
-
- If the server supports configuration of hardware components,
- then this data model is instantiated in the configuration
- datastores supported by the server. The leaf-list 'datastore'
- for the module 'ietf-hardware' in the YANG library provides
- this information.";
-
- leaf last-change {
- type yang:date-and-time;
- config false;
- description
- "The time the '/hardware/component' list changed in the
- operational state.";
- }
-
- list component {
- key name;
- description
- "List of components.
-
- When the server detects a new hardware component, it
- initializes a list entry in the operational state.
-
- If the server does not support configuration of hardware
- components, list entries in the operational state are
- initialized with values for all nodes as detected by the
- implementation.
-
- Otherwise, this procedure is followed:
-
- 1. If there is an entry in the '/hardware/component' list
- in the intended configuration with values for the nodes
- 'class', 'parent', and 'parent-rel-pos' that are equal
- to the detected values, then the list entry in the
- operational state is initialized with the configured
- values, including the 'name'.
-
- 2. Otherwise (i.e., there is no matching configuration
- entry), the list entry in the operational state is
- initialized with values for all nodes as detected by
- the implementation.
-
- If the '/hardware/component' list in the intended
- configuration is modified, then the system MUST behave as if
- it re-initializes itself and follow the procedure in (1).";
- reference
- "RFC 6933: Entity MIB (Version 4) - entPhysicalEntry";
-
- leaf name {
- type string;
- description
- "The name assigned to this component.
-
- This name is not required to be the same as
- entPhysicalName.";
- }
-
- leaf class {
- type identityref {
- base ianahw:hardware-class;
- }
- mandatory true;
- description
- "An indication of the general hardware type of the
- component.";
- reference
- "RFC 6933: Entity MIB (Version 4) - entPhysicalClass";
- }
-
- leaf physical-index {
- if-feature entity-mib;
- type int32 {
- range "1..2147483647";
- }
- config false;
- description
- "The entPhysicalIndex for the entPhysicalEntry represented
- by this list entry.";
- reference
- "RFC 6933: Entity MIB (Version 4) - entPhysicalIndex";
- }
-
- leaf description {
- type string;
- config false;
- description
- "A textual description of the component. This node should
- contain a string that identifies the manufacturer's name
- for the component and should be set to a distinct value
- for each version or model of the component.";
- reference
- "RFC 6933: Entity MIB (Version 4) - entPhysicalDescr";
- }
-
- leaf parent {
- type leafref {
- path "../../component/name";
- require-instance false;
- }
- description
- "The name of the component that physically contains this
- component.
-
- If this leaf is not instantiated, it indicates that this
- component is not contained in any other component.
-
- In the event that a physical component is contained by
- more than one physical component (e.g., double-wide
- modules), this node contains the name of one of these
- components. An implementation MUST use the same name
- every time this node is instantiated.";
- reference
- "RFC 6933: Entity MIB (Version 4) - entPhysicalContainedIn";
- }
-
- leaf parent-rel-pos {
- type int32 {
- range "0 .. 2147483647";
- }
- description
- "An indication of the relative position of this child
- component among all its sibling components. Sibling
- components are defined as components that:
-
- o share the same value of the 'parent' node and
-
- o share a common base identity for the 'class' node.
-
- Note that the last rule gives implementations flexibility
- in how components are numbered. For example, some
- implementations might have a single number series for all
- components derived from 'ianahw:port', while some others
- might have different number series for different
- components with identities derived from 'ianahw:port' (for
- example, one for registered jack 45 (RJ45) and one for
- small form-factor pluggable (SFP)).";
-
- reference
- "RFC 6933: Entity MIB (Version 4) -
- entPhysicalParentRelPos";
- }
-
- leaf-list contains-child {
- type leafref {
- path "../../component/name";
- }
- config false;
- description
- "The name of the contained component.";
- reference
- "RFC 6933: Entity MIB (Version 4) - entPhysicalChildIndex";
- }
-
- leaf hardware-rev {
- type string;
- config false;
- description
- "The vendor-specific hardware revision string for the
- component. The preferred value is the hardware revision
- identifier actually printed on the component itself (if
- present).";
- reference
- "RFC 6933: Entity MIB (Version 4) -
- entPhysicalHardwareRev";
- }
-
- leaf firmware-rev {
- type string;
- config false;
- description
- "The vendor-specific firmware revision string for the
- component.";
- reference
- "RFC 6933: Entity MIB (Version 4) -
- entPhysicalFirmwareRev";
- }
-
- leaf software-rev {
- type string;
- config false;
-
- description
- "The vendor-specific software revision string for the
- component.";
- reference
- "RFC 6933: Entity MIB (Version 4) -
- entPhysicalSoftwareRev";
- }
-
- leaf serial-num {
- type string;
- config false;
- description
- "The vendor-specific serial number string for the
- component. The preferred value is the serial number
- string actually printed on the component itself (if
- present).";
- reference
- "RFC 6933: Entity MIB (Version 4) - entPhysicalSerialNum";
- }
-
- leaf mfg-name {
- type string;
- config false;
- description
- "The name of the manufacturer of this physical component.
- The preferred value is the manufacturer name string
- actually printed on the component itself (if present).
-
- Note that comparisons between instances of the
- 'model-name', 'firmware-rev', 'software-rev', and
- 'serial-num' nodes are only meaningful amongst components
- with the same value of 'mfg-name'.
-
- If the manufacturer name string associated with the
- physical component is unknown to the server, then this
- node is not instantiated.";
- reference
- "RFC 6933: Entity MIB (Version 4) - entPhysicalMfgName";
- }
-
- leaf model-name {
- type string;
- config false;
- description
- "The vendor-specific model name identifier string
- associated with this physical component. The preferred
- value is the customer-visible part number, which may be
- printed on the component itself.
- If the model name string associated with the physical
- component is unknown to the server, then this node is not
- instantiated.";
- reference
- "RFC 6933: Entity MIB (Version 4) - entPhysicalModelName";
- }
-
- leaf alias {
- type string;
- description
- "An 'alias' name for the component, as specified by a
- network manager, that provides a non-volatile 'handle' for
- the component.
-
- If no configured value exists, the server MAY set the
- value of this node to a locally unique value in the
- operational state.
-
- A server implementation MAY map this leaf to the
- entPhysicalAlias MIB object. Such an implementation needs
- to use some mechanism to handle the differences in size
- and characters allowed between this leaf and
- entPhysicalAlias. The definition of such a mechanism is
- outside the scope of this document.";
- reference
- "RFC 6933: Entity MIB (Version 4) - entPhysicalAlias";
- }
-
- leaf asset-id {
- type string;
- description
- "This node is a user-assigned asset tracking identifier for
- the component.
-
- A server implementation MAY map this leaf to the
- entPhysicalAssetID MIB object. Such an implementation
- needs to use some mechanism to handle the differences in
- size and characters allowed between this leaf and
- entPhysicalAssetID. The definition of such a mechanism is
- outside the scope of this document.";
- reference
- "RFC 6933: Entity MIB (Version 4) - entPhysicalAssetID";
- }
-
- leaf is-fru {
- type boolean;
- config false;
-
- description
- "This node indicates whether or not this component is
- considered a 'field-replaceable unit' by the vendor. If
- this node contains the value 'true', then this component
- identifies a field-replaceable unit. For all components
- that are permanently contained within a field-replaceable
- unit, the value 'false' should be returned for this
- node.";
- reference
- "RFC 6933: Entity MIB (Version 4) - entPhysicalIsFRU";
- }
-
- leaf mfg-date {
- type yang:date-and-time;
- config false;
- description
- "The date of manufacturing of the managed component.";
- reference
- "RFC 6933: Entity MIB (Version 4) - entPhysicalMfgDate";
- }
-
- leaf-list uri {
- type inet:uri;
- description
- "This node contains identification information about the
- component.";
- reference
- "RFC 6933: Entity MIB (Version 4) - entPhysicalUris";
- }
-
- leaf uuid {
- type yang:uuid;
- config false;
- description
- "A Universally Unique Identifier of the component.";
- reference
- "RFC 6933: Entity MIB (Version 4) - entPhysicalUUID";
- }
-
- container state {
- if-feature hardware-state;
- description
- "State-related nodes";
- reference
- "RFC 4268: Entity State MIB";
-
- leaf state-last-changed {
- type yang:date-and-time;
- config false;
- description
- "The date and time when the value of any of the
- admin-state, oper-state, usage-state, alarm-state, or
- standby-state changed for this component.
-
- If there has been no change since the last
- re-initialization of the local system, this node
- contains the date and time of local system
- initialization. If there has been no change since the
- component was added to the local system, this node
- contains the date and time of the insertion.";
- reference
- "RFC 4268: Entity State MIB - entStateLastChanged";
- }
-
- leaf admin-state {
- type admin-state;
- description
- "The administrative state for this component.
-
- This node refers to a component's administrative
- permission to service both other components within its
- containment hierarchy as well other users of its
- services defined by means outside the scope of this
- module.
-
- Some components exhibit only a subset of the remaining
- administrative state values. Some components cannot be
- locked; hence, this node exhibits only the 'unlocked'
- state. Other components cannot be shut down gracefully;
- hence, this node does not exhibit the 'shutting-down'
- state.";
- reference
- "RFC 4268: Entity State MIB - entStateAdmin";
- }
-
- leaf oper-state {
- type oper-state;
- config false;
- description
- "The operational state for this component.
-
- Note that this node does not follow the administrative
- state. An administrative state of 'down' does not
- predict an operational state of 'disabled'.
-
- Note that some implementations may not be able to
- accurately report oper-state while the admin-state node
- has a value other than 'unlocked'. In these cases, this
- node MUST have a value of 'unknown'.";
- reference
- "RFC 4268: Entity State MIB - entStateOper";
- }
-
- leaf usage-state {
- type usage-state;
- config false;
- description
- "The usage state for this component.
-
- This node refers to a component's ability to service
- more components in a containment hierarchy.
-
- Some components will exhibit only a subset of the usage
- state values. Components that are unable to ever
- service any components within a containment hierarchy
- will always have a usage state of 'busy'. In some
- cases, a component will be able to support only one
- other component within its containment hierarchy and
- will therefore only exhibit values of 'idle' and
- 'busy'.";
- reference
- "RFC 4268: Entity State MIB - entStateUsage";
- }
-
- leaf alarm-state {
- type alarm-state;
- config false;
- description
- "The alarm state for this component. It does not
- include the alarms raised on child components within its
- containment hierarchy.";
- reference
- "RFC 4268: Entity State MIB - entStateAlarm";
- }
-
- leaf standby-state {
- type standby-state;
- config false;
- description
- "The standby state for this component.
-
- Some components will exhibit only a subset of the
- remaining standby state values. If this component
- cannot operate in a standby role, the value of this node
- will always be 'providing-service'.";
- reference
- "RFC 4268: Entity State MIB - entStateStandby";
- }
- }
-
- container sensor-data {
- when 'derived-from-or-self(../class,
- "ianahw:sensor")' {
- description
- "Sensor data nodes present for any component of type
- 'sensor'";
- }
- if-feature hardware-sensor;
- config false;
-
- description
- "Sensor-related nodes.";
- reference
- "RFC 3433: Entity Sensor Management Information Base";
-
- leaf value {
- type sensor-value;
- description
- "The most recent measurement obtained by the server
- for this sensor.
-
- A client that periodically fetches this node should also
- fetch the nodes 'value-type', 'value-scale', and
- 'value-precision', since they may change when the value
- is changed.";
- reference
- "RFC 3433: Entity Sensor Management Information Base -
- entPhySensorValue";
- }
-
- leaf value-type {
- type sensor-value-type;
- description
- "The type of data units associated with the
- sensor value";
- reference
- "RFC 3433: Entity Sensor Management Information Base -
- entPhySensorType";
- }
- leaf value-scale {
- type sensor-value-scale;
- description
- "The (power of 10) scaling factor associated
- with the sensor value";
- reference
- "RFC 3433: Entity Sensor Management Information Base -
- entPhySensorScale";
- }
-
- leaf value-precision {
- type sensor-value-precision;
- description
- "The number of decimal places of precision
- associated with the sensor value";
- reference
- "RFC 3433: Entity Sensor Management Information Base -
- entPhySensorPrecision";
- }
-
- leaf oper-status {
- type sensor-status;
- description
- "The operational status of the sensor.";
- reference
- "RFC 3433: Entity Sensor Management Information Base -
- entPhySensorOperStatus";
- }
-
- leaf units-display {
- type string;
- description
- "A textual description of the data units that should be
- used in the display of the sensor value.";
- reference
- "RFC 3433: Entity Sensor Management Information Base -
- entPhySensorUnitsDisplay";
- }
-
- leaf value-timestamp {
- type yang:date-and-time;
- description
- "The time the status and/or value of this sensor was last
- obtained by the server.";
- reference
- "RFC 3433: Entity Sensor Management Information Base -
- entPhySensorValueTimeStamp";
- }
- leaf value-update-rate {
- type uint32;
- units "milliseconds";
- description
- "An indication of the frequency that the server updates
- the associated 'value' node, represented in
- milliseconds. The value zero indicates:
-
- - the sensor value is updated on demand (e.g.,
- when polled by the server for a get-request),
-
- - the sensor value is updated when the sensor
- value changes (event-driven), or
-
- - the server does not know the update rate.";
- reference
- "RFC 3433: Entity Sensor Management Information Base -
- entPhySensorValueUpdateRate";
- }
- }
- }
- }
-
- /*
- * Notifications
- */
-
- notification hardware-state-change {
- description
- "A hardware-state-change notification is generated when the
- value of /hardware/last-change changes in the operational
- state.";
- reference
- "RFC 6933: Entity MIB (Version 4) - entConfigChange";
- }
-
- notification hardware-state-oper-enabled {
- if-feature hardware-state;
- description
- "A hardware-state-oper-enabled notification signifies that a
- component has transitioned into the 'enabled' state.";
-
- leaf name {
- type leafref {
- path "/hardware/component/name";
- }
-
- description
- "The name of the component that has transitioned into the
- 'enabled' state.";
- }
- leaf admin-state {
- type leafref {
- path "/hardware/component/state/admin-state";
- }
- description
- "The administrative state for the component.";
- }
- leaf alarm-state {
- type leafref {
- path "/hardware/component/state/alarm-state";
- }
- description
- "The alarm state for the component.";
- }
- reference
- "RFC 4268: Entity State MIB - entStateOperEnabled";
- }
-
- notification hardware-state-oper-disabled {
- if-feature hardware-state;
- description
- "A hardware-state-oper-disabled notification signifies that a
- component has transitioned into the 'disabled' state.";
-
- leaf name {
- type leafref {
- path "/hardware/component/name";
- }
- description
- "The name of the component that has transitioned into the
- 'disabled' state.";
- }
- leaf admin-state {
- type leafref {
- path "/hardware/component/state/admin-state";
- }
- description
- "The administrative state for the component.";
- }
- leaf alarm-state {
- type leafref {
- path "/hardware/component/state/alarm-state";
- }
-
- description
- "The alarm state for the component.";
- }
- reference
- "RFC 4268: Entity State MIB - entStateOperDisabled";
- }
-
-}
+++ /dev/null
-module ietf-inet-types {
-
- namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types";
- prefix "inet";
-
- organization
- "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
-
- contact
- "WG Web: <http://tools.ietf.org/wg/netmod/>
- WG List: <mailto:netmod@ietf.org>
-
- WG Chair: David Kessens
- <mailto:david.kessens@nsn.com>
-
- WG Chair: Juergen Schoenwaelder
- <mailto:j.schoenwaelder@jacobs-university.de>
-
- Editor: Juergen Schoenwaelder
- <mailto:j.schoenwaelder@jacobs-university.de>";
-
- description
- "This module contains a collection of generally useful derived
- YANG data types for Internet addresses and related things.
-
- Copyright (c) 2013 IETF Trust and the persons identified as
- authors of the code. All rights reserved.
-
- Redistribution and use in source and binary forms, with or
- without modification, is permitted pursuant to, and subject
- to the license terms contained in, the Simplified BSD License
- set forth in Section 4.c of the IETF Trust's Legal Provisions
- Relating to IETF Documents
- (http://trustee.ietf.org/license-info).
-
- This version of this YANG module is part of RFC 6991; see
- the RFC itself for full legal notices.";
-
- revision 2013-07-15 {
- description
- "This revision adds the following new data types:
- - ip-address-no-zone
- - ipv4-address-no-zone
- - ipv6-address-no-zone";
- reference
- "RFC 6991: Common YANG Data Types";
- }
-
- revision 2010-09-24 {
- description
- "Initial revision.";
- reference
- "RFC 6021: Common YANG Data Types";
- }
-
- /*** collection of types related to protocol fields ***/
-
- typedef ip-version {
- type enumeration {
- enum unknown {
- value "0";
- description
- "An unknown or unspecified version of the Internet
- protocol.";
- }
- enum ipv4 {
- value "1";
- description
- "The IPv4 protocol as defined in RFC 791.";
- }
- enum ipv6 {
- value "2";
- description
- "The IPv6 protocol as defined in RFC 2460.";
- }
- }
- description
- "This value represents the version of the IP protocol.
-
- In the value set and its semantics, this type is equivalent
- to the InetVersion textual convention of the SMIv2.";
- reference
- "RFC 791: Internet Protocol
- RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
- RFC 4001: Textual Conventions for Internet Network Addresses";
- }
-
- typedef dscp {
- type uint8 {
- range "0..63";
- }
- description
- "The dscp type represents a Differentiated Services Code Point
- that may be used for marking packets in a traffic stream.
- In the value set and its semantics, this type is equivalent
- to the Dscp textual convention of the SMIv2.";
- reference
- "RFC 3289: Management Information Base for the Differentiated
- Services Architecture
- RFC 2474: Definition of the Differentiated Services Field
- (DS Field) in the IPv4 and IPv6 Headers
- RFC 2780: IANA Allocation Guidelines For Values In
- the Internet Protocol and Related Headers";
- }
-
- typedef ipv6-flow-label {
- type uint32 {
- range "0..1048575";
- }
- description
- "The ipv6-flow-label type represents the flow identifier or Flow
- Label in an IPv6 packet header that may be used to
- discriminate traffic flows.
-
- In the value set and its semantics, this type is equivalent
- to the IPv6FlowLabel textual convention of the SMIv2.";
- reference
- "RFC 3595: Textual Conventions for IPv6 Flow Label
- RFC 2460: Internet Protocol, Version 6 (IPv6) Specification";
- }
-
- typedef port-number {
- type uint16 {
- range "0..65535";
- }
- description
- "The port-number type represents a 16-bit port number of an
- Internet transport-layer protocol such as UDP, TCP, DCCP, or
- SCTP. Port numbers are assigned by IANA. A current list of
- all assignments is available from <http://www.iana.org/>.
-
- Note that the port number value zero is reserved by IANA. In
- situations where the value zero does not make sense, it can
- be excluded by subtyping the port-number type.
- In the value set and its semantics, this type is equivalent
- to the InetPortNumber textual convention of the SMIv2.";
- reference
- "RFC 768: User Datagram Protocol
- RFC 793: Transmission Control Protocol
- RFC 4960: Stream Control Transmission Protocol
- RFC 4340: Datagram Congestion Control Protocol (DCCP)
- RFC 4001: Textual Conventions for Internet Network Addresses";
- }
-
- /*** collection of types related to autonomous systems ***/
-
- typedef as-number {
- type uint32;
- description
- "The as-number type represents autonomous system numbers
- which identify an Autonomous System (AS). An AS is a set
- of routers under a single technical administration, using
- an interior gateway protocol and common metrics to route
- packets within the AS, and using an exterior gateway
- protocol to route packets to other ASes. IANA maintains
- the AS number space and has delegated large parts to the
- regional registries.
-
- Autonomous system numbers were originally limited to 16
- bits. BGP extensions have enlarged the autonomous system
- number space to 32 bits. This type therefore uses an uint32
- base type without a range restriction in order to support
- a larger autonomous system number space.
-
- In the value set and its semantics, this type is equivalent
- to the InetAutonomousSystemNumber textual convention of
- the SMIv2.";
- reference
- "RFC 1930: Guidelines for creation, selection, and registration
- of an Autonomous System (AS)
- RFC 4271: A Border Gateway Protocol 4 (BGP-4)
- RFC 4001: Textual Conventions for Internet Network Addresses
- RFC 6793: BGP Support for Four-Octet Autonomous System (AS)
- Number Space";
- }
-
- /*** collection of types related to IP addresses and hostnames ***/
-
- typedef ip-address {
- type union {
- type inet:ipv4-address;
- type inet:ipv6-address;
- }
- description
- "The ip-address type represents an IP address and is IP
- version neutral. The format of the textual representation
- implies the IP version. This type supports scoped addresses
- by allowing zone identifiers in the address format.";
- reference
- "RFC 4007: IPv6 Scoped Address Architecture";
- }
-
- typedef ipv4-address {
- type string {
- pattern
- '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
- + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
- + '(%[\p{N}\p{L}]+)?';
- }
- description
- "The ipv4-address type represents an IPv4 address in
- dotted-quad notation. The IPv4 address may include a zone
- index, separated by a % sign.
-
- The zone index is used to disambiguate identical address
- values. For link-local addresses, the zone index will
- typically be the interface index number or the name of an
- interface. If the zone index is not present, the default
- zone of the device will be used.
-
- The canonical format for the zone index is the numerical
- format";
- }
-
- typedef ipv6-address {
- type string {
- pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
- + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
- + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
- + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
- + '(%[\p{N}\p{L}]+)?';
- pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
- + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
- + '(%.+)?';
- }
- description
- "The ipv6-address type represents an IPv6 address in full,
- mixed, shortened, and shortened-mixed notation. The IPv6
- address may include a zone index, separated by a % sign.
-
- The zone index is used to disambiguate identical address
- values. For link-local addresses, the zone index will
- typically be the interface index number or the name of an
- interface. If the zone index is not present, the default
- zone of the device will be used.
-
- The canonical format of IPv6 addresses uses the textual
- representation defined in Section 4 of RFC 5952. The
- canonical format for the zone index is the numerical
- format as described in Section 11.2 of RFC 4007.";
- reference
- "RFC 4291: IP Version 6 Addressing Architecture
- RFC 4007: IPv6 Scoped Address Architecture
- RFC 5952: A Recommendation for IPv6 Address Text
- Representation";
- }
-
- typedef ip-address-no-zone {
- type union {
- type inet:ipv4-address-no-zone;
- type inet:ipv6-address-no-zone;
- }
- description
- "The ip-address-no-zone type represents an IP address and is
- IP version neutral. The format of the textual representation
- implies the IP version. This type does not support scoped
- addresses since it does not allow zone identifiers in the
- address format.";
- reference
- "RFC 4007: IPv6 Scoped Address Architecture";
- }
-
- typedef ipv4-address-no-zone {
- type inet:ipv4-address {
- pattern '[0-9\.]*';
- }
- description
- "An IPv4 address without a zone index. This type, derived from
- ipv4-address, may be used in situations where the zone is
- known from the context and hence no zone index is needed.";
- }
-
- typedef ipv6-address-no-zone {
- type inet:ipv6-address {
- pattern '[0-9a-fA-F:\.]*';
- }
- description
- "An IPv6 address without a zone index. This type, derived from
- ipv6-address, may be used in situations where the zone is
- known from the context and hence no zone index is needed.";
- reference
- "RFC 4291: IP Version 6 Addressing Architecture
- RFC 4007: IPv6 Scoped Address Architecture
- RFC 5952: A Recommendation for IPv6 Address Text
- Representation";
- }
-
- typedef ip-prefix {
- type union {
- type inet:ipv4-prefix;
- type inet:ipv6-prefix;
- }
- description
- "The ip-prefix type represents an IP prefix and is IP
- version neutral. The format of the textual representations
- implies the IP version.";
- }
-
- typedef ipv4-prefix {
- type string {
- pattern
- '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
- + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
- + '/(([0-9])|([1-2][0-9])|(3[0-2]))';
- }
- description
- "The ipv4-prefix type represents an IPv4 address prefix.
- The prefix length is given by the number following the
- slash character and must be less than or equal to 32.
-
- A prefix length value of n corresponds to an IP address
- mask that has n contiguous 1-bits from the most
- significant bit (MSB) and all other bits set to 0.
-
- The canonical format of an IPv4 prefix has all bits of
- the IPv4 address set to zero that are not part of the
- IPv4 prefix.";
- }
-
- typedef ipv6-prefix {
- type string {
- pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
- + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
- + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
- + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
- + '(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))';
- pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
- + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
- + '(/.+)';
- }
-
- description
- "The ipv6-prefix type represents an IPv6 address prefix.
- The prefix length is given by the number following the
- slash character and must be less than or equal to 128.
-
- A prefix length value of n corresponds to an IP address
- mask that has n contiguous 1-bits from the most
- significant bit (MSB) and all other bits set to 0.
-
- The IPv6 address should have all bits that do not belong
- to the prefix set to zero.
-
- The canonical format of an IPv6 prefix has all bits of
- the IPv6 address set to zero that are not part of the
- IPv6 prefix. Furthermore, the IPv6 address is represented
- as defined in Section 4 of RFC 5952.";
- reference
- "RFC 5952: A Recommendation for IPv6 Address Text
- Representation";
- }
-
- /*** collection of domain name and URI types ***/
-
- typedef domain-name {
- type string {
- length "1..253";
- pattern
- '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*'
- + '([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)'
- + '|\.';
- }
- description
- "The domain-name type represents a DNS domain name. The
- name SHOULD be fully qualified whenever possible.
-
- Internet domain names are only loosely specified. Section
- 3.5 of RFC 1034 recommends a syntax (modified in Section
- 2.1 of RFC 1123). The pattern above is intended to allow
- for current practice in domain name use, and some possible
- future expansion. It is designed to hold various types of
- domain names, including names used for A or AAAA records
- (host names) and other records, such as SRV records. Note
- that Internet host names have a stricter syntax (described
- in RFC 952) than the DNS recommendations in RFCs 1034 and
- 1123, and that systems that want to store host names in
- schema nodes using the domain-name type are recommended to
- adhere to this stricter standard to ensure interoperability.
-
- The encoding of DNS names in the DNS protocol is limited
- to 255 characters. Since the encoding consists of labels
- prefixed by a length bytes and there is a trailing NULL
- byte, only 253 characters can appear in the textual dotted
- notation.
-
- The description clause of schema nodes using the domain-name
- type MUST describe when and how these names are resolved to
- IP addresses. Note that the resolution of a domain-name value
- may require to query multiple DNS records (e.g., A for IPv4
- and AAAA for IPv6). The order of the resolution process and
- which DNS record takes precedence can either be defined
- explicitly or may depend on the configuration of the
- resolver.
-
- Domain-name values use the US-ASCII encoding. Their canonical
- format uses lowercase US-ASCII characters. Internationalized
- domain names MUST be A-labels as per RFC 5890.";
- reference
- "RFC 952: DoD Internet Host Table Specification
- RFC 1034: Domain Names - Concepts and Facilities
- RFC 1123: Requirements for Internet Hosts -- Application
- and Support
- RFC 2782: A DNS RR for specifying the location of services
- (DNS SRV)
- RFC 5890: Internationalized Domain Names in Applications
- (IDNA): Definitions and Document Framework";
- }
-
- typedef host {
- type union {
- type inet:ip-address;
- type inet:domain-name;
- }
- description
- "The host type represents either an IP address or a DNS
- domain name.";
- }
-
- typedef uri {
- type string;
- description
- "The uri type represents a Uniform Resource Identifier
- (URI) as defined by STD 66.
-
- Objects using the uri type MUST be in US-ASCII encoding,
- and MUST be normalized as described by RFC 3986 Sections
- 6.2.1, 6.2.2.1, and 6.2.2.2. All unnecessary
- percent-encoding is removed, and all case-insensitive
- characters are set to lowercase except for hexadecimal
- digits, which are normalized to uppercase as described in
- Section 6.2.2.1.
-
- The purpose of this normalization is to help provide
- unique URIs. Note that this normalization is not
- sufficient to provide uniqueness. Two URIs that are
- textually distinct after this normalization may still be
- equivalent.
-
- Objects using the uri type may restrict the schemes that
- they permit. For example, 'data:' and 'urn:' schemes
- might not be appropriate.
-
- A zero-length URI is not a valid URI. This can be used to
- express 'URI absent' where required.
-
- In the value set and its semantics, this type is equivalent
- to the Uri SMIv2 textual convention defined in RFC 5017.";
- reference
- "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
- RFC 3305: Report from the Joint W3C/IETF URI Planning Interest
- Group: Uniform Resource Identifiers (URIs), URLs,
- and Uniform Resource Names (URNs): Clarifications
- and Recommendations
- RFC 5017: MIB Textual Conventions for Uniform Resource
- Identifiers (URIs)";
- }
-
-}
+++ /dev/null
-module ietf-interfaces {
- yang-version 1.1;
- namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
- prefix if;
-
- import ietf-yang-types {
- prefix yang;
- }
-
- organization
- "IETF NETMOD (Network Modeling) Working Group";
-
- contact
- "WG Web: <https://datatracker.ietf.org/wg/netmod/>
- WG List: <mailto:netmod@ietf.org>
-
- Editor: Martin Bjorklund
- <mailto:mbj@tail-f.com>";
-
- description
- "This module contains a collection of YANG definitions for
- managing network interfaces.
-
- Copyright (c) 2018 IETF Trust and the persons identified as
- authors of the code. All rights reserved.
-
- Redistribution and use in source and binary forms, with or
- without modification, is permitted pursuant to, and subject
- to the license terms contained in, the Simplified BSD License
- set forth in Section 4.c of the IETF Trust's Legal Provisions
- Relating to IETF Documents
- (https://trustee.ietf.org/license-info).
-
- This version of this YANG module is part of RFC 8343; see
- the RFC itself for full legal notices.";
-
- revision 2018-02-20 {
- description
- "Updated to support NMDA.";
- reference
- "RFC 8343: A YANG Data Model for Interface Management";
- }
-
- revision 2014-05-08 {
- description
- "Initial revision.";
- reference
- "RFC 7223: A YANG Data Model for Interface Management";
- }
-
- /*
- * Typedefs
- */
-
- typedef interface-ref {
- type leafref {
- path "/if:interfaces/if:interface/if:name";
- }
- description
- "This type is used by data models that need to reference
- interfaces.";
- }
-
- /*
- * Identities
- */
-
- identity interface-type {
- description
- "Base identity from which specific interface types are
- derived.";
- }
-
- /*
- * Features
- */
-
- feature arbitrary-names {
- description
- "This feature indicates that the device allows user-controlled
- interfaces to be named arbitrarily.";
- }
- feature pre-provisioning {
- description
- "This feature indicates that the device supports
- pre-provisioning of interface configuration, i.e., it is
- possible to configure an interface whose physical interface
- hardware is not present on the device.";
- }
- feature if-mib {
- description
- "This feature indicates that the device implements
- the IF-MIB.";
- reference
- "RFC 2863: The Interfaces Group MIB";
- }
-
- /*
- * Data nodes
- */
-
- container interfaces {
- description
- "Interface parameters.";
-
- list interface {
- key "name";
-
- description
- "The list of interfaces on the device.
-
- The status of an interface is available in this list in the
- operational state. If the configuration of a
- system-controlled interface cannot be used by the system
- (e.g., the interface hardware present does not match the
- interface type), then the configuration is not applied to
- the system-controlled interface shown in the operational
- state. If the configuration of a user-controlled interface
- cannot be used by the system, the configured interface is
- not instantiated in the operational state.
-
- System-controlled interfaces created by the system are
- always present in this list in the operational state,
- whether or not they are configured.";
-
- leaf name {
- type string;
- description
- "The name of the interface.
-
- A device MAY restrict the allowed values for this leaf,
- possibly depending on the type of the interface.
- For system-controlled interfaces, this leaf is the
- device-specific name of the interface.
-
- If a client tries to create configuration for a
- system-controlled interface that is not present in the
- operational state, the server MAY reject the request if
- the implementation does not support pre-provisioning of
- interfaces or if the name refers to an interface that can
- never exist in the system. A Network Configuration
- Protocol (NETCONF) server MUST reply with an rpc-error
- with the error-tag 'invalid-value' in this case.
-
- If the device supports pre-provisioning of interface
- configuration, the 'pre-provisioning' feature is
- advertised.
-
- If the device allows arbitrarily named user-controlled
- interfaces, the 'arbitrary-names' feature is advertised.
-
- When a configured user-controlled interface is created by
- the system, it is instantiated with the same name in the
- operational state.
-
- A server implementation MAY map this leaf to the ifName
- MIB object. Such an implementation needs to use some
- mechanism to handle the differences in size and characters
- allowed between this leaf and ifName. The definition of
- such a mechanism is outside the scope of this document.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifName";
- }
-
- leaf description {
- type string;
- description
- "A textual description of the interface.
-
- A server implementation MAY map this leaf to the ifAlias
- MIB object. Such an implementation needs to use some
- mechanism to handle the differences in size and characters
- allowed between this leaf and ifAlias. The definition of
- such a mechanism is outside the scope of this document.
-
- Since ifAlias is defined to be stored in non-volatile
- storage, the MIB implementation MUST map ifAlias to the
- value of 'description' in the persistently stored
- configuration.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifAlias";
- }
-
- leaf type {
- type identityref {
- base interface-type;
- }
- mandatory true;
- description
- "The type of the interface.
-
- When an interface entry is created, a server MAY
- initialize the type leaf with a valid value, e.g., if it
- is possible to derive the type from the name of the
- interface.
-
- If a client tries to set the type of an interface to a
- value that can never be used by the system, e.g., if the
- type is not supported or if the type does not match the
- name of the interface, the server MUST reject the request.
- A NETCONF server MUST reply with an rpc-error with the
- error-tag 'invalid-value' in this case.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifType";
- }
-
- leaf enabled {
- type boolean;
- default "true";
- description
- "This leaf contains the configured, desired state of the
- interface.
-
- Systems that implement the IF-MIB use the value of this
- leaf in the intended configuration to set
- IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
- has been initialized, as described in RFC 2863.
-
- Changes in this leaf in the intended configuration are
- reflected in ifAdminStatus.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifAdminStatus";
- }
-
- leaf link-up-down-trap-enable {
- if-feature if-mib;
- type enumeration {
- enum enabled {
- value 1;
- description
- "The device will generate linkUp/linkDown SNMP
- notifications for this interface.";
- }
- enum disabled {
- value 2;
- description
- "The device will not generate linkUp/linkDown SNMP
- notifications for this interface.";
- }
- }
- description
- "Controls whether linkUp/linkDown SNMP notifications
- should be generated for this interface.
-
- If this node is not configured, the value 'enabled' is
- operationally used by the server for interfaces that do
- not operate on top of any other interface (i.e., there are
- no 'lower-layer-if' entries), and 'disabled' otherwise.";
- reference
- "RFC 2863: The Interfaces Group MIB -
- ifLinkUpDownTrapEnable";
- }
-
- leaf admin-status {
- if-feature if-mib;
- type enumeration {
- enum up {
- value 1;
- description
- "Ready to pass packets.";
- }
- enum down {
- value 2;
- description
- "Not ready to pass packets and not in some test mode.";
- }
- enum testing {
- value 3;
- description
- "In some test mode.";
- }
- }
- config false;
- mandatory true;
- description
- "The desired state of the interface.
-
- This leaf has the same read semantics as ifAdminStatus.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifAdminStatus";
- }
-
- leaf oper-status {
- type enumeration {
- enum up {
- value 1;
- description
- "Ready to pass packets.";
- }
- enum down {
- value 2;
-
- description
- "The interface does not pass any packets.";
- }
- enum testing {
- value 3;
- description
- "In some test mode. No operational packets can
- be passed.";
- }
- enum unknown {
- value 4;
- description
- "Status cannot be determined for some reason.";
- }
- enum dormant {
- value 5;
- description
- "Waiting for some external event.";
- }
- enum not-present {
- value 6;
- description
- "Some component (typically hardware) is missing.";
- }
- enum lower-layer-down {
- value 7;
- description
- "Down due to state of lower-layer interface(s).";
- }
- }
- config false;
- mandatory true;
- description
- "The current operational state of the interface.
-
- This leaf has the same semantics as ifOperStatus.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifOperStatus";
- }
-
- leaf last-change {
- type yang:date-and-time;
- config false;
- description
- "The time the interface entered its current operational
- state. If the current state was entered prior to the
- last re-initialization of the local network management
- subsystem, then this node is not present.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifLastChange";
- }
-
- leaf if-index {
- if-feature if-mib;
- type int32 {
- range "1..2147483647";
- }
- config false;
- mandatory true;
- description
- "The ifIndex value for the ifEntry represented by this
- interface.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifIndex";
- }
-
- leaf phys-address {
- type yang:phys-address;
- config false;
- description
- "The interface's address at its protocol sub-layer. For
- example, for an 802.x interface, this object normally
- contains a Media Access Control (MAC) address. The
- interface's media-specific modules must define the bit
- and byte ordering and the format of the value of this
- object. For interfaces that do not have such an address
- (e.g., a serial line), this node is not present.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifPhysAddress";
- }
-
- leaf-list higher-layer-if {
- type interface-ref;
- config false;
- description
- "A list of references to interfaces layered on top of this
- interface.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifStackTable";
- }
-
- leaf-list lower-layer-if {
- type interface-ref;
- config false;
-
- description
- "A list of references to interfaces layered underneath this
- interface.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifStackTable";
- }
-
- leaf speed {
- type yang:gauge64;
- units "bits/second";
- config false;
- description
- "An estimate of the interface's current bandwidth in bits
- per second. For interfaces that do not vary in
- bandwidth or for those where no accurate estimation can
- be made, this node should contain the nominal bandwidth.
- For interfaces that have no concept of bandwidth, this
- node is not present.";
- reference
- "RFC 2863: The Interfaces Group MIB -
- ifSpeed, ifHighSpeed";
- }
-
- container statistics {
- config false;
- description
- "A collection of interface-related statistics objects.";
-
- leaf discontinuity-time {
- type yang:date-and-time;
- mandatory true;
- description
- "The time on the most recent occasion at which any one or
- more of this interface's counters suffered a
- discontinuity. If no such discontinuities have occurred
- since the last re-initialization of the local management
- subsystem, then this node contains the time the local
- management subsystem re-initialized itself.";
- }
-
- leaf in-octets {
- type yang:counter64;
- description
- "The total number of octets received on the interface,
- including framing characters.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifHCInOctets";
- }
-
- leaf in-unicast-pkts {
- type yang:counter64;
- description
- "The number of packets, delivered by this sub-layer to a
- higher (sub-)layer, that were not addressed to a
- multicast or broadcast address at this sub-layer.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
- }
-
- leaf in-broadcast-pkts {
- type yang:counter64;
- description
- "The number of packets, delivered by this sub-layer to a
- higher (sub-)layer, that were addressed to a broadcast
- address at this sub-layer.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB -
- ifHCInBroadcastPkts";
- }
-
- leaf in-multicast-pkts {
- type yang:counter64;
- description
- "The number of packets, delivered by this sub-layer to a
- higher (sub-)layer, that were addressed to a multicast
- address at this sub-layer. For a MAC-layer protocol,
- this includes both Group and Functional addresses.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB -
- ifHCInMulticastPkts";
- }
-
- leaf in-discards {
- type yang:counter32;
- description
- "The number of inbound packets that were chosen to be
- discarded even though no errors had been detected to
- prevent their being deliverable to a higher-layer
- protocol. One possible reason for discarding such a
- packet could be to free up buffer space.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifInDiscards";
- }
-
- leaf in-errors {
- type yang:counter32;
- description
- "For packet-oriented interfaces, the number of inbound
- packets that contained errors preventing them from being
- deliverable to a higher-layer protocol. For character-
- oriented or fixed-length interfaces, the number of
- inbound transmission units that contained errors
- preventing them from being deliverable to a higher-layer
- protocol.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifInErrors";
- }
-
- leaf in-unknown-protos {
- type yang:counter32;
-
- description
- "For packet-oriented interfaces, the number of packets
- received via the interface that were discarded because
- of an unknown or unsupported protocol. For
- character-oriented or fixed-length interfaces that
- support protocol multiplexing, the number of
- transmission units received via the interface that were
- discarded because of an unknown or unsupported protocol.
- For any interface that does not support protocol
- multiplexing, this counter is not present.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
- }
-
- leaf out-octets {
- type yang:counter64;
- description
- "The total number of octets transmitted out of the
- interface, including framing characters.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
- }
-
- leaf out-unicast-pkts {
- type yang:counter64;
- description
- "The total number of packets that higher-level protocols
- requested be transmitted and that were not addressed
- to a multicast or broadcast address at this sub-layer,
- including those that were discarded or not sent.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
- }
-
- leaf out-broadcast-pkts {
- type yang:counter64;
- description
- "The total number of packets that higher-level protocols
- requested be transmitted and that were addressed to a
- broadcast address at this sub-layer, including those
- that were discarded or not sent.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB -
- ifHCOutBroadcastPkts";
- }
-
- leaf out-multicast-pkts {
- type yang:counter64;
- description
- "The total number of packets that higher-level protocols
- requested be transmitted and that were addressed to a
- multicast address at this sub-layer, including those
- that were discarded or not sent. For a MAC-layer
- protocol, this includes both Group and Functional
- addresses.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB -
- ifHCOutMulticastPkts";
- }
-
- leaf out-discards {
- type yang:counter32;
- description
- "The number of outbound packets that were chosen to be
- discarded even though no errors had been detected to
- prevent their being transmitted. One possible reason
- for discarding such a packet could be to free up buffer
- space.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifOutDiscards";
- }
-
- leaf out-errors {
- type yang:counter32;
- description
- "For packet-oriented interfaces, the number of outbound
- packets that could not be transmitted because of errors.
- For character-oriented or fixed-length interfaces, the
- number of outbound transmission units that could not be
- transmitted because of errors.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifOutErrors";
- }
- }
-
- }
- }
-
- /*
- * Legacy typedefs
- */
-
- typedef interface-state-ref {
- type leafref {
- path "/if:interfaces-state/if:interface/if:name";
- }
- status deprecated;
- description
- "This type is used by data models that need to reference
- the operationally present interfaces.";
- }
-
- /*
- * Legacy operational state data nodes
- */
-
- container interfaces-state {
- config false;
- status deprecated;
- description
- "Data nodes for the operational state of interfaces.";
-
- list interface {
- key "name";
- status deprecated;
-
- description
- "The list of interfaces on the device.
-
- System-controlled interfaces created by the system are
- always present in this list, whether or not they are
- configured.";
-
- leaf name {
- type string;
- status deprecated;
- description
- "The name of the interface.
-
- A server implementation MAY map this leaf to the ifName
- MIB object. Such an implementation needs to use some
- mechanism to handle the differences in size and characters
- allowed between this leaf and ifName. The definition of
- such a mechanism is outside the scope of this document.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifName";
- }
-
- leaf type {
- type identityref {
- base interface-type;
- }
- mandatory true;
- status deprecated;
- description
- "The type of the interface.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifType";
- }
-
- leaf admin-status {
- if-feature if-mib;
- type enumeration {
- enum up {
- value 1;
- description
- "Ready to pass packets.";
- }
- enum down {
- value 2;
- description
- "Not ready to pass packets and not in some test mode.";
- }
- enum testing {
- value 3;
- description
- "In some test mode.";
- }
- }
- mandatory true;
- status deprecated;
- description
- "The desired state of the interface.
-
- This leaf has the same read semantics as ifAdminStatus.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifAdminStatus";
- }
-
- leaf oper-status {
- type enumeration {
- enum up {
- value 1;
- description
- "Ready to pass packets.";
- }
- enum down {
- value 2;
- description
- "The interface does not pass any packets.";
- }
- enum testing {
- value 3;
- description
- "In some test mode. No operational packets can
- be passed.";
- }
- enum unknown {
- value 4;
- description
- "Status cannot be determined for some reason.";
- }
- enum dormant {
- value 5;
- description
- "Waiting for some external event.";
- }
- enum not-present {
- value 6;
- description
- "Some component (typically hardware) is missing.";
- }
- enum lower-layer-down {
- value 7;
- description
- "Down due to state of lower-layer interface(s).";
- }
- }
- mandatory true;
- status deprecated;
- description
- "The current operational state of the interface.
-
- This leaf has the same semantics as ifOperStatus.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifOperStatus";
- }
-
- leaf last-change {
- type yang:date-and-time;
- status deprecated;
- description
- "The time the interface entered its current operational
- state. If the current state was entered prior to the
- last re-initialization of the local network management
- subsystem, then this node is not present.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifLastChange";
- }
-
- leaf if-index {
- if-feature if-mib;
- type int32 {
- range "1..2147483647";
- }
- mandatory true;
- status deprecated;
- description
- "The ifIndex value for the ifEntry represented by this
- interface.";
-
- reference
- "RFC 2863: The Interfaces Group MIB - ifIndex";
- }
-
- leaf phys-address {
- type yang:phys-address;
- status deprecated;
- description
- "The interface's address at its protocol sub-layer. For
- example, for an 802.x interface, this object normally
- contains a Media Access Control (MAC) address. The
- interface's media-specific modules must define the bit
- and byte ordering and the format of the value of this
- object. For interfaces that do not have such an address
- (e.g., a serial line), this node is not present.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifPhysAddress";
- }
-
- leaf-list higher-layer-if {
- type interface-state-ref;
- status deprecated;
- description
- "A list of references to interfaces layered on top of this
- interface.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifStackTable";
- }
-
- leaf-list lower-layer-if {
- type interface-state-ref;
- status deprecated;
- description
- "A list of references to interfaces layered underneath this
- interface.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifStackTable";
- }
-
- leaf speed {
- type yang:gauge64;
- units "bits/second";
- status deprecated;
- description
- "An estimate of the interface's current bandwidth in bits
- per second. For interfaces that do not vary in
- bandwidth or for those where no accurate estimation can
-
- be made, this node should contain the nominal bandwidth.
- For interfaces that have no concept of bandwidth, this
- node is not present.";
- reference
- "RFC 2863: The Interfaces Group MIB -
- ifSpeed, ifHighSpeed";
- }
-
- container statistics {
- status deprecated;
- description
- "A collection of interface-related statistics objects.";
-
- leaf discontinuity-time {
- type yang:date-and-time;
- mandatory true;
- status deprecated;
- description
- "The time on the most recent occasion at which any one or
- more of this interface's counters suffered a
- discontinuity. If no such discontinuities have occurred
- since the last re-initialization of the local management
- subsystem, then this node contains the time the local
- management subsystem re-initialized itself.";
- }
-
- leaf in-octets {
- type yang:counter64;
- status deprecated;
- description
- "The total number of octets received on the interface,
- including framing characters.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifHCInOctets";
- }
-
- leaf in-unicast-pkts {
- type yang:counter64;
- status deprecated;
- description
- "The number of packets, delivered by this sub-layer to a
- higher (sub-)layer, that were not addressed to a
- multicast or broadcast address at this sub-layer.
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
- }
-
- leaf in-broadcast-pkts {
- type yang:counter64;
- status deprecated;
- description
- "The number of packets, delivered by this sub-layer to a
- higher (sub-)layer, that were addressed to a broadcast
- address at this sub-layer.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB -
- ifHCInBroadcastPkts";
- }
-
- leaf in-multicast-pkts {
- type yang:counter64;
- status deprecated;
- description
- "The number of packets, delivered by this sub-layer to a
- higher (sub-)layer, that were addressed to a multicast
- address at this sub-layer. For a MAC-layer protocol,
- this includes both Group and Functional addresses.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB -
- ifHCInMulticastPkts";
- }
-
- leaf in-discards {
- type yang:counter32;
- status deprecated;
-
- description
- "The number of inbound packets that were chosen to be
- discarded even though no errors had been detected to
- prevent their being deliverable to a higher-layer
- protocol. One possible reason for discarding such a
- packet could be to free up buffer space.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifInDiscards";
- }
-
- leaf in-errors {
- type yang:counter32;
- status deprecated;
- description
- "For packet-oriented interfaces, the number of inbound
- packets that contained errors preventing them from being
- deliverable to a higher-layer protocol. For character-
- oriented or fixed-length interfaces, the number of
- inbound transmission units that contained errors
- preventing them from being deliverable to a higher-layer
- protocol.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifInErrors";
- }
-
- leaf in-unknown-protos {
- type yang:counter32;
- status deprecated;
- description
- "For packet-oriented interfaces, the number of packets
- received via the interface that were discarded because
- of an unknown or unsupported protocol. For
- character-oriented or fixed-length interfaces that
- support protocol multiplexing, the number of
- transmission units received via the interface that were
- discarded because of an unknown or unsupported protocol.
- For any interface that does not support protocol
- multiplexing, this counter is not present.
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
- }
-
- leaf out-octets {
- type yang:counter64;
- status deprecated;
- description
- "The total number of octets transmitted out of the
- interface, including framing characters.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
- }
-
- leaf out-unicast-pkts {
- type yang:counter64;
- status deprecated;
- description
- "The total number of packets that higher-level protocols
- requested be transmitted and that were not addressed
- to a multicast or broadcast address at this sub-layer,
- including those that were discarded or not sent.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
- }
-
- leaf out-broadcast-pkts {
- type yang:counter64;
- status deprecated;
-
- description
- "The total number of packets that higher-level protocols
- requested be transmitted and that were addressed to a
- broadcast address at this sub-layer, including those
- that were discarded or not sent.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB -
- ifHCOutBroadcastPkts";
- }
-
- leaf out-multicast-pkts {
- type yang:counter64;
- status deprecated;
- description
- "The total number of packets that higher-level protocols
- requested be transmitted and that were addressed to a
- multicast address at this sub-layer, including those
- that were discarded or not sent. For a MAC-layer
- protocol, this includes both Group and Functional
- addresses.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB -
- ifHCOutMulticastPkts";
- }
-
- leaf out-discards {
- type yang:counter32;
- status deprecated;
- description
- "The number of outbound packets that were chosen to be
- discarded even though no errors had been detected to
- prevent their being transmitted. One possible reason
- for discarding such a packet could be to free up buffer
- space.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifOutDiscards";
- }
-
- leaf out-errors {
- type yang:counter32;
- status deprecated;
- description
- "For packet-oriented interfaces, the number of outbound
- packets that could not be transmitted because of errors.
- For character-oriented or fixed-length interfaces, the
- number of outbound transmission units that could not be
- transmitted because of errors.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifOutErrors";
- }
- }
- }
- }
-}
+++ /dev/null
-module ietf-yang-types {
-
- namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types";
- prefix "yang";
-
- organization
- "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
-
- contact
- "WG Web: <http://tools.ietf.org/wg/netmod/>
- WG List: <mailto:netmod@ietf.org>
-
- WG Chair: David Kessens
- <mailto:david.kessens@nsn.com>
-
- WG Chair: Juergen Schoenwaelder
- <mailto:j.schoenwaelder@jacobs-university.de>
-
- Editor: Juergen Schoenwaelder
- <mailto:j.schoenwaelder@jacobs-university.de>";
-
- description
- "This module contains a collection of generally useful derived
- YANG data types.
-
- Copyright (c) 2013 IETF Trust and the persons identified as
- authors of the code. All rights reserved.
-
- Redistribution and use in source and binary forms, with or
- without modification, is permitted pursuant to, and subject
- to the license terms contained in, the Simplified BSD License
- set forth in Section 4.c of the IETF Trust's Legal Provisions
- Relating to IETF Documents
- (http://trustee.ietf.org/license-info).
-
- This version of this YANG module is part of RFC 6991; see
- the RFC itself for full legal notices.";
-
- revision 2013-07-15 {
- description
- "This revision adds the following new data types:
- - yang-identifier
- - hex-string
- - uuid
- - dotted-quad";
- reference
- "RFC 6991: Common YANG Data Types";
- }
-
- revision 2010-09-24 {
- description
- "Initial revision.";
- reference
- "RFC 6021: Common YANG Data Types";
- }
-
- /*** collection of counter and gauge types ***/
-
- typedef counter32 {
- type uint32;
- description
- "The counter32 type represents a non-negative integer
- that monotonically increases until it reaches a
- maximum value of 2^32-1 (4294967295 decimal), when it
- wraps around and starts increasing again from zero.
-
- Counters have no defined 'initial' value, and thus, a
- single value of a counter has (in general) no information
- content. Discontinuities in the monotonically increasing
- value normally occur at re-initialization of the
- management system, and at other times as specified in the
- description of a schema node using this type. If such
- other times can occur, for example, the creation of
- a schema node of type counter32 at times other than
- re-initialization, then a corresponding schema node
- should be defined, with an appropriate type, to indicate
- the last discontinuity.
-
- The counter32 type should not be used for configuration
- schema nodes. A default statement SHOULD NOT be used in
- combination with the type counter32.
-
- In the value set and its semantics, this type is equivalent
- to the Counter32 type of the SMIv2.";
- reference
- "RFC 2578: Structure of Management Information Version 2
- (SMIv2)";
- }
-
- typedef zero-based-counter32 {
- type yang:counter32;
- default "0";
- description
- "The zero-based-counter32 type represents a counter32
- that has the defined 'initial' value zero.
-
- A schema node of this type will be set to zero (0) on creation
- and will thereafter increase monotonically until it reaches
- a maximum value of 2^32-1 (4294967295 decimal), when it
- wraps around and starts increasing again from zero.
-
- Provided that an application discovers a new schema node
- of this type within the minimum time to wrap, it can use the
- 'initial' value as a delta. It is important for a management
- station to be aware of this minimum time and the actual time
- between polls, and to discard data if the actual time is too
- long or there is no defined minimum time.
-
- In the value set and its semantics, this type is equivalent
- to the ZeroBasedCounter32 textual convention of the SMIv2.";
- reference
- "RFC 4502: Remote Network Monitoring Management Information
- Base Version 2";
- }
-
- typedef counter64 {
- type uint64;
- description
- "The counter64 type represents a non-negative integer
- that monotonically increases until it reaches a
- maximum value of 2^64-1 (18446744073709551615 decimal),
- when it wraps around and starts increasing again from zero.
-
- Counters have no defined 'initial' value, and thus, a
- single value of a counter has (in general) no information
- content. Discontinuities in the monotonically increasing
- value normally occur at re-initialization of the
- management system, and at other times as specified in the
- description of a schema node using this type. If such
- other times can occur, for example, the creation of
- a schema node of type counter64 at times other than
- re-initialization, then a corresponding schema node
- should be defined, with an appropriate type, to indicate
- the last discontinuity.
-
- The counter64 type should not be used for configuration
- schema nodes. A default statement SHOULD NOT be used in
- combination with the type counter64.
-
- In the value set and its semantics, this type is equivalent
- to the Counter64 type of the SMIv2.";
- reference
- "RFC 2578: Structure of Management Information Version 2
- (SMIv2)";
- }
-
- typedef zero-based-counter64 {
- type yang:counter64;
- default "0";
- description
- "The zero-based-counter64 type represents a counter64 that
- has the defined 'initial' value zero.
-
- A schema node of this type will be set to zero (0) on creation
- and will thereafter increase monotonically until it reaches
- a maximum value of 2^64-1 (18446744073709551615 decimal),
- when it wraps around and starts increasing again from zero.
-
- Provided that an application discovers a new schema node
- of this type within the minimum time to wrap, it can use the
- 'initial' value as a delta. It is important for a management
- station to be aware of this minimum time and the actual time
- between polls, and to discard data if the actual time is too
- long or there is no defined minimum time.
-
- In the value set and its semantics, this type is equivalent
- to the ZeroBasedCounter64 textual convention of the SMIv2.";
- reference
- "RFC 2856: Textual Conventions for Additional High Capacity
- Data Types";
- }
-
- typedef gauge32 {
- type uint32;
- description
- "The gauge32 type represents a non-negative integer, which
- may increase or decrease, but shall never exceed a maximum
- value, nor fall below a minimum value. The maximum value
- cannot be greater than 2^32-1 (4294967295 decimal), and
- the minimum value cannot be smaller than 0. The value of
- a gauge32 has its maximum value whenever the information
- being modeled is greater than or equal to its maximum
- value, and has its minimum value whenever the information
- being modeled is smaller than or equal to its minimum value.
- If the information being modeled subsequently decreases
- below (increases above) the maximum (minimum) value, the
- gauge32 also decreases (increases).
-
- In the value set and its semantics, this type is equivalent
- to the Gauge32 type of the SMIv2.";
- reference
- "RFC 2578: Structure of Management Information Version 2
- (SMIv2)";
- }
-
- typedef gauge64 {
- type uint64;
- description
- "The gauge64 type represents a non-negative integer, which
- may increase or decrease, but shall never exceed a maximum
- value, nor fall below a minimum value. The maximum value
- cannot be greater than 2^64-1 (18446744073709551615), and
- the minimum value cannot be smaller than 0. The value of
- a gauge64 has its maximum value whenever the information
- being modeled is greater than or equal to its maximum
- value, and has its minimum value whenever the information
- being modeled is smaller than or equal to its minimum value.
- If the information being modeled subsequently decreases
- below (increases above) the maximum (minimum) value, the
- gauge64 also decreases (increases).
-
- In the value set and its semantics, this type is equivalent
- to the CounterBasedGauge64 SMIv2 textual convention defined
- in RFC 2856";
- reference
- "RFC 2856: Textual Conventions for Additional High Capacity
- Data Types";
- }
-
- /*** collection of identifier-related types ***/
-
- typedef object-identifier {
- type string {
- pattern '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))'
- + '(\.(0|([1-9]\d*)))*';
- }
- description
- "The object-identifier type represents administratively
- assigned names in a registration-hierarchical-name tree.
-
- Values of this type are denoted as a sequence of numerical
- non-negative sub-identifier values. Each sub-identifier
- value MUST NOT exceed 2^32-1 (4294967295). Sub-identifiers
- are separated by single dots and without any intermediate
- whitespace.
-
- The ASN.1 standard restricts the value space of the first
- sub-identifier to 0, 1, or 2. Furthermore, the value space
- of the second sub-identifier is restricted to the range
- 0 to 39 if the first sub-identifier is 0 or 1. Finally,
- the ASN.1 standard requires that an object identifier
- has always at least two sub-identifiers. The pattern
- captures these restrictions.
-
- Although the number of sub-identifiers is not limited,
- module designers should realize that there may be
- implementations that stick with the SMIv2 limit of 128
- sub-identifiers.
-
- This type is a superset of the SMIv2 OBJECT IDENTIFIER type
- since it is not restricted to 128 sub-identifiers. Hence,
- this type SHOULD NOT be used to represent the SMIv2 OBJECT
- IDENTIFIER type; the object-identifier-128 type SHOULD be
- used instead.";
- reference
- "ISO9834-1: Information technology -- Open Systems
- Interconnection -- Procedures for the operation of OSI
- Registration Authorities: General procedures and top
- arcs of the ASN.1 Object Identifier tree";
- }
-
- typedef object-identifier-128 {
- type object-identifier {
- pattern '\d*(\.\d*){1,127}';
- }
- description
- "This type represents object-identifiers restricted to 128
- sub-identifiers.
-
- In the value set and its semantics, this type is equivalent
- to the OBJECT IDENTIFIER type of the SMIv2.";
- reference
- "RFC 2578: Structure of Management Information Version 2
- (SMIv2)";
- }
-
- typedef yang-identifier {
- type string {
- length "1..max";
- pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*';
- pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*';
- }
- description
- "A YANG identifier string as defined by the 'identifier'
- rule in Section 12 of RFC 6020. An identifier must
- start with an alphabetic character or an underscore
- followed by an arbitrary sequence of alphabetic or
- numeric characters, underscores, hyphens, or dots.
-
- A YANG identifier MUST NOT start with any possible
- combination of the lowercase or uppercase character
- sequence 'xml'.";
- reference
- "RFC 6020: YANG - A Data Modeling Language for the Network
- Configuration Protocol (NETCONF)";
- }
-
- /*** collection of types related to date and time***/
-
- typedef date-and-time {
- type string {
- pattern '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?'
- + '(Z|[\+\-]\d{2}:\d{2})';
- }
- description
- "The date-and-time type is a profile of the ISO 8601
- standard for representation of dates and times using the
- Gregorian calendar. The profile is defined by the
- date-time production in Section 5.6 of RFC 3339.
-
- The date-and-time type is compatible with the dateTime XML
- schema type with the following notable exceptions:
-
- (a) The date-and-time type does not allow negative years.
-
- (b) The date-and-time time-offset -00:00 indicates an unknown
- time zone (see RFC 3339) while -00:00 and +00:00 and Z
- all represent the same time zone in dateTime.
-
- (c) The canonical format (see below) of data-and-time values
- differs from the canonical format used by the dateTime XML
- schema type, which requires all times to be in UTC using
- the time-offset 'Z'.
-
- This type is not equivalent to the DateAndTime textual
- convention of the SMIv2 since RFC 3339 uses a different
- separator between full-date and full-time and provides
- higher resolution of time-secfrac.
-
- The canonical format for date-and-time values with a known time
- zone uses a numeric time zone offset that is calculated using
- the device's configured known offset to UTC time. A change of
- the device's offset to UTC time will cause date-and-time values
- to change accordingly. Such changes might happen periodically
- in case a server follows automatically daylight saving time
- (DST) time zone offset changes. The canonical format for
- date-and-time values with an unknown time zone (usually
- referring to the notion of local time) uses the time-offset
- -00:00.";
- reference
- "RFC 3339: Date and Time on the Internet: Timestamps
- RFC 2579: Textual Conventions for SMIv2
- XSD-TYPES: XML Schema Part 2: Datatypes Second Edition";
- }
-
- typedef timeticks {
- type uint32;
- description
- "The timeticks type represents a non-negative integer that
- represents the time, modulo 2^32 (4294967296 decimal), in
- hundredths of a second between two epochs. When a schema
- node is defined that uses this type, the description of
- the schema node identifies both of the reference epochs.
-
- In the value set and its semantics, this type is equivalent
- to the TimeTicks type of the SMIv2.";
- reference
- "RFC 2578: Structure of Management Information Version 2
- (SMIv2)";
- }
-
- typedef timestamp {
- type yang:timeticks;
- description
- "The timestamp type represents the value of an associated
- timeticks schema node at which a specific occurrence
- happened. The specific occurrence must be defined in the
- description of any schema node defined using this type. When
- the specific occurrence occurred prior to the last time the
- associated timeticks attribute was zero, then the timestamp
- value is zero. Note that this requires all timestamp values
- to be reset to zero when the value of the associated timeticks
- attribute reaches 497+ days and wraps around to zero.
-
- The associated timeticks schema node must be specified
- in the description of any schema node using this type.
-
- In the value set and its semantics, this type is equivalent
- to the TimeStamp textual convention of the SMIv2.";
- reference
- "RFC 2579: Textual Conventions for SMIv2";
- }
-
- /*** collection of generic address types ***/
-
- typedef phys-address {
- type string {
- pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
- }
-
- description
- "Represents media- or physical-level addresses represented
- as a sequence octets, each octet represented by two hexadecimal
- numbers. Octets are separated by colons. The canonical
- representation uses lowercase characters.
-
- In the value set and its semantics, this type is equivalent
- to the PhysAddress textual convention of the SMIv2.";
- reference
- "RFC 2579: Textual Conventions for SMIv2";
- }
-
- typedef mac-address {
- type string {
- pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
- }
- description
- "The mac-address type represents an IEEE 802 MAC address.
- The canonical representation uses lowercase characters.
-
- In the value set and its semantics, this type is equivalent
- to the MacAddress textual convention of the SMIv2.";
- reference
- "IEEE 802: IEEE Standard for Local and Metropolitan Area
- Networks: Overview and Architecture
- RFC 2579: Textual Conventions for SMIv2";
- }
-
- /*** collection of XML-specific types ***/
-
- typedef xpath1.0 {
- type string;
- description
- "This type represents an XPATH 1.0 expression.
-
- When a schema node is defined that uses this type, the
- description of the schema node MUST specify the XPath
- context in which the XPath expression is evaluated.";
- reference
- "XPATH: XML Path Language (XPath) Version 1.0";
- }
-
- /*** collection of string types ***/
-
- typedef hex-string {
- type string {
- pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
- }
- description
- "A hexadecimal string with octets represented as hex digits
- separated by colons. The canonical representation uses
- lowercase characters.";
- }
-
- typedef uuid {
- type string {
- pattern '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-'
- + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}';
- }
- description
- "A Universally Unique IDentifier in the string representation
- defined in RFC 4122. The canonical representation uses
- lowercase characters.
-
- The following is an example of a UUID in string representation:
- f81d4fae-7dec-11d0-a765-00a0c91e6bf6
- ";
- reference
- "RFC 4122: A Universally Unique IDentifier (UUID) URN
- Namespace";
- }
-
- typedef dotted-quad {
- type string {
- pattern
- '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
- + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';
- }
- description
- "An unsigned 32-bit number expressed in the dotted-quad
- notation, i.e., four octets written as decimal numbers
- and separated with the '.' (full stop) character.";
- }
-}
+++ /dev/null
-# Released data models
-
-A directory containing released data modules of O-RAN Alliance and O-RAN Software Community.
--- /dev/null
+# YANG
+
+NetConf/YANG is defined by O-RAN Alliance Interface Spcification v2 as protocol
+for Configuration Management for FCAPS functions (accept the A: Accounting) for
+the disaggregated RAN.
+
+As some of the data models in working progress subfolders are used to
+distinglish "working" and "published". The folder "sim" is used exclusively
+by the
+[O-RAN-SC SIM project](https://wiki.o-ran-sc.org/display/SIM/SIM?src=sidebar)
+project.
--- /dev/null
+# sim
+
+The folder "sim" is used exclusively by the
+[O-RAN-SC SIM project](https://wiki.o-ran-sc.org/display/SIM/SIM?src=sidebar).
\ No newline at end of file
--- /dev/null
+../template/ietf-alarms.yang
\ No newline at end of file
--- /dev/null
+../template/ietf-hardware.yang
\ No newline at end of file
--- /dev/null
+../template/ietf-interfaces.yang
\ No newline at end of file
--- /dev/null
+../template/ietf-yang-types.yang
\ No newline at end of file
--- /dev/null
+../template/o-ran-sc-alarms-v1.yang
\ No newline at end of file
--- /dev/null
+../template/o-ran-sc-common-alarms-v1.yang
\ No newline at end of file
--- /dev/null
+../template/o-ran-sc-hardware-v1.yang
\ No newline at end of file
--- /dev/null
+../template/o-ran-sc-interfaces-v1.yang
\ No newline at end of file
--- /dev/null
+module o-ran-sc-ric-alarms-v1 {
+ yang-version 1.1;
+ namespace "urn:o-ran:ric:alarms:1.0";
+ prefix osc-ric-al;
+
+ import ietf-alarms {
+ prefix al;
+ }
+
+ organization
+ "O-RAN Software Community";
+ contact
+ "www.o-ran.org";
+ description
+ "This module defines the alarm identities for the O-RAN-SC Near realtime RAN Intelligent Controller.
+
+ Copyright 2019 the O-RAN Alliance.
+
+ Licensed under the Apache License, Version 2.0 (the 'License');
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an 'AS IS' BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.";
+
+ revision 2020-03-08 {
+ description
+ "initial revision";
+ reference
+ "O-RAN-OAM-Interface-Specification (O1)";
+ }
+
+ identity alarm-type-id {
+ base al:alarm-type-id;
+ description
+ "An abstract alarm type used for all O-RAN-SC specific alarm types for
+ Managed Function Non-RT-RIC.";
+ }
+
+ identity e2-connection-loss {
+ base alarm-type-id;
+ description
+ "Loss of E2 connection to E2 node.
+ Instructions:
+ Check if reconnect happened, e.g. using the health check in RIC-95.";
+ }
+ identity time-out {
+ base alarm-type-id;
+ description
+ "Internal routing table update distribution might be incomplete
+ due to time out.
+ Instructions:
+ Operator to check if there were any failures in any of the components
+ involved (xApp restarts, for example)if no such failures, operator
+ might have to update time out settings in the configuration to
+ adjust RIC system to scheduling latencies of the underlying cloud
+ platform.";
+ }
+ identity overload {
+ base alarm-type-id;
+ description
+ "RIC messages could not be send or received due to temporary overload.
+ Instructions:
+ Operator to check for any failures. If no failures, operator might
+ have to adjust buffer sizes and timeouts and/or scale out the system.";
+ }
+}
--- /dev/null
+../template/o-ran-sc-root-v1.yang
\ No newline at end of file
--- /dev/null
+../template/o-ran-sc-types-v1.yang
\ No newline at end of file
--- /dev/null
+../template/ietf-alarms.yang
\ No newline at end of file
--- /dev/null
+../template/ietf-hardware.yang
\ No newline at end of file
--- /dev/null
+../template/ietf-interfaces.yang
\ No newline at end of file
--- /dev/null
+../template/ietf-yang-types.yang
\ No newline at end of file
--- /dev/null
+../template/o-ran-sc-alarms-v1.yang
\ No newline at end of file
--- /dev/null
+../template/o-ran-sc-common-alarms-v1.yang
\ No newline at end of file
--- /dev/null
+module o-ran-sc-cu-cp-alarms-v1 {
+ yang-version 1.1;
+ namespace "urn:o-ran-sc:cu:cp:alarms:1.0";
+ prefix osc-cu-cp-al;
+
+ import ietf-alarms {
+ prefix al;
+ }
+
+ organization
+ "O-RAN Software Community";
+ contact
+ "www.o-ran-sc.org";
+ description
+ "This module defines the alarm identities for the O-RAN-SC Central Unit
+ Control Plane.
+
+ Copyright 2020 the O-RAN Software Community.
+
+ Licensed under the Apache License, Version 2.0 (the 'License');
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an 'AS IS' BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.";
+
+ revision 2020-01-18 {
+ description
+ "initial revision";
+ reference
+ "O-RAN-OAM-Interface-Specification (O1)";
+ }
+
+ identity alarm-type-id {
+ base al:alarm-type-id;
+ description
+ "An abstract alarm type used for all O-RAN-SC specific alarm types for
+ Managed Function O-CU-CP.";
+ }
+
+ identity huston-we-have-a-problem {
+ base alarm-type-id;
+ description
+ "A generic alarm which is under development and analysis,
+ must not happen in production environment.
+ Instructions:
+ Create an JIRA issue and provide the following intormation:
+ - SMO version, build number or git hash
+ - O-CU-CP version, build number or git hash
+ - A procedure to reproduce the alarm.";
+ }
+}
--- /dev/null
+module o-ran-sc-cu-cp-v1 {
+ yang-version 1.1;
+ namespace "urn:o-ran:sc:centalized-unit:control-plane:1.0";
+ prefix ocucp;
+
+ import o-ran-sc-root-v1 {
+ prefix root;
+ }
+ import o-ran-sc-types-v1 {
+ prefix ot;
+ }
+
+ organization
+ "O-RAN Software Community";
+ contact
+ "www.o-ran.org";
+ description
+ "This module contains the O-RAN Software Community CentralizedUnit
+ Control Plane specific O1 interface APIs.
+
+ Copyright 2020 the O-RAN Alliance.
+
+ Licensed under the Apache License, Version 2.0 (the 'License');
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an 'AS IS' BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.";
+
+ revision 2020-02-20 {
+ description
+ "initial revision";
+ reference
+ "O-RAN-OAM-Interface-Specification (O1)";
+ }
+
+ // identity
+
+ identity o-cu-cp {
+ base ot:control-function-type;
+ description
+ "TODO: Nice description";
+ }
+
+ // grouping
+
+ grouping o-cu-cp-specific-grp {
+ description
+ "TODO: add your specific leafs, lists, containers here.";
+ }
+
+ // Inherit from controlled-function
+ augment "/root:controlled-element/root:controlled-function" {
+ when "derived-from-or-self(./root:function-type, 'ocucp:o-cu-cp')";
+ uses o-cu-cp-specific-grp;
+ description
+ "TODO: Nice description";
+ }
+}
--- /dev/null
+../template/o-ran-sc-hardware-v1.yang
\ No newline at end of file
--- /dev/null
+../template/o-ran-sc-interfaces-v1.yang
\ No newline at end of file
--- /dev/null
+../template/o-ran-sc-root-v1.yang
\ No newline at end of file
--- /dev/null
+../template/o-ran-sc-types-v1.yang
\ No newline at end of file
--- /dev/null
+../template/ietf-alarms.yang
\ No newline at end of file
--- /dev/null
+../template/ietf-hardware.yang
\ No newline at end of file
--- /dev/null
+../template/ietf-interfaces.yang
\ No newline at end of file
--- /dev/null
+../template/ietf-yang-types.yang
\ No newline at end of file
--- /dev/null
+../template/o-ran-sc-alarms-v1.yang
\ No newline at end of file
--- /dev/null
+../template/o-ran-sc-common-alarms-v1.yang
\ No newline at end of file
--- /dev/null
+module o-ran-sc-cu-up-alarms-v1 {
+ yang-version 1.1;
+ namespace "urn:o-ran-sc:cu:up:alarms:1.0";
+ prefix osc-cu-up-al;
+
+ import ietf-alarms {
+ prefix al;
+ }
+
+ organization
+ "O-RAN Software Community";
+ contact
+ "www.o-ran-sc.org";
+ description
+ "This module defines the alarm identities for the O-RAN-SC Central Unit
+ User Plane.
+
+ Copyright 2020 the O-RAN Software Community.
+
+ Licensed under the Apache License, Version 2.0 (the 'License');
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an 'AS IS' BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.";
+
+ revision 2020-01-18 {
+ description
+ "initial revision";
+ reference
+ "O-RAN-OAM-Interface-Specification (O1)";
+ }
+
+ identity alarm-type-id {
+ base al:alarm-type-id;
+ description
+ "An abstract alarm type used for all O-RAN-SC specific alarm types for
+ Managed Function O-CU-UP.";
+ }
+
+ identity huston-we-have-a-problem {
+ base alarm-type-id;
+ description
+ "A generic alarm which is under development and analysis,
+ must not happen in production environment.
+ Instructions:
+ Create an JIRA issue and provide the following intormation:
+ - SMO version, build number or git hash
+ - O-CU-UP version, build number or git hash
+ - A procedure to reproduce the alarm.";
+ }
+}
--- /dev/null
+module o-ran-sc-cu-up-v1 {
+ yang-version 1.1;
+ namespace "urn:o-ran:sc:centalized-unit:user-plane:1.0";
+ prefix ocuup;
+
+ import o-ran-sc-root-v1 {
+ prefix root;
+ }
+ import o-ran-sc-types-v1 {
+ prefix ot;
+ }
+
+ organization
+ "O-RAN Software Community";
+ contact
+ "www.o-ran.org";
+ description
+ "This module contains the O-RAN Software Community CentralizedUnit
+ User Plane specific O1 interface APIs.
+
+ Copyright 2020 the O-RAN Alliance.
+
+ Licensed under the Apache License, Version 2.0 (the 'License');
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an 'AS IS' BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.";
+
+ revision 2020-02-20 {
+ description
+ "initial revision";
+ reference
+ "O-RAN-OAM-Interface-Specification (O1)";
+ }
+
+ // identity
+
+ identity o-cu-up {
+ base ot:control-function-type;
+ description
+ "TODO: Nice description";
+ }
+
+ // grouping
+
+ grouping o-cu-up-specific-grp {
+ description
+ "TODO: add your specific leafs, lists, containers here.";
+ }
+
+ // Inherit from controlled-function
+ augment "/root:controlled-element/root:controlled-function" {
+ when "derived-from-or-self(./root:function-type, 'ocuup:o-cu-up')";
+ uses o-cu-up-specific-grp;
+ description
+ "TODO: Nice description";
+ }
+}
--- /dev/null
+../template/o-ran-sc-hardware-v1.yang
\ No newline at end of file
--- /dev/null
+../template/o-ran-sc-interfaces-v1.yang
\ No newline at end of file
--- /dev/null
+../template/o-ran-sc-root-v1.yang
\ No newline at end of file
--- /dev/null
+../template/o-ran-sc-types-v1.yang
\ No newline at end of file
--- /dev/null
+../template/ietf-alarms.yang
\ No newline at end of file
--- /dev/null
+../template/ietf-hardware.yang
\ No newline at end of file
--- /dev/null
+../template/ietf-interfaces.yang
\ No newline at end of file
--- /dev/null
+../template/ietf-yang-types.yang
\ No newline at end of file
--- /dev/null
+../template/o-ran-sc-alarms-v1.yang
\ No newline at end of file
--- /dev/null
+../template/o-ran-sc-common-alarms-v1.yang
\ No newline at end of file
--- /dev/null
+module o-ran-sc-du-alarms-v1 {
+ yang-version 1.1;
+ namespace "urn:o-ran-sc:du:alarms:1.0";
+ prefix osc-du-al;
+
+ import ietf-alarms {
+ prefix al;
+ }
+
+ organization
+ "O-RAN Software Community";
+ contact
+ "www.o-ran-sc.org";
+ description
+ "This module defines the alarm identities for the O-RAN-SC Distributed Unit.
+
+ Copyright 2020 the O-RAN Software Community.
+
+ Licensed under the Apache License, Version 2.0 (the 'License');
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an 'AS IS' BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.";
+
+ revision 2020-03-08 {
+ description
+ "initial revision";
+ reference
+ "O-RAN-OAM-Interface-Specification (O1)";
+ }
+
+ identity alarm-type-id {
+ base al:alarm-type-id;
+ description
+ "An abstract alarm type used for all O-RAN-SC specific alarm types for
+ Managed Function O-DU.";
+ }
+
+ identity loss-of-timing-synchronization {
+ base alarm-type-id;
+ description
+ "O-DU loss of time synchronization.
+ Instructions:
+ 1) Verify the configuration of time synchronization on the O-DU.
+ 2) Verify the connectivity between the O-DU and the synchronization
+ source in terms of routing and firewall settings along the path.
+ 3) Check if QoS requirements between O-DU and synchronization source
+ are met.";
+ }
+ identity connection-loss-to-o-ru {
+ base alarm-type-id;
+ description
+ "O-DU loss of connection to O-RU.
+ Instructions:
+ 1) Verify the configuration on O-DU and on O-RU.
+ 2) Verify the connectivity between O-DU and O-RU in terms of
+ routing
+ and firewall settings along the path.";
+ }
+ identity o-du-low-configuration-loss-from-o-du-high {
+ base alarm-type-id;
+ description
+ "O-DU Low loss of configuration from O-DU High.
+ Instructions:
+ Create an JIRA issue and provide the following information:
+ - SMO version, build number or git hash
+ - O-DU version, build number or git hash
+ - A procedure to reproduce the alarm.";
+ }
+}
\ No newline at end of file
--- /dev/null
+module o-ran-sc-du-v1 {
+ yang-version 1.1;
+ namespace "urn:o-ran:sc:distributed-unit:1.0";
+ prefix odu;
+
+ import o-ran-sc-root-v1 {
+ prefix root;
+ }
+ import o-ran-sc-types-v1 {
+ prefix ot;
+ }
+
+ organization
+ "O-RAN Software Community";
+ contact
+ "www.o-ran.org";
+ description
+ "This module contains the O-RAN Software Community DistributedUnit specific
+ O1 interface APIs.
+
+ Copyright 2020 the O-RAN Alliance.
+
+ Licensed under the Apache License, Version 2.0 (the 'License');
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an 'AS IS' BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.";
+
+ revision 2020-02-20 {
+ description
+ "initial revision";
+ reference
+ "O-RAN-OAM-Interface-Specification (O1)";
+ }
+
+ // identity
+
+ identity o-du {
+ base ot:control-function-type;
+ description
+ "TODO: Nice description";
+ }
+
+ // grouping
+
+ grouping o-du-specific-grp {
+ description
+ "TODO: add your specific leafs, lists, containers here.";
+ }
+
+ // Inherit from controlled-function
+ augment "/root:controlled-element/root:controlled-function" {
+ when "derived-from-or-self(./root:function-type, 'odu:o-du')";
+ uses o-du-specific-grp;
+ description
+ "TODO: Nice description";
+ }
+}
--- /dev/null
+../template/o-ran-sc-hardware-v1.yang
\ No newline at end of file
--- /dev/null
+../template/o-ran-sc-interfaces-v1.yang
\ No newline at end of file
--- /dev/null
+../template/o-ran-sc-root-v1.yang
\ No newline at end of file
--- /dev/null
+../template/o-ran-sc-types-v1.yang
\ No newline at end of file
--- /dev/null
+../template/ietf-alarms.yang
\ No newline at end of file
--- /dev/null
+../template/ietf-hardware.yang
\ No newline at end of file
--- /dev/null
+../template/ietf-interfaces.yang
\ No newline at end of file
--- /dev/null
+../template/ietf-yang-types.yang
\ No newline at end of file
--- /dev/null
+../template/o-ran-sc-alarms-v1.yang
\ No newline at end of file
--- /dev/null
+../template/o-ran-sc-common-alarms-v1.yang
\ No newline at end of file
--- /dev/null
+../template/o-ran-sc-hardware-v1.yang
\ No newline at end of file
--- /dev/null
+../template/o-ran-sc-interfaces-v1.yang
\ No newline at end of file
--- /dev/null
+../template/o-ran-sc-root-v1.yang
\ No newline at end of file
--- /dev/null
+module o-ran-sc-ru-alarms-v1 {
+ yang-version 1.1;
+ namespace "urn:o-ran-sc:ru:alarms:1.0";
+ prefix osc-ru-al;
+
+ import ietf-alarms {
+ prefix al;
+ }
+
+ organization
+ "O-RAN Software Community";
+ contact
+ "www.o-ran-sc.org";
+ description
+ "This module defines the alarm identities for the O-RAN-SC Components.
+
+ Copyright 2020 the O-RAN Software Community.
+
+ Licensed under the Apache License, Version 2.0 (the 'License');
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an 'AS IS' BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.";
+
+ revision 2020-01-18 {
+ description
+ "initial revision";
+ reference
+ "O-RAN-OAM-Interface-Specification (O1)";
+ }
+
+ identity alarm-type-id {
+ base al:alarm-type-id;
+ description
+ "An abstract alarm type used for all O-RAN-SC specific alarm types for
+ Managed Function O-RU.";
+ }
+
+ identity huston-we-have-a-problem {
+ base alarm-type-id;
+ description
+ "A generic alarm which is under development and analysis,
+ must not happen in production environment.
+ Instructions:
+ Create an JIRA issue and provide the following intormation:
+ - SMO version, build number or git hash
+ - O-RU version, build number or git hash
+ - A procedure to reproduce the alarm.";
+ }
+}
--- /dev/null
+module o-ran-sc-ru-v1 {
+ yang-version 1.1;
+ namespace "urn:o-ran:sc:radio-unit:1.0";
+ prefix oru;
+
+ import o-ran-sc-root-v1 {
+ prefix root;
+ }
+ import o-ran-sc-types-v1 {
+ prefix ot;
+ }
+
+ organization
+ "O-RAN Software Community";
+ contact
+ "www.o-ran.org";
+ description
+ "This module contains the O-RAN Software Community RadioUnit specific
+ O1 interface APIs.
+
+ Copyright 2020 the O-RAN Alliance.
+
+ Licensed under the Apache License, Version 2.0 (the 'License');
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an 'AS IS' BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.";
+
+ revision 2020-02-20 {
+ description
+ "initial revision";
+ reference
+ "O-RAN-OAM-Interface-Specification (O1)";
+ }
+
+ // identity
+
+ identity o-ru {
+ base ot:control-function-type;
+ description
+ "TODO: Nice description";
+ }
+
+ // grouping
+
+ grouping o-ru-specific-grp {
+ description
+ "TODO: add your specific leafs, lists, containers here.";
+ }
+
+ // Inherit from controlled-function
+ augment "/root:controlled-element/root:controlled-function" {
+ when "derived-from-or-self(./root:function-type, 'oru:o-ru')";
+ uses o-ru-specific-grp;
+ description
+ "TODO: Nice description";
+ }
+}
--- /dev/null
+../template/o-ran-sc-types-v1.yang
\ No newline at end of file
--- /dev/null
+# Template
+
+This folder contains a template yang modules with dependencies to published
+YANG modules and O-RAN-SC common yang modules.
+
+Please rename "TEMPLATE" by your O-RAN component.
+
+Please use the option "-L, --dereference" of the bash "cp" command to follow
+the symbolic link if needed.
+
+To validate our yang modules pyang is recommended, following the
+O-RAN Alliance data modelling guidlines.
+
+```
+pyang --lint o-ran-sc-*.yang
+```
\ No newline at end of file
--- /dev/null
+../../../published/ietf/ietf-alarms.yang
\ No newline at end of file
--- /dev/null
+../../../published/ietf/ietf-hardware.yang
\ No newline at end of file
--- /dev/null
+../../../published/ietf/ietf-interfaces.yang
\ No newline at end of file
--- /dev/null
+../../../published/ietf/ietf-yang-types.yang
\ No newline at end of file
--- /dev/null
+module o-ran-sc-common-alarms-v1 {
+ yang-version 1.1;
+ namespace "urn:o-ran-sc:alarms:1.0";
+ prefix osc-al;
+
+ import ietf-alarms {
+ prefix al;
+ }
+
+ organization
+ "O-RAN Software Community";
+ contact
+ "www.o-ran-sc.org";
+ description
+ "This module defines the alarm identities for the O-RAN-SC Components.
+
+ Copyright 2020 the O-RAN Software Community.
+
+ Licensed under the Apache License, Version 2.0 (the 'License');
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an 'AS IS' BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.";
+
+ revision 2020-01-18 {
+ description
+ "initial revision";
+ reference
+ "O-RAN-OAM-Interface-Specification (O1)";
+ }
+
+ identity alarm-type-id {
+ base al:alarm-type-id;
+ description
+ "An abstract alarm type use for all O-RAN-SC alarm types which are
+ common across the O-RAN managed functions.";
+ }
+
+ identity smo-o1-ves-collector-not-reachable {
+ base alarm-type-id;
+ description
+ "The configured VES end-point for asynchron messages is not reachable.
+ Instructions:
+ 1) Verify the VES configuration on the O-RAN component.
+ 2) Verify the connectivity between the O-RAN component and the
+ SMO in terms of routing and firewall settings along the path.
+ 3) Check the credentials of the O-RAN component (user, password,
+ certificate). Did changes happen on SMO level recently?";
+ }
+}