diff options
Diffstat (limited to 'net-analyzer/zabbix/files/2.0/patches/zbx282.patch')
-rw-r--r-- | net-analyzer/zabbix/files/2.0/patches/zbx282.patch | 182 |
1 files changed, 182 insertions, 0 deletions
diff --git a/net-analyzer/zabbix/files/2.0/patches/zbx282.patch b/net-analyzer/zabbix/files/2.0/patches/zbx282.patch new file mode 100644 index 000000000000..4f8ed94c2bd3 --- /dev/null +++ b/net-analyzer/zabbix/files/2.0/patches/zbx282.patch @@ -0,0 +1,182 @@ +--- configure.in 2013-02-12 04:27:27.000000000 -0700 ++++ configure.in 2013-05-03 07:59:46.318882346 -0600 +@@ -903,19 +903,32 @@ + AC_MSG_CHECKING([for the linux kernel version]) + + kernel=`uname -r` ++ kernel_major=`uname -r|cut -d. -f1` ++ kernel_minor=`uname -r|cut -d. -f2` + +- case "${kernel}" in +- 2.6.*) +- AC_MSG_RESULT([2.6 family (${kernel})]) +- AC_DEFINE([KERNEL_2_6], 1, [Define to 1 if you are using Linux 2.6.x]) +- ;; +- 2.4.*) +- AC_MSG_RESULT([2.4 family (${kernel})]) +- AC_DEFINE([KERNEL_2_4], 1, [Define to 1 if you are using Linux 2.4.x]) +- ;; +- *) +- AC_MSG_RESULT([unknown family (${kernel})]) +- ;; ++ case "${kernel_major}" in ++ 2) ++ case "${$kernel_minor}" in ++ 6) ++ AC_MSG_RESULT([Linux Kernel >= 2.6.x family (${kernel})]) ++ AC_DEFINE([KERNEL_2_6_Xplus], 1, [Define to 1 if you are using Linux >= 2.6.x]) ++ ;; ++ 4) ++ AC_MSG_RESULT([2.4 family (${kernel})]) ++ AC_DEFINE([KERNEL_2_4], 1, [Define to 1 if you are using Linux 2.4.x]) ++ ;; ++ esac ++ ;; ++ 1) ++ echo ++ ;; ++ 0) ++ echo ++ ;; ++ *) ++ AC_MSG_RESULT([Linux Kernel >= 2.6.x family (${kernel})]) ++ AC_DEFINE([KERNEL_2_6_Xplus], 1, [Define to 1 if you are using Linux >= 2.6.x]) ++ ;; + esac + fi + +--- include/config.h.in 2013-02-12 04:27:41.000000000 -0700 ++++ include/config.h.in 2013-05-03 07:47:39.658588709 -0600 +@@ -507,8 +507,8 @@ + /* Define to 1 if you are using Linux 2.4.x */ + #undef KERNEL_2_4 + +-/* Define to 1 if you are using Linux 2.6.x */ +-#undef KERNEL_2_6 ++/* Define to 1 if you are using Linux >= 2.6.x */ ++#undef KERNEL_2_6_Xplus + + /* Define to 1 if LDAP depricated functions is used. */ + #undef LDAP_DEPRECATED + +--- src/libs/zbxsysinfo/linux/sensors.c 2013-02-12 04:27:22.000000000 -0700 ++++ src/libs/zbxsysinfo/linux/sensors.c 2013-05-03 07:47:39.658588709 -0600 +@@ -20,14 +20,21 @@ + #include "common.h" + #include "sysinfo.h" + +-#ifdef KERNEL_2_4 ++#if defined(KERNEL_2_4) || defined(KERNEL_2_6_Xplus) + + #define DO_ONE 0 + #define DO_AVG 1 + #define DO_MAX 2 + #define DO_MIN 3 + ++#if defined(KERNEL_2_4) + #define DEVICE_DIR "/proc/sys/dev/sensors" ++#endif ++ ++#if defined(KERNEL_2_6_Xplus) ++#define DEVICE_DIR "/sys/class/hwmon" ++#define EXTRA "device" ++#endif + + static void count_sensor(int do_task, const char *filename, double *aggr, int *cnt) + { +@@ -46,9 +53,17 @@ + + zbx_fclose(f); + +- if (1 == sscanf(line, "%*f\t%*f\t%lf\n", &value)) ++#if defined(KERNEL_2_6_Xplus) ++ if (1 == sscanf(line, "%lf", &value)) ++#else ++ if (1 == sscanf(line, "%*lf\t%*lf\t%lf\n", &value)) ++#endif + { + (*cnt)++; ++#if defined(KERNEL_2_6_Xplus) ++ if(NULL == strstr(filename, "fan")) ++ value = value / 1000; ++#endif + + switch (do_task) + { +@@ -70,11 +85,35 @@ + + static void get_device_sensors(int do_task, const char *device, const char *name, double *aggr, int *cnt) + { ++#if defined(KERNEL_2_6_Xplus) ++ struct stat buffer; ++ int use_extra = 0; ++#endif + char sensorname[MAX_STRING_LEN]; ++ char sensortest[MAX_STRING_LEN]; ++ ++#if defined(KERNEL_2_6_Xplus) ++ zbx_snprintf(sensortest, sizeof(sensortest), "%s/%s/name", DEVICE_DIR, device); ++ if(stat(sensortest, &buffer) != 0) ++ { ++ zbx_snprintf(sensortest, sizeof(sensortest), "%s/%s/device/name", DEVICE_DIR, device); ++ if(stat(sensortest, &buffer) == 0) ++ { ++ use_extra = 1; ++ } ++ } ++#endif + + if (DO_ONE == do_task) + { ++#if defined(KERNEL_2_6_Xplus) ++ if(use_extra) ++ zbx_snprintf(sensorname, sizeof(sensorname), "%s/%s/%s/%s_input", DEVICE_DIR, device, EXTRA, name); ++ else ++ zbx_snprintf(sensorname, sizeof(sensorname), "%s/%s/%s_input", DEVICE_DIR, device, name); ++#else + zbx_snprintf(sensorname, sizeof(sensorname), "%s/%s/%s", DEVICE_DIR, device, name); ++#endif + count_sensor(do_task, sensorname, aggr, cnt); + } + else +@@ -94,7 +133,14 @@ + if (NULL == zbx_regexp_match(deviceent->d_name, device, NULL)) + continue; + ++#if defined(KERNEL_2_6_Xplus) ++ if(use_extra) ++ zbx_snprintf(devicename, sizeof(devicename), "%s/%s/%s", DEVICE_DIR, deviceent->d_name, EXTRA); ++ else ++ zbx_snprintf(devicename, sizeof(devicename), "%s/%s", DEVICE_DIR, deviceent->d_name); ++#else + zbx_snprintf(devicename, sizeof(devicename), "%s/%s", DEVICE_DIR, deviceent->d_name); ++#endif + + if (NULL == (sensordir = opendir(devicename))) + continue; +@@ -107,7 +153,19 @@ + if (NULL == zbx_regexp_match(sensorent->d_name, name, NULL)) + continue; + ++#if defined(KERNEL_2_6_Xplus) ++ if (0 != strcmp(sensorent->d_name + strlen(sensorent->d_name) - 6, "_input")) ++ continue; ++#endif ++ ++#if defined(KERNEL_2_6_Xplus) ++ if(use_extra) ++ zbx_snprintf(sensorname, sizeof(sensorname), "%s/%s/%s", devicename, sensorent->d_name, EXTRA); ++ else ++ zbx_snprintf(sensorname, sizeof(sensorname), "%s/%s", devicename, sensorent->d_name); ++#else + zbx_snprintf(sensorname, sizeof(sensorname), "%s/%s", devicename, sensorent->d_name); ++#endif + count_sensor(do_task, sensorname, aggr, cnt); + } + closedir(sensordir); +@@ -162,4 +220,4 @@ + return SYSINFO_RET_FAIL; + } + +-#endif /* KERNEL_2_4 */ ++#endif /* KERNEL_2_4 || KERNEL_2_6_Xplus */ |