Network Working Group
Request for Comments: 2512
Category: Standards Track
K. McCloghrie
Cisco Systems, Inc.
J. Heinanen
Telia Finland, Inc.
W. Greene
MCI Telecommunications Corp.
A. Prasad
Cisco Systems, Inc.
February 1999

Accounting Information for ATM Networks

Status of this Memo

This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited.

Copyright Notice

Copyright © The Internet Society (1999). All Rights Reserved.

Table of Contents

   1 Introduction ................................................... 1
   2 The SNMP Network Management Framework .......................... 2
   3 Overview ....................................................... 3
   4 Definitions .................................................... 3
   5 Acknowledgements ...............................................12
   6 References .....................................................12
   7 Security Considerations ........................................13
   8 IANA Considerations ............................................13
   9 Authors' Addresses .............................................14
   10 Full Copyright Statement ......................................15

1. Introduction

This memo defines a portion of the Management Information Base (MIB) for use with network management protocols in the Internet community. A separate memo [16] defines managed objects, in a manner independent of the type of network, for controlling the selection, collection and storage of accounting information into files for later retrieval via a file transfer protocol. This memo defines a set of ATM-specific accounting information which can be collected for connections on ATM networks.

2. The SNMP Network Management Framework

The SNMP Management Framework presently consists of five major components:

   o    An overall architecture, described in RFC 2271 [1].
   
   o    Mechanisms for describing and naming objects and events for the
        purpose of management.  The first version of this Structure of
        Management Information (SMI) is called SMIv1 and described in
        STD 16, RFC 1155 [2], STD 16, RFC 1212 [3] and RFC 1215 [4].
        The second version, called SMIv2, is described in RFC 1902 [5],
        RFC 1903 [6] and RFC 1904 [7].
   
   o    Message protocols for transferring management information.  The
        first version of the SNMP message protocol is called SNMPv1 and
        described in STD 15, RFC 1157 [8].  A second version of the SNMP
        message protocol, which is not an Internet standards track
        protocol, is called SNMPv2c and described in RFC 1901 [9] and
        RFC 1906 [10].  The third version of the message protocol is
        called SNMPv3 and described in RFC 1906 [10], RFC 2272 [11] and
        RFC 2274 [12].
   
   o    Protocol operations for accessing management information.  The
        first set of protocol operations and associated PDU formats is
        described in STD 15, RFC 1157 [8].  A second set of protocol
        operations and associated PDU formats is described in RFC 1905
        [13].
   
   o    A set of fundamental applications described in RFC 2273 [14] and
        the view-based access control mechanism described in RFC 2275
        [15].

Managed objects are accessed via a virtual information store, termed the Management Information Base or MIB. Objects in the MIB are defined using the mechanisms defined in the SMI.

This memo specifies a MIB module that is compliant to the SMIv2. A MIB conforming to the SMIv1 can be produced through the appropriate translations. The resulting translated MIB must be semantically equivalent, except where objects or events are omitted because no translation is possible (e.g., use of Counter64). Some machine readable information in SMIv2 will be converted into textual descriptions in SMIv1 during the translation process. However, this loss of machine readable information is not considered to change the semantics of the MIB.

3. Overview

In [16], the items of accounting data to be collected are specified as a set of objects. Which objects are contained in such a set is selectable by an administrator through the specification of one or more (subtree, list) tuples, where the set of objects to be collected is the union of the subsets specified by each tuple:

'subtree' specifies a OBJECT IDENTIFIER value such that every

object in the subset is named by the subtree's value appended with a single additional sub-identifier.

'list' specifies an OCTET STRING value, such that if the N-th bit

of the string's value is set then the the subset contains the object named by appending N as a single additional sub- identifier to the subtree.

This memo specifies such a subtree containing a set of objects defining items of accounting information which are applicable to ATM connections.

Note that all of the objects defined here have a MAX-ACCESS clause of not-accessible, since their purpose is not to be read/written by SNMP, but rather, to be the syntax and semantics of the set of information which can be represented within a single (subtree, list) tuple.

4. Definitions

ATM-ACCOUNTING-INFORMATION-MIB DEFINITIONS ::= BEGIN

IMPORTS

    MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY,
    mib-2, Integer32, Counter64                   FROM SNMPv2-SMI
    DisplayString, DateAndTime                    FROM SNMPv2-TC
    AtmAddr                                       FROM ATM-TC-MIB;

atmAccountingInformationMIB MODULE-IDENTITY

LAST-UPDATED "9611052000Z"
ORGANIZATION "IETF AToM MIB Working Group"
CONTACT-INFO "

                  Keith McCloghrie
                  Cisco Systems, Inc.
                  170 West Tasman Drive,
                  San Jose CA 95134-1706.
                  Phone: +1 408 526 5260
                  Email: kzm@cisco.com"
    
    DESCRIPTION
            "The MIB module for identifying items of accounting
            information which are applicable to ATM connections."
    ::= { mib-2 59 }

atmAcctngMIBObjects OBJECT IDENTIFIER ::=

{ atmAccountingInformationMIB 1 }

-- Definitions of objects for use in specifying ATM accounting

-- data to be collected

atmAcctngDataObjects OBJECT-IDENTITY

    STATUS      current
    DESCRIPTION
            "This identifier defines a subtree under which various
            objects are defined such that a set of objects to be
            collected as ATM accounting data can be specified as a
            (subtree, list) tuple using this identifier as the subtree."
    ::= { atmAcctngMIBObjects 1 }

-- Objects defined under the atmAcctngDataObjects subtree
--
-- In each case the semantics of the object are interpreted with -- respect to the creation/storage of an accounting record for a -- particular connection on a particular interface.

atmAcctngConnectionType OBJECT-TYPE

    SYNTAX      INTEGER { pvc(1),
                          pvp(2),
                          svcIncoming(3),
                          svcOutgoing(4),
                          svpIncoming(5),
                          svpOutgoing(6),
                          spvcInitiator(7),
                          spvcTarget(8),
                          spvpInitiator(9),
                          spvpTarget(10) }
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The type of connection."
    ::= { atmAcctngDataObjects 1 }

atmAcctngCastType OBJECT-TYPE

    SYNTAX      INTEGER { p2p(1), p2mp(2) }
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "An indication of whether the connection is point-to-point
            or point-to-multipoint."
    ::= { atmAcctngDataObjects 2 }

atmAcctngIfName OBJECT-TYPE

    SYNTAX      DisplayString
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A textual name for the interface on which the data for the
            connection was collected.  If the local SNMP agent supports
            the object ifName, the value of this object must be
            identical to that of ifName in the conceptual row of the
            ifTable corresponding to this interface."
    ::= { atmAcctngDataObjects 3 }

atmAcctngIfAlias OBJECT-TYPE

    SYNTAX      DisplayString
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The 'alias' name for the interface as specified by a
            network manager, e.g., via a management set operation to
            modify the relevant instance of the ifAlias object.  Note
            that in contrast to ifIndex, ifAlias provides a non-volatile
            'handle' for the interface, the value of which is retained
            across agent reboots."
    ::= { atmAcctngDataObjects 4 }

atmAcctngVpi OBJECT-TYPE

    SYNTAX      INTEGER (0..4095)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The VPI used for the connection."
    ::= { atmAcctngDataObjects 5 }

atmAcctngVci OBJECT-TYPE

    SYNTAX      INTEGER (0..65535)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The VCI used for the connection."
    ::= { atmAcctngDataObjects 6 }

atmAcctngCallingParty OBJECT-TYPE

    SYNTAX      AtmAddr
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The connection's calling party.  If unknown (e.g., for a
            PVC), then the value of this object is the zero-length
            string."
    ::= { atmAcctngDataObjects 7 }

atmAcctngCalledParty OBJECT-TYPE

    SYNTAX      AtmAddr
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The connection's called party.  If unknown (e.g., for a
            PVC), then the value of this object is the zero-length
            string."
    ::= { atmAcctngDataObjects 8 }

atmAcctngCallReference OBJECT-TYPE

    SYNTAX      OCTET STRING (SIZE(0..3))
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The connection's call reference value (e.g., from Q.2931).
            If unknown (e.g., for a PVC), then the value of this object
            is the zero-length string."
    ::= { atmAcctngDataObjects 9 }

atmAcctngStartTime OBJECT-TYPE

    SYNTAX      DateAndTime
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The time when the connection was established."
    ::= { atmAcctngDataObjects 10 }

atmAcctngCollectionTime OBJECT-TYPE

    SYNTAX      DateAndTime
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The time at which the data in this record was collected."
    ::= { atmAcctngDataObjects 11 }

atmAcctngCollectMode OBJECT-TYPE

    SYNTAX      INTEGER { onRelease(1),
                          periodically(2),
    
                          onCommand(3) }
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The reason why this connection data was collected."
    ::= { atmAcctngDataObjects 12 }

atmAcctngReleaseCause OBJECT-TYPE

    SYNTAX      Integer32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "If the connection data was collected because of the release
            of an SVC, then this is the cause code in the Release
            message for the connection; otherwise, this object has the
            value zero."
    ::= { atmAcctngDataObjects 13 }

atmAcctngServiceCategory OBJECT-TYPE

    SYNTAX      INTEGER { other(1), cbr(2), vbrRt(3), vbrNrt(4),
                          abr(5), ubr(6), unknown(7) }
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The connection's service category."
    ::= { atmAcctngDataObjects 14 }

atmAcctngTransmittedCells OBJECT-TYPE

    SYNTAX      Counter64
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The number of cells, including OAM cells, transmitted by
            this switch on this connection."
    ::= { atmAcctngDataObjects 15 }

atmAcctngTransmittedClp0Cells OBJECT-TYPE

    SYNTAX      Counter64
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The number of cells with CLP=0, including OAM cells,
            transmitted by this switch on this connection."
    ::= { atmAcctngDataObjects 16 }

atmAcctngReceivedCells OBJECT-TYPE

    SYNTAX      Counter64
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The number of cells, including OAM cells, received by this
            switch on this connection."
    ::= { atmAcctngDataObjects 17 }

atmAcctngReceivedClp0Cells OBJECT-TYPE

    SYNTAX      Counter64
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The number of cells with CLP=0, including OAM cells,
            received by this switch on this connection."
    ::= { atmAcctngDataObjects 18 }

atmAcctngTransmitTrafficDescriptorType OBJECT-TYPE

    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The traffic descriptor type (as defined in RFC 1695 and its
            successors) in the direction in which the switch transmits
            cells on the connection."
    REFERENCE
            "See atmTrafficDescriptorTypes in ATM-MIB.my in RFC 1695 and
            its successors."
    ::= { atmAcctngDataObjects 19 }

atmAcctngTransmitTrafficDescriptorParam1 OBJECT-TYPE

    SYNTAX      INTEGER (0..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The first traffic descriptor parameter in the direction in
            which this switch transmits cells on this connection.
            Interpretation of this parameter is dependent on the value
            of atmAcctngTransmitTrafficDescriptorType."
    ::= { atmAcctngDataObjects 20 }

atmAcctngTransmitTrafficDescriptorParam2 OBJECT-TYPE

    SYNTAX      INTEGER (0..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The second traffic descriptor parameter in the direction in
            which this switch transmits cells on this connection.
            Interpretation of this parameter is dependent on the value
            of atmAcctngTransmitTrafficDescriptorType."
    
    ::= { atmAcctngDataObjects 21 }

atmAcctngTransmitTrafficDescriptorParam3 OBJECT-TYPE

    SYNTAX      INTEGER (0..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The third traffic descriptor parameter in the direction in
            which this switch transmits cells on this connection.
            Interpretation of this parameter is dependent on the value
            of atmAcctngTransmitTrafficDescriptorType."
    ::= { atmAcctngDataObjects 22 }

atmAcctngTransmitTrafficDescriptorParam4 OBJECT-TYPE

    SYNTAX      INTEGER (0..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The fourth traffic descriptor parameter in the direction in
            which this switch transmits cells on this connection.
            Interpretation of this parameter is dependent on the value
            of atmAcctngTransmitTrafficDescriptorType."
    ::= { atmAcctngDataObjects 23 }

atmAcctngTransmitTrafficDescriptorParam5 OBJECT-TYPE

    SYNTAX      INTEGER (0..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The fifth traffic descriptor parameter in the direction in
            which this switch transmits cells on this connection.
            Interpretation of this parameter is dependent on the value
            of atmAcctngTransmitTrafficDescriptorType."
    ::= { atmAcctngDataObjects 24 }

atmAcctngReceiveTrafficDescriptorType OBJECT-TYPE

    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The traffic descriptor type (as defined in RFC 1695 and its
            successors) in the direction in which this switch receives
            cells on this connection."
    REFERENCE
            "See atmTrafficDescriptorTypes in ATM-MIB.my in RFC 1695 and
            its successors."
    ::= { atmAcctngDataObjects 25 }

atmAcctngReceiveTrafficDescriptorParam1 OBJECT-TYPE

    SYNTAX      INTEGER (0..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The first traffic descriptor parameter in the direction in
            which this switch receives cells on this connection.
            Interpretation of this parameter is dependent on the value
            of atmAcctngReceiveTrafficDescriptorType."
    ::= { atmAcctngDataObjects 26 }

atmAcctngReceiveTrafficDescriptorParam2 OBJECT-TYPE

    SYNTAX      INTEGER (0..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The second traffic descriptor parameter in the direction in
            which this switch receives cells on this connection.
            Interpretation of this parameter is dependent on the value
            of atmAcctngReceiveTrafficDescriptorType."
    ::= { atmAcctngDataObjects 27 }

atmAcctngReceiveTrafficDescriptorParam3 OBJECT-TYPE

    SYNTAX      INTEGER (0..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The third traffic descriptor parameter in the direction in
            which this switch receives cells on this connection.
            Interpretation of this parameter is dependent on the value
            of atmAcctngReceiveTrafficDescriptorType."
    ::= { atmAcctngDataObjects 28 }

atmAcctngReceiveTrafficDescriptorParam4 OBJECT-TYPE

    SYNTAX      INTEGER (0..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The fourth traffic descriptor parameter in the direction in
            which this switch receives cells on this connection.
            Interpretation of this parameter is dependent on the value
            of atmAcctngReceiveTrafficDescriptorType."
    ::= { atmAcctngDataObjects 29 }

atmAcctngReceiveTrafficDescriptorParam5 OBJECT-TYPE

    SYNTAX      INTEGER (0..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The fifth traffic descriptor parameter in the direction in
            which this switch receives cells on this connection.
            Interpretation of this parameter is dependent on the value
            of atmAcctngReceiveTrafficDescriptorType."
    ::= { atmAcctngDataObjects 30 }

atmAcctngCallingPartySubAddress OBJECT-TYPE

    SYNTAX      AtmAddr
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The connection's calling party sub-address.  If the
            connection has no calling party sub-address, or it's value
            is unknown, then the value of this object is the zero-length
            string."
    ::= { atmAcctngDataObjects 31 }

atmAcctngCalledPartySubAddress OBJECT-TYPE

    SYNTAX      AtmAddr
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The connection's called party sub-address.  If the
            connection has no called party sub-address, or it's value is
            unknown, then the value of this object is the zero-length
            string."
    ::= { atmAcctngDataObjects 32 }

atmAcctngRecordCrc16 OBJECT-TYPE

    SYNTAX      OCTET STRING (SIZE(2))
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The value of the CRC-16 checksum (as defined by ISO 3309
            (HDLC) and/or ITU X.25) calculated over the accounting
            record containing this object.
    
            While the mechanism for calculating/encoding the checksum
            value is specific to the method of encoding the accounting
            record, an accounting record containing this object is
            typically generated by initializing the value of this object
            to the all-zeros string ('0000'H), with the location of
            these zeros being saved.  After generating the record, the
            checksum is calculated over the whole connection record and
            then the all-zeros value is overwritten (at the saved
            location) by the calculated value of the checksum."
    ::= { atmAcctngDataObjects 33 }

END

5. Acknowledgements

The comments of the IETF's AToM MIB Working Group are acknowledged.

6. References

   [1]  Harrington, D., Presuhn, R. and B. Wijnen, "An Architecture for
        Describing SNMP Management Frameworks", RFC 2271, January 1998.
   
   [2]  Rose, M. and K. McCloghrie, "Structure and Identification of
        Management Information for TCP/IP-based Internets", STD 16, RFC
        1155, May 1990.
   
   [3]  Rose, M. and K. McCloghrie, "Concise MIB Definitions", STD 16,
        RFC 1212, March 1991.
   
   [4]  Rose, M., "A Convention for Defining Traps for use with the
        SNMP", RFC 1215, March 1991.
   
   [5]  SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M. and S.
        Waldbusser, "Structure of Management Information for Version 2
        of the Simple Network Management Protocol (SNMPv2)", RFC 1902,
        January 1996.
   
   [6]  SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M. and S.
        Waldbusser, "Textual Conventions for Version 2 of the Simple
        Network Management Protocol (SNMPv2)", RFC 1903, January 1996.
   
   [7]  SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M. and S.
        Waldbusser, "Conformance Statements for Version 2 of the Simple
        Network Management Protocol (SNMPv2)", RFC 1904, January 1996.
   
   [8]  Case, J., Fedor, M., Schoffstall, M. and J. Davin, "Simple
        Network Management Protocol", STD 15, RFC 1157, May 1990.
   
   [9]  SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M. and S.
        Waldbusser, "Introduction to Community-based SNMPv2", RFC 1901,
        January 1996.

[10] SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M. and S.

Waldbusser, "Transport Mappings for Version 2 of the Simple Network Management Protocol (SNMPv2)", RFC 1906, January 1996.

   [11] Case, J., Harrington D., Presuhn R. and B. Wijnen, "Message
        Processing and Dispatching for the Simple Network Management
        Protocol (SNMP)", RFC 2272, January 1998.
   
   [12] Blumenthal, U. and B. Wijnen, "User-based Security Model (USM)
        for version 3 of the Simple Network Management Protocol
        (SNMPv3)", RFC 2274, January 1998.

[13] SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M. and S.

Waldbusser, "Protocol Operations for Version 2 of the Simple Network Management Protocol (SNMPv2)", RFC 1905, January 1996.

   [14] Levi, D., Meyer, P. and B. Stewart, "SNMPv3 Applications", RFC
        2273, January 1998.
   
   [15] Wijnen, B., Presuhn, R. and K. McCloghrie, "View-based Access
        Control Model (VACM) for the Simple Network Management Protocol
        (SNMP)", RFC 2275, January 1998.
   
   [16] McCloghrie, K., Heinanen, J., Greene, W. and A. Prasad, "Managed
        Objects for Controlling the Collection and Storage of Accounting
        Information for Connection-Oriented Networks", RFC 2513,
        February 1999.
   
   [17] Noto, M., Spiegel, E. and K. Tesink, "Definitions of Textual
        Conventions and OBJECT-IDENTITIES for ATM Management", RFC 2514,
        February 1999.

7. Security Considerations

This MIB module defines data items for potential use as accounting information. Each of these data items is only accessible through a collected accounting file. After being collected, the accounting data should be protected against modification or unauthorized deletion.

8. IANA Considerations

Prior to publication of this memo as an RFC, IANA is requested to make a suitable OBJECT IDENTIFIER assignment.

9. Authors' Addresses

Keith McCloghrie
Cisco Systems, Inc.
170 West Tasman Drive,
San Jose CA 95134

   Phone: +1 408 526 5260
   EMail: kzm@cisco.com

Juha Heinanen
Telia Finland, Inc.
Myyrmaentie 2
01600 VANTAA
Finland

   Phone +358 303 944 808
   EMail: jh@telia.fi

Wedge Greene
MCI Telecommunications Corporation
901 International Parkway
Richardson, Texas 75081

   Phone: 214-498-1232 or 972-729-1232
   EMail: wedge.greene@mci.com

Anil Prasad
Cisco Systems, Inc.
170 West Tasman Drive,
San Jose CA 95134

   Phone: +1 408 525-7209
   EMail: aprasad@cisco.com

10. Full Copyright Statement

Copyright © The Internet Society (1999). All Rights Reserved.

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.

The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.

This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.