netconfcentral logo

IF-MIB.yang



   module IF-MIB {

      yang-version 1;

      namespace
         "urn:ietf:params:xml:ns:yang:smiv2:IF-MIB";

      prefix "if-mib";

      import IANAifType-MIB {
         prefix "ianaiftype-mib";
      }
      import SNMPv2-TC {
         prefix "smiv2";
      }
      import yang-smi {
         prefix "smi";
      }
      import ietf-yang-types {
         prefix "yang";
      }

      organization "IETF Interfaces MIB Working Group";

      contact
         "   Keith McCloghrie
         Cisco Systems, Inc.
         170 West Tasman Drive
         San Jose, CA  95134-1706
         US
         
         408-526-5260
         kzm@cisco.com";

      description
         "The MIB module to describe generic objects for network
         interface sub-layers.  This MIB is an updated version of
         MIB-II's ifTable, and incorporates the extensions defined in
         RFC 1229.";

      revision "2000-06-14" {
         description
            "Clarifications agreed upon by the Interfaces MIB WG, and
            published as RFC 2863.";
      }

      revision "1996-02-28" {
         description
            "Revisions made by the Interfaces MIB WG, and published in
            RFC 2233.";
      }

      revision "1993-11-08" {
         description
            "Initial revision, published as part of RFC 1573.";
      }


      typedef OwnerString {
         type string {
            length "0..255";
            pattern '\p{IsBasicLatin}{0,255}';
            smi:display-hint "255a";
         }
         status "deprecated";
         description
            "This data type is used to model an administratively
            assigned name of the owner of a resource.  This information
            is taken from the NVT ASCII character set.  It is suggested
            that this name contain one or more of the following: ASCII
            form of the manager station's transport address, management
            station name (e.g., domain name), network management
            personnel's name, location, or phone number.  In some cases
            the agent itself will be the owner of an entry.  In these
            cases, this string shall be set to a string starting with
            'agent'.";
      }

      typedef InterfaceIndex {
         type int32 {
            range "1..2147483647";
            smi:display-hint "d";
         }
         description
            "A unique value, greater than zero, for each interface or
            interface sub-layer in the managed system.  It is
            recommended that values are assigned contiguously starting
            from 1.  The value for each interface sub-layer must remain
            constant at least from one re-initialization of the entity's
            network management system to the next re-initialization.";
      }

      typedef InterfaceIndexOrZero {
         type int32 {
            range "0..2147483647";
            smi:display-hint "d";
         }
         description
            "This textual convention is an extension of the
            InterfaceIndex convention.  The latter defines a greater
            than zero value used to identify an interface or interface
            sub-layer in the managed system.  This extension permits the
            additional value of zero.  the value zero is object-specific
            and must therefore be defined as part of the description of
            any object which uses this syntax.  Examples of the usage of
            zero might include situations where interface was unknown,
            or when none or all interfaces need to be referenced.";
      }

      container interfaces {
         leaf ifNumber {
            type int32;
            config "false";
            description
               "The number of network interfaces (regardless of their
               current state) present on this system.";
            smi:oid "1.3.6.1.2.1.2.1";
         }

         list ifEntry {
            key "ifIndex";
            description
               "An entry containing management information applicable to a
               particular interface.";
            leaf ifIndex {
               type InterfaceIndex;
               description
                  "A unique value, greater than zero, for each interface.  It
                  is recommended that values are assigned contiguously
                  starting from 1.  The value for each interface sub-layer
                  must remain constant at least from one re-initialization of
                  the entity's network management system to the next re-
                  initialization.";
               smi:oid "1.3.6.1.2.1.2.2.1.1";
            }

            leaf ifDescr {
               type smiv2:DisplayString {
                  length "0..255";
               }
               config "false";
               description
                  "A textual string containing information about the
                  interface.  This string should include the name of the
                  manufacturer, the product name and the version of the
                  interface hardware/software.";
               smi:oid "1.3.6.1.2.1.2.2.1.2";
            }

            leaf ifType {
               type ianaiftype-mib:IANAifType;
               config "false";
               description
                  "The type of interface.  Additional values for ifType are
                  assigned by the Internet Assigned Numbers Authority (IANA),
                  through updating the syntax of the IANAifType textual
                  convention.";
               smi:oid "1.3.6.1.2.1.2.2.1.3";
            }

            leaf ifMtu {
               type int32;
               config "false";
               description
                  "The size of the largest packet which can be sent/received
                  on the interface, specified in octets.  For interfaces that
                  are used for transmitting network datagrams, this is the
                  size of the largest network datagram that can be sent on the
                  interface.";
               smi:oid "1.3.6.1.2.1.2.2.1.4";
            }

            leaf ifSpeed {
               type yang:gauge32;
               config "false";
               description
                  "An estimate of the interface's current bandwidth in bits
                  per second.  For interfaces which do not vary in bandwidth
                  or for those where no accurate estimation can be made, this
                  object should contain the nominal bandwidth.  If the
                  bandwidth of the interface is greater than the maximum value
                  reportable by this object then this object should report its
                  maximum value (4,294,967,295) and ifHighSpeed must be used
                  to report the interace's speed.  For a sub-layer which has
                  no concept of bandwidth, this object should be zero.";
               smi:oid "1.3.6.1.2.1.2.2.1.5";
            }

            leaf ifPhysAddress {
               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 MAC address.  The interface's media-specific MIB
                  must define the bit and byte ordering and the format of the
                  value of this object.  For interfaces which do not have such
                  an address (e.g., a serial line), this object should contain
                  an octet string of zero length.";
               smi:oid "1.3.6.1.2.1.2.2.1.6";
            }

            leaf ifAdminStatus {
               type enumeration {
                  enum "up" {
                     value 1;
                  }
                  enum "down" {
                     value 2;
                  }
                  enum "testing" {
                     value 3;
                  }
               }
               description
                  "The desired state of the interface.  The testing(3) state
                  indicates that no operational packets can be passed.  When a
                  managed system initializes, all interfaces start with
                  ifAdminStatus in the down(2) state.  As a result of either
                  explicit management action or per configuration information
                  retained by the managed system, ifAdminStatus is then
                  changed to either the up(1) or testing(3) states (or remains
                  in the down(2) state).";
               smi:oid "1.3.6.1.2.1.2.2.1.7";
            }

            leaf ifOperStatus {
               type enumeration {
                  enum "up" {
                     value 1;
                  }
                  enum "down" {
                     value 2;
                  }
                  enum "testing" {
                     value 3;
                  }
                  enum "unknown" {
                     value 4;
                  }
                  enum "dormant" {
                     value 5;
                  }
                  enum "notPresent" {
                     value 6;
                  }
                  enum "lowerLayerDown" {
                     value 7;
                  }
               }
               config "false";
               description
                  "The current operational state of the interface.  The
                  testing(3) state indicates that no operational packets can
                  be passed.  If ifAdminStatus is down(2) then ifOperStatus
                  should be down(2).  If ifAdminStatus is changed to up(1)
                  then ifOperStatus should change to up(1) if the interface is
                  ready to transmit and receive network traffic; it should
                  change to dormant(5) if the interface is waiting for
                  external actions (such as a serial line waiting for an
                  incoming connection); it should remain in the down(2) state
                  if and only if there is a fault that prevents it from going
                  to the up(1) state; it should remain in the notPresent(6)
                  state if the interface has missing (typically, hardware)
                  components.";
               smi:oid "1.3.6.1.2.1.2.2.1.8";
            }

            leaf ifLastChange {
               type yang:timeticks;
               config "false";
               description
                  "The value of sysUpTime at 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 object contains a
                  zero value.";
               smi:oid "1.3.6.1.2.1.2.2.1.9";
            }

            leaf ifInOctets {
               type yang:counter32;
               config "false";
               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
                  ifCounterDiscontinuityTime.";
               smi:oid "1.3.6.1.2.1.2.2.1.10";
            }

            leaf ifInUcastPkts {
               type yang:counter32;
               config "false";
               description
                  "The number of packets, delivered by this sub-layer to a
                  higher (sub-)layer, which 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
                  ifCounterDiscontinuityTime.";
               smi:oid "1.3.6.1.2.1.2.2.1.11";
            }

            leaf ifInNUcastPkts {
               type yang:counter32;
               config "false";
               status "deprecated";
               description
                  "The number of packets, delivered by this sub-layer to a
                  higher (sub-)layer, which were 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
                  ifCounterDiscontinuityTime.
                  
                  This object is deprecated in favour of ifInMulticastPkts and
                  ifInBroadcastPkts.";
               smi:oid "1.3.6.1.2.1.2.2.1.12";
            }

            leaf ifInDiscards {
               type yang:counter32;
               config "false";
               description
                  "The number of inbound packets which 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
                  ifCounterDiscontinuityTime.";
               smi:oid "1.3.6.1.2.1.2.2.1.13";
            }

            leaf ifInErrors {
               type yang:counter32;
               config "false";
               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
                  ifCounterDiscontinuityTime.";
               smi:oid "1.3.6.1.2.1.2.2.1.14";
            }

            leaf ifInUnknownProtos {
               type yang:counter32;
               config "false";
               description
                  "For packet-oriented interfaces, the number of packets
                  received via the interface which 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 which were discarded because of an unknown or
                  unsupported protocol.  For any interface that does not
                  support protocol multiplexing, this counter will always be
                  0.
                  
                  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
                  ifCounterDiscontinuityTime.";
               smi:oid "1.3.6.1.2.1.2.2.1.15";
            }

            leaf ifOutOctets {
               type yang:counter32;
               config "false";
               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
                  ifCounterDiscontinuityTime.";
               smi:oid "1.3.6.1.2.1.2.2.1.16";
            }

            leaf ifOutUcastPkts {
               type yang:counter32;
               config "false";
               description
                  "The total number of packets that higher-level protocols
                  requested be transmitted, and which 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
                  ifCounterDiscontinuityTime.";
               smi:oid "1.3.6.1.2.1.2.2.1.17";
            }

            leaf ifOutNUcastPkts {
               type yang:counter32;
               config "false";
               status "deprecated";
               description
                  "The total number of packets that higher-level protocols
                  requested be transmitted, and which were 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
                  ifCounterDiscontinuityTime.
                  
                  This object is deprecated in favour of ifOutMulticastPkts
                  and ifOutBroadcastPkts.";
               smi:oid "1.3.6.1.2.1.2.2.1.18";
            }

            leaf ifOutDiscards {
               type yang:counter32;
               config "false";
               description
                  "The number of outbound packets which 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
                  ifCounterDiscontinuityTime.";
               smi:oid "1.3.6.1.2.1.2.2.1.19";
            }

            leaf ifOutErrors {
               type yang:counter32;
               config "false";
               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
                  ifCounterDiscontinuityTime.";
               smi:oid "1.3.6.1.2.1.2.2.1.20";
            }

            leaf ifOutQLen {
               type yang:gauge32;
               config "false";
               status "deprecated";
               description
                  "The length of the output packet queue (in packets).";
               smi:oid "1.3.6.1.2.1.2.2.1.21";
            }

            leaf ifSpecific {
               type yang:object-identifier;
               config "false";
               status "deprecated";
               description
                  "A reference to MIB definitions specific to the particular
                  media being used to realize the interface.  It is
                  
                  recommended that this value point to an instance of a MIB
                  object in the media-specific MIB, i.e., that this object
                  have the semantics associated with the InstancePointer
                  textual convention defined in RFC 2579.  In fact, it is
                  recommended that the media-specific MIB specify what value
                  ifSpecific should/can take for values of ifType.  If no MIB
                  definitions specific to the particular media are available,
                  the value should be set to the OBJECT IDENTIFIER { 0 0 }.";
               smi:oid "1.3.6.1.2.1.2.2.1.22";
            }
            smi:oid "1.3.6.1.2.1.2.2.1";
         }  // list ifEntry
         smi:oid "1.3.6.1.2.1.2";
      }  // container interfaces

      container ifMIBObjects {
         list ifStackEntry {
            key "ifStackHigherLayer ifStackLowerLayer";
            description
               "Information on a particular relationship between two sub-
               layers, specifying that one sub-layer runs on 'top' of the
               other sub-layer.  Each sub-layer corresponds to a conceptual
               row in the ifTable.";
            leaf ifStackHigherLayer {
               type InterfaceIndexOrZero;
               description
                  "The value of ifIndex corresponding to the higher sub-layer
                  of the relationship, i.e., the sub-layer which runs on 'top'
                  of the sub-layer identified by the corresponding instance of
                  ifStackLowerLayer.  If there is no higher sub-layer (below
                  the internetwork layer), then this object has the value 0.";
               smi:oid "1.3.6.1.2.1.31.1.2.1.1";
            }

            leaf ifStackLowerLayer {
               type InterfaceIndexOrZero;
               description
                  "The value of ifIndex corresponding to the lower sub-layer
                  of the relationship, i.e., the sub-layer which runs 'below'
                  the sub-layer identified by the corresponding instance of
                  ifStackHigherLayer.  If there is no lower sub-layer, then
                  this object has the value 0.";
               smi:oid "1.3.6.1.2.1.31.1.2.1.2";
            }

            leaf ifStackStatus {
               type smiv2:RowStatus;
               description
                  "The status of the relationship between two sub-layers.
                  
                  Changing the value of this object from 'active' to
                  'notInService' or 'destroy' will likely have consequences up
                  and down the interface stack.  Thus, write access to this
                  object is likely to be inappropriate for some types of
                  interfaces, and many implementations will choose not to
                  support write-access for any type of interface.";
               smi:oid "1.3.6.1.2.1.31.1.2.1.3";
            }
            smi:oid "1.3.6.1.2.1.31.1.2.1";
         }  // list ifStackEntry

         list ifRcvAddressEntry {
            key "ifIndex ifRcvAddressAddress";
            description
               "A list of objects identifying an address for which the
               system will accept packets/frames on the particular
               interface identified by the index value ifIndex.";
            leaf ifIndex {
               type leafref {
                  path
                     "/if-mib:interfaces/if-mib:ifEntry/if-mib:ifIndex";
               }
               description "Automagically generated leafref leaf.";
            }

            leaf ifRcvAddressAddress {
               type yang:phys-address;
               description
                  "An address for which the system will accept packets/frames
                  on this entry's interface.";
               smi:oid "1.3.6.1.2.1.31.1.4.1.1";
            }

            leaf ifRcvAddressStatus {
               type smiv2:RowStatus;
               description
                  "This object is used to create and delete rows in the
                  ifRcvAddressTable.";
               smi:oid "1.3.6.1.2.1.31.1.4.1.2";
            }

            leaf ifRcvAddressType {
               type enumeration {
                  enum "other" {
                     value 1;
                  }
                  enum "volatile" {
                     value 2;
                  }
                  enum "nonVolatile" {
                     value 3;
                  }
               }
               description
                  "This object has the value nonVolatile(3) for those entries
                  in the table which are valid and will not be deleted by the
                  next restart of the managed system.  Entries having the
                  value volatile(2) are valid and exist, but have not been
                  saved, so that will not exist after the next restart of the
                  managed system.  Entries having the value other(1) are valid
                  and exist but are not classified as to whether they will
                  continue to exist after the next restart.";
               smi:default "volatile";
               smi:oid "1.3.6.1.2.1.31.1.4.1.3";
            }
            smi:oid "1.3.6.1.2.1.31.1.4.1";
         }  // list ifRcvAddressEntry

         leaf ifTableLastChange {
            type yang:timeticks;
            config "false";
            description
               "The value of sysUpTime at the time of the last creation or
               deletion of an entry in the ifTable.  If the number of
               entries has been unchanged since the last re-initialization
               of the local network management subsystem, then this object
               contains a zero value.";
            smi:oid "1.3.6.1.2.1.31.1.5";
         }

         leaf ifStackLastChange {
            type yang:timeticks;
            config "false";
            description
               "The value of sysUpTime at the time of the last change of
               the (whole) interface stack.  A change of the interface
               stack is defined to be any creation, deletion, or change in
               value of any instance of ifStackStatus.  If the interface
               stack has been unchanged since the last re-initialization of
               the local network management subsystem, then this object
               contains a zero value.";
            smi:oid "1.3.6.1.2.1.31.1.6";
         }
         smi:oid "1.3.6.1.2.1.31.1";
      }  // container ifMIBObjects

      augment /if-mib:interfaces/if-mib:ifEntry {
         description
            "An entry containing additional management information
            applicable to a particular interface.";
         leaf ifName {
            type smiv2:DisplayString;
            config "false";
            description
               "The textual name of the interface.  The value of this
               object should be the name of the interface as assigned by
               the local device and should be suitable for use in commands
               entered at the device's `console'.  This might be a text
               name, such as `le0' or a simple port number, such as `1',
               depending on the interface naming syntax of the device.  If
               several entries in the ifTable together represent a single
               interface as named by the device, then each will have the
               same value of ifName.  Note that for an agent which responds
               to SNMP queries concerning an interface on some other
               (proxied) device, then the value of ifName for such an
               interface is the proxied device's local name for it.
               
               If there is no local name, or this object is otherwise not
               applicable, then this object contains a zero-length string.";
            smi:oid "1.3.6.1.2.1.31.1.1.1.1";
         }

         leaf ifInMulticastPkts {
            type yang:counter32;
            config "false";
            description
               "The number of packets, delivered by this sub-layer to a
               higher (sub-)layer, which 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
               ifCounterDiscontinuityTime.";
            smi:oid "1.3.6.1.2.1.31.1.1.1.2";
         }

         leaf ifInBroadcastPkts {
            type yang:counter32;
            config "false";
            description
               "The number of packets, delivered by this sub-layer to a
               higher (sub-)layer, which 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
               ifCounterDiscontinuityTime.";
            smi:oid "1.3.6.1.2.1.31.1.1.1.3";
         }

         leaf ifOutMulticastPkts {
            type yang:counter32;
            config "false";
            description
               "The total number of packets that higher-level protocols
               requested be transmitted, and which 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
               ifCounterDiscontinuityTime.";
            smi:oid "1.3.6.1.2.1.31.1.1.1.4";
         }

         leaf ifOutBroadcastPkts {
            type yang:counter32;
            config "false";
            description
               "The total number of packets that higher-level protocols
               requested be transmitted, and which 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
               ifCounterDiscontinuityTime.";
            smi:oid "1.3.6.1.2.1.31.1.1.1.5";
         }

         leaf ifHCInOctets {
            type yang:counter64;
            config "false";
            description
               "The total number of octets received on the interface,
               including framing characters.  This object is a 64-bit
               version of ifInOctets.
               
               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
               ifCounterDiscontinuityTime.";
            smi:oid "1.3.6.1.2.1.31.1.1.1.6";
         }

         leaf ifHCInUcastPkts {
            type yang:counter64;
            config "false";
            description
               "The number of packets, delivered by this sub-layer to a
               higher (sub-)layer, which were not addressed to a multicast
               or broadcast address at this sub-layer.  This object is a
               64-bit version of ifInUcastPkts.
               
               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
               ifCounterDiscontinuityTime.";
            smi:oid "1.3.6.1.2.1.31.1.1.1.7";
         }

         leaf ifHCInMulticastPkts {
            type yang:counter64;
            config "false";
            description
               "The number of packets, delivered by this sub-layer to a
               higher (sub-)layer, which were addressed to a multicast
               address at this sub-layer.  For a MAC layer protocol, this
               includes both Group and Functional addresses.  This object
               is a 64-bit version of ifInMulticastPkts.
               
               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
               ifCounterDiscontinuityTime.";
            smi:oid "1.3.6.1.2.1.31.1.1.1.8";
         }

         leaf ifHCInBroadcastPkts {
            type yang:counter64;
            config "false";
            description
               "The number of packets, delivered by this sub-layer to a
               higher (sub-)layer, which were addressed to a broadcast
               address at this sub-layer.  This object is a 64-bit version
               of ifInBroadcastPkts.
               
               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
               ifCounterDiscontinuityTime.";
            smi:oid "1.3.6.1.2.1.31.1.1.1.9";
         }

         leaf ifHCOutOctets {
            type yang:counter64;
            config "false";
            description
               "The total number of octets transmitted out of the
               interface, including framing characters.  This object is a
               64-bit version of ifOutOctets.
               
               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
               ifCounterDiscontinuityTime.";
            smi:oid "1.3.6.1.2.1.31.1.1.1.10";
         }

         leaf ifHCOutUcastPkts {
            type yang:counter64;
            config "false";
            description
               "The total number of packets that higher-level protocols
               requested be transmitted, and which were not addressed to a
               multicast or broadcast address at this sub-layer, including
               those that were discarded or not sent.  This object is a
               64-bit version of ifOutUcastPkts.
               
               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
               ifCounterDiscontinuityTime.";
            smi:oid "1.3.6.1.2.1.31.1.1.1.11";
         }

         leaf ifHCOutMulticastPkts {
            type yang:counter64;
            config "false";
            description
               "The total number of packets that higher-level protocols
               requested be transmitted, and which 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.  This object
               is a 64-bit version of ifOutMulticastPkts.
               
               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
               ifCounterDiscontinuityTime.";
            smi:oid "1.3.6.1.2.1.31.1.1.1.12";
         }

         leaf ifHCOutBroadcastPkts {
            type yang:counter64;
            config "false";
            description
               "The total number of packets that higher-level protocols
               requested be transmitted, and which were addressed to a
               broadcast address at this sub-layer, including those that
               were discarded or not sent.  This object is a 64-bit version
               of ifOutBroadcastPkts.
               
               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
               ifCounterDiscontinuityTime.";
            smi:oid "1.3.6.1.2.1.31.1.1.1.13";
         }

         leaf ifLinkUpDownTrapEnable {
            type enumeration {
               enum "enabled" {
                  value 1;
               }
               enum "disabled" {
                  value 2;
               }
            }
            description
               "Indicates whether linkUp/linkDown traps should be generated
               for this interface.
               
               By default, this object should have the value enabled(1) for
               interfaces which do not operate on 'top' of any other
               interface (as defined in the ifStackTable), and disabled(2)
               otherwise.";
            smi:oid "1.3.6.1.2.1.31.1.1.1.14";
         }

         leaf ifHighSpeed {
            type yang:gauge32;
            config "false";
            description
               "An estimate of the interface's current bandwidth in units
               of 1,000,000 bits per second.  If this object reports a
               value of `n' then the speed of the interface is somewhere in
               the range of `n-500,000' to `n+499,999'.  For interfaces
               which do not vary in bandwidth or for those where no
               accurate estimation can be made, this object should contain
               the nominal bandwidth.  For a sub-layer which has no concept
               of bandwidth, this object should be zero.";
            smi:oid "1.3.6.1.2.1.31.1.1.1.15";
         }

         leaf ifPromiscuousMode {
            type smiv2:TruthValue;
            description
               "This object has a value of false(2) if this interface only
               accepts packets/frames that are addressed to this station.
               This object has a value of true(1) when the station accepts
               all packets/frames transmitted on the media.  The value
               true(1) is only legal on certain types of media.  If legal,
               setting this object to a value of true(1) may require the
               interface to be reset before becoming effective.
               
               The value of ifPromiscuousMode does not affect the reception
               of broadcast and multicast packets/frames by the interface.";
            smi:oid "1.3.6.1.2.1.31.1.1.1.16";
         }

         leaf ifConnectorPresent {
            type smiv2:TruthValue;
            config "false";
            description
               "This object has the value 'true(1)' if the interface
               sublayer has a physical connector and the value 'false(2)'
               otherwise.";
            smi:oid "1.3.6.1.2.1.31.1.1.1.17";
         }

         leaf ifAlias {
            type smiv2:DisplayString {
               length "0..64";
            }
            description
               "This object is an 'alias' name for the interface as
               specified by a network manager, and provides a non-volatile
               'handle' for the interface.
               
               On the first instantiation of an interface, the value of
               ifAlias associated with that interface is the zero-length
               string.  As and when a value is written into an instance of
               ifAlias through a network management set operation, then the
               agent must retain the supplied value in the ifAlias instance
               associated with the same interface for as long as that
               interface remains instantiated, including across all re-
               initializations/reboots of the network management system,
               including those which result in a change of the interface's
               ifIndex value.
               
               An example of the value which a network manager might store
               in this object for a WAN interface is the (Telco's) circuit
               number/identifier of the interface.
               
               Some agents may support write-access only for interfaces
               having particular values of ifType.  An agent which supports
               write access to this object is required to keep the value in
               non-volatile storage, but it may limit the length of new
               values depending on how much storage is already occupied by
               the current values for other interfaces.";
            smi:oid "1.3.6.1.2.1.31.1.1.1.18";
         }

         leaf ifCounterDiscontinuityTime {
            type yang:timestamp;
            config "false";
            description
               "The value of sysUpTime on the most recent occasion at which
               any one or more of this interface's counters suffered a
               discontinuity.  The relevant counters are the specific
               instances associated with this interface of any Counter32 or
               
               Counter64 object contained in the ifTable or ifXTable.  If
               no such discontinuities have occurred since the last re-
               initialization of the local management subsystem, then this
               object contains a zero value.";
            smi:oid "1.3.6.1.2.1.31.1.1.1.19";
         }
         smi:oid "1.3.6.1.2.1.31.1.1.1";
      }

      augment /if-mib:interfaces/if-mib:ifEntry {
         status "deprecated";
         description
            "An entry containing objects for invoking tests on an
            interface.";
         leaf ifTestId {
            type smiv2:TestAndIncr;
            status "deprecated";
            description
               "This object identifies the current invocation of the
               interface's test.";
            smi:oid "1.3.6.1.2.1.31.1.3.1.1";
         }

         leaf ifTestStatus {
            type enumeration {
               enum "notInUse" {
                  value 1;
               }
               enum "inUse" {
                  value 2;
               }
            }
            status "deprecated";
            description
               "This object indicates whether or not some manager currently
               has the necessary 'ownership' required to invoke a test on
               this interface.  A write to this object is only successful
               when it changes its value from 'notInUse(1)' to 'inUse(2)'.
               After completion of a test, the agent resets the value back
               to 'notInUse(1)'.";
            smi:oid "1.3.6.1.2.1.31.1.3.1.2";
         }

         leaf ifTestType {
            type smiv2:AutonomousType;
            status "deprecated";
            description
               "A control variable used to start and stop operator-
               initiated interface tests.  Most OBJECT IDENTIFIER values
               assigned to tests are defined elsewhere, in association with
               specific types of interface.  However, this document assigns
               a value for a full-duplex loopback test, and defines the
               special meanings of the subject identifier:
               
                   noTest  OBJECT IDENTIFIER ::= { 0 0 }
               
               When the value noTest is written to this object, no action
               is taken unless a test is in progress, in which case the
               test is aborted.  Writing any other value to this object is
               
               only valid when no test is currently in progress, in which
               case the indicated test is initiated.
               
               When read, this object always returns the most recent value
               that ifTestType was set to.  If it has not been set since
               the last initialization of the network management subsystem
               on the agent, a value of noTest is returned.";
            smi:oid "1.3.6.1.2.1.31.1.3.1.3";
         }

         leaf ifTestResult {
            type enumeration {
               enum "none" {
                  value 1;
               }
               enum "success" {
                  value 2;
               }
               enum "inProgress" {
                  value 3;
               }
               enum "notSupported" {
                  value 4;
               }
               enum "unAbleToRun" {
                  value 5;
               }
               enum "aborted" {
                  value 6;
               }
               enum "failed" {
                  value 7;
               }
            }
            config "false";
            status "deprecated";
            description
               "This object contains the result of the most recently
               requested test, or the value none(1) if no tests have been
               requested since the last reset.  Note that this facility
               provides no provision for saving the results of one test
               when starting another, as could be required if used by
               multiple managers concurrently.";
            smi:oid "1.3.6.1.2.1.31.1.3.1.4";
         }

         leaf ifTestCode {
            type yang:object-identifier;
            config "false";
            status "deprecated";
            description
               "This object contains a code which contains more specific
               information on the test result, for example an error-code
               after a failed test.  Error codes and other values this
               object may take are specific to the type of interface and/or
               test.  The value may have the semantics of either the
               AutonomousType or InstancePointer textual conventions as
               defined in RFC 2579.  The identifier:
               
                   testCodeUnknown  OBJECT IDENTIFIER ::= { 0 0 }
               
               is defined for use if no additional result code is
               available.";
            smi:oid "1.3.6.1.2.1.31.1.3.1.5";
         }

         leaf ifTestOwner {
            type OwnerString;
            status "deprecated";
            description
               "The entity which currently has the 'ownership' required to
               invoke a test on this interface.";
            smi:oid "1.3.6.1.2.1.31.1.3.1.6";
         }
         smi:oid "1.3.6.1.2.1.31.1.3.1";
      }

      notification linkDown {
         description
            "A linkDown trap signifies that the SNMP entity, acting in
            an agent role, has detected that the ifOperStatus object for
            one of its communication links is about to enter the down
            state from some other state (but not from the notPresent
            state).  This other state is indicated by the included value
            of ifOperStatus.";
         container linkDown-ifIndex {
            leaf ifIndex {
               type leafref {
                  path
                     "/if-mib:interfaces/if-mib:ifEntry/if-mib:ifIndex";
               }
               config "false";
               description "Automagically generated leafref leaf.";
            }
         }  // container linkDown-ifIndex

         container linkDown-ifAdminStatus {
            leaf ifIndex {
               type leafref {
                  path
                     "/if-mib:interfaces/if-mib:ifEntry/if-mib:ifIndex";
               }
               config "false";
               description "Automagically generated leafref leaf.";
            }

            leaf ifAdminStatus {
               type enumeration {
                  enum "up" {
                     value 1;
                  }
                  enum "down" {
                     value 2;
                  }
                  enum "testing" {
                     value 3;
                  }
               }
               config "false";
               description
                  "The desired state of the interface.  The testing(3) state
                  indicates that no operational packets can be passed.  When a
                  managed system initializes, all interfaces start with
                  ifAdminStatus in the down(2) state.  As a result of either
                  explicit management action or per configuration information
                  retained by the managed system, ifAdminStatus is then
                  changed to either the up(1) or testing(3) states (or remains
                  in the down(2) state).";
               smi:oid "1.3.6.1.2.1.2.2.1.7";
            }
         }  // container linkDown-ifAdminStatus

         container linkDown-ifOperStatus {
            leaf ifIndex {
               type leafref {
                  path
                     "/if-mib:interfaces/if-mib:ifEntry/if-mib:ifIndex";
               }
               config "false";
               description "Automagically generated leafref leaf.";
            }

            leaf ifOperStatus {
               type enumeration {
                  enum "up" {
                     value 1;
                  }
                  enum "down" {
                     value 2;
                  }
                  enum "testing" {
                     value 3;
                  }
                  enum "unknown" {
                     value 4;
                  }
                  enum "dormant" {
                     value 5;
                  }
                  enum "notPresent" {
                     value 6;
                  }
                  enum "lowerLayerDown" {
                     value 7;
                  }
               }
               config "false";
               description
                  "The current operational state of the interface.  The
                  testing(3) state indicates that no operational packets can
                  be passed.  If ifAdminStatus is down(2) then ifOperStatus
                  should be down(2).  If ifAdminStatus is changed to up(1)
                  then ifOperStatus should change to up(1) if the interface is
                  ready to transmit and receive network traffic; it should
                  change to dormant(5) if the interface is waiting for
                  external actions (such as a serial line waiting for an
                  incoming connection); it should remain in the down(2) state
                  if and only if there is a fault that prevents it from going
                  to the up(1) state; it should remain in the notPresent(6)
                  state if the interface has missing (typically, hardware)
                  components.";
               smi:oid "1.3.6.1.2.1.2.2.1.8";
            }
         }  // container linkDown-ifOperStatus
         smi:oid "1.3.6.1.6.3.1.1.5.3";
      }  // notification linkDown

      notification linkUp {
         description
            "A linkUp trap signifies that the SNMP entity, acting in an
            agent role, has detected that the ifOperStatus object for
            one of its communication links left the down state and
            transitioned into some other state (but not into the
            notPresent state).  This other state is indicated by the
            included value of ifOperStatus.";
         container linkUp-ifIndex {
            leaf ifIndex {
               type leafref {
                  path
                     "/if-mib:interfaces/if-mib:ifEntry/if-mib:ifIndex";
               }
               config "false";
               description "Automagically generated leafref leaf.";
            }
         }  // container linkUp-ifIndex

         container linkUp-ifAdminStatus {
            leaf ifIndex {
               type leafref {
                  path
                     "/if-mib:interfaces/if-mib:ifEntry/if-mib:ifIndex";
               }
               config "false";
               description "Automagically generated leafref leaf.";
            }

            leaf ifAdminStatus {
               type enumeration {
                  enum "up" {
                     value 1;
                  }
                  enum "down" {
                     value 2;
                  }
                  enum "testing" {
                     value 3;
                  }
               }
               config "false";
               description
                  "The desired state of the interface.  The testing(3) state
                  indicates that no operational packets can be passed.  When a
                  managed system initializes, all interfaces start with
                  ifAdminStatus in the down(2) state.  As a result of either
                  explicit management action or per configuration information
                  retained by the managed system, ifAdminStatus is then
                  changed to either the up(1) or testing(3) states (or remains
                  in the down(2) state).";
               smi:oid "1.3.6.1.2.1.2.2.1.7";
            }
         }  // container linkUp-ifAdminStatus

         container linkUp-ifOperStatus {
            leaf ifIndex {
               type leafref {
                  path
                     "/if-mib:interfaces/if-mib:ifEntry/if-mib:ifIndex";
               }
               config "false";
               description "Automagically generated leafref leaf.";
            }

            leaf ifOperStatus {
               type enumeration {
                  enum "up" {
                     value 1;
                  }
                  enum "down" {
                     value 2;
                  }
                  enum "testing" {
                     value 3;
                  }
                  enum "unknown" {
                     value 4;
                  }
                  enum "dormant" {
                     value 5;
                  }
                  enum "notPresent" {
                     value 6;
                  }
                  enum "lowerLayerDown" {
                     value 7;
                  }
               }
               config "false";
               description
                  "The current operational state of the interface.  The
                  testing(3) state indicates that no operational packets can
                  be passed.  If ifAdminStatus is down(2) then ifOperStatus
                  should be down(2).  If ifAdminStatus is changed to up(1)
                  then ifOperStatus should change to up(1) if the interface is
                  ready to transmit and receive network traffic; it should
                  change to dormant(5) if the interface is waiting for
                  external actions (such as a serial line waiting for an
                  incoming connection); it should remain in the down(2) state
                  if and only if there is a fault that prevents it from going
                  to the up(1) state; it should remain in the notPresent(6)
                  state if the interface has missing (typically, hardware)
                  components.";
               smi:oid "1.3.6.1.2.1.2.2.1.8";
            }
         }  // container linkUp-ifOperStatus
         smi:oid "1.3.6.1.6.3.1.1.5.4";
      }  // notification linkUp
   }  // module IF-MIB