-- *****************************************************************************
-- JUNIPER-SUBSCRIBER-MIB
--
-- Juniper Networks Enterprise MIB
--   Subscriber MIB
--
-- Copyright (c) 2010 Juniper Networks, Inc.
--   All Rights Reserved.
-- *****************************************************************************

JUNIPER-SUBSCRIBER-MIB  DEFINITIONS ::= BEGIN

IMPORTS
       MODULE-IDENTITY, OBJECT-TYPE, Integer32, IpAddress, Unsigned32 
                                        FROM SNMPv2-SMI
       TEXTUAL-CONVENTION, DisplayString, MacAddress
                                        FROM SNMPv2-TC
       InterfaceIndex
                                        FROM IF-MIB
       CounterBasedGauge64               -- RFC 2856
                                        FROM HCNUM-TC
       jnxSubscriberMibRoot
                                        FROM JUNIPER-SMI;


jnxSubscriberMIB  MODULE-IDENTITY
       LAST-UPDATED "201005110000Z"  -- 11-May-10
       ORGANIZATION "Juniper Networks, Inc."
       CONTACT-INFO
             " Juniper Technical Assistance Center
             Juniper Networks, Inc.
             1194 N. Mathilda Avenue
             Sunnyvale, CA 94089
             E-mail: support@juniper.net"
       DESCRIPTION
             "The Subscriber MIB for the Juniper Networks enterprise."
       -- Revision History
       REVISION    "201005110000Z"  -- 11-May-10
       DESCRIPTION
             "Initial version of jnxSubscriberMIB module."
       ::= { jnxSubscriberMibRoot  1 }


-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Textual conventions
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

JnxSubscriberState  ::= TEXTUAL-CONVENTION
       STATUS      current
       DESCRIPTION
             "The set of possible AAA subscriber states, expressed as a bit map:
                init                 INIT state only
                configured           CONFIGURED state only
                active               ACTIVE state only
                terminated           TERMINATED state only
                terminating          TERMINATING state only
                unknown              Unknown state "
       SYNTAX      INTEGER {
             init(0),
             configured(1),
             active(2),
             terminating(3),
             terminated(4),
             unknown(5) }

JnxSubscriberClientType  ::= TEXTUAL-CONVENTION
       STATUS      current
       DESCRIPTION
             "The set of possible AAA subscriber client types:
                none                None of the following
                dhcp                DHCP clients only
                l2tp                L2TP clients only
                ppp                 PPP clients only
                pppoe               PPPoE clients only
                vlan                VLAN clients only
                generic             Generic clients only
                mobileIp            Mobile Ip clients only
                vplsPw              VPLS pseudowires only
                static              Static clients only
                mlppp               MLPPP clients only "
       SYNTAX      BITS {
             none(0),
             dhcp(1),
             vlan(2),
             generic(3),
             mobileIp(4),
             vplsPw(5),
             ppp(6),
             ppppoe(7),
             l2tp(8),
             static(9),
             mlppp(10) }


-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Managed object groups
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
jnxSubscriberObjects                OBJECT IDENTIFIER ::= {jnxSubscriberMIB 1}
jnxSubscriberGeneral                OBJECT IDENTIFIER ::= {jnxSubscriberObjects 1}
jnxSubscriberLogicalSystemObjects   OBJECT IDENTIFIER ::= {jnxSubscriberObjects 2}
jnxSubscriberRoutingInstanceObjects OBJECT IDENTIFIER ::= {jnxSubscriberObjects 3}


-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Managed objects for Subscriber functions
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
jnxSubscriberTotalCount OBJECT-TYPE
       SYNTAX      CounterBasedGauge64
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
             "Total number of subscribers."
       ::= { jnxSubscriberGeneral 1 }

jnxSubscriberActiveCount OBJECT-TYPE
       SYNTAX      CounterBasedGauge64
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
             "Number of active subscribers."
       ::= { jnxSubscriberGeneral 2 }

jnxSubscriberTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF JnxSubscriberEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
             "The entries in this table represent subscribers."
       ::= { jnxSubscriberGeneral 3 }

jnxSubscriberInterfaceHardwareIndexTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF JnxSubscriberInterfaceHardwareIndexEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
             "The entries in this table represent subscribers Interface Hardware Index."
       ::= { jnxSubscriberGeneral 4 }

jnxSubscriberInterfaceHardwareIndexEntry OBJECT-TYPE
       SYNTAX      JnxSubscriberInterfaceHardwareIndexEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
             "A specification of subscribers."
       INDEX     { jnxSubscriberInterfaceHardwareIndexHandleHiWord, jnxSubscriberInterfaceHardwareIndexHandleLoWord }
       ::= { jnxSubscriberInterfaceHardwareIndexTable 1 }

JnxSubscriberInterfaceHardwareIndexEntry ::= SEQUENCE {
       jnxSubscriberInterfaceHardwareIndexHandleHiWord         Unsigned32,
       jnxSubscriberInterfaceHardwareIndexHandleLoWord         Unsigned32,
       jnxSubscriberInterfaceHardwareIndex     Unsigned32 }

jnxSubscriberInterfaceHardwareIndexHandleHiWord OBJECT-TYPE
       SYNTAX      Unsigned32(0..4294967295)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
             "The subscriber handle associated with this subscriber. A
             subscriber handle is a monotonically increasing number.
             
             This object is equal to the most significant 32 bit of the 64 bit
             subscriber id."
       ::= { jnxSubscriberInterfaceHardwareIndexEntry 1 }

jnxSubscriberInterfaceHardwareIndexHandleLoWord OBJECT-TYPE
       SYNTAX      Unsigned32(0..4294967295)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
             "The subscriber handle associated with this subscriber. A
             subscriber handle is a monotonically increasing number.

             This object is equal to the least significant 32 bit of the 64 bit
             subscriber id."
       ::= { jnxSubscriberInterfaceHardwareIndexEntry 2}

jnxSubscriberInterfaceHardwareIndex OBJECT-TYPE
       SYNTAX      Unsigned32(0..4294967295)
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
            "The subscriber interface hardware index."
       ::= { jnxSubscriberInterfaceHardwareIndexEntry 3}

jnxSubscriberEntry OBJECT-TYPE
       SYNTAX      JnxSubscriberEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
             "A specification of subscribers."
       INDEX     { jnxSubscriberHandleHiWord, jnxSubscriberHandleLoWord }
       ::= { jnxSubscriberTable 1 }


JnxSubscriberEntry ::= SEQUENCE {
       jnxSubscriberHandleHiWord         Unsigned32,
       jnxSubscriberHandleLoWord         Unsigned32,
       jnxSubscriberUserName             DisplayString,
       jnxSubscriberClientType           JnxSubscriberClientType,
       jnxSubscriberIpAddress            IpAddress,
       jnxSubscriberIpAddressMask        IpAddress,
       jnxSubscriberLogicalSystem        OCTET STRING,
       jnxSubscriberRoutingInstance      OCTET STRING,
       jnxSubscriberInterface            DisplayString,
       jnxSubscriberInterfaceType        INTEGER,
       jnxSubscriberMacAddress           MacAddress,
       jnxSubscriberState                JnxSubscriberState,
       jnxSubscriberLoginTime            DisplayString }

jnxSubscriberHandleHiWord OBJECT-TYPE
       SYNTAX      Unsigned32(0..4294967295)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
             "The subscriber handle associated with this subscriber. A
             subscriber handle is a monotonically increasing number.
             
             This object is equal to the most significant 32 bit of the 64 bit
             subscriber id."
       ::= { jnxSubscriberEntry 1 }

jnxSubscriberHandleLoWord OBJECT-TYPE
       SYNTAX      Unsigned32(0..4294967295)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
             "The subscriber handle associated with this subscriber. A
             subscriber handle is a monotonically increasing number.

             This object is equal to the least significant 32 bit of the 64 bit
             subscriber id."
       ::= { jnxSubscriberEntry 2}

jnxSubscriberUserName OBJECT-TYPE
       SYNTAX      DisplayString
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
             "The userName associated with this subscriber."
       ::= { jnxSubscriberEntry 3 }

jnxSubscriberClientType OBJECT-TYPE
       SYNTAX      JnxSubscriberClientType
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
             "The client type for this subscriber."
       ::= { jnxSubscriberEntry 4 }

jnxSubscriberIpAddress OBJECT-TYPE
       SYNTAX      IpAddress
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
             "The client IP Address assigned to this subscriber."
       ::= { jnxSubscriberEntry 5 }

jnxSubscriberIpAddressMask OBJECT-TYPE
       SYNTAX      IpAddress
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
             "The client IP Address Mask assigned to this subscriber."
       ::= { jnxSubscriberEntry 6 }

jnxSubscriberLogicalSystem OBJECT-TYPE
       SYNTAX      OCTET STRING (SIZE(0..63))
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
             "The logical system associated with this subscriber."
       ::= { jnxSubscriberEntry 7 }

jnxSubscriberRoutingInstance OBJECT-TYPE
       SYNTAX      OCTET STRING (SIZE(0..128))
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
             "The routing instance associated with this subscriber."
    ::= { jnxSubscriberEntry 8 }

jnxSubscriberInterface OBJECT-TYPE
       SYNTAX      DisplayString
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
             "The textual name of the interface associated with this subscriber."
    ::= { jnxSubscriberEntry 9 }

jnxSubscriberInterfaceType OBJECT-TYPE
       SYNTAX      INTEGER {
             none(0),
             static(1),
             dynamic(2) }
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
             "The type of the interface associated with this subscriber."
       ::= { jnxSubscriberEntry 10 }

jnxSubscriberMacAddress OBJECT-TYPE
       SYNTAX      MacAddress
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
             "The MAC address of the interface associated with this subscriber."
       ::= { jnxSubscriberEntry 11 }

jnxSubscriberState OBJECT-TYPE
       SYNTAX      JnxSubscriberState
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
             "The state of this subscriber."
       ::= { jnxSubscriberEntry 12 }

jnxSubscriberLoginTime OBJECT-TYPE
       SYNTAX      DisplayString
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
             "The time this subscriber logged in to the server."
       ::= { jnxSubscriberEntry 13 }

-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Subscriber information by logical system
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

jnxSubscriberLogicalSystemTotalCount OBJECT-TYPE
       SYNTAX      CounterBasedGauge64
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
             "The number of total subscribers on the logical system."
       ::= { jnxSubscriberLogicalSystemObjects 1 }

jnxSubscriberLogicalSystemActiveCount OBJECT-TYPE
       SYNTAX      CounterBasedGauge64
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
             "The number of active subscribers on the logical system."
       ::= { jnxSubscriberLogicalSystemObjects 2 }

jnxSubscriberLogicalSystemTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF JnxSubscriberLogicalSystemEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
             "The entries in this table sort subscribers within the logical system.
             
             The logical system name must be provided in the SNMP query. The
             logical system will be identified by either the context field in V3
             requests, or it will be encoded in the community string in V1 or
             V2c requests.

             User can query for logical-system/routing-instance specific data by
             prefixing the community string with
             <logical-system>/<routing-instance>@, where '@' acts as a separator
             between community name and routing-instance name.

             If no logical system is specified, this table shows data for the
             default logical system. The name of the routing instance is ignored
             for this table."
       ::= { jnxSubscriberLogicalSystemObjects 3 }

jnxSubscriberLogicalSystemEntry OBJECT-TYPE
       SYNTAX      JnxSubscriberLogicalSystemEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
             "A specification of subscribers within the logical system."
       INDEX     { jnxSubscriberLogicalSystemHandleHiWord, jnxSubscriberLogicalSystemHandleLoWord }
       ::= { jnxSubscriberLogicalSystemTable 1 }

JnxSubscriberLogicalSystemEntry ::= SEQUENCE {
       jnxSubscriberLogicalSystemHandleHiWord   Unsigned32,
       jnxSubscriberLogicalSystemHandleLoWord   Unsigned32,
       jnxSubscriberLogicalSystemState          JnxSubscriberState }

jnxSubscriberLogicalSystemHandleHiWord  OBJECT-TYPE
       SYNTAX      Unsigned32(0..4294967295)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
             "The subscriber handle associated with this subscriber. A
             subscriber handle is a monotonically increasing number.

             This object is equal to the most significant 32 bit of the 64 bit
             subscriber id."
       ::= { jnxSubscriberLogicalSystemEntry 1 }

jnxSubscriberLogicalSystemHandleLoWord  OBJECT-TYPE
       SYNTAX      Unsigned32(0..4294967295)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
             "The subscriber handle associated with this subscriber. A
             subscriber handle is a monotonically increasing number.

             This object is equal to the least significant 32 bit of the 64 bit
             subscriber id."
       ::= { jnxSubscriberLogicalSystemEntry 2 }

jnxSubscriberLogicalSystemState OBJECT-TYPE
       SYNTAX      JnxSubscriberState
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
             "The state of this subscriber."
       ::= { jnxSubscriberLogicalSystemEntry 3 }

-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Subscriber information by routing instance
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

jnxSubscriberRoutingInstanceTotalCount OBJECT-TYPE
       SYNTAX      CounterBasedGauge64
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
             "The number of total subscribers on the routing instance."
       ::= { jnxSubscriberRoutingInstanceObjects 1 }

jnxSubscriberRoutingInstanceActiveCount OBJECT-TYPE
       SYNTAX      CounterBasedGauge64
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
             "The number of active subscribers on the routing instance."
       ::= { jnxSubscriberRoutingInstanceObjects 2 }

jnxSubscriberRoutingInstanceTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF JnxSubscriberRoutingInstanceEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
             "The entries in this table sort subscribers within routing instance.
             
             The routing instance name must be provided in the SNMP query. The
             routing instance will be identified by either the context field in V3
             requests, or it will be encoded in the community string in V1 or
             V2c requests.

             User can query for logical-system/routing-instance specific data by
             prefixing the community string with
             <logical-system>/<routing-instance>@, where '@' acts as a separator
             between community name and routing-instance name.

             If no routing instance is specified, this table shows data for the
             default routing instance. The name of the logical system is ignored
             for this table."
       ::= { jnxSubscriberRoutingInstanceObjects 3 }

jnxSubscriberRoutingInstanceEntry OBJECT-TYPE
       SYNTAX      JnxSubscriberRoutingInstanceEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
             "A specification of subscribers within routing instance."
       INDEX     { jnxSubscriberRoutingInstanceHandleHiWord, jnxSubscriberRoutingInstanceHandleLoWord }
       ::= { jnxSubscriberRoutingInstanceTable 1 }

JnxSubscriberRoutingInstanceEntry ::= SEQUENCE {
       jnxSubscriberRoutingInstanceHandleHiWord Unsigned32,
       jnxSubscriberRoutingInstanceHandleLoWord Unsigned32,
       jnxSubscriberRoutingInstanceState        JnxSubscriberState }

jnxSubscriberRoutingInstanceHandleHiWord OBJECT-TYPE
       SYNTAX      Unsigned32(0..4294967295)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
             "The subscriber handle associated with this subscriber. A
             subscriber handle is a monotonically increasing number.
             
             This object is equal to the most significant 32 bit of the 64 bit
             subscriber id."
       ::= { jnxSubscriberRoutingInstanceEntry 1 }

jnxSubscriberRoutingInstanceHandleLoWord OBJECT-TYPE
       SYNTAX      Unsigned32(0..4294967295)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
             "The subscriber handle associated with this subscriber. A
             subscriber handle is a monotonically increasing number.

             This object is equal to the least significant 32 bit of the 64 bit
             subscriber id."
       ::= { jnxSubscriberRoutingInstanceEntry 2 }

jnxSubscriberRoutingInstanceState OBJECT-TYPE
       SYNTAX      JnxSubscriberState
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
             "The state of this subscriber."
       ::= { jnxSubscriberRoutingInstanceEntry 3 }

END