PACKETFRONT-DRG-MIB DEFINITIONS ::= BEGIN

-- Copyright (c) 2008,2009 Packetfront Systems AB

IMPORTS
  MacAddress,
  RowStatus
    FROM SNMPv2-TC

  MODULE-IDENTITY,
  OBJECT-TYPE,
  NOTIFICATION-TYPE,
  Integer32,
  Unsigned32,
  Counter32,
  IpAddress
    FROM SNMPv2-SMI

  pfMgmt
    FROM PACKETFRONT-SMI

  PortList
    FROM PACKETFRONT-TC
;


-- *****************************************************************************
-- drgMIB
--
-- ***************************************************************************** 
pfDrgMib MODULE-IDENTITY
    LAST-UPDATED "200903231538Z"
    ORGANIZATION "PacketFront Systems AB"
    CONTACT-INFO
        "PacketFront Systems AB
         Customer Service

         Mail : Isafjordsgatan 35
                SE-164 28 Kista
                Sweden

         Tel  : +46 8 5090 1500

         E-mail: snmp@packetfront.com
         Web   : http://www.packetfront.com"
    DESCRIPTION
        "The MIB module for managing Packetfront DRG devices"

    REVISION    "200903231538Z" -- March 23, 2009
    DESCRIPTION
        "Updated telephone information in contact-info"
    REVISION    "200804110000Z" -- April 11, 2008
    DESCRIPTION
        "Initial release."

       ::= { pfMgmt 3 }


drgNotification OBJECT IDENTIFIER ::= { pfDrgMib 0 }
drgConfig       OBJECT IDENTIFIER ::= { pfDrgMib 1 }
drgConformance  OBJECT IDENTIFIER ::= { pfDrgMib 2 }


-- *****************************************************************************
-- productInfo contains product-specific information regarding the physical
-- device, its firmware and operator configuration.
--
-- *****************************************************************************
productInfo  OBJECT IDENTIFIER ::= { drgConfig 1 }

productName OBJECT-TYPE
  SYNTAX OCTET STRING  (SIZE(0..16))
  MAX-ACCESS read-only
  STATUS current
  DESCRIPTION
  "The name of the product."
    ::= { productInfo 1 }

productSerialNo OBJECT-TYPE
  SYNTAX OCTET STRING  (SIZE(0..10))
  MAX-ACCESS read-only
  STATUS current
  DESCRIPTION
  "The unique serial number programmed into the device in the factory. "
    ::= { productInfo 2 }

productProductionWeek OBJECT-TYPE
  SYNTAX OCTET STRING  (SIZE(0..8))
  MAX-ACCESS read-only
  STATUS current
  DESCRIPTION
  "The week and year in which this device was manufactured."
    ::= { productInfo 3 }

productSwImageRev OBJECT-TYPE
  SYNTAX OCTET STRING  (SIZE(0..32))
  MAX-ACCESS read-only
  STATUS current
  DESCRIPTION
  "The revision of the software in the device. This may be upgraded. E.g 
  DMA0081-R2K123."
    ::= { productInfo 4 }

productFwImageRev OBJECT-TYPE
  SYNTAX OCTET STRING  (SIZE(0..32))
  MAX-ACCESS read-only
  STATUS current
  DESCRIPTION
  "The revision of the firmware in the device. This describes the bootloader 
  revision, e.g. cxc_132_4098-R3A18."
    ::= { productInfo 5 }


productDefaultRevision OBJECT-TYPE
  SYNTAX OCTET STRING  (SIZE(0..8))
  MAX-ACCESS read-only
  STATUS current
  DESCRIPTION
  "The revision of the default configuration in the device. This describes the
  revision of information loaded during manufacture."
    ::= { productInfo 6 }

productOpDefRev OBJECT-TYPE
  SYNTAX OCTET STRING  (SIZE(0..32))
  MAX-ACCESS read-only
  STATUS current
  DESCRIPTION
  "The revision of the operator default information (the .ini file). The syntax
  is operator specific.Operator default revision ( INI file )."
    ::= { productInfo 7 }

productHardwareRev OBJECT-TYPE
  SYNTAX OCTET STRING  (SIZE(0..32))
  MAX-ACCESS read-only
  STATUS current
  DESCRIPTION
  "Manufacturing hardware information regarding the revision of the hardware."
    ::= { productInfo 8 }

productPlatform OBJECT-TYPE
  SYNTAX OCTET STRING (SIZE(0..16))
  MAX-ACCESS read-only
  STATUS current
  DESCRIPTION
  "This provides a predefined string for each product family - this differs
  from productName in that this cannot be configured by the operator,
  therefore will be constant across all platforms of the same type irrespective
  of the operator-specific name for the platform. This is useful for network
  operators managing a heterogeneous mix of platforms from different service
  providers"
    ::= { productInfo 9 }

productHardwarePCBARevision OBJECT-TYPE
  SYNTAX Integer32
  MAX-ACCESS read-only
  STATUS current
  DESCRIPTION
  "PCBA revision - this is a coded value read from the PCBA hardware."
    ::= { productInfo 10 }
   
productFunctionIdentity OBJECT-TYPE
  SYNTAX OCTET STRING (SIZE(0..32))
  MAX-ACCESS read-only
  STATUS current
  DESCRIPTION
  "Describes the functionality offered by the device."
    ::= { productInfo 11 }

productMacAddress OBJECT-TYPE
  SYNTAX MacAddress
  MAX-ACCESS read-only
  STATUS current
  DESCRIPTION
  "The device MAC address - this is used in various alert messages to uniquely
  identify the specific device. The MAC address used is the MAC of the
  management entity of the device"
    ::= { productInfo 12 }

productIdentity OBJECT-TYPE
  SYNTAX OCTET STRING (SIZE(0..32))
  MAX-ACCESS read-only
  STATUS current
  DESCRIPTION
  "This object provides a unique identity for the device. By default this will
  be the same as the productMacAddress, however, if a hostname has been defined
  or provided by a DHCP server, then this will be used instead. In the former
  case, therefore, the identity is guaranteed to be unique, while in the latter
  it is the operator's responsibility to ensure that the identity is unique."
    ::= { productInfo 13 }


-- *****************************************************************************
-- Basic configuration parameters for the system.
--
-- *****************************************************************************
systemConfig OBJECT IDENTIFIER ::= { drgConfig 2 }

systemConfigRestartControl OBJECT-TYPE
  SYNTAX INTEGER {
    running(1),
    restartNow(2)
  }
  MAX-ACCESS read-write
  STATUS current
  DESCRIPTION
  "Setting this object to restartNow(2) causes the device to reboot
  immediately. Note that this will cause any unsave configuration changes
  to be lost, therefore configuration changes should be saved before using
  this value if the changes are required.
  The device returns running(1) in all other cases."
    ::= { systemConfig 1 }

systemConfigRestartControlNotify OBJECT-TYPE
  SYNTAX INTEGER {
    silent(1),
    notifying(2)
  }
  MAX-ACCESS read-write
  STATUS current
  DESCRIPTION
   "This object controls the operation of the notifyRestart alert. The
   notifyRestart is sent repeatedly when the object is equal to notifying(2).
   The notifyRestart is not sent when the object is equal to silent(1)."
  DEFVAL { notifying }
    ::= { systemConfig 2 }

systemConfigSave OBJECT-TYPE
  SYNTAX INTEGER {
    save(1),
    changed(2),
    notChanged(3)
  }
  MAX-ACCESS read-write
  STATUS current
  DESCRIPTION
  "Setting the object to save(1) causes the running configuration to be
  saved. The object responds with changed(2) if the running configuration
  differs from the initial configuration. The object responds with notChanged(3)
  if no configuration changes have occurred since the last save or boot."
    ::= { systemConfig 3 }

systemConfigFactoryReset OBJECT-TYPE
  SYNTAX INTEGER {
    running(1),
    factoryReset(2)
  }
  MAX-ACCESS read-write
  STATUS current
  DESCRIPTION
  "Setting this object to factoryReset(2) causes the device to return to its
  factory default settings, and reboot. This means that any operator or user 
  configuration changes will be deleted, and the device will appear as if it 
  has not previously been installed and configured. When read this object will
  return running(1) unless it is currently in the process of performing a 
  factory reset."
    ::= { systemConfig 4 }

systemConfigSaveNotify OBJECT-TYPE
  SYNTAX INTEGER {
    silent(1),
    always(2),
    onlyErrors(3)
  }
  MAX-ACCESS read-write
  STATUS current
  DESCRIPTION
  "Setting this object to always(2) will cause the device to send a 
  notifyConfigSaveResult alert each time the configuration is saved. Setting 
  this object to onlyErrors(3) will cause the device to send a 
  notifyConfigSaveResult if an error occurs during a configuration save 
  procedure. Setting this object to silent(1) causes the device to not send 
  notifyConfigSaveResult alerts."
  DEFVAL { always }
    ::= { systemConfig 5 }


-- *****************************************************************************
-- downloadConfig provides the control and monitoring for the upgrading of
-- firmware and configuration.
--
-- *****************************************************************************
downloadConfig OBJECT IDENTIFIER ::= { drgConfig 3 } 

downloadServer OBJECT-TYPE
  SYNTAX OCTET STRING (SIZE(0..32))
  MAX-ACCESS read-write
  STATUS current
  DESCRIPTION
  "The address of the server that contains the file to be loaded. This may take
  the form of an IP address or FQDN."
    ::= { downloadConfig 1 }

downloadFile OBJECT-TYPE
  SYNTAX OCTET STRING  (SIZE(0..80))
  MAX-ACCESS read-write
  STATUS current
  DESCRIPTION
  "The file name to be downloaded from the download server or a URL to be 
  downloaded via http. This value is set to the zero length string when no 
  file name has been specified."
    ::= { downloadConfig 2 }

downloadAction OBJECT-TYPE
  SYNTAX INTEGER {
    notDownloading(1),
    startDownload(2)
  }
  MAX-ACCESS read-write
  STATUS current
  DESCRIPTION
  "When this object is set to startDownload(2), the system will attempt to
  connect to the server specified in downloadServer (or the host part of
  downloadFile if a URL has been specified there), using the method defined
  in downloadMethod. If the file is found and verified, it will be downloaded
  to the device and stored. When the download process is completed, the device 
  will restart the newly loaded application.
    When the device is not downloading, this object will have a value of 
  notDownloading(1)."
    ::= { downloadConfig 3 }

downloadMethod OBJECT-TYPE
  SYNTAX INTEGER {
    tftp(1),
    http(2),
    auto(3)
  }
  MAX-ACCESS read-write
  STATUS current
  DESCRIPTION
  "Defines the method to be used for the file download. This may be a specific 
  protocol, or auto(3) which will cycle through the available methods to find 
  one which works."
    ::= { downloadConfig 4 }
 
downloadRetryCount OBJECT-TYPE
  SYNTAX Integer32 (1..10)
  MAX-ACCESS read-write
  STATUS current
  DESCRIPTION
  "Controls the number of attempts which will be made to perform a download 
  before terminating the download attempt."
  DEFVAL { 5 }
    ::= { downloadConfig 5 }
       
downloadResultCode OBJECT-TYPE
  SYNTAX INTEGER {
    none(0),
    inProgress(1),
    success(2),
    failureHostNotFound(3),
    failureFileNotFound(4),
    failureFileIncorrectSize(5),
    failureFileVerifyFailure(6),
    failureFileIncompatible(7),
    failureUnknownError(8)
  }
  MAX-ACCESS read-only
  STATUS current
  DESCRIPTION
  "This object returns the status of the last download procedure. If no
  downloads have occurred, none(0) is returned, or if there is currently
  a download in progress, inProgress(1) is returned."
    ::= { downloadConfig 6 }

downloadResultNotify OBJECT-TYPE
  SYNTAX INTEGER {
    silent(1),
    always(2),
    onError(3)
  }
  MAX-ACCESS read-write
  STATUS current
  DESCRIPTION
  "Setting the object to always(2) cause the system to send 
  downloadResultCodeTrap after every download no matter the result. Setting 
  the object to onlyErrors(3) cause the system to send downloadResultCodeTrap 
  when an error occurs during the download. Setting the object to silent(1) 
  cause the system to not send any downloadResultNotify notifications."
  DEFVAL { always }
    ::= { downloadConfig 7 }


-- *****************************************************************************
-- hostConfig configures the system IP settings. A table is used, since there
-- may be multiple interfaces (physical and virtual). Each table entry defines
-- how an interfaces gets the information required, e.g. does it use DHCP, or
-- is the information provided by the operator, and what information may be
-- provided.
--
-- *****************************************************************************
hostConfig OBJECT IDENTIFIER ::= { drgConfig 4 } 

hostIfMax OBJECT-TYPE
  SYNTAX Integer32
  MAX-ACCESS read-only
  STATUS current
  DESCRIPTION
  "The maximum numbers of entries (and layer 3 interfaces) in the hostIfTable."
    ::= { hostConfig 1 }

hostIfDefined OBJECT-TYPE
  SYNTAX Integer32
  MAX-ACCESS read-only
  STATUS current
  DESCRIPTION
  "The current number of defined host interfaces, i.e. the number of entries in
  the hostIfTable."
    ::= { hostConfig 2 }

hostIfTable OBJECT-TYPE
  SYNTAX SEQUENCE OF HostIfEntry
  MAX-ACCESS   not-accessible
  STATUS       current
  DESCRIPTION
  "A table holding a list of interfaces."
    ::= { hostConfig 3 }

hostIfEntry OBJECT-TYPE
  SYNTAX HostIfEntry
  MAX-ACCESS not-accessible
  STATUS current
  DESCRIPTION
  "One row of the table."
  INDEX { hostIfIndex }
    ::= { hostIfTable 1 }

HostIfEntry ::= 
  SEQUENCE {
    hostIfIndex Integer32,
    hostIfMode INTEGER,
    hostIfHostName OCTET STRING,
    hostIfAddress IpAddress,
    hostIfSubnetMask IpAddress,
    hostIfDefaultRouter IpAddress,
    hostIfDomainName OCTET STRING,
    hostIfDnsServer1 IpAddress,
    hostIfDnsServer2 IpAddress,
    hostIfDhcpClientID OCTET STRING,
    hostIfDhcpVendorClassID OCTET STRING,
    hostIfDiffservCodePoint INTEGER,
    hostIfVlan INTEGER,
    hostIfVlanPriority INTEGER,
    hostIfSecurePing INTEGER
  }

hostIfIndex OBJECT-TYPE
  SYNTAX Integer32 (1..4)
  MAX-ACCESS read-only
  STATUS current
  DESCRIPTION
  "A unique index for this IP interface entry."
    ::= { hostIfEntry 1 }

hostIfMode OBJECT-TYPE
  SYNTAX INTEGER {
    dhcp(1),
    static(2),
    pppoe(3),
    pppoeFixed(4)
  }
  MAX-ACCESS read-write
  STATUS current
  DESCRIPTION
  "The operational mode of the interface, e.g. DHCP, PPPoE."
    ::= { hostIfEntry 2 }

hostIfHostName OBJECT-TYPE
  SYNTAX OCTET STRING  (SIZE(0..32))
  MAX-ACCESS read-write
  STATUS current
  DESCRIPTION
  "The name of the host interface. If the DHCP client is enabled this object 
  reports the host name from the DHCP negotiation."
    ::= { hostIfEntry 3 }

hostIfAddress OBJECT-TYPE
  SYNTAX IpAddress
  MAX-ACCESS read-create
  STATUS current
  DESCRIPTION
  "The IP address for this interface entry."
    ::= { hostIfEntry 4 }

hostIfSubnetMask OBJECT-TYPE
  SYNTAX IpAddress
  MAX-ACCESS read-write
  STATUS current
  DESCRIPTION
  "The subnet mask for this interface entry."
    ::= { hostIfEntry 5 }

hostIfDefaultRouter OBJECT-TYPE
  SYNTAX IpAddress
  MAX-ACCESS read-write
  STATUS current
  DESCRIPTION
  "The default router for this interface entry."
    ::= { hostIfEntry 6 }

hostIfDomainName OBJECT-TYPE
  SYNTAX OCTET STRING  (SIZE(0..32))
  MAX-ACCESS read-write
  STATUS current
  DESCRIPTION
  "The name of the domain name. If the DHCP client is enabled this object 
  reports the domain name from the DHCP negotiation."
    ::= { hostIfEntry 7 }

hostIfDnsServer1 OBJECT-TYPE
  SYNTAX IpAddress
  MAX-ACCESS read-write
  STATUS current
  DESCRIPTION
  "The primary DNS server for this interface entry."
    ::= { hostIfEntry 8 }

hostIfDnsServer2 OBJECT-TYPE
  SYNTAX IpAddress
  MAX-ACCESS read-write
  STATUS current
  DESCRIPTION
  "The secondary DNS server for this interface entry."
    ::= { hostIfEntry 9 }

hostIfDhcpClientID OBJECT-TYPE
  SYNTAX OCTET STRING (SIZE(0..32))
  MAX-ACCESS read-write
  STATUS current
  DESCRIPTION
  "Setting this object causes the system to use a proprietary client identifier 
  to identify itself to the DHCP server. By default the productMacAddress value
  of the device is used. This object thus allows the definition of the DHCP option
  61 value."
    ::= { hostIfEntry 10 }

hostIfDhcpVendorClassID OBJECT-TYPE
  SYNTAX OCTET STRING  (SIZE (0..48))
  MAX-ACCESS read-write
  STATUS current
  DESCRIPTION
  "Setting this object causes the system to use the defined value as the DHCP
  vendor identifier in communication with the DHCP server. By default the value
  used is of the form 'drg-$productName$-$productSwImageRev$'. This object thus 
  allows the definition of the DHCP option 60 value."
    ::= { hostIfEntry 11 }

hostIfDiffservCodePoint OBJECT-TYPE
  SYNTAX Integer32 (0..63)
  MAX-ACCESS read-write
  STATUS current
  DESCRIPTION
  "Defines the IP DSCP value used by default for this interface."
    ::= { hostIfEntry 12 }

hostIfVlan OBJECT-TYPE
  SYNTAX Integer32 (0..4094)
  MAX-ACCESS read-write
  STATUS current
  DESCRIPTION
  "Values 1..4094 define the default IEEE802.1Q VLAN tag used by this interface. 
  By convention, this is used as the management VLAN when VLANs are enabled on
  this interface.
  The value 0 disables the use of management VLANs on this interface."
    ::= { hostIfEntry 13 }

hostIfVlanPriority OBJECT-TYPE
  SYNTAX Integer32 (0..7)
  MAX-ACCESS read-write
  STATUS current
  DESCRIPTION
  "Defines the default IEEE802.1p priority tag used by this interface. By
  convention, this is used as the management priority when VLANs are enabled
  on this interface."
    ::= { hostIfEntry 14 }

hostIfSecurePing OBJECT-TYPE
  SYNTAX INTEGER {
    enabled(1),
    disabled(2)
  }
  MAX-ACCESS read-write
  STATUS current
  DESCRIPTION
  "Setting this object to enabled(1) causes the device to silently drop ICMP
  echo (ping) requests. This is a simple way to cloak the presence of a
  device from ping sweeps."
  DEFVAL { disabled }
    ::= { hostIfEntry 15 }


-- *****************************************************************************
-- SNMP management configuration - defines where to send traps to and also
-- the whitelist of hosts which can manage the DRG
-- 
-- *****************************************************************************
snmpConfig OBJECT IDENTIFIER ::= { drgConfig 7 }

snmpTrapDestHostsMax OBJECT-TYPE
  SYNTAX Integer32
  MAX-ACCESS read-only
  STATUS current
  DESCRIPTION
  "The maximum number of trap hosts which may be defined"
     ::= { snmpConfig 1 }

snmpTrapDestHostsDefined OBJECT-TYPE
  SYNTAX Integer32
  MAX-ACCESS read-only
  STATUS current
  DESCRIPTION
  "Current number of configured trap destinations."
    ::= { snmpConfig 2 }

snmpTrapDestinationTable OBJECT-TYPE
  SYNTAX SEQUENCE OF SnmpTrapDestinationEntry
  MAX-ACCESS   not-accessible
  STATUS       current
  DESCRIPTION
  "A table of transport addresses to be used in the generation of SNMP messages."
    ::= { snmpConfig 3 }

snmpTrapDestinationEntry OBJECT-TYPE
  SYNTAX SnmpTrapDestinationEntry
  MAX-ACCESS not-accessible
  STATUS current
  DESCRIPTION
  "A transport address to be used in the generation of SNMP operations.
  Entries in the trapDestinationTable are created and deleted using the 
  snmpTrapDestRowStatus object."
  INDEX { snmpTrapDestIndex, snmpTrapDestName }
    ::= { snmpTrapDestinationTable 1 }

SnmpTrapDestinationEntry ::= 
  SEQUENCE {
    snmpTrapDestIndex       Integer32,
    snmpTrapDestName        OCTET STRING ,
    snmpTrapDestAddress     IpAddress,
    snmpTrapDestTagList     OCTET STRING ,
    snmpTrapDestRowStatus   RowStatus
  }

snmpTrapDestIndex OBJECT-TYPE
  SYNTAX      Integer32 (1..6)
  MAX-ACCESS  read-create
  STATUS      current
  DESCRIPTION
  "The locally arbitrary, but unique identifier associated with this trapDestinationEntry."
    ::= { snmpTrapDestinationEntry 1 }

snmpTrapDestName OBJECT-TYPE
  SYNTAX      OCTET STRING  (SIZE(0..32))
  MAX-ACCESS  read-create
  STATUS      current
  DESCRIPTION
    "This object contains a human readable name for the trap destination."
    ::= { snmpTrapDestinationEntry 2 }

snmpTrapDestAddress OBJECT-TYPE
  SYNTAX      IpAddress
  MAX-ACCESS  read-create
  STATUS      current
  DESCRIPTION
  "This object contains the address of the trap destination."
    ::= { snmpTrapDestinationEntry 3 }

snmpTrapDestTagList OBJECT-TYPE
  SYNTAX      OCTET STRING (SIZE(0..16))
  MAX-ACCESS  read-create
  STATUS      current
  DESCRIPTION
  "This object contains a list of tag values which are used to select target
  addresses for a particular operation."
    ::= { snmpTrapDestinationEntry 4 }

snmpTrapDestRowStatus OBJECT-TYPE
  SYNTAX      RowStatus
  MAX-ACCESS  read-create
  STATUS      current
  DESCRIPTION
  "The status of this conceptual row.  To create a row in this table, a 
  manager must set this object to either createAndGo(4) or createAndWait(5).
  Until instances of all corresponding columns are appropriately configured, 
  the value of the corresponding instance of the trapDestRowStatus column 
  is 'notReady'."
    ::= { snmpTrapDestinationEntry 5 }

snmpReadCommunityName OBJECT-TYPE
  SYNTAX      OCTET STRING (SIZE(1..16))
  MAX-ACCESS  read-write
  STATUS      current
  DESCRIPTION
  "The read community string for the device."
    ::= { snmpConfig 4 }

snmpWriteCommunityName OBJECT-TYPE
  SYNTAX      OCTET STRING (SIZE(1..16))
  MAX-ACCESS  read-write
  STATUS      current
  DESCRIPTION
  "The write community string for the device."
    ::= { snmpConfig 5 }

snmpTrapCommunityName OBJECT-TYPE
  SYNTAX      OCTET STRING (SIZE(1..16))
  MAX-ACCESS  read-write
  STATUS      current
  DESCRIPTION
  "The notification community string for the device."
    ::= { snmpConfig 6 }

snmpDiffservCodePoint OBJECT-TYPE
  SYNTAX      Integer32 (0..63)
  MAX-ACCESS  read-write
  STATUS      current
  DESCRIPTION
  "Defines the IP DSCP value used by the SNMP agent."
    ::= { snmpConfig 7 }

snmpAtomicSet OBJECT-TYPE
  SYNTAX INTEGER {
    idle(1),
    stage(2),
    apply(3)
  }
  MAX-ACCESS read-write
  STATUS current
  DESCRIPTION
  "Complex operations involving numerous set commands can cause problems due
  to the lack of atomic operation by the network management system. This object
  may be used to ensure that all required changes for this MIB are made in a
  single atomic operation.
   This can be achieved by setting this object to stage(2), then setting all
  required objects, and then setting this object to apply(3). The object value
  will return to idle(1) once the atomic set operation has been completed."
    ::= { snmpConfig 8 }


-- *****************************************************************************
-- VLAN membership, and Forwarding Database configuration
--
-- *****************************************************************************
vlanConfig OBJECT IDENTIFIER ::= { drgConfig 8 }

vlanBase OBJECT IDENTIFIER ::= { vlanConfig 1 }
vlanTp OBJECT IDENTIFIER ::= { vlanConfig 2 }
vlanStatic OBJECT IDENTIFIER ::= { vlanConfig 3 }

vlanVersionNumber OBJECT-TYPE
  SYNTAX INTEGER {
    version1(1),
    version2(2)
  }
  MAX-ACCESS  read-only
  STATUS      current
  DESCRIPTION
  "The version number of IEEE802.1Q that this device supports."
    ::= { vlanBase 1 }

vlanMaxVlanId OBJECT-TYPE
  SYNTAX      Integer32 (1..4094)
  MAX-ACCESS  read-only
  STATUS      current
  DESCRIPTION
  "The maximum IEEE802.1Q VLAN ID that this device supports."
    ::= { vlanBase 2 }

vlanMaxSupportedVlans OBJECT-TYPE
  SYNTAX      Unsigned32
  MAX-ACCESS  read-only
  STATUS      current
  DESCRIPTION
  "The maximum number of IEEE802.1Q VLANs that this device supports."
    ::= { vlanBase 3 }

vlanNumVlans OBJECT-TYPE
  SYNTAX      Unsigned32
  MAX-ACCESS  read-only
  STATUS      current
  DESCRIPTION
  "The current number of IEEE802.1Q VLANs that are configured in this device."
    ::= { vlanBase 4 }


-- *****************************************************************************
-- The Current Filtering Database Table
--
-- *****************************************************************************
vlanFdbTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF VlanFdbEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table that contains configuration and control
        information for each Filtering Database currently
        operating on this device.  Entries in this table appear
        automatically when VLANs are assigned FDB IDs in the
        vlanVlanCurrentTable."
    ::= { vlanTp 1 }

vlanFdbEntry OBJECT-TYPE
    SYNTAX      VlanFdbEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Information about a specific Filtering Database."
    INDEX   { vlanFdbId }
    ::= { vlanFdbTable 1 }

VlanFdbEntry ::=
    SEQUENCE {
      vlanFdbId Unsigned32,
      vlanFdbDynamicCount Counter32
    }

vlanFdbId OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        "The identity of this Filtering Database."
    ::= { vlanFdbEntry 1 }

vlanFdbDynamicCount OBJECT-TYPE
    SYNTAX       Counter32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The current number of dynamic entries in this
        Filtering Database."
    REFERENCE
        "IEEE 802.1Q/D11 Section 12.7.1.1.3"
    ::= { vlanFdbEntry 2 }


-- *****************************************************************************
-- Forwarding database configuration and status
--
-- *****************************************************************************
-- Multiple Forwarding Databases for 802.1Q Transparent devices
-- This table is an alternative to the dot1dTpFdbTable,
-- previously defined for 802.1D devices which only support a
-- single Forwarding Database.

vlanTpFdbTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF VlanTpFdbEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table that contains information about unicast entries
        for which the device has forwarding and/or filtering
        information.  This information is used by the
        transparent bridging function in determining how to
        propagate a received frame."
    ::= { vlanTp 2 }

vlanTpFdbEntry OBJECT-TYPE
    SYNTAX      VlanTpFdbEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Information about a specific unicast MAC address for
        which the device has some forwarding and/or filtering
        information."
    INDEX   { vlanFdbId, vlanTpFdbAddress }
    ::= { vlanTpFdbTable 1 }

VlanTpFdbEntry ::=
    SEQUENCE {
        vlanTpFdbAddress MacAddress,
        vlanTpFdbPort    Integer32,
        vlanTpFdbStatus  INTEGER
    }

vlanTpFdbAddress OBJECT-TYPE
    SYNTAX      MacAddress
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A unicast MAC address for which the device has
        forwarding and/or filtering information."
    ::= { vlanTpFdbEntry 1 }

vlanTpFdbPort OBJECT-TYPE
    SYNTAX      Integer32 (0..65535)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Either the value '0', or the port number of the port on
        which a frame having a source address equal to the value
        of the corresponding instance of vlanTpFdbAddress has
        been seen.  A value of '0' indicates that the port
        number has not been learned but that the device does
        have some forwarding/filtering information about this
        address (e.g. in the vlanStaticUnicastTable).
        Implementors are encouraged to assign the port value to
        this object whenever it is learned even for addresses
        for which the corresponding value of vlanTpFdbStatus is
        not learned(3)."
    ::= { vlanTpFdbEntry 2 }

vlanTpFdbStatus OBJECT-TYPE
    SYNTAX      INTEGER {
      other(1),
      invalid(2),
      learned(3),
      self(4),
      mgmt(5)
    }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
    "The status of this entry.  The meanings of the values are:
            other(1) - none of the following.  This may include
                the case where some other MIB object (not the
                corresponding instance of vlanTpFdbPort, nor an
                entry in the vlanStaticUnicastTable) is being
                used to determine if and how frames addressed to
                the value of the corresponding instance of
                vlanTpFdbAddress are being forwarded.
            invalid(2) - this entry is no longer valid (e.g., it
                was learned but has since aged out), but has not
                yet been flushed from the table.
            learned(3) - the value of the corresponding instance
                of vlanTpFdbPort was learned and is being used.

            self(4) - the value of the corresponding instance of
                vlanTpFdbAddress represents one of the device's
                addresses.  The corresponding instance of
                vlanTpFdbPort indicates which of the device's
                ports has this address.
            mgmt(5) - the value of the corresponding instance of
                vlanTpFdbAddress is also the value of an
                existing instance of vlanStaticAddress."
    ::= { vlanTpFdbEntry 3 }


-- *****************************************************************************
-- VLAN static configuration
--
-- *****************************************************************************
vlanStaticTable OBJECT-TYPE
  SYNTAX SEQUENCE OF VlanStaticEntry
  MAX-ACCESS   not-accessible
  STATUS       current
  DESCRIPTION
  "A table containing static configuration information for each VLAN configured
   on the device. All entries are permanent and will be restored after the
   device is reset."
    ::= { vlanStatic 1 }

vlanStaticEntry OBJECT-TYPE
  SYNTAX VlanStaticEntry
  MAX-ACCESS not-accessible
  STATUS current
  DESCRIPTION
  "Static information for a VLAN configured in the device."
  INDEX { vlanStaticIndex }
    ::= { vlanStaticTable 1 }

VlanStaticEntry ::= 
  SEQUENCE {
    vlanStaticIndex       Integer32,
    vlanStaticName        OCTET STRING,
    vlanStaticVlanId      Integer32,
    vlanStaticPriority    Integer32,
    vlanStaticEgressPorts PortList,
    vlanStaticUntaggedPorts PortList,
    vlanStaticUnmodifiedPorts PortList,
    vlanStaticRowStatus   RowStatus
  }

vlanStaticIndex OBJECT-TYPE
  SYNTAX      Integer32 (1..16)
  MAX-ACCESS  read-create
  STATUS      current
  DESCRIPTION
  "The locally arbitrary, but unique identifier associated with this vlanStaticEntry."
    ::= { vlanStaticEntry 1 }

vlanStaticName OBJECT-TYPE
  SYNTAX      OCTET STRING (SIZE(0..16))
  MAX-ACCESS  read-write
  STATUS      current
  DESCRIPTION
  "An administratively assigned string, which may be used to identify the VLAN"
    ::= { vlanStaticEntry 2 }

vlanStaticVlanId OBJECT-TYPE
  SYNTAX      Integer32 (1..4094)
  MAX-ACCESS  read-write
  STATUS      current
  DESCRIPTION
  "The VLAN identifier associated with this VLAN entry"
    ::= { vlanStaticEntry 3 }

vlanStaticPriority OBJECT-TYPE
  SYNTAX      Integer32 (0..7)
  MAX-ACCESS  read-write
  STATUS      current
  DESCRIPTION
  "The IEEE802.1p priority value associated with this VLAN entry - this
   information may be used for policing priority where supported"
    ::= { vlanStaticEntry 4 }

vlanStaticEgressPorts OBJECT-TYPE
  SYNTAX      PortList
  MAX-ACCESS  read-write
  STATUS      current
  DESCRIPTION
  "The set of ports which are permanently assigned to the egress list for this 
  VLAN by management.  The default value of this object is a string of zeros 
  of appropriate length, indicating not fixed."
    ::= { vlanStaticEntry 5 }

vlanStaticUntaggedPorts OBJECT-TYPE
  SYNTAX      PortList
  MAX-ACCESS  read-write
  STATUS      current
  DESCRIPTION
  "Describes the set of ports which should transmit egress packets for this
  VLAN untagged.  If a device agent cannot support the set of ports being 
  set then it will reject the set operation with an error. An example might 
  be if a manager attempts to set more than one VLAN to be untagged on egress 
  where the device does not support this IEEE 802.1Q option."
    ::= { vlanStaticEntry 6 }

vlanStaticUnmodifiedPorts OBJECT-TYPE
  SYNTAX      PortList
  MAX-ACCESS  read-write
  STATUS      current
  DESCRIPTION
  "Describes the set of ports which should transmit egress packets for this
  VLAN unmodified.  If a device agent cannot support the set of ports being 
  set then it will reject the set operation with an error.
  Note that if this behaviour is supported and the bit is set for a port,
  the value of the same bit in vlanStaticUntaggedPorts is ignored."
    ::= { vlanStaticEntry 7 }

vlanStaticRowStatus OBJECT-TYPE
  SYNTAX      RowStatus
  MAX-ACCESS  read-create
  STATUS      current
  DESCRIPTION
  "This object indicates the status of this entry."
    ::= { vlanStaticEntry 8 }


-- *****************************************************************************
-- All notifications are defined here.  These can be sent as traps or as informs.
--
-- *****************************************************************************
notifyRestart  NOTIFICATION-TYPE
  OBJECTS
  {
    productMacAddress,
    productIdentity,
    productSwImageRev,
    productHardwareRev,
    productOpDefRev,
    productFunctionIdentity
  }
  STATUS      current
  DESCRIPTION
  "After booting the system sends this notification repeatedly with an increasing 
  time delay until a valid management station reads or writes an object."
    ::= { drgNotification 1 }


notifyDownloadResult  NOTIFICATION-TYPE
  OBJECTS
  {
    productMacAddress,
    productIdentity,
    downloadResultCode
  }
  STATUS      current
  DESCRIPTION
  "When the device has downloaded a new firmware image or configuration file,
  the device sends this notification to inform the management system of the 
  result."
    ::= { drgNotification 2 }

notifyConfigSaveResult  NOTIFICATION-TYPE
  OBJECTS
  {
    productMacAddress,
    productIdentity,
    downloadResultCode
  }
  STATUS current
  DESCRIPTION
  "When a save event occurs, the device sends this notification to inform the 
  management system of the result."
    ::= { drgNotification 3 }


-- *****************************************************************************
-- drgGroups, drgCompliance define the groups and hence compliance of a device
--
-- *****************************************************************************

drgGroups        OBJECT IDENTIFIER  ::=  { drgConformance 1 }
drgCompliance    OBJECT IDENTIFIER  ::=  { drgConformance 2 }
drgCompatibility OBJECT IDENTIFIER  ::=  { drgConformance 3 }

END

