diff options
author | Harrie Hazewinkel <harrie@php.net> | 2005-03-16 14:29:40 +0000 |
---|---|---|
committer | Harrie Hazewinkel <harrie@php.net> | 2005-03-16 14:29:40 +0000 |
commit | e6ae6fc62d7c5434fc3e673b775fe4fa597a0c1c (patch) | |
tree | 8c3d70797e40c2378fce5b4bb9d5ca1a6407f88c /ext/snmp | |
parent | 5d190e6b5e1487f4ce519dcfcba3974dc7f69649 (diff) | |
download | php-git-e6ae6fc62d7c5434fc3e673b775fe4fa597a0c1c.tar.gz |
Adding SNMPv2 community based (i.e. protocol version) functions.
Diffstat (limited to 'ext/snmp')
-rw-r--r-- | ext/snmp/php_snmp.h | 6 | ||||
-rw-r--r-- | ext/snmp/snmp.c | 66 |
2 files changed, 63 insertions, 9 deletions
diff --git a/ext/snmp/php_snmp.h b/ext/snmp/php_snmp.h index 6a33b7ba19..dac11ff9f0 100644 --- a/ext/snmp/php_snmp.h +++ b/ext/snmp/php_snmp.h @@ -52,6 +52,12 @@ PHP_FUNCTION(snmp_set_enum_print); PHP_FUNCTION(snmp_set_oid_numeric_print); PHP_FUNCTION(snmpset); +PHP_FUNCTION(snmp2_get); +PHP_FUNCTION(snmp2_getnext); +PHP_FUNCTION(snmp2_walk); +PHP_FUNCTION(snmp2_real_walk); +PHP_FUNCTION(snmp2_set); + PHP_FUNCTION(snmp3_get); PHP_FUNCTION(snmp3_getnext); PHP_FUNCTION(snmp3_walk); diff --git a/ext/snmp/snmp.c b/ext/snmp/snmp.c index fe99988689..502873d98d 100644 --- a/ext/snmp/snmp.c +++ b/ext/snmp/snmp.c @@ -127,6 +127,12 @@ function_entry snmp_functions[] = { #endif PHP_FE(snmpset, NULL) + PHP_FE(snmp2_get, NULL) + PHP_FE(snmp2_getnext, NULL) + PHP_FE(snmp2_walk, NULL) + PHP_FE(snmp2_real_walk, NULL) + PHP_FE(snmp2_set, NULL) + PHP_FE(snmp3_get, NULL) PHP_FE(snmp3_getnext, NULL) PHP_FE(snmp3_walk, NULL) @@ -318,7 +324,7 @@ static void php_snmp_getvalue(struct variable_list *vars, zval *snmpval TSRMLS_D /* {{{ php_snmp_internal * -* Generic SNMP object fetcher (for both v3 and v1) +* Generic SNMP object fetcher (for all SNMP versions) * * st=1 snmpget() - query an agent and return a single value. * st=2 snmpget() - query an agent and return the next single value. @@ -518,7 +524,7 @@ retry: /* {{{ php_snmp * -* Generic SNMPv1 handler +* Generic community based SNMP handler for version 1 and 2. * This function makes use of the internal SNMP object fetcher. * The object fetcher is shared with SNMPv3. * @@ -532,7 +538,7 @@ retry: * st=11 snmpset() - query an agent and set a single value * */ -static void php_snmp(INTERNAL_FUNCTION_PARAMETERS, int st) +static void php_snmp(INTERNAL_FUNCTION_PARAMETERS, int st, int version) { zval **a1, **a2, **a3, **a4, **a5, **a6, **a7; struct snmp_session session; @@ -594,7 +600,7 @@ static void php_snmp(INTERNAL_FUNCTION_PARAMETERS, int st) session.peername = hostname; session.remote_port = remote_port; - session.version = SNMP_VERSION_1; + session.version = version; /* * FIXME: potential memory leak * This is a workaround for an "artifact" (Mike Slifcak) @@ -620,7 +626,7 @@ static void php_snmp(INTERNAL_FUNCTION_PARAMETERS, int st) Fetch a SNMP object */ PHP_FUNCTION(snmpget) { - php_snmp(INTERNAL_FUNCTION_PARAM_PASSTHRU,1); + php_snmp(INTERNAL_FUNCTION_PARAM_PASSTHRU,1, SNMP_VERSION_1); } /* }}} */ @@ -628,7 +634,7 @@ PHP_FUNCTION(snmpget) Fetch a SNMP object */ PHP_FUNCTION(snmpgetnext) { - php_snmp(INTERNAL_FUNCTION_PARAM_PASSTHRU,2); + php_snmp(INTERNAL_FUNCTION_PARAM_PASSTHRU,2, SNMP_VERSION_1); } /* }}} */ @@ -636,7 +642,7 @@ PHP_FUNCTION(snmpgetnext) Return all objects under the specified object id */ PHP_FUNCTION(snmpwalk) { - php_snmp(INTERNAL_FUNCTION_PARAM_PASSTHRU,3); + php_snmp(INTERNAL_FUNCTION_PARAM_PASSTHRU,3, SNMP_VERSION_1); } /* }}} */ @@ -644,7 +650,7 @@ PHP_FUNCTION(snmpwalk) Return all objects including their respective object id withing the specified one */ PHP_FUNCTION(snmprealwalk) { - php_snmp(INTERNAL_FUNCTION_PARAM_PASSTHRU,4); + php_snmp(INTERNAL_FUNCTION_PARAM_PASSTHRU,4, SNMP_VERSION_1); } /* }}} */ @@ -722,7 +728,7 @@ PHP_FUNCTION(snmp_set_oid_numeric_print) Set the value of a SNMP object */ PHP_FUNCTION(snmpset) { - php_snmp(INTERNAL_FUNCTION_PARAM_PASSTHRU,11); + php_snmp(INTERNAL_FUNCTION_PARAM_PASSTHRU,11, SNMP_VERSION_1); } /* }}} */ @@ -804,6 +810,9 @@ static int netsnmp_session_set_sec_protocol(struct snmp_session *s, char *prot T * symbol on purpose, as it's defined to be the same as the former. */ || !strcasecmp(prot, "AES")) { + s->securityPrivProto = usmAES128PrivProtocol; + s->securityPrivProtoLen = OIDSIZE(usmAES128PrivProtocol); + return (0); #else ) { s->securityPrivProto = usmAES128PrivProtocol; @@ -888,6 +897,45 @@ static int netsnmp_session_gen_sec_key(struct snmp_session *s, u_char *pass TSRM } /* }}} */ +/* {{{ proto string snmp2_get(string host, string community, string object_id [, int timeout [, int retries]]) + Fetch a SNMP object */ +PHP_FUNCTION(snmp2_get) +{ + php_snmp(INTERNAL_FUNCTION_PARAM_PASSTHRU,1, SNMP_VERSION_2c); +} +/* }}} */ + +/* {{{ proto string snmp2_getnext(string host, string community, string object_id [, int timeout [, int retries]]) + Fetch a SNMP object */ +PHP_FUNCTION(snmp2_getnext) +{ + php_snmp(INTERNAL_FUNCTION_PARAM_PASSTHRU,2, SNMP_VERSION_2c); +} +/* }}} */ + +/* {{{ proto array snmp2_walk(string host, string community, string object_id [, int timeout [, int retries]]) + Return all objects under the specified object id */ +PHP_FUNCTION(snmp2_walk) +{ + php_snmp(INTERNAL_FUNCTION_PARAM_PASSTHRU,3, SNMP_VERSION_2c); +} +/* }}} */ + +/* {{{ proto array snmp2_real_walk(string host, string community, string object_id [, int timeout [, int retries]]) + Return all objects including their respective object id withing the specified one */ +PHP_FUNCTION(snmp2_real_walk) +{ + php_snmp(INTERNAL_FUNCTION_PARAM_PASSTHRU,4, SNMP_VERSION_2c); +} +/* }}} */ + +/* {{{ proto int snmp2_set(string host, string community, string object_id, string type, mixed value [, int timeout [, int retries]]) + Set the value of a SNMP object */ +PHP_FUNCTION(snmp2_set) +{ + php_snmp(INTERNAL_FUNCTION_PARAM_PASSTHRU,11, SNMP_VERSION_2c); +} +/* }}} */ /* {{{ proto void php_snmpv3(INTERNAL_FUNCTION_PARAMETERS, int st) * |