Sigh. Some versions of CMU SNMP appear to lack the SMI_ #defines; for

now, assume that if they lack that, they lack "sprint_value()".

svn path=/trunk/; revision=1326
This commit is contained in:
Guy Harris 1999-12-14 10:16:11 +00:00
parent 7e0d32b3d9
commit dbc4cd9530
1 changed files with 36 additions and 26 deletions

View File

@ -2,7 +2,7 @@
* Routines for SNMP (simple network management protocol)
* D.Jorand (c) 1998
*
* $Id: packet-snmp.c,v 1.21 1999/12/14 05:59:16 guy Exp $
* $Id: packet-snmp.c,v 1.22 1999/12/14 10:16:11 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@unicom.net>
@ -64,6 +64,11 @@
# include <ucd-snmp/snmp_impl.h>
# include <ucd-snmp/mib.h>
/*
* XXX - for now, we assume all versions of UCD SNMP have it.
*/
# define HAVE_SPRINT_VALUE
/*
* Define values "sprint_value()" expects.
*/
@ -85,19 +90,28 @@
# include <snmp/snmp.h>
/*
* Define values "sprint_value()" expects.
* Some older versions of CMU SNMP may lack these values (e.g., the
* "libsnmp3.6" package for Debian, which is based on some old
* CMU SNMP, perhaps 1.0); for now, we assume they also lack
* "sprint_value()".
*/
# define VALTYPE_INTEGER SMI_INTEGER
# define VALTYPE_COUNTER SMI_COUNTER32
# define VALTYPE_GAUGE SMI_GAUGE32
# define VALTYPE_TIMETICKS SMI_TIMETICKS
# define VALTYPE_STRING SMI_STRING
# define VALTYPE_IPADDR SMI_IPADDRESS
# define VALTYPE_OPAQUE SMI_OPAQUE
# define VALTYPE_NSAP SMI_STRING
# define VALTYPE_OBJECTID SMI_OBJID
# define VALTYPE_BITSTR ASN_BIT_STR
# define VALTYPE_COUNTER64 SMI_COUNTER64
# ifdef SMI_INTEGER
# define HAVE_SPRINT_VALUE
/*
* Define values "sprint_value()" expects.
*/
# define VALTYPE_INTEGER SMI_INTEGER
# define VALTYPE_COUNTER SMI_COUNTER32
# define VALTYPE_GAUGE SMI_GAUGE32
# define VALTYPE_TIMETICKS SMI_TIMETICKS
# define VALTYPE_STRING SMI_STRING
# define VALTYPE_IPADDR SMI_IPADDRESS
# define VALTYPE_OPAQUE SMI_OPAQUE
# define VALTYPE_NSAP SMI_STRING
# define VALTYPE_OBJECTID SMI_OBJID
# define VALTYPE_BITSTR ASN_BIT_STR
# define VALTYPE_COUNTER64 SMI_COUNTER64
# endif
/*
* Now undo all the definitions they "helpfully" gave us, so we don't get
* complaints about redefining them.
@ -426,7 +440,7 @@ format_oid(gchar *buf, subid_t *oid, guint oid_length)
}
}
#if defined(HAVE_UCD_SNMP_SNMP_H) || defined(HAVE_SNMP_SNMP_H)
#ifdef HAVE_SPRINT_VALUE
static void
format_value(gchar *buf, struct variable_list *variable, subid_t *variable_oid,
guint variable_oid_length, gushort vb_type, guint vb_length)
@ -465,11 +479,7 @@ format_value(gchar *buf, struct variable_list *variable, subid_t *variable_oid,
break;
case SNMP_NSAP:
#ifdef ASN_NSAP
variable->type = ASN_NSAP;
#else
variable->type = VALTYPE_STRING;
#endif
variable->type = VALTYPE_NSAP;
break;
case SNMP_OBJECTID:
@ -512,16 +522,16 @@ snmp_variable_decode(proto_tree *snmp_tree, subid_t *variable_oid,
gchar vb_display_string[MAX_STRING_LEN]; /* TBC */
#if defined(HAVE_UCD_SNMP_SNMP_H) || defined(HAVE_SNMP_SNMP_H)
#ifdef HAVE_SPRINT_VALUE
struct variable_list variable;
#if defined(HAVE_UCD_SNMP_SNMP_H)
long value;
#endif
#else /* defined(HAVE_UCD_SNMP_SNMP_H) || defined(HAVE_SNMP_SNMP_H) */
#else /* HAVE_SPRINT_VALUE */
int i;
gchar *buf;
int len;
#endif /* defined(HAVE_UCD_SNMP_SNMP_H) || defined(HAVE_SNMP_SNMP_H) */
#endif /* HAVE_SPRINT_VALUE */
/* parse the type of the object */
start = asn1->pointer;
@ -552,7 +562,7 @@ snmp_variable_decode(proto_tree *snmp_tree, subid_t *variable_oid,
return ret;
length = asn1->pointer - start;
if (snmp_tree) {
#if defined(HAVE_UCD_SNMP_SNMP_H) || defined(HAVE_SNMP_SNMP_H)
#ifdef HAVE_SPRINT_VALUE
#if defined(HAVE_UCD_SNMP_SNMP_H)
value = vb_integer_value;
variable.val.integer = &value;
@ -581,7 +591,7 @@ snmp_variable_decode(proto_tree *snmp_tree, subid_t *variable_oid,
return ret;
length = asn1->pointer - start;
if (snmp_tree) {
#if defined(HAVE_UCD_SNMP_SNMP_H) || defined(HAVE_SNMP_SNMP_H)
#ifdef HAVE_SPRINT_VALUE
#if defined(HAVE_UCD_SNMP_SNMP_H)
value = vb_uinteger_value;
variable.val.integer = &value;
@ -613,7 +623,7 @@ snmp_variable_decode(proto_tree *snmp_tree, subid_t *variable_oid,
return ret;
length = asn1->pointer - start;
if (snmp_tree) {
#if defined(HAVE_UCD_SNMP_SNMP_H) || defined(HAVE_SNMP_SNMP_H)
#ifdef HAVE_SPRINT_VALUE
variable.val.string = vb_octet_string;
format_value(vb_display_string, &variable,
variable_oid, variable_oid_length, vb_type,
@ -675,7 +685,7 @@ snmp_variable_decode(proto_tree *snmp_tree, subid_t *variable_oid,
return ret;
length = asn1->pointer - start;
if (snmp_tree) {
#if defined(HAVE_UCD_SNMP_SNMP_H) || defined(HAVE_SNMP_SNMP_H)
#ifdef HAVE_SPRINT_VALUE
variable.val.objid = vb_oid;
format_value(vb_display_string, &variable,
variable_oid, variable_oid_length, vb_type,