On Fri, 2001-12-28 at 09:21, Henning Schmiedehausen wrote: > Hi, > > attached is an even more complete patch that doesn't just enable the > usage of the sbuf stuff in snmp but checks for the vendor modified > libraries. It works with RH 6.x (vendor modified) and should work with > the original stuff from UCD. > > (It would be possible to do this at runtime by checking for the binit() > symbol in the libsnmp, but this would be (IMHO) overkill.. =:-)
The last patch was incomplete. Please use this one. Regards Henning -- Dipl.-Inf. (Univ.) Henning P. Schmiedehausen -- Geschaeftsfuehrer INTERMETA - Gesellschaft fuer Mehrwertdienste mbH [EMAIL PROTECTED] Am Schwabachgrund 22 Fon.: 09131 / 50654-0 [EMAIL PROTECTED] D-91054 Buckenhof Fax.: 09131 / 50654-20
diff -urb php-4.1.0.orig/ext/snmp/config.m4 php-4.1.0/ext/snmp/config.m4 --- php-4.1.0.orig/ext/snmp/config.m4 Mon Dec 24 02:39:03 2001 +++ php-4.1.0/ext/snmp/config.m4 Fri Dec 28 09:16:49 2001 @@ -67,18 +67,38 @@ PHP_EXTENSION(snmp, $ext_shared) PHP_SUBST(SNMP_SHARED_LIBADD) - fi - -AC_MSG_CHECKING(whether to enable UCD SNMP hack) -AC_ARG_ENABLE(ucd-snmp-hack, -[ --enable-ucd-snmp-hack Enable UCD SNMP hack],[ + AC_MSG_CHECKING(whether to enable UCD SNMP hack) + AC_ARG_ENABLE(ucd-snmp-hack, + [ --enable-ucd-snmp-hack Enable UCD SNMP hack],[ if test "$enableval" = "yes" ; then AC_DEFINE(UCD_SNMP_HACK, 1, [ ]) AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) fi -],[ + ],[ AC_MSG_RESULT(no) -]) + ]) + + _SAVE_CPPFLAGS=$CPPFLAGS + _SAVE_LDFLAGS=$LDFLAGS + _SAVE_LIBS=$LIBS + + CPPFLAGS="$CPPFLAGS -I$SNMP_INCDIR" + LDFLAGS="$LDFLAGS -L$SNMP_LIBDIR" + LIBS="$LIBS -lsnmp" + + AC_CACHE_CHECK([for vendor modified SNMP libs], ac_cv_snmp_vendor, + [AC_TRY_LINK([ #include <stdio.h> +#include <sys/types.h> +#include "asn1.h" +#include "parse.h" ],[binit(NULL, NULL, 0);], + ac_cv_snmp_vendor=yes, ac_cv_snmp_vendor=no)]) + if test "$ac_cv_snmp_vendor" = yes; then + AC_DEFINE(HAVE_SNMP_VENDORHACK,1,[SNMP libs are vendor modified]) + fi + CPPFLAGS=$_SAVE_CPPFLAGS + LDFLAGS=$_SAVE_LDFLAGS + LIBS=$_SAVE_LIBS + fi Only in php-4.1.0/ext/snmp: config.m4~ diff -urb php-4.1.0.orig/ext/snmp/snmp.c php-4.1.0/ext/snmp/snmp.c --- php-4.1.0.orig/ext/snmp/snmp.c Mon Dec 24 02:39:03 2001 +++ php-4.1.0/ext/snmp/snmp.c Fri Dec 28 09:14:27 2001 @@ -74,6 +74,8 @@ #define SNMP_MSG_GETNEXT GETNEXT_REQ_MSG #endif +#define SNMP_BUFSIZE 2048 + void php_snmp(INTERNAL_FUNCTION_PARAMETERS, int st); /* constant - can be shared among threads */ @@ -158,8 +160,8 @@ int name_length; int status, count,rootlen=0,gotroot=0; oid root[MAX_NAME_LEN]; - char buf[2048]; - char buf2[2048]; + char buf[SNMP_BUFSIZE]; + char buf2[SNMP_BUFSIZE]; int keepwalking=1; long timeout=SNMP_DEFAULT_TIMEOUT; long retries=SNMP_DEFAULT_RETRIES; @@ -315,7 +317,11 @@ } if (st != 11) { +#ifdef HAVE_SNMP_VENDORHACK + sprint_value(binit(NULL, buf, SNMP_BUFSIZE) ,vars->name, vars->name_length, vars); +#else sprint_value(buf,vars->name, vars->name_length, vars); +#endif } #if 0 Debug("snmp response is: %s\n",buf); @@ -325,7 +331,11 @@ } else if (st == 2) { add_next_index_string(return_value,buf,1); /* Add to returned array */ } else if (st == 3) { +#ifdef HAVE_SNMP_VENDORHACK + sprint_objid(binit(NULL, buf2, SNMP_BUFSIZE), vars->name, vars->name_length); +#else sprint_objid(buf2, vars->name, vars->name_length); +#endif add_assoc_string(return_value,buf2,buf,1); } if (st >= 2 && st != 11) { @@ -344,7 +354,11 @@ for (count=1, vars = response->variables; vars && count != response->errindex; vars = vars->next_variable, count++); if (vars) { +#ifdef HAVE_SNMP_VENDORHACK + sprint_objid(binit(NULL, buf, SNMP_BUFSIZE), vars->name, vars->name_length); +#else sprint_objid(buf,vars->name, vars->name_length); +#endif } php_error(E_WARNING,"This name does not exist: %s\n",buf); } --- php-4.1.0/main/php_config.h.in~ Fri Dec 28 09:16:56 2001 +++ php-4.1.0/main/php_config.h.in Fri Dec 28 09:30:37 2001 @@ -1771,6 +1771,9 @@ #undef UCD_SNMP_HACK /* */ +#undef HAVE_SNMP_VENDORHACK + +/* */ #undef UNDEF_THREADS_HACK /* */
-- PHP Development Mailing List <http://www.php.net/> To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]