ID: 23051 Updated by: [EMAIL PROTECTED] Reported By: csmall at enc dot com dot au -Status: Assigned +Status: Feedback Bug Type: SNMP related Operating System: Linux PHP Version: 4CVS-2003-04-04 (stable) Assigned To: harrie New Comment:
Please try using this CVS snapshot: http://snaps.php.net/php4-STABLE-latest.tar.gz Make sure the snapshot is build later than Jul 16, 2003 05:30!! Previous Comments: ------------------------------------------------------------------------ [2003-04-23 04:16:25] [EMAIL PROTECTED] Assigning to Harrie who is the maintainer of ext/snmp. ------------------------------------------------------------------------ [2003-04-04 19:07:33] csmall at enc dot com dot au After more testing, there are two bugs in this module 1) Something breaks in the OID resolver, you get the entire MIB tree. This occured on alpha and i386 and seems to be fixed in Debian 4.2.3-13 It does suggest you have a problem with the net-snmp library as -9 and -13 are linked to ucd-snmp 4.2 while -12 is net-snmp 5. 2) Something is seriously wrong with the array handling and you get part of the table or just junk text. This happens on the alpha at least but not the i386. Here are my results, see key below to work out what I did: Arch Ver N/SW N/SWO N/SRW C/SW C/SWO C/SRW i386 4.2.3-9 OK OK OK OK OK OK i386 4.2.3-12 OK OK OK WT WT WT i386 4.2.3-13 OK OK OK OK OK OK alpha 4.2.3-9 OK ST ST OK ST ST alpha 4.2.3-12 WT WT WT WT WT WT alpha 4.2.3-13 OK BA BA OK BA BA alpha STABLE OK BA BA OK BA BA The Arch should be obvious Ver is version the 4.2.3-X is a Debian version, STABLE means the one I downloaded php4-STABLE-200304041230 Then the various functions N/SW Numeric OID, snmpwalk() N/SWO Numeric OID, snmpwalkoid() N/SRW Numeric OID, snmprealwalk() C/SW Character OID, snmpwalk() C/SWO Character OID, snmpwalkoid() C/SRW Character OID, snmprealwalk() Numeric OID is ".1.3.6.1.2.1.2.2.1.2" Character OID is "interfaces.ifTable.ifEntry.ifDescr" The results OK - obviously it worked fine! WT - Whole tree. Get error message of "Invalid object identifier" then it scans the entire MIB tree of remote object. BA - Broken Array, Result shown in previous message, but you get only one item of the array. The key is the first item, the value is the last. ST - Strange text, check THIS out (its always the same text): array(1) { [" occur between two tag values. A tag value may not have a zero length. These constraints imply certain restrictions on the contents of this object: - There cannot be a leadingH¢/"]=> string(42) "interfaces.ifTable.ifEntry.ifDescr.6 = br0" } As i said, strange text.... ------------------------------------------------------------------------ [2003-04-04 10:55:21] [EMAIL PROTECTED] But does 4.2.3 work on that alpha? Or is it common for any platform?? ------------------------------------------------------------------------ [2003-04-04 07:31:08] csmall at enc dot com dot au This problem has been around at least since 4.3.2, you might also want to look at http://bugs.debian.org/185534 snmprealwalk and snmpwalkoid fail to work properly on my alpha. snmpwalk used to not work but now does. Version is php4-STABLE-200304041230 ./configure line was '--enable-debug' \ '--with-bz2' \ '--with-snmp' \ '--with-openssl' \ This is the test code: <? $host='myhostname'; $community='mysecret'; $ifDescr = snmpwalkoid("$host","$community","interfaces.ifTable.ifEntry.ifDescr"); var_dump($ifDescr); ?> Output is: --------- array(1) { ["interfaces.ifTable.ifEntry.ifDescr.1"]=> string(42) "interfaces.ifTable.ifEntry.ifDescr.6 = br0" } -------- This is broken, as this is the result of the last (6th) interface in the place of the first, notice the key says ifDesc.1 and the result says ifDescr.6 This is what a i386 running Debian 4.2.3-13 on the exact same script does: --------- array(6) { ["interfaces.ifTable.ifEntry.ifDescr.1"]=> string(41) "interfaces.ifTable.ifEntry.ifDescr.1 = lo" ["interfaces.ifTable.ifEntry.ifDescr.2"]=> string(43) "interfaces.ifTable.ifEntry.ifDescr.2 = eth0" ["interfaces.ifTable.ifEntry.ifDescr.3"]=> string(43) "interfaces.ifTable.ifEntry.ifDescr.3 = eth1" ["interfaces.ifTable.ifEntry.ifDescr.4"]=> string(43) "interfaces.ifTable.ifEntry.ifDescr.4 = gre0" ["interfaces.ifTable.ifEntry.ifDescr.5"]=> string(43) "interfaces.ifTable.ifEntry.ifDescr.5 = sit0" ["interfaces.ifTable.ifEntry.ifDescr.6"]=> string(42) "interfaces.ifTable.ifEntry.ifDescr.6 = br0" } ------ I ran some tests on the 4.2.3 code and it was definitely returning the right and multiple values. I basically enabled the Debug() line in snmp.c and saw the return string come back the way I expected. So it looks like some pointer or array is getting overwritten. I tried linking in electric fence but libsnmp is too buggy and it died within the library loading up the mibs. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=23051&edit=1