On Wed, Jun 14, 2000 at 01:58:22PM -0500, Gerald Combs wrote:
> As an experiment, I built Ethereal on a stock RH 6.2 system, then
> downgraded the SNMP package to the version that comes with RH 6.1.
> Ethereal ran without a hitch, so executables built with the newer library
> would appear to be backward compatible.
Well, somewhat.
Prior to 4.1.1, "snmp_set_full_objid()" was a function.
In 4.1.1, it was changed to be a macro that called
ds_set_boolean(DS_LIBRARY_ID, DS_LIB_PRINT_FULL_OID, x);
If Ethereal is built on a system with 4.1.1, it'll call
"ds_set_boolean()" with those two arguments, and with TRUE as the "x"
argument.
4.0.1 has "ds_set_boolean()", so the call in question won't fail due to
the function not being present in the library; however, 4.0.1 doesn't
have "DS_LIB_PRINT_FULL_OID", so it won't cause OIDs to be shown as
fully qualified - and it looks as if what it'll do, instead, is to stomp
the first byte after the "ds_booleans" array in the library.
This may or may not cause a problem to show up, but it may be a bit
risky.
It may be that the library in RH 6.0 and 6.1 is later than 4.0.1, and
may have a higher DS_MAX_SUBIDS value, greater than or equal to 16, so
that, even if the "ds_set_boolean()" call doesn't set a boolean that's
used, it won't stomp a random byte; I don't know what version came with
those OSes.