lytboris Sat, 05 Feb 2011 00:29:31 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=308037
Log:
added r/o info property with basic session info,
fix crash in _get_properties in trunk
Changed paths:
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/snmp.c
===================================================================
--- php/php-src/trunk/ext/snmp/snmp.c 2011-02-04 21:49:51 UTC (rev 308036)
+++ php/php-src/trunk/ext/snmp/snmp.c 2011-02-05 00:29:31 UTC (rev 308037)
@@ -1193,7 +1193,7 @@
static int netsnmp_session_set_contextEngineID(struct snmp_session *s, u_char
* contextEngineID TSRMLS_DC)
{
size_t ebuf_len = 32, eout_len = 0;
- u_char *ebuf = (u_char *) malloc(ebuf_len); /* memory freed by SNMP
library, strdup NOT estrdup */
+ u_char *ebuf = (u_char *) malloc(ebuf_len); /* memory freed by SNMP
library, malloc NOT emalloc */
if (ebuf == NULL) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "malloc failure
setting contextEngineID");
@@ -1204,6 +1204,11 @@
free(ebuf);
return (-1);
}
+
+ if (s->contextEngineID) {
+ free(s->contextEngineID);
+ }
+
s->contextEngineID = ebuf;
s->contextEngineIDLen = eout_len;
return (0);
@@ -1971,7 +1976,11 @@
ulong num_key;
obj = (php_snmp_object *)zend_objects_get_address(object TSRMLS_CC);
+#if PHP_VERSION_ID < 50399
props = obj->zo.properties;
+#else
+ props = zend_std_get_properties(object TSRMLS_CC);
+#endif
zend_hash_internal_pointer_reset_ex(&php_snmp_properties, &pos);
@@ -1989,6 +1998,34 @@
/* }}} */
/* {{{ */
+static int php_snmp_read_info(php_snmp_object *snmp_object, zval **retval
TSRMLS_DC)
+{
+ zval *val;
+
+ MAKE_STD_ZVAL(*retval);
+ array_init(*retval);
+
+ MAKE_STD_ZVAL(val);
+ ZVAL_STRINGL(val, snmp_object->session->peername,
strlen(snmp_object->session->peername), 1);
+ add_assoc_zval(*retval, "hostname", val);
+
+ MAKE_STD_ZVAL(val);
+ ZVAL_LONG(val, snmp_object->session->remote_port);
+ add_assoc_zval(*retval, "port", val);
+
+ MAKE_STD_ZVAL(val);
+ ZVAL_LONG(val, snmp_object->session->timeout);
+ add_assoc_zval(*retval, "timeout", val);
+
+ MAKE_STD_ZVAL(val);
+ ZVAL_LONG(val, snmp_object->session->retries);
+ add_assoc_zval(*retval, "retries", val);
+
+ return SUCCESS;
+}
+/* }}} */
+
+/* {{{ */
static int php_snmp_read_max_oids(php_snmp_object *snmp_object, zval **retval
TSRMLS_DC)
{
MAKE_STD_ZVAL(*retval);
@@ -2036,6 +2073,14 @@
#endif
/* {{{ */
+static int php_snmp_write_info(php_snmp_object *snmp_object, zval *newval
TSRMLS_DC)
+{
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "info property is
read-only");
+ return FAILURE;
+}
+/* }}} */
+
+/* {{{ */
static int php_snmp_write_max_oids(php_snmp_object *snmp_object, zval *newval
TSRMLS_DC)
{
zval ztmp;
@@ -2184,6 +2229,7 @@
{ "" #name "", sizeof("" #name "") - 1,
php_snmp_read_##name, php_snmp_write_##name }
const php_snmp_prop_handler php_snmp_property_entries[] = {
+ PHP_SNMP_PROPERTY_ENTRY_RECORD(info),
PHP_SNMP_PROPERTY_ENTRY_RECORD(max_oids),
PHP_SNMP_PROPERTY_ENTRY_RECORD(valueretrieval),
PHP_SNMP_PROPERTY_ENTRY_RECORD(quick_print),
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-04 21:49:51 UTC (rev 308036)
+++ php/php-src/trunk/ext/snmp/tests/snmp-object-properties.phpt
2011-02-05 00:29:31 UTC (rev 308037)
@@ -21,6 +21,7 @@
$session = new SNMP(SNMP_VERSION_1, $hostname, $community, $timeout, $retries);
var_dump($session);
+$session->max_oids = 40;
$session->enum_print = TRUE;
$session->quick_print = TRUE;
$session->valueretrieval = SNMP_VALUE_LIBRARY;
@@ -28,6 +29,7 @@
var_dump($session);
+$session->max_oids = "40";
$session->enum_print = "1";
$session->quick_print = "1";
$session->valueretrieval = "1";
@@ -55,10 +57,25 @@
$session->oid_output_format = 78;
var_dump($session->oid_output_format);
+$session->info = array("blah" => 2);
+var_dump($session->info);
?>
--EXPECTF--
Check working
object(SNMP)#%d (%d) {
+ ["info"]=>
+ array(4) {
+ ["hostname"]=>
+ %string|unicode%(%d) "%s"
+ ["port"]=>
+ int(%d)
+ ["timeout"]=>
+ int(%i)
+ ["retries"]=>
+ int(%d)
+ }
+ ["max_oids"]=>
+ int(0)
["valueretrieval"]=>
int(1)
["quick_print"]=>
@@ -69,6 +86,19 @@
int(3)
}
object(SNMP)#%d (%d) {
+ ["info"]=>
+ array(4) {
+ ["hostname"]=>
+ %string|unicode%(%d) "%s"
+ ["port"]=>
+ int(%d)
+ ["timeout"]=>
+ int(%i)
+ ["retries"]=>
+ int(%d)
+ }
+ ["max_oids"]=>
+ int(40)
["valueretrieval"]=>
int(0)
["quick_print"]=>
@@ -79,6 +109,19 @@
int(4)
}
object(SNMP)#%d (%d) {
+ ["info"]=>
+ array(4) {
+ ["hostname"]=>
+ %string|unicode%(%d) "%s"
+ ["port"]=>
+ int(%d)
+ ["timeout"]=>
+ int(%i)
+ ["retries"]=>
+ int(%d)
+ }
+ ["max_oids"]=>
+ int(40)
["valueretrieval"]=>
int(1)
["quick_print"]=>
@@ -92,6 +135,19 @@
bool(true)
bool(false)
object(SNMP)#%d (%d) {
+ ["info"]=>
+ array(4) {
+ ["hostname"]=>
+ %string|unicode%(%d) "%s"
+ ["port"]=>
+ int(%d)
+ ["timeout"]=>
+ int(%i)
+ ["retries"]=>
+ int(%d)
+ }
+ ["max_oids"]=>
+ int(40)
["valueretrieval"]=>
int(1)
["quick_print"]=>
@@ -115,4 +171,16 @@
int(1)
Warning: main(): Unknown SNMP output print format '78' in %s on line %d
-int(3)
\ No newline at end of file
+int(3)
+
+Warning: main(): info property is read-only in %s on line %d
+array(4) {
+ ["hostname"]=>
+ %string|unicode%(%d) "%s"
+ ["port"]=>
+ int(%d)
+ ["timeout"]=>
+ int(%i)
+ ["retries"]=>
+ int(%d)
+}
\ No newline at end of file
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php