1
0
mirror of https://git.FreeBSD.org/ports.git synced 2025-01-30 10:38:37 +00:00
freebsd-ports/sysutils/ipmitool/files/freeipmi-support.patch
Martin Wilke 03fd71899c - Add support for latest sysutils/freeipmi update
PR:		118720
Submitted by:	Dmitry Frolov <frolov@riss-telecom.ru> (maintainer)
2007-12-15 17:50:35 +00:00

190 lines
6.6 KiB
Diff

diff -u -ruN ../ipmitool-1.8.9/configure.in ./configure.in
--- ../ipmitool-1.8.9/configure.in Wed Mar 7 04:15:35 2007
+++ ./configure.in Sat Dec 15 19:22:10 2007
@@ -239,7 +239,7 @@
fi
if test "x$enable_intf_free" = "xyes"; then
dnl Determine if you got the right FreeIPMI version
- AC_MSG_CHECKING([for good libfreeipmi version])
+ AC_MSG_CHECKING([for libfreeipmi version 0.3.0])
AC_TRY_COMPILE([
#include <sys/types.h> /* For size_t */
#include <stdio.h> /* For NULL */
@@ -253,13 +253,65 @@
0,
NULL,
0);
- ], ac_free_version_good=yes,ac_free_version_good=no)
- AC_MSG_RESULT($ac_free_version_good)
- if test "x$ac_free_version_good" = "xyes"; then
+ ], ac_free_version_0_3_0=yes,ac_free_version_0_3_0=no)
+ AC_MSG_RESULT($ac_free_version_0_3_0)
+ AC_MSG_CHECKING([for libfreeipmi version 0.4.0])
+ AC_TRY_COMPILE([
+#include <sys/types.h> /* For size_t */
+#include <stdio.h> /* For NULL */
+#include <freeipmi/freeipmi.h>
+#include <freeipmi/udm/ipmi-udm.h>
+ ], [
+ ipmi_device_t dev = NULL;
+ int rv;
+ dev = ipmi_device_create();
+ rv = ipmi_open_inband(dev,
+ IPMI_DEVICE_KCS,
+ 0,
+ 0,
+ 0,
+ NULL,
+ 0);
+ ], ac_free_version_0_4_0=yes,ac_free_version_0_4_0=no)
+ AC_MSG_RESULT($ac_free_version_0_4_0)
+
+ AC_MSG_CHECKING([for libfreeipmi version 0.5.0])
+ AC_TRY_COMPILE([
+#include <sys/types.h> /* For size_t */
+#include <stdio.h> /* For NULL */
+#include <freeipmi/freeipmi.h>
+#include <freeipmi/udm/ipmi-udm.h>
+ ], [
+ ipmi_device_t dev = NULL;
+ int rv;
+ dev = ipmi_device_create();
+ rv = ipmi_open_inband(dev,
+ IPMI_DEVICE_KCS,
+ 0,
+ 0,
+ 0,
+ NULL,
+ 0,
+ 0);
+ ], ac_free_version_0_5_0=yes,ac_free_version_0_5_0=no)
+ AC_MSG_RESULT($ac_free_version_0_5_0)
+
+ if test "x$ac_free_version_0_3_0" = "xyes" \
+ || test "x$ac_free_version_0_4_0" = "xyes" \
+ || test "x$ac_free_version_0_5_0" = "xyes"; then
AC_DEFINE(IPMI_INTF_FREE, [1], [Define to 1 to enable FreeIPMI interface.])
AC_SUBST(INTF_FREE, [free])
AC_SUBST(INTF_FREE_LIB, [libintf_free.la])
IPMITOOL_INTF_LIB="$IPMITOOL_INTF_LIB free/libintf_free.la"
+ if test "x$ac_free_version_0_3_0" = "xyes"; then
+ AC_DEFINE(IPMI_INTF_FREE_VERSION_0_3_0, [1], [Define to 1 for FreeIPMI 0.3.0.])
+ fi
+ if test "x$ac_free_version_0_4_0" = "xyes"; then
+ AC_DEFINE(IPMI_INTF_FREE_VERSION_0_4_0, [1], [Define to 1 for FreeIPMI 0.4.0.])
+ fi
+ if test "x$ac_free_version_0_5_0" = "xyes"; then
+ AC_DEFINE(IPMI_INTF_FREE_VERSION_0_5_0, [1], [Define to 1 for FreeIPMI 0.5.0.])
+ fi
else
enable_intf_free=no
fi
diff -u -ruN ../ipmitool-1.8.9/src/plugins/free/free.c ./src/plugins/free/free.c
--- ../ipmitool-1.8.9/src/plugins/free/free.c Fri Feb 23 00:17:46 2007
+++ ./src/plugins/free/free.c Sat Dec 15 19:22:10 2007
@@ -58,6 +58,7 @@
return -1;
}
+#if IPMI_INTF_FREE_VERSION_0_3_0
if (!(dev = ipmi_open_inband (IPMI_DEVICE_KCS,
0,
0,
@@ -74,19 +75,80 @@
goto cleanup;
}
}
+#elif IPMI_INTF_FREE_VERSION_0_4_0
+ if (!(dev = ipmi_device_create())) {
+ perror("ipmi_open_inband()");
+ goto cleanup;
+ }
+ if (ipmi_open_inband (dev,
+ IPMI_DEVICE_KCS,
+ 0,
+ 0,
+ 0,
+ NULL,
+ IPMI_FLAGS_DEFAULT) < 0) {
+ if (ipmi_open_inband (dev,
+ IPMI_DEVICE_SSIF,
+ 0,
+ 0,
+ 0,
+ NULL,
+ IPMI_FLAGS_DEFAULT) < 0) {
+ fprintf(stderr,
+ "ipmi_open_inband(): %s\n",
+ ipmi_device_strerror(ipmi_device_errnum(dev)));
+ goto cleanup;
+ }
+ }
+#elif IPMI_INTF_FREE_VERSION_0_5_0
+ if (!(dev = ipmi_device_create())) {
+ perror("ipmi_open_inband()");
+ goto cleanup;
+ }
+ if (ipmi_open_inband (dev,
+ IPMI_DEVICE_KCS,
+ 0,
+ 0,
+ 0,
+ NULL,
+ 0,
+ IPMI_FLAGS_DEFAULT) < 0) {
+ if (ipmi_open_inband (dev,
+ IPMI_DEVICE_SSIF,
+ 0,
+ 0,
+ 0,
+ NULL,
+ 0,
+ IPMI_FLAGS_DEFAULT) < 0) {
+ fprintf(stderr,
+ "ipmi_open_inband(): %s\n",
+ ipmi_device_strerror(ipmi_device_errnum(dev)));
+ goto cleanup;
+ }
+ }
+#endif
intf->opened = 1;
return 0;
cleanup:
- if (dev)
+ if (dev) {
ipmi_close_device(dev);
+#if IPMI_INTF_FREE_VERSION_0_4_0
+ ipmi_device_destroy(dev);
+#endif
+ }
return -1;
}
static void ipmi_free_close(struct ipmi_intf * intf)
{
- if (dev)
+ if (dev) {
ipmi_close_device(dev);
+#if IPMI_INTF_FREE_VERSION_0_4_0
+ ipmi_device_destroy(dev);
+#endif
+ }
intf->opened = 0;
}
@@ -132,7 +194,13 @@
req->msg.data_len + 1,
rs_buf,
rs_buf_len)) < 0) {
+#if IPMI_INTF_FREE_VERSION_0_3_0
perror("ipmi_cmd_raw");
+#elif IPMI_INTF_FREE_VERSION_0_4_0
+ fprintf(stderr,
+ "ipmi_cmd_raw: %s\n",
+ ipmi_device_strerror(ipmi_device_errnum(dev)));
+#endif
return NULL;
}