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

Reply via email to