[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: Changing enum labels considered harmful



On Fri, 17 Jan 2003, Harrington, David wrote:
> I don't think it is a problem, as long as the semantics of the
> enumeration are not changed.

Indeed, there is no on-the-wire problem in communication between
a manager and agent in that case.  I never said that there was.

> An NMS is likely to import a mib module with the old label or with the
> new label, and as long as the semantics of the enumeration doesn't
> change, and the OID and value of the enumeration do not change, then the
> label for the enumeration will only affect the user interface, not the
> on-the-wire protocol or the ability to aggregate and contrast the
> enumeration semantics from multiple vendors' systems.
> 
> I don't think it is necessary to develop a new Clarifying Language Rule
> for this.

But a problem _can_ arise if the NMS imports two modules, one with the
definition of an object or TC that uses updated versions of the enum
labels, and another module that uses the TC or object but did not get
updated.  The problem happens if the second module uses the label alone
without a number -- as would happen in a DEFVAL clause.  This is not
just a matter of a MIB compiler being picky, it's a matter of it not
being able to figure out what the DEFVAL clause means.  A human being
could not so so either without having the old version of the definition
available.  That's the point I was trying to get across in the examples.

Note that the SMI forbids changing descriptors of objects and notifications
for the vary same reason.  One would not see any over-the-wire change in
what is sent between manager and agent after such a change, but there 
would be problems in figuring out what's meant in a MIB module that imports
a definition using the old descriptor if the only definition that is
available is in an updated module using a new descriptor.

In other words:  the problem is that changing enums can cause cross-
references between MIB modules to become invalid.  This is not just
a matter of the user interface.

//cmh