lytboris                                 Sat, 27 Aug 2011 08:16:32 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=315608

Log:
export ERRNO_OID_PARSING_ERROR constant:
raise it evry time OID parsing has failed

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-errno-errstr.phpt

Modified: php/php-src/trunk/ext/snmp/php_snmp.h
===================================================================
--- php/php-src/trunk/ext/snmp/php_snmp.h       2011-08-27 07:33:27 UTC (rev 
315607)
+++ php/php-src/trunk/ext/snmp/php_snmp.h       2011-08-27 08:16:32 UTC (rev 
315608)
@@ -94,7 +94,7 @@
        int oid_output_format;
        int snmp_errno;
        int oid_increasing_check;
-       char snmp_errstr[128];
+       char snmp_errstr[256];
 } php_snmp_object;



Modified: php/php-src/trunk/ext/snmp/snmp.c
===================================================================
--- php/php-src/trunk/ext/snmp/snmp.c   2011-08-27 07:33:27 UTC (rev 315607)
+++ php/php-src/trunk/ext/snmp/snmp.c   2011-08-27 08:16:32 UTC (rev 315608)
@@ -117,6 +117,7 @@
 #define PHP_SNMP_ERRNO_TIMEOUT         2
 #define PHP_SNMP_ERRNO_ERROR_IN_REPLY  3
 #define PHP_SNMP_ERRNO_OID_NOT_INCREASING 4
+#define PHP_SNMP_ERRNO_OID_PARSING_ERROR 5

 ZEND_DECLARE_MODULE_GLOBALS(snmp)
 static PHP_GINIT_FUNCTION(snmp);
@@ -705,7 +706,7 @@

        if (st & SNMP_CMD_WALK) {
                if (objid_query->count > 1) {
-                       php_error_docref(NULL TSRMLS_CC, E_WARNING, "Multi OID 
walks are not supported!");
+                       php_snmp_error(getThis(), NULL TSRMLS_CC, 
PHP_SNMP_ERRNO_OID_PARSING_ERROR, "Multi OID walks are not supported!");
                        RETURN_FALSE;
                }
                rootlen = MAX_NAME_LEN;
@@ -713,7 +714,7 @@
                        if (snmp_parse_oid(objid_query->vars[0].oid, root, 
&rootlen)) {
                                gotroot = 1;
                        } else {
-                               php_error_docref(NULL TSRMLS_CC, E_WARNING, 
"Invalid object identifier: %s", objid_query->vars[0].oid);
+                               php_snmp_error(getThis(), NULL TSRMLS_CC, 
PHP_SNMP_ERRNO_OID_PARSING_ERROR, "Invalid object identifier: %s", 
objid_query->vars[0].oid);
                                RETVAL_FALSE;
                                return;
                        }
@@ -769,7 +770,7 @@
                        for (count = 0; objid_query->offset < 
objid_query->count && count < objid_query->step; objid_query->offset++, 
count++){
                                
objid_query->vars[objid_query->offset].name_length = MAX_OID_LEN;
                                if 
(!snmp_parse_oid(objid_query->vars[objid_query->offset].oid, 
objid_query->vars[objid_query->offset].name, 
&(objid_query->vars[objid_query->offset].name_length))) {
-                                       php_error_docref(NULL TSRMLS_CC, 
E_WARNING, "Invalid object identifier: %s", 
objid_query->vars[objid_query->offset].oid);
+                                       php_snmp_error(getThis(), NULL 
TSRMLS_CC, PHP_SNMP_ERRNO_OID_PARSING_ERROR, "Invalid object identifier: %s", 
objid_query->vars[objid_query->offset].oid);
                                        snmp_free_pdu(pdu);
                                        snmp_close(ss);
                                        RETVAL_FALSE;
@@ -778,7 +779,7 @@
                                if (st & SNMP_CMD_SET) {
                                        if ((snmp_errno = snmp_add_var(pdu, 
objid_query->vars[objid_query->offset].name, 
objid_query->vars[objid_query->offset].name_length, 
objid_query->vars[objid_query->offset].type, 
objid_query->vars[objid_query->offset].value))) {
                                                snprint_objid(buf, sizeof(buf), 
objid_query->vars[objid_query->offset].name, 
objid_query->vars[objid_query->offset].name_length);
-                                               php_error_docref(NULL 
TSRMLS_CC, E_WARNING, "Could not add variable: OID='%s' type='%c' value='%s': 
%s", buf, objid_query->vars[objid_query->offset].type, 
objid_query->vars[objid_query->offset].value, snmp_api_errstring(snmp_errno));
+                                               php_snmp_error(getThis(), NULL 
TSRMLS_CC, PHP_SNMP_ERRNO_OID_PARSING_ERROR, "Could not add variable: OID='%s' 
type='%c' value='%s': %s", buf, objid_query->vars[objid_query->offset].type, 
objid_query->vars[objid_query->offset].value, snmp_api_errstring(snmp_errno));
                                                snmp_free_pdu(pdu);
                                                snmp_close(ss);
                                                RETVAL_FALSE;
@@ -2437,6 +2438,7 @@
        REGISTER_SNMP_CLASS_CONST_LONG("ERRNO_TIMEOUT",                 
(long)PHP_SNMP_ERRNO_TIMEOUT);
        REGISTER_SNMP_CLASS_CONST_LONG("ERRNO_ERROR_IN_REPLY",          
(long)PHP_SNMP_ERRNO_ERROR_IN_REPLY);
        REGISTER_SNMP_CLASS_CONST_LONG("ERRNO_OID_NOT_INCREASING",      
(long)PHP_SNMP_ERRNO_OID_NOT_INCREASING);
+       REGISTER_SNMP_CLASS_CONST_LONG("ERRNO_OID_PARSING_ERROR",       
(long)PHP_SNMP_ERRNO_OID_PARSING_ERROR);

        return SUCCESS;
 }

Modified: php/php-src/trunk/ext/snmp/tests/snmp-object-errno-errstr.phpt
===================================================================
--- php/php-src/trunk/ext/snmp/tests/snmp-object-errno-errstr.phpt      
2011-08-27 07:33:27 UTC (rev 315607)
+++ php/php-src/trunk/ext/snmp/tests/snmp-object-errno-errstr.phpt      
2011-08-27 08:16:32 UTC (rev 315608)
@@ -30,12 +30,14 @@
 var_dump($session->getErrno() == SNMP::ERRNO_TIMEOUT);
 var_dump($session->getError());
 $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->getErrno() == SNMP::ERRNO_ERROR_IN_REPLY);
 var_dump($session->getError());
 $session->close();
+
 echo "SNMP::ERRNO_GENERIC\n";
 $session = new SNMP(SNMP::VERSION_3, $hostname, 'somebogususer', $timeout, 
$retries);
 $session->setSecurity('authPriv', 'MD5', $auth_pass, 'AES', $priv_pass);
@@ -44,6 +46,33 @@
 var_dump($session->getError());
 var_dump(@$session->get(array('.1.3.6.1.2.1.1.1.0')));
 $session->close();
+
+echo "SNMP::ERRNO_OID_PARSING_ERROR\n";
+echo "GET: Single wrong OID\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->getErrno() == SNMP::ERRNO_OID_PARSING_ERROR);
+var_dump($session->getError());
+$session->close();
+echo "GET: Miltiple OID, one wrong\n";
+$session = new SNMP(SNMP::VERSION_2c, $hostname, $community, $timeout, 
$retries);
+var_dump(@$session->get(array('.1.3.6.1.2.1.1.1.0', '.1.3.6.1.2..1.1.1.0')));
+var_dump($session->getErrno() == SNMP::ERRNO_OID_PARSING_ERROR);
+var_dump($session->getError());
+$session->close();
+echo "WALK: Single wrong OID\n";
+$session = new SNMP(SNMP::VERSION_2c, $hostname, $community, $timeout, 
$retries);
+var_dump(@$session->walk('.1.3.6.1.2..1.1'));
+var_dump($session->getErrno() == SNMP::ERRNO_OID_PARSING_ERROR);
+var_dump($session->getError());
+$session->close();
+echo "SET: Wrong type\n";
+$session = new SNMP(SNMP::VERSION_3, $hostname, $rwuser, $timeout, $retries);
+$session->setSecurity('authPriv', 'MD5', $auth_pass, 'AES', $priv_pass);
+$oid1 = 'SNMPv2-MIB::sysContact.0';
+var_dump(@$session->set($oid1, 'q', 'blah'));
+var_dump($session->getErrno() == SNMP::ERRNO_OID_PARSING_ERROR);
+var_dump($session->getError());
 ?>
 --EXPECTF--
 SNMP::ERRNO_NOERROR
@@ -63,3 +92,20 @@
 bool(true)
 %string|unicode%(%d) "Fatal error: Unknown user name"
 bool(false)
+SNMP::ERRNO_OID_PARSING_ERROR
+GET: Single wrong OID
+bool(false)
+bool(true)
+string(46) "Invalid object identifier: .1.3.6.1.2..1.1.1.0"
+GET: Miltiple OID, one wrong
+bool(false)
+bool(true)
+string(46) "Invalid object identifier: .1.3.6.1.2..1.1.1.0"
+WALK: Single wrong OID
+bool(false)
+bool(true)
+string(42) "Invalid object identifier: .1.3.6.1.2..1.1"
+SET: Wrong type
+bool(false)
+bool(true)
+string(129) "Could not add variable: 
OID='.iso.org.dod.internet.mgmt.mib-2.system.sysContact.0' type='q' 
value='blah': Bad variable type ("q")"
\ No newline at end of file

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to