1

在下面的示例 MIB 条目中:

--
-- Logging configuration
--

nsLoggingTable     OBJECT-TYPE
  SYNTAX      SEQUENCE OF NsLoggingEntry
  MAX-ACCESS  not-accessible
  STATUS      current
  DESCRIPTION
    "A table of individual logging output destinations, used to control
     where various levels of output from the agent should be directed."
  ::= { nsConfigLogging 1 }

nsLoggingEntry     OBJECT-TYPE
  SYNTAX      NsLoggingEntry
  MAX-ACCESS  not-accessible
  STATUS      current
  DESCRIPTION
    "A conceptual row within the logging table."
  INDEX       { nsLogLevel, IMPLIED nsLogToken }
  ::= { nsLoggingTable 1 }

NsLoggingEntry ::= SEQUENCE {
  nsLogLevel          INTEGER,
  nsLogToken          DisplayString,
  nsLogType           INTEGER,
  nsLogMaxLevel       INTEGER,
  nsLogStatus         RowStatus
}

这里的 RowStatus 条目是 NsLoggingEntry 中的最后一个,我们可以将这个 RowStatus 条目放在 NsLoggingEntry 中的任何位置(例如在“nsLogToken DisplayString”之后)吗?

4

1 回答 1

1

可以将条目移动到序列中的不同nsLogStatus RowStatus位置,但您需要更新列对象的顺序以匹配序列的顺序。NsLoggingEntry

更详细地说,NsLoggingEntry ::= SEQUENCE定义将构成nsLoggingTable. MIB 文件应该对每一列都有进一步的定义,看起来像,

nsLogStatus OBJECT-TYPE
  SYNTAX      RowStatus
  MAX-ACCESS  read-only
  STATUS      current
  DESCRIPTION "<Some great description of this column>"
  ::= { nsLoggingEntry 5 }

该定义的关键部分是::= { nsLoggingEntry 5 }断言nsLogStatus将是 in 行中的第五列的行nsLoggingTable。如果更改序列的NsLoggingEntry顺序,则应确保各个列定义遵循该序列。

例如,如果您将顺序更改为,

NsLoggingEntry ::= SEQUENCE {
  nsLogLevel          INTEGER,
  nsLogToken          DisplayString,
  nsLogStatus         RowStatus,
  nsLogType           INTEGER,
  nsLogMaxLevel       INTEGER
}

每列的 OID 分配应变为,

nsLogLevel    ::= { nsLoggingEntry 1 }
nsLogToken    ::= { nsLoggingEntry 2 }
nsLogStatus   ::= { nsLoggingEntry 3 }
nsLogType     ::= { nsLoggingEntry 4 }
nsLogMaxLevel ::= { nsLoggingEntry 5 }

还有一件事要记住:表的索引应该是序列中的第一列,所以nsLogLevel应该保留在它的当前位置,就像nsLogToken.

于 2012-05-01T15:48:50.307 回答