lytboris Sat, 26 Feb 2011 08:27:26 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=308703
Log: * new methods get_errno, get_error to get errno and error string of last SNMP-related error * formatting markup * some fixes in max_oids logic: NULL will set it to default value, do not allow non-positive user-supplied values * unit tests for changes Changed paths: U php/php-src/trunk/ext/snmp/php_snmp.h U php/php-src/trunk/ext/snmp/snmp.c A php/php-src/trunk/ext/snmp/tests/snmp-object-errno-errstr.phpt U php/php-src/trunk/ext/snmp/tests/snmp-object-error.phpt U php/php-src/trunk/ext/snmp/tests/snmp-object-properties.phpt U php/php-src/trunk/ext/snmp/tests/snmp-object-set_security_error.phpt U php/php-src/trunk/ext/snmp/tests/snmp-object.phpt
Modified: php/php-src/trunk/ext/snmp/php_snmp.h =================================================================== --- php/php-src/trunk/ext/snmp/php_snmp.h 2011-02-26 04:34:53 UTC (rev 308702) +++ php/php-src/trunk/ext/snmp/php_snmp.h 2011-02-26 08:27:26 UTC (rev 308703) @@ -79,17 +79,21 @@ PHP_METHOD(SNMP, getnext); PHP_METHOD(SNMP, walk); PHP_METHOD(SNMP, set); +PHP_METHOD(SNMP, get_errno); +PHP_METHOD(SNMP, get_error); typedef struct _php_snmp_object { - zend_object zo; - struct snmp_session *session; - int max_oids; - int valueretrieval; - int quick_print; + zend_object zo; + struct snmp_session *session; + int max_oids; + int valueretrieval; + int quick_print; #ifdef HAVE_NET_SNMP - int enum_print; - int oid_output_format; + int enum_print; + int oid_output_format; #endif + int snmp_errno; + char snmp_errstr[128]; } php_snmp_object; @@ -97,14 +101,21 @@ typedef int (*php_snmp_write_t)(php_snmp_object *snmp_object, zval *newval TSRMLS_DC); typedef struct _ptp_snmp_prop_handler { - const char *name; - size_t name_length; - php_snmp_read_t read_func; - php_snmp_write_t write_func; + const char *name; + size_t name_length; + php_snmp_read_t read_func; + php_snmp_write_t write_func; } php_snmp_prop_handler; +typedef struct _snmpobjarg { + char *oid; + char type; + char *value; + +} snmpobjarg; + ZEND_BEGIN_MODULE_GLOBALS(snmp) - int valueretrieval; + int valueretrieval; ZEND_END_MODULE_GLOBALS(snmp) #ifdef ZTS @@ -113,6 +124,9 @@ #define SNMP_G(v) (snmp_globals.v) #endif +#define REGISTER_PDO_CLASS_CONST_LONG(const_name, value) \ + zend_declare_class_constant_long(php_snmp_get_ce(), const_name, sizeof(const_name)-1, (long)value TSRMLS_CC); + #else #define snmp_module_ptr NULL Modified: php/php-src/trunk/ext/snmp/snmp.c =================================================================== --- php/php-src/trunk/ext/snmp/snmp.c 2011-02-26 04:34:53 UTC (rev 308702) +++ php/php-src/trunk/ext/snmp/snmp.c 2011-02-26 08:27:26 UTC (rev 308703) @@ -161,8 +161,12 @@ } \ } +#define PHP_SNMP_ERRNO_NOERROR 0 +#define PHP_SNMP_ERRNO_GENERIC 1 +#define PHP_SNMP_ERRNO_TIMEOUT 2 +#define PHP_SNMP_ERRNO_ERROR_IN_REPLY 3 +#define PHP_SNMP_ERRNO_OID_NOT_INCREASING 4 - ZEND_DECLARE_MODULE_GLOBALS(snmp) static PHP_GINIT_FUNCTION(snmp); @@ -177,6 +181,11 @@ /* Class entries */ zend_class_entry *php_snmp_class_entry; +zend_class_entry *php_snmp_get_ce() +{ + return php_snmp_class_entry; +} + /* Class object properties */ static HashTable php_snmp_properties; @@ -409,13 +418,6 @@ ZEND_END_ARG_INFO() /* }}} */ -typedef struct _snmpobjarg { - char *oid; - char type; - char *value; - -} snmpobjarg; - struct objid_query { int count; int offset; @@ -546,6 +548,39 @@ } +/* {{{ php_snmp_error + * + * Record last SNMP-related error in object + * + */ +static void php_snmp_error(zval *object, const char *docref TSRMLS_DC, int type, const char *format, ...) +{ + va_list args; + php_snmp_object *snmp_object; + + if (object) { + snmp_object = (php_snmp_object *)zend_object_store_get_object(object TSRMLS_CC); + if (type == PHP_SNMP_ERRNO_NOERROR) { + memset(snmp_object->snmp_errstr, 0, sizeof(snmp_object->snmp_errstr)); + } else { + va_start(args, format); + vsnprintf(snmp_object->snmp_errstr, sizeof(snmp_object->snmp_errstr) - 1, format, args); + va_end(args); + } + snmp_object->snmp_errno = type; + } + + if (type == PHP_SNMP_ERRNO_NOERROR) { + return; + } + + va_start(args, format); + php_verror(docref, "", E_WARNING, format, args TSRMLS_CC); + va_end(args); +} + +/* }}} */ + /* {{{ php_snmp_getvalue * * SNMP value to zval converter @@ -697,6 +732,9 @@ /* we start with retval=FALSE. If any actual data is aquired, retval will be set to appropriate type */ RETVAL_FALSE; + + /* reset errno and errstr */ + php_snmp_error(getThis(), NULL TSRMLS_CC, PHP_SNMP_ERRNO_NOERROR, ""); if (st & SNMP_CMD_WALK) { if (objid_query->count > 1) { @@ -797,7 +835,7 @@ } SNMP_SNPRINT_OBJID(buf, sizeof(buf), vars->name, vars->name_length); SNMP_SNPRINT_VALUE(buf2, sizeof(buf2), vars->name, vars->name_length, vars); - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error in packet at '%s': %s", buf, buf2); + php_snmp_error(getThis(), NULL TSRMLS_CC, PHP_SNMP_ERRNO_ERROR_IN_REPLY, "Error in packet at '%s': %s", buf, buf2); continue; } @@ -838,7 +876,7 @@ /* OID increase check */ if (st & SNMP_CMD_WALK) { if (snmp_oid_compare(name, name_length, vars->name, vars->name_length) >= 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error: OID not increasing: %s",name); + php_snmp_error(getThis(), NULL TSRMLS_CC, PHP_SNMP_ERRNO_OID_NOT_INCREASING, "Error: OID not increasing: %s", name); keepwalking = 0; } else { memmove((char *)name, (char *)vars->name,vars->name_length * sizeof(oid)); @@ -865,9 +903,9 @@ } if (vars) { SNMP_SNPRINT_OBJID(buf, sizeof(buf), vars->name, vars->name_length); - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error in packet at '%s': %s", buf, snmp_errstring(response->errstat)); + php_snmp_error(getThis(), NULL TSRMLS_CC, PHP_SNMP_ERRNO_ERROR_IN_REPLY, "Error in packet at '%s': %s", buf, snmp_errstring(response->errstat)); } else { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error in packet at %u object_id: %s", response->errindex, snmp_errstring(response->errstat)); + php_snmp_error(getThis(), NULL TSRMLS_CC, PHP_SNMP_ERRNO_ERROR_IN_REPLY, "Error in packet at %u object_id: %s", response->errindex, snmp_errstring(response->errstat)); } if (st & (SNMP_CMD_GET | SNMP_CMD_GETNEXT)) { /* cut out bogus OID and retry */ if ((pdu = snmp_fix_pdu(response, ((st & SNMP_CMD_GET) ? SNMP_MSG_GET : SNMP_MSG_GETNEXT) )) != NULL) { @@ -884,7 +922,7 @@ } } } else if (status == STAT_TIMEOUT) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "No response from %s", session->peername); + php_snmp_error(getThis(), NULL TSRMLS_CC, PHP_SNMP_ERRNO_TIMEOUT, "No response from %s", session->peername); if (objid_query->array_output) { zval_dtor(return_value); } @@ -892,7 +930,7 @@ RETURN_FALSE; } else { /* status == STAT_ERROR */ snmp_error(ss, NULL, NULL, &err); - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Fatal error: %s", err); + php_snmp_error(getThis(), NULL TSRMLS_CC, PHP_SNMP_ERRNO_GENERIC, "Fatal error: %s", err); free(err); if (objid_query->array_output) { zval_dtor(return_value); @@ -1814,6 +1852,34 @@ } /* }}} */ +/* {{{ proto long SNMP::get_errno() + Get last error code number */ +PHP_METHOD(snmp, get_errno) +{ + php_snmp_object *snmp_object; + zval *object = getThis(); + + snmp_object = (php_snmp_object *)zend_object_store_get_object(object TSRMLS_CC); + + RETVAL_LONG(snmp_object->snmp_errno); + return; +} +/* }}} */ + +/* {{{ proto long SNMP::error() + Get last error message */ +PHP_METHOD(snmp, get_error) +{ + php_snmp_object *snmp_object; + zval *object = getThis(); + + snmp_object = (php_snmp_object *)zend_object_store_get_object(object TSRMLS_CC); + + RETVAL_STRING(snmp_object->snmp_errstr, 1); + return; +} +/* }}} */ + /* {{{ */ void php_snmp_add_property(HashTable *h, const char *name, size_t name_length, php_snmp_read_t read_func, php_snmp_write_t write_func TSRMLS_DC) { @@ -2053,7 +2119,11 @@ static int php_snmp_read_max_oids(php_snmp_object *snmp_object, zval **retval TSRMLS_DC) { MAKE_STD_ZVAL(*retval); - ZVAL_LONG(*retval, snmp_object->max_oids); + if (snmp_object->max_oids > 0) { + ZVAL_LONG(*retval, snmp_object->max_oids); + } else { + ZVAL_NULL(*retval); + } return SUCCESS; } /* }}} */ @@ -2109,6 +2179,12 @@ { zval ztmp; int ret = SUCCESS; + + if (Z_TYPE_P(newval) == IS_NULL) { + snmp_object->max_oids = 0; + return ret; + } + if (Z_TYPE_P(newval) != IS_LONG) { ztmp = *newval; zval_copy_ctor(&ztmp); @@ -2116,7 +2192,11 @@ newval = &ztmp; } - snmp_object->max_oids = Z_LVAL_P(newval); + if (Z_LVAL_P(newval) > 0) { + snmp_object->max_oids = Z_LVAL_P(newval); + } else { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "max_oids should be positive integer or NULL, got %ld", Z_LVAL_P(newval)); + } if (newval == &ztmp) { zval_dtor(newval); @@ -2131,6 +2211,7 @@ { zval ztmp; int ret = SUCCESS; + if (Z_TYPE_P(newval) != IS_LONG) { ztmp = *newval; zval_copy_ctor(&ztmp); @@ -2244,6 +2325,8 @@ PHP_ME(snmp, getnext, arginfo_snmp_get, ZEND_ACC_PUBLIC) PHP_ME(snmp, walk, arginfo_snmp_walk, ZEND_ACC_PUBLIC) PHP_ME(snmp, set, arginfo_snmp_set, ZEND_ACC_PUBLIC) + PHP_ME(snmp, get_errno, arginfo_snmp_void, ZEND_ACC_PUBLIC) + PHP_ME(snmp, get_error, arginfo_snmp_void, ZEND_ACC_PUBLIC) PHP_MALIAS(snmp, __construct, open, arginfo_snmp_open, ZEND_ACC_PUBLIC|ZEND_ACC_CTOR) {NULL, NULL, NULL} @@ -2305,35 +2388,41 @@ PHP_SNMP_ADD_PROPERTIES(&php_snmp_properties, php_snmp_property_entries); #ifdef HAVE_NET_SNMP - REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_SUFFIX", NETSNMP_OID_OUTPUT_SUFFIX, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_MODULE", NETSNMP_OID_OUTPUT_MODULE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_FULL", NETSNMP_OID_OUTPUT_FULL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_NUMERIC", NETSNMP_OID_OUTPUT_NUMERIC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_UCD", NETSNMP_OID_OUTPUT_UCD, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_NONE", NETSNMP_OID_OUTPUT_NONE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_SUFFIX", NETSNMP_OID_OUTPUT_SUFFIX, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_MODULE", NETSNMP_OID_OUTPUT_MODULE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_FULL", NETSNMP_OID_OUTPUT_FULL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_NUMERIC", NETSNMP_OID_OUTPUT_NUMERIC, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_UCD", NETSNMP_OID_OUTPUT_UCD, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_NONE", NETSNMP_OID_OUTPUT_NONE, CONST_CS | CONST_PERSISTENT); #endif - REGISTER_LONG_CONSTANT("SNMP_VALUE_LIBRARY", SNMP_VALUE_LIBRARY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_VALUE_PLAIN", SNMP_VALUE_PLAIN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_VALUE_OBJECT", SNMP_VALUE_OBJECT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_VALUE_LIBRARY", SNMP_VALUE_LIBRARY, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_VALUE_PLAIN", SNMP_VALUE_PLAIN, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_VALUE_OBJECT", SNMP_VALUE_OBJECT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_BIT_STR", ASN_BIT_STR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_OCTET_STR", ASN_OCTET_STR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_OPAQUE", ASN_OPAQUE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_NULL", ASN_NULL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_OBJECT_ID", ASN_OBJECT_ID, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_IPADDRESS", ASN_IPADDRESS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_COUNTER", ASN_GAUGE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_UNSIGNED", ASN_UNSIGNED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_TIMETICKS", ASN_TIMETICKS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_UINTEGER", ASN_UINTEGER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_INTEGER", ASN_INTEGER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_COUNTER64", ASN_COUNTER64, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_BIT_STR", ASN_BIT_STR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_OCTET_STR", ASN_OCTET_STR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_OPAQUE", ASN_OPAQUE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_NULL", ASN_NULL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_OBJECT_ID", ASN_OBJECT_ID, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_IPADDRESS", ASN_IPADDRESS, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_COUNTER", ASN_GAUGE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_UNSIGNED", ASN_UNSIGNED, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_TIMETICKS", ASN_TIMETICKS, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_UINTEGER", ASN_UINTEGER, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_INTEGER", ASN_INTEGER, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_COUNTER64", ASN_COUNTER64, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_VERSION_1", SNMP_VERSION_1, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_VERSION_2c", SNMP_VERSION_2c, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_VERSION_3", SNMP_VERSION_3, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_VERSION_1", SNMP_VERSION_1, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_VERSION_2c", SNMP_VERSION_2c, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_VERSION_3", SNMP_VERSION_3, CONST_CS | CONST_PERSISTENT); + REGISTER_PDO_CLASS_CONST_LONG("ERRNO_NOERROR", (long)PHP_SNMP_ERRNO_NOERROR); + REGISTER_PDO_CLASS_CONST_LONG("ERRNO_GENERIC", (long)PHP_SNMP_ERRNO_GENERIC); + REGISTER_PDO_CLASS_CONST_LONG("ERRNO_TIMEOUT", (long)PHP_SNMP_ERRNO_TIMEOUT); + REGISTER_PDO_CLASS_CONST_LONG("ERRNO_ERROR_IN_REPLY", (long)PHP_SNMP_ERRNO_ERROR_IN_REPLY); + REGISTER_PDO_CLASS_CONST_LONG("ERRNO_OID_NOT_INCREASING", (long)PHP_SNMP_ERRNO_OID_NOT_INCREASING); + return SUCCESS; } /* }}} */ Added: php/php-src/trunk/ext/snmp/tests/snmp-object-errno-errstr.phpt =================================================================== --- php/php-src/trunk/ext/snmp/tests/snmp-object-errno-errstr.phpt (rev 0) +++ php/php-src/trunk/ext/snmp/tests/snmp-object-errno-errstr.phpt 2011-02-26 08:27:26 UTC (rev 308703) @@ -0,0 +1,63 @@ +--TEST-- +OO API: get_errno & get_error 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_enum_print(false); +snmp_set_quick_print(false); +snmp_set_valueretrieval(SNMP_VALUE_PLAIN); +snmp_set_oid_output_format(SNMP_OID_OUTPUT_FULL); + +echo "SNMP::ERRNO_NOERROR\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->get_errno() == SNMP::ERRNO_NOERROR); +var_dump($session->get_error()); +$session->close(); + +echo "SNMP::ERRNO_TIMEOUT\n"; +$session = new SNMP(SNMP_VERSION_2c, $hostname, 'timeout_community_432', $timeout, $retries); +$session->valueretrieval = SNMP_VALUE_LIBRARY; +var_dump(@$session->get('.1.3.6.1.2.1.1.1.0')); +var_dump($session->get_errno() == SNMP::ERRNO_TIMEOUT); +var_dump($session->get_error()); +$session->close(); +echo "SNMP::ERRNO_ERROR_IN_REPLY\n"; +$session = new SNMP(SNMP_VERSION_2c, $hostname, $community, $timeout, $retries); +var_dump(@$session->get('.1.3.6.1.2.1.1.1.110')); +var_dump($session->get_errno() == SNMP::ERRNO_ERROR_IN_REPLY); +var_dump($session->get_error()); +$session->close(); +echo "SNMP::ERRNO_GENERIC\n"; +$session = new SNMP(SNMP_VERSION_3, $hostname, 'somebogususer', $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->get_errno() == SNMP::ERRNO_GENERIC); +var_dump($session->get_error()); +$session->close(); +?> +--EXPECTF-- +SNMP::ERRNO_NOERROR +%string|unicode%(%d) "%s" +bool(true) +%string|unicode%(0) "" +SNMP::ERRNO_TIMEOUT +bool(false) +bool(true) +%string|unicode%(%d) "No response from %s" +SNMP::ERRNO_ERROR_IN_REPLY +bool(false) +bool(true) +%string|unicode%(%d) "Error in packet %s" +SNMP::ERRNO_GENERIC +bool(false) +bool(true) +%string|unicode%(%d) "Fatal error: Unknown user name" \ No newline at end of file Modified: php/php-src/trunk/ext/snmp/tests/snmp-object-error.phpt =================================================================== --- php/php-src/trunk/ext/snmp/tests/snmp-object-error.phpt 2011-02-26 04:34:53 UTC (rev 308702) +++ php/php-src/trunk/ext/snmp/tests/snmp-object-error.phpt 2011-02-26 08:27:26 UTC (rev 308703) @@ -1,5 +1,5 @@ --TEST-- -Errors in SNMP session-wise functions +OO API: Generic errors --CREDITS-- Boris Lytochkin --SKIPIF-- @@ -51,6 +51,10 @@ var_dump($session->get()); var_dump($session->set()); +var_dump($session->max_oids); +$session->max_oids = "ttt"; +$session->max_oids = 0; +var_dump($session->max_oids); ?> --EXPECTF-- SNMP::__construct() expects at least 3 parameters, 2 given @@ -82,3 +86,9 @@ Warning: SNMP::set() expects exactly 3 parameters, 0 given in %s on line %d bool(false) +NULL + +Warning: main(): max_oids should be positive integer or NULL, got 0 in %s on line %d + +Warning: main(): max_oids should be positive integer or NULL, got 0 in %s on line %d +NULL \ No newline at end of file Modified: php/php-src/trunk/ext/snmp/tests/snmp-object-properties.phpt =================================================================== --- php/php-src/trunk/ext/snmp/tests/snmp-object-properties.phpt 2011-02-26 04:34:53 UTC (rev 308702) +++ php/php-src/trunk/ext/snmp/tests/snmp-object-properties.phpt 2011-02-26 08:27:26 UTC (rev 308703) @@ -59,6 +59,9 @@ $session->info = array("blah" => 2); var_dump($session->info); + +$session->max_oids = NULL; +var_dump($session->max_oids); ?> --EXPECTF-- Check working @@ -75,7 +78,7 @@ int(%d) } ["max_oids"]=> - int(0) + NULL ["valueretrieval"]=> int(1) ["quick_print"]=> @@ -183,4 +186,5 @@ int(%i) ["retries"]=> int(%d) -} \ No newline at end of file +} +NULL \ No newline at end of file Modified: php/php-src/trunk/ext/snmp/tests/snmp-object-set_security_error.phpt =================================================================== --- php/php-src/trunk/ext/snmp/tests/snmp-object-set_security_error.phpt 2011-02-26 04:34:53 UTC (rev 308702) +++ php/php-src/trunk/ext/snmp/tests/snmp-object-set_security_error.phpt 2011-02-26 08:27:26 UTC (rev 308703) @@ -1,5 +1,5 @@ --TEST-- -OO API SNMP::set_security (errors) +OO API: SNMP::set_security (errors) --CREDITS-- Boris Lytochkin --SKIPIF-- Modified: php/php-src/trunk/ext/snmp/tests/snmp-object.phpt =================================================================== --- php/php-src/trunk/ext/snmp/tests/snmp-object.phpt 2011-02-26 04:34:53 UTC (rev 308702) +++ php/php-src/trunk/ext/snmp/tests/snmp-object.phpt 2011-02-26 08:27:26 UTC (rev 308703) @@ -57,6 +57,16 @@ var_dump(array_shift($z)); var_dump($session->close()); +echo "WALK multiple on single OID, max_oids set to 30\n"; +$session = new SNMP(SNMP_VERSION_2c, $hostname, $community, $timeout, $retries); +$session->max_oids = 30; +$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 "SNMPv3 (default security settings)\n"; $session = new SNMP(SNMP_VERSION_3, $hostname, $user_noauth, $timeout, $retries); #$session->set_security($user_noauth, 'noAuthNoPriv', '', '', '', '', '', ''); @@ -134,6 +144,12 @@ string(%d) "%S" string(%d) "%S" bool(true) +WALK multiple on single OID, max_oids 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"
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php