Message ::=
	SEQUENCE {
		version
			INTEGER ({snmp_version}),

		community
			OCTET STRING,

		pdu
			PDUs
	}


ObjectName ::=
	OBJECT IDENTIFIER

ObjectSyntax ::=
	CHOICE {
		simple
			SimpleSyntax,

		application-wide
			ApplicationSyntax
	}

SimpleSyntax ::=
	CHOICE {
		integer-value
			INTEGER,

		string-value
			OCTET STRING,

		objectID-value
			OBJECT IDENTIFIER
	}

ApplicationSyntax ::=
	CHOICE {
		ipAddress-value
			IpAddress,

		counter-value
			Counter32,

		timeticks-value
			TimeTicks,

		arbitrary-value
			Opaque,

		big-counter-value
			Counter64,

		unsigned-integer-value
			Unsigned32
	}

IpAddress ::=
	[APPLICATION 0]
		IMPLICIT OCTET STRING OPTIONAL ({snmp_helper})

Counter32 ::=
	[APPLICATION 1]
		IMPLICIT INTEGER OPTIONAL

Unsigned32 ::=
	[APPLICATION 2]
		IMPLICIT INTEGER OPTIONAL

Gauge32 ::= Unsigned32 OPTIONAL

TimeTicks ::=
	[APPLICATION 3]
		IMPLICIT INTEGER OPTIONAL

Opaque ::=
	[APPLICATION 4]
		IMPLICIT OCTET STRING OPTIONAL

Counter64 ::=
	[APPLICATION 6]
		IMPLICIT INTEGER OPTIONAL

PDUs ::=
	CHOICE {
		get-request
			GetRequest-PDU,

		get-next-request
			GetNextRequest-PDU,

		get-bulk-request
			GetBulkRequest-PDU,

		response
			Response-PDU,

		set-request
			SetRequest-PDU,

		inform-request
			InformRequest-PDU,

		snmpV2-trap
			SNMPv2-Trap-PDU,

		report
			Report-PDU
	}

GetRequest-PDU ::=
	[0] IMPLICIT PDU OPTIONAL

GetNextRequest-PDU ::=
	[1] IMPLICIT PDU OPTIONAL

Response-PDU ::=
	[2] IMPLICIT PDU OPTIONAL

SetRequest-PDU ::=
	[3] IMPLICIT PDU OPTIONAL

-- [4] is obsolete

GetBulkRequest-PDU ::=
	[5] IMPLICIT PDU OPTIONAL

InformRequest-PDU ::=
	[6] IMPLICIT PDU OPTIONAL

SNMPv2-Trap-PDU ::=
	[7] IMPLICIT PDU OPTIONAL

Report-PDU ::=
	[8] IMPLICIT PDU OPTIONAL

PDU ::=
	SEQUENCE {
		request-id
			INTEGER,

		error-status
			INTEGER,

		error-index
			INTEGER,

		variable-bindings
			VarBindList
	}


VarBind ::=
	SEQUENCE {
		name
			ObjectName,

	CHOICE {
		value
			ObjectSyntax,

		unSpecified
			NULL,

		noSuchObject
			[0] IMPLICIT NULL,

		noSuchInstance
			[1] IMPLICIT NULL,

		endOfMibView
			[2] IMPLICIT NULL
	}
}

VarBindList ::= SEQUENCE OF VarBind
