svn: /php/php-src/trunk/ext/snmp/ php_snmp.h snmp.c tests/snmp-object-properties.phpt

From: Date: Sun, 17 Jul 2011 19:45:05 +0000
Subject: svn: /php/php-src/trunk/ext/snmp/ php_snmp.h snmp.c tests/snmp-object-properties.phpt
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-65511@lists.php.net to get a copy of this message
lytboris Sun, 17 Jul 2011 19:45:05 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=313341 Log: new propery noOIDIncreasingCheck allowing to skip OID increasing check (userful for bogus SNMP agents) Changed paths: U php/php-src/trunk/ext/snmp/php_snmp.h U php/php-src/trunk/ext/snmp/snmp.c U php/php-src/trunk/ext/snmp/tests/snmp-object-properties.phpt Modified: php/php-src/trunk/ext/snmp/php_snmp.h =================================================================== --- php/php-src/trunk/ext/snmp/php_snmp.h 2011-07-17 19:26:54 UTC (rev 313340) +++ php/php-src/trunk/ext/snmp/php_snmp.h 2011-07-17 19:45:05 UTC (rev 313341) @@ -93,6 +93,7 @@ int enum_print; int oid_output_format; int snmp_errno; + int noOIDIncreasingCheck; char snmp_errstr[128]; } php_snmp_object; Modified: php/php-src/trunk/ext/snmp/snmp.c =================================================================== --- php/php-src/trunk/ext/snmp/snmp.c 2011-07-17 19:26:54 UTC (rev 313340) +++ php/php-src/trunk/ext/snmp/snmp.c 2011-07-17 19:45:05 UTC (rev 313341) @@ -376,6 +376,7 @@ long max_repetitions; int valueretrieval; int array_output; + int noOIDIncreasingCheck; snmpobjarg *vars; }; @@ -878,7 +879,7 @@ /* OID increase check */ if (st & SNMP_CMD_WALK) { - if (snmp_oid_compare(name, name_length, vars->name, vars->name_length) >= 0) { + if (objid_query->noOIDIncreasingCheck == FALSE && snmp_oid_compare(name, name_length, vars->name, vars->name_length) >= 0) { snprint_objid(buf2, sizeof(buf2), vars->name, vars->name_length); php_snmp_error(getThis(), NULL TSRMLS_CC, PHP_SNMP_ERRNO_OID_NOT_INCREASING, "Error: OID not increasing: %s", buf2); keepwalking = 0; @@ -1331,6 +1332,7 @@ objid_query.max_repetitions = -1; objid_query.non_repeaters = 0; objid_query.valueretrieval = SNMP_G(valueretrieval); + objid_query.noOIDIncreasingCheck = FALSE; if (session_less_mode) { if (version == SNMP_VERSION_3) { @@ -1424,6 +1426,7 @@ objid_query.max_repetitions = snmp_object->max_oids; } } + objid_query.noOIDIncreasingCheck = snmp_object->noOIDIncreasingCheck; objid_query.valueretrieval = snmp_object->valueretrieval; glob_snmp_object.enum_print = netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_PRINT_NUMERIC_ENUM); netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_PRINT_NUMERIC_ENUM, snmp_object->enum_print); @@ -2107,41 +2110,28 @@ } /* }}} */ -/* {{{ */ -static int php_snmp_read_valueretrieval(php_snmp_object *snmp_object, zval **retval TSRMLS_DC) -{ - MAKE_STD_ZVAL(*retval); - ZVAL_LONG(*retval, snmp_object->valueretrieval); - return SUCCESS; -} -/* }}} */ +#define PHP_SNMP_BOOL_PROPERTY_READER_FUNCTION(name) \ + static int php_snmp_read_##name(php_snmp_object *snmp_object, zval **retval TSRMLS_DC) \ + { \ + MAKE_STD_ZVAL(*retval); \ + ZVAL_BOOL(*retval, snmp_object->name); \ + return SUCCESS; \ + } -/* {{{ */ -static int php_snmp_read_quick_print(php_snmp_object *snmp_object, zval **retval TSRMLS_DC) -{ - MAKE_STD_ZVAL(*retval); - ZVAL_BOOL(*retval, snmp_object->quick_print); - return SUCCESS; -} -/* }}} */ +PHP_SNMP_BOOL_PROPERTY_READER_FUNCTION(noOIDIncreasingCheck) +PHP_SNMP_BOOL_PROPERTY_READER_FUNCTION(quick_print) +PHP_SNMP_BOOL_PROPERTY_READER_FUNCTION(enum_print) -/* {{{ */ -static int php_snmp_read_enum_print(php_snmp_object *snmp_object, zval **retval TSRMLS_DC) -{ - MAKE_STD_ZVAL(*retval); - ZVAL_BOOL(*retval, snmp_object->enum_print); - return SUCCESS; -} -/* }}} */ +#define PHP_SNMP_LONG_PROPERTY_READER_FUNCTION(name) \ + static int php_snmp_read_##name(php_snmp_object *snmp_object, zval **retval TSRMLS_DC) \ + { \ + MAKE_STD_ZVAL(*retval); \ + ZVAL_LONG(*retval, snmp_object->name); \ + return SUCCESS; \ + } -/* {{{ */ -static int php_snmp_read_oid_output_format(php_snmp_object *snmp_object, zval **retval TSRMLS_DC) -{ - MAKE_STD_ZVAL(*retval); - ZVAL_LONG(*retval, snmp_object->oid_output_format); - return SUCCESS; -} -/* }}} */ +PHP_SNMP_LONG_PROPERTY_READER_FUNCTION(valueretrieval) +PHP_SNMP_LONG_PROPERTY_READER_FUNCTION(oid_output_format) /* {{{ */ static int php_snmp_write_info(php_snmp_object *snmp_object, zval *newval TSRMLS_DC) @@ -2211,46 +2201,29 @@ } /* }}} */ -/* {{{ */ -static int php_snmp_write_quick_print(php_snmp_object *snmp_object, zval *newval TSRMLS_DC) -{ - zval ztmp; - if (Z_TYPE_P(newval) != IS_BOOL) { - ztmp = *newval; - zval_copy_ctor(&ztmp); - convert_to_boolean(&ztmp); - newval = &ztmp; - } - - snmp_object->quick_print = Z_LVAL_P(newval); - - if (newval == &ztmp) { - zval_dtor(newval); - } - return SUCCESS; +#define PHP_SNMP_BOOL_PROPERTY_WRITER_FUNCTION(name) \ +static int php_snmp_write_##name(php_snmp_object *snmp_object, zval *newval TSRMLS_DC) \ +{ \ + zval ztmp; \ + if (Z_TYPE_P(newval) != IS_BOOL) { \ + ztmp = *newval; \ + zval_copy_ctor(&ztmp); \ + convert_to_boolean(&ztmp); \ + newval = &ztmp; \ + } \ +\ + snmp_object->name = Z_LVAL_P(newval); \ +\ + if (newval == &ztmp) { \ + zval_dtor(newval); \ + } \ + return SUCCESS; \ } -/* }}} */ -/* {{{ */ -static int php_snmp_write_enum_print(php_snmp_object *snmp_object, zval *newval TSRMLS_DC) -{ - zval ztmp; - if (Z_TYPE_P(newval) != IS_BOOL) { - ztmp = *newval; - zval_copy_ctor(&ztmp); - convert_to_boolean(&ztmp); - newval = &ztmp; - } +PHP_SNMP_BOOL_PROPERTY_WRITER_FUNCTION(quick_print) +PHP_SNMP_BOOL_PROPERTY_WRITER_FUNCTION(enum_print) +PHP_SNMP_BOOL_PROPERTY_WRITER_FUNCTION(noOIDIncreasingCheck) - snmp_object->enum_print = Z_LVAL_P(newval); - - if (newval == &ztmp) { - zval_dtor(newval); - } - return SUCCESS; -} -/* }}} */ - /* {{{ */ static int php_snmp_write_oid_output_format(php_snmp_object *snmp_object, zval *newval TSRMLS_DC) { @@ -2311,6 +2284,7 @@ PHP_SNMP_PROPERTY_ENTRY_RECORD(quick_print), PHP_SNMP_PROPERTY_ENTRY_RECORD(enum_print), PHP_SNMP_PROPERTY_ENTRY_RECORD(oid_output_format), + PHP_SNMP_PROPERTY_ENTRY_RECORD(noOIDIncreasingCheck), { NULL, 0, NULL, NULL} }; /* }}} */ Modified: php/php-src/trunk/ext/snmp/tests/snmp-object-properties.phpt =================================================================== --- php/php-src/trunk/ext/snmp/tests/snmp-object-properties.phpt 2011-07-17 19:26:54 UTC (rev 313340) +++ php/php-src/trunk/ext/snmp/tests/snmp-object-properties.phpt 2011-07-17 19:45:05 UTC (rev 313341) @@ -26,6 +26,7 @@ $session->quick_print = TRUE; $session->valueretrieval = SNMP_VALUE_LIBRARY; $session->oid_output_format = SNMP_OID_OUTPUT_NUMERIC; +$session->noOIDIncreasingCheck = TRUE; var_dump($session); @@ -34,6 +35,7 @@ $session->quick_print = "1"; $session->valueretrieval = "1"; $session->oid_output_format = "3"; +$session->noOIDIncreasingCheck = "45"; var_dump($session); @@ -87,6 +89,8 @@ bool(false) ["oid_output_format"]=> int(3) + ["noOIDIncreasingCheck"]=> + bool(false) } object(SNMP)#%d (%d) { ["info"]=> @@ -110,6 +114,8 @@ bool(true) ["oid_output_format"]=> int(4) + ["noOIDIncreasingCheck"]=> + bool(true) } object(SNMP)#%d (%d) { ["info"]=> @@ -133,6 +139,8 @@ bool(true) ["oid_output_format"]=> int(3) + ["noOIDIncreasingCheck"]=> + bool(true) } bool(true) bool(true) @@ -159,6 +167,8 @@ bool(true) ["oid_output_format"]=> int(3) + ["noOIDIncreasingCheck"]=> + bool(true) ["123"]=> string(11) "param_value" }

« previous php.cvs (#65511) next »