Piszę menedżera SNMP i symulowanego agenta SNMP z MIB (aby przetestować menedżera). Mam tabelę podobną do poniższej, którą kierownik powinien mieć możliwość dodawania/usuwania wierszy. Jaki jest zwyczajowy sposób na wykonanie tego przy użyciu RowStatus? Czy RowStatus jest ustawiony jako pierwszy? Czy inne OID mogą być zawarte w PDU?Jak korzystać z RowStatus?
Moim początkowym przypadkiem użycia jest tabela pusta przy uruchomieniu. Więc jeśli wyślę SET PDU w ten sposób:
createStuffEntry.1.1.1 = 1
createStuffEntry.2.1.1 = 1
createStuffEntry.3.1.1 = 99
createStuffEntry.4.1.1 = "Dustbunnies"
createStuffEntry.5.1.1 = 5
Czy to powinno być zgodne z poniższą definicją? Co powinno się stać, jeśli cRowStatus zostanie pominięty?
createStuffTable OBJECT-TYPE
SYNTAX SEQUENCE OF CreateStuffEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"A table for creating stuff."
::= { parentGroup 1 }
createStuffEntry OBJECT-TYPE
SYNTAX CreateStuffEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"An entry for building a stuff to create."
INDEX { cPlanID, cID }
::= { createStuffTable 1 }
CreateStuffEntry ::=
SEQUENCE {
cPlanID
INTEGER,
cID
INTEGER,
cTemplateID
INTEGER,
cStuffName
DisplayString,
cRowStatus
RowStatus
}
cPlanID OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-write
STATUS mandatory
DESCRIPTION
"The plan ID (cpPlanID)"
::= { createStuffEntry 1 }
cID OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-write
STATUS mandatory
DESCRIPTION
"The table entry index."
::= { createStuffEntry 2 }
cTemplateID OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-write
STATUS mandatory
DESCRIPTION
"The ID of the stuff template to create this stuff from."
::= { createStuffEntry 3 }
cStuffName OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-write
STATUS mandatory
DESCRIPTION
"The stuff name."
::= { createStuffEntry 4 }
cRowStatus OBJECT-TYPE
SYNTAX RowStatus
ACCESS read-write
STATUS current
DESCRIPTION
"This OID uses six main statuses:
active(1) is in use and available in stuffTable
notinService(2) it is present but not yet created
notReady(3) it is present but missing info
createAndGo(4) create stuff in stuffTable. Row will be
added to this table if necessary.
createAndWait(5) add stuff row to this table
destroy(6) will remove the stuff row
This OID is used to add/remove rows for stuff creation.
It can also be used to determine if a stuff has been
created successfully."
::= { createStuffEntry 5 }
Uwaga to SMI V1 MIB pomocą RowStatus jako określonego typu, podobnie do opisanego here. Tak więc read-create jest domniemany, a nie tutaj.
W punkcie 2 agent będzie oczekiwał, że zmienna stanu wiersza zostanie najpierw załadowana do jednostki PDU? Czy to ma znaczenie? –
To ** nie powinno ** mieć znaczenia, ale jedyną rzeczą, której nauczyłem się przez te wszystkie lata jest to, że ludzie piszą kod, który nie przestrzega zasad i nie spełnia oczekiwań. Więc ... Powiedziałbym to pierwszy, ponieważ niektórzy agenci prawdopodobnie będą tego oczekiwać. –
Miałem do czynienia z agentami SNMP firmy Nortel, którzy nie byli w stanie odróżnić obiektów skalarnych i kolumnowych od agentów Cisco, które mogłyby obniżyć przełącznik ATM w przedsiębiorstwie. SNMP jest dość prosty i jest zadziwiające, jak niewielu implementatorów czyta RFC. –