Reputation: 31
I'm implementing an SNMP agent and am not sure if my understanding is correct on how values for the "t11ZsZoneMemberIndex" object (see below) are chosen, and who enforces value uniqueness.
My understanding is that an SNMP manager would chose the value for the "t11ZsZoneMemberIndex" object and use it in the "name" field of the VarBind in a SET operation. The SNMP agent would enforce the uniqueness of the "t11ZsZoneMemberIndex" value when it receives the SET. Is this correct? If not, why?
The MIB table is SMIv2, with a RowStatus object. I understand where the values for the other indexes are derived.
t11ZsZoneMemberTable OBJECT-TYPE
SYNTAX SEQUENCE OF T11ZsZoneMemberEntry
MAX-ACCESS not-accessible
::= { t11ZsConfiguration 6 }
t11ZsZoneMemberEntry OBJECT-TYPE
SYNTAX T11ZsZoneMemberEntry
MAX-ACCESS not-accessible
INDEX { fcmInstanceIndex, fcmSwitchIndex,
t11ZsServerFabricIndex, t11ZsZoneMemberParentType,
t11ZsZoneMemberParentIndex, t11ZsZoneMemberIndex }
::= { t11ZsZoneMemberTable 1 }
T11ZsZoneMemberEntry ::= SEQUENCE {
t11ZsZoneMemberParentType INTEGER,
t11ZsZoneMemberParentIndex Unsigned32,
t11ZsZoneMemberIndex Unsigned32,
t11ZsZoneMemberFormat T11ZsZoneMemberType,
t11ZsZoneMemberID OCTET STRING,
t11ZsZoneMemberRowStatus RowStatus
}
t11ZsZoneMemberParentType OBJECT-TYPE
SYNTAX INTEGER {
zone(1), -- member belongs to a Zone
alias(2) -- member belongs to a Zone Alias
}
MAX-ACCESS not-accessible
::= { t11ZsZoneMemberEntry 1 }
t11ZsZoneMemberParentIndex OBJECT-TYPE
SYNTAX Unsigned32 (1..4294967295)
MAX-ACCESS not-accessible
::= { t11ZsZoneMemberEntry 2 }
t11ZsZoneMemberIndex OBJECT-TYPE
SYNTAX Unsigned32 (1..4294967295)
MAX-ACCESS not-accessible
DESCRIPTION
"An index value that uniquely identifies this Zone
Member amongst all Zone Members in the Zone Set
database of a particular Fabric on a particular switch."
::= { t11ZsZoneMemberEntry 3 }
t11ZsZoneMemberFormat OBJECT-TYPE
SYNTAX T11ZsZoneMemberType
MAX-ACCESS read-create
::= { t11ZsZoneMemberEntry 4 }
t11ZsZoneMemberID OBJECT-TYPE
SYNTAX OCTET STRING (SIZE (1..255))
MAX-ACCESS read-create
::= { t11ZsZoneMemberEntry 5 }
t11ZsZoneMemberRowStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-create
::= { t11ZsZoneMemberEntry 6 }
Upvotes: 3
Views: 3796
Reputation: 22262
You have it right, yes. But it's slightly more complex: the SNMP requirements are that the entire set of MIB indexes must be unique when put together. Thus, the above MIB has 6 indexes so each row in the table can have a single row for every combination of those 6 values. Which means that technically the value for t11ZsZoneMemberIndex may be duplicated as long as another index value is different.
If there is a requirement that t11ZsZoneMemberIndex be unique in itself, then the MIB really should have been defined that way and made it the single and only object in the MIB INDEX list. There is no need to add multiple unique indexes to the index itself (and is a waste of bandwidth).
But if there are multiple unique instances, and they can concflict when a manager performs the SET, then yes... It's up to the manager to reject the SET request and return an error when the data being sent isn't compatible with the internal notion of what is acceptable.
Upvotes: 2