#ifndef lint
static const char rcsid[] =
- "@(#) $Header: /tcpdump/master/tcpdump/print-snmp.c,v 1.44 2000-11-10 17:34:10 fenner Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-snmp.c,v 1.45 2001-01-24 21:50:58 fenner Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
#ifdef LIBSMI
-#if (SMI_VERSION_MAJOR == 0 && SMI_VERSION_MINOR >= 2) || (SMI_VERSION_MAJOR > 0)
-#define LIBSMI_API_V2
-#else
-#define LIBSMI_API_V1
-#endif
-
-#ifdef LIBSMI_API_V1
-/* Some of the API revisions introduced new calls that can be
- * represented by macros.
- */
-#define smiGetNodeType(n) smiGetType((n)->typemodule, (n)->typename)
-
-#else
-/* These calls in the V1 API were removed in V2. */
-#define smiFreeRange(r)
-#define smiFreeType(r)
-#define smiFreeNode(r)
-#endif
-
struct smi2be {
SmiBasetype basetype;
int be;
SmiRange *smiRange;
int ok = 1;
-#ifdef LIBSMI_API_V1
- for (smiRange = smiGetFirstRange(smiType->module, smiType->name);
-#else
for (smiRange = smiGetFirstRange(smiType);
-#endif
smiRange;
smiRange = smiGetNextRange(smiRange)) {
ok = smi_check_a_range(smiType, smiRange, elem);
if (ok) {
- smiFreeRange(smiRange);
break;
}
}
- if (ok
-#ifdef LIBSMI_API_V1
- && smiType->parentmodule && smiType->parentname
-#endif
- ) {
+ if (ok) {
SmiType *parentType;
-#ifdef LIBSMI_API_V1
- parentType = smiGetType(smiType->parentmodule,
- smiType->parentname);
-#else
parentType = smiGetParentType(smiType);
-#endif
if (parentType) {
ok = smi_check_range(parentType, elem);
- smiFreeType(parentType);
}
}
return NULL;
}
if (vflag) {
-#ifdef LIBSMI_API_V1
- fputs(smiNode->module, stdout);
-#else
fputs(smiGetNodeModule(smiNode)->name, stdout);
-#endif
fputs("::", stdout);
}
fputs(smiNode->name, stdout);
fputs("[noAccess]", stdout);
}
-#ifdef LIBSMI_API_V1
- smiType = smiGetType(smiNode->typemodule, smiNode->typename);
-#else
smiType = smiGetNodeType(smiNode);
-#endif
if (! smiType) {
asn1_print(elem);
return;
}
-#ifdef LIBSMI_API_V1
- if (! smi_check_type(smiNode->basetype, elem->type)) {
-#else
if (! smi_check_type(smiType->basetype, elem->type)) {
-#endif
fputs("[wrongType]", stdout);
}
smiNode = smiGetNodeByOID(oidlen, oid);
if (smiNode) {
if (vflag) {
-#ifdef LIBSMI_API_V1
- fputs(smiNode->module, stdout);
-#else
fputs(smiGetNodeModule(smiNode)->name, stdout);
-#endif
fputs("::", stdout);
}
fputs(smiNode->name, stdout);
break;
case BE_INT:
-#ifdef LIBSMI_API_V1
- if (smiNode->basetype == SMI_BASETYPE_ENUM
- && smiNode->typemodule && smiNode->typename) {
- for (nn = smiGetFirstNamedNumber(smiNode->typemodule,
- smiNode->typename);
-#else
if (smiType->basetype == SMI_BASETYPE_ENUM) {
for (nn = smiGetFirstNamedNumber(smiType);
-#endif
nn;
nn = smiGetNextNamedNumber(nn)) {
if (nn->value.value.integer32
if (! done) {
asn1_print(elem);
}
-
- if (smiType) {
- smiFreeType(smiType);
- }
}
#endif
if (elem.type != BE_NULL) {
#ifdef LIBSMI
smi_print_value(smiNode, pduid, &elem);
- smiFreeNode(smiNode);
#else
asn1_print(&elem);
#endif