[cl-net-snmp-cvs] r39 - in trunk/asn.1: . test

ctian at common-lisp.net ctian at common-lisp.net
Sun Sep 16 13:36:34 UTC 2007


Author: ctian
Date: Sun Sep 16 09:36:33 2007
New Revision: 39

Added:
   trunk/asn.1/test/3.asn
   trunk/asn.1/test/4.asn
Removed:
   trunk/asn.1/asn.1-domain.lisp
   trunk/asn.1/asn.1.tab
Modified:
   trunk/asn.1/asn.1.zb
   trunk/asn.1/mib-parse.lisp
   trunk/asn.1/mib.lisp
   trunk/asn.1/test/1.asn
Log:
commit changes

Modified: trunk/asn.1/asn.1.zb
==============================================================================
--- trunk/asn.1/asn.1.zb	(original)
+++ trunk/asn.1/asn.1.zb	Sun Sep 16 09:36:33 2007
@@ -10,7 +10,7 @@
  "-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
  :lex-cats (;;(BSTRING "'[01]+'B")
             ;;(HSTRING "'([A-F0-9]+)'H")
-            (A-Number "[0-9]+")
+            (A-Number "-?[0-9]+")
             (Value-Reference "[a-z][a-zA-Z0-9-]+")
             (Type-Reference "[A-Z][a-zA-Z0-9-]*")
             (Module-Reference "[A-Z][a-zA-Z0-9-]*")
@@ -23,7 +23,7 @@
 Assignment-List := kb-domain: [(-list kb-sequence)];
 Assignment := kb-domain: [(-type) (-value)];
 Obj-Id-Components-List := kb-domain: [(-list kb-sequence)];
-Value-Assignment := kb-domain: [];
+Value-Assignment := kb-domain: [(-value-reference) (-type) (-value)];
 
 ;; Rule Definitions
 Module-Definition -->
@@ -43,18 +43,27 @@
 
 Symbol --> Reference;
 
-Imports --> Type-Reference | ;
+Imports --> "IMPORTS" Type-Reference | ;
 
 Reference --> Type-Reference | Value-Reference;
 
 Assignment-List --> Assignment+ " " { Assignment-List:[(-list Assignment+)] };
 
-Assignment --> Special-Assignment { Assignment:[(-type :special) (-value Special-Assignment)] }
-             | Type-Assignment { Assignment:[(-type :type) (-value Type-Assignment)] }
-             | Value-Assignment { Assignment:[(-type :value) (-value Value-Assignment)] };
-
-Type-Assignment --> Type-Reference "::=" Type;
-Value-Assignment --> Value-Reference Type "::=" Value;
+Assignment --> Type-Assignment {Assignment:[(-type :type) (-value Type-Assignment)]}
+             | Value-Assignment {Assignment:[(-type :value) (-value Value-Assignment)]}
+             |;
+
+             ;;Macro-Assignment {Assignment:[(-type :macro) (-value Macro-Definition)]}
+             ;;| Special-Assignment {Assignment:[(-type :special) (-value Special-Assignment)]}
+             ;;| 
+
+Type-Assignment --> Type-Reference "::=" Type
+                  | Type-Reference "MACRO" "::=" "BEGIN" Garbage+ " " "END";
+
+Value-Assignment --> Value-Reference Type "::=" Value
+                     { Value-Assignment:[(-value-reference Value-Reference)
+                                         (-type Type)
+                                         (-value Value)] };
 
 Type --> Builtin-Type;
 
@@ -81,15 +90,31 @@
 Name-Form --> Identifier;
 Number-Form --> A-Number;
 
-Special-Assignment --> "OBJECT-TYPE" "MACRO" "::=" "BEGIN" Garbage+ " " "END";
+Special-Assignment --> Macro-Name "MACRO" "::=" "BEGIN" Garbage+ " " "END";
+
+Macro-Assignment --> "MACRO-DEFINITION" "::=" "{" "}";
+
+;;"zeroDotZero" "OBJECT-IDENTITY"
+;;                         "STATUS" "current"
+;;                         "DESCRIPTION" "\"" Garbage+ "\""
+;;                         "::=" "{" Garbage+ "}" ;
+
+Macro-Name --> "OBJECT-TYPE"
+             | "MODULE-IDENTITY"
+             | "OBJECT-IDENTITY"
+             | "NOTIFICATION-TYPE";
+
 Garbage --> Any-Thing;
 
 Choice-Type --> "CHOICE" "{" Garbage+ " " "}";
 Octet-String-Type --> "OCTET" "STRING" String-Options;
-String-Options -->  "(" "SIZE" "(" A-Number ")" ")" |;
+String-Options -->  "(" "SIZE" "(" Numbers ")" ")" |;
+Numbers --> A-Number "|" A-Number
+          | A-Number;
 
 Integer-Type --> "INTEGER" "(" A-Number ".." A-Number ")";
 Tagged-Type --> Tag Type | Tag "IMPLICIT" Type | Tag "EXPLICIT" Type;
 Tag --> "[" Class Class-Number "]";
 Class-Number --> A-Number;
 Class --> "UNIVERSAL" | "APPLICATION" | "PRIVATE" |;
+

Modified: trunk/asn.1/mib-parse.lisp
==============================================================================
--- trunk/asn.1/mib-parse.lisp	(original)
+++ trunk/asn.1/mib-parse.lisp	Sun Sep 16 09:36:33 2007
@@ -8,9 +8,10 @@
       (labels ((iter (kb-seq acc)
 		 (if (null (kb-sequence-rest kb-seq))
 		     (nreverse (cons (kb-sequence-first kb-seq) acc))
-		     (iter (kb-sequence-rest kb-seq)
-			   (cons (kb-sequence-first kb-seq) acc)))))
-	(delete-if-not #'(lambda (x) (eq (car x) :value))
-		       (mapcar #'(lambda (x) (cons (assignment--type x)
-						   (assignment--value x)))
-			       (iter assignment-list nil)))))))
+                   (iter (kb-sequence-rest kb-seq)
+                         (cons (kb-sequence-first kb-seq) acc)))))
+        (mapcar #'cdr
+                (delete-if-not #'(lambda (x) (eq (car x) :value))
+                               (mapcar #'(lambda (x) (cons (assignment--type x)
+                                                           (assignment--value x)))
+                                       (iter assignment-list nil))))))))

Modified: trunk/asn.1/mib.lisp
==============================================================================
--- trunk/asn.1/mib.lisp	(original)
+++ trunk/asn.1/mib.lisp	Sun Sep 16 09:36:33 2007
@@ -52,7 +52,8 @@
                    base))
 
 (defparameter *mibs-list*
-  '("RFC1155-SMI"))
+  '("RFC1155-SMI"
+    "SNMPv2-SMI"))
 
 (defvar *asn.1-def* (merge-pathnames
                      (make-pathname :name "asn.1" :type "zb"
@@ -67,5 +68,5 @@
 (defun parse-mib (file)
   (let ((zb:*comment-start* "--")
         (zb:*comment-brackets* '(("/*" . "*/"))))
-    (zb:file-parser file :grammar (zb:find-grammar "ASN.1") :verbose nil)))
+    (zb:file-parser file :grammar (zb:find-grammar "ASN.1") :verbose t)))
 

Modified: trunk/asn.1/test/1.asn
==============================================================================
--- trunk/asn.1/test/1.asn	(original)
+++ trunk/asn.1/test/1.asn	Sun Sep 16 09:36:33 2007
@@ -27,75 +27,4 @@
 
     ObjectName ::= OBJECT IDENTIFIER
 
- 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
-
-    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))
-
 END

Added: trunk/asn.1/test/3.asn
==============================================================================
--- (empty file)
+++ trunk/asn.1/test/3.asn	Sun Sep 16 09:36:33 2007
@@ -0,0 +1,342 @@
+SNMPv2-SMI DEFINITIONS ::= BEGIN
+
+-- the path to the root
+
+org            OBJECT IDENTIFIER ::= { iso 3 }  --  "iso" = 1
+dod            OBJECT IDENTIFIER ::= { org 6 }
+internet       OBJECT IDENTIFIER ::= { dod 1 }
+
+directory      OBJECT IDENTIFIER ::= { internet 1 }
+
+mgmt           OBJECT IDENTIFIER ::= { internet 2 }
+mib-2          OBJECT IDENTIFIER ::= { mgmt 1 }
+transmission   OBJECT IDENTIFIER ::= { mib-2 10 }
+
+experimental   OBJECT IDENTIFIER ::= { internet 3 }
+
+private        OBJECT IDENTIFIER ::= { internet 4 }
+enterprises    OBJECT IDENTIFIER ::= { private 1 }
+
+security       OBJECT IDENTIFIER ::= { internet 5 }
+
+snmpV2         OBJECT IDENTIFIER ::= { internet 6 }
+
+-- transport domains
+snmpDomains    OBJECT IDENTIFIER ::= { snmpV2 1 }
+
+-- transport proxies
+snmpProxys     OBJECT IDENTIFIER ::= { snmpV2 2 }
+
+-- module identities
+snmpModules    OBJECT IDENTIFIER ::= { snmpV2 3 }
+
+-- Extended UTCTime, to allow dates with four-digit years
+-- (Note that this definition of ExtUTCTime is not to be IMPORTed
+--  by MIB modules.)
+ExtUTCTime ::= OCTET STRING(SIZE(11 | 13))
+    -- format is YYMMDDHHMMZ or YYYYMMDDHHMMZ
+
+    --   where: YY   - last two digits of year (only years
+    --                 between 1900-1999)
+    --          YYYY - last four digits of the year (any year)
+    --          MM   - month (01 through 12)
+    --          DD   - day of month (01 through 31)
+    --          HH   - hours (00 through 23)
+    --          MM   - minutes (00 through 59)
+    --          Z    - denotes GMT (the ASCII character Z)
+    --
+    -- For example, "9502192015Z" and "199502192015Z" represent
+    -- 8:15pm GMT on 19 February 1995. Years after 1999 must use
+    -- the four digit year format. Years 1900-1999 may use the
+    -- two or four digit format.
+
+-- definitions for information modules
+MODULE-IDENTITY MACRO ::=
+BEGIN
+    TYPE NOTATION ::=
+                  "LAST-UPDATED" value(Update ExtUTCTime)
+                  "ORGANIZATION" Text
+                  "CONTACT-INFO" Text
+                  "DESCRIPTION" Text
+                  RevisionPart
+
+    VALUE NOTATION ::=
+                  value(VALUE OBJECT IDENTIFIER)
+
+    RevisionPart ::=
+                  Revisions
+                | empty
+    Revisions ::=
+                  Revision
+                | Revisions Revision
+    Revision ::=
+                  "REVISION" value(Update ExtUTCTime)
+                  "DESCRIPTION" Text
+
+    -- a character string as defined in section 3.1.1
+    Text ::= value(IA5String)
+END
+
+OBJECT-IDENTITY MACRO ::=
+BEGIN
+    TYPE NOTATION ::=
+                  "STATUS" Status
+                  "DESCRIPTION" Text
+
+                  ReferPart
+
+    VALUE NOTATION ::=
+                  value(VALUE OBJECT IDENTIFIER)
+
+    Status ::=
+                  "current"
+                | "deprecated"
+                | "obsolete"
+
+    ReferPart ::=
+                  "REFERENCE" Text
+                | empty
+
+    -- a character string as defined in section 3.1.1
+    Text ::= value(IA5String)
+END
+
+-- names of objects
+-- (Note that these definitions of ObjectName and NotificationName
+--  are not to be IMPORTed by MIB modules.)
+ObjectName ::=
+    OBJECT IDENTIFIER
+
+NotificationName ::=
+    OBJECT IDENTIFIER
+
+-- syntax of objects
+
+-- the "base types" defined here are:
+--   3 built-in ASN.1 types: INTEGER, OCTET STRING, OBJECT IDENTIFIER
+--   8 application-defined types: Integer32, IpAddress, Counter32,
+--              Gauge32, Unsigned32, TimeTicks, Opaque, and Counter64
+
+ObjectSyntax ::=
+    CHOICE {
+        simple
+            SimpleSyntax,
+          -- note that SEQUENCEs for conceptual tables and
+          -- rows are not mentioned here...
+
+        application-wide
+            ApplicationSyntax
+    }
+
+-- built-in ASN.1 types
+
+SimpleSyntax ::=
+    CHOICE {
+        -- INTEGERs with a more restrictive range
+        -- may also be used
+        integer-value               -- includes Integer32
+            INTEGER (-2147483648..2147483647),
+        -- OCTET STRINGs with a more restrictive size
+        -- may also be used
+        string-value
+            OCTET STRING (SIZE (0..65535)),
+        objectID-value
+            OBJECT IDENTIFIER
+    }
+
+-- indistinguishable from INTEGER, but never needs more than
+-- 32-bits for a two's complement representation
+Integer32 ::=
+        INTEGER (-2147483648..2147483647)
+
+-- application-wide types
+
+ApplicationSyntax ::=
+    CHOICE {
+        ipAddress-value
+            IpAddress,
+        counter-value
+            Counter32,
+        timeticks-value
+            TimeTicks,
+        arbitrary-value
+            Opaque,
+        big-counter-value
+            Counter64,
+        unsigned-integer-value  -- includes Gauge32
+            Unsigned32
+    }
+
+-- in network-byte order
+
+-- (this is a tagged type for historical reasons)
+-- (this is a tagged type for historical reasons)
+IpAddress ::=
+    [APPLICATION 0]
+        IMPLICIT OCTET STRING (SIZE (4))
+
+-- this wraps
+Counter32 ::=
+    [APPLICATION 1]
+        IMPLICIT INTEGER (0..4294967295)
+
+-- this doesn't wrap
+Gauge32 ::=
+    [APPLICATION 2]
+        IMPLICIT INTEGER (0..4294967295)
+
+-- an unsigned 32-bit quantity
+-- indistinguishable from Gauge32
+Unsigned32 ::=
+    [APPLICATION 2]
+        IMPLICIT INTEGER (0..4294967295)
+
+-- hundredths of seconds since an epoch
+TimeTicks ::=
+    [APPLICATION 3]
+        IMPLICIT INTEGER (0..4294967295)
+
+-- for backward-compatibility only
+Opaque ::=
+    [APPLICATION 4]
+        IMPLICIT OCTET STRING
+
+-- for counters that wrap in less than one hour with only 32 bits
+Counter64 ::=
+    [APPLICATION 6]
+        IMPLICIT INTEGER (0..18446744073709551615)
+
+-- definition for objects
+OBJECT-TYPE MACRO ::=
+BEGIN
+    TYPE NOTATION ::=
+                  "SYNTAX" Syntax
+                  UnitsPart
+                  "MAX-ACCESS" Access
+                  "STATUS" Status
+                  "DESCRIPTION" Text
+                  ReferPart
+
+                  IndexPart
+                  DefValPart
+
+    VALUE NOTATION ::=
+                  value(VALUE ObjectName)
+
+    Syntax ::=   -- Must be one of the following:
+                       -- a base type (or its refinement),
+                       -- a textual convention (or its refinement), or
+                       -- a BITS pseudo-type
+                   type
+                | "BITS" "{" NamedBits "}"
+
+    NamedBits ::= NamedBit
+                | NamedBits "," NamedBit
+
+    NamedBit ::=  identifier "(" number ")" -- number is nonnegative
+
+    UnitsPart ::=
+                  "UNITS" Text
+                | empty
+
+    Access ::=
+                  "not-accessible"
+                | "accessible-for-notify"
+                | "read-only"
+                | "read-write"
+                | "read-create"
+
+    Status ::=
+                  "current"
+                | "deprecated"
+                | "obsolete"
+
+    ReferPart ::=
+                  "REFERENCE" Text
+                | empty
+
+    IndexPart ::=
+                  "INDEX"    "{" IndexTypes "}"
+                | "AUGMENTS" "{" Entry      "}"
+                | empty
+    IndexTypes ::=
+                  IndexType
+                | IndexTypes "," IndexType
+    IndexType ::=
+                  "IMPLIED" Index
+                | Index
+
+    Index ::=
+                    -- use the SYNTAX value of the
+                    -- correspondent OBJECT-TYPE invocation
+                  value(ObjectName)
+    Entry ::=
+                    -- use the INDEX value of the
+                    -- correspondent OBJECT-TYPE invocation
+                  value(ObjectName)
+
+    DefValPart ::= "DEFVAL" "{" Defvalue "}"
+                | empty
+
+    Defvalue ::=  -- must be valid for the type specified in
+                  -- SYNTAX clause of same OBJECT-TYPE macro
+                  value(ObjectSyntax)
+                | "{" BitsValue "}"
+
+    BitsValue ::= BitNames
+                | empty
+
+    BitNames ::=  BitName
+                | BitNames "," BitName
+
+    BitName ::= identifier
+
+    -- a character string as defined in section 3.1.1
+    Text ::= value(IA5String)
+END
+
+-- definitions for notifications
+
+NOTIFICATION-TYPE MACRO ::=
+BEGIN
+    TYPE NOTATION ::=
+                  ObjectsPart
+                  "STATUS" Status
+                  "DESCRIPTION" Text
+                  ReferPart
+
+    VALUE NOTATION ::=
+                  value(VALUE NotificationName)
+
+    ObjectsPart ::=
+                  "OBJECTS" "{" Objects "}"
+                | empty
+    Objects ::=
+                  Object
+
+                | Objects "," Object
+    Object ::=
+                  value(ObjectName)
+
+    Status ::=
+                  "current"
+                | "deprecated"
+                | "obsolete"
+
+    ReferPart ::=
+                  "REFERENCE" Text
+                | empty
+
+    -- a character string as defined in section 3.1.1
+    Text ::= value(IA5String)
+END
+
+-- definitions of administrative identifiers
+
+MACRO-DEFINITION ::= { }
+--zeroDotZero    OBJECT-IDENTITY
+--    STATUS     current
+--    DESCRIPTION
+--            "A value used for null identifiers."
+
+END

Added: trunk/asn.1/test/4.asn
==============================================================================
--- (empty file)
+++ trunk/asn.1/test/4.asn	Sun Sep 16 09:36:33 2007
@@ -0,0 +1,344 @@
+SNMPv2-SMI DEFINITIONS ::= BEGIN
+
+-- the path to the root
+
+org            OBJECT IDENTIFIER ::= { iso 3 }  --  "iso" = 1
+dod            OBJECT IDENTIFIER ::= { org 6 }
+internet       OBJECT IDENTIFIER ::= { dod 1 }
+
+directory      OBJECT IDENTIFIER ::= { internet 1 }
+
+mgmt           OBJECT IDENTIFIER ::= { internet 2 }
+mib-2          OBJECT IDENTIFIER ::= { mgmt 1 }
+transmission   OBJECT IDENTIFIER ::= { mib-2 10 }
+
+experimental   OBJECT IDENTIFIER ::= { internet 3 }
+
+private        OBJECT IDENTIFIER ::= { internet 4 }
+enterprises    OBJECT IDENTIFIER ::= { private 1 }
+
+security       OBJECT IDENTIFIER ::= { internet 5 }
+
+snmpV2         OBJECT IDENTIFIER ::= { internet 6 }
+
+-- transport domains
+snmpDomains    OBJECT IDENTIFIER ::= { snmpV2 1 }
+
+-- transport proxies
+snmpProxys     OBJECT IDENTIFIER ::= { snmpV2 2 }
+
+-- module identities
+snmpModules    OBJECT IDENTIFIER ::= { snmpV2 3 }
+
+-- Extended UTCTime, to allow dates with four-digit years
+-- (Note that this definition of ExtUTCTime is not to be IMPORTed
+--  by MIB modules.)
+ExtUTCTime ::= OCTET STRING(SIZE(11 | 13))
+    -- format is YYMMDDHHMMZ or YYYYMMDDHHMMZ
+
+    --   where: YY   - last two digits of year (only years
+    --                 between 1900-1999)
+    --          YYYY - last four digits of the year (any year)
+    --          MM   - month (01 through 12)
+    --          DD   - day of month (01 through 31)
+    --          HH   - hours (00 through 23)
+    --          MM   - minutes (00 through 59)
+    --          Z    - denotes GMT (the ASCII character Z)
+    --
+    -- For example, "9502192015Z" and "199502192015Z" represent
+    -- 8:15pm GMT on 19 February 1995. Years after 1999 must use
+    -- the four digit year format. Years 1900-1999 may use the
+    -- two or four digit format.
+
+-- definitions for information modules
+
+MODULE-IDENTITY MACRO ::=
+BEGIN
+    TYPE NOTATION ::=
+                  "LAST-UPDATED" value(Update ExtUTCTime)
+                  "ORGANIZATION" Text
+                  "CONTACT-INFO" Text
+                  "DESCRIPTION" Text
+                  RevisionPart
+
+    VALUE NOTATION ::=
+                  value(VALUE OBJECT IDENTIFIER)
+
+    RevisionPart ::=
+                  Revisions
+                | empty
+    Revisions ::=
+                  Revision
+                | Revisions Revision
+    Revision ::=
+                  "REVISION" value(Update ExtUTCTime)
+                  "DESCRIPTION" Text
+
+    -- a character string as defined in section 3.1.1
+    Text ::= value(IA5String)
+END
+
+OBJECT-IDENTITY MACRO ::=
+BEGIN
+    TYPE NOTATION ::=
+                  "STATUS" Status
+                  "DESCRIPTION" Text
+
+                  ReferPart
+
+    VALUE NOTATION ::=
+                  value(VALUE OBJECT IDENTIFIER)
+
+    Status ::=
+                  "current"
+                | "deprecated"
+                | "obsolete"
+
+    ReferPart ::=
+                  "REFERENCE" Text
+                | empty
+
+    -- a character string as defined in section 3.1.1
+    Text ::= value(IA5String)
+END
+
+-- names of objects
+-- (Note that these definitions of ObjectName and NotificationName
+--  are not to be IMPORTed by MIB modules.)
+
+ObjectName ::=
+    OBJECT IDENTIFIER
+
+NotificationName ::=
+    OBJECT IDENTIFIER
+
+-- syntax of objects
+
+-- the "base types" defined here are:
+--   3 built-in ASN.1 types: INTEGER, OCTET STRING, OBJECT IDENTIFIER
+--   8 application-defined types: Integer32, IpAddress, Counter32,
+--              Gauge32, Unsigned32, TimeTicks, Opaque, and Counter64
+
+ObjectSyntax ::=
+    CHOICE {
+        simple
+            SimpleSyntax,
+          -- note that SEQUENCEs for conceptual tables and
+          -- rows are not mentioned here...
+
+        application-wide
+            ApplicationSyntax
+    }
+
+-- built-in ASN.1 types
+
+SimpleSyntax ::=
+    CHOICE {
+        -- INTEGERs with a more restrictive range
+        -- may also be used
+        integer-value               -- includes Integer32
+            INTEGER (-2147483648..2147483647),
+        -- OCTET STRINGs with a more restrictive size
+        -- may also be used
+        string-value
+            OCTET STRING (SIZE (0..65535)),
+        objectID-value
+            OBJECT IDENTIFIER
+    }
+
+-- indistinguishable from INTEGER, but never needs more than
+-- 32-bits for a two's complement representation
+Integer32 ::=
+        INTEGER (-2147483648..2147483647)
+
+-- application-wide types
+
+ApplicationSyntax ::=
+    CHOICE {
+        ipAddress-value
+            IpAddress,
+        counter-value
+            Counter32,
+        timeticks-value
+            TimeTicks,
+        arbitrary-value
+            Opaque,
+        big-counter-value
+            Counter64,
+        unsigned-integer-value  -- includes Gauge32
+            Unsigned32
+    }
+
+-- in network-byte order
+
+-- (this is a tagged type for historical reasons)
+IpAddress ::=
+    [APPLICATION 0]
+        IMPLICIT OCTET STRING (SIZE (4))
+
+-- this wraps
+Counter32 ::=
+    [APPLICATION 1]
+        IMPLICIT INTEGER (0..4294967295)
+
+-- this doesn't wrap
+Gauge32 ::=
+    [APPLICATION 2]
+        IMPLICIT INTEGER (0..4294967295)
+
+-- an unsigned 32-bit quantity
+-- indistinguishable from Gauge32
+Unsigned32 ::=
+    [APPLICATION 2]
+        IMPLICIT INTEGER (0..4294967295)
+
+-- hundredths of seconds since an epoch
+TimeTicks ::=
+    [APPLICATION 3]
+        IMPLICIT INTEGER (0..4294967295)
+
+-- for backward-compatibility only
+Opaque ::=
+    [APPLICATION 4]
+        IMPLICIT OCTET STRING
+
+-- for counters that wrap in less than one hour with only 32 bits
+Counter64 ::=
+    [APPLICATION 6]
+        IMPLICIT INTEGER (0..18446744073709551615)
+
+-- definition for objects
+
+OBJECT-TYPE MACRO ::=
+BEGIN
+    TYPE NOTATION ::=
+                  "SYNTAX" Syntax
+                  UnitsPart
+                  "MAX-ACCESS" Access
+                  "STATUS" Status
+                  "DESCRIPTION" Text
+                  ReferPart
+
+                  IndexPart
+                  DefValPart
+
+    VALUE NOTATION ::=
+                  value(VALUE ObjectName)
+
+    Syntax ::=   -- Must be one of the following:
+                       -- a base type (or its refinement),
+                       -- a textual convention (or its refinement), or
+                       -- a BITS pseudo-type
+                   type
+                | "BITS" "{" NamedBits "}"
+
+    NamedBits ::= NamedBit
+                | NamedBits "," NamedBit
+
+    NamedBit ::=  identifier "(" number ")" -- number is nonnegative
+
+    UnitsPart ::=
+                  "UNITS" Text
+                | empty
+
+    Access ::=
+                  "not-accessible"
+                | "accessible-for-notify"
+                | "read-only"
+                | "read-write"
+                | "read-create"
+
+    Status ::=
+                  "current"
+                | "deprecated"
+                | "obsolete"
+
+    ReferPart ::=
+                  "REFERENCE" Text
+                | empty
+
+    IndexPart ::=
+                  "INDEX"    "{" IndexTypes "}"
+                | "AUGMENTS" "{" Entry      "}"
+                | empty
+    IndexTypes ::=
+                  IndexType
+                | IndexTypes "," IndexType
+    IndexType ::=
+                  "IMPLIED" Index
+                | Index
+
+    Index ::=
+                    -- use the SYNTAX value of the
+                    -- correspondent OBJECT-TYPE invocation
+                  value(ObjectName)
+    Entry ::=
+                    -- use the INDEX value of the
+                    -- correspondent OBJECT-TYPE invocation
+                  value(ObjectName)
+
+    DefValPart ::= "DEFVAL" "{" Defvalue "}"
+                | empty
+
+    Defvalue ::=  -- must be valid for the type specified in
+                  -- SYNTAX clause of same OBJECT-TYPE macro
+                  value(ObjectSyntax)
+                | "{" BitsValue "}"
+
+    BitsValue ::= BitNames
+                | empty
+
+    BitNames ::=  BitName
+                | BitNames "," BitName
+
+    BitName ::= identifier
+
+    -- a character string as defined in section 3.1.1
+    Text ::= value(IA5String)
+END
+
+-- definitions for notifications
+
+NOTIFICATION-TYPE MACRO ::=
+BEGIN
+    TYPE NOTATION ::=
+                  ObjectsPart
+                  "STATUS" Status
+                  "DESCRIPTION" Text
+                  ReferPart
+
+    VALUE NOTATION ::=
+                  value(VALUE NotificationName)
+
+    ObjectsPart ::=
+                  "OBJECTS" "{" Objects "}"
+                | empty
+    Objects ::=
+                  Object
+
+                | Objects "," Object
+    Object ::=
+                  value(ObjectName)
+
+    Status ::=
+                  "current"
+                | "deprecated"
+                | "obsolete"
+
+    ReferPart ::=
+                  "REFERENCE" Text
+                | empty
+
+    -- a character string as defined in section 3.1.1
+    Text ::= value(IA5String)
+END
+
+-- definitions of administrative identifiers
+
+--zeroDotZero    OBJECT-IDENTITY
+--    STATUS     current
+--    DESCRIPTION
+--            "A value used for null identifiers."
+--    ::= { 0 0 }
+
+END



More information about the Cl-net-snmp-cvs mailing list