-- SECTION 1: Top Level Definitions


CENTILLION-FILTERS-MIB DEFINITIONS ::= BEGIN

-- Centillion Filters MIB Release 2.0.5
-- Revision 04/18/00

-- Copyright 1994-2000 Nortel Networks, Inc.
-- All rights reserved.
-- This Bay Networks SNMP Management Information Base Specification
-- (Specification) embodies Bay Networks' confidential and
-- proprietary intellectual property. Bay Networks retains all
-- title and ownership in the Specification, including any
-- revisions.

-- This Specification is supplied "AS IS," and Bay Networks makes
-- no warranty, either express or implied, as to the use,
-- operation, condition, or performance of the Specification.

-- This file defines the MIB for objects for maintenance of the filter
-- tables and statstics.

-- Imports

IMPORTS
	DisplayString
		FROM RFC1213-MIB
	OBJECT-TYPE
		FROM RFC-1212
	StatusIndicator, sysConfig
		FROM CENTILLION-ROOT-MIB;


-- Textual Conventions

-- General filter group names are user-defined ASCII strings up to
-- 8 characters.

GeneralFilterName ::= DisplayString (SIZE (8))

-- NetBIOS filter names are blank padded ASCII strings of 16
-- characters.

NetbiosFilterName ::= DisplayString (SIZE(16))

-- NetBIOS Filter actions. Frames are either discarded or forwarded
-- according to the name and action

NetbiosFilterAction ::=
	INTEGER {
		discard(1),
		forward(2)
	}


-- Groups

filterGroup	OBJECT IDENTIFIER ::= { sysConfig 11 }


-- SECTION 2: General Filter Group Table

-- This section defines the filter group table. Filter groups are composed
-- of some number of filter entries. Each filter group is identified by a
-- unique filter group name.

filterGroupTable OBJECT-TYPE
	SYNTAX	SEQUENCE OF FilterGroupEntry
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION
		"Filter Group Table. Entries are added into the group by
		specifying values for all objects with the exception
		of the filterGroupMonitorDests and filterGroupAdditionalDests
		objects. Entries are deleted simply by specifying the
		appropriate filterGroupStatus value."
	::= { filterGroup 1 }

filterGroupEntry OBJECT-TYPE
	SYNTAX	FilterGroupEntry
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION
		"An entry in the filter group table. Table entries are indexed
		by the unique user-defined group name, and the filter entry
		index as assigned by the system."
	INDEX	{ filterGroupName, filterGroupIndex }
	--	INDEX	{ IMPLIED filterGroupName, filterGroupIndex }
	::= { filterGroupTable 1 }

FilterGroupEntry ::= SEQUENCE {
	filterGroupName
		GeneralFilterName,
	filterGroupIndex
		INTEGER,
	filterGroupStatus
		StatusIndicator,
	filterGroupMatch
		INTEGER,
	filterGroupType
		INTEGER,
	filterGroupOffset
		INTEGER,
	filterGroupValue
		OCTET STRING,
	filterGroupForward
		INTEGER,
	filterGroupNextIfMatch
		INTEGER,
	filterGroupNextIfFail
		INTEGER,
	filterGroupMonitorDests
		OCTET STRING,
	filterGroupAdditionalDests
		OCTET STRING,
	filterGroupAlternateDestination
		OCTET STRING,
	filterGroupAdditionalDestinations
		OCTET STRING,
    filterGroupPriority
        INTEGER
	}

filterGroupName OBJECT-TYPE
	SYNTAX	GeneralFilterName
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
		"A user-defined unique ASCII string identifying the filter
		group."
	::= { filterGroupEntry 1 }

filterGroupIndex OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
		"The index of the filter entry within the filter group. Any
		filter group entry is uniquely identifable by the group nam
		and index."
	::= { filterGroupEntry 2 }

filterGroupStatus OBJECT-TYPE
	SYNTAX	StatusIndicator
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
		"The status of this filter group entry. Entries may be
		deleted by setting this object to invalid(2)."
	::= { filterGroupEntry 3 }

filterGroupMatch OBJECT-TYPE
	SYNTAX	INTEGER {
		lt(1),		-- match if less than
		eq(2),		-- match if equal
		le(3),		-- match if less than or equal
		gt(4),		-- match if greater than
		ne(5),		-- match if not equal
		ge(6)		-- match if greater than or equal
		}
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
		"The match condition for the filter. Match conditions are in
		the form of the usual logical operators."
	::= { filterGroupEntry 4 }

filterGroupType OBJECT-TYPE
	SYNTAX	INTEGER {
		macFilter(1),	-- filter offset begins at the MAC header
		llcFilter(2),	-- filter offset from end of RIF
		vlanFilter(3)   -- vlan filter
		}
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
		"The type of filter. MAC filters are defined from the start
		of the MAC frame. LLC filters are defined from the start
                of the LLC header (after RIF). VLAN filters operate on
                a packet's VLAN classification parameters. For a valid
                VLAN filter, filterGroupOffset be set to 0, and
                filterGroupValue must contain exactly four bytes of VLAN 
                filter data as shown below:

            Octet 1
                 Defines the user priority match criteria for VLAN
                 filter. Valid values are 0x01 through 0xFF. Each bit
                 in the octet corresponds to one of the eight available
                 user priority level as defined by the 802.1Q draft
                 specification. The least significant bit represents
                 priority zero, and the most significant bit 
                 represents priority seven.

            Octet 2
                 Defines the Canonical Format Indicator (CFI) match 
                 criteria for VLAN filter. Possible values are 0x00, 0x01 
                 and 0xFF. The value 0xFF indicates the switch should 
                 ignore CFI value when filtering.

            Octet 3 and 4
                 Define 12-bit VLAN ID match criteria for VLAN filter.
                 Valid values are 0x001 through 0xFFF."

	::= { filterGroupEntry 5 }

filterGroupOffset OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
		"The byte offset from the beginning of the header to the 
		value to filter."
	::= { filterGroupEntry 6 }

filterGroupValue OBJECT-TYPE
	SYNTAX	OCTET STRING (SIZE (1..12))
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
		"The filter value field. The value is specified as a 
		hexadecimal string up to 12 bytes."
	::= { filterGroupEntry 7 }

filterGroupForward OBJECT-TYPE
	SYNTAX	INTEGER {
		normClear(1),	-- normal forwarding cleared
		alt(2),		-- forward to alternate card/ports
		add(3),		-- forward to addiitional card/ports
		addAlt(4),	-- forward to additional and alt card/ports
		norm(5),	-- forward using normal rules
		normAlt(6),	-- forward to normal and alt card/ports
		normAdd(7), 	-- forward to normal and add card/ports
		normAddAlt(8),	-- forward to norm+add+alt card/ports
		drop(9)		-- frame is dropped
		}
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
		"The forwarding rule for the filter. Forward to normal
		indicates that the frame should be forwarded as usual."
	::= { filterGroupEntry 8 }

filterGroupNextIfMatch OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
		"The next filter entry as referenced by the filter index
		to apply if the filter match succeeds. An entry of 0 indicates
		that filtering ends for the packet. An entry whose value
		is larger than the number of filters in the group indicates
		that the next filter entry to apply is the next filter
		group (if any) enabled on the port."
	::= { filterGroupEntry 9 }

filterGroupNextIfFail OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
		"The next filter entry as referenced by the filter index
		to apply if the filter match fails. An entry of 0 indicates
		that filtering ends for the packet. An entry whose value
		is larger than the number of filters in the group indicates
		that the next filter entry to apply is the next filter
		group (if any) enabled on the port."
	::= { filterGroupEntry 10 }

filterGroupAdditionalDests OBJECT-TYPE
	SYNTAX	OCTET STRING (SIZE (0..256))
	ACCESS	read-write
	STATUS	deprecated
	DESCRIPTION
		"This will be replaced by filterGroupAdditionalDestions.
		A list of up to 256 pairs of additional cards and ports 
		to send packets matching this filter. Each unsigned int8 
		is formatted as follows: 
		the high-order 4 bits represent the card number, the low
		order 4 bits are the port number."
	::= { filterGroupEntry 11 }

filterGroupMonitorDests OBJECT-TYPE
	SYNTAX	OCTET STRING (SIZE (0..1))
	ACCESS	read-write
	STATUS 	deprecated	
	DESCRIPTION
		"This will be replaced by filterGroupAlternateDestination.
		A pair of the monitoring card and port to send packets
		matching this filter. Each unsigned int8 is formatted 
		as follows:
		the high-order 4 bits represent the card number, the low
		order 4 bits are the port number."
	::= { filterGroupEntry 12 }

filterGroupAdditionalDestinations OBJECT-TYPE
	SYNTAX	OCTET STRING (SIZE (0..512))
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
		"For 24 ports support. This is to replace 
		filterGroupAdditionalDests. Setting either 
		filterGroupAdditionalDests or filterGroupAlternateDestination 
		is enough. And if both are set, the one set later will be 
		in effect. Make sure that even number of octets are given.
		A list of up to 256 pairs of additional cards and ports 
		to send packets matching this filter. Each pair of octets 
		is formatted as follows: 
		the high-order octet represent the card number, the low
		order octet is the port number."
	::= { filterGroupEntry 13 }

filterGroupAlternateDestination OBJECT-TYPE
	SYNTAX	OCTET STRING (SIZE (0..2))
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
		"For 24 ports support. This is to replace 
		filterGroupMonitorDests. Setting either filterGroupMonitorDests
		filterGroupAlternateDestination is enough. And if both
		are set, the one set later will be in effect.
		Make sure that even number of octets are given.
		A pair of the monitoring card and port to send packets
		matching this filter. Each pair of octets is formatted 
		as follows:
		the high-order byte represent the card number, the low
		order byte is the port number."
	::= { filterGroupEntry 14 }
 
filterGroupPriority OBJECT-TYPE
    SYNTAX  INTEGER {
        priUnchanged(1),    -- forward without changing priority
        priNorm(2),         -- forward with normal priority
        priHigh(3)          -- forward with high priority
        }
    ACCESS  read-write
    STATUS  mandatory
    DESCRIPTION
        "The forwarding priority for the filter. A value of (1) indicates
        that forwarding should occur with the native priority defined by
        802.1Q or other priority classification methods.  Values (2) and
        (3) override all previous priority classification methods."
    ::= { filterGroupEntry 15 }

-- Filter Port Table
--
-- This section defines the inbound filter port table. The inbound filter 
-- port table defines the active filter groups associated with the 
-- inbound packets received by a  card and port. Filters are
-- configured by first establishing appropriate filter groups, then
-- applying the groups to some number of cards and ports using this table.


filterPortTable OBJECT-TYPE
	SYNTAX	SEQUENCE OF FilterPortEntry
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION
		"Input Filter Port Table."
	::= { filterGroup 2 }

filterPortEntry OBJECT-TYPE
	SYNTAX	FilterPortEntry
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION
		"An entry in the filter group table. Table entries are indexed
		by the unique user-defined group name, and the filter entry
		index as assigned by the system."
	INDEX	{ filterPortCardNumber, filterPortPortNumber, filterPortIndex }
	::= { filterPortTable 1 }

FilterPortEntry ::= SEQUENCE {
	filterPortCardNumber
		INTEGER,
	filterPortPortNumber
		INTEGER,
	filterPortIndex
		INTEGER,
	filterPortStatus
		StatusIndicator,
	filterPortGroupName
		GeneralFilterName
	}

filterPortCardNumber OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
		"The card number to which the filters apply."
	::= { filterPortEntry 1}

filterPortPortNumber OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
		"The port number to which the filters apply."
	::= { filterPortEntry 2 }

filterPortIndex OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
		"A unique value for each filter group within the port."
	::= { filterPortEntry 3 }

filterPortStatus OBJECT-TYPE
	SYNTAX	StatusIndicator
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
		"The status of this filter port entry. Entries may be
		deleted by setting this object to invalid(2)."
	::= { filterPortEntry 4 }

filterPortGroupName OBJECT-TYPE
	SYNTAX	GeneralFilterName
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
		"The filter port group name."
	::= { filterPortEntry 5 }


-- SECTION 3: NetBios Filter Tables

-- This section defines the NetBIOS Name filter table. The table contains
-- a list of NetBIOS names, along with the action taken upon matching
-- the name. There are two tables. One listed by card and port numbers, 
-- the other is based upon virtual ring number.

-- NetBios Filter Port Table

netbiosFilterPortTable OBJECT-TYPE
	SYNTAX	SEQUENCE OF NetbiosFilterPortEntry
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION
		"The NetBIOS name filter table indexed by card and port
		numbers. "
	::= { filterGroup 3 }

netbiosFilterPortEntry OBJECT-TYPE
	SYNTAX	NetbiosFilterPortEntry
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION
		"An entry in the NetBios filter port table. Table entries
		are indexed by the card, port and PortIndex as assigned
		by the system."
	INDEX	{ netbiosFilterPortCardNumber, netbiosFilterPortPortNumber,
		  netbiosFilterPortIndex }
	::= { netbiosFilterPortTable 1 }

NetbiosFilterPortEntry ::= SEQUENCE {
	netbiosFilterPortCardNumber
		INTEGER,
	netbiosFilterPortPortNumber
		INTEGER,
	netbiosFilterPortIndex
		INTEGER,
	netbiosFilterPortStatus
		StatusIndicator,
	netbiosFilterPortName
		NetbiosFilterName,
	netbiosFilterPortAction
		NetbiosFilterAction
	}

netbiosFilterPortCardNumber OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
		"The card number to which the filters apply."
	::= { netbiosFilterPortEntry 1}

netbiosFilterPortPortNumber OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
		"The port number to which the filters apply."
	::= { netbiosFilterPortEntry 2 }

netbiosFilterPortIndex OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
		"A unique value for each filter group within the port."
	::= { netbiosFilterPortEntry 3 }

netbiosFilterPortStatus OBJECT-TYPE
	SYNTAX	StatusIndicator
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
		"The status of this NetBIOS filter entry. Entries may be
		deleted by setting this object to invalid(2)."
	::= { netbiosFilterPortEntry 4 }

netbiosFilterPortName OBJECT-TYPE
	SYNTAX	NetbiosFilterName
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
		"The NetBIOS name to match for filtering. The name will
		be blank padded."
	::= { netbiosFilterPortEntry 5 }

netbiosFilterPortAction OBJECT-TYPE
	SYNTAX	NetbiosFilterAction
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
		"The action to take upon matching the name filter."
	::= { netbiosFilterPortEntry 6 }


-- NetBios Filter Ring Table

netbiosFilterRingTable OBJECT-TYPE
	SYNTAX	SEQUENCE OF NetbiosFilterRingEntry
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION
		"The NetBIOS name filter table indexed by ring number."
	::= { filterGroup 4 }

netbiosFilterRingEntry OBJECT-TYPE
	SYNTAX	NetbiosFilterRingEntry
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION
		"An entry in the NetBios filter port table. Table entries
		are indexed by ring number and PortIndex as assigned
		by the system."
	INDEX	{ netbiosFilterRingNumber,  netbiosFilterRingIndex }
	::= { netbiosFilterRingTable 1 }

NetbiosFilterRingEntry ::= SEQUENCE {
	netbiosFilterRingNumber
		INTEGER,
	netbiosFilterRingIndex
		INTEGER,
	netbiosFilterRingStatus
		StatusIndicator,
	netbiosFilterRingName
		NetbiosFilterName,
	netbiosFilterRingAction
		NetbiosFilterAction
	}

netbiosFilterRingNumber OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
		"The ring number to which the filters apply."
	::= { netbiosFilterRingEntry 1}

netbiosFilterRingIndex OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
		"A unique value for each filter group within the port."
	::= { netbiosFilterRingEntry 2 }

netbiosFilterRingStatus OBJECT-TYPE
	SYNTAX	StatusIndicator
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
		"The status of this NetBIOS filter entry. Entries may be
		deleted by setting this object to invalid(2)."
	::= { netbiosFilterRingEntry 3 }

netbiosFilterRingName OBJECT-TYPE
	SYNTAX	NetbiosFilterName
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
		"The NetBIOS name to match for filtering. The name will be
		blank padded."
	::= { netbiosFilterRingEntry 4 }

netbiosFilterRingAction OBJECT-TYPE
	SYNTAX	NetbiosFilterAction
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
		"The action to take upon matching the name filter."
	::= { netbiosFilterRingEntry 5 }


-- Output Filter Port Table
--
-- This section defines the output filter port table. The output filter 
-- port table defines the active filter groups associated with the
-- outbound packets forwarded by a card and port. Filters 
-- are configured by first establishing appropriate filter groups, then
-- applying the groups to some number of cards and ports using this table.


outputFilterPortTable OBJECT-TYPE
      SYNTAX  SEQUENCE OF OutputFilterPortEntry
      ACCESS  not-accessible
      STATUS  mandatory
      DESCRIPTION
              "Output Filter Port Table."
      ::= { filterGroup 5 }

outputFilterPortEntry OBJECT-TYPE
      SYNTAX  OutputFilterPortEntry
      ACCESS  not-accessible
      STATUS  mandatory
      DESCRIPTION
              "An entry in the filter group table. Table entries are
              indexed by the unique user-defined group name, and the filter entry
              index as assigned by the system."
      INDEX   { outputFilterPortCardNumber, outputFilterPortPortNumber,
outputFilterPortIndex }
      ::= { outputFilterPortTable 1 }

OutputFilterPortEntry ::= SEQUENCE {
      outputFilterPortCardNumber
              INTEGER,
      outputFilterPortPortNumber
              INTEGER,
      outputFilterPortIndex
              INTEGER,
      outputFilterPortStatus
              StatusIndicator,
      outputFilterPortGroupName
              GeneralFilterName
      }

outputFilterPortCardNumber OBJECT-TYPE
      SYNTAX  INTEGER
      ACCESS  read-write
      STATUS  mandatory
      DESCRIPTION
              "The card number to which the filters apply."
      ::= { outputFilterPortEntry 1}

outputFilterPortPortNumber OBJECT-TYPE
      SYNTAX  INTEGER
      ACCESS  read-write
      STATUS  mandatory
      DESCRIPTION
              "The port number to which the filters apply."
      ::= { outputFilterPortEntry 2 }

outputFilterPortIndex OBJECT-TYPE
      SYNTAX  INTEGER
      ACCESS  read-write
      STATUS  mandatory
      DESCRIPTION
              "A unique value for each filter group within the port."
      ::= { outputFilterPortEntry 3 }

outputFilterPortStatus OBJECT-TYPE
      SYNTAX  StatusIndicator
      ACCESS  read-write
      STATUS  mandatory
      DESCRIPTION
              "The status of this filter port entry. Entries may be
              deleted by setting this object to invalid(2)."
      ::= { outputFilterPortEntry 4 }

outputFilterPortGroupName OBJECT-TYPE
      SYNTAX  GeneralFilterName
      ACCESS  read-write
      STATUS  mandatory
      DESCRIPTION
              "The filter port group name."
      ::= { outputFilterPortEntry 5 }


END


