Ethereal-dev: Re: [ethereal-dev] SNMP dissector
Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.
From: Jochen Friedrich <jochen@xxxxxx>
Date: Fri, 21 Apr 2000 16:52:57 +0200 (CEST)
Hi Guy, > It currently appears to display the OID 1.3.6.1.2.1 as ":iso" in the > decode of a GET-NEXT request asking for that object, rather than as, > say, ".iso.org.dod.internet.mgmt.mib-2", as a version using the UCD SNMP > library does. > > Is there any way to fix that? The appended patch should fix that one. Additionally, you might have to add the appended smi.conf to /usr/etc (if you use the RPM) or /usr/local/etc. > In addition, are there a significant number of systems that might have > libsmi 0.1 installed? If so, we should either > > 1) make it compile with libsmi 0.1 or 0.2, depending on which is > installed I wouldn't mess with 0.1 anymore. I'm not sure if many people did already install libsmi, at all. > (Unfortunately, that could still leave problems with binary > distributions, i.e. if binary distributions are built with one > particular version, the user won't simply be able to download, install, > and use them - and, from the mail I see on ethereal-dev and > ethereal-users, there are people who apparently just want to download > binaries and have them work; we pretty much see only the cases where > they don't get what they want, and there may be lots of people who've > downloaded binary images and had them work, in which case I'd like them > to continue to be able to do so.) There is a binary for Red-Hat at ftp://wacko.gxsnmp.org/pub/RPMS/i386/libsmi-0.2-2.i386.rpm Some additional MIBs (from Cisco) can be downloaded from http://www.gxsnmp.org/ciscomib-0.0.1-1.noarch.rpm However, loading all possible MIBs into ethereal will take some time. But it's the same with UCD... Cheers, Jochen
*** packet-snmp.c.old Fri Apr 21 12:10:26 2000 --- packet-snmp.c Fri Apr 21 13:11:11 2000 *************** *** 729,740 **** dissect_data(pd, offset, fd, tree); } ! static void ! format_oid(gchar *buf, subid_t *oid, guint oid_length) { ! int i; ! int len; ! len = sprintf(buf, "%lu", (unsigned long)oid[0]); buf += len; for (i = 1; i < oid_length;i++) { --- 729,766 ---- dissect_data(pd, offset, fd, tree); } ! void ! format_oid_name(subid_t *oid, guint oid_length, char **name, guint name_length, ! SmiNode *node) { ! SmiNode *child; ! int len, i; ! char *buf; ! ! if (node) { ! if (node->oidlen > 1) { ! child = smiGetParentNode(node); ! name_length += strlen(node->name) +1; ! format_oid_name(oid, oid_length, name, name_length, ! child); ! strcat (*name, "."); ! strcat (*name, node->name); ! return; ! } ! *name = g_malloc(name_length); ! buf = *name; ! len = sprintf(buf, "%lu", (unsigned long)oid[0]); ! buf += len; ! for (i = 1; i < oid_length;i++) { ! len = sprintf(buf, ".%lu", (unsigned long)oid[i]); ! buf += len; ! } ! strcat(*name, " ("); ! strcat (*name, node->name); ! return; ! } ! *name = g_malloc(name_length); ! buf = *name; len = sprintf(buf, "%lu", (unsigned long)oid[0]); buf += len; for (i = 1; i < oid_length;i++) { *************** *** 743,748 **** --- 769,794 ---- } } + gchar * + format_oid(subid_t *oid, guint oid_length, SmiNode* node) + { + char *result; + int len, i; + char *buf; + + result = NULL; + format_oid_name(oid, oid_length, &result, oid_length * 11 + 5, node); + if (node) { + buf = result + strlen(result); + for (i = node->oidlen; i < oid_length;i++) { + len = sprintf(buf, ".%lu", (unsigned long)oid[i]); + buf += len; + } + strcat(result, ")"); + } + return result; + } + static gchar* format_var(gushort vb_type, guint8 *vb_octet_string, guint vb_length, SmiNode *node) *************** *** 918,926 **** gchar *vb_display_string; SmiNode *oid_node; ! SmiModule *oid_module; ! gchar oid_string[MAX_STRING_LEN]; /* TBC */ ! gchar vb_oid_string[MAX_STRING_LEN]; /* TBC */ /* parse the type of the object */ start = asn1->pointer; --- 964,970 ---- gchar *vb_display_string; SmiNode *oid_node; ! gchar *oid_string; /* parse the type of the object */ start = asn1->pointer; *************** *** 988,1005 **** return ret; length = asn1->pointer - start; if (snmp_tree) { - format_oid(oid_string, vb_oid, vb_oid_length); oid_node = smiGetNodeByOID(vb_oid_length, (SmiSubid *)vb_oid); ! if (oid_node) { ! oid_module = smiGetNodeModule(oid_node); ! sprintf(vb_oid_string, " (%s:%s)", ! oid_module->name, oid_node->name); ! } else ! strcpy(vb_oid_string, ""); proto_tree_add_text(snmp_tree, offset, length, ! "Value: %s: %s%s", vb_type_name, oid_string, ! vb_oid_string); } g_free(vb_oid); break; --- 1032,1044 ---- return ret; length = asn1->pointer - start; if (snmp_tree) { oid_node = smiGetNodeByOID(vb_oid_length, (SmiSubid *)vb_oid); ! oid_string = format_oid(vb_oid, vb_oid_length, ! oid_node); proto_tree_add_text(snmp_tree, offset, length, ! "Value: %s: %s", vb_type_name, oid_string); ! g_free(oid_string); } g_free(vb_oid); break; *************** *** 1065,1071 **** guint timestamp; guint timestamp_length; ! gchar oid_string[MAX_STRING_LEN]; /* TBC */ guint variable_bindings_length; --- 1104,1110 ---- guint timestamp; guint timestamp_length; ! gchar *oid_string; guint variable_bindings_length; *************** *** 1073,1085 **** guint variable_length; subid_t *variable_oid; guint variable_oid_length; - gchar vb_oid_string[MAX_STRING_LEN]; /* TBC */ int ret; guint cls, con, tag; SmiNode *node; - SmiModule *module; pdu_type_string = val_to_str(pdu_type, pdu_types, "Unknown PDU type %#x"); --- 1112,1122 ---- *************** *** 1169,1177 **** return; } if (tree) { ! format_oid(oid_string, enterprise, enterprise_length); proto_tree_add_text(tree, offset, length, "Enterprise: %s", oid_string); } g_free(enterprise); offset += length; --- 1206,1218 ---- return; } if (tree) { ! node = smiGetNodeByOID(enterprise_length, ! (SmiSubid *)enterprise); ! oid_string = format_oid(enterprise, enterprise_length, ! node); proto_tree_add_text(tree, offset, length, "Enterprise: %s", oid_string); + g_free(oid_string); } g_free(enterprise); offset += length; *************** *** 1310,1326 **** node = smiGetNodeByOID(variable_oid_length, (SmiSubid *)variable_oid); if (tree) { ! format_oid(oid_string, variable_oid, ! variable_oid_length); ! if (node) { ! module = smiGetNodeModule(node); ! sprintf(vb_oid_string, " (%s:%s)", ! module->name, node->name); ! } else ! strcpy(vb_oid_string, ""); proto_tree_add_text(tree, offset, sequence_length, ! "Object identifier %d: %s%s", vb_index, ! oid_string, vb_oid_string); } offset += sequence_length; variable_bindings_length -= sequence_length; --- 1351,1361 ---- node = smiGetNodeByOID(variable_oid_length, (SmiSubid *)variable_oid); if (tree) { ! oid_string = format_oid(variable_oid, ! variable_oid_length, node); proto_tree_add_text(tree, offset, sequence_length, ! "Object identifier %d: %s", vb_index, oid_string); ! g_free(oid_string); } offset += sequence_length; variable_bindings_length -= sequence_length; *************** *** 1604,1616 **** subid_t *regid; guint regid_length; ! gchar oid_string[MAX_STRING_LEN]; /* TBC */ proto_tree *smux_tree = NULL; proto_item *item = NULL; int ret; guint cls, con; if (check_col(fd, COL_PROTOCOL)) col_add_str(fd, COL_PROTOCOL, proto_name); --- 1639,1653 ---- subid_t *regid; guint regid_length; ! gchar *oid_string; proto_tree *smux_tree = NULL; proto_item *item = NULL; int ret; guint cls, con; + SmiNode *node; + if (check_col(fd, COL_PROTOCOL)) col_add_str(fd, COL_PROTOCOL, proto_name); *************** *** 1664,1672 **** return; } if (tree) { ! format_oid(oid_string, regid, regid_length); proto_tree_add_text(smux_tree, offset, length, "Registration: %s", oid_string); } g_free(regid); offset += length; --- 1701,1712 ---- return; } if (tree) { ! node = smiGetNodeByOID(regid_length, ! (SmiSubid *)regid); ! oid_string = format_oid(regid, regid_length, node); proto_tree_add_text(smux_tree, offset, length, "Registration: %s", oid_string); + g_free(oid_string); } g_free(regid); offset += length; *************** *** 1745,1753 **** return; } if (tree) { ! format_oid(oid_string, regid, regid_length); proto_tree_add_text(smux_tree, offset, length, "Registration: %s", oid_string); } g_free(regid); offset += length; --- 1785,1796 ---- return; } if (tree) { ! node = smiGetNodeByOID(regid_length, ! (SmiSubid *)regid); ! oid_string = format_oid(regid, regid_length, node); proto_tree_add_text(smux_tree, offset, length, "Registration: %s", oid_string); + g_free(oid_string); } g_free(regid); offset += length;
path /usr/share/mibs/cisco load ACCOUNTING-CONTROL-MIB load ADSL-LINE-MIB load ADSL-TC-MIB load AGENTX-MIB load APPC-MIB load APPLETALK-MIB load APPLICATION-MIB load APPN-DLUR-MIB load APPN-MIB load APPN-TRAP-MIB load ATM-ACCOUNTING-INFORMATION-MIB load ATM-MIB load ATM-TC-MIB load BGP4-MIB load BRIDGE-MIB load CHARACTER-MIB load CLNS-MIB load DECNET-PHIV-MIB load DIAL-CONTROL-MIB load DIRECTORY-SERVER-MIB load DISMAN-SCHEDULE-MIB load DISMAN-SCRIPT-MIB load DLSW-MIB load DNS-RESOLVER-MIB load DNS-SERVER-MIB load DOCS-CABLE-DEVICE-MIB load DOCS-IF-MIB load DOT12-IF-MIB load DOT12-RPTR-MIB load DS0-MIB load DS0BUNDLE-MIB load DS1-MIB load DS3-MIB load DSA-MIB load EBN-MIB load ENTITY-MIB load ETHER-CHIPSET-MIB load EtherLike-MIB load FDDI-SMT73-MIB load FLOW-METER-MIB load FRAME-RELAY-DTE-MIB load FRNETSERV-MIB load HOST-RESOURCES-MIB load HPR-IP-MIB load HPR-MIB load IF-MIB load INTEGRATED-SERVICES-GUARANTEED-MIB load INTEGRATED-SERVICES-MIB load IP-FORWARD-MIB load IP-MIB load IPATM-IPMC-MIB load IPOA-MIB load IPV6-ICMP-MIB load IPV6-MIB load IPV6-TC load IPV6-TCP-MIB load IPV6-UDP-MIB load ISDN-MIB load Job-Monitoring-MIB load MAU-MIB load MIOX25-MIB load MIP-MIB load MTA-MIB load Modem-MIB load NETWORK-SERVICES-MIB load NHRP-MIB load OSPF-MIB load OSPF-TRAP-MIB load P-BRIDGE-MIB load PARALLEL-MIB load PPP-BRIDGE-NCP-MIB load PPP-IP-NCP-MIB load PPP-LCP-MIB load PPP-SEC-MIB load PerfHist-TC-MIB load Printer-MIB load Q-BRIDGE-MIB load RADIUS-ACC-CLIENT-MIB load RADIUS-ACC-SERVER-MIB load RADIUS-AUTH-CLIENT-MIB load RADIUS-AUTH-SERVER-MIB load RDBMS-MIB load RFC-1212 load RFC-1213 load RFC-1215 load RFC1155-SMI load RFC1158-MIB load RFC1213-MIB load RFC1269-MIB load RFC1271-MIB load RFC1285-MIB load RFC1316-MIB load RFC1381-MIB load RFC1382-MIB load RFC1414-MIB load RIPv2-MIB load RMON-MIB load RMON2-MIB load RS-232-MIB load RSVP-MIB load SIP-MIB load SMON-MIB load SNA-NAU-MIB load SNA-SDLC-MIB load SNMP-FRAMEWORK-MIB load SNMP-MPD-MIB load SNMP-NOTIFICATION-MIB load SNMP-PROXY-MIB load SNMP-REPEATER-MIB load SNMP-TARGET-MIB load SNMP-USER-BASED-SM-MIB load SNMP-VIEW-BASED-ACM-MIB load SNMPv2-CONF load SNMPv2-MIB load SNMPv2-SMI load SNMPv2-TC load SNMPv2-TM load SNMPv2-USEC-MIB load SONET-MIB load SOURCE-ROUTING-MIB load SYSAPPL-MIB load TCP-MIB load TCPIPX-MIB load TN3270E-MIB load TN3270E-RT-MIB load TOKEN-RING-RMON-MIB load TOKENRING-MIB load TOKENRING-STATION-SR-MIB load TUNNEL-MIB load UDP-MIB load UPS-MIB load WWW-MIB
- References:
- Re: [ethereal-dev] SNMP dissector
- From: Guy Harris
- Re: [ethereal-dev] SNMP dissector
- Prev by Date: Re: [ethereal-dev] Targets dependent on proto.h
- Next by Date: Re: [ethereal-dev] Targets dependent on proto.h
- Previous by thread: Re: [ethereal-dev] SNMP dissector
- Next by thread: [ethereal-dev] LAT
- Index(es):