-- 
-- 
-- *****************************************************************
-- ATM SWITCH CUG MIB file
--
-- August 1997, Vinay Gundi
--
-- Copyright (c) 1997, 1998 by cisco Systems, Inc.
-- All rights reserved.
-- *****************************************************************
--
CISCO-ATM-SWITCH-CUG-MIB DEFINITIONS ::= BEGIN

IMPORTS
        MODULE-IDENTITY, OBJECT-TYPE,
        Gauge32                         FROM SNMPv2-SMI
        TEXTUAL-CONVENTION, RowStatus, TruthValue, DisplayString
                                        FROM SNMPv2-TC
        ifIndex                         FROM IF-MIB
        ciscoMgmt                       FROM CISCO-SMI
        MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF;




csCugMIB   MODULE-IDENTITY
     LAST-UPDATED       "9707070000Z"
     ORGANIZATION       "Cisco Systems, Inc."
     CONTACT-INFO
                "       Cisco Systems
                        Customer Service

                Postal: 170 W Tasman Drive
                        San Jose, CA  95134
                        USA

                   Tel: +1 800 553-NETS

                E-mail: cs-atm@cisco.com"
     DESCRIPTION
       "This MIB module is for closed user group support (virtual private 
        networks)."
        ::= { ciscoMgmt 89 }

-- Textual Conventions:

        CsCugInterlockCode ::= TEXTUAL-CONVENTION
            STATUS    current
            DESCRIPTION
                "A Closed User Group Interlock Code. It is either
                 a 4-octet long International Cug Interlock Code or a 24-octet 
                 long Global Cug Interlock Code which has two parts to it. 
                 The first part is 20 byte ATM NSAP address and the second 
                 part is a 4 byte CUG ID. For example the global interlock code
                 could be represented as 
                 390091845600000061706be6010061805aabcd0012345678
                 |------- ATM ADDRESS ------------------|-CUG ID-|
                 "
            REFERENCE
                "Atm Forum Contribution 96-1347."
            SYNTAX    OCTET STRING (SIZE (4|24))

Unsigned32 ::= TEXTUAL-CONVENTION
    STATUS       current
    DESCRIPTION
            "This data type is used to represent an unsigned 32-bit
             integer. We use it until a replacement for UInteger32
             is determined."
    SYNTAX  Gauge32



csCugMIBObjects OBJECT IDENTIFIER ::= { csCugMIB 1 }

-- 
-- csCugInterlockCodeTable
-- 
-- This is the CUG Interlock Code alias table
-- 

csCugInterlockCodeTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF CsCugInterlockCodeEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
       "The CUG interlock code alias Table. Entries in this 
        table can be created and deleted by setting the 
        csCugInterlockCodeRowStatus object to appropriate
        values. This table maps the interlock code to an alias name.
        Table entries cannot be deleted if the entries in this table are
        being used in csCugTable."
    ::= { csCugMIBObjects 1 }

csCugInterlockCodeEntry OBJECT-TYPE
    SYNTAX     CsCugInterlockCodeEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "An entry in the cug interlock code table."
    INDEX { csCugInterlockCode }
    ::= { csCugInterlockCodeTable 1 }

CsCugInterlockCodeEntry ::= SEQUENCE {
        csCugInterlockCode              CsCugInterlockCode,
        csCugInterlockCodeAliasName     DisplayString,
        csCugInterlockCodeRowStatus     RowStatus
        }

csCugInterlockCode    OBJECT-TYPE
    SYNTAX         CsCugInterlockCode 
    MAX-ACCESS     not-accessible
    STATUS         current
    DESCRIPTION
      "The Address to be aliased."
    ::= { csCugInterlockCodeEntry 1}

csCugInterlockCodeAliasName    OBJECT-TYPE
    SYNTAX    DisplayString    (SIZE(1..30))
    MAX-ACCESS     read-create
    STATUS         current
    DESCRIPTION
       "The alias name for a CUG interlock code."
    ::= { csCugInterlockCodeEntry 2}

csCugInterlockCodeRowStatus    OBJECT-TYPE
    SYNTAX         RowStatus
    MAX-ACCESS     read-create
    STATUS         current
    DESCRIPTION
      "To create, delete a row.  Existing rows can be modified/deleted 
       when the row is active providing this alias is not referenced by any 
       entries in the csCugTable."
    ::= { csCugInterlockCodeEntry 3}


--
-- Access interface table
--
-- This table is used to configure the interface as "access interface"
-- Configuring the interface as access interface enables Closed User Groups
--

csCugIfTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF CsCugIfEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
        "A table to define an interface as an access interface."
        ::= { csCugMIBObjects 2 }

csCugIfEntry OBJECT-TYPE
        SYNTAX     CsCugIfEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
        "An entry in this table must be created in order to enable the
        screening of closed user group calls and enable the barring of
        transmission of CUG interlock codes across the interface. Closed
        user group calls are screened by looking up csCugTable."

        INDEX { ifIndex }
        ::= { csCugIfTable 1 }

CsCugIfEntry ::= SEQUENCE {
        csCugIfAccessEnable              TruthValue,
        csCugIfPermitUnknownCugsToUser   TruthValue,
        csCugIfPermitUnknownCugsFromUser INTEGER,
        csCugIfRowStatus                 RowStatus
    }


csCugIfAccessEnable    OBJECT-TYPE
        SYNTAX         TruthValue
        MAX-ACCESS     read-create
        STATUS         current
        DESCRIPTION
        "If the value is true, enables CUG service on the interface.
        When the value is false, CUG service on the interface will be 
        disabled and no screening of CUGs will be done."
        DEFVAL { true }
        ::= { csCugIfEntry 1 }

csCugIfPermitUnknownCugsToUser    OBJECT-TYPE
        SYNTAX         TruthValue  
        MAX-ACCESS     read-create
        STATUS         current
        DESCRIPTION
        "This maps to incoming access of the ITU spec. This object takes
        effect when csCugIfAccessEnable is true. If the value is true, 
        allows calls with unknown cug interlock code or non-cug calls to be 
        forwarded to the user. If the value is false, calls from unknown CUGs 
        will not be forwarded to the user. If csCugIfAccessEnable is false
        this object will be ignored."
        REFERENCE
            "ITU Specification Q.2955.1 section 1.3"
        DEFVAL { false }
        ::= { csCugIfEntry 2 }

csCugIfPermitUnknownCugsFromUser    OBJECT-TYPE
        SYNTAX    INTEGER  { 
                   deny(1),           -- deny outgoing access
                   permitPerCall(2),  -- enable per-call outgoing access 
                   permitPermanently(3) -- enable outgoing access
                                        -- permanently
                 }
        MAX-ACCESS     read-create
        STATUS         current
        DESCRIPTION
        "This maps to outgoing access of the ITU spec. This object takes
        effect when csCugIfAccessEnable is true. If the value is 
        deny, do not permit calls to other CUGs.
        If the value is permitPerCall, use cug index from user and calls
        to other CUGs will be permitted. If the value is 
        permitPermanently, use preferential CUG for calls from user and
        calls to other CUGs will be permitted."
        REFERENCE
            "ITU Specification Q.2955.1 section 1.3"
        DEFVAL { deny }
        ::= { csCugIfEntry 3 }

csCugIfRowStatus OBJECT-TYPE
        SYNTAX      RowStatus
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
        "The status of this conceptual row.  
        The value of the columnar objects in this row may be modified
        even while the row status is 'active'." 
        ::= { csCugIfEntry 4 }


--
-- CUG Table
--
-- Used to configure closed user group at the network 
-- boundary.
--

csCugTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF CsCugEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
        "A list of Closed User Group (CUG) definitions on the interfaces of 
        the switch. Entries in this table may be created and deleted by SNMP.
        Each entry represents membership of an interface in a CUG. An 
        interface may have several CUGs, but only one 'preferential' CUG.
        CUG membership takes effect only when the interface is configured
        as an access interface i.e., has an entry in the csCugIfTable and
        that entry's csCugIfAccessEnable == true."
        ::= { csCugMIBObjects 3 }

csCugEntry OBJECT-TYPE
        SYNTAX     CsCugEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
        "An entry identifying an interface's membership in a CUG."
        INDEX { ifIndex, csCugInterlockCode }
        ::= { csCugTable 1 }

CsCugEntry ::= SEQUENCE {
        csCugIndex                      Unsigned32,
        csCugPreferential               TruthValue,
        csCugDenySameGroupToUser        TruthValue,
        csCugDenySameGroupFromUser      TruthValue,
        csCugRowStatus                  RowStatus
    }


csCugIndex OBJECT-TYPE
        SYNTAX        Unsigned32 (0..65535)
        MAX-ACCESS    read-create
        STATUS        current
        DESCRIPTION
            "This maps to cug index of ITU spec. For each interface,
            there is a unique cug index for each interlock code. This
            object is valid only when CUGs are supported on a 
            per-call basis."
       
        REFERENCE
            "ITU Specification Q.2955.1 section 1.3"
        ::= { csCugEntry 1 }


csCugPreferential   OBJECT-TYPE
        SYNTAX         TruthValue
        MAX-ACCESS     read-create
        STATUS         current
        DESCRIPTION
        "Indicates if this is a preferential CUG. A value of false means
        non-preferred CUG. There can be at most one preferential CUG on
        an interface. When a preferential cug exists, this object has to be
        set to false before another CUG can become a preferential CUG.
        For e.g., if CUG X is the preferential CUG and CUG Y has to take
        the role of preferential CUG, change CUG X to be non-preferential
        by modifying this object to false and make CUG Y the preferential CUG
        by modifying this object to true."
        DEFVAL { false }
        ::= { csCugEntry 2 }

csCugDenySameGroupToUser    OBJECT-TYPE
        SYNTAX         TruthValue
        MAX-ACCESS     read-create
        STATUS         current
        DESCRIPTION
        "This applies to members of the same closed user group. This
        object maps to incoming-calls-barred in ITU spec. At the 
        destination interface if this is true and the call was made
        by a member of the same CUG, the call will rejected."

        REFERENCE
            "ITU Specification Q.2955.1 section 1.3"

        DEFVAL { false }
        ::= { csCugEntry 3 }

csCugDenySameGroupFromUser    OBJECT-TYPE
        SYNTAX         TruthValue
        MAX-ACCESS     read-create
        STATUS         current
        DESCRIPTION
        "This applies to members of the same closed user group at the 
        originating interface. This object maps to outgoing-calls-barred
        in the ITU specification.

        Setting an entry's csCugDenySameGroupFromUser to true when the entry's
        csCugPreferential is true will result in error.

        When csCugDenySameGroupFromUser is set to false and a
        preferential cug is defined on the interface, by default the
        call will be forwarded with the interlock code of the preferential cug."

        REFERENCE
            "ITU Specification Q.2955.1 section 1.3"

        DEFVAL { false }
        ::= { csCugEntry 4 }

csCugRowStatus OBJECT-TYPE
        SYNTAX      RowStatus
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
        "The status of this conceptual row.  
        The value of the columnar objects in this row may be modified
        even while the row status is 'active'. Modifications will
        affect new calls. Existing calls are not affected." 
        ::= { csCugEntry 5 }


-- conformance information

csCugMIBConformance
              OBJECT IDENTIFIER ::= { csCugMIB 3 }
csCugMIBCompliances
              OBJECT IDENTIFIER ::= { csCugMIBConformance 1 }
csCugMIBGroups
              OBJECT IDENTIFIER ::= { csCugMIBConformance 2 }


-- compliance statements

csCugMIBCompliance MODULE-COMPLIANCE
    STATUS  current
    DESCRIPTION
            "The compliance statement for the Cisco ATM CUG MIB."
    MODULE  -- this module
            MANDATORY-GROUPS { csCugMIBGroup }
    ::= { csCugMIBCompliances 1 }


-- units of conformance

csCugMIBGroup OBJECT-GROUP
    OBJECTS {  csCugInterlockCodeAliasName, 
               csCugInterlockCodeRowStatus,
               csCugIfAccessEnable,
               csCugIfPermitUnknownCugsToUser, 
               csCugIfPermitUnknownCugsFromUser,
               csCugIfRowStatus,
               csCugIndex,
               csCugPreferential, 
               csCugDenySameGroupToUser,  
               csCugDenySameGroupFromUser,
               csCugRowStatus
    }
    STATUS    current
    DESCRIPTION
        "A collection of objects for managing Closed User Groups."
    ::= { csCugMIBGroups 1 }

END
