#-MIBFILE: cisco-igmp-filter.mib

CISCO-IGMP-FILTER-MIB DEFINITIONS ::= BEGIN


DisplayString ::=
	OCTET STRING (SIZE(0..255))

PhysAddress ::=
	OCTET STRING

MacAddress ::=
	OCTET STRING (SIZE(6))

TruthValue ::=
	INTEGER {
	true(1),
	false(2)
	}

TestAndIncr ::=
	INTEGER (0..2147483647)

AutonomousType ::=
	OBJECT IDENTIFIER

InstancePointer ::=
	OBJECT IDENTIFIER

VariablePointer ::=
	OBJECT IDENTIFIER

RowPointer ::=
	OBJECT IDENTIFIER

RowStatus ::=
	INTEGER {
	active(1),
	notInService(2),
	notReady(3),
	createAndGo(4),
	createAndWait(5),
	destroy(6)
	}

TimeStamp ::=
	TimeTicks

TimeInterval ::=
	INTEGER (0..2147483647)

DateAndTime ::=
	OCTET STRING (SIZE(8|11))

StorageType ::=
	INTEGER {
	other(1),
	volatile(2),
	nonVolatile(3),
	permanent(4),
	readOnly(5)
	}

TDomain ::=
	OBJECT IDENTIFIER

TAddress ::=
	OCTET STRING (SIZE(1..255))

OwnerString ::=
	OCTET STRING (SIZE(0..255))

InterfaceIndex ::=
	INTEGER (1..2147483647)

InterfaceIndexOrZero ::=
	INTEGER (0..2147483647)

mib-2 OBJECT IDENTIFIER ::= { mgmt 1 }
interfaces OBJECT IDENTIFIER ::= { mib-2 2 }
ifTable OBJECT IDENTIFIER ::= { interfaces 2 }
ifEntry OBJECT IDENTIFIER ::= { ifTable 1 }
ifIndex OBJECT IDENTIFIER ::= { ifEntry 1 }
cisco OBJECT IDENTIFIER ::= { enterprises 9 }
ciscoMgmt OBJECT IDENTIFIER ::= { cisco 9 }
InetAddressType ::=
	INTEGER {
	unknown(0),
	ipv4(1),
	ipv6(2),
	ipv4z(3),
	ipv6z(4),
	dns(16)
	}

InetAddress ::=
	OCTET STRING (SIZE(0..255))

InetAddressIPv4 ::=
	OCTET STRING (SIZE(4))

InetAddressIPv6 ::=
	OCTET STRING (SIZE(16))

InetAddressIPv4z ::=
	OCTET STRING (SIZE(8))

InetAddressIPv6z ::=
	OCTET STRING (SIZE(20))

InetAddressDNS ::=
	OCTET STRING (SIZE(1..255))

InetAddressPrefixLength ::=
	OCTET STRING

InetPortNumber ::=
	OCTET STRING

InetAutonomousSystemNumber ::=
	OCTET STRING

InetScopeType ::=
	INTEGER {
	interfaceLocal(1),
	linkLocal(2),
	subnetLocal(3),
	adminLocal(4),
	siteLocal(5),
	organizationLocal(8),
	global(14)
	}

InetZoneIndex ::=
	OCTET STRING

InetVersion ::=
	INTEGER {
	unknown(0),
	ipv4(1),
	ipv6(2)
	}

ciscoIGMPFilterMIB OBJECT IDENTIFIER ::= { ciscoMgmt 238 }

ciscoIgmpFilterMIBObjects OBJECT IDENTIFIER ::= { ciscoIGMPFilterMIB 1 }

cIgmpFilterGeneral OBJECT IDENTIFIER ::= { ciscoIgmpFilterMIBObjects 1 }

cIgmpFilterInfo OBJECT IDENTIFIER ::= { ciscoIgmpFilterMIBObjects 2 }

cIgmpFilterEditor OBJECT IDENTIFIER ::= { ciscoIgmpFilterMIBObjects 3 }

cIgmpFilterEnable OBJECT-TYPE
	SYNTAX TruthValue
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION "This object controls whether the IGMP filtering
is enabled on the device. A false(2) value will 
prevent the IGMP filtering action on the device."
	::= { cIgmpFilterGeneral 1 }


cIgmpFilterMaxProfiles OBJECT-TYPE
	SYNTAX INTEGER
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION "Indicates the maximum number of profiles supported by
this device.  A value of zero indicates no limitation on
the number of profiles."
	::= { cIgmpFilterGeneral 2 }


cIgmpFilterTable OBJECT-TYPE
	SYNTAX SEQUENCE OF CIgmpFilterEntry
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION "This table contains entries that identify lists of
IP Multicast groups for each profile configured on
the device. 

Each entry contains a range of contiguous IP
Multicast groups associated to a profile index.
Multiple cIgmpFilterEntry may be associated
with the same cIgmpFilterProfileIndex.

All the cIgmpFilterEntry with  the same profile index 
are subjected to the same IGMP filtering action as 
defined in cIgmpFilterProfileAction.

Each profile index may be associated with zero or more 
interfaces through cIgmpFilterInterfaceIfIndex
object in cIgmpFilterInterfaceTable.
The maximum number of entries is determined by
cIgmpFilterMaxProfiles."
	::= { cIgmpFilterInfo 1 }


cIgmpFilterEntry OBJECT-TYPE
	SYNTAX CIgmpFilterEntry
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION "An entry (conceptual row) in the cIgmpFilterTable.

The creation, deletion or modification of an entry
is controlled through the MIB objects defined under
cIgmpFilterEditor group."
	INDEX { cIgmpFilterProfileIndex , cIgmpFilterStartAddressType, cIgmpFilterStartAddress }

	::= { cIgmpFilterTable 1 }

cIgmpFilterEntry ::=
	SEQUENCE {
		cIgmpFilterProfileIndex Unsigned32,
		cIgmpFilterStartAddressType InetAddressType,
		cIgmpFilterStartAddress InetAddress,
		cIgmpFilterEndAddressType InetAddressType,
		cIgmpFilterEndAddress InetAddress,
		cIgmpFilterProfileAction INTEGER
		}

cIgmpFilterProfileIndex OBJECT-TYPE
	SYNTAX INTEGER
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION "Index identifying this entry."
	::= { cIgmpFilterEntry 1 }


cIgmpFilterStartAddressType OBJECT-TYPE
	SYNTAX InetAddressType
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION "This object describes the type of Internet
address used to determine the start address 
of IP multicast group for a profile."
	::= { cIgmpFilterEntry 2 }


cIgmpFilterStartAddress OBJECT-TYPE
	SYNTAX InetAddress
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION "This object describes the start of the IP multicast
group address of a contiguous range which will be
subjected to filtering operation."
	::= { cIgmpFilterEntry 3 }


cIgmpFilterEndAddressType OBJECT-TYPE
	SYNTAX InetAddressType
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION "This object indicates the type of Internet
address used to determine the end address 
of IP multicast group for a profile."
	::= { cIgmpFilterEntry 4 }


cIgmpFilterEndAddress OBJECT-TYPE
	SYNTAX InetAddress
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION "This object indicates the end of the IP multicast
group address of a contiguous range which will be 
subjected to filtering operation."
	::= { cIgmpFilterEntry 5 }


cIgmpFilterProfileAction OBJECT-TYPE
	SYNTAX INTEGER {
	permit(1),
	deny(2)
	}
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION "This object defines the action for
filtering IGMP reports for this profile.

If the object is set to deny(2):
then all IGMP reports associated to IP multicast
groups included in the profile identified by
cIgmpFilterInterfaceProfileIndex will be dropped.

If the object is set to permit(1):
then all IGMP reports associated to IP multicast
groups not included in the profile identified by
cIgmpFilterInterfaceProfileIndex will be dropped."
	::= { cIgmpFilterEntry 6 }


cIgmpFilterInterfaceTable OBJECT-TYPE
	SYNTAX SEQUENCE OF CIgmpFilterInterfaceEntry
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION "This table contains the list of interfaces that can
support IGMP filter feature."
	::= { cIgmpFilterInfo 2 }


cIgmpFilterInterfaceEntry OBJECT-TYPE
	SYNTAX CIgmpFilterInterfaceEntry
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION "Each entry contains the configuration for associating
the IGMP filter profile index with the interface.

An entry is created for each of the IGMP filter capable 
interface on the system.

The entry is removed on removal of corresponding 
interface from system."
	INDEX { ifIndex  }

	::= { cIgmpFilterInterfaceTable 1 }

cIgmpFilterInterfaceEntry ::=
	SEQUENCE {
		cIgmpFilterInterfaceProfileIndex Unsigned32
		}

cIgmpFilterInterfaceProfileIndex OBJECT-TYPE
	SYNTAX INTEGER
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION "Specifies which IGMP filter profile applies to this
interface. If the value of this MIB object matches the 
value of cIgmpFilterProfileIndex in cIgmpFilterTable, 
the corresponding profile configuration will apply to
this interface. 

Agent returns inconsistentValue if this profile 
does not exist in cIgmpFilterTable. 
A value of zero indicates no profile is associated
with corresponding interface.

The filtering action on each interface is also
defined by the associated profile."
	::= { cIgmpFilterInterfaceEntry 1 }


cIgmpFilterEditSpinLock OBJECT-TYPE
	SYNTAX TestAndIncr
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION "This object is used to facilitate modification of
IGMP Filter Editor Group in the CISCO-IGMP-FILTER-MIB 
module by multiple managers.  In particular, it is 
useful when modifying the value of the cIgmpFilterEditor 
object. 

The procedure for modifying the cIgmpFilterEditor 
object is as follows: 

1.  Retrieve the value of cIgmpFilterEditSpinLock and 
of object within cIgmpFilterEditor group. 

2.  Generate new values for 'writeable' objects
in the cIgmpFilterEditor group except for 
cIgmpFilterEditSpinLock object.

3.  Set the value of cIgmpFilterEditSpinLock to the 
retrieved value, and the value of objects in 
cIgmpFilterEditor to the new value. If the set
fails for the cIgmpFilterEditSpinLock object,
go back to step 1. 

The cIgmpFilterApplyStatus and cIgmpFilterEditSpinLock 
should be read together by NMS to make sure that the 
result is associated with its configuration request.

To add/delete or modify a profile ( through cIgmpFilterEditor
objects ) following procedure may be followed as an example.:

1.  GET(cIgmpFilterEditSpinLock.0) and save in sValue.
2.  SET(cIgmpFilterEditSpinLock.0 = sValue,
cIgmpFilterEditProfileIndex.0 = validProfileNumber,
cIgmpFilterEditStartAddress.0 = validStartAddress,
cIgmpFilterEditEndAddress.0 = validEndAddress,
cIgmpFilterEditOperation.0 =  validOperation)
3.  If the SET in step 2 is not successful go back
to step 1.
4.  If the SET in step 2 is successful, user should 
GET(cIgmpFilterEditSpinLock.0) and 
GET(cIgmpFilterApplyStatus.0) simultaneously.

5.  The cIgmpFilterApplyStatus.0 reflects the outcome of
step 2 only if
cIgmpFilterEditSpinLock.0 = sValue + 1 or
cIgmpFilterEditSpinLock.0 = 0 if sValue reaches
value at which cIgmpFilterEditSpinLock wraps 
around."
	::= { cIgmpFilterEditor 1 }


cIgmpFilterEditProfileIndex OBJECT-TYPE
	SYNTAX INTEGER
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION "Buffer object to edit corresponding object
cIgmpFilterProfileIndex in cIgmpFilterTable.

Maximum value this object can be set to is 
determined by cIgmpFilterMaxProfiles object."
	::= { cIgmpFilterEditor 2 }


cIgmpFilterEditStartAddressType OBJECT-TYPE
	SYNTAX InetAddressType
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION "Buffer object to edit corresponding object
cIgmpFilterStartAddressType in cIgmpFilterTable.

This object describes the type of Internet  
address used to determine the start address 
of IP multicast group for a profile."
	::= { cIgmpFilterEditor 3 }


cIgmpFilterEditStartAddress OBJECT-TYPE
	SYNTAX InetAddress
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION "Buffer object to edit corresponding object
cIgmpFilterStartAddress in cIgmpFilterTable
to establish start address of filtering
range for a profile."
	::= { cIgmpFilterEditor 4 }


cIgmpFilterEditEndAddressType OBJECT-TYPE
	SYNTAX InetAddressType
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION "Buffer object to edit corresponding object
cIgmpFilterEndAddressType in cIgmpFilterTable.

This object describes the type of Internet     
address used to determine the start address 
of IP multicast group for a profile."
	::= { cIgmpFilterEditor 5 }


cIgmpFilterEditEndAddress OBJECT-TYPE
	SYNTAX InetAddress
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION "Buffer object to edit corresponding object
cIgmpFilterEndAddress in cIgmpFilterTable 
to establish end address of filtering 
range for a profile."
	::= { cIgmpFilterEditor 6 }


cIgmpFilterEditProfileAction OBJECT-TYPE
	SYNTAX INTEGER {
	permit(1),
	deny(2)
	}
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION "Buffer object to edit corresponding object in
cIgmpFilterTable to determine filtering action
of each profile."
	::= { cIgmpFilterEditor 7 }


cIgmpFilterEditOperation OBJECT-TYPE
	SYNTAX INTEGER {
	none(1),
	add(2),
	delete(3),
	modify(4)
	}
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION "The function of this object is to allow user to
apply the changes in cIgmpFilterEditor objects to 
cIgmpFilterTable. 

This object always has the value 'none' when read.
When written each value causes the appropriate action:

'add' - tries to insert the information contained 
in cIgmpFilterEditor objects into  cIgmpFilterTable.
If the entry already exists in the table the 'add' 
fails.        

'delete' - tries to delete corresponding entry from
cIgmpFilterTable. If a user completely deletes a profile
that has corresponding entries in the
cIgmpFilterInterfaceTable, then all the interfaces mapped
to corresponding profile will be cleared and set to zero.

'modify' - Mode of operation used to edit an entry in
cIgmpFilterTable. If the corresponding entry does not 
exist, modify operation fails. This mode allows user to
extend/truncate a contiguous filtered range, type of
Internet addressing and filtering action for a profile. 

'none' - no operation is performed."
	::= { cIgmpFilterEditor 8 }


cIgmpFilterApplyStatus OBJECT-TYPE
	SYNTAX INTEGER {
	someOtherError(1),
	succeeded(2),
	inconsistentEdit(3),
	entryPresentError(4),
	entryNotPresentError(5)
	}
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION "The current status of an 'add', 'delete' or 'modify'
operation. If no apply is currently active, the status 
represented is that of the most recently completed 'add', 
'delete' or 'modify' operation.

The value of this objects indicates succeeded(2) state 
initially when no 'add', 'delete', 'modify' operation
has been carried out.

The possible values are:
someOtherError - the 'add', 'delete' or 'modify' failed 
due to undefined error(s) in apply operation.
(e.g., insufficient memory). 

succeeded - the 'add', 'delete' or 'modify' operation
was successful. (This value is also used when no
apply has been invoked since the last time the local 
system restarted.)

inconsistentEdit - the 'add', 'delete' or 'modify' failed
due to inconsistency of the data.

entryPresentError - the 'add' operation failed  as the 
corresponding entry already exists in cIgmpFilterTable.

entryNotPresentError - the 'modify' operation failed 
as no corresponding entry exists in cIgmpFilterTable."
	::= { cIgmpFilterEditor 9 }


ciscoIgmpFilterMIBConformance OBJECT IDENTIFIER ::= { ciscoIGMPFilterMIB 2 }

ciscoIgmpFilterMIBCompliances OBJECT IDENTIFIER ::= { ciscoIgmpFilterMIBConformance 1 }

ciscoIgmpFilterMIBGroups OBJECT IDENTIFIER ::= { ciscoIgmpFilterMIBConformance 2 }

ciscoIgmpFilterGlobalGroup OBJECT IDENTIFIER ::= { ciscoIgmpFilterMIBGroups 1 }

ciscoIgmpFilterInfoGroup OBJECT IDENTIFIER ::= { ciscoIgmpFilterMIBGroups 2 }

ciscoIgmpFilterEditorGroup OBJECT IDENTIFIER ::= { ciscoIgmpFilterMIBGroups 3 }

END

