| 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: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: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 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 |
| /interfaces-state/interface list. If the configuration |
| of a user-controlled interface cannot be used by the system, |
| the configured interface is not instantiated in the |
| /interfaces-state/interface list."; |
| |
| leaf name { |
| type yang:yang-identifier; |
| |
| must ".='eth0' or .='eth1' or .='lo'" { |
| error-app-tag "if-must-1"; |
| error-message "Interface name must only be eth0, eth1 or lo"; |
| } |
| |
| 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 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 |
| 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 { //Removed as per EAG-32 we never want to disable the whole interface |
| // 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"; |
| } |
| } |
| } |
| } |
| } |