[PHP-CVS] svn: /php/php-src/trunk/ext/snmp/ config.m4 snmp.c tests/snmp-object-errno-errstr.phpt tests/wrong_hostname.phpt
lytboris Tue, 10 May 2011 20:04:26 + Revision: http://svn.php.net/viewvc?view=revision&revision=310936 Log: fixed typos in tests ucd-snmp epoch is over, drop legacy memory allocation (non e*) tune 'buggy snmp_snprint_value' detection on some systems Changed paths: U php/php-src/trunk/ext/snmp/config.m4 U php/php-src/trunk/ext/snmp/snmp.c U php/php-src/trunk/ext/snmp/tests/snmp-object-errno-errstr.phpt U php/php-src/trunk/ext/snmp/tests/wrong_hostname.phpt Modified: php/php-src/trunk/ext/snmp/config.m4 === --- php/php-src/trunk/ext/snmp/config.m42011-05-10 19:59:07 UTC (rev 310935) +++ php/php-src/trunk/ext/snmp/config.m42011-05-10 20:04:26 UTC (rev 310936) @@ -62,7 +62,7 @@ dnl Check for buggy snmp_snprint_value() (net-snmp BUGid 2027834) AC_CACHE_CHECK([for buggy snmp_snprint_value], ac_cv_buggy_snprint_value,[ save_CFLAGS="$CFLAGS" -CFLAGS="$CFLAGS -I${SNMP_PREFIX}/include" +CFLAGS="$CFLAGS -I${SNMP_PREFIX}/include $SNMP_SHARED_LIBADD" AC_TRY_RUN( [ #include #include Modified: php/php-src/trunk/ext/snmp/snmp.c === --- php/php-src/trunk/ext/snmp/snmp.c 2011-05-10 19:59:07 UTC (rev 310935) +++ php/php-src/trunk/ext/snmp/snmp.c 2011-05-10 20:04:26 UTC (rev 310936) @@ -440,12 +440,20 @@ } /* }}} */ +#define PHP_SNMP_SESSION_FREE(a) { \ + if ((*session)->a) { \ + efree((*session)->a); \ + (*session)->a = NULL; \ + } \ +} + static void netsnmp_session_free(php_snmp_session **session) { if (*session) { - if ((*session)->peername) { - efree((*session)->peername); - } + PHP_SNMP_SESSION_FREE(peername); + PHP_SNMP_SESSION_FREE(community); + PHP_SNMP_SESSION_FREE(securityName); + PHP_SNMP_SESSION_FREE(contextEngineID); efree(*session); *session = NULL; } @@ -1115,11 +1123,11 @@ if (version == SNMP_VERSION_3) { /* Setting the security name. */ - session->securityName = strdup(community); + session->securityName = estrdup(community); session->securityNameLen = strlen(session->securityName); } else { session->authenticator = NULL; - session->community = (u_char *)community; + session->community = (u_char *)estrdup(community); session->community_len = strlen(community); } @@ -1222,7 +1230,7 @@ static int netsnmp_session_set_contextEngineID(struct snmp_session *s, char * contextEngineID TSRMLS_DC) { size_t ebuf_len = 32, eout_len = 0; - u_char *ebuf = (u_char *) malloc(ebuf_len); /* memory freed by SNMP library, malloc NOT emalloc */ + u_char *ebuf = (u_char *) emalloc(ebuf_len); if (ebuf == NULL) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "malloc failure setting contextEngineID"); @@ -1230,12 +1238,12 @@ } if (!snmp_hex_to_binary(&ebuf, &ebuf_len, &eout_len, 1, contextEngineID)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Bad engine ID value '%s'", contextEngineID); - free(ebuf); + efree(ebuf); return (-1); } if (s->contextEngineID) { - free(s->contextEngineID); + efree(s->contextEngineID); } s->contextEngineID = ebuf; 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-05-10 19:59:07 UTC (rev 310935) +++ php/php-src/trunk/ext/snmp/tests/snmp-object-errno-errstr.phpt 2011-05-10 20:04:26 UTC (rev 310936) @@ -1,5 +1,5 @@ --TEST-- -OO API: getErrno & getError functions +OO API: getErrno & getError methods --CREDITS-- Boris Lytochkin --SKIPIF-- Modified: php/php-src/trunk/ext/snmp/tests/wrong_hostname.phpt === --- php/php-src/trunk/ext/snmp/tests/wrong_hostname.phpt2011-05-10 19:59:07 UTC (rev 310935) +++ php/php-src/trunk/ext/snmp/tests/wrong_hostname.phpt2011-05-10 20:04:26 UTC (rev 310936) @@ -1,5 +1,5 @@ --TEST-- -Generic timeout (wrong community) +Wrong hostname --CREDITS-- Boris Lytochkin --SKIPIF-- -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/trunk/ext/snmp/ config.m4
lytboris Tue, 12 Apr 2011 08:00:14 + Revision: http://svn.php.net/viewvc?view=revision&revision=310157 Log: fix typo Changed paths: U php/php-src/trunk/ext/snmp/config.m4 Modified: php/php-src/trunk/ext/snmp/config.m4 === --- php/php-src/trunk/ext/snmp/config.m42011-04-12 06:50:48 UTC (rev 310156) +++ php/php-src/trunk/ext/snmp/config.m42011-04-12 08:00:14 UTC (rev 310157) @@ -74,7 +74,6 @@ int main(int argc, char **argv) { - int result = 0; struct variable_list vars; char buf1[2048]; char buf2[sizeof(buf1)]; @@ -117,7 +116,7 @@ ]) CFLAGS="$save_CFLAGS" ]) - if test "ac_cv_buggy_snprint_value" = "yes"; then + if test "$ac_cv_buggy_snprint_value" = "yes"; then AC_DEFINE(BUGGY_SNMPRINT_VALUE, 1, [ ]) fi -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/trunk/ext/snmp/ config.m4 snmp.c
lytboris Wed, 06 Apr 2011 06:58:25 + Revision: http://svn.php.net/viewvc?view=revision&revision=309976 Log: * Net-SNMP version detection and proper processing * more UCD-SNMP-related code removal Changed paths: U php/php-src/trunk/ext/snmp/config.m4 U php/php-src/trunk/ext/snmp/snmp.c Modified: php/php-src/trunk/ext/snmp/config.m4 === --- php/php-src/trunk/ext/snmp/config.m42011-04-06 02:16:55 UTC (rev 309975) +++ php/php-src/trunk/ext/snmp/config.m42011-04-06 06:58:25 UTC (rev 309976) @@ -20,23 +20,34 @@ SNMP_LIBS=`$SNMP_CONFIG --netsnmp-libs` SNMP_LIBS="$SNMP_LIBS `$SNMP_CONFIG --external-libs`" SNMP_PREFIX=`$SNMP_CONFIG --prefix` - -if test -n "$SNMP_LIBS" && test -n "$SNMP_PREFIX"; then - PHP_ADD_INCLUDE(${SNMP_PREFIX}/include) - PHP_EVAL_LIBLINE($SNMP_LIBS, SNMP_SHARED_LIBADD) - SNMP_LIBNAME=netsnmp +snmp_full_version=`$SNMP_CONFIG --version` +ac_IFS=$IFS +IFS="." +set $snmp_full_version +IFS=$ac_IFS +SNMP_VERSION=`expr [$]1 \* 1000 + [$]2` +if test "$SNMP_VERSION" -ge "5003"; then + if test -n "$SNMP_LIBS" && test -n "$SNMP_PREFIX"; then +PHP_ADD_INCLUDE(${SNMP_PREFIX}/include) +PHP_EVAL_LIBLINE($SNMP_LIBS, SNMP_SHARED_LIBADD) +SNMP_LIBNAME=netsnmp + else +AC_MSG_ERROR([Could not find the required paths. Please check your net-snmp installation.]) + fi else - AC_MSG_ERROR([Could not find the required paths. Please check your net-snmp installation.]) + AC_MSG_ERROR([Net-SNMP version 5.3 or greater reqired (detected $snmp_full_version).]) fi else AC_MSG_ERROR([Could not find net-snmp-config binary. Please check your net-snmp installation.]) fi - dnl Check whether snmp_parse_oid() exists. - PHP_CHECK_LIBRARY($SNMP_LIBNAME, snmp_parse_oid, + dnl Test build. + PHP_CHECK_LIBRARY($SNMP_LIBNAME, init_snmp, [ -AC_DEFINE(HAVE_SNMP_PARSE_OID, 1, [ ]) - ], [], [ +AC_DEFINE(HAVE_SNMP,1,[ ]) + ], [ +AC_MSG_ERROR([SNMP sanity check failed. Please check config.log for more information.]) + ], [ $SNMP_SHARED_LIBADD ]) @@ -48,16 +59,6 @@ $SNMP_SHARED_LIBADD ]) - dnl Test build. - PHP_CHECK_LIBRARY($SNMP_LIBNAME, init_snmp, - [ -AC_DEFINE(HAVE_SNMP,1,[ ]) - ], [ -AC_MSG_ERROR([SNMP sanity check failed. Please check config.log for more information.]) - ], [ -$SNMP_SHARED_LIBADD - ]) - dnl Check for buggy snmp_snprint_value() (net-snmp BUGid 2027834) AC_CACHE_CHECK([for buggy snmp_snprint_value], ac_cv_buggy_snprint_value,[ save_CFLAGS="$CFLAGS" Modified: php/php-src/trunk/ext/snmp/snmp.c === --- php/php-src/trunk/ext/snmp/snmp.c 2011-04-06 02:16:55 UTC (rev 309975) +++ php/php-src/trunk/ext/snmp/snmp.c 2011-04-06 06:58:25 UTC (rev 309976) @@ -75,11 +75,6 @@ #include #include -/* Ugly macro, since the length of OIDs in UCD-SNMP and NET-SNMP - * is different and this way the code is not full of 'ifdef's. - */ -#define OIDSIZE(p) (sizeof(p)/sizeof(oid)) - #if PHP_VERSION_ID < 50300 #define Z_ADDREF_P(pz) pz->refcount++ #define Z_ISREF_PP(oid) (PZVAL_IS_REF(*(oid))) @@ -99,11 +94,6 @@ } #endif -/* For really old ucd-snmp versions.. */ -#ifndef HAVE_SNMP_PARSE_OID -#define snmp_parse_oid read_objid -#endif - #define SNMP_VALUE_LIBRARY 0 #define SNMP_VALUE_PLAIN 1 #define SNMP_VALUE_OBJECT 2 @@ -1092,11 +1082,7 @@ session->securityNameLen = strlen(session->securityName); } else { session->authenticator = NULL; -#ifdef UCD_SNMP_HACK - session->community = (u_char *)strdup(community); /* memory freed by SNMP library, strdup NOT estrdup */ -#else session->community = (u_char *)community; -#endif session->community_len = strlen(community); } @@ -1129,10 +1115,10 @@ { if (!strcasecmp(prot, "MD5")) { s->securityAuthProto = usmHMACMD5AuthProtocol; - s->securityAuthProtoLen = OIDSIZE(usmHMACMD5AuthProtocol); + s->securityAuthProtoLen = USM_AUTH_PROTO_MD5_LEN; } else if (!strcasecmp(prot, "SHA")) { s->securityAuthProto = usmHMACSHA1AuthProtocol; - s->securityAuthProtoLen = OIDSIZE(usmHMACSHA1AuthProtocol); + s->securityAuthProtoLen = USM_AUTH_PROTO_SHA_LEN; } else { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown authentication protocol '%s'", prot); return (-1); @@ -1147,39 +1133,12 @@ { if (!strcasecmp(prot, "DES")) { s->securityPrivProto = usmDESPrivProtocol; - s->securityPrivProtoLen = OIDSIZE(usmDESPrivProtocol); + s->securityPrivProtoLen = USM_PRIV_PROTO_DES_LEN; #ifdef HAVE_AES - }
[PHP-CVS] svn: /php/php-src/trunk/ext/snmp/ config.m4 snmp.c
lytboris Thu, 17 Feb 2011 12:02:16 + Revision: http://svn.php.net/viewvc?view=revision&revision=308427 Log: * Fix memory leak on concurrent new, open * change comments to ANSI-C style * added compatibility with net-snmp prior 5.4 Changed paths: U php/php-src/trunk/ext/snmp/config.m4 U php/php-src/trunk/ext/snmp/snmp.c Modified: php/php-src/trunk/ext/snmp/config.m4 === --- php/php-src/trunk/ext/snmp/config.m42011-02-17 11:55:01 UTC (rev 308426) +++ php/php-src/trunk/ext/snmp/config.m42011-02-17 12:02:16 UTC (rev 308427) @@ -112,6 +112,14 @@ $SNMP_SHARED_LIBADD ]) + dnl Check whether shutdown_snmp_logging() exists. + PHP_CHECK_LIBRARY($SNMP_LIBNAME, shutdown_snmp_logging, + [ +AC_DEFINE(HAVE_SHUTDOWN_SNMP_LOGGING, 1, [ ]) + ], [], [ +$SNMP_SHARED_LIBADD + ]) + dnl Test build. PHP_CHECK_LIBRARY($SNMP_LIBNAME, init_snmp, [ Modified: php/php-src/trunk/ext/snmp/snmp.c === --- php/php-src/trunk/ext/snmp/snmp.c 2011-02-17 11:55:01 UTC (rev 308426) +++ php/php-src/trunk/ext/snmp/snmp.c 2011-02-17 12:02:16 UTC (rev 308427) @@ -117,6 +117,17 @@ #define zend_parse_parameters_none() zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "") #endif +/* For net-snmp prior to 5.4 */ +//#ifndef HAVE_SHUTDOWN_SNMP_LOGGING +extern netsnmp_log_handler *logh_head; +#define shutdown_snmp_logging() \ + { \ + snmp_disable_log(); \ + while(NULL != logh_head) \ + netsnmp_remove_loghandler( logh_head ); \ + } +//#endif + /* For really old ucd-snmp versions.. */ #ifndef HAVE_SNMP_PARSE_OID #define snmp_parse_oid read_objid @@ -960,7 +971,7 @@ } } objid_set->count++; - } else if (Z_TYPE_PP(oid) == IS_ARRAY) { // we got objid array + } else if (Z_TYPE_PP(oid) == IS_ARRAY) { /* we got objid array */ if (zend_hash_num_elements(Z_ARRVAL_PP(oid)) == 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Got empty OID array"); return FALSE; @@ -1366,7 +1377,7 @@ snmp_object = (php_snmp_object *)zend_object_store_get_object(object TSRMLS_CC); if (snmp_object->max_oids > 0) { objid_set.step = snmp_object->max_oids; - if (max_repetitions < 0) { // unspecified in function call, use session-wise + if (max_repetitions < 0) { /* unspecified in function call, use session-wise */ max_repetitions = snmp_object->max_oids; } } @@ -1385,7 +1396,7 @@ } if (max_repetitions < 0) { - max_repetitions = 20; // provide correct default value + max_repetitions = 20; /* provide correct default value */ } php_snmp_internal(INTERNAL_FUNCTION_PARAM_PASSTHRU, st, session, &objid_set, non_repeaters, max_repetitions, valueretrieval); @@ -1706,6 +1717,11 @@ return; } + /* handle re-open of snmp session */ + if (snmp_object->session) { + netsnmp_session_free(&(snmp_object->session)); + } + if (netsnmp_session_init(&(snmp_object->session), version, a1, a2, timeout, retries TSRMLS_CC)) { return; } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php