]> granicus.if.org Git - php/commitdiff
* added detection and walkaround for net-snmp library bug (net-snmp BUGid 2027834)
authorBoris Lytochkin <lytboris@php.net>
Tue, 5 Apr 2011 12:20:35 +0000 (12:20 +0000)
committerBoris Lytochkin <lytboris@php.net>
Tue, 5 Apr 2011 12:20:35 +0000 (12:20 +0000)
* drop UCD-SNMP support, R.I.P.

UPGRADING
ext/snmp/CREDITS
ext/snmp/config.m4
ext/snmp/config.w32
ext/snmp/php_snmp.h
ext/snmp/snmp.c

index c5d0272e2177e699c597b1d9ac4251ee4b1dc516..efbb44d6905cc6b8bc598af629ab4d0a4e0dca42 100755 (executable)
--- a/UPGRADING
+++ b/UPGRADING
@@ -276,6 +276,8 @@ UPGRADE NOTES - PHP X.Y
              - New constants added for use in snmp_set_oid_output_format()
                function.
              - Added feature-rich OO API (SNMP class)
+             - Dropped UCD-SNMP compatibility code. Consider upgrading to
+               net-snmp v5.3+. Net-SNMP v5.4+ is required for Windows version.
           
 
      d. no longer possible to disable
index 2ff38dbe6d69ae8e741d3afbb6faeecaa53e1335..2835d745fb063dd310c4745deaa515abfab86a77 100644 (file)
@@ -1,2 +1,2 @@
 SNMP
-Rasmus Lerdorf, Harrie Hazewinkel, Mike Jackson, Steven Lawrance, Johann Hanne
+Rasmus Lerdorf, Harrie Hazewinkel, Mike Jackson, Steven Lawrance, Johann Hanne, Boris Lytochkin
index faebd4749c43f690ae59171ab1716cede938e84a..ea9745110079c58ef7a417fa919c60d7ee685c99 100644 (file)
@@ -8,14 +8,8 @@ PHP_ARG_WITH(snmp,for SNMP support,
 PHP_ARG_WITH(openssl-dir,OpenSSL dir for SNMP,
 [  --with-openssl-dir[=DIR]  SNMP: openssl install prefix], no, no)
 
-PHP_ARG_ENABLE(ucd-snmp-hack, whether to enable UCD SNMP hack, 
-[  --enable-ucd-snmp-hack    SNMP: Enable UCD SNMP hack], no, no)
-
 if test "$PHP_SNMP" != "no"; then
 
-  dnl
-  dnl Try net-snmp first
-  dnl
   if test "$PHP_SNMP" = "yes"; then
     AC_PATH_PROG(SNMP_CONFIG,net-snmp-config,,[/usr/local/bin:$PATH])
   else
@@ -30,78 +24,12 @@ if test "$PHP_SNMP" != "no"; 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)
-      AC_DEFINE(HAVE_NET_SNMP,1,[ ])
       SNMP_LIBNAME=netsnmp
     else
       AC_MSG_ERROR([Could not find the required paths. Please check your net-snmp installation.])
     fi
   else 
-
-    dnl
-    dnl Try ucd-snmp if net-snmp test failed
-    dnl
-
-    if test "$PHP_SNMP" = "yes"; then
-      for i in /usr/include /usr/local/include; do
-        test -f $i/snmp.h                       && SNMP_INCDIR=$i
-        test -f $i/ucd-snmp/snmp.h              && SNMP_INCDIR=$i/ucd-snmp
-        test -f $i/snmp/snmp.h                  && SNMP_INCDIR=$i/snmp
-        test -f $i/snmp/include/ucd-snmp/snmp.h && SNMP_INCDIR=$i/snmp/include/ucd-snmp
-      done
-      for i in /usr/$PHP_LIBDIR /usr/snmp/lib /usr/local/$PHP_LIBDIR /usr/local/lib /usr/local/snmp/lib; do
-        test -f $i/libsnmp.a || test -f $i/libsnmp.$SHLIB_SUFFIX_NAME && SNMP_LIBDIR=$i
-      done
-    else
-      SNMP_INCDIR=$PHP_SNMP/include
-      test -d $PHP_SNMP/include/ucd-snmp && SNMP_INCDIR=$PHP_SNMP/include/ucd-snmp
-      SNMP_LIBDIR=$PHP_SNMP/lib
-    fi
-
-    if test -z "$SNMP_INCDIR"; then
-      AC_MSG_ERROR(snmp.h not found. Check your SNMP installation.)
-    elif test -z "$SNMP_LIBDIR"; then
-      AC_MSG_ERROR(libsnmp not found. Check your SNMP installation.)
-    fi
-
-    old_CPPFLAGS=$CPPFLAGS
-    CPPFLAGS=-I$SNMP_INCDIR
-    AC_CHECK_HEADERS(default_store.h)
-    if test "$ac_cv_header_default_store_h" = "yes"; then
-      AC_MSG_CHECKING(for OpenSSL support in SNMP libraries)
-      AC_EGREP_CPP(yes,[
-#include <ucd-snmp-config.h>
-#if USE_OPENSSL
-        yes
-#endif
-      ],[
-        SNMP_SSL=yes
-      ],[
-        SNMP_SSL=no
-      ])
-    fi
-    CPPFLAGS=$old_CPPFLAGS
-    AC_MSG_RESULT($SNMP_SSL)
-  
-    if test "$SNMP_SSL" = "yes"; then
-      if test "$PHP_OPENSSL_DIR" != "no"; then
-        PHP_OPENSSL=$PHP_OPENSSL_DIR
-      fi
-      
-      if test "$PHP_OPENSSL" = "no"; then
-        AC_MSG_ERROR([The UCD-SNMP in this system is built with SSL support. 
-
-        Add --with-openssl-dir=DIR to your configure line.])
-      else
-        PHP_SETUP_OPENSSL(SNMP_SHARED_LIBADD, [], [
-          AC_MSG_ERROR([SNMP: OpenSSL check failed. Please check config.log for more information.])
-        ])
-      fi
-    fi
-
-    AC_CHECK_LIB(kstat, kstat_read, [ PHP_ADD_LIBRARY(kstat,,SNMP_SHARED_LIBADD) ])
-    PHP_ADD_INCLUDE($SNMP_INCDIR)
-    PHP_ADD_LIBRARY_WITH_PATH(snmp, $SNMP_LIBDIR, SNMP_SHARED_LIBADD)
-    SNMP_LIBNAME=snmp
+    AC_MSG_ERROR([Could not find net-snmp-config binary. Please check your net-snmp installation.])
   fi
 
   dnl Check whether snmp_parse_oid() exists.
@@ -130,10 +58,68 @@ if test "$PHP_SNMP" != "no"; then
     $SNMP_SHARED_LIBADD
   ])
 
-  if test "$PHP_UCD_SNMP_HACK" = "yes" ; then
-    AC_DEFINE(UCD_SNMP_HACK, 1, [ ])
+  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"
+    AC_TRY_RUN( [
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+
+u_char uname[] = "Linux nex1.php.net 2.6.18-194.32.1.el5 #1 SMP Wed Jan 5 17:53:09 EST 2011 i686";
+
+int main(int argc, char **argv)
+{
+       int result = 0;
+       struct variable_list vars;
+       char buf1[2048];
+       char buf2[sizeof(buf1)];
+       
+       memset(&(buf1[0]), 0, sizeof(buf1));
+       memset(&(buf2[0]), 0, sizeof(buf2));
+       memset(&vars, 0, sizeof(vars));
+       vars.type = 4;
+       vars.val.integer = (long *)&(uname[0]);
+       vars.val.string = &(uname[0]);
+       vars.val.bitstring = &(uname[0]);
+       vars.val.counter64 = (struct counter64 *)&(uname[0]);
+       vars.val.floatVal = (float *)&(uname[0]);
+       vars.val_len = sizeof(uname),
+       vars.name_loc[0] = 1;
+       vars.name_loc[1] = 3;
+       vars.name_loc[2] = 6;
+       vars.name_loc[3] = 1;
+       vars.name_loc[4] = 2;
+       vars.name_loc[5] = 1;
+       vars.name_loc[6] = 1;
+       vars.name_loc[7] = 1;
+       vars.name = (oid *)&(vars.name_loc);
+       vars.name_length = 9;
+
+       init_snmp("snmpapp");
+
+       netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICK_PRINT, 0);
+
+       snprint_value(buf1, (sizeof(uname) + 32), vars.name, vars.name_length, &vars);
+       snprint_value(buf2, sizeof(buf2), vars.name, vars.name_length, &vars);
+       exit((strncmp(buf1, buf2, sizeof(buf1)) != 0));
+}
+    ],[
+      ac_cv_buggy_snprint_value=no
+    ],[
+      ac_cv_buggy_snprint_value=yes
+    ],[
+      ac_cv_buggy_snprint_value=no
+    ])
+    CFLAGS="$save_CFLAGS"
+  ])
+  if test "ac_cv_buggy_snprint_value" = "yes"; then
+     AC_DEFINE(BUGGY_SNMPRINT_VALUE, 1, [ ])
   fi
-  
+
   PHP_NEW_EXTENSION(snmp, snmp.c, $ext_shared)
   PHP_SUBST(SNMP_SHARED_LIBADD)
 fi
index 59b6a8266b261ccaa79c3d07c298e725deae2d76..24622434c95eb298b4e0a451483e005bcdfbed3a 100644 (file)
@@ -10,9 +10,6 @@ if (PHP_SNMP != "no") {
                        CHECK_LIB("libeay32.lib", "snmp", PHP_SNMP)
                        AC_DEFINE('HAVE_SNMP', 1);
                        AC_DEFINE("HAVE_NET_SNMP", 1);
-               } else if (CHECK_LIB("libsnmp.lib", "snmp", PHP_SNMP)) {
-                       EXTENSION('snmp', 'snmp.c');
-                       AC_DEFINE('HAVE_SNMP', 1);
                } else {
                        WARNING("snmp not enabled; libraries and headers not found");
                }
index 230132b330cf45d06caf2b797b72b936bb43a9d1..f6855d73f96bc03f50bb2afd98e2b9f292279f4b 100644 (file)
@@ -88,10 +88,8 @@ typedef struct _php_snmp_object {
        int max_oids;
        int valueretrieval;
        int quick_print;
-#ifdef HAVE_NET_SNMP
        int enum_print;
        int oid_output_format;
-#endif
        int snmp_errno;
        char snmp_errstr[128];
 } php_snmp_object;
index 50ee35891663d522ba4142cdb677417ef17dfc1f..47080b670182f7aca5a3cbe7038dbf467a62ee6a 100644 (file)
 #endif
 #endif
 
-#ifdef HAVE_NET_SNMP
 #include <net-snmp/net-snmp-config.h>
 #include <net-snmp/net-snmp-includes.h>
-#else
-#ifdef HAVE_DEFAULT_STORE_H
-#include "default_store.h"
-#endif
-#include "asn1.h"
-#include "snmp_api.h"
-#include "snmp_client.h"
-#include "snmp_impl.h"
-#include "snmp.h"
-#include "snmpv3.h"
-#include "keytools.h"
-#include "parse.h"
-#include "mib.h"
-#ifndef PHP_WIN32
-/* this doesn't appear to be needed under win32 (perhaps at all)
- * and the header file is not present in my UCD-SNMP headers */
-# include "version.h"
-#endif
-#include "transform_oids.h"
-#endif
+
 /* 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))
 
-/* Another ugly macros, since UCD-SNMP has no snprint_* */
-#ifdef HAVE_NET_SNMP
-#define SNMP_SNPRINT_OBJID(dst, dstlen, src, srclen) (snprint_objid((dst), (dstlen), (src), (srclen)))
-#define SNMP_SNPRINT_VALUE(dst, dstlen, srcname, srcnamelen, src) (snprint_value((dst), (dstlen), (srcname), (srcnamelen), (src)))
-#else
-#define SNMP_SNPRINT_OBJID(dst, dstlen, src, srclen) (sprint_objid((dst), (src), (srclen)))
-#define SNMP_SNPRINT_VALUE(dst, dstlen, srcname, srcnamelen, src) (sprint_value((dst), (srcname), (srcnamelen), (src)))
-#endif
-
 #if PHP_VERSION_ID < 50300
 #define Z_ADDREF_P(pz) pz->refcount++
 #define Z_ISREF_PP(oid) (PZVAL_IS_REF(*(oid)))
@@ -231,7 +202,6 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_snmp_set_quick_print, 0, 0, 1)
        ZEND_ARG_INFO(0, quick_print)
 ZEND_END_ARG_INFO()
 
-#ifdef HAVE_NET_SNMP
 ZEND_BEGIN_ARG_INFO_EX(arginfo_snmp_set_enum_print, 0, 0, 1)
        ZEND_ARG_INFO(0, enum_print)
 ZEND_END_ARG_INFO()
@@ -239,7 +209,6 @@ ZEND_END_ARG_INFO()
 ZEND_BEGIN_ARG_INFO_EX(arginfo_snmp_set_oid_output_format, 0, 0, 1)
        ZEND_ARG_INFO(0, oid_format)
 ZEND_END_ARG_INFO()
-#endif
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_snmp2_get, 0, 0, 3)
        ZEND_ARG_INFO(0, host)
@@ -429,11 +398,9 @@ const zend_function_entry snmp_functions[] = {
        PHP_FE(snmpset,                                 arginfo_snmpset)
        PHP_FE(snmp_get_quick_print,                    arginfo_snmp_get_quick_print)
        PHP_FE(snmp_set_quick_print,                    arginfo_snmp_set_quick_print)
-#ifdef HAVE_NET_SNMP
        PHP_FE(snmp_set_enum_print,                     arginfo_snmp_set_enum_print)
        PHP_FE(snmp_set_oid_output_format,              arginfo_snmp_set_oid_output_format)
        PHP_FALIAS(snmp_set_oid_numeric_print, snmp_set_oid_output_format, arginfo_snmp_set_oid_output_format)
-#endif
 
        PHP_FE(snmp2_get,                               arginfo_snmp2_get)
        PHP_FE(snmp2_getnext,                           arginfo_snmp2_getnext)
@@ -578,7 +545,11 @@ static void php_snmp_error(zval *object, const char *docref TSRMLS_DC, int type,
 static void php_snmp_getvalue(struct variable_list *vars, zval *snmpval TSRMLS_DC, int valueretrieval)
 {
        zval *val;
+#ifdef BUGGY_SNMPRINT_VALUE
+       char sbuf[2048];
+#else
        char sbuf[64];
+#endif
        char *buf = &(sbuf[0]);
        char *dbuf = (char *)NULL;
        int buflen = sizeof(sbuf) - 1;
@@ -601,7 +572,7 @@ static void php_snmp_getvalue(struct variable_list *vars, zval *snmpval TSRMLS_D
        *buf = 0;
 
        if (valueretrieval == SNMP_VALUE_LIBRARY) {
-               SNMP_SNPRINT_VALUE(buf, buflen, vars->name, vars->name_length, vars);
+               snprint_value(buf, buflen, vars->name, vars->name_length, vars);
                ZVAL_STRING(snmpval, buf, 1);
                if(dbuf){ /* malloc was used to store value */
                        efree(dbuf);
@@ -626,7 +597,7 @@ static void php_snmp_getvalue(struct variable_list *vars, zval *snmpval TSRMLS_D
                break;
 
        case ASN_OBJECT_ID:             /* 0x06, asn1.h */
-               SNMP_SNPRINT_OBJID(buf, buflen, vars->val.objid, vars->val_len / sizeof(oid));
+               snprint_objid(buf, buflen, vars->val.objid, vars->val_len / sizeof(oid));
                ZVAL_STRING(val, buf, 1);
                break;
 
@@ -795,7 +766,7 @@ static void php_snmp_internal(INTERNAL_FUNCTION_PARAMETERS, int st,
                                        return;
                                } else {
                                        if ((snmp_errno = snmp_add_var(pdu, name, name_length, objid_query->vars[objid_query->offset].type, objid_query->vars[objid_query->offset].value))) {
-                                               SNMP_SNPRINT_OBJID(buf, sizeof(buf), name, name_length);
+                                               snprint_objid(buf, sizeof(buf), name, name_length);
                                                php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not add variable: OID='%s' type='%c' value='%s': %s", buf, objid_query->vars[objid_query->offset].type, objid_query->vars[objid_query->offset].value, snmp_api_errstring(snmp_errno));
                                                snmp_free_pdu(pdu);
                                                snmp_close(ss);
@@ -833,8 +804,8 @@ retry:
                                                if ((st & SNMP_CMD_WALK) && Z_TYPE_P(return_value) == IS_ARRAY) {
                                                        break;
                                                }
-                                               SNMP_SNPRINT_OBJID(buf, sizeof(buf), vars->name, vars->name_length);
-                                               SNMP_SNPRINT_VALUE(buf2, sizeof(buf2), vars->name, vars->name_length, vars);
+                                               snprint_objid(buf, sizeof(buf), vars->name, vars->name_length);
+                                               snprint_value(buf2, sizeof(buf2), vars->name, vars->name_length, vars);
                                                php_snmp_error(getThis(), NULL TSRMLS_CC, PHP_SNMP_ERRNO_ERROR_IN_REPLY, "Error in packet at '%s': %s", buf, buf2);
                                                continue;
                                        }
@@ -863,7 +834,7 @@ retry:
                                                if (st & SNMP_NUMERIC_KEYS) {
                                                        add_next_index_zval(return_value, snmpval);
                                                } else {
-                                                       SNMP_SNPRINT_OBJID(buf2, sizeof(buf2), vars->name, vars->name_length);
+                                                       snprint_objid(buf2, sizeof(buf2), vars->name, vars->name_length);
                                                        add_assoc_zval(return_value, buf2, snmpval);
                                                }
                                        } else {
@@ -902,7 +873,7 @@ retry:
                                                continue;
                                        }
                                        if (vars) {
-                                               SNMP_SNPRINT_OBJID(buf, sizeof(buf), vars->name, vars->name_length);
+                                               snprint_objid(buf, sizeof(buf), vars->name, vars->name_length);
                                                php_snmp_error(getThis(), NULL TSRMLS_CC, PHP_SNMP_ERRNO_ERROR_IN_REPLY, "Error in packet at '%s': %s", buf, snmp_errstring(response->errstat));
                                        } else {
                                                php_snmp_error(getThis(), NULL TSRMLS_CC, PHP_SNMP_ERRNO_ERROR_IN_REPLY, "Error in packet at %u object_id: %s", response->errindex, snmp_errstring(response->errstat));
@@ -1442,17 +1413,12 @@ static void php_snmp(INTERNAL_FUNCTION_PARAMETERS, int st, int version)
                        }
                }
                objid_query.valueretrieval = snmp_object->valueretrieval;
-#ifdef HAVE_NET_SNMP
                glob_snmp_object.enum_print = netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_PRINT_NUMERIC_ENUM);
                netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_PRINT_NUMERIC_ENUM, snmp_object->enum_print);
                glob_snmp_object.quick_print = netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICK_PRINT);
                netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICK_PRINT, snmp_object->quick_print);
                glob_snmp_object.oid_output_format = netsnmp_ds_get_int(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_OID_OUTPUT_FORMAT);
                netsnmp_ds_set_int(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_OID_OUTPUT_FORMAT, snmp_object->oid_output_format);
-#else
-               glob_snmp_object.quick_print = snmp_get_quick_print();
-               snmp_set_quick_print(snmp_object->quick_print);
-#endif
        }
 
        if (objid_query.max_repetitions < 0) {
@@ -1466,13 +1432,9 @@ static void php_snmp(INTERNAL_FUNCTION_PARAMETERS, int st, int version)
        if (session_less_mode) {
                netsnmp_session_free(&session);
        } else {
-#ifdef HAVE_NET_SNMP
                netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_PRINT_NUMERIC_ENUM, glob_snmp_object.enum_print);
                netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICK_PRINT, glob_snmp_object.quick_print);
                netsnmp_ds_set_int(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_OID_OUTPUT_FORMAT, glob_snmp_object.oid_output_format);
-#else
-               snmp_set_quick_print(glob_snmp_object.quick_print);
-#endif
        }
 }
 /* }}} */
@@ -1525,11 +1487,7 @@ PHP_FUNCTION(snmp_get_quick_print)
                return;
        }
 
-#ifdef HAVE_NET_SNMP
        RETURN_BOOL(netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICK_PRINT));
-#else
-       RETURN_BOOL(snmp_get_quick_print());
-#endif
 }
 /* }}} */
 
@@ -1543,16 +1501,11 @@ PHP_FUNCTION(snmp_set_quick_print)
                RETURN_FALSE;
        }
 
-#ifdef HAVE_NET_SNMP
        netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICK_PRINT, (int)a1);
-#else
-       snmp_set_quick_print((int)a1);
-#endif
        RETURN_TRUE;
 }
 /* }}} */
 
-#ifdef HAVE_NET_SNMP
 /* {{{ proto bool snmp_set_enum_print(int enum_print)
    Return all values that are enums with their enum value instead of the raw integer */
 PHP_FUNCTION(snmp_set_enum_print)
@@ -1595,7 +1548,6 @@ PHP_FUNCTION(snmp_set_oid_output_format)
        }
 } 
 /* }}} */
-#endif
 
 /* {{{ proto mixed snmp2_get(string host, string community, mixed object_id [, int timeout [, int retries]]) 
    Fetch a SNMP object */
@@ -1787,13 +1739,9 @@ PHP_METHOD(snmp, open)
        }
        snmp_object->max_oids = 0;
        snmp_object->valueretrieval = SNMP_G(valueretrieval);
-#ifdef HAVE_NET_SNMP
        snmp_object->enum_print = netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_PRINT_NUMERIC_ENUM);
        snmp_object->oid_output_format = netsnmp_ds_get_int(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_OID_OUTPUT_FORMAT);
        snmp_object->quick_print = netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICK_PRINT);
-#else
-       snmp_object->quick_print = snmp_get_quick_print();
-#endif
 }
 /* }}} */
 
@@ -2165,7 +2113,6 @@ static int php_snmp_read_quick_print(php_snmp_object *snmp_object, zval **retval
 }
 /* }}} */
 
-#ifdef HAVE_NET_SNMP
 /* {{{ */
 static int php_snmp_read_enum_print(php_snmp_object *snmp_object, zval **retval TSRMLS_DC)
 {
@@ -2183,7 +2130,6 @@ static int php_snmp_read_oid_output_format(php_snmp_object *snmp_object, zval **
        return SUCCESS;
 }
 /* }}} */
-#endif
 
 /* {{{ */
 static int php_snmp_write_info(php_snmp_object *snmp_object, zval *newval TSRMLS_DC)
@@ -2278,7 +2224,6 @@ static int php_snmp_write_quick_print(php_snmp_object *snmp_object, zval *newval
 }
 /* }}} */
 
-#ifdef HAVE_NET_SNMP
 /* {{{ */
 static int php_snmp_write_enum_print(php_snmp_object *snmp_object, zval *newval TSRMLS_DC)
 {
@@ -2331,7 +2276,6 @@ static int php_snmp_write_oid_output_format(php_snmp_object *snmp_object, zval *
        }
        return ret;
 }
-#endif
 /* }}} */
 
 /* {{{ php_snmp_class_methods[] */
@@ -2359,10 +2303,8 @@ const php_snmp_prop_handler php_snmp_property_entries[] = {
        PHP_SNMP_PROPERTY_ENTRY_RECORD(max_oids),
        PHP_SNMP_PROPERTY_ENTRY_RECORD(valueretrieval),
        PHP_SNMP_PROPERTY_ENTRY_RECORD(quick_print),
-#ifdef HAVE_NET_SNMP
        PHP_SNMP_PROPERTY_ENTRY_RECORD(enum_print),
        PHP_SNMP_PROPERTY_ENTRY_RECORD(oid_output_format),
-#endif
        { NULL, 0, NULL, NULL}
 };
 /* }}} */
@@ -2406,14 +2348,12 @@ PHP_MINIT_FUNCTION(snmp)
        zend_hash_init(&php_snmp_properties, 0, NULL, NULL, 1);
        PHP_SNMP_ADD_PROPERTIES(&php_snmp_properties, php_snmp_property_entries);
 
-#ifdef HAVE_NET_SNMP
        REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_SUFFIX",        NETSNMP_OID_OUTPUT_SUFFIX,      CONST_CS | CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_MODULE",        NETSNMP_OID_OUTPUT_MODULE,      CONST_CS | CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_FULL",          NETSNMP_OID_OUTPUT_FULL,        CONST_CS | CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_NUMERIC",       NETSNMP_OID_OUTPUT_NUMERIC,     CONST_CS | CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_UCD",           NETSNMP_OID_OUTPUT_UCD,         CONST_CS | CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_NONE",          NETSNMP_OID_OUTPUT_NONE,        CONST_CS | CONST_PERSISTENT);
-#endif
 
        REGISTER_LONG_CONSTANT("SNMP_VALUE_LIBRARY",    SNMP_VALUE_LIBRARY,     CONST_CS | CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("SNMP_VALUE_PLAIN",      SNMP_VALUE_PLAIN,       CONST_CS | CONST_PERSISTENT);
@@ -2464,13 +2404,8 @@ PHP_MSHUTDOWN_FUNCTION(snmp)
 PHP_MINFO_FUNCTION(snmp)
 {
        php_info_print_table_start();
-#ifdef HAVE_NET_SNMP
        php_info_print_table_row(2, "NET-SNMP Support", "enabled");
        php_info_print_table_row(2, "NET-SNMP Version", netsnmp_get_version());
-#else
-       php_info_print_table_row(2, "UCD-SNMP Support", "enabled");
-       php_info_print_table_row(2, "UCD-SNMP Version", VersionInfo);
-#endif
        php_info_print_table_row(2, "PHP SNMP Version", PHP_SNMP_VERSION);
        php_info_print_table_end();
 }