-- file: asn1specs/1155_smi.asn1
--
-- this file is used in ../c{,++}-examples/snmp/
--
-- $Header: /cvs/Darwin/src/live/Security/SecuritySNACCRuntime/asn1specs/rfc1155-smi.asn1,v 1.1.1.1 2001/05/18 23:14:05 mb Exp $
-- $Log: rfc1155-smi.asn1,v $
-- Revision 1.1.1.1  2001/05/18 23:14:05  mb
-- Move from private repository to open source repository
--
-- Revision 1.1.1.1  1999/03/16 18:05:56  aram
-- Originals from SMIME Free Library.
--
-- Revision 1.3  1995/07/27 08:29:16  rj
-- rfc1155-smi.asn1, rfc1157-snmp.asn1 and rfc1213-mib2.asn1 renamed from 1155-smi.asn1, 1157-snmp.asn1 and 1213-mib2.asn1 to accomodate to snacc's new file name generation scheme.
--
-- Revision 1.2  1995/07/25  19:53:12  rj
-- changed `_' to `-' in file names.
--
-- Revision 1.1  1994/08/31  23:08:26  rj
-- first check-in.
--

RFC1155-SMI DEFINITIONS ::= BEGIN

           EXPORTS -- EVERYTHING
                   internet, directory, mgmt,
                   experimental, private, enterprises,
                   OBJECT-TYPE, ObjectName, ObjectSyntax, SimpleSyntax,
                   ApplicationSyntax, NetworkAddress, IpAddress,
                   Counter, Gauge, TimeTicks, Opaque;

            -- the path to the root

            internet      OBJECT IDENTIFIER ::= { iso org(3) dod(6) 1 }

            directory     OBJECT IDENTIFIER ::= { internet 1 }

            mgmt          OBJECT IDENTIFIER ::= { internet 2 }

            experimental  OBJECT IDENTIFIER ::= { internet 3 }

            private       OBJECT IDENTIFIER ::= { internet 4 }
            enterprises   OBJECT IDENTIFIER ::= { private 1 }


            -- definition of object types

            OBJECT-TYPE MACRO ::=
            BEGIN
                TYPE NOTATION ::= "SYNTAX" type (TYPE ObjectSyntax)
                                  "ACCESS" Access
                                  "STATUS" Status
                VALUE NOTATION ::= value (VALUE ObjectName)

                Access ::= "read-only"
                                | "read-write"
                                | "write-only"
                                | "not-accessible"
                Status ::= "mandatory"
                                | "optional"
                                | "obsolete"
            END

               -- names of objects in the MIB

               ObjectName ::=
                   OBJECT IDENTIFIER





               -- syntax of objects in the MIB

               ObjectSyntax ::=
                   CHOICE {
                       simple
                           SimpleSyntax,

               -- note that simple SEQUENCEs are not directly
               -- mentioned here to keep things simple (i.e.,
               -- prevent mis-use).  However, application-wide
               -- types which are IMPLICITly encoded simple
               -- SEQUENCEs may appear in the following CHOICE

                       application-wide
                           ApplicationSyntax
                   }

                  SimpleSyntax ::=
                      CHOICE {
                          number
                              INTEGER,

                          string
                              OCTET STRING,

                          object
                              OBJECT IDENTIFIER,

                          empty
                              NULL
                      }

                  ApplicationSyntax ::=
                      CHOICE {
                          address
                              NetworkAddress,

                          counter
                              Counter,

                          gauge
                              Gauge,

                          ticks
                              TimeTicks,

                          arbitrary
                              Opaque

                  -- other application-wide types, as they are
                  -- defined, will be added here
                      }


                  -- application-wide types

                  NetworkAddress ::=
                      CHOICE {
                          internet
                              IpAddress
                      }

                  IpAddress ::=
                      [APPLICATION 0]          -- in network-byte order
                          IMPLICIT OCTET STRING (SIZE (4))

                  Counter ::=
                      [APPLICATION 1]
                          IMPLICIT INTEGER (0..4294967295)

                  Gauge ::=
                      [APPLICATION 2]
                          IMPLICIT INTEGER (0..4294967295)

                  TimeTicks ::=
                      [APPLICATION 3]
                          IMPLICIT INTEGER (0..4294967295)

                  Opaque ::=
                      [APPLICATION 4]          -- arbitrary ASN.1 value,
                          IMPLICIT OCTET STRING   --   "double-wrapped"

                  END
