php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Return to Bug #53594
Patch patch-ext-snmp-tests revision 2011-01-05 18:00 UTC by lytboris at gmail dot com
revision 2010-12-29 16:50 UTC by lytboris at gmail dot com
revision 2010-12-22 18:53 UTC by lytboris at gmail dot com
Patch patch-ext-snmp-src revision 2011-01-05 17:59 UTC by lytboris at gmail dot com
revision 2010-12-29 16:50 UTC by lytboris at gmail dot com
Patch patch-ext-snmp-trunk revision 2010-12-23 06:18 UTC by lytboris at gmail dot com
revision 2010-12-23 06:16 UTC by lytboris at gmail dot com
Patch php-ext-snmp-source revision 2010-12-22 18:52 UTC by lytboris at gmail dot com

Patch patch-ext-snmp-tests for SNMP related Bug #53594

Patch version 2011-01-05 18:00 UTC

Return to Bug #53594 | Download this patch
This patch renders other patches obsolete

Obsolete patches:

Patch Revisions:

Developer: lytboris@gmail.com

diff -ruN trunk/ext/snmp/tests/README snmp-new/ext/snmp/tests/README
--- trunk/ext/snmp/tests/README	1970-01-01 03:00:00.000000000 +0300
+++ snmp-new/ext/snmp/tests/README	2010-12-21 19:41:14.000000000 +0300
@@ -0,0 +1,63 @@
+SNMP Tests
+----------
+
+To enable these tests, you must have :
+- PHP compiled with SNMP (--with-snmp)
+- an SNMP server running.
+
+
+** How to test **
+You need to give credentials with environment vars if default ones are not
+sutable (see snmp_include.inc for more info):
+SNMP_HOSTNAME : IP or IP:PORT to connect to
+SNMP_COMMUNITY : community name
+SNMP_COMMUNITY_WRITE : community used for write tests (snmpset()).
+SNMP_MIBDIR : Directory containing MIBS
+
+** Configuring the SNMPD server **
+
+On Linux/FreeBSD
+--------
+
+- Install package net-snmpd (name may differ based on your distribution)
+- Edit config file (by default this is /etc/snmp/snmpd.conf on Linux and
+  usr/local/etc/snmp/snmpd.conf on FreeBSD) and replace whole content 
+  with following lines:
+  
+###### Config file #####
+rocommunity public 127.0.0.1
+rwcommunity private 127.0.0.1
+
+Do not enable them - being set here they make appropriate OID switch into r/o
+#syslocation  "Somewhere in the world"
+#syscontact  "root"
+
+#SNMPv3 credentials
+rouser adminMD5
+rouser adminSHA
+rwuser adminMD5AES
+rouser adminMD5AES128
+rouser adminMD5DES
+createUser adminMD5 MD5 test1234
+createUser adminSHA SHA test1234
+createUser adminMD5AES MD5 test1234 AES test1234
+createUser adminMD5AES128 MD5 test1234 AES test1234
+createUser adminMD5DES MD5 test1234 DES test1234
+
+createUser noAuthUser
+authuser read noAuthUser noauth
+###### End #####
+
+Before launching daemon make sure that there is no file /var/net-snmp/snmpd.conf
+Delete it if exists. Ingoring to to so will fail SNMPv3 tests
+
+Make snmpd bind on localhost only. To do so, pass '127.0.0.1' into it's startup arguments
+(see /etc/init.d/snmpd on Linux and set snmpd_flags="127.0.0.1" in rc.conf in FreeBSD).
+Otherwise your SNMP daemon will answer SNMPv3 messages from remote clients.
+
+- Launch snmpd (service snmpd start  or /etc/init.d/snmpd start)
+
+On Windows
+----------
+
+[to be completed]
diff -ruN trunk/ext/snmp/tests/clean.inc snmp-new/ext/snmp/tests/clean.inc
--- trunk/ext/snmp/tests/clean.inc	1970-01-01 03:00:00.000000000 +0300
+++ snmp-new/ext/snmp/tests/clean.inc	2009-10-17 21:14:00.000000000 +0400
@@ -0,0 +1,4 @@
+<?php
+include_once(dirname(__FILE__) . '/snmp_include.inc');
+
+// To be completed if necessary
diff -ruN trunk/ext/snmp/tests/generic_timeout_error.phpt snmp-new/ext/snmp/tests/generic_timeout_error.phpt
--- trunk/ext/snmp/tests/generic_timeout_error.phpt	1970-01-01 03:00:00.000000000 +0300
+++ snmp-new/ext/snmp/tests/generic_timeout_error.phpt	2011-01-05 12:15:40.000000000 +0300
@@ -0,0 +1,22 @@
+--TEST--                                 
+Generic timeout (wrong community)
+--CREDITS--
+Boris Lytochkin
+--SKIPIF--
+<?php
+require_once(dirname(__FILE__).'/skipif.inc');
+?>
+--FILE--
+<?php
+require_once(dirname(__FILE__).'/snmp_include.inc');
+
+//EXPECTF format is quickprint OFF
+snmp_set_quick_print(false);
+snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
+
+var_dump(snmpget($hostname, 'timeout_community_432', '.1.3.6.1.2.1.1.1.0', $timeout, $retries));
+
+?>
+--EXPECTF--
+Warning: snmpget(): No response from %s in %s on line %d
+bool(false)
\ No newline at end of file
diff -ruN trunk/ext/snmp/tests/skipif.inc snmp-new/ext/snmp/tests/skipif.inc
--- trunk/ext/snmp/tests/skipif.inc	1970-01-01 03:00:00.000000000 +0300
+++ snmp-new/ext/snmp/tests/skipif.inc	2010-12-18 14:33:17.000000000 +0300
@@ -0,0 +1,13 @@
+<?php
+extension_loaded('snmp') or die('skip snmp extension not available in this build');
+ 
+require_once (dirname(__FILE__).'/snmp_include.inc');
+
+//test server is available
+// this require snmpget to work ...
+//snmpget  ( string $hostname  , string $community  , 
+//string $object_id  [, int $timeout  [, int $retries  ]] )
+
+if (snmpget($hostname, $community, '.1.3.6.1.2.1.1.1.0', $timeout) === false)
+	die('NO SNMPD on this host or community invalid');
+
diff -ruN trunk/ext/snmp/tests/snmp-object-error.phpt snmp-new/ext/snmp/tests/snmp-object-error.phpt
--- trunk/ext/snmp/tests/snmp-object-error.phpt	1970-01-01 03:00:00.000000000 +0300
+++ snmp-new/ext/snmp/tests/snmp-object-error.phpt	2011-01-05 15:31:21.000000000 +0300
@@ -0,0 +1,84 @@
+--TEST--                                 
+Errors in SNMP session-wise functions 
+--CREDITS--
+Boris Lytochkin
+--SKIPIF--
+<?php
+require_once(dirname(__FILE__).'/skipif.inc');
+?>
+--FILE--
+<?php
+require_once(dirname(__FILE__).'/snmp_include.inc');
+
+//EXPECTF format is quickprint OFF
+snmp_set_quick_print(false);
+snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
+
+try {
+var_dump(new SNMP(SNMP_VERSION_1, $hostname));
+} catch (Exception $e) {
+    print $e->getMessage() . "\n";
+}
+try {
+var_dump(new SNMP(SNMP_VERSION_1, $hostname, $community, ''));
+} catch (Exception $e) {
+    print $e->getMessage() . "\n";
+}
+try {
+var_dump(new SNMP(SNMP_VERSION_1, $hostname, $community, $timeout, ''));
+} catch (Exception $e) {
+    print $e->getMessage() . "\n";
+}
+try {
+var_dump(new SNMP(7, $hostname, $community));
+} catch (Exception $e) {
+    print $e->getMessage() . "\n";
+}
+
+echo "Open normal session\n";
+$session = new SNMP(SNMP_VERSION_3, $hostname, $user_noauth, $timeout, $retries);
+$session->valueretrieval = 67;
+var_dump($session->valueretrieval);
+echo "Closing session\n";
+var_dump($session->close(''));
+var_dump($session->close());
+var_dump($session->get('.1.3.6.1.2.1.1.1.0'));
+var_dump($session->close());
+
+$session = new SNMP(SNMP_VERSION_2c, $hostname, $community, $timeout, $retries);
+var_dump($session->walk('.1.3.6.1.2.1.1', ''));
+var_dump($session->walk('.1.3.6.1.2.1.1', 0, ''));
+var_dump($session->get());
+var_dump($session->set());
+
+?>
+--EXPECTF--
+SNMP::__construct() expects at least 3 parameters, 2 given
+SNMP::__construct() expects parameter 4 to be long, string given
+SNMP::__construct() expects parameter 5 to be long, string given
+Unknown SNMP protocol version
+Open normal session
+
+Warning: main(): Unknown SNMP value retrieval method '67' in %s on line %d
+int(%d)
+Closing session
+
+Warning: SNMP::close() expects exactly 0 parameters, 1 given in %s on line %d
+bool(false)
+bool(true)
+
+Warning: SNMP::get(): Invalid or unitialized SNMP object in %s on line %d
+bool(false)
+bool(true)
+
+Warning: SNMP::walk() expects parameter 2 to be long, string given in %s on line %d
+bool(false)
+
+Warning: SNMP::walk() expects parameter 3 to be long, string given in %s on line %d
+bool(false)
+
+Warning: SNMP::get() expects exactly 1 parameter, 0 given in %s on line %d
+bool(false)
+
+Warning: SNMP::set() expects exactly 3 parameters, 0 given in %s on line %d
+bool(false)
diff -ruN trunk/ext/snmp/tests/snmp-object-properties.phpt snmp-new/ext/snmp/tests/snmp-object-properties.phpt
--- trunk/ext/snmp/tests/snmp-object-properties.phpt	1970-01-01 03:00:00.000000000 +0300
+++ snmp-new/ext/snmp/tests/snmp-object-properties.phpt	2011-01-05 17:57:02.000000000 +0300
@@ -0,0 +1,118 @@
+--TEST--                                 
+OO API: SNMP object properties
+--CREDITS--
+Boris Lytochkin
+--SKIPIF--
+<?php
+require_once(dirname(__FILE__).'/skipif.inc');
+?>
+--FILE--
+<?php
+require_once(dirname(__FILE__).'/snmp_include.inc');
+
+//EXPECTF format is quickprint OFF
+snmp_set_enum_print(false);
+snmp_set_quick_print(false);
+snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
+snmp_set_oid_output_format(SNMP_OID_OUTPUT_FULL);
+
+echo "Check working\n";
+
+$session = new SNMP(SNMP_VERSION_1, $hostname, $community, $timeout, $retries);
+var_dump($session);
+
+$session->enum_print = TRUE;
+$session->quick_print = TRUE;
+$session->valueretrieval = SNMP_VALUE_LIBRARY;
+$session->oid_output_format = SNMP_OID_OUTPUT_NUMERIC;
+
+var_dump($session);
+
+$session->enum_print = "1";
+$session->quick_print = "1";
+$session->valueretrieval = "1";
+$session->oid_output_format = "3";
+
+var_dump($session);
+
+var_dump(property_exists($session, "enum_print"));
+var_dump(isset($session->enum_print));
+var_dump(empty($session->enum_print));
+
+$param=123;
+$session->$param = "param_value";
+var_dump($session);
+var_dump($session->$param);
+var_dump(property_exists($session, $param));
+
+echo "Error handling\n";
+$param = 'there is no such parameter';
+var_dump($session->$param);
+var_dump(property_exists($session, $param));
+
+$session->valueretrieval = 67;
+var_dump($session->valueretrieval);
+$session->oid_output_format = 78;
+var_dump($session->oid_output_format);
+
+?>
+--EXPECTF--
+Check working
+object(SNMP)#%d (%d) {
+  ["valueretrieval"]=>
+  int(1)
+  ["quick_print"]=>
+  bool(false)
+  ["enum_print"]=>
+  bool(false)
+  ["oid_output_format"]=>
+  int(3)
+}
+object(SNMP)#%d (%d) {
+  ["valueretrieval"]=>
+  int(0)
+  ["quick_print"]=>
+  bool(true)
+  ["enum_print"]=>
+  bool(true)
+  ["oid_output_format"]=>
+  int(4)
+}
+object(SNMP)#%d (%d) {
+  ["valueretrieval"]=>
+  int(1)
+  ["quick_print"]=>
+  bool(true)
+  ["enum_print"]=>
+  bool(true)
+  ["oid_output_format"]=>
+  int(3)
+}
+bool(true)
+bool(true)
+bool(false)
+object(SNMP)#%d (%d) {
+  ["valueretrieval"]=>
+  int(1)
+  ["quick_print"]=>
+  bool(true)
+  ["enum_print"]=>
+  bool(true)
+  ["oid_output_format"]=>
+  int(3)
+  ["123"]=>
+  string(11) "param_value"
+}
+string(11) "param_value"
+bool(true)
+Error handling
+
+Notice: Undefined property: SNMP::$there is no such parameter in %s on line %d
+NULL
+bool(false)
+
+Warning: main(): Unknown SNMP value retrieval method '67' in %s on line %d
+int(1)
+
+Warning: main(): Unknown SNMP output print format '78' in %s on line %d
+int(3)
\ No newline at end of file
diff -ruN trunk/ext/snmp/tests/snmp-object-set_security_error.phpt snmp-new/ext/snmp/tests/snmp-object-set_security_error.phpt
--- trunk/ext/snmp/tests/snmp-object-set_security_error.phpt	1970-01-01 03:00:00.000000000 +0300
+++ snmp-new/ext/snmp/tests/snmp-object-set_security_error.phpt	2011-01-05 15:34:13.000000000 +0300
@@ -0,0 +1,66 @@
+--TEST--                                 
+OO API SNMP::set_security (errors)
+--CREDITS--
+Boris Lytochkin
+--SKIPIF--
+<?php
+require_once(dirname(__FILE__).'/skipif.inc');
+?>
+--FILE--
+<?php
+require_once(dirname(__FILE__).'/snmp_include.inc');
+
+//EXPECTF format is quickprint OFF
+snmp_set_quick_print(false);
+snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
+
+$session = new SNMP(SNMP_VERSION_3, $hostname, $user_noauth, $timeout, $retries);
+$session->set_security('noAuthNoPriv');
+
+#echo "Checking error handling\n";
+var_dump($session->set_security());
+var_dump($session->set_security(''));
+var_dump($session->set_security('bugusPriv'));
+var_dump($session->set_security('authNoPriv', 'TTT'));
+var_dump($session->set_security('authNoPriv', 'MD5', ''));
+var_dump($session->set_security('authNoPriv', 'MD5', 'te'));
+var_dump($session->set_security('authPriv', 'MD5', $auth_pass, 'BBB'));
+var_dump($session->set_security('authPriv', 'MD5', $auth_pass, 'AES', ''));
+var_dump($session->set_security('authPriv', 'MD5', $auth_pass, 'AES', 'ty'));
+var_dump($session->set_security('authPriv', 'MD5', $auth_pass, 'AES', 'test12345', 'context', 'dsa'));
+
+var_dump($session->close());
+
+?>
+--EXPECTF--
+
+Warning: SNMP::set_security() expects at least 1 parameter, 0 given in %s on line %d
+bool(false)
+
+Warning: SNMP::set_security(): Invalid security level '' in %s on line %d
+bool(false)
+
+Warning: SNMP::set_security(): Invalid security level 'bugusPriv' in %s on line %d
+bool(false)
+
+Warning: SNMP::set_security(): Unknown authentication protocol 'TTT' in %s on line %d
+bool(false)
+
+Warning: SNMP::set_security(): Error generating a key for authentication pass phrase '': Generic error (The supplied password length is too short.) in %s on line %d
+bool(false)
+
+Warning: SNMP::set_security(): Error generating a key for authentication pass phrase 'te': Generic error (The supplied password length is too short.) in %s on line %d
+bool(false)
+
+Warning: SNMP::set_security(): Unknown security protocol 'BBB' in %s on line %d
+bool(false)
+
+Warning: SNMP::set_security(): Error generating a key for privacy pass phrase '': Generic error (The supplied password length is too short.) in %s on line %d
+bool(false)
+
+Warning: SNMP::set_security(): Error generating a key for privacy pass phrase 'ty': Generic error (The supplied password length is too short.) in %s on line %d
+bool(false)
+
+Warning: SNMP::set_security(): Bad engine ID value 'dsa' in %s on line %d
+bool(false)
+bool(true)
\ No newline at end of file
diff -ruN trunk/ext/snmp/tests/snmp-object.phpt snmp-new/ext/snmp/tests/snmp-object.phpt
--- trunk/ext/snmp/tests/snmp-object.phpt	1970-01-01 03:00:00.000000000 +0300
+++ snmp-new/ext/snmp/tests/snmp-object.phpt	2011-01-05 16:16:12.000000000 +0300
@@ -0,0 +1,161 @@
+--TEST--                                 
+OO API
+--CREDITS--
+Boris Lytochkin
+--SKIPIF--
+<?php
+require_once(dirname(__FILE__).'/skipif.inc');
+?>
+--FILE--
+<?php
+require_once(dirname(__FILE__).'/snmp_include.inc');
+
+//EXPECTF format is quickprint OFF
+snmp_set_enum_print(false);
+snmp_set_quick_print(false);
+snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
+snmp_set_oid_output_format(SNMP_OID_OUTPUT_FULL);
+
+echo "SNMPv1\n";
+$session = new SNMP(SNMP_VERSION_1, $hostname, $community, $timeout, $retries);
+$session->valueretrieval = SNMP_VALUE_LIBRARY;
+var_dump($session->get('.1.3.6.1.2.1.1.1.0'));
+var_dump($session->get(array('.1.3.6.1.2.1.1.1.0', '.1.3.6.1.2.1.1.3.0')));
+var_dump($session->getnext('.1.3.6.1.2.1.1.1.0'));
+var_dump($session->close());
+
+echo "SNMPv2\n";
+$session = new SNMP(SNMP_VERSION_2c, $hostname, $community, $timeout, $retries);
+var_dump($session->get('.1.3.6.1.2.1.1.1.0'));
+var_dump($session->getnext('.1.3.6.1.2.1.1.1.0'));
+var_dump($session->close());
+
+echo "WALK multiple on single OID\n";
+$session = new SNMP(SNMP_VERSION_2c, $hostname, $community, $timeout, $retries);
+$z = $session->walk('.1.3.6.1.2.1.1');
+var_dump(gettype($z));
+var_dump(count($z));
+var_dump(key($z));
+var_dump(array_shift($z));
+var_dump($session->close());
+
+echo "WALK multiple on single OID, non_repeaters set to 0\n";
+$session = new SNMP(SNMP_VERSION_2c, $hostname, $community, $timeout, $retries);
+$z = $session->walk('.1.3.6.1.2.1.1', 0);
+var_dump(gettype($z));
+var_dump(count($z));
+var_dump(key($z));
+var_dump(array_shift($z));
+var_dump($session->close());
+
+echo "WALK multiple on single OID, non_repeaters set to 0, max_repetitions set to 30\n";
+$session = new SNMP(SNMP_VERSION_2c, $hostname, $community, $timeout, $retries);
+$z = $session->walk('.1.3.6.1.2.1.1', 0, 30);
+var_dump(gettype($z));
+var_dump(count($z));
+var_dump(key($z));
+var_dump(array_shift($z));
+var_dump($session->close());
+
+echo "SNMPv3 (default security settings)\n";
+$session = new SNMP(SNMP_VERSION_3, $hostname, $user_noauth, $timeout, $retries);
+#$session->set_security($user_noauth, 'noAuthNoPriv', '', '', '', '', '', '');
+var_dump($session->get('.1.3.6.1.2.1.1.1.0'));
+var_dump($session->getnext('.1.3.6.1.2.1.1.1.0'));
+var_dump($session->close());
+
+echo "SNMPv3 (noAuthNoPriv)\n";
+$session = new SNMP(SNMP_VERSION_3, $hostname, $user_noauth, $timeout, $retries);
+$session->set_security('noAuthNoPriv');
+var_dump($session->get('.1.3.6.1.2.1.1.1.0'));
+var_dump($session->getnext('.1.3.6.1.2.1.1.1.0'));
+var_dump($session->close());
+
+echo "SNMPv3 (authPriv)\n";
+$session = new SNMP(SNMP_VERSION_3, $hostname, $rwuser, $timeout, $retries);
+$session->set_security('authPriv', 'MD5', $auth_pass, 'AES', $priv_pass);
+var_dump($session->get('.1.3.6.1.2.1.1.1.0'));
+var_dump($session->getnext('.1.3.6.1.2.1.1.1.0'));
+var_dump($session->walk('.1.3.6.1.2.1.1.1.0'));
+var_dump($session->close());
+
+echo "SET single OID\n";
+$session = new SNMP(SNMP_VERSION_3, $hostname, $rwuser, $timeout, $retries);
+$session->set_security('authPriv', 'MD5', $auth_pass, 'AES', $priv_pass);
+$oid1 = 'SNMPv2-MIB::sysContact.0';
+$oldvalue1 = $session->get($oid1);
+$newvalue1 = $oldvalue1 . '0';
+
+$z = $session->set($oid1, 's', $newvalue1);
+var_dump($z);
+var_dump(($session->get($oid1) === $newvalue1));
+$z = $session->set($oid1, 's', $oldvalue1);
+var_dump($z);
+var_dump(($session->get($oid1) === $oldvalue1));
+var_dump($session->close());
+
+echo "SNMPv3, setting contextEngineID (authPriv)\n";
+$session = new SNMP(SNMP_VERSION_3, $hostname, $rwuser, $timeout, $retries);
+$session->set_security('authPriv', 'MD5', $auth_pass, 'AES', $priv_pass, '', 'aeeeff');
+var_dump($session->get('.1.3.6.1.2.1.1.1.0'));
+var_dump($session->close());
+
+?>
+--EXPECTF--
+SNMPv1
+string(%d) "%S"
+array(2) {
+  ["%s"]=>
+  string(%d) "%S"
+  ["%s"]=>
+  string(%d) "%S"
+}
+string(%d) "%S"
+bool(true)
+SNMPv2
+string(%d) "%S"
+string(%d) "%S"
+bool(true)
+WALK multiple on single OID
+string(5) "array"
+int(%d)
+string(%d) "%S"
+string(%d) "%S"
+bool(true)
+WALK multiple on single OID, non_repeaters set to 0
+string(5) "array"
+int(%d)
+string(%d) "%S"
+string(%d) "%S"
+bool(true)
+WALK multiple on single OID, non_repeaters set to 0, max_repetitions set to 30
+string(5) "array"
+int(%d)
+string(%d) "%S"
+string(%d) "%S"
+bool(true)
+SNMPv3 (default security settings)
+string(%d) "%S"
+string(%d) "%S"
+bool(true)
+SNMPv3 (noAuthNoPriv)
+string(%d) "%S"
+string(%d) "%S"
+bool(true)
+SNMPv3 (authPriv)
+string(%d) "%S"
+string(%d) "%S"
+array(1) {
+  [%s]=>
+  string(%d) "%S"
+}
+bool(true)
+SET single OID
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+SNMPv3, setting contextEngineID (authPriv)
+string(%d) "%S"
+bool(true)
\ No newline at end of file
diff -ruN trunk/ext/snmp/tests/snmp2_get.phpt snmp-new/ext/snmp/tests/snmp2_get.phpt
--- trunk/ext/snmp/tests/snmp2_get.phpt	1970-01-01 03:00:00.000000000 +0300
+++ snmp-new/ext/snmp/tests/snmp2_get.phpt	2010-12-31 00:06:53.000000000 +0300
@@ -0,0 +1,107 @@
+--TEST--                                 
+Function snmp2_get
+--CREDITS--
+Olivier Doucet & Boris Lytochkin
+--SKIPIF--
+<?php
+require_once(dirname(__FILE__).'/skipif.inc');
+?>
+--FILE--
+<?php
+require_once(dirname(__FILE__).'/snmp_include.inc');
+
+//EXPECTF format is quickprint OFF
+snmp_set_quick_print(false);
+snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
+
+echo "Checking error handling\n";
+var_dump(snmp2_get($hostname, $community, '.1.3.6.1.2.1.1.1.0', ''));
+var_dump(snmp2_get($hostname, $community, '.1.3.6.1.2.1.1.1.0', $timeout, ''));
+echo "Empty OID array\n";
+var_dump(snmp2_get($hostname, $community, array(), $timeout, $retries));
+
+echo "Checking working\n";
+echo "Single OID\n";
+var_dump(snmp2_get($hostname, $community, '.1.3.6.1.2.1.1.1.0', $timeout, $retries));
+echo "Single OID in array\n";
+var_dump(snmp2_get($hostname, $community, array('.1.3.6.1.2.1.1.1.0'), $timeout, $retries));
+echo "Multiple OID\n";
+var_dump(snmp2_get($hostname, $community, array('.1.3.6.1.2.1.1.1.0', '.1.3.6.1.2.1.1.3.0'), $timeout, $retries));
+
+echo "More error handling\n";
+echo "Single OID\n";
+var_dump(snmp2_get($hostname, $community, '.1.3.6.1.2..1.1.1.0', $timeout, $retries));
+echo "Single OID in array\n";
+var_dump(snmp2_get($hostname, $community, array('.1.3.6.1.2.1...1.1.0'), $timeout, $retries));
+echo "Multiple OID\n";
+var_dump(snmp2_get($hostname, $community, array('.1.3.6.1.2.1...1.1.0', '.1.3.6.1.2.1.1.3.0'), $timeout, $retries));
+
+echo "noSuchName checks\n";
+echo "Single OID\n";
+var_dump(snmp2_get($hostname, $community, '.1.3.6.1.2.1.1.1.110', $timeout, $retries));
+echo "Single OID in array\n";
+var_dump(snmp2_get($hostname, $community, array('.1.3.6.1.2.1.1.1.110'), $timeout, $retries));
+echo "Multiple OID\n";
+var_dump(snmp2_get($hostname, $community, array('.1.3.6.1.2.1.1.1.0', '.1.3.6.1.2.1.1.3.220'), $timeout, $retries));
+
+
+?>
+--EXPECTF--
+Checking error handling
+
+Warning: snmp2_get() expects parameter 4 to be long,%s given in %s on line %d
+bool(false)
+
+Warning: snmp2_get() expects parameter 5 to be long,%s given in %s on line %d
+bool(false)
+Empty OID array
+
+Warning: snmp2_get(): Got empty OID array in %s on line %d
+bool(false)
+Checking working
+Single OID
+%unicode|string%(%d) "%s"
+Single OID in array
+array(1) {
+  ["%s"]=>
+  %unicode|string%(%d) "%s"
+}
+Multiple OID
+array(2) {
+  ["%s"]=>
+  %unicode|string%(%d) "%s"
+  ["%s"]=>
+  %unicode|string%(%d) "%d"
+}
+More error handling
+Single OID
+
+Warning: snmp2_get(): Invalid object identifier: .1.3.6.1.2..1.1.1.0 in %s on line %d
+bool(false)
+Single OID in array
+
+Warning: snmp2_get(): Invalid object identifier: .1.3.6.1.2.1...1.1.0 in %s on line %d
+bool(false)
+Multiple OID
+
+Warning: snmp2_get(): Invalid object identifier: .1.3.6.1.2.1...1.1.0 in %s on line %d
+array(1) {
+  ["%s"]=>
+  %unicode|string%(%d) "%d"
+}
+noSuchName checks
+Single OID
+
+Warning: snmp2_get(): Error in packet at 'SNMPv2-MIB::sysDescr.110': No Such Instance currently exists at this OID in %s on line %d
+bool(false)
+Single OID in array
+
+Warning: snmp2_get(): Error in packet at 'SNMPv2-MIB::sysDescr.110': No Such Instance currently exists at this OID in %s on line %d
+bool(false)
+Multiple OID
+
+Warning: snmp2_get(): Error in packet at 'SNMPv2-MIB::sysUpTime.220': No Such Instance currently exists at this OID in %s on line %d
+array(1) {
+  ["%s"]=>
+  %unicode|string%(%d) "%s"
+}
diff -ruN trunk/ext/snmp/tests/snmp2_getnext.phpt snmp-new/ext/snmp/tests/snmp2_getnext.phpt
--- trunk/ext/snmp/tests/snmp2_getnext.phpt	1970-01-01 03:00:00.000000000 +0300
+++ snmp-new/ext/snmp/tests/snmp2_getnext.phpt	2010-12-31 00:07:55.000000000 +0300
@@ -0,0 +1,39 @@
+--TEST--                                 
+Function snmp2_getnext
+--CREDITS--
+Olivier Doucet & Boris Lytochkin
+--SKIPIF--
+<?php
+require_once(dirname(__FILE__).'/skipif.inc');
+?>
+--FILE--
+<?php
+require_once(dirname(__FILE__).'/snmp_include.inc');
+
+//EXPECTF format is quickprint OFF
+snmp_set_quick_print(false);
+snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
+
+echo "Single OID\n";
+var_dump(snmp2_getnext($hostname, $community, '.1.3.6.1.2.1.1.1.0', $timeout, $retries));
+echo "Single OID in array\n";
+var_dump(snmp2_getnext($hostname, $community, array('.1.3.6.1.2.1.1.1.0'), $timeout, $retries));
+echo "Multiple OID\n";
+var_dump(snmp2_getnext($hostname, $community, array('.1.3.6.1.2.1.1.1.0', '.1.3.6.1.2.1.1.6.0'), $timeout, $retries));
+
+?>
+--EXPECTF--
+Single OID
+%unicode|string%(%d) "%s"
+Single OID in array
+array(1) {
+  ["%s"]=>
+  %unicode|string%(%d) "%s"
+}
+Multiple OID
+array(2) {
+  ["%s"]=>
+  %unicode|string%(%d) "%s"
+  ["%s"]=>
+  %unicode|string%(%d) "%d"
+}
diff -ruN trunk/ext/snmp/tests/snmp2_real_walk.phpt snmp-new/ext/snmp/tests/snmp2_real_walk.phpt
--- trunk/ext/snmp/tests/snmp2_real_walk.phpt	1970-01-01 03:00:00.000000000 +0300
+++ snmp-new/ext/snmp/tests/snmp2_real_walk.phpt	2010-12-21 23:31:59.000000000 +0300
@@ -0,0 +1,86 @@
+--TEST--                                 
+Function snmp2_real_walk
+--CREDITS--
+Olivier Doucet Olivier Doucet Boris Lytochkin
+--SKIPIF--
+<?php
+require_once(dirname(__FILE__).'/skipif.inc');
+?>
+--FILE--
+<?php
+require_once(dirname(__FILE__).'/snmp_include.inc');
+
+//EXPECTF format is quickprint OFF
+snmp_set_quick_print(false);
+snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
+
+echo "Checking error handling\n";
+var_dump(snmp2_real_walk($hostname, $community, '.1.3.6.1.2.1.1', ''));
+var_dump(snmp2_real_walk($hostname, $community, '.1.3.6.1.2.1.1', $timeout, ''));
+
+echo "Checking working\n";
+echo "Single OID\n";
+$return = snmp2_real_walk($hostname, $community, '.1.3.6.1.2.1.1', $timeout, $retries);
+var_dump(gettype($return));
+var_dump(sizeof($return));
+var_dump(key($return));
+var_dump(array_shift($return));
+
+echo "Single OID in array\n";
+$return = snmp2_real_walk($hostname, $community, array('.1.3.6.1.2.1.1'), $timeout, $retries);
+var_dump(gettype($return));
+var_dump(sizeof($return));
+var_dump(key($return));
+var_dump(array_shift($return));
+
+echo "More error handling\n";
+echo "Multiple correct OID\n";
+$return = snmp2_real_walk($hostname, $community, array('.1.3.6.1.2.1.1', '.1.3.6'), $timeout, $retries);
+var_dump($return);
+
+echo "Multiple OID with wrong OID\n";
+$return = snmp2_real_walk($hostname, $community, array('.1.3.6.1.2.1.1', '.1.3.6...1'), $timeout, $retries);
+var_dump($return);
+$return = snmp2_real_walk($hostname, $community, array('.1.3.6...1', '.1.3.6.1.2.1.1'), $timeout, $retries);
+var_dump($return);
+
+echo "Single nonexisting OID\n";
+$return = snmp2_real_walk($hostname, $community, array('.1.3.6.99999.0.99999.111'), $timeout, $retries);
+var_dump($return);
+
+?>
+--EXPECTF--
+Checking error handling
+
+Warning: snmp2_real_walk() expects parameter 4 to be long, %s given in %s on line %d
+bool(false)
+
+Warning: snmp2_real_walk() expects parameter 5 to be long, %s given in %s on line %d
+bool(false)
+Checking working
+Single OID
+%unicode|string%(5) "array"
+int(%d)
+string(%d) "%s"
+string(%d) "%s"
+Single OID in array
+%unicode|string%(5) "array"
+int(%d)
+string(%d) "%s"
+string(%d) "%s"
+More error handling
+Multiple correct OID
+
+Warning: snmp2_real_walk(): Multi OID walks are not supported! in %s on line %d
+bool(false)
+Multiple OID with wrong OID
+
+Warning: snmp2_real_walk(): Multi OID walks are not supported! in %s on line %d
+bool(false)
+
+Warning: snmp2_real_walk(): Multi OID walks are not supported! in %s on line %d
+bool(false)
+Single nonexisting OID
+
+Warning: snmp2_real_walk(): Error in packet at '%s': No more variables left in this MIB View (It is past the end of the MIB tree) in %s on line %d
+bool(false)
diff -ruN trunk/ext/snmp/tests/snmp2_set-nomib.phpt snmp-new/ext/snmp/tests/snmp2_set-nomib.phpt
--- trunk/ext/snmp/tests/snmp2_set-nomib.phpt	1970-01-01 03:00:00.000000000 +0300
+++ snmp-new/ext/snmp/tests/snmp2_set-nomib.phpt	2010-12-27 23:49:25.000000000 +0300
@@ -0,0 +1,59 @@
+--TEST--                                 
+Function snmp2_set (without MIBs loading)
+--CREDITS--
+Boris Lytockin
+--SKIPIF--
+<?php
+require_once(dirname(__FILE__).'/skipif.inc');
+?>
+--ENV--
+return <<<END
+MIBS=
+END;
+--FILE--
+<?php
+require_once(dirname(__FILE__).'/snmp_include.inc');
+
+//EXPECTF format is quickprint OFF
+snmp_set_quick_print(false);
+snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
+
+echo "Check error handing\n";
+echo "Nonexisting OID\n";
+$z = snmp2_set($hostname, $communityWrite, '.1.3.6.777.888.999.444.0', 's', 'bbb', $timeout, $retries);
+var_dump($z);
+
+echo "Bogus OID\n";
+$z = snmp2_set($hostname, $communityWrite, '.1.3.6...777.888.999.444.0', 's', 'bbb', $timeout, $retries);
+var_dump($z);
+
+echo "Checking working\n";
+$oid1 = '.1.3.6.1.2.1.1.4.0';
+$oldvalue1 = snmpget($hostname, $communityWrite, $oid1, $timeout, $retries);
+$newvalue1 = $oldvalue1 . '0';
+
+echo "Single OID\n";
+$z = snmp2_set($hostname, $communityWrite, $oid1, 's', $newvalue1, $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $newvalue1));
+$z = snmp2_set($hostname, $communityWrite, $oid1, 's', $oldvalue1, $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1));
+
+?>
+--EXPECTF--
+Check error handing
+Nonexisting OID
+
+Warning: snmp2_set(): Error in packet at '%s': notWritable (That object does not support modification) in %s on line %d
+bool(false)
+Bogus OID
+
+Warning: snmp2_set(): Invalid object identifier: %s in %s on line %d
+bool(false)
+Checking working
+Single OID
+bool(true)
+bool(true)
+bool(true)
+bool(true)
\ No newline at end of file
diff -ruN trunk/ext/snmp/tests/snmp2_set.phpt snmp-new/ext/snmp/tests/snmp2_set.phpt
--- trunk/ext/snmp/tests/snmp2_set.phpt	1970-01-01 03:00:00.000000000 +0300
+++ snmp-new/ext/snmp/tests/snmp2_set.phpt	2010-12-20 10:36:16.000000000 +0300
@@ -0,0 +1,248 @@
+--TEST--                                 
+Function snmp2_set
+--CREDITS--
+Boris Lytochkin
+--SKIPIF--
+<?php
+require_once(dirname(__FILE__).'/skipif.inc');
+?>
+--FILE--
+<?php
+require_once(dirname(__FILE__).'/snmp_include.inc');
+
+//EXPECTF format is quickprint OFF
+snmp_set_quick_print(false);
+snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
+
+echo "Check error handing\n";
+echo "4args (5 needed)\n";
+$z = snmp2_set($hostname, $communityWrite, 'SNMPv2-MIB::sysLocation.0');
+var_dump($z);
+
+echo "No type & no value (timeout & retries instead)\n";
+$z = snmp2_set($hostname, $communityWrite, 'SNMPv2-MIB::sysLocation.0', $timeout, $retries);
+var_dump($z);
+
+echo "No value (timeout instead), retries instead of timeout\n";
+$z = snmp2_set($hostname, $communityWrite, 'SNMPv2-MIB::sysLocation.0', 'q', $timeout, $retries);
+var_dump($z);
+
+echo "Bogus OID\n";
+$z = snmp2_set($hostname, $communityWrite, '.1.3.6.777.888.999.444.0', 's', 'bbb', $timeout, $retries);
+var_dump($z);
+
+echo "Checking working\n";
+$oid1 = 'SNMPv2-MIB::sysContact.0';
+$oldvalue1 = snmpget($hostname, $communityWrite, $oid1, $timeout, $retries);
+$newvalue1 = $oldvalue1 . '0';
+$oid2 = 'SNMPv2-MIB::sysLocation.0';
+$oldvalue2 = snmpget($hostname, $communityWrite, $oid1, $timeout, $retries);
+$newvalue2 = $oldvalue2 . '0';
+
+echo "Single OID\n";
+$z = snmp2_set($hostname, $communityWrite, $oid1, 's', $newvalue1, $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $newvalue1));
+$z = snmp2_set($hostname, $communityWrite, $oid1, 's', $oldvalue1, $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1));
+
+echo "Multiple OID\n";
+$z = snmp2_set($hostname, $communityWrite, array($oid1, $oid2), array('s','s'), array($newvalue1, $newvalue2), $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $newvalue1));
+var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $newvalue2));
+$z = snmp2_set($hostname, $communityWrite, array($oid1, $oid2), array('s','s'), array($oldvalue1, $oldvalue2), $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1));
+var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2));
+
+echo "Multiple OID, single type & value\n";
+$z = snmp2_set($hostname, $communityWrite, array($oid1, $oid2), 's', $newvalue1, $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $newvalue1));
+var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $newvalue1));
+$z = snmp2_set($hostname, $communityWrite, array($oid1, $oid2), array('s','s'), array($oldvalue1, $oldvalue2), $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1));
+var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2));
+
+echo "Multiple OID, single type, multiple value\n";
+$z = snmp2_set($hostname, $communityWrite, array($oid1, $oid2), 's', array($newvalue1, $newvalue2), $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $newvalue1));
+var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $newvalue2));
+$z = snmp2_set($hostname, $communityWrite, array($oid1, $oid2), array('s','s'), array($oldvalue1, $oldvalue2), $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1));
+var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2));
+
+
+echo "More error handing\n";
+echo "Single OID, single type in array, single value\n";
+$z = snmp2_set($hostname, $communityWrite, $oid1, array('s'), $newvalue1, $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1));
+var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2));
+
+echo "Single OID, single type, single value in array\n";
+$z = snmp2_set($hostname, $communityWrite, $oid1, 's', array($newvalue1), $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1));
+var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2));
+
+echo "Multiple OID, 1st wrong type\n";
+$z = snmp2_set($hostname, $communityWrite, array($oid1, $oid2), array('sw','s'), array($newvalue1, $newvalue2), $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1));
+var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2));
+
+echo "Multiple OID, 2nd wrong type\n";
+$z = snmp2_set($hostname, $communityWrite, array($oid1, $oid2), array('s','sb'), array($newvalue1, $newvalue2), $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1));
+var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2));
+
+echo "Multiple OID, single type in array, multiple value\n";
+$z = snmp2_set($hostname, $communityWrite, array($oid1, $oid2), array('s'), array($newvalue1, $newvalue2), $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1));
+var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2));
+
+echo "Multiple OID & type, singe value in array\n";
+$z = snmp2_set($hostname, $communityWrite, array($oid1, $oid2), array('s', 's'), array($newvalue1), $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1));
+var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2));
+
+echo "Multiple OID, 1st bogus, single type, multiple value\n";
+$z = snmp2_set($hostname, $communityWrite, array($oid1 . '44.55.66.77', $oid2), 's', array($newvalue1, $newvalue2), $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1));
+var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2));
+
+echo "Multiple OID, 2nd bogus, single type, multiple value\n";
+$z = snmp2_set($hostname, $communityWrite, array($oid1, $oid2 . '44.55.66.77'), 's', array($newvalue1, $newvalue2), $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1));
+var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2));
+
+echo "Multiple OID, single multiple type (1st bogus), multiple value\n";
+$z = snmp2_set($hostname, $communityWrite, array($oid1, $oid2), array('q', 's'), array($newvalue1, $newvalue2), $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1));
+var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2));
+
+echo "Multiple OID, single multiple type (2nd bogus), multiple value\n";
+$z = snmp2_set($hostname, $communityWrite, array($oid1, $oid2), array('s', 'w'), array($newvalue1, $newvalue2), $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1));
+var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2));
+
+?>
+--EXPECTF--
+Check error handing
+4args (5 needed)
+
+Warning: snmp2_set() expects at least 5 parameters, 3 given in %s on line %d
+bool(false)
+No type & no value (timeout & retries instead)
+
+Warning: snmp2_set(): Bogus type '-1', should be single char, got 2 in %s on line %d
+bool(false)
+No value (timeout instead), retries instead of timeout
+
+Warning: snmp2_set(): Could not add variable: OID='%s' type='q' value='%i': Bad variable type ("q") in %s on line %d
+bool(false)
+Bogus OID
+
+Warning: snmp2_set(): Error in packet at '%s': notWritable (That object does not support modification) in %s on line %d
+bool(false)
+Checking working
+Single OID
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+Multiple OID
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+Multiple OID, single type & value
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+Multiple OID, single type, multiple value
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+More error handing
+Single OID, single type in array, single value
+
+Warning: snmp2_set(): Single objid and multiple type or values are not supported in %s on line %s
+bool(false)
+bool(true)
+bool(true)
+Single OID, single type, single value in array
+
+Warning: snmp2_set(): Single objid and multiple type or values are not supported in %s on line %s
+bool(false)
+bool(true)
+bool(true)
+Multiple OID, 1st wrong type
+
+Warning: snmp2_set(): '%s': bogus type 'sw', should be single char, got 2 in %s on line %s
+bool(false)
+bool(true)
+bool(true)
+Multiple OID, 2nd wrong type
+
+Warning: snmp2_set(): '%s': bogus type 'sb', should be single char, got 2 in %s on line %s
+bool(false)
+bool(true)
+bool(true)
+Multiple OID, single type in array, multiple value
+
+Warning: snmp2_set(): '%s': no type set in %s on line %d
+bool(false)
+bool(true)
+bool(true)
+Multiple OID & type, singe value in array
+
+Warning: snmp2_set(): '%s': no value set in %s on line %d
+bool(false)
+bool(true)
+bool(true)
+Multiple OID, 1st bogus, single type, multiple value
+
+Warning: snmp2_set(): Error in packet at '%s': noCreation (That table does not support row creation or that object can not ever be created) in %s on line %d
+bool(false)
+bool(true)
+bool(true)
+Multiple OID, 2nd bogus, single type, multiple value
+
+Warning: snmp2_set(): Error in packet at '%s': noCreation (That table does not support row creation or that object can not ever be created) in %s on line %d
+bool(false)
+bool(true)
+bool(true)
+Multiple OID, single multiple type (1st bogus), multiple value
+
+Warning: snmp2_set(): Could not add variable: OID='%s' type='q' value='%s': Bad variable type ("q") in %s on line %d
+bool(false)
+bool(true)
+bool(true)
+Multiple OID, single multiple type (2nd bogus), multiple value
+
+Warning: snmp2_set(): Could not add variable: OID='%s' type='w' value='%s': Bad variable type ("w") in %s on line %d
+bool(false)
+bool(true)
+bool(true)
diff -ruN trunk/ext/snmp/tests/snmp2_walk.phpt snmp-new/ext/snmp/tests/snmp2_walk.phpt
--- trunk/ext/snmp/tests/snmp2_walk.phpt	1970-01-01 03:00:00.000000000 +0300
+++ snmp-new/ext/snmp/tests/snmp2_walk.phpt	2010-12-21 23:31:59.000000000 +0300
@@ -0,0 +1,99 @@
+--TEST--                                 
+Function snmp2_walk
+--CREDITS--
+Olivier Doucet Olivier Doucet Boris Lytochkin
+--SKIPIF--
+<?php
+require_once(dirname(__FILE__).'/skipif.inc');
+?>
+--FILE--
+<?php
+require_once(dirname(__FILE__).'/snmp_include.inc');
+
+//EXPECTF format is quickprint OFF
+snmp_set_quick_print(false);
+snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
+
+echo "Checking error handling\n";
+var_dump(snmp2_walk($hostname, $community, '.1.3.6.1.2.1.1', ''));
+var_dump(snmp2_walk($hostname, $community, '.1.3.6.1.2.1.1', $timeout, ''));
+
+echo "Checking working\n";
+echo "Single OID\n";
+$return = snmp2_walk($hostname, $community, '.1.3.6.1.2.1.1', $timeout, $retries);
+
+var_dump(gettype($return));
+var_dump(sizeof($return));
+var_dump(gettype($return[0]));
+var_dump(gettype($return[1]));
+
+echo "Single OID in array\n";
+$return = snmp2_walk($hostname, $community, array('.1.3.6.1.2.1.1'), $timeout, $retries);
+var_dump(gettype($return));
+var_dump(gettype($return[0]));
+
+echo "Default OID\n";
+$return = snmpwalk($hostname, $community, '', $timeout, $retries);
+var_dump(gettype($return));
+var_dump(gettype($return[0]));
+
+echo "More error handling\n";
+echo "Single incorrect OID\n";
+$return = snmpwalk($hostname, $community, '.1.3.6...1', $timeout, $retries);
+var_dump($return);
+
+echo "Multiple correct OID\n";
+$return = snmp2_walk($hostname, $community, array('.1.3.6.1.2.1.1', '.1.3.6'), $timeout, $retries);
+var_dump($return);
+
+echo "Multiple OID with wrong OID\n";
+$return = snmp2_walk($hostname, $community, array('.1.3.6.1.2.1.1', '.1.3.6...1'), $timeout, $retries);
+var_dump($return);
+$return = snmp2_walk($hostname, $community, array('.1.3.6...1', '.1.3.6.1.2.1.1'), $timeout, $retries);
+var_dump($return);
+
+echo "Single nonexisting OID\n";
+$return = snmp2_walk($hostname, $community, array('.1.3.6.99999.0.99999.111'), $timeout, $retries);
+var_dump($return);
+
+?>
+--EXPECTF--
+Checking error handling
+
+Warning: snmp2_walk() expects parameter 4 to be long, %s given in %s on line %d
+bool(false)
+
+Warning: snmp2_walk() expects parameter 5 to be long, %s given in %s on line %d
+bool(false)
+Checking working
+Single OID
+%unicode|string%(5) "array"
+int(32)
+%unicode|string%(6) "string"
+%unicode|string%(6) "string"
+Single OID in array
+%unicode|string%(5) "array"
+%unicode|string%(6) "string"
+Default OID
+%unicode|string%(5) "array"
+%unicode|string%(6) "string"
+More error handling
+Single incorrect OID
+
+Warning: snmpwalk(): Invalid object identifier: %s in %s on line %d
+bool(false)
+Multiple correct OID
+
+Warning: snmp2_walk(): Multi OID walks are not supported! in %s on line %d
+bool(false)
+Multiple OID with wrong OID
+
+Warning: snmp2_walk(): Multi OID walks are not supported! in %s on line %d
+bool(false)
+
+Warning: snmp2_walk(): Multi OID walks are not supported! in %s on line %d
+bool(false)
+Single nonexisting OID
+
+Warning: snmp2_walk(): Error in packet at '%s': No more variables left in this MIB View (It is past the end of the MIB tree) in %s on line %d
+bool(false)
diff -ruN trunk/ext/snmp/tests/snmp3-error.phpt snmp-new/ext/snmp/tests/snmp3-error.phpt
--- trunk/ext/snmp/tests/snmp3-error.phpt	1970-01-01 03:00:00.000000000 +0300
+++ snmp-new/ext/snmp/tests/snmp3-error.phpt	2010-12-27 23:48:55.000000000 +0300
@@ -0,0 +1,76 @@
+--TEST--                                 
+SNMPv3 Support (errors)
+--CREDITS--
+Boris Lytochkin
+--SKIPIF--
+<?php
+require_once(dirname(__FILE__).'/skipif.inc');
+?>
+--FILE--
+<?php
+require_once(dirname(__FILE__).'/snmp_include.inc');
+
+echo "Checking error handling\n";
+
+//int snmp3_get(string host, string sec_name, string sec_level, string auth_protocol, 
+//              string auth_passphrase, string priv_protocol, string priv_passphrase, 
+//              string object_id [, int timeout [, int retries]]);
+
+var_dump(snmp3_get($hostname, $community, '', '', '', '', ''));
+var_dump(snmp3_get($hostname, $community, '', '', '', '', '', ''));
+var_dump(snmp3_get($hostname, $community, 'bugusPriv', '', '', '', '', ''));
+var_dump(snmp3_get($hostname, $community, 'authNoPriv', 'TTT', '', '', '', ''));
+var_dump(snmp3_get($hostname, $community, 'authNoPriv', 'MD5', '', '', '', ''));
+var_dump(snmp3_get($hostname, $community, 'authNoPriv', 'MD5', 'te', '', '', ''));
+var_dump(snmp3_get($hostname, $community, 'authPriv', 'MD5', $auth_pass, 'BBB', '', ''));
+var_dump(snmp3_get($hostname, $community, 'authPriv', 'MD5', $auth_pass, 'AES', '', ''));
+var_dump(snmp3_get($hostname, $community, 'authPriv', 'MD5', $auth_pass, 'AES', 'ty', ''));
+var_dump(snmp3_get($hostname, 'somebogususer', 'authPriv', 'MD5', $auth_pass, 'AES', $priv_pass, '.1.3.6.1.2.1.1.1.0', $timeout, $retries));
+
+var_dump(snmp3_set($hostname, $community, 'authPriv', 'MD5', $auth_pass, 'AES', $priv_pass, '', 's'));
+
+var_dump(snmp3_set($hostname, $rwuser, 'authPriv', 'MD5', $auth_pass, 'AES', $priv_pass, '.1.3.6.777...7.5.3', 's', 'ttt', $timeout, $retries));
+var_dump(snmp3_set($hostname, $rwuser, 'authPriv', 'MD5', $auth_pass, 'AES', $priv_pass, '.1.3.6.777.7.5.3', array('s'), 'yyy', $timeout, $retries));
+
+?>
+--EXPECTF--
+Checking error handling
+
+Warning: snmp3_get() expects at least 8 parameters, 7 given in %s on line %d
+bool(false)
+
+Warning: snmp3_get(): Invalid security level '' in %s on line %d
+bool(false)
+
+Warning: snmp3_get(): Invalid security level 'bugusPriv' in %s on line %d
+bool(false)
+
+Warning: snmp3_get(): Unknown authentication protocol 'TTT' in %s on line %d
+bool(false)
+
+Warning: snmp3_get(): Error generating a key for authentication pass phrase '': Generic error (The supplied password length is too short.) in %s on line %d
+bool(false)
+
+Warning: snmp3_get(): Error generating a key for authentication pass phrase 'te': Generic error (The supplied password length is too short.) in %s on line %d
+bool(false)
+
+Warning: snmp3_get(): Unknown security protocol 'BBB' in %s on line %d
+bool(false)
+
+Warning: snmp3_get(): Error generating a key for privacy pass phrase '': Generic error (The supplied password length is too short.) in %s on line %d
+bool(false)
+
+Warning: snmp3_get(): Error generating a key for privacy pass phrase 'ty': Generic error (The supplied password length is too short.) in %s on line %d
+bool(false)
+
+Warning: snmp3_get(): Fatal error: Unknown user name in %s on line %d
+bool(false)
+
+Warning: snmp3_set() expects at least 10 parameters, 9 given in %s on line %d
+bool(false)
+
+Warning: snmp3_set(): Invalid object identifier: .1.3.6.777...7.5.3 in %s on line %d
+bool(false)
+
+Warning: snmp3_set(): Single objid and multiple type or values are not supported in %s on line %d
+bool(false)
\ No newline at end of file
diff -ruN trunk/ext/snmp/tests/snmp3.phpt snmp-new/ext/snmp/tests/snmp3.phpt
--- trunk/ext/snmp/tests/snmp3.phpt	1970-01-01 03:00:00.000000000 +0300
+++ snmp-new/ext/snmp/tests/snmp3.phpt	2010-12-31 00:12:57.000000000 +0300
@@ -0,0 +1,127 @@
+--TEST--                                 
+SNMPv3 Support
+--CREDITS--
+Boris Lytochkin
+--SKIPIF--
+<?php
+require_once(dirname(__FILE__).'/skipif.inc');
+?>
+--FILE--
+<?php
+require_once(dirname(__FILE__).'/snmp_include.inc');
+
+//int snmp3_get(string host, string sec_name, string sec_level, string auth_protocol, 
+//              string auth_passphrase, string priv_protocol, string priv_passphrase, 
+//              string object_id [, int timeout [, int retries]]);
+
+echo "Working version\n";
+snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
+echo "GET single: noAuthNoPriv\n";
+var_dump(snmp3_get($hostname, $user_noauth, 'noAuthNoPriv', '', '', '', '', '.1.3.6.1.2.1.1.1.0', $timeout, $retries));
+
+foreach(array('MD5', 'SHA') as $signalg) {
+	echo "GET single: $signalg\n";
+	var_dump(snmp3_get($hostname, $user_auth_prefix . $signalg, 'authNoPriv', $signalg, $auth_pass, '', '', '.1.3.6.1.2.1.1.1.0', $timeout, $retries));
+}
+
+foreach(array('AES', 'DES', 'AES128') as $chipher) {
+	echo "GET single: MD5/$chipher\n";
+	var_dump(snmp3_get($hostname, $user_auth_prefix . 'MD5' . $chipher, 'authPriv', 'MD5', $auth_pass, $chipher, $priv_pass, '.1.3.6.1.2.1.1.1.0', $timeout, $retries));
+}
+$username = $user_auth_prefix . 'MD5';
+echo "GET multiple\n";
+var_dump(snmp3_get($hostname, $username, 'authNoPriv', 'MD5', $auth_pass, '', '', array('.1.3.6.1.2.1.1.1.0', '.1.3.6.1.2.1.1.3.0'), $timeout, $retries));
+echo "GETNEXT single\n";
+var_dump(snmp3_getnext($hostname, $username, 'authNoPriv', 'MD5', $auth_pass, '', '', '.1.3.6.1.2.1.1.1.0', $timeout, $retries));
+
+echo "WALK single on single OID\n";
+$z = snmp3_walk($hostname, $username, 'authNoPriv', 'MD5', $auth_pass, '', '', '.1.3.6.1.2.1.1.1.0', $timeout, $retries);
+var_dump(gettype($z));
+var_dump(count($z));
+var_dump($z);
+
+echo "REALWALK single on single OID\n";
+$z = snmp3_real_walk($hostname, $username, 'authNoPriv', 'MD5', $auth_pass, '', '', '.1.3.6.1.2.1.1.1.0', $timeout, $retries);
+var_dump(gettype($z));
+var_dump(count($z));
+var_dump($z);
+
+echo "WALK multiple on single OID\n";
+$z = snmp3_walk($hostname, $username, 'authNoPriv', 'MD5', $auth_pass, '', '', '.1.3.6.1.2.1.1', $timeout, $retries);
+var_dump(gettype($z));
+var_dump(count($z));
+var_dump(key($z));
+var_dump(array_shift($z));
+
+echo "REALWALK multiple on single OID\n";
+$z = snmp3_real_walk($hostname, $username, 'authNoPriv', 'MD5', $auth_pass, 'AES', '', '.1.3.6.1.2.1.1', $timeout, $retries);
+var_dump(gettype($z));
+var_dump(count($z));
+var_dump(key($z));
+var_dump(array_shift($z));
+
+echo "SET single OID\n";
+$oid1 = 'SNMPv2-MIB::sysContact.0';
+$oldvalue1 = snmp3_get($hostname, $rwuser, 'authPriv', 'MD5', $auth_pass, 'AES', $priv_pass, $oid1, $timeout, $retries);
+$newvalue1 = $oldvalue1 . '0';
+
+$z = snmp3_set($hostname, $rwuser, 'authPriv', 'MD5', $auth_pass, 'AES', $priv_pass, $oid1, 's', $newvalue1, $timeout, $retries);
+var_dump($z);
+var_dump((snmp3_get($hostname, $rwuser, 'authPriv', 'MD5', $auth_pass, 'AES', $priv_pass, $oid1, $timeout, $retries) === $newvalue1));
+$z = snmp3_set($hostname, $rwuser, 'authPriv', 'MD5', $auth_pass, 'AES', $priv_pass, $oid1, 's', $oldvalue1, $timeout, $retries);
+var_dump($z);
+var_dump((snmp3_get($hostname, $rwuser, 'authPriv', 'MD5', $auth_pass, 'AES', $priv_pass, $oid1, $timeout, $retries) === $oldvalue1));
+
+?>
+--EXPECTF--
+Working version
+GET single: noAuthNoPriv
+%string|unicode%(%d) "%s"
+GET single: MD5
+%string|unicode%(%d) "%s"
+GET single: SHA
+%string|unicode%(%d) "%s"
+GET single: MD5/AES
+%string|unicode%(%d) "%s"
+GET single: MD5/DES
+%string|unicode%(%d) "%s"
+GET single: MD5/AES128
+%string|unicode%(%d) "%s"
+GET multiple
+array(2) {
+  ["%s"]=>
+  %string|unicode%(%d) "%s"
+  ["%s"]=>
+  %string|unicode%(%d) "%s"
+}
+GETNEXT single
+%string|unicode%(%d) "%s"
+WALK single on single OID
+%string|unicode%(5) "array"
+int(1)
+array(1) {
+  [0]=>
+  %string|unicode%(%d) "%s"
+}
+REALWALK single on single OID
+%string|unicode%(5) "array"
+int(1)
+array(1) {
+  ["%s"]=>
+  %string|unicode%(%d) "%s"
+}
+WALK multiple on single OID
+%string|unicode%(5) "array"
+int(%d)
+int(0)
+%string|unicode%(%d) "%s"
+REALWALK multiple on single OID
+%string|unicode%(5) "array"
+int(%d)
+%string|unicode%(%d) "%s"
+%string|unicode%(%d) "%s"
+SET single OID
+bool(true)
+bool(true)
+bool(true)
+bool(true)
diff -ruN trunk/ext/snmp/tests/snmp_get_quick_print.phpt snmp-new/ext/snmp/tests/snmp_get_quick_print.phpt
--- trunk/ext/snmp/tests/snmp_get_quick_print.phpt	1970-01-01 03:00:00.000000000 +0300
+++ snmp-new/ext/snmp/tests/snmp_get_quick_print.phpt	2011-01-05 15:03:40.000000000 +0300
@@ -0,0 +1,41 @@
+--TEST--                                 
+Function snmp_get_quick_print / snmp_set_quick_print
+--CREDITS--
+Olivier Doucet
+--SKIPIF--
+<?php
+require_once(dirname(__FILE__).'/skipif.inc');
+?>
+--FILE--
+<?php
+require_once(dirname(__FILE__).'/snmp_include.inc');
+
+echo "Checking error handling\n";
+var_dump(snmp_get_quick_print('noarg'));
+var_dump(snmp_set_quick_print('noarg'));
+var_dump(snmp_set_quick_print());
+
+echo "Checking working\n";
+var_dump(snmp_get_quick_print());
+snmp_set_quick_print(false);
+var_dump(snmp_get_quick_print());
+snmp_set_quick_print(true);
+var_dump(snmp_get_quick_print());
+
+?>
+--EXPECTF--
+Checking error handling
+
+Warning: snmp_get_quick_print() expects exactly 0 parameters, 1 given in %s on line %d
+NULL
+
+Warning: snmp_set_quick_print() expects parameter 1 to be long, %s given in %s on line %d
+bool(false)
+
+Warning: snmp_set_quick_print() expects exactly 1 parameter, 0 given in %s on line %d
+bool(false)
+Checking working
+bool(%s)
+bool(false)
+bool(true)
+
diff -ruN trunk/ext/snmp/tests/snmp_get_valueretrieval.phpt snmp-new/ext/snmp/tests/snmp_get_valueretrieval.phpt
--- trunk/ext/snmp/tests/snmp_get_valueretrieval.phpt	1970-01-01 03:00:00.000000000 +0300
+++ snmp-new/ext/snmp/tests/snmp_get_valueretrieval.phpt	2010-12-30 20:14:38.000000000 +0300
@@ -0,0 +1,41 @@
+--TEST--                                 
+Function snmp_get_valueretrieval / snmp_set_valueretrieval
+--CREDITS--
+Olivier Doucet
+--SKIPIF--
+<?php
+require_once(dirname(__FILE__).'/skipif.inc');
+?>
+--FILE--
+<?php
+require_once(dirname(__FILE__).'/snmp_include.inc');
+
+echo "Checking error handling\n";
+var_dump(snmp_get_valueretrieval('noarg'));
+var_dump(snmp_set_valueretrieval('noarg'));
+var_dump(snmp_set_valueretrieval(67));
+
+echo "Checking working\n";
+var_dump(snmp_get_valueretrieval());
+snmp_set_valueretrieval(SNMP_VALUE_LIBRARY);
+var_dump(snmp_get_valueretrieval() === SNMP_VALUE_LIBRARY);
+snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
+var_dump(snmp_get_valueretrieval() === SNMP_VALUE_PLAIN);
+snmp_set_valueretrieval(SNMP_VALUE_OBJECT);
+var_dump(snmp_get_valueretrieval() === SNMP_VALUE_OBJECT);
+
+?>
+--EXPECTF--
+Checking error handling
+int(%d)
+
+Warning: snmp_set_valueretrieval() expects parameter 1 to be long, %s given in %s on line %d
+bool(false)
+
+Warning: snmp_set_valueretrieval(): Unknown SNMP value retrieval method '67' in %s on line %d
+bool(false)
+Checking working
+int(%d)
+bool(true)
+bool(true)
+bool(true)
diff -ruN trunk/ext/snmp/tests/snmp_getvalue.phpt snmp-new/ext/snmp/tests/snmp_getvalue.phpt
--- trunk/ext/snmp/tests/snmp_getvalue.phpt	1970-01-01 03:00:00.000000000 +0300
+++ snmp-new/ext/snmp/tests/snmp_getvalue.phpt	2010-12-19 19:37:10.000000000 +0300
@@ -0,0 +1,46 @@
+--TEST--                                 
+Function snmp_getvalue
+--CREDITS--
+Boris Lytochkin
+--SKIPIF--
+<?php
+require_once(dirname(__FILE__).'/skipif.inc');
+?>
+--FILE--
+<?php
+require_once(dirname(__FILE__).'/snmp_include.inc');
+
+//EXPECTF format is quickprint OFF
+snmp_set_quick_print(false);
+
+echo "Get with SNMP_VALUE_LIBRARY\n";
+snmp_set_valueretrieval(SNMP_VALUE_LIBRARY);
+var_dump(snmpget($hostname, $community, '.1.3.6.1.2.1.1.1.0', $timeout, $retries));
+
+echo "Get with SNMP_VALUE_PLAIN\n";
+snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
+var_dump(snmpget($hostname, $community, '.1.3.6.1.2.1.1.1.0', $timeout, $retries));
+
+echo "Get with SNMP_VALUE_OBJECT\n";
+snmp_set_valueretrieval(SNMP_VALUE_OBJECT);
+$z = snmpget($hostname, $community, '.1.3.6.1.2.1.1.1.0', $timeout, $retries);
+echo gettype($z)."\n";
+var_dump($z->type);
+var_dump($z->value);
+
+echo "Check parsing of different OID types\n";
+snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
+var_dump(count(snmp2_walk($hostname, $community, '.', $timeout, $retries)));
+
+?>
+--EXPECTF--
+Get with SNMP_VALUE_LIBRARY
+string(%d) "STRING: %s"
+Get with SNMP_VALUE_PLAIN
+string(%d) "%s"
+Get with SNMP_VALUE_OBJECT
+object
+int(4)
+string(%d) "%s"
+Check parsing of different OID types
+int(%d)
diff -ruN trunk/ext/snmp/tests/snmp_include.inc snmp-new/ext/snmp/tests/snmp_include.inc
--- trunk/ext/snmp/tests/snmp_include.inc	1970-01-01 03:00:00.000000000 +0300
+++ snmp-new/ext/snmp/tests/snmp_include.inc	2010-12-21 15:40:33.000000000 +0300
@@ -0,0 +1,29 @@
+<?php
+
+/*
+By default tests will try to access SNMP agent @ '127.0.0.1:161' and will use 'public' community for read
+requests and 'private' community for write requests.
+Default timeout is 1000ms and there will be one request performed.
+*/
+
+$hostname =	getenv('SNMP_HOSTNAME')		? getenv('SNMP_HOSTNAME') :	'127.0.0.1';
+$port =		getenv('SNMP_PORT')		? getenv('SNMP_PORT') :		'161';
+$hostname .= ":$port";
+$community =	getenv('SNMP_COMMUNITY')	? getenv('SNMP_COMMUNITY') :	'public';
+$communityWrite = getenv('SNMP_COMMUNITY_WRITE')? getenv('SNMP_COMMUNITY_WRITE'):'private';
+
+$timeout = 	getenv('SNMP_TIMEOUT') ? 	getenv('SNMP_TIMEOUT') :	-1;
+$retries = 	getenv('SNMP_RETRIES') ? 	getenv('SNMP_RETRIES') :	1;
+
+if (stristr(PHP_OS, "FreeBSD")) {
+	$mibdir = 	getenv('SNMP_MIBDIR')	?	getenv('SNMP_MIBDIR') :		"/usr/local/share/snmp/mibs";
+} else {
+	$mibdir = 	getenv('SNMP_MIBDIR')	?	getenv('SNMP_MIBDIR') :		"/usr/share/snmp/mibs";
+}
+
+
+$user_noauth =	getenv('SNMP_USER_NOAUTH') ?	getenv('SNMP_USER_NOAUTH') :	'noAuthUser';
+$user_auth_prefix = getenv('SNMP_USER_PREFIX') ? getenv('SNMP_USER_PREFIX') :	'admin';
+$rwuser = 	getenv('SNMP_RWUSER') ? 	getenv('SNMP_RWUSER') :		($user_auth_prefix . 'MD5AES');
+$auth_pass =	getenv('SNMP_AUTH_PASS') ?	getenv('SNMP_AUTH_PASS') :	'test1234';
+$priv_pass =	getenv('SNMP_PRIV_PASS') ?	getenv('SNMP_PRIV_PASS') :	'test1234';
diff -ruN trunk/ext/snmp/tests/snmp_parse_oid.phpt snmp-new/ext/snmp/tests/snmp_parse_oid.phpt
--- trunk/ext/snmp/tests/snmp_parse_oid.phpt	1970-01-01 03:00:00.000000000 +0300
+++ snmp-new/ext/snmp/tests/snmp_parse_oid.phpt	2010-12-20 15:10:06.000000000 +0300
@@ -0,0 +1,36 @@
+--TEST--                                 
+Function snmp_parse_oid
+--CREDITS--
+Boris Lytochkin
+--SKIPIF--
+<?php
+require_once(dirname(__FILE__).'/skipif.inc');
+?>
+--FILE--
+<?php
+require_once(dirname(__FILE__).'/snmp_include.inc');
+
+//EXPECTF format is quickprint OFF
+snmp_set_quick_print(false);
+snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
+
+$oid1 = 'SNMPv2-MIB::sysContact.0';
+$type1 = 's';
+$oldvalue1 = snmpget($hostname, $communityWrite, $oid1, $timeout, $retries);
+$newvalue1 = $oldvalue1 . '0';
+
+echo "Checking SNMP_MAXOIDS_IN_PDU\n";
+$i  = 0;
+$oids = array();
+while($i++ < 128){
+	$oids[] = '.1.3.6.1.2.1.1.7.0';
+}
+$z = snmp2_get($hostname, $community, $oids, $timeout, $retries);
+var_dump($z);
+
+?>
+--EXPECTF--
+Checking SNMP_MAXOIDS_IN_PDU
+
+Warning: snmp2_get(): Could not process more than %d OIDs in singe GET/GETNEXT/SET query in %s on line %d
+bool(false)
\ No newline at end of file
diff -ruN trunk/ext/snmp/tests/snmp_read_mib.phpt snmp-new/ext/snmp/tests/snmp_read_mib.phpt
--- trunk/ext/snmp/tests/snmp_read_mib.phpt	1970-01-01 03:00:00.000000000 +0300
+++ snmp-new/ext/snmp/tests/snmp_read_mib.phpt	2010-12-21 23:31:59.000000000 +0300
@@ -0,0 +1,34 @@
+--TEST--                                 
+Function snmp_read_mib
+--CREDITS--
+Olivier Doucet Olivier Doucet Boris Lytochkin
+--SKIPIF--
+<?php
+require_once(dirname(__FILE__).'/skipif.inc');
+require_once(dirname(__FILE__).'/snmp_include.inc');
+
+if (!file_exists($mibdir . '/SNMPv2-MIB.txt')) die('MIB file not in the system');
+
+?>
+--FILE--
+<?php
+require_once(dirname(__FILE__).'/snmp_include.inc');
+
+echo "Checking error handling\n";
+var_dump(snmp_read_mib());
+var_dump(snmp_read_mib(dirname(__FILE__).'/cannotfindthisfile'));
+
+echo "Checking working\n";
+var_dump(snmp_read_mib($mibdir . '/SNMPv2-MIB.txt'));
+
+?>
+--EXPECTF--
+Checking error handling
+
+Warning: snmp_read_mib() expects exactly 1 parameter, 0 given in %s on line %d
+bool(false)
+
+Warning: snmp_read_mib(): Error while reading MIB file '%s': No such file or directory in %s on line %d
+bool(false)
+Checking working
+bool(true)
diff -ruN trunk/ext/snmp/tests/snmp_set_enum_print.phpt snmp-new/ext/snmp/tests/snmp_set_enum_print.phpt
--- trunk/ext/snmp/tests/snmp_set_enum_print.phpt	1970-01-01 03:00:00.000000000 +0300
+++ snmp-new/ext/snmp/tests/snmp_set_enum_print.phpt	2010-12-19 14:16:50.000000000 +0300
@@ -0,0 +1,28 @@
+--TEST--                                 
+Function snmp_set_enum_print
+--CREDITS--
+Olivier Doucet
+--SKIPIF--
+<?php
+require_once(dirname(__FILE__).'/skipif.inc');
+if (!function_exists('snmp_set_enum_print')) die('This function is only available if using NET_SNMP');
+?>
+--FILE--
+<?php
+require_once(dirname(__FILE__).'/snmp_include.inc');
+
+echo "Checking error handling\n";
+var_dump(snmp_set_enum_print());
+
+echo "Checking working\n";
+var_dump(snmp_set_enum_print(0));
+var_dump(snmp_set_enum_print(1));
+?>
+--EXPECTF--
+Checking error handling
+
+Warning: snmp_set_enum_print() expects exactly 1 parameter, 0 given in %s on line %d
+bool(false)
+Checking working
+bool(true)
+bool(true)
diff -ruN trunk/ext/snmp/tests/snmp_set_oid_output_format.phpt snmp-new/ext/snmp/tests/snmp_set_oid_output_format.phpt
--- trunk/ext/snmp/tests/snmp_set_oid_output_format.phpt	1970-01-01 03:00:00.000000000 +0300
+++ snmp-new/ext/snmp/tests/snmp_set_oid_output_format.phpt	2011-01-05 17:34:04.000000000 +0300
@@ -0,0 +1,32 @@
+--TEST--                                 
+Function snmp_set_oid_output_format
+--CREDITS--
+Olivier Doucet
+--SKIPIF--
+<?php
+require_once(dirname(__FILE__).'/skipif.inc');
+if (!function_exists('snmp_set_oid_output_format')) die('This function is only available if using NET_SNMP');
+?>
+--FILE--
+<?php
+require_once(dirname(__FILE__).'/snmp_include.inc');
+
+echo "Checking error handling\n";
+var_dump(snmp_set_oid_output_format());
+var_dump(snmp_set_oid_output_format(123));
+
+echo "Checking working\n";
+var_dump(snmp_set_oid_output_format(SNMP_OID_OUTPUT_FULL));
+var_dump(snmp_set_oid_output_format(SNMP_OID_OUTPUT_NUMERIC));
+?>
+--EXPECTF--
+Checking error handling
+
+Warning: snmp_set_oid_output_format() expects exactly 1 parameter, 0 given in %s on line %d
+bool(false)
+
+Warning: snmp_set_oid_output_format(): Unknown SNMP output print format '123' in %s on line %d
+bool(false)
+Checking working
+bool(true)
+bool(true)
diff -ruN trunk/ext/snmp/tests/snmpget.phpt snmp-new/ext/snmp/tests/snmpget.phpt
--- trunk/ext/snmp/tests/snmpget.phpt	1970-01-01 03:00:00.000000000 +0300
+++ snmp-new/ext/snmp/tests/snmpget.phpt	2010-12-31 00:06:32.000000000 +0300
@@ -0,0 +1,109 @@
+--TEST--                                 
+Function snmpget
+--CREDITS--
+Olivier Doucet & Boris Lytochkin
+--SKIPIF--
+<?php
+require_once(dirname(__FILE__).'/skipif.inc');
+?>
+--FILE--
+<?php
+require_once(dirname(__FILE__).'/snmp_include.inc');
+
+//EXPECTF format is quickprint OFF
+snmp_set_quick_print(false);
+snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
+
+echo "Checking error handling\n";
+var_dump(snmpget($hostname, $community, '.1.3.6.1.2.1.1.1.0', ''));
+var_dump(snmpget($hostname, $community, '.1.3.6.1.2.1.1.1.0', $timeout, ''));
+
+echo "Checking working\n";
+echo "Single OID, default timeout and retries\n";
+var_dump(snmpget($hostname, $community, '.1.3.6.1.2.1.1.1.0'));
+echo "Single OID, default retries\n";
+var_dump(snmpget($hostname, $community, '.1.3.6.1.2.1.1.1.0', $timeout));
+echo "Single OID\n";
+var_dump(snmpget($hostname, $community, '.1.3.6.1.2.1.1.1.0', $timeout, $retries));
+echo "Single OID in array\n";
+var_dump(snmpget($hostname, $community, array('.1.3.6.1.2.1.1.1.0'), $timeout, $retries));
+echo "Multiple OID\n";
+var_dump(snmpget($hostname, $community, array('.1.3.6.1.2.1.1.1.0', '.1.3.6.1.2.1.1.3.0'), $timeout, $retries));
+
+echo "More error handling\n";
+echo "Single OID\n";
+var_dump(snmpget($hostname, $community, '.1.3.6.1.2.1..1.1.0', $timeout, $retries));
+echo "Single OID in array\n";
+var_dump(snmpget($hostname, $community, array('.1.3.6.1.2.1...1.1.0'), $timeout, $retries));
+echo "Multiple OID\n";
+var_dump(snmpget($hostname, $community, array('.1.3.6.1.2.1...1.1.0', '.1.3.6.1.2.1.1.3.0'), $timeout, $retries));
+
+echo "noSuchName checks\n";
+echo "Single OID\n";
+var_dump(snmpget($hostname, $community, '.1.3.6.1.2.1.1.1.110', $timeout, $retries));
+echo "Single OID in array\n";
+var_dump(snmpget($hostname, $community, array('.1.3.6.1.2.1.1.1.110'), $timeout, $retries));
+echo "Multiple OID\n";
+var_dump(snmpget($hostname, $community, array('.1.3.6.1.2.1.1.1.0', '.1.3.6.1.2.1.1.3.220'), $timeout, $retries));
+
+
+?>
+--EXPECTF--
+Checking error handling
+
+Warning: snmpget() expects parameter 4 to be long,%s given in %s on line %d
+bool(false)
+
+Warning: snmpget() expects parameter 5 to be long,%s given in %s on line %d
+bool(false)
+Checking working
+Single OID, default timeout and retries
+%unicode|string%(%d) "%s"
+Single OID, default retries
+%unicode|string%(%d) "%s"
+Single OID
+%unicode|string%(%d) "%s"
+Single OID in array
+array(1) {
+  ["%s"]=>
+  %unicode|string%(%d) "%s"
+}
+Multiple OID
+array(2) {
+  ["%s"]=>
+  %unicode|string%(%d) "%s"
+  ["%s"]=>
+  %unicode|string%(%d) "%d"
+}
+More error handling
+Single OID
+
+Warning: snmpget(): Invalid object identifier: .1.3.6.1.2.1..1.1.0 in %s on line %d
+bool(false)
+Single OID in array
+
+Warning: snmpget(): Invalid object identifier: .1.3.6.1.2.1...1.1.0 in %s on line %d
+bool(false)
+Multiple OID
+
+Warning: snmpget(): Invalid object identifier: .1.3.6.1.2.1...1.1.0 in %s on line %d
+array(1) {
+  ["%s"]=>
+  %unicode|string%(%d) "%d"
+}
+noSuchName checks
+Single OID
+
+Warning: snmpget(): Error in packet at 'SNMPv2-MIB::sysDescr.110': (noSuchName) There is no such variable name in this MIB. in %s on line %d
+bool(false)
+Single OID in array
+
+Warning: snmpget(): Error in packet at 'SNMPv2-MIB::sysDescr.110': (noSuchName) There is no such variable name in this MIB. in %s on line %d
+bool(false)
+Multiple OID
+
+Warning: snmpget(): Error in packet at 'SNMPv2-MIB::sysUpTime.220': (noSuchName) There is no such variable name in this MIB. in %s on line %d
+array(1) {
+  ["%s"]=>
+  %unicode|string%(%d) "%s"
+}
diff -ruN trunk/ext/snmp/tests/snmpgetnext.phpt snmp-new/ext/snmp/tests/snmpgetnext.phpt
--- trunk/ext/snmp/tests/snmpgetnext.phpt	1970-01-01 03:00:00.000000000 +0300
+++ snmp-new/ext/snmp/tests/snmpgetnext.phpt	2010-12-31 00:07:43.000000000 +0300
@@ -0,0 +1,39 @@
+--TEST--                                 
+Function snmpgetnext
+--CREDITS--
+Olivier Doucet & Boris Lytochkin
+--SKIPIF--
+<?php
+require_once(dirname(__FILE__).'/skipif.inc');
+?>
+--FILE--
+<?php
+require_once(dirname(__FILE__).'/snmp_include.inc');
+
+//EXPECTF format is quickprint OFF
+snmp_set_quick_print(false);
+snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
+
+echo "Single OID\n";
+var_dump(snmpgetnext($hostname, $community, '.1.3.6.1.2.1.1.1.0', $timeout, $retries));
+echo "Single OID in array\n";
+var_dump(snmpgetnext($hostname, $community, array('.1.3.6.1.2.1.1.1.0'), $timeout, $retries));
+echo "Multiple OID\n";
+var_dump(snmpgetnext($hostname, $community, array('.1.3.6.1.2.1.1.1.0', '.1.3.6.1.2.1.1.6.0'), $timeout, $retries));
+
+?>
+--EXPECTF--
+Single OID
+%unicode|string%(%d) "%s"
+Single OID in array
+array(1) {
+  ["%s"]=>
+  %unicode|string%(%d) "%s"
+}
+Multiple OID
+array(2) {
+  ["%s"]=>
+  %unicode|string%(%d) "%s"
+  ["%s"]=>
+  %unicode|string%(%d) "%d"
+}
diff -ruN trunk/ext/snmp/tests/snmprealwalk.phpt snmp-new/ext/snmp/tests/snmprealwalk.phpt
--- trunk/ext/snmp/tests/snmprealwalk.phpt	1970-01-01 03:00:00.000000000 +0300
+++ snmp-new/ext/snmp/tests/snmprealwalk.phpt	2010-12-21 23:31:59.000000000 +0300
@@ -0,0 +1,86 @@
+--TEST--                                 
+Function snmprealwalk
+--CREDITS--
+Olivier Doucet Olivier Doucet Boris Lytochkin
+--SKIPIF--
+<?php
+require_once(dirname(__FILE__).'/skipif.inc');
+?>
+--FILE--
+<?php
+require_once(dirname(__FILE__).'/snmp_include.inc');
+
+//EXPECTF format is quickprint OFF
+snmp_set_quick_print(false);
+snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
+
+echo "Checking error handling\n";
+var_dump(snmprealwalk($hostname, $community, '.1.3.6.1.2.1.1', ''));
+var_dump(snmprealwalk($hostname, $community, '.1.3.6.1.2.1.1', $timeout, ''));
+
+echo "Checking working\n";
+echo "Single OID\n";
+$return = snmprealwalk($hostname, $community, '.1.3.6.1.2.1.1', $timeout, $retries);
+var_dump(gettype($return));
+var_dump(sizeof($return));
+var_dump(key($return));
+var_dump(array_shift($return));
+
+echo "Single OID in array\n";
+$return = snmprealwalk($hostname, $community, array('.1.3.6.1.2.1.1'), $timeout, $retries);
+var_dump(gettype($return));
+var_dump(sizeof($return));
+var_dump(key($return));
+var_dump(array_shift($return));
+
+echo "More error handling\n";
+echo "Multiple correct OID\n";
+$return = snmprealwalk($hostname, $community, array('.1.3.6.1.2.1.1', '.1.3.6'), $timeout, $retries);
+var_dump($return);
+
+echo "Multiple OID with wrong OID\n";
+$return = snmprealwalk($hostname, $community, array('.1.3.6.1.2.1.1', '.1.3.6...1'), $timeout, $retries);
+var_dump($return);
+$return = snmprealwalk($hostname, $community, array('.1.3.6...1', '.1.3.6.1.2.1.1'), $timeout, $retries);
+var_dump($return);
+
+echo "Single nonexisting OID\n";
+$return = snmprealwalk($hostname, $community, array('.1.3.6.99999.0.99999.111'), $timeout, $retries);
+var_dump($return);
+
+?>
+--EXPECTF--
+Checking error handling
+
+Warning: snmprealwalk() expects parameter 4 to be long, %s given in %s on line %d
+bool(false)
+
+Warning: snmprealwalk() expects parameter 5 to be long, %s given in %s on line %d
+bool(false)
+Checking working
+Single OID
+%unicode|string%(5) "array"
+int(%d)
+string(%d) "%s"
+string(%d) "%s"
+Single OID in array
+%unicode|string%(5) "array"
+int(%d)
+string(%d) "%s"
+string(%d) "%s"
+More error handling
+Multiple correct OID
+
+Warning: snmprealwalk(): Multi OID walks are not supported! in %s on line %d
+bool(false)
+Multiple OID with wrong OID
+
+Warning: snmprealwalk(): Multi OID walks are not supported! in %s on line %d
+bool(false)
+
+Warning: snmprealwalk(): Multi OID walks are not supported! in %s on line %d
+bool(false)
+Single nonexisting OID
+
+Warning: snmprealwalk(): Error in packet at '%s': (noSuchName) There is no such variable name in this MIB. in %s on line %d
+bool(false)
diff -ruN trunk/ext/snmp/tests/snmpset-nomib.phpt snmp-new/ext/snmp/tests/snmpset-nomib.phpt
--- trunk/ext/snmp/tests/snmpset-nomib.phpt	1970-01-01 03:00:00.000000000 +0300
+++ snmp-new/ext/snmp/tests/snmpset-nomib.phpt	2010-12-27 23:50:26.000000000 +0300
@@ -0,0 +1,60 @@
+--TEST--                                 
+Function snmpset (without MIBs loading)
+--CREDITS--
+Boris Lytochkin
+--SKIPIF--
+<?php
+require_once(dirname(__FILE__).'/skipif.inc');
+?>
+--ENV--
+return <<<END
+MIBS=
+END;
+--FILE--
+<?php
+require_once(dirname(__FILE__).'/snmp_include.inc');
+
+//EXPECTF format is quickprint OFF
+snmp_set_quick_print(false);
+snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
+
+echo "Check error handing\n";
+echo "Nonexisting OID\n";
+$z = snmpset($hostname, $communityWrite, '.1.3.6.777.888.999.444.0', 's', 'bbb', $timeout, $retries);
+var_dump($z);
+
+echo "Bogus OID\n";
+$z = snmpset($hostname, $communityWrite, '.1.3...6.777.888.999.444.0', 's', 'bbb', $timeout, $retries);
+var_dump($z);
+
+
+echo "Checking working\n";
+$oid1 = '.1.3.6.1.2.1.1.4.0';
+$oldvalue1 = snmpget($hostname, $communityWrite, $oid1, $timeout, $retries);
+$newvalue1 = $oldvalue1 . '0';
+
+echo "Single OID\n";
+$z = snmpset($hostname, $communityWrite, $oid1, 's', $newvalue1, $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $newvalue1));
+$z = snmpset($hostname, $communityWrite, $oid1, 's', $oldvalue1, $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1));
+
+?>
+--EXPECTF--
+Check error handing
+Nonexisting OID
+
+Warning: snmpset(): Error in packet at '%s': (noSuchName) There is no such variable name in this MIB. in %s on line %d
+bool(false)
+Bogus OID
+
+Warning: snmpset(): Invalid object identifier: %s in %s on line %d
+bool(false)
+Checking working
+Single OID
+bool(true)
+bool(true)
+bool(true)
+bool(true)
\ No newline at end of file
diff -ruN trunk/ext/snmp/tests/snmpset.phpt snmp-new/ext/snmp/tests/snmpset.phpt
--- trunk/ext/snmp/tests/snmpset.phpt	1970-01-01 03:00:00.000000000 +0300
+++ snmp-new/ext/snmp/tests/snmpset.phpt	2010-12-21 23:31:59.000000000 +0300
@@ -0,0 +1,248 @@
+--TEST--                                 
+Function snmpset
+--CREDITS--
+Olivier Doucet Olivier Doucet Boris Lytochkin
+--SKIPIF--
+<?php
+require_once(dirname(__FILE__).'/skipif.inc');
+?>
+--FILE--
+<?php
+require_once(dirname(__FILE__).'/snmp_include.inc');
+
+//EXPECTF format is quickprint OFF
+snmp_set_quick_print(false);
+snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
+
+echo "Check error handing\n";
+echo "4args (5 needed)\n";
+$z = snmpset($hostname, $communityWrite, 'SNMPv2-MIB::sysLocation.0');
+var_dump($z);
+
+echo "No type & no value (timeout & retries instead)\n";
+$z = snmpset($hostname, $communityWrite, 'SNMPv2-MIB::sysLocation.0', $timeout, $retries);
+var_dump($z);
+
+echo "No value (timeout instead), retries instead of timeout\n";
+$z = snmpset($hostname, $communityWrite, 'SNMPv2-MIB::sysLocation.0', 'q', $timeout, $retries);
+var_dump($z);
+
+echo "Bogus OID\n";
+$z = snmpset($hostname, $communityWrite, '.1.3.6.777.888.999.444.0', 's', 'bbb', $timeout, $retries);
+var_dump($z);
+
+echo "Checking working\n";
+$oid1 = 'SNMPv2-MIB::sysContact.0';
+$oldvalue1 = snmpget($hostname, $communityWrite, $oid1, $timeout, $retries);
+$newvalue1 = $oldvalue1 . '0';
+$oid2 = 'SNMPv2-MIB::sysLocation.0';
+$oldvalue2 = snmpget($hostname, $communityWrite, $oid1, $timeout, $retries);
+$newvalue2 = $oldvalue2 . '0';
+
+echo "Single OID\n";
+$z = snmpset($hostname, $communityWrite, $oid1, 's', $newvalue1, $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $newvalue1));
+$z = snmpset($hostname, $communityWrite, $oid1, 's', $oldvalue1, $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1));
+
+echo "Multiple OID\n";
+$z = snmpset($hostname, $communityWrite, array($oid1, $oid2), array('s','s'), array($newvalue1, $newvalue2), $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $newvalue1));
+var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $newvalue2));
+$z = snmpset($hostname, $communityWrite, array($oid1, $oid2), array('s','s'), array($oldvalue1, $oldvalue2), $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1));
+var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2));
+
+echo "Multiple OID, single type & value\n";
+$z = snmpset($hostname, $communityWrite, array($oid1, $oid2), 's', $newvalue1, $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $newvalue1));
+var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $newvalue1));
+$z = snmpset($hostname, $communityWrite, array($oid1, $oid2), array('s','s'), array($oldvalue1, $oldvalue2), $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1));
+var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2));
+
+echo "Multiple OID, single type, multiple value\n";
+$z = snmpset($hostname, $communityWrite, array($oid1, $oid2), 's', array($newvalue1, $newvalue2), $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $newvalue1));
+var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $newvalue2));
+$z = snmpset($hostname, $communityWrite, array($oid1, $oid2), array('s','s'), array($oldvalue1, $oldvalue2), $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1));
+var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2));
+
+
+echo "More error handing\n";
+echo "Single OID, single type in array, single value\n";
+$z = snmpset($hostname, $communityWrite, $oid1, array('s'), $newvalue1, $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1));
+var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2));
+
+echo "Single OID, single type, single value in array\n";
+$z = snmpset($hostname, $communityWrite, $oid1, 's', array($newvalue1), $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1));
+var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2));
+
+echo "Multiple OID, 1st wrong type\n";
+$z = snmpset($hostname, $communityWrite, array($oid1, $oid2), array('sw','s'), array($newvalue1, $newvalue2), $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1));
+var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2));
+
+echo "Multiple OID, 2nd wrong type\n";
+$z = snmpset($hostname, $communityWrite, array($oid1, $oid2), array('s','sb'), array($newvalue1, $newvalue2), $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1));
+var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2));
+
+echo "Multiple OID, single type in array, multiple value\n";
+$z = snmpset($hostname, $communityWrite, array($oid1, $oid2), array('s'), array($newvalue1, $newvalue2), $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1));
+var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2));
+
+echo "Multiple OID & type, singe value in array\n";
+$z = snmpset($hostname, $communityWrite, array($oid1, $oid2), array('s', 's'), array($newvalue1), $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1));
+var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2));
+
+echo "Multiple OID, 1st bogus, single type, multiple value\n";
+$z = snmpset($hostname, $communityWrite, array($oid1 . '44.55.66.77', $oid2), 's', array($newvalue1, $newvalue2), $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1));
+var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2));
+
+echo "Multiple OID, 2nd bogus, single type, multiple value\n";
+$z = snmpset($hostname, $communityWrite, array($oid1, $oid2 . '44.55.66.77'), 's', array($newvalue1, $newvalue2), $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1));
+var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2));
+
+echo "Multiple OID, single multiple type (1st bogus), multiple value\n";
+$z = snmpset($hostname, $communityWrite, array($oid1, $oid2), array('q', 's'), array($newvalue1, $newvalue2), $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1));
+var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2));
+
+echo "Multiple OID, single multiple type (2nd bogus), multiple value\n";
+$z = snmpset($hostname, $communityWrite, array($oid1, $oid2), array('s', 'w'), array($newvalue1, $newvalue2), $timeout, $retries);
+var_dump($z);
+var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1));
+var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2));
+
+?>
+--EXPECTF--
+Check error handing
+4args (5 needed)
+
+Warning: snmpset() expects at least 5 parameters, 3 given in %s on line %d
+bool(false)
+No type & no value (timeout & retries instead)
+
+Warning: snmpset(): Bogus type '-1', should be single char, got 2 in %s on line %d
+bool(false)
+No value (timeout instead), retries instead of timeout
+
+Warning: snmpset(): Could not add variable: OID='%s' type='q' value='%i': Bad variable type ("q") in %s on line %d
+bool(false)
+Bogus OID
+
+Warning: snmpset(): Error in packet at '%s': (noSuchName) There is no such variable name in this MIB. in %s on line %d
+bool(false)
+Checking working
+Single OID
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+Multiple OID
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+Multiple OID, single type & value
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+Multiple OID, single type, multiple value
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+More error handing
+Single OID, single type in array, single value
+
+Warning: snmpset(): Single objid and multiple type or values are not supported in %s on line %s
+bool(false)
+bool(true)
+bool(true)
+Single OID, single type, single value in array
+
+Warning: snmpset(): Single objid and multiple type or values are not supported in %s on line %s
+bool(false)
+bool(true)
+bool(true)
+Multiple OID, 1st wrong type
+
+Warning: snmpset(): '%s': bogus type 'sw', should be single char, got 2 in %s on line %s
+bool(false)
+bool(true)
+bool(true)
+Multiple OID, 2nd wrong type
+
+Warning: snmpset(): '%s': bogus type 'sb', should be single char, got 2 in %s on line %s
+bool(false)
+bool(true)
+bool(true)
+Multiple OID, single type in array, multiple value
+
+Warning: snmpset(): '%s': no type set in %s on line %d
+bool(false)
+bool(true)
+bool(true)
+Multiple OID & type, singe value in array
+
+Warning: snmpset(): '%s': no value set in %s on line %d
+bool(false)
+bool(true)
+bool(true)
+Multiple OID, 1st bogus, single type, multiple value
+
+Warning: snmpset(): Error in packet at '%s': (noSuchName) There is no such variable name in this MIB. in %s on line %d
+bool(false)
+bool(true)
+bool(true)
+Multiple OID, 2nd bogus, single type, multiple value
+
+Warning: snmpset(): Error in packet at '%s': (noSuchName) There is no such variable name in this MIB. in %s on line %d
+bool(false)
+bool(true)
+bool(true)
+Multiple OID, single multiple type (1st bogus), multiple value
+
+Warning: snmpset(): Could not add variable: OID='%s' type='q' value='%s': Bad variable type ("q") in %s on line %d
+bool(false)
+bool(true)
+bool(true)
+Multiple OID, single multiple type (2nd bogus), multiple value
+
+Warning: snmpset(): Could not add variable: OID='%s' type='w' value='%s': Bad variable type ("w") in %s on line %d
+bool(false)
+bool(true)
+bool(true)
diff -ruN trunk/ext/snmp/tests/snmpwalk.phpt snmp-new/ext/snmp/tests/snmpwalk.phpt
--- trunk/ext/snmp/tests/snmpwalk.phpt	1970-01-01 03:00:00.000000000 +0300
+++ snmp-new/ext/snmp/tests/snmpwalk.phpt	2010-12-21 23:31:59.000000000 +0300
@@ -0,0 +1,99 @@
+--TEST--                                 
+Function snmpwalk
+--CREDITS--
+Olivier Doucet Olivier Doucet Boris Lytochkin
+--SKIPIF--
+<?php
+require_once(dirname(__FILE__).'/skipif.inc');
+?>
+--FILE--
+<?php
+require_once(dirname(__FILE__).'/snmp_include.inc');
+
+//EXPECTF format is quickprint OFF
+snmp_set_quick_print(false);
+snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
+
+echo "Checking error handling\n";
+var_dump(snmpwalk($hostname, $community, '.1.3.6.1.2.1.1', ''));
+var_dump(snmpwalk($hostname, $community, '.1.3.6.1.2.1.1', $timeout, ''));
+
+echo "Checking working\n";
+echo "Single OID\n";
+$return = snmpwalk($hostname, $community, '.1.3.6.1.2.1.1', $timeout, $retries);
+
+var_dump(gettype($return));
+var_dump(sizeof($return));
+var_dump(gettype($return[0]));
+var_dump(gettype($return[1]));
+
+echo "Single OID in array\n";
+$return = snmpwalk($hostname, $community, array('.1.3.6.1.2.1.1'), $timeout, $retries);
+var_dump(gettype($return));
+var_dump(gettype($return[0]));
+
+echo "Default OID\n";
+$return = snmpwalk($hostname, $community, '', $timeout, $retries);
+var_dump(gettype($return));
+var_dump(gettype($return[0]));
+
+echo "More error handling\n";
+echo "Single incorrect OID\n";
+$return = snmpwalk($hostname, $community, '.1.3.6...1', $timeout, $retries);
+var_dump($return);
+
+echo "Multiple correct OID\n";
+$return = snmpwalk($hostname, $community, array('.1.3.6.1.2.1.1', '.1.3.6'), $timeout, $retries);
+var_dump($return);
+
+echo "Multiple OID with wrong OID\n";
+$return = snmpwalk($hostname, $community, array('.1.3.6.1.2.1.1', '.1.3.6...1'), $timeout, $retries);
+var_dump($return);
+$return = snmpwalk($hostname, $community, array('.1.3.6...1', '.1.3.6.1.2.1.1'), $timeout, $retries);
+var_dump($return);
+
+echo "Single nonexisting OID\n";
+$return = snmpwalk($hostname, $community, array('.1.3.6.99999.0.99999.111'), $timeout, $retries);
+var_dump($return);
+
+?>
+--EXPECTF--
+Checking error handling
+
+Warning: snmpwalk() expects parameter 4 to be long, %s given in %s on line %d
+bool(false)
+
+Warning: snmpwalk() expects parameter 5 to be long, %s given in %s on line %d
+bool(false)
+Checking working
+Single OID
+%unicode|string%(5) "array"
+int(%d)
+%unicode|string%(6) "string"
+%unicode|string%(6) "string"
+Single OID in array
+%unicode|string%(5) "array"
+%unicode|string%(6) "string"
+Default OID
+%unicode|string%(5) "array"
+%unicode|string%(6) "string"
+More error handling
+Single incorrect OID
+
+Warning: snmpwalk(): Invalid object identifier: %s in %s on line %d
+bool(false)
+Multiple correct OID
+
+Warning: snmpwalk(): Multi OID walks are not supported! in %s on line %d
+bool(false)
+Multiple OID with wrong OID
+
+Warning: snmpwalk(): Multi OID walks are not supported! in %s on line %d
+bool(false)
+
+Warning: snmpwalk(): Multi OID walks are not supported! in %s on line %d
+bool(false)
+Single nonexisting OID
+
+Warning: snmpwalk(): Error in packet at '%s': (noSuchName) There is no such variable name in this MIB. in %s on line %d
+bool(false)
diff -ruN trunk/ext/snmp/tests/wrong_hostname.phpt snmp-new/ext/snmp/tests/wrong_hostname.phpt
--- trunk/ext/snmp/tests/wrong_hostname.phpt	1970-01-01 03:00:00.000000000 +0300
+++ snmp-new/ext/snmp/tests/wrong_hostname.phpt	2010-12-28 01:15:29.000000000 +0300
@@ -0,0 +1,22 @@
+--TEST--                                 
+Generic timeout (wrong community)
+--CREDITS--
+Boris Lytochkin
+--SKIPIF--
+<?php
+require_once(dirname(__FILE__).'/skipif.inc');
+?>
+--FILE--
+<?php
+require_once(dirname(__FILE__).'/snmp_include.inc');
+
+//EXPECTF format is quickprint OFF
+snmp_set_quick_print(false);
+snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
+
+var_dump(snmpget('192.168..6.1', 'community', '.1.3.6.1.2.1.1.1.0', $timeout, $retries));
+
+?>
+--EXPECTF--
+Warning: snmpget(): Could not open snmp connection: Unknown host (192.168..6.1) (Bad file descriptor) in %s on line %d
+bool(false)
\ No newline at end of file
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Tue Mar 19 11:01:28 2024 UTC