diff options
author | Boris Lytochkin <lytboris@php.net> | 2011-08-27 08:16:32 +0000 |
---|---|---|
committer | Boris Lytochkin <lytboris@php.net> | 2011-08-27 08:16:32 +0000 |
commit | 5ab9e7b5db7aaef041e36f9611afb4acde189d1a (patch) | |
tree | 3c6b0c91d5c5e77808a5ca07829e724691c654dd | |
parent | 1464da907333d2b59c45e8c7f273961a42585b1f (diff) | |
download | php-git-5ab9e7b5db7aaef041e36f9611afb4acde189d1a.tar.gz |
export ERRNO_OID_PARSING_ERROR constant:
raise it evry time OID parsing has failed
-rw-r--r-- | ext/snmp/php_snmp.h | 2 | ||||
-rw-r--r-- | ext/snmp/snmp.c | 10 | ||||
-rw-r--r-- | ext/snmp/tests/snmp-object-errno-errstr.phpt | 46 |
3 files changed, 53 insertions, 5 deletions
diff --git a/ext/snmp/php_snmp.h b/ext/snmp/php_snmp.h index 81db1130c4..543a48689c 100644 --- a/ext/snmp/php_snmp.h +++ b/ext/snmp/php_snmp.h @@ -94,7 +94,7 @@ typedef struct _php_snmp_object { int oid_output_format; int snmp_errno; int oid_increasing_check; - char snmp_errstr[128]; + char snmp_errstr[256]; } php_snmp_object; diff --git a/ext/snmp/snmp.c b/ext/snmp/snmp.c index e2a1b94803..2a812338fc 100644 --- a/ext/snmp/snmp.c +++ b/ext/snmp/snmp.c @@ -117,6 +117,7 @@ typedef struct snmp_session php_snmp_session; #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 @@ static void php_snmp_internal(INTERNAL_FUNCTION_PARAMETERS, int st, 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 @@ static void php_snmp_internal(INTERNAL_FUNCTION_PARAMETERS, int st, 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 @@ static void php_snmp_internal(INTERNAL_FUNCTION_PARAMETERS, int st, 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 @@ static void php_snmp_internal(INTERNAL_FUNCTION_PARAMETERS, int st, 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 @@ PHP_MINIT_FUNCTION(snmp) 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; } diff --git a/ext/snmp/tests/snmp-object-errno-errstr.phpt b/ext/snmp/tests/snmp-object-errno-errstr.phpt index 427a754b08..e6dfd603df 100644 --- a/ext/snmp/tests/snmp-object-errno-errstr.phpt +++ b/ext/snmp/tests/snmp-object-errno-errstr.phpt @@ -30,12 +30,14 @@ var_dump(@$session->get('.1.3.6.1.2.1.1.1.0')); 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->getErrno() == SNMP::ERRNO_GENERIC); 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(false) 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 |