#ifndef lint
static const char rcsid[] =
- "@(#) $Header: /tcpdump/master/tcpdump/print-snmp.c,v 1.43 2000-11-04 22:50:23 fenner Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-snmp.c,v 1.44 2000-11-10 17:34:10 fenner Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
elem->form = form;
elem->class = class;
elem->id = id;
- if (vflag)
+ if (vflag > 1)
printf("|%.2x", *p);
p++; len--; hdr = 1;
/* extended tag field */
if (id == ASN_ID_EXT) {
for (id = 0; *p & ASN_BIT8 && len > 0; len--, hdr++, p++) {
- if (vflag)
+ if (vflag > 1)
printf("|%.2x", *p);
id = (id << 7) | (*p & ~ASN_BIT8);
}
return -1;
}
elem->asnlen = *p;
- if (vflag)
+ if (vflag > 1)
printf("|%.2x", *p);
p++; len--; hdr++;
if (elem->asnlen & ASN_BIT8) {
return -1;
}
for (; noct-- > 0; len--, hdr++) {
- if (vflag)
+ if (vflag > 1)
printf("|%.2x", *p);
elem->asnlen = (elem->asnlen << ASN_SHIFT8) | *p++;
}
int be;
};
-struct smi2be smi2betab[] = {
+static struct smi2be smi2betab[] = {
{ SMI_BASETYPE_INTEGER32, BE_INT },
{ SMI_BASETYPE_OCTETSTRING, BE_STR },
{ SMI_BASETYPE_OCTETSTRING, BE_INETADDR },
static int smi_check_a_range(SmiType *smiType, SmiRange *smiRange,
struct be *elem)
{
- int ok;
+ int ok = 1;
switch (smiType->basetype) {
case SMI_BASETYPE_OBJECTIDENTIFIER:
return;
}
+ if (elem->type == BE_NOSUCHOBJECT
+ || elem->type == BE_NOSUCHINST
+ || elem->type == BE_ENDOFMIBVIEW) {
+ asn1_print(elem);
+ return;
+ }
+
if (NOTIFY_CLASS(pduid) && smiNode->access < SMI_ACCESS_NOTIFY) {
fputs("[notNotifyable]", stdout);
}
asn1_print(&elem);
return;
}
- /* ignore the reqId */
+ if (vflag)
+ printf("R=%d ", elem.data.integer);
length -= count;
np += count;
}
if (count < length)
printf("[%d extra after PDU]", length - count);
+ if (vflag) {
+ fputs("{ ", stdout);
+ }
asn1_print(&pdu);
+ fputs(" ", stdout);
/* descend into PDU */
length = pdu.asnlen;
np = (u_char *)pdu.data.raw;
snmppdu_print(pdu.id, np, length);
break;
}
+
+ if (vflag) {
+ fputs("} ", stdout);
+ }
}
/*
length = elem.asnlen;
np = (u_char *)elem.data.raw;
+ if (vflag) {
+ fputs("{ ", stdout);
+ }
+
/* msgID (INTEGER) */
if ((count = asn1_parse(np, length, &elem)) < 0)
return;
if (count < length)
printf("[%d extra after message SEQ]", length - count);
+ if (vflag) {
+ fputs("} ", stdout);
+ }
+
if (model == 3) {
if (vflag) {
- fputs("USM ", stdout);
+ fputs("{ USM ", stdout);
}
} else {
printf("[security model %d]", model);
if (model == 3) {
usm_print(elem.data.str, elem.asnlen);
+ if (vflag) {
+ fputs("} ", stdout);
+ }
}
if (vflag) {
- fputs("ScopedPDU ", stdout);
+ fputs("{ ScopedPDU ", stdout);
}
scopedpdu_print(np, length, 3);
+
+ if (vflag) {
+ fputs("} ", stdout);
+ }
}
/*
case SNMP_VERSION_2:
case SNMP_VERSION_3:
if (vflag)
- printf("%s ", SnmpVersion[elem.data.integer]);
+ printf("{ %s ", SnmpVersion[elem.data.integer]);
break;
default:
printf("[version = %d]", elem.data.integer);
printf("[version = %d]", elem.data.integer);
break;
}
+
+ if (vflag) {
+ fputs("} ", stdout);
+ }
}