
-- OK: Everything is fine

-- iso.org.dod.internet.private.enterprise (1.3.6.1.4.1)
-- .spelio.software.asn1c.test (9363.1.5.1)
-- .42

ModuleLAPStorage
	{ iso org(3) dod(6) internet (1) private(4) enterprise(1)
		spelio(9363) software(1) asn1c(5) test(1) 42 }
	DEFINITIONS EXTENSIBILITY IMPLIED ::=
BEGIN

	/*
	 * A package representing a distinguished log line.
	 * It contains
	 *  - a digest of that line (actually, a normalized
	 *    form with bells (\007) in place of variable components),
	 *  - one or more sets of variable parts (presumably with different
	 *    acceptability rules).
	 */
	LogLine ::= SEQUENCE {
		line-digest	IA5String,	-- Log line normal form
		varsets		SEQUENCE SIZE(1..MAX) OF VariablePartSet
	}

	/*
	 * This package contains a set of variable components of a log line.
	 * Each variable component may contain one or more "value samples",
	 * or a range between two samples.
	 */
	VariablePartSet ::= SEQUENCE {
		vparts		SEQUENCE SIZE(0..MAX) OF VariablePart, -- {123,321}
		resolution	ActionItem
	}

	/*
	 * A description of a single variable part.
	 */
	VariablePart ::= CHOICE {
		-- A set of acceptable values
		vset	SET SIZE(1..MAX) OF VisibleString,
		-- A range of acceptable values
		vrange	SEQUENCE {
			from	VisibleString,
			to	VisibleString
		}
	}

	/*
	 * What to do with the log line.
	 */
	ActionItem ::= SEQUENCE {
		accept-as	ENUMERATED {
			unknown,	-- Action yet unknown.
			safe,		-- No action, just move on.
			unsafe,		-- Unsafe message. Inform NOC.
			...
		},
		notify	SEQUENCE {	-- How to notify NOC.
			critical  BOOLEAN,		-- Emit critical message
			email	  SET OF VisibleString,	-- Send emails
			...
		} OPTIONAL
	}

END
