FOUNDRY-SN-IP-ACL-MIB DEFINITIONS ::= BEGIN

-- Imports

IMPORTS
	IpAddress		
		FROM RFC1155-SMI
	OBJECT-TYPE     
		FROM RFC-1212
	Counter64		
		FROM SNMPv2-SMI
	snIp			
		FROM FOUNDRY-SN-ROOT-MIB;

	--  textual conventions
		DisplayString ::= OCTET STRING

	--  RtrStatus Values
		RtrStatus ::= INTEGER { disabled(0), enabled (1) }

	--  Row Status
	    SnRowStatus ::= INTEGER { 
							    other(1),
							    valid(2),
							    delete(3),
							    create(4)
						      }

	--  Action 
		Action ::= INTEGER { deny(0), permit(1) }

    --  Boolean Values
         TruthVal ::= INTEGER { false (0), true (1)  }

	--  ACL number
		AclNumber ::= INTEGER (1..199)

	--  Operator
		Operator ::= INTEGER { eq(0), neq(1), lt(2), gt(3), range(4), undefined(7) }

	--  IP Protocol
		IpProtocol ::= INTEGER (0..255)

	-- Precedence Value
		PrecedenceValue ::= INTEGER { critical(5), flash(3), flashoverride(4),
									  immediate(2), internet(6), network(7),
									  priority(1), routine(0), undefined(8) }
									
	-- Tos Value
		TosValue ::= INTEGER {
						normal(0),
						minMonetaryCost(1),
						maxReliability(2),
						tosValue3(3),
						maxThroughput(4),
						tosValue5(5),
						tosValue6(6),
						tosValue7(7),
						minDelay(8),
						tosValue9(9),
						tosValue10(10),
						tosValue11(11),
						tosValue12(12),
						tosValue13(13),
						tosValue14(14),
						tosValue15(15),
						undefined(16)
							}

	--  Direction 
		Direction ::= INTEGER { inbound(0), outbound(1) }
		
------Access Control List

snAgAcl		OBJECT IDENTIFIER ::= { snIp 15 }

snAgAclGlobal	OBJECT IDENTIFIER ::= { snAgAcl 1 }

snAgAclGblCurRowIndex OBJECT-TYPE
	SYNTAX	INTEGER 
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The current row index of the ACL table entry."
	::= { snAgAclGlobal 1 }

--
-- ACL Table
--

snAgAclTable       OBJECT-TYPE
	SYNTAX  SEQUENCE OF SnAgAclEntry
	ACCESS  not-accessible
	STATUS  mandatory
	DESCRIPTION
		"Table of Access Control List"
	::= { snAgAcl 2 }

snAgAclEntry       OBJECT-TYPE
	SYNTAX  SnAgAclEntry
	ACCESS  not-accessible
	STATUS  mandatory
	DESCRIPTION
		"An entry in the IP access control list table."
	INDEX   { snAgAclIndex }
	::= { snAgAclTable 1 }

SnAgAclEntry ::= SEQUENCE {
	snAgAclIndex
		INTEGER,
	snAgAclNumber
		AclNumber,
	snAgAclName
		DisplayString,
	snAgAclAction              
		Action,
	snAgAclProtocol            
		IpProtocol,
	snAgAclSourceIp
		IpAddress,
	snAgAclSourceMask
		IpAddress,
	snAgAclSourceOperator
		Operator,
	snAgAclSourceOperand1
		INTEGER,
	snAgAclSourceOperand2
		INTEGER,
	snAgAclDestinationIp
		IpAddress,
	snAgAclDestinationMask
		IpAddress,
	snAgAclDestinationOperator
		Operator,
	snAgAclDestinationOperand1
		INTEGER,
	snAgAclDestinationOperand2
		INTEGER,
	snAgAclPrecedence
		PrecedenceValue,
	snAgAclTos
		TosValue,
	snAgAclEstablished
		RtrStatus,
	snAgAclLogOption
		TruthVal,
	snAgAclStandardFlag
		TruthVal,
	snAgAclRowStatus
		SnRowStatus,
	snAgAclFlowCounter
		Counter64,
	snAgAclPacketCounter
		Counter64,
	snAgAclComments
		DisplayString
	}

snAgAclIndex       OBJECT-TYPE
	SYNTAX  INTEGER
	ACCESS  read-only
	STATUS  mandatory
	DESCRIPTION
		"The access control list item number for an entry.
		This is a unique number that identifies different
		Access list entries combined with the access list
		name and access list number. This one has to be 
		unique even though the name and number are not unique
		for a give access list with same or different source
		address, subnet mask, destination address and destination
		mask, protocol type, action (permit/deny) type and the
		operator (neq, eq, gt and , lt) which makes the index a 
		unique tuple (name, number, itemnumber)."
	::= { snAgAclEntry 1 }

snAgAclNumber       OBJECT-TYPE
	SYNTAX  AclNumber
	ACCESS  read-write
	STATUS  mandatory
	DESCRIPTION
		"The access control list number for an entry.
		The standard access list is in the range <1..99>.
		The extended access list is in the range <100-199>."
	::= { snAgAclEntry 2 }

snAgAclName		OBJECT-TYPE
	SYNTAX  DisplayString (SIZE (0..255))
	ACCESS  read-write
	STATUS  mandatory
	DESCRIPTION
		"ACL name for an entry."
	::= { snAgAclEntry 3 }

snAgAclAction      OBJECT-TYPE
	SYNTAX  Action 
	ACCESS  read-write
	STATUS  mandatory
	DESCRIPTION
		"Action to take if the ip packet matches
		with this access control list."
	::= { snAgAclEntry 4 }

snAgAclProtocol    OBJECT-TYPE
	SYNTAX  IpProtocol
	ACCESS  read-write
	STATUS  mandatory
	DESCRIPTION
		"Transport protocol. 0 means any protocol."
	::= { snAgAclEntry 5 }

snAgAclSourceIp    OBJECT-TYPE
	SYNTAX  IpAddress
	ACCESS  read-write
	STATUS  mandatory
	DESCRIPTION
		"Source IP address."
	::= { snAgAclEntry 6 }

snAgAclSourceMask  OBJECT-TYPE
	SYNTAX  IpAddress
	ACCESS  read-write
	STATUS  mandatory
	DESCRIPTION
		"Source IP subnet mask."
	::= { snAgAclEntry 7 }

snAgAclSourceOperator    OBJECT-TYPE
	SYNTAX  Operator
	ACCESS  read-write
	STATUS  mandatory
	DESCRIPTION
		"Type of comparison to perform.
		for now, this only applys to tcp or udp
		to compare the port number"
	::= { snAgAclEntry 8 }

snAgAclSourceOperand1     OBJECT-TYPE
	SYNTAX  INTEGER(0..65535)
	ACCESS  read-write
	STATUS  mandatory
	DESCRIPTION
		"For now this only refers to transport 
		protocol port number. 0 means NA"
	::= { snAgAclEntry 9 }

snAgAclSourceOperand2     OBJECT-TYPE
	SYNTAX  INTEGER(0..65535)
	ACCESS  read-write
	STATUS  mandatory
	DESCRIPTION
		"For now this only refers to transport 
		protocol port number. 0 means NA"
	::= { snAgAclEntry 10 }

snAgAclDestinationIp      OBJECT-TYPE
	SYNTAX  IpAddress
	ACCESS  read-write
	STATUS  mandatory
	DESCRIPTION
		"Destination IP address."
	::= { snAgAclEntry 11 }

snAgAclDestinationMask    OBJECT-TYPE
	SYNTAX  IpAddress
	ACCESS  read-write
	STATUS  mandatory
	DESCRIPTION
		"Destination IP subnet mask."
	::= { snAgAclEntry 12 }

snAgAclDestinationOperator    OBJECT-TYPE
	SYNTAX  Operator
	ACCESS  read-write
	STATUS  mandatory
	DESCRIPTION
		"Type of comparison to perform.
		for now, this only applys to tcp or udp
		to compare the port number"
	::= { snAgAclEntry 13 }

snAgAclDestinationOperand1     OBJECT-TYPE
	SYNTAX  INTEGER(0..65535)
	ACCESS  read-write
	STATUS  mandatory
	DESCRIPTION
		"For now this only refers to transport 
		protocol port number. 0 means NA"
	::= { snAgAclEntry 14 }

snAgAclDestinationOperand2     OBJECT-TYPE
	SYNTAX  INTEGER(0..65535)
	ACCESS  read-write
	STATUS  mandatory
	DESCRIPTION
		"For now this only refers to transport 
		protocol port number. 0 means NA"
	::= { snAgAclEntry 15 }

snAgAclPrecedence OBJECT-TYPE
	SYNTAX  PrecedenceValue
	ACCESS  read-write
	STATUS  mandatory
	DESCRIPTION
		"This refers to IP precedence value in the range <0-7>
		critical(5), 
		flash(3), 
		flash-override(4), 
		immediate(2), 
		internet(6), 
		network(7), 
		priority(1), 
		routine(0)"
		::= { snAgAclEntry 16 }

snAgAclTos OBJECT-TYPE
	  SYNTAX  TosValue
	  ACCESS  read-write
	  STATUS  mandatory
	  DESCRIPTION
		"This refers to the IP type of service value in range
		<0-15> which is the sum of numeric vlaues of the 
		following options -
		match packets with maximum reliability TOS (2)
		match packets with maximum throughput TOS (4)
		match packets with minimum delay (8)
		match packets with minimum monetary cost TOS (1)
		match packets with normal TOS  (0)"
		::= { snAgAclEntry 17 }

snAgAclEstablished OBJECT-TYPE
	SYNTAX  RtrStatus
	ACCESS  read-write
	STATUS  mandatory
	DESCRIPTION
		"Enable/Disable the filtering of established TCP
		packets of which the ACK or RESET flag is on. This
		additional filter only applies to TCP transport
		protocol."
	::= { snAgAclEntry 18 }

snAgAclLogOption OBJECT-TYPE
	SYNTAX  TruthVal
	ACCESS  read-write
	STATUS  mandatory
	DESCRIPTION
		"Log flag"
	::= { snAgAclEntry 19 }

snAgAclStandardFlag OBJECT-TYPE
	SYNTAX  TruthVal
	ACCESS  read-write
	STATUS  mandatory
	DESCRIPTION
		"Return whether the ACL is standard or extended, 1 for standard ACL"
	::= { snAgAclEntry 20 }

snAgAclRowStatus   OBJECT-TYPE
	SYNTAX  SnRowStatus
	ACCESS  read-write
	STATUS  mandatory
	DESCRIPTION
		"To create or delete a access list
		entry."
	::= { snAgAclEntry 21 }

snAgAclFlowCounter   OBJECT-TYPE
	SYNTAX  Counter64
	ACCESS  read-only
	STATUS  mandatory
	DESCRIPTION
		"Approximate count of flows matching individual ACL entry."
	::= { snAgAclEntry 22 }

snAgAclPacketCounter   OBJECT-TYPE
	SYNTAX  Counter64
	ACCESS  read-only
	STATUS  mandatory
	DESCRIPTION
		"Accurate count of packets matching individual ACL entry."
	::= { snAgAclEntry 23 }

snAgAclComments   OBJECT-TYPE
	SYNTAX  DisplayString (SIZE (0..255))
	ACCESS  read-write
	STATUS  mandatory
	DESCRIPTION
		"Remark description of individual ACL entry."
	::= { snAgAclEntry 24 }

--
-- Acl Port Table

snAgAclBindToPortTable   OBJECT-TYPE
	SYNTAX  SEQUENCE OF SnAgAclBindToPortEntry
	ACCESS  not-accessible
	STATUS  mandatory
	DESCRIPTION
		"Table of ACL binding to port for router"
	::= { snAgAcl 3 }

snAgAclBindToPortEntry       OBJECT-TYPE
	SYNTAX  SnAgAclBindToPortEntry
	ACCESS  not-accessible
	STATUS  mandatory
	DESCRIPTION
		"An entry in the ACL-binding-to-port table."
	INDEX   { 
			   snAgAclPortNum, 
			   snAgAclPortBindDirection
			}
	::= { snAgAclBindToPortTable 1 }

SnAgAclBindToPortEntry ::= SEQUENCE {
	snAgAclPortNum
		INTEGER,
	snAgAclPortBindDirection
		Direction,
	snAgAclNum
		INTEGER,
	snAgAclNameString
		DisplayString,
	snAgBindPortListInVirtualInterface
		OCTET STRING,
	snAgAclPortRowStatus
		SnRowStatus
	}

snAgAclPortNum      OBJECT-TYPE
	SYNTAX  INTEGER
	ACCESS  read-only
	STATUS  mandatory
	DESCRIPTION
		"Binding-to port num, either physical port or virtual interface."
	::= { snAgAclBindToPortEntry 1 }

snAgAclPortBindDirection   OBJECT-TYPE
	SYNTAX  Direction
	ACCESS  read-only
	STATUS  mandatory
	DESCRIPTION
		"ACL port direction, inbound or outbound"
	::= { snAgAclBindToPortEntry 2 }

snAgAclNum      OBJECT-TYPE
	SYNTAX  INTEGER
	ACCESS  read-write
	STATUS  mandatory
	DESCRIPTION
		"Defined ACL number"
	::= { snAgAclBindToPortEntry 3 }

snAgAclNameString      OBJECT-TYPE
	SYNTAX  DisplayString
	ACCESS  read-write
	STATUS  mandatory
	DESCRIPTION
		"Defined ACL name"
	::= { snAgAclBindToPortEntry 4 }

snAgBindPortListInVirtualInterface   OBJECT-TYPE
	SYNTAX  OCTET STRING
	ACCESS  read-write
	STATUS  mandatory
	DESCRIPTION
		"Port list for binding virtual interface"
	::= { snAgAclBindToPortEntry 5 }

snAgAclPortRowStatus   OBJECT-TYPE
	SYNTAX  SnRowStatus
	ACCESS  read-write
	STATUS  mandatory
	DESCRIPTION
		"To create or delete a ACL port entry."
	::= { snAgAclBindToPortEntry 6 }

END
