mirror of
https://github.com/php/php-src.git
synced 2024-09-22 02:17:32 +00:00
export ERRNO_OID_PARSING_ERROR constant:
raise it evry time OID parsing has failed
This commit is contained in:
parent
1464da9073
commit
5ab9e7b5db
@ -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;
|
||||
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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")"
|
Loading…
Reference in New Issue
Block a user