summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/snmp/winsnmp.c52
1 files changed, 25 insertions, 27 deletions
diff --git a/ext/snmp/winsnmp.c b/ext/snmp/winsnmp.c
index 331a116e74..508dc06cd5 100644
--- a/ext/snmp/winsnmp.c
+++ b/ext/snmp/winsnmp.c
@@ -57,34 +57,32 @@ DLEXPORT zend_module_entry *get_module() { return &snmp_module_entry; }
/* {{{ _php_snmp
*/
-void _php_snmp(INTERNAL_FUNCTION_PARAMETERS, int st) {
- zval *a1, *a2, *a3;
- INT operation;
- LPSTR agent;
- LPSTR community;
- RFC1157VarBindList variableBindings;
- LPSNMP_MGR_SESSION session;
-
- INT timeout = TIMEOUT;
- INT retries = RETRIES;
-
- BYTE requestType;
- AsnInteger errorStatus;
- AsnInteger errorIndex;
- AsnObjectIdentifier oid;
- char *chkPtr = NULL;
-
- if (zend_get_parameters_ex(3, &a1, &a2, &a3) == FAILURE) {
- WRONG_PARAM_COUNT;
+void _php_snmp(INTERNAL_FUNCTION_PARAMETERS, int st)
+{
+ INT operation;
+
+ RFC1157VarBindList variableBindings;
+ LPSNMP_MGR_SESSION session;
+
+ char *agent, *community, *object_id;
+ int agent_len, community_len, object_id_len;
+
+ INT timeout = TIMEOUT;
+ INT retries = RETRIES;
+
+ BYTE requestType;
+ AsnInteger errorStatus;
+ AsnInteger errorIndex;
+ AsnObjectIdentifier oid;
+
+ char *chkPtr = NULL;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss", &agent, &agent_len, &community, &community_len, &object_id, &object_id_len) == FAILURE) {
+ return;
}
- convert_to_string_ex(a1);
- convert_to_string_ex(a2);
- convert_to_string_ex(a3);
-
- agent=Z_STRVAL_PP(a1);
- community=Z_STRVAL_PP(a2);
- operation=st;
- SnmpMgrStrToOid(Z_STRVAL_PP(a3), &oid);
+
+ operation = st;
+ SnmpMgrStrToOid(object_id, &oid);
/*
I've limited this to only one oid, but we can create a