ID: 22529 Comment by: jamuel at my740il dot com Reported By: mb at solstaden dot net Status: Open Bug Type: SNMP related Operating System: FreeBSD 4.8 Prerelease PHP Version: 4CVS-2003-03-04 (stable) New Comment:
Ok so the following patch resolves the issue on my system. Not really sure why the existing function call fails but regardless snmpset now works correctly with shortened textual oids, full textual oids, and full numeric oids. I also tested snmpget and it works fine as well. --- snmp.c Fri Feb 21 02:42:01 2003 +++ snmp.c Tue Mar 18 13:58:48 2003 @@ -217,7 +217,7 @@ static void php_snmp_internal(INTERNAL_F if (st >= 2) { /* walk */ rootlen = MAX_NAME_LEN; if (strlen(objid)) { /* on a walk, an empty string means top of tree - no error */ - if (read_objid(objid, root, &rootlen)) { + if (snmp_parse_oid(objid, root, &rootlen)) { gotroot = 1; } else { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid object identifier: %s", objid); Do a patch -po -l from the ../ext/snmp directory and paste the above patch-text into patch, press <CTRL-D> twice to exit patch and you should see "patching file snmp.c". cd back to the root of the PHP-4 source directory, make clean, make all, make install and you should be in business! BTW, no really sure how this form will mangle the patch-text but it's really only a one line change. So you could just manually edit the snmp.c file and look for line 220 and make the change from read_objid to snmp_parse_oid (the parameters remain unchanged.) Hope that helps . . . Cheers, JPS Previous Comments: ------------------------------------------------------------------------ [2003-03-12 16:06:55] jamuel at my740il dot com I am getting the same error message with the latest (today's) 4.3 snap shot. From a php script I can either specify the entire OID numerically or the entire symbolic OID--I just can't use the shortened symbolic OID: snmpset("10.1.1.1", "private", ".1.3.6.1.2.1.1.5.0", "s", "MyBox") <-- works OK snmpset("10.1.1.1", "private", ".iso.org.dod.internet.mgmt.mib-2.system.sysName.0", "s", "MyBox") <-- works OK snmpset("10.1.1.1", "private", "system.sysName.0", "s", "MyBox") <-- BROKEN snmpset("10.1.1.1", "private", "sysName.0", "s", "MyBox") <-- BROKEN Linux 2.4 NetSNMP 5.0.8-pre1 PHP 4.3.2-dev [from phpinfo()] Any help would be appreciated. Regards, JPS ------------------------------------------------------------------------ [2003-03-05 00:21:50] mb at solstaden dot net I did upgrade! Sorry to say, same error. I tried with system.sysContact.0 and sysCobtact.0 Warning: snmpset() [function.snmpset]: Invalid object identifier: system.sysContact.0 in /usr/local/www/data/snmp.php on line 27 Warning: snmpset() [function.snmpset]: Error in packet: (noSuchName) There is no such variable name in this MIB. in /usr/local/www/data/snmp.php on line 27 Warning: snmpset() [function.snmpset]: This name does not exist: SNMPv2-SMI::mib-2 in /usr/local/www/data/snmp.php on line 27 Magnus ------------------------------------------------------------------------ [2003-03-04 19:23:43] [EMAIL PROTECTED] Please try using this CVS snapshot: http://snaps.php.net/php4-STABLE-latest.tar.gz For Windows: http://snaps.php.net/win32/php4-win32-STABLE-latest.zip ------------------------------------------------------------------------ [2003-03-04 04:12:55] mb at solstaden dot net Hi! I found out that, instead of typing in the OID as a string, system.sysContact.0, u type it as numeric, .1.3.6.1.2.1.1.4.0 then it snmpset works. Does not help me much but maybe some smarter person. /Magnus ------------------------------------------------------------------------ [2003-03-04 00:22:34] mb at solstaden dot net I tried a verey simple php script: echo snmpget( "81.26.237.10", "public", "system.sysContact.0" ); snmpset( "81.26.237.10", "private", "system.sysContact.0", "s", "kalle" ); snmpget works: snmpset fails: ouput as follows: STRING: [EMAIL PROTECTED] Warning: snmpset() [function.snmpset]: Invalid object identifier: system.sysContact.0 in /usr/local/www/data/snmp.php on line 17 Warning: snmpset() [function.snmpset]: Error in packet: (noSuchName) There is no such variable name in this MIB. in /usr/local/www/data/snmp.php on line 17 Warning: snmpset() [function.snmpset]: This name does not exist: SNMPv2-SMI::mib-2 in /usr/local/www/data/snmp.php on line 17 I did a tcpdump: 07:04:22.160998 gk.s.port80.se.1556 > as1-1-1--11.eklandahage4.molndal.bostream.net.snmp: GetRequest(28) system.sysDescr.0 07:04:22.179314 as1-1-1--11.eklandahage4.molndal.bostream.net.snmp > gk.s.port80.se.1556: GetResponse(39) system.sysDescr.0="Ericsson DR" 07:04:22.180077 gk.s.port80.se.1557 > as1-1-1--11.eklandahage4.molndal.bostream.net.snmp: GetRequest(28) system.sysContact.0 07:04:22.194298 as1-1-1--11.eklandahage4.molndal.bostream.net.snmp > gk.s.port80.se.1557: GetResponse(39) system.sysContact.0="[EMAIL PROTECTED]" 07:04:22.194991 gk.s.port80.se.1558 > as1-1-1--11.eklandahage4.molndal.bostream.net.snmp: C=private SetRequest(30) ="kalle" 07:04:22.209407 as1-1-1--11.eklandahage4.molndal.bostream.net.snmp > gk.s.port80.se.1558: C=private GetResponse(30) [EMAIL PROTECTED] ="kalle" Am I doing anything wrong? Normally it is my fault. If u think I have found a bug, I will do my best to help u. Magnus Benngard ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=22529&edit=1