module ietf-interfaces { | |
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces"; | |
prefix if; | |
import 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: Thomas Nadeau | |
<mailto:tnadeau@lucidvision.com> | |
WG Chair: Juergen Schoenwaelder | |
<mailto:j.schoenwaelder@jacobs-university.de> | |
Editor: Martin Bjorklund | |
<mailto:mbj@tail-f.com>"; | |
description | |
"This module contains a collection of YANG definitions for | |
managing network interfaces. | |
Copyright (c) 2014 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 7223; see | |
the RFC itself for full legal notices."; | |
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:devices/if:device/if:interfaces/if:interface/if:name"; | |
} | |
description | |
"This type is used by data models that need to reference | |
configured interfaces."; | |
} | |
typedef interface-state-ref { | |
type leafref { | |
path "/if:devices/if:device/if:interfaces-state/if:interface/if:name"; | |
} | |
description | |
"This type is used by data models that need to reference | |
the operationally present 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"; | |
} | |
/* | |
* Configuration data nodes | |
*/ | |
container devices { | |
list device { | |
key deviceid; | |
leaf deviceid { | |
type string; | |
} | |
container interfaces { | |
description | |
"Interface configuration parameters."; | |
list interface { | |
key "name"; | |
description | |
"The list of configured interfaces on the device. | |
The operational state of an interface is available | |
in the /interfaces-state/interface list. 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 of a | |
/interfaces-state/interface list. If the configuration | |
user-controlled interface cannot be used by the system, | |
the configured interface is not instantiated in the | |
/interfaces-state/interface list."; | |
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. The 'config false' list | |
/interfaces-state/interface contains the | |
currently existing interfaces on the device. | |
If a client tries to create configuration for a | |
system-controlled interface that is not present | |
in the /interfaces-state/interface list, 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 | |
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 /interface-state/interface | |
list."; | |
} | |
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 touse some mechanism to handle the | |
differences in sizeand 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 datastore. | |
Specifically, if the device supports ':startup', | |
when ifAlias is read the device MUST return the | |
value of 'description' in the 'startup' | |
datastore, and when it is written, it MUST be | |
written to the 'running' and 'startup' | |
datastores. Note that it is up to the | |
implementation to decide whether to modify this | |
single leaf in 'startup' or perform an implicit | |
copy-config from 'running' to 'startup'. | |
If the device does not support ':startup', | |
ifAlias MUST be mapped to the 'description' leaf | |
in the 'running' datastore."; | |
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 'running' datastore 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 'running' | |
datastore are reflected in ifAdminStatus, but if | |
ifAdminStatus is changed over SNMP, this leaf is | |
not affected."; | |
reference | |
"RFC 2863: The Interfaces Group MIB - | |
ifAdminStatus"; | |
} | |
leaf link-up-down-trap-enable { | |
if-feature if-mib; | |
type enumeration { | |
enum enabled { | |
value 1; | |
} | |
enum disabled { | |
value 2; | |
} | |
} | |
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"; | |
} | |
} | |
} | |
/* | |
* Operational state data nodes | |
*/ | |
container interfaces-state { | |
config false; | |
description | |
"Data nodes for the operational state of interfaces."; | |
list interface { | |
key "name"; | |
description | |
"The list of interfaces on the device. | |
System-controlled interfaces created by the system are | |
always present in this list, whether they are configured or | |
not."; | |
leaf name { | |
type string; | |
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; | |
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; | |
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; | |
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; | |
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; | |
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; | |
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; | |
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; | |
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"; | |
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 { | |
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"; | |
} | |
} | |
} | |
} | |
} | |
} | |
} |