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]

Reply via email to