       ALLIEDTELESYN-MIB
-- ATRouter Private MIB Version 1.35  24/May/2005

        DEFINITIONS ::= BEGIN

        IMPORTS
           enterprises, IpAddress, Counter
                FROM RFC1155-SMI
           DisplayString, ifIndex
                FROM RFC1213-MIB
           TRAP-TYPE
                FROM RFC-1215
           OBJECT-TYPE
                FROM RFC-1212;

--  Textual convention for an interface index type which may not reference an actual member of ifTable, in which case the value
--  zero should be used.
    InterfaceIndexOrZero ::= INTEGER (0..2147483647)

        -- define the top of the alliedTelesyn MIB.

        alliedTelesyn            OBJECT IDENTIFIER ::= { enterprises 207 }
        products                 OBJECT IDENTIFIER ::= { alliedTelesyn 1 }
        mibObject                OBJECT IDENTIFIER ::= { alliedTelesyn 8 }

        bridgeRouter             OBJECT IDENTIFIER ::= { products 1 }
        centreCOM-AR300Router    OBJECT IDENTIFIER ::= { bridgeRouter 8 }
        centreCOM-AR720Router    OBJECT IDENTIFIER ::= { bridgeRouter 11 }
        centreCOM-AR300LRouter   OBJECT IDENTIFIER ::= { bridgeRouter 12 }
        centreCOM-AR310Router    OBJECT IDENTIFIER ::= { bridgeRouter 13 }
        centreCOM-AR300LURouter  OBJECT IDENTIFIER ::= { bridgeRouter 14 }
        centreCOM-AR300URouter   OBJECT IDENTIFIER ::= { bridgeRouter 15 }
        centreCOM-AR310URouter   OBJECT IDENTIFIER ::= { bridgeRouter 16 }
        centreCOM-AR350Router    OBJECT IDENTIFIER ::= { bridgeRouter 17 }
        centreCOM-AR370Router    OBJECT IDENTIFIER ::= { bridgeRouter 18 }
        centreCOM-AR330Router    OBJECT IDENTIFIER ::= { bridgeRouter 19 }
        centreCOM-AR395Router    OBJECT IDENTIFIER ::= { bridgeRouter 20 }
        centreCOM-AR390Router    OBJECT IDENTIFIER ::= { bridgeRouter 21 }
        centreCOM-AR370URouter   OBJECT IDENTIFIER ::= { bridgeRouter 22 }
        centreCOM-AR740Router    OBJECT IDENTIFIER ::= { bridgeRouter 23 }
        centreCOM-AR140SRouter   OBJECT IDENTIFIER ::= { bridgeRouter 24 }
        centreCOM-AR140URouter   OBJECT IDENTIFIER ::= { bridgeRouter 25 }
        centreCOM-AR320Router    OBJECT IDENTIFIER ::= { bridgeRouter 26 }
        centreCOM-AR130SRouter   OBJECT IDENTIFIER ::= { bridgeRouter 27 }
        centreCOM-AR130URouter   OBJECT IDENTIFIER ::= { bridgeRouter 28 }
        centreCOM-AR160Router    OBJECT IDENTIFIER ::= { bridgeRouter 29 }
        at-AR740RouterDC         OBJECT IDENTIFIER ::= { bridgeRouter 43 }
        centreCOM-AR120Router    OBJECT IDENTIFIER ::= { bridgeRouter 44 }
        at-AR410Router           OBJECT IDENTIFIER ::= { bridgeRouter 47 }
        at-AR725Router           OBJECT IDENTIFIER ::= { bridgeRouter 48 }
        at-AR745Router           OBJECT IDENTIFIER ::= { bridgeRouter 49 }
        at-AR410v2Router         OBJECT IDENTIFIER ::= { bridgeRouter 50 }
        at-AR410v3Router         OBJECT IDENTIFIER ::= { bridgeRouter 51 }
        at-AR725RouterDC         OBJECT IDENTIFIER ::= { bridgeRouter 52 }
        at-AR745RouterDC         OBJECT IDENTIFIER ::= { bridgeRouter 53 }
        at-AR450Router           OBJECT IDENTIFIER ::= { bridgeRouter 54 }
        at-AR450DualRouter       OBJECT IDENTIFIER ::= { bridgeRouter 55 }
        at-AR440Router           OBJECT IDENTIFIER ::= { bridgeRouter 59 }
        at-AR441Router           OBJECT IDENTIFIER ::= { bridgeRouter 60 }
        at-AR442Router           OBJECT IDENTIFIER ::= { bridgeRouter 61 }
        at-AR443Router           OBJECT IDENTIFIER ::= { bridgeRouter 62 }
        at-AR444Router           OBJECT IDENTIFIER ::= { bridgeRouter 63 }
        at-AR420Router           OBJECT IDENTIFIER ::= { bridgeRouter 64 }
		at-AR550Router			 OBJECT IDENTIFIER ::= { bridgeRouter 73 }
		at-AR551Router			 OBJECT IDENTIFIER ::= { bridgeRouter 74 }
		at-AR552Router			 OBJECT IDENTIFIER ::= { bridgeRouter 75 }

        routerSwitch             OBJECT IDENTIFIER ::= { products 14 }
        at-Rapier24              OBJECT IDENTIFIER ::= { routerSwitch 1 }
        at-Rapier16fSC           OBJECT IDENTIFIER ::= { routerSwitch 2 }
        at-Rapier16fVF           OBJECT IDENTIFIER ::= { routerSwitch 3 }  -- deprecated
        at-Rapier16fMT           OBJECT IDENTIFIER ::= { routerSwitch 4 }
        at-Rapier48              OBJECT IDENTIFIER ::= { routerSwitch 5 }
        at-Rapier8t8fSC          OBJECT IDENTIFIER ::= { routerSwitch 6 }
        at-Rapier8t8fSCi         OBJECT IDENTIFIER ::= { routerSwitch 7 }
        at-Rapier8t8fMT          OBJECT IDENTIFIER ::= { routerSwitch 8 }
        at-Rapier8t8fMTi         OBJECT IDENTIFIER ::= { routerSwitch 9 }
        at-Rapier8fSC            OBJECT IDENTIFIER ::= { routerSwitch 10 }
        at-Rapier8fSCi           OBJECT IDENTIFIER ::= { routerSwitch 11 }
        at-Rapier8fMT            OBJECT IDENTIFIER ::= { routerSwitch 12 }
        at-Rapier8fMTi           OBJECT IDENTIFIER ::= { routerSwitch 13 }
        at-Rapier16fMTi          OBJECT IDENTIFIER ::= { routerSwitch 14 }
        at-RapierG6              OBJECT IDENTIFIER ::= { routerSwitch 15 }
        at-RapierG6SX            OBJECT IDENTIFIER ::= { routerSwitch 16 }
        at-RapierG6LX            OBJECT IDENTIFIER ::= { routerSwitch 17 }
        at-RapierG6MT            OBJECT IDENTIFIER ::= { routerSwitch 18 }
        at-Rapier16fSCi          OBJECT IDENTIFIER ::= { routerSwitch 19 }
        at-Rapier24i             OBJECT IDENTIFIER ::= { routerSwitch 20 }
        at-Rapier48i             OBJECT IDENTIFIER ::= { routerSwitch 21 }
        at-Switchblade4AC        OBJECT IDENTIFIER ::= { routerSwitch 22 }
        at-Switchblade4DC        OBJECT IDENTIFIER ::= { routerSwitch 23 }
        at-Switchblade8AC        OBJECT IDENTIFIER ::= { routerSwitch 24 }
        at-Switchblade8DC        OBJECT IDENTIFIER ::= { routerSwitch 25 }
        at-9816GF                OBJECT IDENTIFIER ::= { routerSwitch 26 }
        at-9812TF                OBJECT IDENTIFIER ::= { routerSwitch 27 }
        at-9816GB                OBJECT IDENTIFIER ::= { routerSwitch 28 }
        at-9812T                 OBJECT IDENTIFIER ::= { routerSwitch 29 }
		at-8724XL                OBJECT IDENTIFIER ::= { routerSwitch 30 }
		at-8748XL                OBJECT IDENTIFIER ::= { routerSwitch 31 }
		at-8724XLDC              OBJECT IDENTIFIER ::= { routerSwitch 32 }
		at-8748XLDC              OBJECT IDENTIFIER ::= { routerSwitch 33 }
		at-9816GB-DC             OBJECT IDENTIFIER ::= { routerSwitch 34 }
		at-9812T-DC              OBJECT IDENTIFIER ::= { routerSwitch 35 }
		at-8824                  OBJECT IDENTIFIER ::= { routerSwitch 36 }
		at-8848                  OBJECT IDENTIFIER ::= { routerSwitch 37 }
		at-8824-DC               OBJECT IDENTIFIER ::= { routerSwitch 38 }
		at-8848-DC               OBJECT IDENTIFIER ::= { routerSwitch 39 }
        at-8624XL-80             OBJECT IDENTIFIER ::= { routerSwitch 41 }
		at-8724XL-80             OBJECT IDENTIFIER ::= { routerSwitch 42 }
		at-8748XL-80             OBJECT IDENTIFIER ::= { routerSwitch 43 }
		at-8948EX                OBJECT IDENTIFIER ::= { routerSwitch 44 }
		at-8948MX                OBJECT IDENTIFIER ::= { routerSwitch 45 }
		at-8624T2M               OBJECT IDENTIFIER ::= { routerSwitch 46 }
		at-Rapier24i-DC-NEBS     OBJECT IDENTIFIER ::= { routerSwitch 47 }
		at-8724XL-DC-NEBS        OBJECT IDENTIFIER ::= { routerSwitch 48 }
		at-9924T                 OBJECT IDENTIFIER ::= { routerSwitch 49 }
		at-9924SP                OBJECT IDENTIFIER ::= { routerSwitch 50 }
		at-9924T-4SP             OBJECT IDENTIFIER ::= { routerSwitch 51 }
		at-9924TEMC              OBJECT IDENTIFIER ::= { routerSwitch 53 }
		at-8724MLB               OBJECT IDENTIFIER ::= { routerSwitch 55 }
		at-8624POE               OBJECT IDENTIFIER ::= { routerSwitch 56 }
		at-86482SP               OBJECT IDENTIFIER ::= { routerSwitch 58 }

        brouterMib               OBJECT IDENTIFIER ::= { mibObject 4 }
        atRouter                 OBJECT IDENTIFIER ::= { brouterMib 4 }
 
 
    -- groups in ATROUTER

    objects     OBJECT IDENTIFIER ::= { atRouter 1 }

    traps       OBJECT IDENTIFIER ::= { atRouter 2 }

    sysinfo     OBJECT IDENTIFIER ::= { atRouter 3 }

    modules     OBJECT IDENTIFIER ::= { atRouter 4 }

    arInterfaces  OBJECT IDENTIFIER ::= { atRouter 5 }

    protocols   OBJECT IDENTIFIER ::= { atRouter 6 }

    -- objects for AT router

    boards      OBJECT IDENTIFIER ::= { objects 1 }

--  each AT router or L3 switch is made up of a number of boards. each board has its own
--  object ID, given here.

    pprIcmAr023           OBJECT IDENTIFIER ::= { boards 39 }
    pprIcmAr021s          OBJECT IDENTIFIER ::= { boards 40 }
    pprIcmAr022           OBJECT IDENTIFIER ::= { boards 41 }
    pprIcmAr025           OBJECT IDENTIFIER ::= { boards 45 }
    pprIcmAr024           OBJECT IDENTIFIER ::= { boards 46 }
    pprAr300              OBJECT IDENTIFIER ::= { boards 49 }
    pprAr300L             OBJECT IDENTIFIER ::= { boards 52 }
    pprAr310              OBJECT IDENTIFIER ::= { boards 53 }
    pprAr120              OBJECT IDENTIFIER ::= { boards 54 }
    pprAr300Lu            OBJECT IDENTIFIER ::= { boards 55 }
    pprAr300u             OBJECT IDENTIFIER ::= { boards 56 }
    pprAr310u             OBJECT IDENTIFIER ::= { boards 57 }
    pprAr350              OBJECT IDENTIFIER ::= { boards 58 }
    pprIcmAr021u          OBJECT IDENTIFIER ::= { boards 59 }
    pprAr720              OBJECT IDENTIFIER ::= { boards 63 } 
    pprAr010              OBJECT IDENTIFIER ::= { boards 67 }
    pprAr012              OBJECT IDENTIFIER ::= { boards 68 }
    pprAr011              OBJECT IDENTIFIER ::= { boards 69 }
    pprAr370              OBJECT IDENTIFIER ::= { boards 70 }
    pprAr330              OBJECT IDENTIFIER ::= { boards 71 }
    pprAr395              OBJECT IDENTIFIER ::= { boards 72 }
    pprAr390              OBJECT IDENTIFIER ::= { boards 73 }
    pprAr370u             OBJECT IDENTIFIER ::= { boards 75 }
    pprIcmAr020           OBJECT IDENTIFIER ::= { boards 76 }
    pprAr740              OBJECT IDENTIFIER ::= { boards 79 }
    pprAr140s             OBJECT IDENTIFIER ::= { boards 80 }
    pprAr140u             OBJECT IDENTIFIER ::= { boards 81 }
    pprAr160su            OBJECT IDENTIFIER ::= { boards 82 }
    pprAr320              OBJECT IDENTIFIER ::= { boards 83 }
    pprAr130s             OBJECT IDENTIFIER ::= { boards 85 }
    pprAr130u             OBJECT IDENTIFIER ::= { boards 86 }
    pprRapier24           OBJECT IDENTIFIER ::= { boards 87 }
    pprNsm0404Pic         OBJECT IDENTIFIER ::= { boards 88 }
    pprA35SXSC            OBJECT IDENTIFIER ::= { boards 89 }
    pprA35LXSC            OBJECT IDENTIFIER ::= { boards 90 }
    pprA36MTRJ            OBJECT IDENTIFIER ::= { boards 91 }
    pprA37VF45            OBJECT IDENTIFIER ::= { boards 92 }
    pprA38LC              OBJECT IDENTIFIER ::= { boards 93 }
    pprA39Tx              OBJECT IDENTIFIER ::= { boards 94 }
    pprAr740DC            OBJECT IDENTIFIER ::= { boards 95 }
    pprNsm0418BRI         OBJECT IDENTIFIER ::= { boards 96 }
    pprRapier16fSC        OBJECT IDENTIFIER ::= { boards 97 }
    ppr8624xl80           OBJECT IDENTIFIER ::= { boards 98 }
    pprRapier16fMT        OBJECT IDENTIFIER ::= { boards 99 }
    pprRapier16fMTi       OBJECT IDENTIFIER ::= { boards 100 }
    pprRapier8t8fSC       OBJECT IDENTIFIER ::= { boards 101 }
    pprRapier8t8fSCi      OBJECT IDENTIFIER ::= { boards 102 }
    pprRapier8t8fMT       OBJECT IDENTIFIER ::= { boards 103 }
    pprRapier8t8fMTi      OBJECT IDENTIFIER ::= { boards 104 }
    pprRapier8fSC         OBJECT IDENTIFIER ::= { boards 105 }
    pprRapier8fSCi        OBJECT IDENTIFIER ::= { boards 106 }
    pprRapier8fMT         OBJECT IDENTIFIER ::= { boards 107 }
    pprRapier8fMTi        OBJECT IDENTIFIER ::= { boards 108 }
    pprRapierG6           OBJECT IDENTIFIER ::= { boards 110 }
    pprRapierG6SX         OBJECT IDENTIFIER ::= { boards 111 }
    pprRapierG6LX         OBJECT IDENTIFIER ::= { boards 112 }
    pprRapierG6MT         OBJECT IDENTIFIER ::= { boards 113 }
    pprRapier16fSCi       OBJECT IDENTIFIER ::= { boards 114 }
    pprRapier24i          OBJECT IDENTIFIER ::= { boards 115 }
    pprAr824              OBJECT IDENTIFIER ::= { boards 116 }
    pprAr816fSC           OBJECT IDENTIFIER ::= { boards 117 }
    pprAr816fSCi          OBJECT IDENTIFIER ::= { boards 118 }
    pprAr816fMT           OBJECT IDENTIFIER ::= { boards 119 }
    pprAr816fMTi          OBJECT IDENTIFIER ::= { boards 120 }
    pprAr88t8fSC          OBJECT IDENTIFIER ::= { boards 121 }
    pprAr88t8fSCi         OBJECT IDENTIFIER ::= { boards 122 }
    pprAr88t8fMT          OBJECT IDENTIFIER ::= { boards 123 }
    pprAr88t8fMTi         OBJECT IDENTIFIER ::= { boards 124 }
    pprAr88fSC            OBJECT IDENTIFIER ::= { boards 125 }
    pprAr88fSCi           OBJECT IDENTIFIER ::= { boards 126 }
    pprAr88fMT            OBJECT IDENTIFIER ::= { boards 127 }
    pprAr88fMTi           OBJECT IDENTIFIER ::= { boards 128 }
    pprAr824i             OBJECT IDENTIFIER ::= { boards 129 }
    pprAt8724XL           OBJECT IDENTIFIER ::= { boards 130 }
    pprAt8748XL           OBJECT IDENTIFIER ::= { boards 131 }
    pprAt8724XLDC         OBJECT IDENTIFIER ::= { boards 132 }
    pprAt8748XLDC         OBJECT IDENTIFIER ::= { boards 133 }
    pprAt8824             OBJECT IDENTIFIER ::= { boards 134 }
    pprAt8824DC           OBJECT IDENTIFIER ::= { boards 135 }
    ppr8724XLDC           OBJECT IDENTIFIER ::= { boards 141 }
    ppr8748XLDC           OBJECT IDENTIFIER ::= { boards 142 }
    pprRapier24iDC-NEBS   OBJECT IDENTIFIER ::= { boards 144 }
    pprAt8724XLDC-NEBS    OBJECT IDENTIFIER ::= { boards 146 }
    pprAt8848DC           OBJECT IDENTIFIER ::= { boards 147 }
    pprRapier48           OBJECT IDENTIFIER ::= { boards 148 }
    pprAt8848             OBJECT IDENTIFIER ::= { boards 149 }
    pprRapier48i          OBJECT IDENTIFIER ::= { boards 150 }
    pprNsm0424BRI         OBJECT IDENTIFIER ::= { boards 151 }
    pprIcmAR026           OBJECT IDENTIFIER ::= { boards 153 }
    ppr9816GF             OBJECT IDENTIFIER ::= { boards 157 }
    ppr9812TF             OBJECT IDENTIFIER ::= { boards 158 }
    pprSbChassis4AC       OBJECT IDENTIFIER ::= { boards 159 }
    pprSbChassis4DC       OBJECT IDENTIFIER ::= { boards 160 }
    pprSbChassis8AC       OBJECT IDENTIFIER ::= { boards 161 }
    pprSbChassis8DC       OBJECT IDENTIFIER ::= { boards 162 }
    pprSbChassis16AC      OBJECT IDENTIFIER ::= { boards 163 }
    pprSbChassis16DC      OBJECT IDENTIFIER ::= { boards 164 }
    pprSbControl          OBJECT IDENTIFIER ::= { boards 165 }
    pprSbControlDTM       OBJECT IDENTIFIER ::= { boards 166 }
    pprSb48t              OBJECT IDENTIFIER ::= { boards 167 }
    pprSb96t              OBJECT IDENTIFIER ::= { boards 168 }
    pprSb32fSC            OBJECT IDENTIFIER ::= { boards 169 }
    pprSb32fMT            OBJECT IDENTIFIER ::= { boards 170 }
    pprSb8fRJ             OBJECT IDENTIFIER ::= { boards 172 }
    pprSb8fSXSC           OBJECT IDENTIFIER ::= { boards 173 }
    pprSb8fSXMT           OBJECT IDENTIFIER ::= { boards 174 }
    pprSb8fLXSC           OBJECT IDENTIFIER ::= { boards 175 }
    pprSb8fLXMT           OBJECT IDENTIFIER ::= { boards 176 }
    pprAr410              OBJECT IDENTIFIER ::= { boards 177 }
    pprA40SC              OBJECT IDENTIFIER ::= { boards 178 }
    pprA40MTRJ            OBJECT IDENTIFIER ::= { boards 179 }
    pprA41SC              OBJECT IDENTIFIER ::= { boards 180 }
    pprA41MTRJ            OBJECT IDENTIFIER ::= { boards 181 }
    pprAr725              OBJECT IDENTIFIER ::= { boards 182 }
    pprAr745              OBJECT IDENTIFIER ::= { boards 183 }
    pprSb8GBIC            OBJECT IDENTIFIER ::= { boards 184 }
    pprA42GBIC            OBJECT IDENTIFIER ::= { boards 185 }
    ppr9816GB             OBJECT IDENTIFIER ::= { boards 186 }
    ppr9812T              OBJECT IDENTIFIER ::= { boards 187 }
    pprNsm048DS3          OBJECT IDENTIFIER ::= { boards 188 }
    pprAr450              OBJECT IDENTIFIER ::= { boards 191 }
    pprAr450Dual          OBJECT IDENTIFIER ::= { boards 192 }
    pprSbExpander         OBJECT IDENTIFIER ::= { boards 193 }
    pprAr725DC            OBJECT IDENTIFIER ::= { boards 194 }
    pprAr745DC            OBJECT IDENTIFIER ::= { boards 195 }
    pprAr410v2            OBJECT IDENTIFIER ::= { boards 196 }
    pprAr410v3            OBJECT IDENTIFIER ::= { boards 197 }
    pprIcmAr027           OBJECT IDENTIFIER ::= { boards 198 }
    ppr8948EX             OBJECT IDENTIFIER ::= { boards 202 }
    ppr8948MX             OBJECT IDENTIFIER ::= { boards 203 }
    ppr9816GBDC           OBJECT IDENTIFIER ::= { boards 204 }
    ppr9812TDC            OBJECT IDENTIFIER ::= { boards 205 }
    pprIcmAr021v2s        OBJECT IDENTIFIER ::= { boards 206 }
    pprA50                OBJECT IDENTIFIER ::= { boards 207 }
    pprA51                OBJECT IDENTIFIER ::= { boards 208 }
    pprA52                OBJECT IDENTIFIER ::= { boards 209 }
    pprA53                OBJECT IDENTIFIER ::= { boards 210 }
    pprFanA01             OBJECT IDENTIFIER ::= { boards 212 }
    pprAtPwr01AC          OBJECT IDENTIFIER ::= { boards 213 }
    pprAtPwr01DC          OBJECT IDENTIFIER ::= { boards 214 }
    pprAtFan01            OBJECT IDENTIFIER ::= { boards 215 }
    pprSb24RJ             OBJECT IDENTIFIER ::= { boards 216 }
    pprSb1XFP             OBJECT IDENTIFIER ::= { boards 217 }
    ppr9924T              OBJECT IDENTIFIER ::= { boards 218 }
    ppr9924SP             OBJECT IDENTIFIER ::= { boards 219 }
	ppr9924TEMC           OBJECT IDENTIFIER ::= { boards 220 }
    ppr9924T4SP           OBJECT IDENTIFIER ::= { boards 221 }
    pprAR440              OBJECT IDENTIFIER ::= { boards 227 }
    pprAR441              OBJECT IDENTIFIER ::= { boards 228 }
    pprAR442              OBJECT IDENTIFIER ::= { boards 229 }
    pprAR443              OBJECT IDENTIFIER ::= { boards 230 }
    pprAR444              OBJECT IDENTIFIER ::= { boards 231 }
    pprAR420              OBJECT IDENTIFIER ::= { boards 232 }
    pprAt8624T2M          OBJECT IDENTIFIER ::= { boards 239 }
    pprA46Tx              OBJECT IDENTIFIER ::= { boards 240 }
    pprAR550		  OBJECT IDENTIFIER ::= { boards 241 }
    pprAR551		  OBJECT IDENTIFIER ::= { boards 242 }
    pprAR552		  OBJECT IDENTIFIER ::= { boards 243 }
    pprC8724MLB           OBJECT IDENTIFIER ::= { boards 248 }
    pprAt86482SP          OBJECT IDENTIFIER ::= { boards 252 }
    pprAt8624POE          OBJECT IDENTIFIER ::= { boards 253 }
    pprAtPwr01RAC         OBJECT IDENTIFIER ::= { boards 254 }
    pprAtFan01R           OBJECT IDENTIFIER ::= { boards 255 }
    pprAtPwr02AC          OBJECT IDENTIFIER ::= { boards 264 }
    pprAtPwr02RAC         OBJECT IDENTIFIER ::= { boards 265 }
    pprSb24SFP            OBJECT IDENTIFIER ::= { boards 269 }

    release     OBJECT IDENTIFIER ::= { objects 2 }

    iftypes     OBJECT IDENTIFIER ::= { objects 3 }

    ifaceEth       OBJECT IDENTIFIER ::= { iftypes 1 }
    ifaceSyn       OBJECT IDENTIFIER ::= { iftypes 2 }
    ifaceAsyn      OBJECT IDENTIFIER ::= { iftypes 3 }
    ifaceBri       OBJECT IDENTIFIER ::= { iftypes 4 }
    ifacePri       OBJECT IDENTIFIER ::= { iftypes 5 }
    ifacePots      OBJECT IDENTIFIER ::= { iftypes 6 }
    ifaceGBIC      OBJECT IDENTIFIER ::= { iftypes 7 }

    chips       OBJECT IDENTIFIER ::= { objects 4 }

    chip68020Cpu      OBJECT IDENTIFIER ::= { chips 1 }
    chip68340Cpu      OBJECT IDENTIFIER ::= { chips 2 }
    chip68302Cpu      OBJECT IDENTIFIER ::= { chips 3 }
    chip68360Cpu      OBJECT IDENTIFIER ::= { chips 4 }
    chip860TCpu       OBJECT IDENTIFIER ::= { chips 5 }
    chipRtc1          OBJECT IDENTIFIER ::= { chips 21 }
    chipRtc2          OBJECT IDENTIFIER ::= { chips 22 }
    chipRtc3          OBJECT IDENTIFIER ::= { chips 23 }
    chipRtc4          OBJECT IDENTIFIER ::= { chips 24 }
    chipRam1mb        OBJECT IDENTIFIER ::= { chips 31 }
    chipRam2mb        OBJECT IDENTIFIER ::= { chips 32 }
    chipRam3mb        OBJECT IDENTIFIER ::= { chips 33 }
    chipRam4mb        OBJECT IDENTIFIER ::= { chips 34 }
    chipRam6mb        OBJECT IDENTIFIER ::= { chips 36 }
    chipRam8mb        OBJECT IDENTIFIER ::= { chips 38 }
    chipRam12mb       OBJECT IDENTIFIER ::= { chips 42 }
    chipRam16mb       OBJECT IDENTIFIER ::= { chips 46 }
    chipRam20mb       OBJECT IDENTIFIER ::= { chips 50 }
    chipRam32mb       OBJECT IDENTIFIER ::= { chips 62 }
    chipFlash1mb      OBJECT IDENTIFIER ::= { chips 71 }
    chipFlash2mb      OBJECT IDENTIFIER ::= { chips 72 }
    chipFlash3mb      OBJECT IDENTIFIER ::= { chips 73 }
    chipFlash4mb      OBJECT IDENTIFIER ::= { chips 74 }
    chipFlash6mb      OBJECT IDENTIFIER ::= { chips 76 }
    chipFlash8mb      OBJECT IDENTIFIER ::= { chips 78 }
    chipPem           OBJECT IDENTIFIER ::= { chips 120 }

--  System information (sysinfo groups)
--  This part of the MIB contains generic system information. Currently defined groups and variables include:
--  { sysinfo 1 } fanAndPs
--  { sysinfo 2 } restart
--  { sysinfo 3 } cpu
--  { sysinfo 4 } sysTemperature
--  { sysinfo 5 } atrContactDetails
--  { sysinfo 6 } bbrNvs
--  { sysinfo 9 } hostId

--  fanAndPs - this group contains information about the Fan, Power Supply and
--  Temperature status of the router.

    fanAndPs    OBJECT IDENTIFIER ::= { sysinfo 1 }

    fanAndPsRpsConnectionStatus OBJECT-TYPE
        SYNTAX  INTEGER {
                    non-supported(0),
                    connected(1),
                    not-connected(2),
                    not-monitoring(3)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The status of the Redundant Power Supply (RPS) connection,
                ie, whether an RPS is actually connected or not, regardless
                of whether the RPS is on or not. not-supported means that an
                RPS is not supported in this hardware platform, connected
                means that the RPS is connected, not-connected means that the
                RPS is not connected, and not-monitoring means that the status
                of the RPS is not being monitored presently. RPS monitoring can
                be turned on via the variable fanAndPsRpsMonitoringStatus, or
                by the command SET SYSTEM RPSMONITOR=ON."
       ::= { fanAndPs 1 }

    fanAndPsMainPSUStatus  OBJECT-TYPE
        SYNTAX  INTEGER {
                    on(1),
                    off(2),
                    faulty(3)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The status of the main Power Supply. on means that the power supply is present
                and fully operational. off means that the power supply is totally off (and
                obviously only applies to systems with a redundant power supply). faulty means
                that the main power supply is delivering power but that a component of the
                power supply is faulty. This applies to systems like SwitchBlade which have 3
                power supplies but do not provide individual power supply monitoring. Also,
                in the case of SwitchBlade, power supply status includes the status of the fans
                in the power supply."
       ::= { fanAndPs 2 }

    fanAndPsRedundantPSUStatus  OBJECT-TYPE
        SYNTAX  INTEGER {
                    non-supported(0),
                    on(1),
                    off(2),
                    not-monitoring(3)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The status of the redundant Power Supply. non-supported means
                this device does not support redundant power supplies, on
                means that the redundant power supply is connected and able
                to supply system power if required, off means that the
                redundant power supply is either not connected or is connected
                and is not able to supply system power if required, and
                not-monitoring means that the status of the RPS is not being
                monitored presently. RPS monitoring can be turned on via the
                variable fanAndPsRpsMonitoringStatus, or by the command
                SET SYSTEM RPSMONITOR=ON."
       ::= { fanAndPs 3 }

    fanAndPsRpsMonitoringStatus  OBJECT-TYPE
        SYNTAX  INTEGER {
                    non-supported(0),
                    on(1),
                    off(2)
                }
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The current status of redundant power supply monitoring. The
                monitoring of the redundant power supply and its fan must be
                enabled by command or by setting this variable to on. The value
                non-supported means that this device does not support redundant
                power supplies. Only the values on or off may be written to this
                variable. If this variables reads as non-supported, an attempt to
                write to this variable will result in a bad value error."
       ::= { fanAndPs 4 }

    fanAndPsMainFanStatus  OBJECT-TYPE
        SYNTAX  INTEGER {
                    non-supported(0),
                    ok(1),
                    not-ok(2),
				    warning(3)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The status of the main Power Supply fan. non-supported means that this
                device does not support monitoring on the main power supply fan, or that
                there is no main power supply fan. The warning means the fan's speed is 
                outside 30% of the expected speed."
       ::= { fanAndPs 5 }

    fanAndPsRedundantFanStatus  OBJECT-TYPE
        SYNTAX  INTEGER {
                    non-supported(0),
                    ok(1),
                    not-ok(2),
                    not-monitoring(3)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The status of the redundant Power Supply Fan. non-supported means
                this device does not support redundant power supplies, ok
                means that the redundant power supply fan is running, not-ok means
                that the redundant power supply fan is not running, and
                not-monitoring means that the status of the RPS is not being
                monitored presently. RPS monitoring can be turned on via the
                variable fanAndPsRpsMonitoringStatus, or by the command
                SET SYSTEM RPSMONITOR=ON."
       ::= { fanAndPs 6 }

    fanAndPsTemperatureStatus  OBJECT-TYPE
        SYNTAX  INTEGER {
                    ok(1),
                    not-ok(2)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The status of temperature in this device. ok means that the
                device is not capable of monitoring temperature or that the
                temperature is OK, not-ok means that the temperature is being
                monitored and is currently out of the range 0C - 45C."
       ::= { fanAndPs 7 }

    fanAndPsFanTrayPresent  OBJECT-TYPE
        SYNTAX  INTEGER {
                    non-supported(0),
                    present(1),
                    not-present(2)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The status of the presence of the fan tray in this system. Systems
                which do not support a fan tray return the value non-supported. Upon
                removal of the fan tray there is a short period (20s) before the value of
                this variable is changed to not-present. This is to allow for scheduled
                replacement and/or cleaning of the fan tray."
       ::= { fanAndPs 8 }

    fanAndPsFanTrayStatus  OBJECT-TYPE
        SYNTAX  INTEGER {
                    non-supported(0),
                    ok(1),
                    not-ok(2)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The status of the fan tray in this system. Systems which do not support
                a fan tray return the value non-supported. The value ok is returned if all fans
                in the fan tray are running at full speed. The value not-ok is returned if
                one of more of the fan tray fans is running slow or has stalled."
       ::= { fanAndPs 9 }

	fanAndPsMainMonitoringStatus  OBJECT-TYPE
        SYNTAX  INTEGER {
                    non-supported(0),
                    ok(1),
                    not-ok(2)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The current status of main power supply monitoring. The
                monitoring of the main power supply and its fan is always
                enabled by those systems that support it. Systems which do
                not support main power supply or fan monitoring report a
                value of not-supported. The value ok is returned for those
                systems that do support main power supply and fan monitoring,
                and where the monitoring operation is reporting valid information (refer
                to fanAndPsMainFanStatus for the current status of the system).
                When main power supply and fan monitoring is failing, the value
                not-ok is returned."
       ::= { fanAndPs 10 }

--  fanAndPsPsuStatusTable - AT8948 specific power supply monitoring.

    fanAndPsPsuStatusTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF FanAndPsPsuStatusEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "The table of AT8948 fanAndPsPsuStatusTable. Each entry in the table
                represents the status of one of the power supplies in AT8948 system.
                Each power supply has its own board ID."
        ::= { fanAndPs 11 }

    fanAndPsPsuStatusEntry OBJECT-TYPE
        SYNTAX  FanAndPsPsuStatusEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "A single entry of AT8948 fanAndPsPsuStatusTable, indexed by 
                fanAndPsPsuNumber field."
        INDEX   { fanAndPsPsuNumber }
        ::= { fanAndPsPsuStatusTable 1 }

    FanAndPsPsuStatusEntry ::=
        SEQUENCE {
            fanAndPsPsuNumber
                INTEGER,
            fanAndPsPsuPresent
                INTEGER,   
            fanAndPsPsuType
                INTEGER,   
            fanAndPsPsuFan
                INTEGER,
            fanAndPsPsuTemperature
                INTEGER,
            fanAndPsPsuPower    
                INTEGER
        }

    fanAndPsPsuNumber OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The PSU board identity for which this entry holds. If the system
                consists only of a single PSU board, only one entry will appear
                in the table, whose index is 1."
        ::= { fanAndPsPsuStatusEntry 1 }
        
    fanAndPsPsuPresent OBJECT-TYPE
        SYNTAX  INTEGER{
                    yes(0),
                    no (1)
                 } 
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The PSU present state, displayed as 'yes' if present, or 'no' if absent."
        ::= { fanAndPsPsuStatusEntry 2 }

    fanAndPsPsuType OBJECT-TYPE
        SYNTAX  INTEGER{
                    ac(0),
                    dc(1),
                    fan(2),
                    not-present(3),
                    not-supported(4)
                } 
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The PSU type, displayed as AC, or DC, or FAN, or NOT PRESENT."
        ::= { fanAndPsPsuStatusEntry 3 }
                                
    fanAndPsPsuFan OBJECT-TYPE
        SYNTAX  INTEGER{
                    ok(0),
                    fail(1),
                    not-present(2),
                    not-supported(3)
                } 
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The PSU fan status, displayed as OK, or FAIL, or NOT PRESENT."
        ::= { fanAndPsPsuStatusEntry 4 }

    fanAndPsPsuTemperature OBJECT-TYPE
        SYNTAX  INTEGER{
                    good(0),
                    high(1),
                   	not-present(2),
                   	not-supported(3)
                } 
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The PSU temperature, displayed as GOOD, or HIGH, or NOT PRESENT, 
                or NOT SUPPORTED."
        ::= { fanAndPsPsuStatusEntry 5 }

    fanAndPsPsuPower OBJECT-TYPE
        SYNTAX  INTEGER{
                    good(0),
                    bad(1),
                    not-present(2),
                    not-supported(3)
                } 
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The PSU power status, displayed as GOOD, or BAD, or NOT PRESENT
                or NOT SUPPORTED."
        ::= { fanAndPsPsuStatusEntry 6 }

    fanAndPsAccelFanStatus  OBJECT-TYPE
        SYNTAX  INTEGER {
                    non-supported(0),
                    ok(1),
                    not-ok(2)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The status of the accelerator card fans. Non-supported means this
                device does not support monitoring of the accelerator card fans."
        ::= { fanAndPs 12 }

--  fanAndPs traps - traps exist for changes to power supply status, fan status
--  and temperature status.

    fanAndPsRpsConnectionTrap TRAP-TYPE
        ENTERPRISE  fanAndPs
        VARIABLES   { fanAndPsRpsConnectionStatus }
        DESCRIPTION
                    "Generated when the RPS connection status changes."
        ::= 1

    fanAndPsMainPSUStatusTrap TRAP-TYPE
        ENTERPRISE  fanAndPs
        VARIABLES   { fanAndPsMainPSUStatus }
        DESCRIPTION
                    "Generated when the main power supply status changes."
        ::= 2

    fanAndPsRedundantPSUStatusTrap TRAP-TYPE
        ENTERPRISE  fanAndPs
        VARIABLES   { fanAndPsRedundantPSUStatus }
        DESCRIPTION
                    "Generated when the RPS status changes."
        ::= 3

    fanAndPsMainFanStatusTrap TRAP-TYPE
        ENTERPRISE  fanAndPs
        VARIABLES   { fanAndPsMainFanStatus }
        DESCRIPTION
                    "Generated when the main fan changes status."
        ::= 4

    fanAndPsRedundantFanStatusTrap TRAP-TYPE
        ENTERPRISE  fanAndPs
        VARIABLES   { fanAndPsRedundantFanStatus }
        DESCRIPTION
                    "Generated when the redundant fan changes status."
        ::= 5

    fanAndPsTemperatureStatusTrap TRAP-TYPE
        ENTERPRISE  fanAndPs
        VARIABLES   { fanAndPsTemperatureStatus }
        DESCRIPTION
                    "Generated when the temperature changes status."
        ::= 6

    fanAndPsFanTrayPresentTrap TRAP-TYPE
        ENTERPRISE  fanAndPs
        VARIABLES   { fanAndPsFanTrayPresent }
        DESCRIPTION
                    "Generated when the fan tray presence status changes."
        ::= 7

    fanAndPsFanTrayStatusTrap TRAP-TYPE
        ENTERPRISE  fanAndPs
        VARIABLES   { fanAndPsFanTrayStatus }
        DESCRIPTION
                    "Generated when the fan tray status changes."
        ::= 8

	fanAndPsMainMonitoringStatusTrap TRAP-TYPE
        ENTERPRISE  fanAndPs
        VARIABLES   { fanAndPsMainMonitoringStatus }
        DESCRIPTION
                    "Generated when the main power supply monitoring status changes."
        ::= 9

    fanAndPsAccelFanStatusTrap TRAP-TYPE
        ENTERPRISE  fanAndPs
        VARIABLES   { fanAndPsAccelFanStatus }
        DESCRIPTION
                    "Generated when the accelerator fans' status changes."
        ::= 10

-- Add the option to restart the router/switch either cold or warm.
    restart OBJECT-TYPE
        SYNTAX  INTEGER {
                    restart-none(0),
                    restart-warm(1),
                    restart-cold(2)
                }
        ACCESS  write-only
        STATUS  mandatory
        DESCRIPTION
                "A router/switch restart request.
                
                A management station can remotely instruct an ATI router/switch
                to action a warm or cold restart.
                
                Once all the appropriate internal checks have been made, the 
                router/switch will acknowledge the request via normal SNMP channels.
                The restart instruction will be actioned after waiting for a period
                of 5 seconds, this is because the SNMP acknowledgement packet needs
                time to reach the management station.
                
                Once the request has been actioned, it can not be cancelled and 
                communication with the router/switch will be lost during system 
                initialisation."
        ::= { sysinfo 2 }


--  cpu - this group contains information about the cpu utilisation over different 
--  periods of time.

     cpu   OBJECT IDENTIFIER ::= { sysinfo 3 }  
      
     cpuUtilisationMax OBJECT-TYPE
        SYNTAX  INTEGER  (0..100)
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "Maximum CPU utilisation since the router was last restarted.
                 Expressed as a percentage."
       ::= { cpu 1 }
 
     cpuUtilisationAvg OBJECT-TYPE
        SYNTAX  INTEGER  (0..100) 
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "Average CPU utilisation since the router was last restarted.
                 Expressed as a percentage."
       ::= { cpu 2 }  
       
     cpuUtilisationAvgLastMinute OBJECT-TYPE
        SYNTAX  INTEGER  (0..100) 
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "Average CPU utilisation over the past minute.
                 Expressed as a percentage."
       ::= { cpu 3 }
                    
    cpuUtilisationAvgLast10Seconds OBJECT-TYPE
        SYNTAX  INTEGER  (0..100) 
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "Average CPU utilisation over the past ten seconds.
                 Expressed as a percentage."
       ::= { cpu 4 }
                    
    cpuUtilisationAvgLastSecond OBJECT-TYPE
        SYNTAX  INTEGER  (0..100) 
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "Average CPU utilisation over the past second.
                 Expressed as a percentage."
       ::= { cpu 5 }

 	cpuUtilisationMaxLast5Minutes OBJECT-TYPE
        SYNTAX  INTEGER  (0..100)
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "Maximum CPU utilisation over the last 5 minutes.
                 Expressed as a percentage."
       ::= { cpu 6 }

     cpuUtilisationAvgLast5Minutes OBJECT-TYPE
        SYNTAX  INTEGER  (0..100) 
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "Average CPU utilisation over the past 5 minutes.
                 Expressed as a percentage."
       ::= { cpu 7 }

--  sysTemperature - this group contains information about the temperature monitoring
--  in the system. under this group is a general group, containing generic temperature
--  monitoring variables, and one or more specific groups, which contain variables specific
--  to particular products.

    sysTemperature   OBJECT IDENTIFIER ::= { sysinfo 4 }

--  This group displays generic system temperature information - the actual
--  temperature, the  fixed temperature threshold and an indication the 
--  temperature has fallen below the threshold. A particular product may support 
--  this information or not. If not the product may have a specific entry for 
--  its particular temperature information. A product may also support the 
--  generic information and additional specific information. 

    generalTemperature    OBJECT IDENTIFIER ::= { sysTemperature 1 }

    generalTemperatureSupported OBJECT-TYPE
        SYNTAX  INTEGER {
                    not-supported(0),
                    supported(1)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The value supported indicates general temperature is displayed by the 
                device. The value not-supported indicates the device displays specific 
                temperature information or none at all."
       ::= { generalTemperature 1 }

    generalTemperatureActualTemp  OBJECT-TYPE
        SYNTAX  INTEGER 
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The current temperature of product's base board, in degrees Celsius. A device
                which doesn't support this group will return the value 0 for this variable."
       ::= { generalTemperature 2 }

    generalTemperatureStatus  OBJECT-TYPE
        SYNTAX  INTEGER {
                    ok(1),
                    not-ok(2)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The status of temperature in this device. ok indicates the
                temperature is below the threshold temperature or the device
                is not capable of monitoring temperature. not-ok indicates the
                temperature is being monitored and is currently above the
                threshold temperature (displayed in generalTemperatureThreshold)."
       ::= { generalTemperature 3 }

    generalTemperatureThreshold  OBJECT-TYPE
        SYNTAX  INTEGER 
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The temperature threshold for the device. If the 
                temperature of the device rises above this threshold 
                generalTemeratureStatus will indicate a not-ok status."
       ::= { generalTemperature 4 }

--  generalTemperature trap - a trap monitoring changes in the temperature status.

    generalTemperatureStatusTrap TRAP-TYPE
        ENTERPRISE  generalTemperature
        VARIABLES   { generalTemperatureStatus, generalTemperatureActualTemp, generalTemperatureThreshold }
        DESCRIPTION
                    "Generated when the temperature status of the device changes."
        ::= 1

--  sbTemperature - SwitchBlade specific temperature monitoring.

    sbTemperature   OBJECT IDENTIFIER ::= { sysTemperature 2 }

    sbTempTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF SbTempEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "The table of SwitchBlade sysTemperature. Each entry in the table
                represents temperature monitoring from one of the CPU cards which
                may be present in the SwitchBlade system."
        ::= { sbTemperature 1 }

    sbTempEntry OBJECT-TYPE
        SYNTAX  SbTempEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "A single entry of SwitchBlade sysTemperature"
        INDEX   { sbTempIndex }
        ::= { sbTempTable 1 }

    SbTempEntry ::=
        SEQUENCE {
            sbTempIndex
                INTEGER,
            sbTempActualTemperature
                INTEGER,   
            sbTempFixedThresholdStatus
                INTEGER,
            sbTempSettableThresholdStatus
                INTEGER,
            sbTempSettableThreshold    
                INTEGER
        }

    sbTempIndex OBJECT-TYPE
        SYNTAX  INTEGER {
                    master(1),
                    slave(2)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The board for which this temperature entry holds. If the system
                consists only of a single CPU board, only one entry will appear
                in the table, whose index is master(1)."
        ::= { sbTempEntry 1 }

    sbTempActualTemperature OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The actual SwitchBlade temperature. This temperature is measured
                within the SwitchBlade CPU, and is sampled at 1 second intervals."
        ::= { sbTempEntry 2 }

     sbTempFixedThresholdStatus OBJECT-TYPE
        SYNTAX  INTEGER {
                    normal(1),
                    crossover(2)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The temperature status with regard to the fixed temperature
                threshold. The value of the fixed temperature threshold is set at
                90 degrees C. This variable represents whether the actual temperature
                is above the threshold (value is crossover(2)) or below the threshold
                (value is normal(1)). If the temperature is exactly the same as the
                fixed temperature threshold, the value of this variable reads as
                normal(1)."
        ::= { sbTempEntry 3 }

    sbTempSettableThresholdStatus OBJECT-TYPE
        SYNTAX  INTEGER {
                    normal(1),
                    crossover(2),
                    undefined(3)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The temperature status with regard to the settable temperature
                threshold. The value of the settable temperature threshold is set by
                management intervention. This variable represents whether the actual
                temperature is above the threshold (value is crossover(2)) or below
                the threshold (value is normal(1)). When the value of this variable is 
                undefined(3), no settable threshold has been specified and the value
                of sbTempSettableThreshold is not used."
       ::= { sbTempEntry 4 }
    
    sbTempSettableThreshold OBJECT-TYPE
        SYNTAX  INTEGER  (30..100) 
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The value of the settable temperature threshold. This can be set
                independently for each temperature entry. The value of this threshold
                is only valid when sbTempSettableThresholdStatus is not set to
                undefined(3)."
       ::= { sbTempEntry 5 }
         
    sbTempFixedThreshold OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The value of the fixed temperature threshold. This value is fixed for
                both CPU cards, and cannot be set."
        ::= { sbTemperature 2 }

     sbTempFixedThresholdTrap TRAP-TYPE
        ENTERPRISE  sbTemperature
        VARIABLES   { sbTempFixedThresholdStatus, sbTempActualTemperature, sbTempFixedThreshold }
        DESCRIPTION
                    "Trap occurs when fixed threshold status changes. The actual temperature
                    and the fixed threshold are also given."
        ::= 1

     sbTempSettableThresholdTrap TRAP-TYPE
        ENTERPRISE  sbTemperature
        VARIABLES   { sbTempSettableThresholdStatus, sbTempActualTemperature, sbTempSettableThreshold }
        DESCRIPTION
                    "Trap occurs when settable threshold status changes. The actual temperature
                    and the settable threshold are also given."
        ::= 2

    atContactDetails OBJECT-TYPE
        SYNTAX  DisplayString (SIZE(0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The contact details for Allied Telesyn inc."
   	::= { sysinfo 5 }
 
--  acceleratorTemperature - Accelerator card specific temperature monitoring.

    acceleratorTemperature    OBJECT IDENTIFIER ::= { sysTemperature 3 }

    acceleratorTemperatureSupported OBJECT-TYPE
        SYNTAX  INTEGER {
                    not-supported(0),
                    supported(1)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The value supported indicates whether accelerator card temperature 
                is displayed by the device. The value not-supported indicates the 
                device does not display specific accelerator card temperature 
                information."
       ::= { acceleratorTemperature 1 }

    acceleratorTemperatureActualTemp  OBJECT-TYPE
        SYNTAX  INTEGER 
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The current temperature of product's base board, in degrees Celsius. A device
                which doesn't support this group will return the value 0 for this variable."
       ::= { acceleratorTemperature 2 }

    acceleratorTemperatureStatus  OBJECT-TYPE
        SYNTAX  INTEGER {
                    ok(1),
                    not-ok(2)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The status of temperature in this device. ok indicates the
                temperature is below the threshold temperature or the device
                is not capable of monitoring temperature. not-ok indicates the
                temperature is being monitored and is currently above the
                threshold temperature (displayed in generalTemperatureThreshold)."
       ::= { acceleratorTemperature 3 }

    acceleratorTemperatureThreshold  OBJECT-TYPE
        SYNTAX  INTEGER 
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The temperature threshold for the device. If the 
                temperature of the device rises above this threshold 
                generalTemeratureStatus will indicate a not-ok status."
       ::= { acceleratorTemperature 4 }

--  acceleratorTemperature trap - a trap monitoring changes in the temperature status.

    acceleratorTemperatureStatusTrap TRAP-TYPE
        ENTERPRISE  acceleratorTemperature
        VARIABLES   { acceleratorTemperatureStatus }
        DESCRIPTION
                    "Generated when the temperature status of the device changes."
        ::= 1

--  bbrNvs - this group contains information about the battery backed RAM non-volatile storage
--  in the router. 

    bbrNvs   OBJECT IDENTIFIER ::= { sysinfo 6 }

    bbrNvsReinitialiseTrap TRAP-TYPE
        ENTERPRISE  bbrNvs
        DESCRIPTION
                    "Generated at boot when the device detects that the BBR has been
                    corrupted and reinitialised. This can happen if the device's BBR
                    battery has run down, and the device has been powered off, then on."
        ::= 1


--  memory - this group contains information about the current memory status
--  of the router. 

    memory   OBJECT IDENTIFIER ::= { sysinfo 7 }  
      
    freeMemory OBJECT-TYPE
        SYNTAX  INTEGER  (0..100)
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "Percentage of free memory still available on device"
   	::= { memory 1 } 
   	
    totalBuffers OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "Total number of buffers available on device"
   	::= { memory 2 } 

    realTimeClockStatus OBJECT-TYPE
        SYNTAX  INTEGER {
                    invalid(0),
                    normal(1)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "Shows the status of the real time clock"
   	::= { sysinfo 8 } 

    hostId OBJECT-TYPE
        SYNTAX  INTEGER (0..32)
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "Host Identifier of this device"
   	::= { sysinfo 9 } 
   	 
--  Router interfaces tables.

--  A router consists of a number of "boards". Each board may have a
--  number of "positions", each of which contains a single router
--  interface. Each boards may also have a number of "slots", which are
--  places which can take other boards. Thus the physical construction
--  of a router may be seen as a tree whose nodes are boards and
--  interfaces, and whose links are positions and slots.
--  For example, an AR720 with a single Ethernet ICM in Bay 1 has the
--  following tree:
--  Bd:AR720 base board
--           === P1 === Int: Asyn0
--           === P2 === Int: Asyn1
--           === P3 === Int: Eth0
--           === S1 (Bay0) === <empty>
--           === S2 (Bay1) === Bd:Ethernet ICM === P1 === Int: Eth1
--           === S3 (MAC) === <empty>
--  The function of the interface MIB tables is to represent this tree
--  and to map elements in this tree to other MIB variables. Note that
--  any given board has a fixed configuration of positions and slots,
--  it is what is contained in the slots that give different hardware
--  configurations.

--  The highest index of boards in this router. Boards will have indices
--  from 1 to the value of this object. There may be gaps in the
--  sequence if the router has hot-swap capability. If the router has no
--  hot-swap capability, or no swapping has taken place since boot, the
--  sequence of boards will have no gaps.

    arBoardMaxIndex OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The maximum index of boards in the board table. Index 1
                is reserved for the main system board of the router."
        ::= { arInterfaces 1 }

--  Router boards table. This table describes all of the physical boards
--  present in this router. A board is defined as a separate circuit
--  board with its own serial number.

    arBoardTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF ArBoardEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "The table of boards in the AR router."
        ::= { arInterfaces 2 }

    arBoardEntry OBJECT-TYPE
        SYNTAX  ArBoardEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "A single entry in the board table. Each entry consists
                of information about one board in the router."
        INDEX   { arBoardIndex }
        ::= { arBoardTable 1 }

    ArBoardEntry ::=
        SEQUENCE {
            arBoardIndex
                INTEGER,
            arBoardId
                OBJECT IDENTIFIER,
            arBoardName
                DisplayString,
            arBoardRevision
                DisplayString,
            arBoardSerialNumber
                DisplayString,
            arBoardTotalSlots
                INTEGER,
            arBoardTotalPositions
                INTEGER
        }

    arBoardIndex OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The index of the board in the board table. Index 1 is
                reserved for the main system board of the router. Other
                boards will take index numbers as they are initialised
                at router startup, or for routers with hot-swap
                capability, as boards are added to and removed from the
                router."
        ::= { arBoardEntry 1 }

    arBoardId OBJECT-TYPE
        SYNTAX  OBJECT IDENTIFIER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The type of board in this board entry. The values of
                this object are taken from the pprXxx object IDs under
                the boards sub-tree."
       ::= { arBoardEntry 2 }

    arBoardName OBJECT-TYPE
        SYNTAX  DisplayString (SIZE(0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The name of the board in this board entry. This is a
                readable string which identifies the board to the
                manager."
        ::= { arBoardEntry 3 }

    arBoardRevision OBJECT-TYPE
        SYNTAX  DisplayString (SIZE(0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The manufacturing revision of the board in this board
                entry. This string has the format Xm-n, where X is P for
                prototype, or M for manufacturing, m is the major
                revision number for this board, and n is the field
                upgrade revision number for this board."
        ::= { arBoardEntry 4 }

    arBoardSerialNumber OBJECT-TYPE
        SYNTAX  DisplayString (SIZE(0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The serial number of the board in this board entry.
                Serial numbers are strings of decimal numbers up to 10
                digits in length. Each and every serial number is
                globally unique. It is possible for the serial number of
                a board to be invalid. In this case the value returned
                for this object will be '*** Invalid ***'"
        ::= { arBoardEntry 5 }

    arBoardTotalSlots OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of slots on this board. Each slot from 1 to
                the value of this object may be empty or occupied by
                another board. By searching the arSlotTable with this
                board's board index and all values of slot index from 1
                to the value of this object, a tree of the boards in
                this router can be built. The value 0 for this object
                means that it has no slots."
        ::= { arBoardEntry 6 }

    arBoardTotalPositions OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of positions on this board. Each position
                from 1 to the value of this object contains a single
                router interface. Note that positions are different from
                slots. An position contains an actual interface while a
                slot contains a different board which itself may contain
                interfaces in its positions."
        ::= { arBoardEntry 7 }


--  Router board slot table. This table is indexed by board index and
--  slot index and gives the board index of the board occupying the
--  given slot in the given board.

    arSlotTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF ArSlotEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "The table of slots in the router, indexed by board
                index and slot index."
        ::= { arInterfaces 3 }

    arSlotEntry OBJECT-TYPE
        SYNTAX  ArSlotEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "A single entry in the board slot table."
        INDEX   { arSlotBoardIndex, arSlotSlotIndex }
        ::= { arSlotTable 1 }

    ArSlotEntry ::=
        SEQUENCE {
            arSlotBoardIndex
                INTEGER,
            arSlotSlotIndex
                INTEGER,
            arSlotHeldBoardIndex
                INTEGER,
            arSlotDescription
                DisplayString
        }

    arSlotBoardIndex OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The index of the board for this slot entry. Index 1 is
                reserved for the main system board of the router."
        ::= { arSlotEntry 1 }

    arSlotSlotIndex OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The index of the slot for this slot entry. Indices
                start from 1 and are specific to each different board
                type. There are no gaps in the sequence of slot indices.
                The maximum value for slot index is given by the value
                of arBoardTotalSlots for this board."
        ::= { arSlotEntry 2 }

    arSlotHeldBoardIndex OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The index of the board held in the slot for this slot
                entry. This is an index into the arBoardTable. A value
                of 0 for this object means that the slot is not
                populated."
        ::= { arSlotEntry 3 }

    arSlotDescription OBJECT-TYPE
        SYNTAX  DisplayString (SIZE(0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "A description for this slot entry. This is a textual
                description which gives the manager a clue as to what
                the slot for this entry is. For example, the slots on an
                AR 720 have descriptions 'Bay0', 'Bay1' and 'MAC'."
        ::= { arSlotEntry 4 }

--  Router interfaces table. This table has an entry for each physical
--  interface on the router. The indices for this table are the router
--  board index and a board position index.

    arInterfaceTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF ArInterfaceEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "The table of physical interfaces in the AR router."
        ::= { arInterfaces 4 }

    arInterfaceEntry OBJECT-TYPE
        SYNTAX  ArInterfaceEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "A single entry in the interface table. Each entry consists of
                information about one interface in the router, and is indexed
                by the board index and the position of the interface on the
                board."
        INDEX   { arInterfaceBoardIndex, arInterfacePosition }
        ::= { arInterfaceTable 1 }

    ArInterfaceEntry ::=
        SEQUENCE {
            arInterfaceBoardIndex
                INTEGER,
            arInterfacePosition
                INTEGER,
            arInterfaceIfIndex
                InterfaceIndexOrZero,
            arInterfaceName
                DisplayString,
            arInterfaceFullName
                DisplayString
        }

    arInterfaceBoardIndex OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The index of the board in the board table which contains this
                interface. Index 1 is reserved for the main system board of the
                router."
        ::= { arInterfaceEntry 1 }

    arInterfacePosition OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The position of the interface on the board. Each board type
                will have well-known positions which are the interfaces
                provided by the board. The number of positions on a given board
                is given by the object arBoardTotalPositions for this board."
        ::= { arInterfaceEntry 2 }

    arInterfaceIfIndex OBJECT-TYPE
        SYNTAX  InterfaceIndexOrZero
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The ifIndex for the interface represented by this entry of the
                interfaces table. This is the ifIndex of the ifEntry used to
                represent the physical interface. The value 0 is used for
                interfaces which don't have an ifIndex."
        ::= { arInterfaceEntry 3 }

    arInterfaceName OBJECT-TYPE
        SYNTAX  DisplayString (SIZE(0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The name of this interface. This is the name that the manager
                can use to refer to this interface in entering router
                commands."
        ::= { arInterfaceEntry 4 }


    arInterfaceFullName OBJECT-TYPE
        SYNTAX  DisplayString (SIZE(0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The fully qualified name for this interface. This identifies 
                the path that must be followed to reach the interface. This 
                name can be used in router commands. In routers don't support 
                fully qualified names, this is the same as arInterfaceName."
        ::= { arInterfaceEntry 5 }
                                      
--  =================================================================================
--  Router interface extension table. This table extends ifTable to allow interface variables
--  not covered in the standard MIB. Current variables include:
--  1. 512s moving averages of interface throughput, bps and pps.

    arIfXTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF ArIfXEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "The table of interface statistics for the AR router.
                This table extends the ifTable."
        ::= { arInterfaces 5 }

    arIfXEntry OBJECT-TYPE
        SYNTAX  ArIfXEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "A single entry in the interface extension table. Each entry consists of
                extra interface information not covered in standard MIBs. The index for this
                table is ifIndex, the same as for ifTable."
        INDEX   { arIfXIndex }
        ::= { arIfXTable 1 }

    ArIfXEntry ::=
        SEQUENCE { 
            arIfXIndex
                INTEGER,
            arIfXAverageInputBitsSecond
                INTEGER,
            arIfXAverageInputPacketsSecond
                INTEGER,
            arIfXAverageOutputBitsSecond
                INTEGER,
            arIfXAverageOutputPacketsSecond
                INTEGER
        }
 
    arIfXIndex OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The index of the ifTable."
        ::= { arIfXEntry 1 }
       
    arIfXAverageInputBitsSecond OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The average number of bits received per second on all 
                interfaces over the past 8.5 minutes.

                The average is calculated by an 8.5 minute (512s) decaying average, 
                which is updated every 4 seconds using the following formula:
                
                    X' = 127/128X + 1/128i
                    
                    where   X' is the new average
                            X  is the old average
                            i  is the most recent poll result
                
                The times and multiplier factors have been chosen to give the simplest
                possible calculation using bit shifting operations."
        ::= { arIfXEntry 2 }
        
     arIfXAverageInputPacketsSecond OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The average number of packets received per second on all 
                interfaces over the past 8.5 minutes. See the description for
                arIfXAverageInputBitsSecond for details of the way in which the
                average is calculated."
        ::= { arIfXEntry 3 }
        
     arIfXAverageOutputBitsSecond OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The average number of bits sent per second on all 
                interfaces over the past 8.5 minutes. See the description for
                arIfXAverageInputBitsSecond for details of the way in which the
                average is calculated."
        ::= { arIfXEntry 4 }
        
     arIfXAverageOutputPacketsSecond OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The average number of bits sent per second on all 
                interfaces over the past 8.5 minutes. See the description for
                arIfXAverageInputBitsSecond for details of the way in which the
                average is calculated."
        ::= { arIfXEntry 5 }
                                      
                                      
--  Start of module MIBs. Each MIB under here represents a particular module in the router software.

    -- ==========   ETH module   ==========
    -- ==========   ETH module   ==========
    -- ==========   ETH module   ==========
    -- The Ethernet module. This group consists of a table of Ethernet
    -- interfaces indexed by ifIndex which provide MIB objects not given in a
    -- convenient form by other standard MIBs.

    ethernet OBJECT IDENTIFIER ::= { modules 23 }
    -- The index off the modules subtree is from modules.h.

    -- The Ethernet interface table. Each entry is a single Ethernet interface
    -- on the router.

    ethIntTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF EthIntEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "The table of Ethernet interfaces."
        ::= { ethernet 1 }

    ethIntEntry OBJECT-TYPE
        SYNTAX  EthIntEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "A single entry in the Ethernet interfaces table."
        INDEX   { ethIntIndex }
        ::= { ethIntTable 1 }

    EthIntEntry ::=
        SEQUENCE {
            ethIntIndex
                INTEGER,
            ethIntBoardIndex
                INTEGER,
            ethIntBoardPosition
                INTEGER,
            ethIntDuplexMode
                INTEGER
        }

    ethIntIndex OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The ifIndex of the Ethernet interface."
        ::= { ethIntEntry 1 }

    ethIntBoardIndex OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The index in the arBoardTable of the board on which this
                Ethernet interface resides. If this Ethernet interface is not
                found, the value of this object is 0."
        ::= { ethIntEntry 2 }

    ethIntBoardPosition OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The position on this Ethernet interface's board of this
                Ethernet interface. If this Ethernet interface is not found,
                the value of this object is 0."
        ::= { ethIntEntry 3 }

    ethIntDuplexMode OBJECT-TYPE
        SYNTAX  INTEGER {
                    full-duplex (1),
                    half-duplex (2),
                    unknown (3)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The duplex mode of this Ethernet interface. The value unknown
                is returned when the interface cannot or has not yet made a
                determination of its duplex mode, or when the interface cannot
                be found."
        ::= { ethIntEntry 4 }


    -- ==========   FLASH module ==========
    -- ==========   FLASH module ==========
    -- ==========   FLASH module ==========
    -- The FLASH group.

    flash OBJECT IDENTIFIER ::= { modules 31 }

    flashGetFailure OBJECT-TYPE
        SYNTAX  INTEGER 
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of flash get operations that have failed."
        ::= { flash 1 }

    flashOpenFailure OBJECT-TYPE
        SYNTAX  INTEGER 
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of flash open operations that have failed."
        ::= { flash 2 }

    flashReadFailure OBJECT-TYPE
        SYNTAX  INTEGER 
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of flash read operations that have failed."
        ::= { flash 3 }

    flashCloseFailure OBJECT-TYPE
        SYNTAX  INTEGER 
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of flash close operations that have failed."
        ::= { flash 4 }

    flashCompleteFailure OBJECT-TYPE
        SYNTAX  INTEGER 
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of flash complete operations that have failed."
        ::= { flash 5 }

    flashWriteFailure OBJECT-TYPE
        SYNTAX  INTEGER 
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of flash write operations that have failed."
        ::= { flash 6 }

    flashCreateFailure OBJECT-TYPE
        SYNTAX  INTEGER 
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of flash create operations that have failed."
        ::= { flash 7 }

    flashPutFailure OBJECT-TYPE
        SYNTAX  INTEGER 
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of flash put operations that have failed."
        ::= { flash 8 }

    flashDeleteFailure OBJECT-TYPE
        SYNTAX  INTEGER 
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of flash delete operations that have failed."
        ::= { flash 9 }

    flashCheckFailure OBJECT-TYPE
        SYNTAX  INTEGER 
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of flash check operations that have failed."
        ::= { flash 10 }

    flashEraseFailure OBJECT-TYPE
        SYNTAX  INTEGER 
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of flash erase operations that have failed."
        ::= { flash 11 }

    flashCompactFailure OBJECT-TYPE
        SYNTAX  INTEGER 
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of flash compaction operations that have failed."
        ::= { flash 12 }

    flashVerifyFailure OBJECT-TYPE
        SYNTAX  INTEGER 
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of flash verify operations that have failed."
        ::= { flash 13 }

    flashFailureTrap TRAP-TYPE
        ENTERPRISE  flash
        VARIABLES   { flashGetFailure, flashOpenFailure, flashReadFailure,
        		 flashCloseFailure, flashCompleteFailure, flashWriteFailure,
        		 flashCreateFailure, flashPutFailure, flashDeleteFailure, 
        		 flashCheckFailure, flashEraseFailure, flashCompactFailure,
        		 flashVerifyFailure }
        DESCRIPTION
                    "A flash failure trap is generated when any of the above 
                    flash counter is incremented and the failure type is
                    sent in the trap."
        ::= 1

    -- ==========   CC module   ==========
    -- ==========   CC module   ==========
    -- ==========   CC module   ==========
    -- The ISDN Call Control group. This group consists of:
    --   1. the call details table
    --   2. the CLI list table
    --   3. the active calls table
    --   4. the call log table
    --   5. the attachment table
    --   6. the B channel allocation table

    cc OBJECT IDENTIFIER ::= { modules 37 }
    -- The index off the modules subtree is from modules.h.

    -- The ISDN call details table. This consists of a number of entries containing
    -- configuration information for ISDN calls.

    ccDetailsTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CcDetailsEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "The table of call details parameters."
        ::= { cc 1 }

    ccDetailsEntry OBJECT-TYPE
        SYNTAX  CcDetailsEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "A single entry of ISDN call details. This contains the
                parameters of a single ISDN call details."
        INDEX   { ccDetailsIndex }
        ::= { ccDetailsTable 1 }

    CcDetailsEntry ::=
        SEQUENCE {
            ccDetailsIndex
                INTEGER,
            ccDetailsName
                DisplayString,
            ccDetailsRemoteName
                DisplayString,
            ccDetailsCalledNumber
                DisplayString,
            ccDetailsCallingNumber
                DisplayString,
            ccDetailsAlternateNumber
                DisplayString,
            ccDetailsEnabled
                INTEGER,
            ccDetailsDirection
                INTEGER,
            ccDetailsPrecedence
                INTEGER,
            ccDetailsHoldupTime
                INTEGER,
            ccDetailsPreferredIfIndex
                InterfaceIndexOrZero,
            ccDetailsRequiredIfIndex
                InterfaceIndexOrZero,
            ccDetailsPriority
                INTEGER,
            ccDetailsRetryT1
                INTEGER,
            ccDetailsRetryN1
                INTEGER,
            ccDetailsRetryT2
                INTEGER,
            ccDetailsRetryN2
                INTEGER,
            ccDetailsKeepup
                INTEGER,
            ccDetailsOutSetupCli
                INTEGER,
            ccDetailsOutSetupUser
                INTEGER,
            ccDetailsOutSetupCalledSub
                INTEGER,
            ccDetailsOutSubaddress
                DisplayString,
            ccDetailsCallback
                INTEGER,
            ccDetailsCallbackDelay
                INTEGER,
            ccDetailsInSetupCalledSubSearch
                INTEGER,
            ccDetailsInSetupUserSearch
                INTEGER,
            ccDetailsInSetupCliSearch
                INTEGER,
            ccDetailsInSetupCliSearchList
                INTEGER,
            ccDetailsInAnyFlag
                INTEGER,
            ccDetailsInSetupCalledSubCheck
                INTEGER,
            ccDetailsInSetupUserCheck
                INTEGER,
            ccDetailsInSetupCliCheck
                INTEGER,
            ccDetailsInSetupCliCheckList
                INTEGER,
            ccDetailsUserType
                INTEGER,
            ccDetailsLoginType
                INTEGER,
            ccDetailsUsername
                INTEGER,
            ccDetailsPassword
                INTEGER,
            ccDetailsBumpDelay
                INTEGER,
            ccDetailsDataRate
                INTEGER,
            ccDetailsPppTemplate
                INTEGER,
            ccDetailsUserModule
                INTEGER,
            ccDetailsNumberAttachments
                INTEGER
        }

    ccDetailsIndex OBJECT-TYPE
        SYNTAX  INTEGER (1..128)
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The index of the call details entry in the call details table. When an entry is created in this table, the index
                does not have to be written. However, to reference the values that are written, an unused index must be found by
                reading the index values of the table until a no such object error is returned. Attempting to create a row by
                using an already used index will result in simply changing the parameters of an existing call details entry."
        ::= { ccDetailsEntry 1 }

    ccDetailsName OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..15))
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The name of the ISDN call details. This must be unique for all ISDN call details, when comparisons are done
                ignoring the case of letters. Valid characters in the ISDN call name include 0-9, a-z, A-Z and '_'. A name
                consisting of all digits is not valid. Setting this object is mandatory on row creation. However, this object
                cannot be set for an existing call. This is because for the command line interface calls are identified by name.
                There is one exception. Setting ccDetailsName to an empty string will cause the call details to be deleted."
        ::= { ccDetailsEntry 2 }

    ccDetailsRemoteName OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..15))
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The remote ISDN call name. This name can be referenced by certain other call details parameters related with
                setting up the Q.931 SETUP message for outgoing calls, or searching for calls for incoming calls. Valid characters
                in the ISDN remote call name include 0-9, a-z, A-Z and '_'. A remote name consisting of all digits is valid."
        DEFVAL  { "" }
        ::= { ccDetailsEntry 3 }

    ccDetailsCalledNumber OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..31))
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The number called when this call details is activated. The number should include all telephone network access
                codes, country codes and area codes required to make a call from the particular ISDN interface. Setting this
                object is mandatory on row creation."
        ::= { ccDetailsEntry 4 }

    ccDetailsCallingNumber OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..31))
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The number used as the calling number when this call is activated. The calling number can optionally be placed
                in the outgoing SETUP message."
        DEFVAL  { "" }
        ::= { ccDetailsEntry 5 }

    ccDetailsAlternateNumber OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..31))
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The number called when all retries with the main called number have failed. In this event, the router tries
                once with the alternate number, then checks the ccDetailsKeepup object to determine whether to try again with
                the main number."
        DEFVAL  { "" }
        ::= { ccDetailsEntry 6 }

    ccDetailsEnabled OBJECT-TYPE
        SYNTAX  INTEGER {
                    disabled (1),
                    enabled (2)
                }
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "Whether this ISDN call is enabled or disabled for incoming and outgoing calls. If the call details entry is
                disabled, all existing active calls based on this call details entry are left active."
        DEFVAL  { enabled }
        ::= { ccDetailsEntry 7 }

    ccDetailsDirection OBJECT-TYPE
        SYNTAX  INTEGER {
                    in-only (1),
                    out-only (2),
                    both (3)
                }
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The direction for which calls may be made or received using this call details entry."
        DEFVAL  { both }
        ::= { ccDetailsEntry 8 }

    ccDetailsPrecedence OBJECT-TYPE
        SYNTAX  INTEGER {
                    in (1),
                    out (2)
                }
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The precedence of this call details entry in the event of call collision. Call collision occurs when an
                incoming call for a given details entry is detected while an outgoing call is waiting to complete. This
                object configures whether the router treats the incoming or outgoing call as having precedence. Since the
                device at the other end will also probably be experiencing a call collision, the precedence should be
                configured to the opposite value at the other end. Setting this object is mandatory on row creation."
        ::= { ccDetailsEntry 9 }

    ccDetailsHoldupTime OBJECT-TYPE
        SYNTAX  INTEGER (0..7200)
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The time, in seconds, that active calls created from this call details should be held up after initial
                activation. The call will be held up for at least this time, unless cleared from the network. Thus, for example,
                PPP idle timeouts will not bring the call down."
        DEFVAL  { 0 }
        ::= { ccDetailsEntry 10 }

    ccDetailsPreferredIfIndex OBJECT-TYPE
        SYNTAX  InterfaceIndexOrZero
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The ifIndex of an ISDN interface on this router which is the preferred ISDN interface on which to make an
                outgoing call using this call details entry. The ifIndex, if not 0, should reference the ifEntry which contains
                information about the entire ISDN interface, at the lowest layer. If a channel is not available on this interface,
                the call can try other interfaces in order to make the call. This object is not used on incoming calls. If the
                value of this object is set to 0, no interface will be preferred over any other. If the value of this object does
                not reference the ifEntry for the entire ISDN interface, no interface will be preferred."
        DEFVAL  { 0 }
        ::= { ccDetailsEntry 11 }

    ccDetailsRequiredIfIndex OBJECT-TYPE
        SYNTAX  InterfaceIndexOrZero
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The ifIndex of an ISDN interface on this router which is the required ISDN interface on which to make an
                outgoing call using this call details entry. The ifIndex, if not 0, must reference the ifEntry which contains
                information about the entire ISDN interface, at the lowest layer. If a channel is not available on this interface,
                the call fails. This object is not used on incoming calls. If the value of this object is set to 0, no interface
                will be required. If the value of this object does not reference the ifEntry for the entire ISDN interface, no
                interface will be required."
        DEFVAL  { 0 }
        ::= { ccDetailsEntry 12 }

    ccDetailsPriority OBJECT-TYPE
        SYNTAX  INTEGER (0..99)
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The priority of calls generated from this call details entry. The priority determines whether calls can be bumped
                for higher priority calls. The value of priority falls into ranges:
                0-19 - call bumped by incoming or outgoing, voice or data calls
                20-39 - call bumped by outgoing voice and incoming or outgoing data calls
                40-59 - call bumped by emergency voice calls or incoming or outgoing data calls
                60-99 - call bumped by emergency voice calls or outgoing data calls.
                Note that when the call is bumped by a data call, the data call must have higher
                priority than the call being bumped."
        DEFVAL { 50 }
        ::= { ccDetailsEntry 13 }

    -- Retry parameters. ISDN calls can be automatically retries in the event of a failure to establish the call. Parameters
    -- exist to set up groups of retries (N1 retries with time T1 between each retry) and groups of groups of retries (N2 retry
    -- groups with time T2 between groups).

    ccDetailsRetryT1 OBJECT-TYPE
        SYNTAX  INTEGER (5..120)
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The time in seconds between retries of calls generated from this call details entry."
        DEFVAL  { 30 }
        ::= { ccDetailsEntry 14 }

    ccDetailsRetryN1 OBJECT-TYPE
        SYNTAX  INTEGER (0..10)
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The number of retries in a retry group for calls generated from this call details entry. Note that the default
                value means that by default the call will not be retried."
        DEFVAL { 0 }
        ::= { ccDetailsEntry 15 }

    ccDetailsRetryT2 OBJECT-TYPE
        SYNTAX  INTEGER (300..1200)
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The time in seconds between retry groups for retries of calls generated from this call details entry."
        DEFVAL  { 600 }
        ::= { ccDetailsEntry 16 }

    ccDetailsRetryN2 OBJECT-TYPE
        SYNTAX  INTEGER (0..5)
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The number of retry groups for calls generated from this call details entry. Note that the default value means
                that by default no retry groups will be attempted."
        DEFVAL  { 0 }
        ::= { ccDetailsEntry 17 }

    ccDetailsKeepup OBJECT-TYPE
        SYNTAX  INTEGER {
                    no (1),
                    yes (2)
                }
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "A flag indicating whether calls generated from this call details entry should be kept up always. Inspection of
                this flag takes place when a call is cleared from an external source. If set to 'yes', the call will be retried."
        DEFVAL  { no }
        ::= { ccDetailsEntry 18 }

    ccDetailsOutSetupCli OBJECT-TYPE
        SYNTAX  INTEGER {
                    off (1),
                    calling (2),
                    interface (3),
                    nonumber (4)
                }
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The CLI information placed into outgoing SETUP messages when this call details is used to generate an outgoing
                call. The value 'off' means that no CLI information in placed in the SETUP message. The value 'calling' means that
                the calling number from the call details entry is placed in the SETUP message. The value 'interface' means that
                the Q.931 interface number for the interface and DLC on which the call is made is placed in the SETUP message. The
                value 'nonumber' means that the CLI information element is placed in the SETUP message with no number information.
                The network will fill the number in."
        DEFVAL  { off }
        ::= { ccDetailsEntry 19 }

    ccDetailsOutSetupUser OBJECT-TYPE
        SYNTAX  INTEGER {
                    off (1),
                    local (2),
                    remote (3)
                }
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The user-user information placed into outgoing SETUP messages when this call details is used to generate an
                outgoing call. The value 'off' means that no user-user information in placed in the SETUP message. The value
                'local' means that the call name from the call details entry is placed in the SETUP message. The value 'remote'
                means that the remote call name from the call details entry is placed in the SETUP message."
        DEFVAL  { off }
        ::= { ccDetailsEntry 20 }

    ccDetailsOutSetupCalledSub OBJECT-TYPE
        SYNTAX  INTEGER {
                    off (1),
                    local (2),
                    remote (3)
                }
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The called subaddress information placed into outgoing SETUP messages when this call details is used to generate
                an outgoing call. The value 'off' means that no called subaddress information in placed in the SETUP message. The
                value 'local' means that the call name from the call details entry is placed in the SETUP message. The value
                'remote' means that the remote call name from the call details entry is placed in the SETUP message. Note that
                the action of this object is overridden by the value of the object ccDetailsOutSubaddress."
        DEFVAL  { off }
        ::= { ccDetailsEntry 21 }

    ccDetailsOutSubaddress OBJECT-TYPE
        SYNTAX  DisplayString (SIZE(0..31))
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "This object gives a way to override the called subaddress information placed into outgoing SETUP messages when
                this call details is used to generate an outgoing call, as given by the ccDetailsOutSetupCalledSub object. The
                object is an arbitrary string of ASCII characters, from 0 to 31 characters long."
        DEFVAL  { "" }
        ::= { ccDetailsEntry 22 }

    ccDetailsCallback OBJECT-TYPE
        SYNTAX  INTEGER {
                    no (1),
                    yes (2)
                }
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "A flag indicating whether or not to call back the caller when an incoming call is generated from this call
                details entry. If set to 'yes', the incoming call will be cleared, and after a short delay, an outgoing call will
                be activated for this call details entry."
        DEFVAL  { no }
        ::= { ccDetailsEntry 23 }

    ccDetailsCallbackDelay OBJECT-TYPE
        SYNTAX  INTEGER (0..100)
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The time, in tenths of a second, which the router will wait after clearing an incoming call whose call details
                entry specified that the caller should be called back before making the return call. The purpose of this object
                is to allow the user to specify a delay in callback which will allow the network to properly clear the call at
                both this end and the remote end."
        DEFVAL  { 41 }
        ::= { ccDetailsEntry 24 }

    ccDetailsInSetupCalledSubSearch OBJECT-TYPE
        SYNTAX  INTEGER {
                    off (1),
                    local (2),
                    remote (3)
                }
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "Determines whether this call details entry is used in a search of call details for an incoming call based on the
                contents of the called subaddress information in the incoming SETUP message. The value 'off' means that this call
                details entry is not used in the search. The value 'local' means that the call details entry is used in the search
                and the called subaddress information is compared with the call details entry name. The value 'remote' means that
                the call details entry is used in the search and the called subaddress information is compared with the call
                details entry remote name. A number of searches are carried out until a matching call is found. First a search
                against the called subaddress in the SETUP message, then a search against the user-user information in the SETUP
                message, then a search against the calling number information in the SETUP message, then a search for any call
                that is configured to respond to any incoming call."
        DEFVAL  { off }
        ::= { ccDetailsEntry 25 }

    ccDetailsInSetupUserSearch OBJECT-TYPE
        SYNTAX  INTEGER {
                    off (1),
                    local (2),
                    remote (3)
                }
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "Determines whether this call details entry is used in a search of call details for an incoming call based on the
                contents of the user-user information in the incoming SETUP message. The value 'off' means that this call details
                entry is not used in the search. The value 'local' means that the call details entry is used in the search and
                the user-user information is compared with the call details entry name. The value 'remote' means that the call
                details entry is used in the search and the user-user information is compared with the call details entry remote
                name. A number of searches are carried out until a matching call is found. First a search against the called
                subaddress in the SETUP message, then a search against the user-user information in the SETUP message, then a
                search against the calling number information in the SETUP message, then a search for any call that is configured
                to respond to any incoming call."
        DEFVAL  { off }
        ::= { ccDetailsEntry 26 }

    ccDetailsInSetupCliSearch OBJECT-TYPE
        SYNTAX  INTEGER {
                    off (1),
                    on (2),
                    list (3)
                }
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "Determines whether this call details entry is used in a search of call details for an incoming call based on the
                contents of the calling number information in the incoming SETUP message. The value 'off' means that this call
                details entry is not used in the search. The value 'on' means that the call details entry is used in the search
                and the calling number information is compared with the call details entry called number. The value 'list' means
                that the call details entry is used in the search and the calling number information is compared with the numbers
                on the CLI list reference by the object ccDetailsInSetupCliSearchList. The value 'list' cannot be set by an SNMP
                management entity. Rather the ccDetailsInSetupCliSearchList object should be set to a non-zero value, which will
                automatically set this object to 'list'.
                A number of searches are carried out until a matching call is found. First a search against the called subaddress
                in the SETUP message, then a search against the user-user information in the SETUP message, then a search against
                the calling number information in the SETUP message, then a search for any call that is configured to respond to
                any incoming call."
        DEFVAL  { off }
        ::= { ccDetailsEntry 27 }

    ccDetailsInSetupCliSearchList OBJECT-TYPE
        SYNTAX  INTEGER (0..100)
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "If the ccDetailsInSetupCliSearch object is set to 'list', this
                object gives the index of the CLI list to search. The value of
                CLI list indices is 1..100. The value 0 is returned when the
                ccDetailsInSetupCliSearch object is not set to 'list'. If the
                value of this object is set to 0 via SNMP, then the
                ccDetailsInSetupCliSearch object will be internally set to 'off'.
                Subsequently setting the value of this object to a non-zero
                value will set the ccDetailsInSetupCliSearch object to 'list'.
                Note that when using the command line interface, CLI list indices
                range from 0 to 99, but when using SNMP they range from 1 to 100.
                This is because SNMP will not allow a table index to have the
                value 0, and the command line usage of indices from 0 to 99 is
                too well established to change."
        DEFVAL  { 0 }
        ::= { ccDetailsEntry 28 }

    ccDetailsInAnyFlag OBJECT-TYPE
        SYNTAX  INTEGER {
                    no (1),
                    yes (2)
                }
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "Determines whether this call details entry will match any incoming call. After all searched for incoming calls
                have been carried out based on called subaddress, user-user information and calling number, a search is carried
                out for the first call found with this flag set to 'yes'."
        DEFVAL  { no }
        ::= { ccDetailsEntry 29 }

    ccDetailsInSetupCalledSubCheck OBJECT-TYPE
        SYNTAX  INTEGER {
                    off (1),
                    local (2),
                    remote (3)
                }
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "Determines whether to perform a check when an incoming call matches this call details entry based on the
                contents of the called subaddress information in the incoming SETUP message. The value 'off' means that the check
                is not carried out. The value 'local' means that the check is carried out and the called subaddress information
                is compared with the call details entry name. The value 'remote' means that the check is carried out and the
                called subaddress information is compared with the call details entry remote name. A number of checks are
                optionally carried out once a matching call is found. The first check is against the called subaddress in the
                SETUP message, then against the user-user information in the SETUP message, then against the calling number
                information in the SETUP message."
        DEFVAL  { off }
        ::= { ccDetailsEntry 30 }

    ccDetailsInSetupUserCheck OBJECT-TYPE
        SYNTAX  INTEGER {
                    off (1),
                    local (2),
                    remote (3)
                }
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "Determines whether to perform a check when an incoming call matches this call details entry based on the
                contents of the user-user information in the incoming SETUP message. The value 'off' means that the check
                is not carried out. The value 'local' means that the check is carried out and the user-user information
                is compared with the call details entry name. The value 'remote' means that the check is carried out and the
                user-user information is compared with the call details entry remote name. A number of checks are
                optionally carried out once a matching call is found. The first check is against the called subaddress in the
                SETUP message, then against the user-user information in the SETUP message, then against the calling number
                information in the SETUP message."
        DEFVAL  { off }
        ::= { ccDetailsEntry 31 }

    ccDetailsInSetupCliCheck OBJECT-TYPE
        SYNTAX  INTEGER {
                    off (1),
                    present (2),
                    required (3)
                }
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "Determines whether to perform a check and which check to perform when an incoming call matches this call details
                entry based on the contents of the calling number information in the incoming SETUP message. The value 'off' means
                that the check is not carried out. The value 'present' means that the check is carried out only if calling number
                information is present. The value 'required' means that the calling number must be present for the check to pass.
                When the check is carried out, the calling number information is compared with the numbers in the CLI list
                referenced by the object ccDetailsInSetupCliCheckList.
                A number of checks are optionally carried out once a matching call is found. The first check is against the called
                subaddress in the SETUP message, then against the user-user information in the SETUP message, then against the
                calling number information in the SETUP message."
        DEFVAL  { off }
        ::= { ccDetailsEntry 32 }

    ccDetailsInSetupCliCheckList OBJECT-TYPE
        SYNTAX  INTEGER (0..100)
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "If the ccDetailsInSetupCliCheck object is set to 'present' or
                'required', this object gives the index of the CLI list to check
                against. The value of CLI list indices is 1..100. The value 0
                means that no list to check against is defined and the check
                immediately fails. Note that when using the command line
                interface, CLI list indices range from 0 to 99, but when using
                SNMP they range from 1 to 100. This is because SNMP will not
                allow a table index to have the value 0, and the command line
                usage of indices from 0 to 99 is too well established to change."
        DEFVAL  { 0 }
        ::= { ccDetailsEntry 33 }

    ccDetailsUserType OBJECT-TYPE
        SYNTAX  INTEGER {
                    attach (1),
                    ppp (2)
                }
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The type of user of this call. The value 'attach' means that users have to attach to this call before the call
                can be used for outgoing or incoming calls. The value 'ppp' means that for incoming calls only dynamic PPP
                interfaces will be created whenever this call details entry is matched."
        DEFVAL  { attach }
        ::= { ccDetailsEntry 34 }

    ccDetailsLoginType OBJECT-TYPE
        SYNTAX  INTEGER {
                    none (1),
                    userdb (2),
                    radius (3),
                    pap-tacacs (4),
                    chap (5),
                    pap-radius (6),
                    tacacs (7),
                    all (8)
                }
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The type of login for calls generated using this call details entry, for incoming calls only. Incoming calls
                can be configured to go through a logging in phase before the call is brought up. This object defines which login
                types are used. The value 'none' means don't do a login phase. The value 'userdb' means use the user database on
                the router to check login parameters. The value 'radius' means use the router's configured RADIUS servers to
                check the login parameters. The values 'pap-tacacs', 'chap' and 'pap-radius' apply only when the user is 'ppp' and
                determine how the dynamic PPP interface are configured for authentication. The value 'pap-tacacs' means use PAP
                to authenticate and use the TACACS server to check the login parameters. The value 'pap-radius' means use PAP
                to authenticate and use the RADIUS server to check the login parameters. The value 'chap' means use CHAP to
                authenticate. The value 'tacacs' means use the TACACS server to check login parameters. The value 'all' means use
                the user database, TACACS and RADIUS to check the login parameters. The login parameters for values 'userdb',
                'radius', 'tacacs' and 'all' are determined by the ccDetailsUsername and ccDetailsPassword objects."
        DEFVAL  { none }
        ::= { ccDetailsEntry 35 }

    ccDetailsUsername OBJECT-TYPE
        SYNTAX  INTEGER {
                    none (1),
                    cli (2),
                    calledsub (3),
                    useruser (4),
                    callname (5)
                }
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The source of the username when the ccDetailsLoginType object has a value of 'userdb', 'radius', 'tacacs' or
                'all'. The value 'none' means no username is defined. The value 'cli' means take the username from the 
                calling number information in the SETUP message. The value 'calledsub' means take the username from the called
                subaddress information in the SETUP message. The value 'useruser' means take the username from the user-user
                information in the SETUP message. The value 'callname' means take the username from the call details entry name."
        DEFVAL  { none }
        ::= { ccDetailsEntry 36 }

    ccDetailsPassword OBJECT-TYPE
        SYNTAX  INTEGER {
                    none (1),
                    cli (2),
                    calledsub (3),
                    useruser (4),
                    callname (5)
                }
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The source of the password when the ccDetailsLoginType object has a value of 'userdb', 'radius', 'tacacs' or
                'all'. The value 'none' means no password is defined. The value 'cli' means take the password from the 
                calling number information in the SETUP message. The value 'calledsub' means take the password from the called
                subaddress information in the SETUP message. The value 'useruser' means take the password from the user-user
                information in the SETUP message. The value 'callname' means take the password from the call details entry name."
        DEFVAL  { none }
        ::= { ccDetailsEntry 37 }

    ccDetailsBumpDelay OBJECT-TYPE
        SYNTAX  INTEGER (0..100)
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The time, in tenths of a second, which the router will wait after clearing an existing call which has been bumped
                to make way for a call based on this call details entry."
        DEFVAL  { 5 }
        ::= { ccDetailsEntry 38 }

    ccDetailsDataRate OBJECT-TYPE
        SYNTAX  INTEGER {
                    rate-64k (1),
                    rate-56k (2)
                }
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The data rate to use for active calls based on this call details entry. The actual data rate for outgoing calls
                is determined by both this object and the data rate parameter for the Q.931 interface chosen for the call. If
                either this object or the interface object specify a rate of 56k, then 56k will be the rate for the call.
                Otherwise, the default rate of 64k will be used. This allows interoperability between ISDNs which only allow 56k
                of data on a B channel."
        DEFVAL  { rate-64k }
        ::= { ccDetailsEntry 39 }

    ccDetailsPppTemplate OBJECT-TYPE
        SYNTAX  INTEGER (1..33)
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The PPP template to use when creating dynamic PPP interfaces
                for calls generated from this call details entry. The value 33
                represents a default PPP template, the values 1 to 32 represent
                PPP templates that are currently defined in the router. Note
                that when using the command line interface, PPP template indices
                range from 0 to 31, but when using SNMP they range from 1 to 32.
                This is because SNMP will not allow a table index to have the
                value 0. While there is no PPP template table accessible via
                SNMP, if there was, the indices of the table would have to range
                from 1 to 32."
        DEFVAL  { 33 }
        ::= { ccDetailsEntry 40 }

    ccDetailsUserModule OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The module ID of the user module currently attached to this ISDN call details entry."
        ::= { ccDetailsEntry 41 }

    ccDetailsNumberAttachments OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of attachments from the user module currently attached to this call details entry. The
                ccAttachmentsTable gives the actual attachments for each call details entry."
        ::= { ccDetailsEntry 42 }


    -- The ISDN CLI list table. This consists of a number of entries containing numbers for matching against CLI information.

    ccCliListTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CcCliListEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "The table of CLI list entries."
        ::= { cc 2 }

    ccCliListEntry OBJECT-TYPE
        SYNTAX  CcCliListEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "A single entry in the CLI list table. This contains a single number, as well as index information."
        INDEX   { ccCliListListIndex, ccCliListEntryIndex }
        ::= { ccCliListTable 1 }

    CcCliListEntry ::=
        SEQUENCE {
            ccCliListListIndex
                INTEGER,
            ccCliListEntryIndex
                INTEGER,
            ccCliListNumber
                DisplayString
        }

    ccCliListListIndex OBJECT-TYPE
        SYNTAX  INTEGER (1..100)
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The index of the CLI list. CLI lists from 1 to 100 are defined in the router."
        ::= { ccCliListEntry 1 }

    ccCliListEntryIndex OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The index of the CLI list entry within the CLI list. The minimum CLI list entry is 1. CLI lists are unlimited in
                length, although internal memory requirements could result in failure to create a given entry. When creating a row
                in this table, the entry index should be set to index the first empty row. Only one CLI list row in a given list
                should be created in any one SNMP message. Attempting to create more than one row will result in failure."
        ::= { ccCliListEntry 2 }

    ccCliListNumber OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..31))
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The number for this CLI list entry. Setting the number to a zero length string removes the entry from the CLI
                list, with consequent reshuffling of CLI entry indices. Thus the easiest way to delete an entire CLI list is to
                repeatedly set the first element in the list to a zero length string. A failure to SET will occur when this is
                attempted on an empty list."
        ::= { ccCliListEntry 3 }


    -- The active calls table. This consists of a number of entries containing details of actual active calls. Active calls are
    -- created by internal router processes, so this is a read-only table.

    ccActiveCallTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CcActiveCallEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "The table of ISDN active calls."
        ::= { cc 3 }

    ccActiveCallEntry OBJECT-TYPE
        SYNTAX  CcActiveCallEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "A single entry in the active call table."
        INDEX   { ccActiveCallIndex }
        ::= { ccActiveCallTable 1 }

    CcActiveCallEntry ::=
        SEQUENCE {
            ccActiveCallIndex
                INTEGER,
            ccActiveCallDetailsIndex
                INTEGER,
            ccActiveCallIfIndex
                InterfaceIndexOrZero,
            ccActiveCallDataRate
                INTEGER,
            ccActiveCallState
                INTEGER,
            ccActiveCallDirection
                INTEGER,
            ccActiveCallUserModule
                INTEGER,
            ccActiveCallUserInstance
                INTEGER,
            ccActiveCallBchannelIndex
                INTEGER
        }

    ccActiveCallIndex OBJECT-TYPE
        SYNTAX  INTEGER (1..128)
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The index of the active call. There are 128 possible active calls in the router simultaneously."
        ::= { ccActiveCallEntry 1 }

    ccActiveCallDetailsIndex OBJECT-TYPE
        SYNTAX  INTEGER (1..128)
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The index of the call details entry which generated this active call. Thus the index into the ccDetailsTable for
                this call."
        ::= { ccActiveCallEntry 2 }

    ccActiveCallIfIndex OBJECT-TYPE
        SYNTAX  InterfaceIndexOrZero
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The interface index of the interface on which this active call is being made or received. A value of zero
                indicates that the active has not yet had an interface assigned to it. The ifEntry indexed by this object is the
                ifEntry for the entire ISDN interface, not the ifEntry for the active call's B channel."
        ::= { ccActiveCallEntry 3 }

    ccActiveCallDataRate OBJECT-TYPE
        SYNTAX  INTEGER {
                    rate-64k (1),
                    rate-56k (2)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The data rate in use for this active call. This is determined by the call details setting of data rate, the
                ISDN interface setting for data rate, and the contents of the bearer capability information in the incoming
                SETUP message."
        ::= { ccActiveCallEntry 4 }

    ccActiveCallState OBJECT-TYPE
        SYNTAX  INTEGER {
                    null (1),
                    off (2),
                    try (3),
                    on (4),
                    wait (5),
                    await1 (6)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The state of this active call. The value 'null' indicates that this active call does not actually exist, in other
                words it is in the process of being created or destroyed. The value 'off' means that the active call is just being
                activated. The value 'try' means that the active call is attempting to establish. The value 'on' means that the
                active call is established. The value 'wait' means that the active call is waiting to retry. The value 'await1'
                means that the active call is waiting for authentication to succeed before becoming established."
        ::= { ccActiveCallEntry 5 }

    ccActiveCallDirection OBJECT-TYPE
        SYNTAX  INTEGER {
                    in (1),
                    out (2),
                    undefined (3)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The direction of this active call. The value 'in' indicates that this active call is an incoming call, the value
                'out' indicates that the active call is an outgoing call. The value 'undefined' indicates that the active call has
                just been created and a direction has not been assigned to it yet."
        ::= { ccActiveCallEntry 6 }

    ccActiveCallUserModule OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The module ID of the user module attached to this ISDN active call."
        ::= { ccActiveCallEntry 7 }

    ccActiveCallUserInstance OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The instance of the user module attached to this ISDN active call."
        ::= { ccActiveCallEntry 8 }

    ccActiveCallBchannelIndex OBJECT-TYPE
        SYNTAX  INTEGER (0..31)
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The B channel number for this active entry. BRI interfaces have B channels in the range 1..2, PRI interfaces
                have B channels in the range 1..31, excluding a channel which is the D channel. A value of 0 for this entry means
                that either a B channel is not currently allocated for this call, or that more than one B channel is allocated.
                In the second case, the management client will have to walk the B channel allocation table looking for channels
                with the same active call index as this call's."
        ::= { ccActiveCallEntry 9 }

    -- The call log table. This consists of a number of entries containing log details of ISDN calls. This is a read-only table.

    ccCallLogTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CcCallLogEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "The table of ISDN call log entries."
        ::= { cc 4 }

    ccCallLogEntry OBJECT-TYPE
        SYNTAX  CcCallLogEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "A single entry in the ISDN call log table."
        INDEX   { ccCallLogIndex }
        ::= { ccCallLogTable 1 }

    CcCallLogEntry ::=
        SEQUENCE {
            ccCallLogIndex
                INTEGER,
            ccCallLogName
                DisplayString,
            ccCallLogState
                INTEGER,
            ccCallLogTimeStarted
                DisplayString,
            ccCallLogDirection
                INTEGER,
            ccCallLogDuration
                INTEGER,
            ccCallLogRemoteNumber
                DisplayString
        }

    ccCallLogIndex OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The index of the call log entry. Since the call log table is dynamic, there is no guarantee that this index will
                continue to refer to the same log entry over time."
        ::= { ccCallLogEntry 1 }

    ccCallLogName OBJECT-TYPE
        SYNTAX  DisplayString (SIZE(0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The name of the call details entry which generated the active call for which this is the log entry."
        ::= { ccCallLogEntry 2 }

    ccCallLogState OBJECT-TYPE
        SYNTAX  INTEGER {
                    initial (1),
                    active (2),
                    disconnected (3),
                    cleared (4)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The state of the log entry. The value 'initial' means that the call is being established. The value 'active'
                means that the call is currently established. The value 'disconnected' means that the call was disconnected after
                being established for some time. The value 'cleared' means that the call was cleared abormally while in the
                establishment phase."
        ::= { ccCallLogEntry 3 }

    ccCallLogTimeStarted OBJECT-TYPE
        SYNTAX  DisplayString (SIZE(0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "A string in the format 'dd-mmm-yyyy hh:mm:ss' which gives the start time of the call for which this is the log
                entry. If the call never reached or has not yet reached the active state, this object will be a zero-length
                string."
        ::= { ccCallLogEntry 4 }

    ccCallLogDirection OBJECT-TYPE
        SYNTAX  INTEGER {
                    in (1),
                    out (2)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The direction of the call for which this is the log entry."
        ::= { ccCallLogEntry 5 }

    ccCallLogDuration OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The duration in seconds, of the call for which this is the log entry. A value of 0 in this field means either
                that the call has just started, that the call was cleared before becoming established, or that the call is still
                active. In other words, a non-zero value is present in this object only for calls which reach establishment and
                have since been cleared."
        ::= { ccCallLogEntry 6 }

    ccCallLogRemoteNumber OBJECT-TYPE
        SYNTAX  DisplayString (SIZE(0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "For incoming calls, the calling number, if this was made available in the SETUP message. For outgoing calls,
                the number dialed. If the number was not available, this object is a zero length string."
        ::= { ccCallLogEntry 7 }


    -- The call details attachment table. This is a table indexed by call detail index and list index of all the attachments from
    -- the user module. Since attachments are generated internally by other processes, this is a read-only table.

    ccAttachmentTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CcAttachmentEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "The table of call detail attachment entries."
        ::= { cc 5 }

    ccAttachmentEntry OBJECT-TYPE
        SYNTAX  CcAttachmentEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "A single entry in the attachment table."
        INDEX   { ccAttachmentDetailsIndex, ccAttachmentEntryIndex }
        ::= { ccAttachmentTable 1 }

    CcAttachmentEntry ::=
        SEQUENCE {
            ccAttachmentDetailsIndex
                INTEGER,
            ccAttachmentEntryIndex
                INTEGER,
            ccAttachmentActiveCallIndex
                INTEGER,
            ccAttachmentUserInstance
                INTEGER
        }

    ccAttachmentDetailsIndex OBJECT-TYPE
        SYNTAX  INTEGER (1..128)
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The index of the call details entry to which this attachment entry belongs."
        ::= { ccAttachmentEntry 1 }

    ccAttachmentEntryIndex OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The index of the attachment entry within the attachment list."
        ::= { ccAttachmentEntry 2 }

    ccAttachmentActiveCallIndex OBJECT-TYPE
        SYNTAX  INTEGER (0..128)
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The index of the active call for this attachment. A value of 0 indicates that there is currently no active call
                for this attachment. A value of 1 to 128 references the active call currently in place for this attachment."
        ::= { ccAttachmentEntry 3 }

    ccAttachmentUserInstance OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The instance of the user module attached to the ISDN active call for this attachment. This object should return
                the same value as the object ccActiveCallUserInstance for the active call indexed by ccAttachmentActiveCallIndex,
                if this is not 0."
        ::= { ccAttachmentEntry 4 }


    -- The B channel attachment table. This is a table indexed by ISDN interface ifIndex and B channel index of all the
    -- attachments to ISDN B channels. Since attachments are generated internally by other processes, this is a read-only table.

    ccBchannelTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CcBchannelEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "The table of B channel attachment entries."
        ::= { cc 6 }

    ccBchannelEntry OBJECT-TYPE
        SYNTAX  CcBchannelEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "A single entry in the B channel attachment table."
        INDEX   { ccBchannelIfIndex, ccBchannelChannelIndex }
        ::= { ccBchannelTable 1 }

    CcBchannelEntry ::=
        SEQUENCE {
            ccBchannelIfIndex
                INTEGER,
            ccBchannelChannelIndex
                INTEGER,
            ccBchannelAllocated
                INTEGER,
            ccBchannelCallType
                INTEGER,
            ccBchannelActiveCallIndex
                INTEGER,
            ccBchannelPriority
                INTEGER,
            ccBchannelDirection
                INTEGER
        }

    ccBchannelIfIndex OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The interface index of the interface which this B channel entry is on. The ifEntry indexed by this object is the
                ifEntry for the entire ISDN interface, not the ifEntry for the active call's B channel."
        ::= { ccBchannelEntry 1 }

    ccBchannelChannelIndex OBJECT-TYPE
        SYNTAX  INTEGER (1..31)
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The B channel number for this B channel entry. BRI interfaces have B channels in the range 1..2, PRI interfaces
                have B channels in the range 1..31, excluding a channel which is the D channel."
        ::= { ccBchannelEntry 2 }

    ccBchannelAllocated OBJECT-TYPE
        SYNTAX  INTEGER {
                    no (1),
                    yes (2)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "A flag indicating whether this B channel is actually allocated to a call or not."
        ::= { ccBchannelEntry 3 }

    ccBchannelCallType OBJECT-TYPE
        SYNTAX  INTEGER {
                    undefined (1),
                    data (2),
                    voice (3),
                    x25 (4)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The type of call on this B channel. If the B channel is not allocated, the call type will be undefined."
        ::= { ccBchannelEntry 4 }

    ccBchannelActiveCallIndex OBJECT-TYPE
        SYNTAX  INTEGER (0..128)
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The index of the active call which is currently attached to this B channel. If the value of this object is 0 the
                channel is either not allocated, or is not allocated to a data call."
        ::= { ccBchannelEntry 5 }

    ccBchannelPriority OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The priority of the call which has this B channel allocated to it. This is in the range 0..99 for data calls, 150
                for voice calls and 200 for emergency voice calls. A B channel which is not allocated will have a priority of 0."
        ::= { ccBchannelEntry 6 }

    ccBchannelDirection OBJECT-TYPE
        SYNTAX  INTEGER {
                    in (1),
                    out (2),
                    unallocated (3)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The direction of the call which has this B channel allocated to it. If this B channel is not allocated the value
                will be 'unallocated'."
        ::= { ccBchannelEntry 7 }


    -- ==========   BRI module   ==========
    -- ==========   BRI module   ==========
    -- ==========   BRI module   ==========
    -- The BRI module. This group consists of a table of BRI interfaces indexed
    -- by ifIndex which provide MIB objects not given in a convenient form by
    -- other standard MIBs. There is also a BRI channel MIB indexed by ifIndex
    -- and channel index which gives information about the channels on the
    -- interface.

    bri OBJECT IDENTIFIER ::= { modules 41 }
    -- The index off the modules subtree is from modules.h.

    -- The BRI interface table. Each entry is a BRI interface on the router.

    briIntTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF BriIntEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "The table of BRI interfaces."
        ::= { bri 1 }

    briIntEntry OBJECT-TYPE
        SYNTAX  BriIntEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "A single entry in the BRI interfaces table."
        INDEX   { briIntIndex }
        ::= { briIntTable 1 }

    BriIntEntry ::=
        SEQUENCE {
            briIntIndex
                INTEGER,
            briIntBoardIndex
                INTEGER,
            briIntBoardPosition
                INTEGER,
            briIntMode
                INTEGER,
            briIntTdmChannelMap
                INTEGER,
            briIntIsdnChannelMap
                INTEGER
        }

    briIntIndex OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The ifIndex of the BRI interface."
        ::= { briIntEntry 1 }

    briIntBoardIndex OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The index in the arBoardTable of the board on which this BRI
                interface resides."
        ::= { briIntEntry 2 }

    briIntBoardPosition OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The position on this BRI interface's board of this BRI
                interface."
        ::= { briIntEntry 3 }

    briIntMode OBJECT-TYPE
        SYNTAX  INTEGER {
                    isdn (1),
                    tdm (2),
                    mixed (3)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The mode of operation of this BRI interface. The value isdn
                means that the entire interface is operating as an ISDN
                interface, the value tdm means that the entire interface is
                operating as TDM groups and the value mixed means that some
                channels in the interface are dedicated to ISDN and some to TDM
                groups."
        ::= { briIntEntry 4 }

    briIntTdmChannelMap OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "A bit map of the channels in the BRI interface which are
                dedicated to TDM. Channel B1 has channel map value of 1,
                channel B2 has a channel map value of 2."
        ::= { briIntEntry 5 }

    briIntIsdnChannelMap OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "A bit map of the channels in the BRI interface which are
                dedicated to ISDN. Channel B1 has channel map value of 1,
                channel B2 has a channel map value of 2."
        ::= { briIntEntry 6 }

    -- The BRI channel table. Each entry is a channel on a BRI interface.

    briChanTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF BriChanEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "The table of channels on BRI interfaces."
        ::= { bri 2 }

    briChanEntry OBJECT-TYPE
        SYNTAX  BriChanEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "A single entry in the BRI channels table."
        INDEX   { briChanIntIndex, briChanChannelIndex }
        ::= { briChanTable 1 }

    BriChanEntry ::=
        SEQUENCE {
            briChanIntIndex
                INTEGER,
            briChanChannelIndex
                INTEGER,
            briChanMode
                INTEGER,
            briChanState
                INTEGER
        }

    briChanIntIndex OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The ifIndex of the BRI interface."
        ::= { briChanEntry 1 }

    briChanChannelIndex OBJECT-TYPE
        SYNTAX  INTEGER (1..3)
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The channel index of the BRI channel. Channel B1 has index 1,
                channel B2 has index 2 and the D channel has index 3."
        ::= { briChanEntry 2 }

    briChanMode OBJECT-TYPE
        SYNTAX  INTEGER {
                    isdn (1),
                    tdm (2),
                    none (3)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The mode of this BRI channel. The value isdn means that the
                channel is reserved for use in ISDN calls. The value tdm
                means that the channel is reserved for use by TDM. For the D
                channel, this object will always have the value isdn."
        ::= { briChanEntry 3 }

    briChanState OBJECT-TYPE
        SYNTAX  INTEGER {
                    inactive (1),
                    active (2)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The state of this BRI channel. The value inactive means that
                the channel does not currently have an active user, either an
                ISDN call or an active TDM group. The value active means that
                the channel is in use, either by an ISDN call or an active TDM
                group. For the D channel, this object will have the value
                active if LAPD is using the D channel (either for call control
                or X.25), or the value inactive otherwise."
        ::= { briChanEntry 4 }


    -- ==========   PRI module   ==========
    -- ==========   PRI module   ==========
    -- ==========   PRI module   ==========
    -- The PRI module. This group consists of a table of PRI interfaces indexed
    -- by ifIndex which provide MIB objects not given in a convenient form by
    -- other standard MIBs. There is also a PRI channel MIB indexed by ifIndex
    -- and channel index which gives information about the channels on the
    -- interface.

    pri OBJECT IDENTIFIER ::= { modules 42 }
    -- The index off the modules subtree is from modules.h.

    -- The PRI interface table. Each entry is a PRI interface on the router.

    priIntTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF PriIntEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "The table of PRI interfaces."
        ::= { pri 1 }

    priIntEntry OBJECT-TYPE
        SYNTAX  PriIntEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "A single entry in the PRI interfaces table."
        INDEX   { priIntIndex }
        ::= { priIntTable 1 }

    PriIntEntry ::=
        SEQUENCE {
            priIntIndex
                INTEGER,
            priIntBoardIndex
                INTEGER,
            priIntBoardPosition
                INTEGER,
            priIntMode
                INTEGER,
            priIntTdmChannelMap
                INTEGER,
            priIntIsdnChannelMap
                INTEGER,
            priIntType
                INTEGER
        }

    priIntIndex OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The ifIndex of the PRI interface."
        ::= { priIntEntry 1 }

    priIntBoardIndex OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The index in the arBoardTable of the board on which this PRI
                interface resides."
        ::= { priIntEntry 2 }

    priIntBoardPosition OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The position on this PRI interface's board of this PRI
                interface."
        ::= { priIntEntry 3 }

    priIntMode OBJECT-TYPE
        SYNTAX  INTEGER {
                    isdn (1),
                    tdm (2),
                    mixed (3)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The mode of operation of this PRI interface. The value isdn
                means that the entire interface is operating as an ISDN
                interface, the value tdm means that the entire interface is
                operating as TDM groups and the value mixed means that some
                channels in the interface are dedicated to ISDN and some to TDM
                groups."
        ::= { priIntEntry 4 }

    priIntTdmChannelMap OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "A bit map of the channels in the PRI interface which are
                dedicated to TDM. PRI channels are numbered from 0 to 31, 0 is
                unused, 16 (E1) or 24 (T1) is the D channel. The map values are
                2 to the power of the channel number."
        ::= { priIntEntry 5 }

    priIntIsdnChannelMap OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "A bit map of the channels in the PRI interface which are
                dedicated to ISDN. PRI channels are numbered from 0 to 31, 0 is
                unused, 16 (E1) or 24 (T1) is the D channel. The map values are
                2 to the power of the channel number."
        ::= { priIntEntry 6 }

    priIntType OBJECT-TYPE
        SYNTAX  INTEGER {
                    e1 (1),
                    t1 (2),
                    unknown (3)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The type of primary rate interface. E1 has 30 B + D channel,
                T1 has 23 B + D channel. If the value unknown is returned for
                this object, the exact PRI type has not yet been determined."
        ::= { priIntEntry 7 }

    -- The PRI channel table. Each entry is a channel on a PRI interface.

    priChanTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF PriChanEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "The table of channels on PRI interfaces."
        ::= { pri 2 }

    priChanEntry OBJECT-TYPE
        SYNTAX  PriChanEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "A single entry in the PRI channels table."
        INDEX   { priChanIntIndex, priChanChannelIndex }
        ::= { priChanTable 1 }

    PriChanEntry ::=
        SEQUENCE {
            priChanIntIndex
                INTEGER,
            priChanChannelIndex
                INTEGER,
            priChanMode
                INTEGER,
            priChanState
                INTEGER
        }

    priChanIntIndex OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The ifIndex of the PRI interface."
        ::= { priChanEntry 1 }

    priChanChannelIndex OBJECT-TYPE
        SYNTAX  INTEGER (1..31)
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The channel index of the PRI channel. Valid channels have
                indices from 1 to 31. The D channel on an E1 interface has
                index 16, the D channel on a T1 interface has index 24."
        ::= { priChanEntry 2 }

    priChanMode OBJECT-TYPE
        SYNTAX  INTEGER {
                    isdn (1),
                    tdm (2),
                    neither (3)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The mode of this PRI channel. The value isdn means that the
                channel is reserved for use in ISDN calls. The value tdm
                means that the channel is reserved for use by TDM. For the D
                channel, this object will usually have the value isdn. An
                exception is if the interface is running common D channel mode
                and the D channel is reserved for TDM."
        ::= { priChanEntry 3 }

    priChanState OBJECT-TYPE
        SYNTAX  INTEGER {
                    inactive (1),
                    active (2)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The state of this PRI channel. The value inactive means that
                the channel does not currently have an active user, either an
                ISDN call or an active TDM group. The value active means that
                the channel is in use, either by an ISDN call or an active TDM
                group."
        ::= { priChanEntry 4 }


    -- ==========   LOAD module ==========
    -- ==========   LOAD module ==========
    -- ==========   LOAD module ==========
    -- The load group. This consists of a static and dynamic entry of load
    -- information and a load status variable.

    loader OBJECT IDENTIFIER ::= { modules 48 }
    -- The index off the modules subtree is from modules.h.

    -- The load table. This consists of a static and dynamic entry of load
    -- information. The static information will be used if there is no dynamic
    -- information available.

    loadTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF LoadEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "The table of load parameters, dynamic and static."
        ::= { loader 1 }

    loadEntry OBJECT-TYPE
        SYNTAX  LoadEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "A single entry of load parameters. This contains the
                parameters required to perform a load from the router."
        INDEX   { loadIndex }
        ::= { loadTable 1 }

    LoadEntry ::=
        SEQUENCE {
            loadIndex
                INTEGER,
            loadServer
                IpAddress,
            loadDestination
                INTEGER,
            loadFilename
                DisplayString,
            loadDelay
                INTEGER
        }

    loadIndex OBJECT-TYPE
        SYNTAX  INTEGER {
                    static(1),
                    dynamic(2)
                }
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "There are two sets of load information, dynamic and static.
                The dynamic information is used once, then cleared. The static
                information is used whenever the dynamic information is not
                available. The dynamic information is also used to indicate the
                current load parameters when a load is in progress."
        ::= { loadEntry 1 }

    loadServer OBJECT-TYPE
        SYNTAX  IpAddress
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The IP address from which load will load."
        ::= { loadEntry 2 }

    loadDestination OBJECT-TYPE
        SYNTAX  INTEGER {
                    undefined(1),
                    nvs(2),
                    flash(3)
                }
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The destination of the file loaded, either flash or nvs
                memory, or undefined."
        ::= { loadEntry 3 }

    loadFilename OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..255))
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The file name of the file being loaded."
        ::= { loadEntry 4 }

    loadDelay OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "A delay in seconds between the initiation of the load and the
                start of the load. This allows for time to set up TFTP servers
                in cases where the terminal and TFTP server are using the same
                piece of equipment but will not work simultaneously."
        ::= { loadEntry 5 }

    -- The load status value. This is used to start and reset a load, and to
    -- report on the progress of a load.

    loadStatus OBJECT-TYPE
        SYNTAX  INTEGER {
                    idle(1),        -- loader is doing nothing
                    wait(2),        -- loader is waiting to start
                    loading(3),     -- loader is loading a file
                    complete(4),    -- loader has successfully completed a load
                    reset(5),       -- loader was aborted
                    actionstart(6), -- cause a load to start
                    actionstop(7)   -- cause a load to stop
                }
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "Status and action object for the load module. The values 1 to
                5 are read-only values and reflect the state of the load
                module. Values 4 and 5 (complete and reset) are 'read-once',
                that is, if their values are read, either by SNMP or by manager
                console command, then they will be changed back to idle(1). The
                action values (6 and 7) cause a start and stop of the load
                process respectively. Starting the load can only occur if this
                field has the values 1, 4, or 5. Stopping the load can only
                occur is this field has the values 2 or 3. Reading the value of
                the loadStatus after one of actionstart or actionstop has been
                set will give one of the values 1 to 5.
                Note: A single exception to the above rules is that if the value
                of loadStatus is idle(1), then a write of 1 to this variable will
                succeed without generating an error. This exception is to allow
                certain SNMP test suites to test this variable without throwing
                up errors."
        ::= { loader 2 }


    -- ==========   INSTALL module  ==========
    -- ==========   INSTALL module  ==========
    -- ==========   INSTALL module  ==========

    -- The install group. This group contains information relating to the install module in the
    -- router.

    install OBJECT IDENTIFIER ::= { modules 49 }
    -- The index off the modules subtree is from modules.h.

    -- The install table. This table controls the software release and patch
    -- running in the router.
    
    installTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF InstallEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "The list of install configurations for the router."
        ::= { install 1 }

    installEntry OBJECT-TYPE
        SYNTAX  InstallEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "An entry in the list of install configurations."
        INDEX   { instIndex }
        ::= { installTable 1 }

    InstallEntry ::=
        SEQUENCE {
            instIndex
                INTEGER,
            instRelDevice
                INTEGER,
            instRelName
                DisplayString,
            instRelMajor
                INTEGER,
            instRelMinor
                INTEGER,
            instPatDevice
                INTEGER,
            instPatName
                DisplayString,
            instRelInterim
                INTEGER, 
            instRelExists
                INTEGER,
            instPatExists
                INTEGER                 
        }

    instIndex OBJECT-TYPE
        SYNTAX  INTEGER {
                    temporary(1),
                    preferred(2),
                    default(3),
                    current(4)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The index for the install table. There are four install
                configurations defined in the router, default, preferred, 
                temporary and current. The router will attempt to use these
                in the order temporary, preferred, default when it boots. 
                An install that is undefined will be skipped, an install 
                which points to a file which is not present will be skipped.
                When the temporary install is used, the information is deleted.
                The current configuration shows what the router currently
                has installed."
        ::= { installEntry 1 }

    instRelDevice OBJECT-TYPE
        SYNTAX  INTEGER {
                    none(1),
                    eprom(2),
                    flash(3)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The device for the release in the install. If the device is
                flash the file for the release is given in instRelName. Devices
                none(1) or flash(3) are invalid for the default(3) release."
        ::= { installEntry 2 }

    instRelName OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The file name for the release in the install, if the
                instRelDevice is flash(3). If the instRelDevice is none(1) or
                eprom(2), this object should be a null string."
        ::= { installEntry 3 }

    instRelMajor OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The major release number for this install. This information is
                obtained by the router when the other elements in the row are
                set and is thus not directly set by management. If the release number
                is a.b.c, the major release number is a."
        ::= { installEntry 4 }

    instRelMinor OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The minor release number for this install. This information is
                obtained by the router when the other elements in the row are
                set and is thus not directly set by management. If the release number
                is a.b.c, the major release number is b."
        ::= { installEntry 5 }

    instPatDevice OBJECT-TYPE
        SYNTAX  INTEGER {
                    none(1),
                    flash(3),
                    nvs(4)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The device for the patch in the install. The file for the
                patch is given in instPatName unless the device is none(1)."
        ::= { installEntry 6 }

    instPatName OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The file name for the patch in the install."
        ::= { installEntry 7 }

    instRelInterim OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The interim release number for this install. This information is
                obtained by the router when the other elements in the row are
                set and is thus not directly set by management. If the release number
                is a.b.c, the major release number is c. If the release number is a.b,
                the interim release number is 0."
        ::= { installEntry 8 }

    instRelExists OBJECT-TYPE
        SYNTAX  INTEGER {
                    true(1),
                    false(2)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "Indicates if the release file exists or not. true(1) means it exists, false(2) means it doesn't."
        ::= { installEntry 9 }
        
    instPatExists OBJECT-TYPE
        SYNTAX  INTEGER {
                    true(1),
                    false(2)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "Indicates if the patch file exists or not. true(1) means it exists, false(2) means it doesn't"

        ::= { installEntry 10 }                  

    -- The install history table. Each element is a descriptive line that tells
    -- of part of the install history of the last router reboot.

    installHistoryTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF InstallHistoryEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "The table of descriptions of events in the install history of
                the router."
        ::= { install 2 }

    installHistoryEntry OBJECT-TYPE
        SYNTAX  InstallHistoryEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "A single line describing part of the install history of the
                router."
        INDEX   { instHistIndex }
        ::= { installHistoryTable 1 }

    InstallHistoryEntry ::=
        SEQUENCE {
            instHistIndex
                INTEGER,
            instHistLine
                DisplayString
        }

    instHistIndex OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The index of this event in the install history. Indices run
                from 1 to the maximum number. The maximum number is not
                available as a managed object so this table will have to be
                traversed in order to find out how large it is."
        ::= { installHistoryEntry 1 }

    instHistLine OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "A line of text describing a single event in the install
                history of the router."
        ::= { installHistoryEntry 2 }

    -- The configuration file

    configFile OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..255))
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The name of the file that the router will configure from at
                boot. The format of the name is the same as that for fileName
                described above. If the configuration file name is a zero
                length string, then there is no configuration file defined in
                the router."
        ::= { install 3 }

    -- The release licence table. This table contains licences for releases of
    -- router software stored in flash.

    licenceTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF LicenceEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "The list of release licences in the router."
        ::= { install 4 }

    licenceEntry OBJECT-TYPE
        SYNTAX  LicenceEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "An entry in the list of release licences."
        INDEX   { licenceIndex }
        ::= { licenceTable 1 }

    LicenceEntry ::=
        SEQUENCE {
            licenceIndex
                INTEGER,
            licenceStatus
                INTEGER,
            licenceRelease
                DisplayString,
            licenceMajor
                INTEGER,
            licenceMinor
                INTEGER,
            licencePassword
                DisplayString,
            licenceExpiry
                DisplayString,
            licenceInterim
                INTEGER
        }

    licenceIndex OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "A unique licence index. Licence indices are recalculated every
                time the router reboots to reflect the current licences on the
                router. As licences are added, new indices are allocated to the
                new licences."
        ::= { licenceEntry 1 }

    licenceStatus OBJECT-TYPE
        SYNTAX  INTEGER {
                    ok(1),      -- file exists and is OK
                    deleting(2) -- delete the file when this value written
                }
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The status of the file. When read, this object will always
                return a value of ok(1), since the object will not exist if the
                value is deleting(2). Write the value deleting(2) to this
                object to delete the file."
        ::= { licenceEntry 2 }

    licenceRelease OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..255))
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The file name for the release whose licence this is."
        ::= { licenceEntry 3 }

    licenceMajor OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The major release number for the release whose licence this is."
        ::= { licenceEntry 4 }

    licenceMinor OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The minor release number for the release whose licence this is."
        ::= { licenceEntry 5 }

    licencePassword OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (12))
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The password for this release. The password is a string of hex
                digits."
        ::= { licenceEntry 6 }

    licenceExpiry OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "A human-readable string that gives the expiry date of this
                licence."
        ::= { licenceEntry 7 }

    licenceInterim OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The interim release number for the release whose licence this is."
        ::= { licenceEntry 8 }

    -- The create configuration file

    createConfigFile OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..255))
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The name of a file to create containing the current router configuration. A
                read from this variable will return the same as the variable configFile. Thus
                to save the current configuration in the current configuration file, read
                createConfigFile first, then write the result back to createConfigFile. If
                this variable is written with the name of an existing file, the file will be
                replaced with the current configuration."
        ::= { install 5 }

    -- configuration file exists?
    
    configFileExist OBJECT-TYPE
        SYNTAX  INTEGER {
                    true(1),
                    false(2)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "Indicates if the boot configuration file exists or not. true(1) 
                means it exists, false(2) means it doesn't"
        ::= { install 6 } 

    configFileExistTrap TRAP-TYPE
        ENTERPRISE  install
        VARIABLES   { configFileExist }
        DESCRIPTION
                    "This trap is generated when the boot file is detected as 
                    missing"
        ::= 1

    -- The current configuration file

    currentConfigFile OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The name of the file that the router is currently configured 
                with. The format of the name is the same as that for fileName
                described above. If the current configuration file name is a zero
                length string, then there is no current configuration file defined in
                the router."
       ::= { install 7 }
        

    -- ==========   TRIGGER module ==========
    -- ==========   TRIGGER module ==========
    -- ==========   TRIGGER module ==========

    -- The trigger group. This group contains information pertinent to triggers in the router.

    trigger OBJECT IDENTIFIER ::= { modules 53 }
    -- The index off the modules subtree is from modules.h.

    -- The last trigger activated on the router.
    triggerLastTriggerActivated OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The trigger number of the most recent trigger activated on this router. This is
                also the variable sent in the trigger trap below. If no triggers have been activated
                yet since the last restart of this router, this variable will read as 0."
        ::= { trigger 1 }

    triggerTrap TRAP-TYPE
        ENTERPRISE  trigger
        VARIABLES   { triggerLastTriggerActivated }
        DESCRIPTION
                    "A trigger trap is generated a trigger is activated. The number of the trigger
                    activated is given by the variable triggerLastTriggerActivated."
        ::= 1


    -- ==========   FILE module ==========
    -- ==========   FILE module ==========
    -- ==========   FILE module ==========

    -- The file group. This group contains information pertinent to the file system in the
    -- router.

    file OBJECT IDENTIFIER ::= { modules 56 }
    -- The index off the modules subtree is from modules.h.

    -- The file table

    fileTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF FileEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "A list of all the files in the router's non-volatile storage."
        ::= { file 1 }

    fileEntry OBJECT-TYPE
        SYNTAX  FileEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "An entry in the list of files containing information about a
                single file in the router."
        INDEX   { fileIndex }
        ::= { fileTable 1 }

    FileEntry ::=
        SEQUENCE {
            fileIndex
                INTEGER,
            fileName
                DisplayString,
            fileDevice
                INTEGER,
            fileCreationTime
                DisplayString,
            fileStatus
                INTEGER,
            fileSize
                INTEGER
        }

    fileIndex OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "A unique file index. File indices are recalculated every time
                the router reboots to reflect the current files on the router.
                As files are added, new indices are allocated to the new
                files."
        ::= { fileEntry 1 }

    fileName OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The name of the file, in the form <name.typ>. The name is up
                to eight characters long, the type is up to three characters
                long."
        ::= { fileEntry 2 }

    fileDevice OBJECT-TYPE
        SYNTAX  INTEGER {
                    flash(1),
                    nvs(2)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The device on which the file resides."
        ::= { fileEntry 3 }

    fileCreationTime OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The creation date and time for the file, in the format
                <dd-mmm-yy, hh:mm:ss>."
        ::= { fileEntry 4 }

    fileStatus OBJECT-TYPE
        SYNTAX  INTEGER {
                    ok(1),      -- file exists and is OK
                    deleting(2) -- delete the file when this value written
                }
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The status of the file. When read, this object will always
                return a value of ok(1), since the object will not exist if the
                value is deleting(2). Write the value deleting(2) to this
                object to delete the file."
        ::= { fileEntry 5 }

    fileSize OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The size, in bytes, of the file."
        ::= { fileEntry 6 }

    fileNumbers OBJECT-TYPE
        SYNTAX  INTEGER  
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The total number of files in FLASH and NVS."
       ::= { file 2 }


    -- ==========   PING module ==========
    -- ==========   PING module ==========
    -- ==========   PING module ==========
    -- The ping group. This consists of a static and dynamic entry of ping
    -- information.

    ping OBJECT IDENTIFIER ::= { modules 58 }
    -- The index off the modules subtree is from modules.h.

    -- The ping table. This consists of a static and dynamic entry of ping
    -- information. The static information is used when initiating a ping operation
    -- unless the dynamic information has been written with different values since
    -- the completion of the last ping.

    -- The pingStatus is used to start and stop a ping and inform as to whether a 
    -- ping is currently active.

    -- The pingStatistics are the results from a ping carried out.

    -- A trap can be generated on completion of the ping. Generation of a trap is
    -- controlled by a variable in the ping table.

    -- The router or switch implementing this group can only support one concurrent
    -- ping operation controlled by SNMP at a time. Future support may include the ability
    -- to have more than one ping controlled by SNMP at a time.

    pingTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF PingEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "The table of ping parameters, dynamic and static."
        ::= { ping 1 }

    pingEntry OBJECT-TYPE
        SYNTAX  PingEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "A single entry of ping parameters. This contains the
                parameters required to perform a ping from the router.
                The ping specified by the dynamic parameters, can be 
                initiated or stopped at any time by altering the pingStatus 
                accordingly."
        INDEX   { pingIndex }
        ::= { pingTable 1 }

    PingEntry ::=   
            SEQUENCE {
                pingIndex
                    INTEGER,
                pingProtocol
                    INTEGER,
                pingAddress
                    OCTET STRING,
                pingNumberOfPackets
                    INTEGER,
                pingPacketSize
                    INTEGER,
                pingTimeout
                    INTEGER,
                pingDelay
                    INTEGER,
                pingTrapOnCompletion
                    INTEGER, 
                pingTypeOfService
                    INTEGER, 
                pingPattern
                    INTEGER  
            }

    pingIndex OBJECT-TYPE
        SYNTAX  INTEGER {
                    static(1),
                    dynamic(2)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "There are two sets of ping information, dynamic and static.
                The dynamic information is used only once, for the next ping, then 
                automatically replaced with the static information. The static information
                is used whenever specific dynamic information is not specified. The dynamic 
                information indicates the current ping parameters when a ping is in progress.
                If static information is not specified, defaults are used.
                
                Static information can be changed at any time, but dynamic information 
                cannot be changed while a ping is in progress. A change to the static
                information when a ping is not currently active, also updates the
                dynamic information."
        ::= { pingEntry 1 }

    pingProtocol OBJECT-TYPE
        SYNTAX  INTEGER {
                    undefined(0),
                    apple(1),
                    ip(2),
                    ipx(3),
                    osi(4)
                }
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The protocol that the ping will use. The protocol must
                match the destination address. Ping supports both IP, IPX, 
                Appletalk, and OSI addresses. The protocol must be specified 
                before the address is set, because when the protocol is changed,
                address is reset to undefined. The default value for this
                variable is undefined(0)."
        ::= { pingEntry 2 }

    pingAddress OBJECT-TYPE
        SYNTAX  OCTET STRING
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The address specifies the destination address for ping
                packets for Appletalk, IP, IPX and OSI networks, respectively.
                The address format must match the protocol being used. The
                protocol must be specified before the address is set, because 
                changing the protocol resets the address to undefined. 
                The default value for this variable is an undefined address which 
                is coded as a zero length octet string."
        ::= { pingEntry 3 }

    pingNumberOfPackets OBJECT-TYPE
        SYNTAX  INTEGER 
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The number of ping packets to transmit."
        ::= { pingEntry 4 }

    pingPacketSize OBJECT-TYPE
        SYNTAX  INTEGER (0..1500)
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The packet size parameter specifies the length in bytes, of data 
                to include in the data portion of the ping packet. The protocol
                packet header size and the size of headers for the particular link
                protocol in use have to be added to the packet size to get the
                total size of the ping packet. The maximum pingPacketSize can be
                set to is 1500."
        ::= { pingEntry 5 }
         
     pingTimeout OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "Timeout specifies the amount of time to wait for a response to a 
                ping packet. Timeout must be greater than zero."
        ::= { pingEntry 6 }


    pingDelay OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The delay parameter specifies the time interval, in seconds, between 
                ping packets."
        ::= { pingEntry 7 }


    pingTrapOnCompletion OBJECT-TYPE
        SYNTAX  INTEGER {
                    true(1),
                    false(2)
                }
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "Specifies whether a trap should be issued on completion of the sequence 
                of pings."
        ::= { pingEntry 8 }
     
    pingTypeOfService OBJECT-TYPE
        SYNTAX  INTEGER (0..255) 
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The Type Of Service (TOS) parameter is only valid for IP addresses, 
                and specifies the TOS field in the IP header of the ping packet, as a decimal 
                in the range 0 to 255."
        ::= { pingEntry 9 }       
        
    pingPattern OBJECT-TYPE
        SYNTAX  INTEGER 
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The pattern parameter specifies the data pattern to use in the 
                data portion of the ping packet."
        ::= { pingEntry 10 }  

             
    -- The ping status value. This is used to start and stop a ping, report on the 
    -- status of the ping (running or stopped).

    pingStatus OBJECT-TYPE
        SYNTAX  INTEGER {
                    start-running(1),    -- If status is '2' (stopped), set to '1' to start
                    stop-stopped(2)      -- If status is '1' (running), set to '2' to stop 
                }
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "Status and action object for the ping module. A status of '1' indicates that
                the ping is currently running, the status can be set to '2' to stop 
                the ping.  A status of '2' indicates that the ping is currently stopped,
                the pingStatus can be set to '1' to start the ping.
                
                The parameters for the ping can be altered in the pingTable.                
                The destination ping address and protocol have defaults of undefined and 
                must be specified before a ping can be started. 
                The ping statistics are reset to defaults when a ping is started, and 
                updated when the ping stops. 
                
                Dynamic pingTable information is used only once, for the next ping.
                Static pingTable information is used for all pings by default, 
                whenever the respective dynamic settings are not specified."
        ::= { ping 2  }
    
    -- This contains the statistic results from a ping.
    
    pingStatistics OBJECT IDENTIFIER ::= { ping 3 }    
    
    pingSentPackets OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of ping packets sent to the target in the last ping.  The 
                default before the completion of a ping is zero."
        ::= { pingStatistics 1 }


    pingReceivedPackets OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of packets received from the target in the last ping.  The 
                default before the completion of a ping is zero."
        ::= { pingStatistics 2 }


    pingMinimumRoundTripTime OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The quickest round trip time taken by any of the ping packets 
                in milliseconds in the last ping.  The default before the 
                completion of a ping is negative one."
        ::= { pingStatistics 3 }


    pingAverageRoundTripTime OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The average round trip time taken by the ping packets in 
                milliseconds in the last ping.  The default before the completion 
                of a ping is zero."
        ::= { pingStatistics 4 }
               
               
    pingMaximumRoundTripTime OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The slowest round trip time taken by any of the ping packets in 
                milliseconds in the last ping.  The default before the completion 
                of a ping is zero."
        ::= { pingStatistics 5 }

    -- ping TRAPs.

    pingTrap TRAP-TYPE
        ENTERPRISE  ping
        DESCRIPTION
                    "A ping trap is generated when a ping has completed. Traps
                    are only generated if the variable pingTrapOnCompletion is
                    set to true(1) in the dynamic ping entry. A trap is still
                    generated if the ping is stopped prematurely by setting the
                    variable pingStatus to stop/stopped(2)."
        ::= 1



    -- ==========   DHCP module   ==========
    -- ==========   DHCP module   ==========
    -- ==========   DHCP module   ==========
    -- The DHCP (Dynamic Host Configuration Protocol) module. This group provides
    -- management information for DHCP, which will be implemented in a number of
    -- stages.

    dhcp OBJECT IDENTIFIER ::= { modules 70 }
    -- The index off the modules subtree is from modules.h.

    -- The DHCP range table. Each entry in the table gives information about a
    -- single DHCP range currently configured in the switch/router.

    dhcpRangeTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF DhcpRangeEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "The table of DHCP ranges."
        ::= { dhcp 1 }

    dhcpRangeEntry OBJECT-TYPE
        SYNTAX  DhcpRangeEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "A single entry of the DHCP range table. This contains
                information about a single DHCP range configured on this
                device."
        INDEX   { dhcpRangeIndex }
        ::= { dhcpRangeTable 1 }

    DhcpRangeEntry ::=
            SEQUENCE {
                dhcpRangeIndex
                    INTEGER,
                dhcpRangeName
                    DisplayString,
                dhcpRangeBaseAddress
                    IpAddress,
                dhcpRangeNumberOfAddresses
                    INTEGER,
                dhcpRangeGateway
                    IpAddress
            }

    dhcpRangeIndex OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The index of this DHCP range. DHCP ranges are stored in a list
                which is ordered by range name. The index gives the place in the
                list. Note that if ranges are added or deleted, the index for a
                given range will change. Since this table is read-only, this will
                not have an undue effect, but if in future this table is made
                read-write, a mechanism will have to be created to lock the indices
                of the range table while SET operations are proceeding."
        ::= { dhcpRangeEntry 1 }

    dhcpRangeName OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (1..15))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The name given to identify this DHCP range. This is the ultimate
                method for uniquely identifying this range. Names are compared without
                regard to case, for example >range1< will be treated as the same as
                >RANGE1<."
        ::= { dhcpRangeEntry 2 }

    dhcpRangeBaseAddress OBJECT-TYPE
        SYNTAX  IpAddress
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The base address of this range. This address defines the lower bound
                of the range of IP addresses which can be allocated to devices
                requesting an IP address via DHCP."
        ::= { dhcpRangeEntry 3 }

    dhcpRangeNumberOfAddresses OBJECT-TYPE
        SYNTAX  INTEGER (1..256)
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of IP address in this range. This number defines the upper
                bound of the range of IP addresses which can be allocated to devices
                requesting an IP address via DHCP."
        ::= { dhcpRangeEntry 4 }

    dhcpRangeGateway OBJECT-TYPE
        SYNTAX  IpAddress
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The IP address of the BOOTP relay agent which will be relaying DHCP
                requests for this range. If this address is 0.0.0.0, then there will
                be no BOOTP relay agent and the range will be allocated to devices
                directly connected to this device."
        ::= { dhcpRangeEntry 5 }

    -- DHCP traps.

    -- DHCP trap variables. special variables set up to act as reference points for
    -- variables sent in TRAPs.

    dhcpTrapVariable OBJECT IDENTIFIER ::= { dhcp 2 }

    dhcpRangeExhaustedGateway OBJECT-TYPE
        SYNTAX  IpAddress
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "Whenever a DHCP client attempts to lease an IP address and
                the DHCP server cannot provide an address, this variable is
                set to the gateway address of the DHCP request. The gateway
                address is the IP address of the gateway acting as a BOOTP
                relay agent for the request. If there is no gateway, the
                address will be 0.0.0.0. If the gateway address is non-zero,
                the DHCP range from which the allocation should have been
                made will able to be identified by lookup in the DHCP range
                table."
        ::= { dhcpTrapVariable 1 }

    dhcpRangeExhaustedInterface OBJECT-TYPE
        SYNTAX  IpAddress
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "Whenever a DHCP client attempts to lease an IP address and
                the DHCP server cannot provide an address, this variable is
                set to the IP address of the interface which received the
                DHCP request. If the gateway address associated with the
                failed DHCP request is 0.0.0.0, the interface address will
                be able to be used to lookup the range that was exhausted
                and from which the allocation should have been made."
        ::= { dhcpTrapVariable 2 }


    dhcpRangeExhaustedTrap TRAP-TYPE
        ENTERPRISE  dhcp
        VARIABLES   { dhcpRangeExhaustedGateway, dhcpRangeExhaustedInterface }
        DESCRIPTION
                    "This trap is generated when a DHCP client makes a request for
                    an IP address and the request cannot be satisfied because all
                    addresses in the range are already allocated to other devices."
        ::= 1


    -- The DHCP client status table. Each entry in the table gives information about 
    -- ip addresses currently configured on created ranges on the switch/router.
	-- Information shown are the client ip address, clientID, ClientState, ClientType,
	-- ClientExpiry

    dhcpClientTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF DhcpClientEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "The table of defined DHCP range client addresses."
        ::= { dhcp 3 }

    dhcpClientEntry OBJECT-TYPE
        SYNTAX  DhcpClientEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "A single entry of the DHCP range client table. This contains
                information about a single DHCP range client address."
        INDEX   { dhcpRangeIndex, dhcpClientIpAddress }
        ::= { dhcpClientTable 1 }

    DhcpClientEntry ::=
            SEQUENCE {
                dhcpClientIpAddress
                    IpAddress,
                dhcpClientID
                    OCTET STRING,
                dhcpClientState
                    INTEGER,
                dhcpClientType
                    INTEGER,
                dhcpClientExpiry
                    OCTET STRING
            }

    dhcpClientIpAddress OBJECT-TYPE
        SYNTAX  IpAddress
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "An IP address from the range of available addresses."
        ::= { dhcpClientEntry 1 }

    dhcpClientID OBJECT-TYPE
        SYNTAX  OCTET STRING
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The hardware address of the client, if any, that has been
                assigned the IP address."
        ::= { dhcpClientEntry 2 }

    dhcpClientState OBJECT-TYPE
        SYNTAX  INTEGER {unused (0), reclaiming (1), inuse (2), offered (3) }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The state of the IP address; one of unused, inuse or 
                reclaim."
        ::= { dhcpClientEntry 3 }

    dhcpClientType OBJECT-TYPE
        SYNTAX  INTEGER {auto (1), dyn (2), static (3) }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The type of allocation mechanism applied to the IP address; 
                one of static, auto or dyn."
        ::= { dhcpClientEntry 4 }

    dhcpClientExpiry OBJECT-TYPE
        SYNTAX  OCTET STRING
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The expiry date for dynamically allocated IP address."
        ::= { dhcpClientEntry 5 }



    -- ==========   FIREWALL module ==========
    -- ==========   FIREWALL module ==========
    -- ==========   FIREWALL module ==========
    -- The firewall group. This consists of a single variable which is the last
    -- TRAP message sent.

    firewall OBJECT IDENTIFIER ::= { modules 77 }
    -- The index off the modules subtree is from modules.h.

    -- The last TRAP message sent from the firewall.
    firewallTrapMessage OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The last message sent in a firewall TRAP. This variable is really
                just a placeholder for the object sent in the firewall TRAP, but can
                be read independently if required. Note however that a new TRAP will
                cause this variable to be overwritten."
        ::= { firewall 1 }

    firewallTrap TRAP-TYPE
        ENTERPRISE  firewall
        VARIABLES   { firewallTrapMessage }
        DESCRIPTION
                    "A firewall trap is generated when the firewall detects an intrusion or attack
                    and notifies the router manager. Firewall trap notifications are enabled with
                    the command ENABLE FIREWALL NOTIFY=SNMP."
        ::= 1

    -- ==========   SWITCH module ==========
    -- ==========   SWITCH module ==========
    -- ==========   SWITCH module ==========
    -- The switch group.

    swi OBJECT IDENTIFIER ::= { modules 87 }
    -- The index off the modules subtree is from modules.h.
    -- The branch is named 'swi' because it is the common internal module name, 
    -- also to reduce the chance of naming conflicts with other MIB objects.
    
    swiPortTable  OBJECT-TYPE
       SYNTAX    SEQUENCE OF SwiPortEntry
       ACCESS    not-accessible
       STATUS    mandatory
       DESCRIPTION
               "Table of port properties."
       ::= { swi 1 }

    swiPortEntry  OBJECT-TYPE
       SYNTAX    SwiPortEntry
       ACCESS    not-accessible
       STATUS    mandatory
       DESCRIPTION
               "An entry in the port information table."
       INDEX   { swiPortNumber }
       ::= { swiPortTable 1 }

    SwiPortEntry  ::=
       SEQUENCE {
            swiPortNumber
               INTEGER,
            swiPortIngressLimit
               INTEGER,
            swiPortEgressLimit
               INTEGER
       }

    swiPortNumber OBJECT-TYPE
       SYNTAX    INTEGER
       ACCESS    read-only
       STATUS    mandatory
       DESCRIPTION
                 "This object identifies the port of the switch."
       ::= { swiPortEntry 1 }


    swiPortIngressLimit OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The Ingress Bandwidth Limit applied to the port. A value of
                zero indicates that no limit is set."
        ::= { swiPortEntry 20 }

    swiPortEgressLimit OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
                "The Egress Bandwidth Limit applied to the port. A value of
                zero indicates that no limit is set."
        ::= { swiPortEntry 21 }                        


    -- The following table lists the various switch port counters for the
	-- swi56xx based products.

    swi56xxPortCounterTable  OBJECT-TYPE
       SYNTAX    SEQUENCE OF Swi56xxPortCounterEntry
       ACCESS    not-accessible
       STATUS    mandatory
       DESCRIPTION
               "Table of swi56xx port counter properties."
       ::= { swi 2 }

    swi56xxPortCounterEntry  OBJECT-TYPE
       SYNTAX    Swi56xxPortCounterEntry
       ACCESS    not-accessible
       STATUS    mandatory
       DESCRIPTION
               "An entry in the port information table."
       INDEX   { swi56xxPortNumber }
       ::= { swi56xxPortCounterTable 1 }

    Swi56xxPortCounterEntry  ::=
       SEQUENCE {
            swi56xxPortNumber
               INTEGER,
			swi56xxRxTx64kPkts
               Counter, 
		    swi56xxRxTx65To127kPkts 
               Counter, 
		    swi56xxRxTx128To255kPkts
               Counter, 
		    swi56xxRxTx256To511kPkts
               Counter, 
		    swi56xxRxTx512To1023kPkts
               Counter, 
		    swi56xxRxTx1024ToMaxPktSzPkts
               Counter, 
		    swi56xxRxTx519To1522kPkts 
               Counter, 
            swi56xxPortRxOctets
               Counter, 
            swi56xxPortRxPkts
               Counter,
            swi56xxPortRxFCSErrors
               Counter, 
            swi56xxPortRxMulticastPkts
               Counter,                
            swi56xxPortRxBroadcastPkts
               Counter, 
            swi56xxPortRxPauseMACCtlFrms
               Counter,
            swi56xxPortRxOversizePkts
               Counter, 
            swi56xxPortRxFragments
               Counter,
            swi56xxPortRxJabbers
               Counter,                
            swi56xxPortRxMACControlFrms
               Counter, 
            swi56xxPortRxUnsupportOpcode
               Counter,
            swi56xxPortRxAlignmentErrors
               Counter,                                              
            swi56xxPortRxOutOfRngeLenFld
               Counter,
            swi56xxPortRxSymErDurCarrier
               Counter, 
            swi56xxPortRxCarrierSenseErr
               Counter,
            swi56xxPortRxUndersizePkts
               Counter, 
            swi56xxPortRxIpInHdrErrors 
               Counter,            
            swi56xxPortTxOctets
               Counter, 
            swi56xxPortTxPkts
               Counter,
            swi56xxPortTxFCSErrors
               Counter, 
            swi56xxPortTxMulticastPkts
               Counter,                
            swi56xxPortTxBroadcastPkts
               Counter, 
            swi56xxPortTxPauseMACCtlFrms
               Counter,
            swi56xxPortTxOversizePkts
               Counter, 
            swi56xxPortTxFragments
               Counter,
            swi56xxPortTxJabbers
               Counter,
            swi56xxPortTxPauseCtrlFrms
               Counter, 
            swi56xxPortTxFrameWDeferrdTx
               Counter, 
            swi56xxPortTxFrmWExcesDefer
               Counter, 
            swi56xxPortTxSingleCollsnFrm
               Counter, 
            swi56xxPortTxMultCollsnFrm
               Counter, 
            swi56xxPortTxLateCollsns
               Counter, 
            swi56xxPortTxExcessivCollsns
               Counter, 
            swi56xxPortTxCollisionFrames
               Counter, 
            swi56xxPortMiscDropEvents
               Counter,                                                                                                                                          
            swi56xxPortMiscTaggedPktTx
               Counter,
            swi56xxPortMiscTotalPktTxAbort
               Counter,
            swi56xxPortHWMultiTTLexpired
               Counter,
            swi56xxPortHWMultiBridgedFrames
               Counter,
            swi56xxPortHWMultiRxDrops
               Counter,
            swi56xxPortHWMultiTxDrops
               Counter                                                                
       }

    swi56xxPortNumber OBJECT-TYPE
       SYNTAX    INTEGER
       ACCESS    read-only
       STATUS    mandatory
       DESCRIPTION
                 "This object identifies the port of the switch."
       ::= { swi56xxPortCounterEntry 1 }

    swi56xxRxTx64kPkts OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of 64kB packets received and transmitted."
        ::= { swi56xxPortCounterEntry 2 }

    swi56xxRxTx65To127kPkts OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of 65kB To 127kB packets received and transmitted."
        ::= { swi56xxPortCounterEntry 3 }

    swi56xxRxTx128To255kPkts OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of 128kB To 255kB packets received and transmitted."
        ::= { swi56xxPortCounterEntry 4 }

    swi56xxRxTx256To511kPkts OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of 256kB To 511kB packets received and transmitted."
        ::= { swi56xxPortCounterEntry 5 }

    swi56xxRxTx512To1023kPkts OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of 512kB To 1023kB packets received and transmitted."
        ::= { swi56xxPortCounterEntry 6 }

    swi56xxRxTx1024ToMaxPktSzPkts OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of 1024kB To MaxPktSz packets received and transmitted."
        ::= { swi56xxPortCounterEntry 7 }

    swi56xxRxTx519To1522kPkts OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of 519kB To 1522kB packets received and transmitted."
        ::= { swi56xxPortCounterEntry 8 }

    swi56xxPortRxOctets OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of octets received."
        ::= { swi56xxPortCounterEntry 9 }

    swi56xxPortRxPkts OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of packets received."
        ::= { swi56xxPortCounterEntry 10 }

    swi56xxPortRxFCSErrors OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of frames received containing a Frame Check Sequence
                 error."
        ::= { swi56xxPortCounterEntry 11 }

    swi56xxPortRxMulticastPkts OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of multicast packets received."
        ::= { swi56xxPortCounterEntry 12 }

    swi56xxPortRxBroadcastPkts OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of broadcast packets received."
        ::= { swi56xxPortCounterEntry 13 }

    swi56xxPortRxPauseMACCtlFrms OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of valid PAUSE MAC Control frames received."
        ::= { swi56xxPortCounterEntry 14 }

    swi56xxPortRxOversizePkts OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of oversize packets received."
        ::= { swi56xxPortCounterEntry 15 }

    swi56xxPortRxFragments OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of fragments received."
        ::= { swi56xxPortCounterEntry 16 }

    swi56xxPortRxJabbers OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of jabber frames received."
        ::= { swi56xxPortCounterEntry 17 }

    swi56xxPortRxMACControlFrms OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of MAC Control frames (Pause and
                 Unsupported) received."
        ::= { swi56xxPortCounterEntry 18 }

    swi56xxPortRxUnsupportOpcode OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of MAC Control frames with unsupported
                 opcode (i.e. not Pause) received."
        ::= { swi56xxPortCounterEntry 19 }

    swi56xxPortRxAlignmentErrors OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of frames with alignment errors received."
        ::= { swi56xxPortCounterEntry 20 }

    swi56xxPortRxOutOfRngeLenFld OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of packets with length out of range received."
        ::= { swi56xxPortCounterEntry 21 }

    swi56xxPortRxSymErDurCarrier OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of frames with invalid data symbols received."
        ::= { swi56xxPortCounterEntry 22 }

    swi56xxPortRxCarrierSenseErr OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of false carrier conditions between frames received."
        ::= { swi56xxPortCounterEntry 23 }

    swi56xxPortRxUndersizePkts OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of undersized packets received."
        ::= { swi56xxPortCounterEntry 24 }

    swi56xxPortRxIpInHdrErrors OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "swiPortRxIpInHdrErrors"
        ::= { swi56xxPortCounterEntry 25 }

    swi56xxPortTxOctets OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of octets transmitted."
        ::= { swi56xxPortCounterEntry 26 }

    swi56xxPortTxPkts OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of packets transmitted."
        ::= { swi56xxPortCounterEntry 27 }

    swi56xxPortTxFCSErrors OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of frames containing a Frame Check Sequence
                 error transmitted."
        ::= { swi56xxPortCounterEntry 28 }

    swi56xxPortTxMulticastPkts OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of multicast packets transmitted."
        ::= { swi56xxPortCounterEntry 29 }

    swi56xxPortTxBroadcastPkts OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of broadcast packets transmitted."
        ::= { swi56xxPortCounterEntry 30 }

    swi56xxPortTxPauseMACCtlFrms OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of valid PAUSE MAC Control frames transmitted."
        ::= { swi56xxPortCounterEntry 31 }
        
    swi56xxPortTxOversizePkts OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of oversize packets transmitted."
        ::= { swi56xxPortCounterEntry 32 }
               
    swi56xxPortTxFragments OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of fragments transmitted."
        ::= { swi56xxPortCounterEntry 33 }
        
    swi56xxPortTxJabbers OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of jabber frames transmitted."
        ::= { swi56xxPortCounterEntry 34 }
        
    swi56xxPortTxPauseCtrlFrms OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of Pause control frames transmitted."
        ::= { swi56xxPortCounterEntry 35 }                                                              

    swi56xxPortTxFrameWDeferrdTx OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of frames deferred once before successful
                 transmission."
        ::= { swi56xxPortCounterEntry 36 }
        
    swi56xxPortTxFrmWExcesDefer OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of frame aborted after too many deferrals."
        ::= { swi56xxPortCounterEntry 37 }

    swi56xxPortTxSingleCollsnFrm OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of frames which experienced exactly one
                 collision."
        ::= { swi56xxPortCounterEntry 38 }

    swi56xxPortTxMultCollsnFrm OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of frames which experienced 2 to 15 collisions
                 (including late collisions)."
        ::= { swi56xxPortCounterEntry 39 }

    swi56xxPortTxLateCollsns OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of frames which experienced late collisions."
        ::= { swi56xxPortCounterEntry 40 }

    swi56xxPortTxExcessivCollsns OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of frames aborted before transmission after 16
                 collisions."
        ::= { swi56xxPortCounterEntry 41 }

    swi56xxPortTxCollisionFrames OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The total number of collisions."
        ::= { swi56xxPortCounterEntry 42 }

    swi56xxPortMiscDropEvents OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of packets discarded at ingress port."
        ::= { swi56xxPortCounterEntry 43 }

    swi56xxPortMiscTaggedPktTx OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of VLAN tagged packets transmitted."
        ::= { swi56xxPortCounterEntry 44 }

    swi56xxPortMiscTotalPktTxAbort OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The number of Layer 2 and 3 packets aborted during
                 transmission."
        ::= { swi56xxPortCounterEntry 45 }

    swi56xxPortHWMultiTTLexpired OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "Number of multicast TTL expired frames."
        ::= { swi56xxPortCounterEntry 46 }

    swi56xxPortHWMultiBridgedFrames OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "Number of multicast bridged frames"
        ::= { swi56xxPortCounterEntry 47 }

    swi56xxPortHWMultiRxDrops OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "Number of multicast frames dropped at reception"
        ::= { swi56xxPortCounterEntry 48 }
        
    swi56xxPortHWMultiTxDrops OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "NNumber of multicast frames dropped at transmission"
        ::= { swi56xxPortCounterEntry 49 }
        

    -- A MIB group set up to contain odds and ends of debugging variables in the SWI module.

    swiDebugVariables OBJECT IDENTIFIER ::= { swi 3 }

    swiDebugMemoryParityErrors OBJECT-TYPE
        SYNTAX  Counter
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "For switches based on certain switch chips, the number of parity errors
                that have been detected in packet memory associated with the switch. If the
                device does not include the counting of memory parity errors, this variable
                will return 0."
        ::= { swiDebugVariables 1 }

    swiIntrusionDetectionTrap TRAP-TYPE
        ENTERPRISE  swi
        VARIABLES   { ifIndex }
        DESCRIPTION
                    "An intrusion detection trap is generated when a port has intrusion
                    detection enabled, and the action taken when intrusion is detected is
                    to generate a trap. Intrusion is detected when the number of MAC
                    addresses learned on the port exceeds the configured learn limit.
                    The ifIndex of the port is included in the trap."
        ::= 6


    -- ==========   LB module ==========
    -- ==========   LB module ==========
    -- ==========   LB module ==========

    -- The loadbal group. This group contains the current configuration and status 
    -- of the routers' load balancing operation.
	-- The variables in this sub-tree are only valid in releases which support
	-- load balancing.

    lb OBJECT IDENTIFIER ::= { modules 104 }
    -- The index off the modules subtree is from modules.h.
    
    -- lbShowGlobalTable 
    lbShowGlobalTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF LbShowGlobalEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "General configuration and status of all of the virtual balancers 
                 configured on the router."
    	::= { lb 1 }
         
    lbShowGlobalEntry OBJECT-TYPE
        SYNTAX  LbShowGlobalEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "An entry in the global table."
        INDEX   { lbGlobalIndex }
        ::= { lbShowGlobalTable 1 }
        
    LbShowGlobalEntry ::=
        SEQUENCE {
            lbGlobalIndex
            	INTEGER,
            lbAffinityTimeOut
            	INTEGER,
            lbOrphanTimeOut
            	INTEGER,
            lbCriticalRst
            	INTEGER,
            lbTotalResources
            	INTEGER,
            lbTotalResPools
            	INTEGER,
            lbTotalVirtBals
            	INTEGER,
            lbCurrentConnections
            	INTEGER
        }     
     
    lbGlobalIndex OBJECT-TYPE
        SYNTAX  INTEGER 
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The index for the global table."
        ::= { lbShowGlobalEntry 1 } 
         
    lbAffinityTimeOut OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The length of time in seconds that a resource can be associated to a source
                 IP address or Cookie after the connection has been closed."
        ::= { lbShowGlobalEntry 2 }
        
    lbOrphanTimeOut OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The length of time in seconds that a connection can exist without having any
                 data traversing it, before being declared an orphan and closed by the router."
        ::= { lbShowGlobalEntry 3 }
        
    lbCriticalRst OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The ratio of total messages received from a resource that can be TCP RST 
                 messages represented as a percentage."
        ::= { lbShowGlobalEntry 4 }
        
    lbTotalResources OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The total number of resources configured on the router."
        ::= { lbShowGlobalEntry 5 }
        
    lbTotalResPools OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The total number of resource pools configured on the router."
        ::= { lbShowGlobalEntry 6 }
        
    lbTotalVirtBals OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The total number of virtual balancers configured on the router."
        ::= { lbShowGlobalEntry 7 } 
        
    lbCurrentConnections OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "Displays the current total number of connections to all resources in 
                 every resource pool on the router."
        ::= { lbShowGlobalEntry 8 }
    
                                
	-- The lbShowRes table
    lbShowResTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF LbShowResEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "A list about the general information about for a given resource."
        ::= { lb 2 }

    lbShowResEntry OBJECT-TYPE
        SYNTAX  LbShowResEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "An entry in the resource table."
        INDEX   { lbResIndex }
        ::= { lbShowResTable 1 }
        
    LbShowResEntry ::=
        SEQUENCE {
            lbResIndex
            	INTEGER,
            lbResource
            	DisplayString,
            lbResIp
            	IpAddress,
            lbResPort
            	INTEGER,
            lbResState
               	DisplayString,
            lbResWeight
            	INTEGER,
            lbResTotalConnections
            	INTEGER,    
            lbResCurrentConnections
            	INTEGER
        }

    lbResIndex OBJECT-TYPE
        SYNTAX  INTEGER 
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The index for the resource table."
        ::= { lbShowResEntry 1 }

	lbResource OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The name of the resource."
        ::= { lbShowResEntry 2 } 
        
    lbResIp OBJECT-TYPE
        SYNTAX  IpAddress
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The IP address that a virtual balancer uses to accesses the resource."
        ::= { lbShowResEntry 3 }

	lbResPort OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The port that the service that the resource offer is accessed on."
        ::= { lbShowResEntry 4 }  
        
    lbResState OBJECT-TYPE
        SYNTAX  DisplayString  (SIZE (0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The current state of the resource, either UP, DOWN, or CLOSING."
        ::= { lbShowResEntry 5 }                                
    
    lbResWeight OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The weight that the virtual balancer will apply to the resource when selecting 
                 resources to try a connection to from a resource pool using either the 
                 WEIGHTEDLEASTCONNECT or WEIGHTEDLOTTERY selection algorithms."
        ::= { lbShowResEntry 6 }  
        
    lbResTotalConnections OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The total number of successful connections that have been made to 
                 this resource while it has been in the UP state."
        ::= { lbShowResEntry 7 }  
        
    lbResCurrentConnections OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The total number of connections currently made to the resource."
        ::= { lbShowResEntry 8 }  
        
    -- The lbShowResPool table
    lbShowResPoolTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF LbShowResPoolEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "A list about the general information about for a given 
                 resource pool."
        ::= { lb 3 }

    lbShowResPoolEntry OBJECT-TYPE
        SYNTAX  LbShowResPoolEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "An entry in the resource pool table."
        INDEX   { lbResPoolIndex, lbResPoolResourceIndex }
        ::= { lbShowResPoolTable 1 }
        
    LbShowResPoolEntry ::=
        SEQUENCE {
            lbResPoolIndex
            	INTEGER,
            lbResPoolResourceIndex
            	INTEGER,
            lbResPool
            	DisplayString,
            lbResPoolSelectionAlg
            	DisplayString,
            lbResPoolFailOnLast
            	DisplayString,
            lbResPoolTotalConnections
               	DisplayString,
            lbResPoolResources
            	DisplayString        
        }

    lbResPoolIndex OBJECT-TYPE
        SYNTAX  INTEGER 
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The index for the resource pool table."
        ::= { lbShowResPoolEntry 1 }
                             
	lbResPoolResourceIndex OBJECT-TYPE
    	SYNTAX  INTEGER 
    	ACCESS  read-only
    	STATUS  mandatory
    	DESCRIPTION
            	"The index for the resource table."
    	::= { lbShowResPoolEntry 2 }                                    
                             
	lbResPool OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The name of the resource pool."
        ::= { lbShowResPoolEntry 3 } 
        
    lbResPoolSelectionAlg OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The selection algorithm that ius employed by this resource pool when 
                 a resource has been selected for a connection. The options are ROUNDROBIN,
                 WEIGHTEDLEASTCONNECT, WEIGHTEDLOTTERY and FASTESTRESPONSE."
        ::= { lbShowResPoolEntry 4 }

	lbResPoolFailOnLast OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "Indicates whether or not the resource pool will fail a resource if it is 
                 the last resource in the resource pool."
        ::= { lbShowResPoolEntry 5 }  
        
    lbResPoolTotalConnections OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..255))  
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The total number of successful connections that have been made to the 
                 resources in the resource pool over the lifetime of the resource pool."
        ::= { lbShowResPoolEntry 6 } 
        
    lbResPoolResources OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The name of the resource that is currently allocated 
                 to the resource pool."
        ::= { lbShowResPoolEntry 7 }                                 
   
    -- The lbShowVirtBal table
    lbShowVirtBalTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF LbShowVirtBalEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "A list about the general information about for a given 
                 virtual balancer."
        ::= { lb 4 }

    lbShowVirtBalEntry OBJECT-TYPE
        SYNTAX  LbShowVirtBalEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "An entry in the virtual balancer table."
        INDEX   { lbVirtBalIndex }
        ::= { lbShowVirtBalTable 1 }
        
    LbShowVirtBalEntry ::=
        SEQUENCE {
            lbVirtBalIndex
            	INTEGER,
            lbVirtBal
            	DisplayString,
            lbVirtBalPublicIp
            	IpAddress,
            lbVirtBalPublicPort
            	INTEGER,      
            lbVirtBalState
            	DisplayString,
            lbVirtBalResPool
            	DisplayString,            	
            lbVirtBalType
            	DisplayString,
            lbVirtBalTotalConnections
               	INTEGER,
            lbVirtBalAffinity
            	DisplayString,            
            lbVirtBalHttpErrorCode
            	DisplayString
        }

    lbVirtBalIndex OBJECT-TYPE
        SYNTAX  INTEGER 
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The index for the virtual balancer table."
        ::= { lbShowVirtBalEntry 1 }

	lbVirtBal OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The name of the virtual balancer."
        ::= { lbShowVirtBalEntry 2 } 
        
    lbVirtBalPublicIp OBJECT-TYPE
        SYNTAX  IpAddress
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The IP address on which the virtual balancer will receive requests for 
                 the service provided by the resource pool associated with it."
        ::= { lbShowVirtBalEntry 3 }

	lbVirtBalPublicPort OBJECT-TYPE
        SYNTAX  INTEGER  
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The port on which the virtual balancer will receive requests for 
                 the service provided by the resource pool associated with it."
        ::= { lbShowVirtBalEntry 4 }
        
	lbVirtBalState OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The current state of the virtual balancer, can either be UP, 
                 CLOSING, or DOWN."
        ::= { lbShowVirtBalEntry 5 }
    
    lbVirtBalResPool OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The name of the resource pool that is associated with the 
                 virtual balancer."
        ::= { lbShowVirtBalEntry 6 }
    
    lbVirtBalType OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The type of load balancer that this virtual balancer currently is, 
                 can be either TCP, HTTP, or ROUTE."
        ::= { lbShowVirtBalEntry 7 }
        
    lbVirtBalTotalConnections OBJECT-TYPE
        SYNTAX  INTEGER  
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The total number of stateful connections currently running through
                 this virtual balancer."
        ::= { lbShowVirtBalEntry 8 }                                
        
    lbVirtBalAffinity OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "Indicates whether or not entries will be made in a virtual balancers'
                 affinity table for each stateful connection to a resource in its' resource 
                 pool (TCP and ROUTE type) or for cookies received from clients (HTTP type)."
        ::= { lbShowVirtBalEntry 9 }
        
    lbVirtBalHttpErrorCode OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "A list of the HTTP server error status code added."
        ::= { lbShowVirtBalEntry 10 }
        
    -- The lbShowAff table
    lbShowAffTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF LbShowAffEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "A list of affinity tables for all configured virtual balancers on the router."
        ::= { lb 5 }

    lbShowAffEntry OBJECT-TYPE
        SYNTAX  LbShowAffEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "An entry in the affinity table."
        INDEX   { lbAffIndex }
        ::= { lbShowAffTable 1 } 
        
    LbShowAffEntry ::=
        SEQUENCE {
            lbAffIndex
            	INTEGER,
            lbAffVirtBal
            	DisplayString,
            lbAffClientIp
            	IpAddress,
            lbAffCookie
            	DisplayString,
            lbAffResource
            	DisplayString,
            lbAffExpiry
            	INTEGER
        }

    lbAffIndex OBJECT-TYPE
        SYNTAX  INTEGER 
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The index for the affinity table."
        ::= { lbShowAffEntry 1 }

	lbAffVirtBal OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The name of the virtual balancer whose affinity table is being displayed."
        ::= { lbShowAffEntry 2 } 
        
    lbAffClientIp OBJECT-TYPE
        SYNTAX  IpAddress
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The IP address that has affinity to the given resource."
        ::= { lbShowAffEntry 3 }

	lbAffCookie OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The cookie that has affinity to the given resource."
        ::= { lbShowAffEntry 4 }  
        
    lbAffResource OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The name of the resource that the Client IP/Cookie has an affinity for."
        ::= { lbShowAffEntry 5 }

	lbAffExpiry OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The amount of seconds left before this entry expires, and is removed 
                 from the affinity table."
        ::= { lbShowAffEntry 6 } 
        
	-- The lbShowCon table
    lbShowConTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF LbShowConEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "A list about all of the TCP connections currently open to a given virtual balancer."
        ::= { lb 6 }

    lbShowConEntry OBJECT-TYPE
        SYNTAX  LbShowConEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "An entry in the connections table."
        INDEX   { lbConIndex }
        ::= { lbShowConTable 1 }
        
    LbShowConEntry ::=
        SEQUENCE {
            lbConIndex
            	INTEGER,
            lbConVirtBal
            	DisplayString,
            lbConClientIp
            	IpAddress,
            lbConPort
               	INTEGER,
            lbConResource
            	DisplayString
        }

    lbConIndex OBJECT-TYPE
        SYNTAX  INTEGER 
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The index for the connections table."
        ::= { lbShowConEntry 1 }

	lbConVirtBal OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The name of the virtual balancer the listed connections are to."
        ::= { lbShowConEntry 2 } 
        
    lbConClientIp OBJECT-TYPE
        SYNTAX  IpAddress
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The IP address of that originated the connection."
        ::= { lbShowConEntry 3 }

	lbConPort OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The port on the originating system that represents the other end of the connection."
        ::= { lbShowConEntry 4 }  
        
    lbConResource OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..255))
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "The name of the resource that the connection has been made to."
        ::= { lbShowConEntry 5 }
        
    -- ==========   DS3 module ==========
    -- ==========   DS3 module ==========
    -- ==========   DS3 module ==========
    -- The DS3 group.

    ds3module OBJECT IDENTIFIER ::= { modules 109 }
    -- The index off the modules subtree is from modules.h.

	ds3TrapTable OBJECT-TYPE
		SYNTAX SEQUENCE OF Ds3TrapEntry
		ACCESS not-accessible
		STATUS mandatory
		DESCRIPTION
			"The ATR enterprise DS3 trap table."
			::= { ds3module 1 }

	ds3TrapEntry OBJECT-TYPE
		SYNTAX Ds3TrapEntry
		ACCESS not-accessible
		STATUS mandatory
		DESCRIPTION
			"An entry in the ATR enterprise DS3 trap table."
		INDEX { ifIndex }
			::= { ds3TrapTable 1 }

	Ds3TrapEntry ::=
		SEQUENCE {
			ds3TcaTrapEnable		INTEGER,
			ds3TrapError			INTEGER,
			ds3TrapLoc				INTEGER,
			ds3TrapInterval			INTEGER
		}

	ds3TcaTrapEnable  OBJECT-TYPE
		SYNTAX INTEGER {
					enabled (1),
					disabled (2)
				}
		ACCESS  read-write
		STATUS  mandatory
		DESCRIPTION
		        "Indicates whether the threshold crossing alert traps
				 should be generated for this interface."
		DEFVAL { disabled }
		::= { ds3TrapEntry 1 }

	-- All ATR specific DS3 traps

    ds3TrapError OBJECT-TYPE
        SYNTAX  INTEGER {ds3NoError (1), ds3PES (2), ds3PSES (3), ds3SEFs (4), ds3UAS (5),
		                 ds3LCVs (6), ds3PCVs (7), ds3LESs (8), ds3CCVs (9),
						 ds3CESs (10), ds3CSESs (11)
				        }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
                "This variable shows which kind of parameter or primitive caused 
                the trap. This variable is really just a placeholder for the 
                object sent in the DS3 TRAP, but can be read independently if 
                required. The variable will hold the value at the latest trap.
                A value of ds3NoError shows no trap has occured"
		DEFVAL { ds3NoError }
        ::= { ds3TrapEntry 2 }


 	ds3TrapLoc OBJECT-TYPE
 		SYNTAX  INTEGER {ds3NoLoc (1), ds3Near (2), ds3Far (3) }
     ACCESS  read-only
     STATUS  mandatory
     DESCRIPTION
                "This variable shows whether the trap was caused by a problem at the local or 
                remote end. This variable is really just a placeholder for the 
                object sent in the DS3 TRAP, but can be read independently if 
                required. The variable will hold the value at the latest trap.
                A value of ds3NoLoc shows no trap had occured."
		DEFVAL { ds3NoLoc }
     ::= { ds3TrapEntry 3 }


   ds3TrapInterval OBJECT-TYPE
          SYNTAX INTEGER {ds3NoInt (1), ds3Fifteen (2), ds3Twentyfour (3) }
     ACCESS  read-only
     STATUS  mandatory
     DESCRIPTION
                "This variable shows whether the counter which has crossed the
                 threshold is a twenty four hour or fifteen minute counter. 
                 This variable is really just a placeholder for the 
                 object sent in the DS3 TRAP, but can be read independently if 
                 required. The variable will hold the value at the latest trap.
                 A value of ds3NoInt shows no trap has occured."
	 DEFVAL { ds3NoInt }
     ::= { ds3TrapEntry 4 }


    tcaTrap TRAP-TYPE
        ENTERPRISE  ds3module
        VARIABLES   { ds3TrapError, ds3TrapLoc, ds3TrapInterval }
        DESCRIPTION
                    "A DS3 trap is generated when a threshold crossing alert 
                     occurs. This happens when an error count exceeds a pre 
                     determined value. The values are counted over 15 minute and 
                     24 hour periods. Once a trap has occured in a given period 
                     it may not occur again within the same period."
        ::= 1


    END
