After a few hours of debugging why I could not talk to IPMI
using the LAN driver under Solaris I found that MAXHOSTNAMELEN
is defined in Sun's netdb.h header.
Worse, it is defined differently by FreeIPMI, this means that
all the ipmi_ctx.io.outofband member addresses after hostname
are shifted when the ctx is passed from ipmi-chassis to routines
in libfreeipmi.
I have attached a patch which checks for MAXHOSTNAMELEN in
netdb.h and if found will include netdb.h before defining
MAXHOSTNAMELEN. Also it fixes a little Solaris problem finding
the m4 files during auto(re)conf.
Andrew Wansink
diff -up freeipmi-0.8.2/common/src/miscutil/hostlist.c.orig freeipmi-0.8.2/common/src/miscutil/hostlist.c
--- freeipmi-0.8.2/common/src/miscutil/hostlist.c.orig 2010-01-18 10:59:26.000000000 +1100
+++ freeipmi-0.8.2/common/src/miscutil/hostlist.c 2010-01-18 10:47:27.000000000 +1100
@@ -103,6 +103,10 @@
/* max number of ranges that will be processed between brackets */
#define MAX_RANGES 10240 /* 10K Ranges */
+#if NETDB_HAS_MAXHOSTNAMELEN
+#include <netdb.h>
+#endif
+
/* size of internal hostname buffer (+ some slop), hostnames will probably
* be truncated if longer than MAXHOSTNAMELEN */
#ifndef MAXHOSTNAMELEN
diff -up freeipmi-0.8.2/common/src/pingtool/ping-tool-common.c.orig freeipmi-0.8.2/common/src/pingtool/ping-tool-common.c
--- freeipmi-0.8.2/common/src/pingtool/ping-tool-common.c.orig 2010-01-18 10:59:53.000000000 +1100
+++ freeipmi-0.8.2/common/src/pingtool/ping-tool-common.c 2010-01-18 10:47:27.000000000 +1100
@@ -79,6 +79,10 @@
#define INET_ADDRSTRLEN 16
#endif
+#if NETDB_HAS_MAXHOSTNAMELEN
+#include <netdb.h>
+#endif
+
#ifndef MAXHOSTNAMELEN
#define MAXHOSTNAMELEN 64
#endif
diff -up freeipmi-0.8.2/common/src/toolsdr/tool-sdr-cache-common.c.orig freeipmi-0.8.2/common/src/toolsdr/tool-sdr-cache-common.c
--- freeipmi-0.8.2/common/src/toolsdr/tool-sdr-cache-common.c.orig 2010-01-18 11:00:15.000000000 +1100
+++ freeipmi-0.8.2/common/src/toolsdr/tool-sdr-cache-common.c 2010-01-18 10:47:27.000000000 +1100
@@ -41,6 +41,10 @@
#define SDR_CACHE_FILENAME_PREFIX "sdr-cache"
#define FREEIPMI_CONFIG_DIRECTORY_MODE 0700
+#if NETDB_HAS_MAXHOSTNAMELEN
+#include <netdb.h>
+#endif
+
#ifndef MAXHOSTNAMELEN
#define MAXHOSTNAMELEN 64
#endif /* MAXHOSTNAMELEN */
diff -up freeipmi-0.8.2/configure.ac.orig freeipmi-0.8.2/configure.ac
--- freeipmi-0.8.2/configure.ac.orig 2010-01-18 10:46:41.000000000 +1100
+++ freeipmi-0.8.2/configure.ac 2010-01-18 10:46:50.000000000 +1100
@@ -603,6 +603,10 @@ fi
AM_CONDITIONAL(WITH_FREEIPMI_ARGP, test "$have_argp" = "no")
+AC_TRY_COMPILE([#include <netdb.h>],
+ [printf("%d\n", MAXHOSTNAMELEN);],
+ [AC_DEFINE([NETDB_HAS_MAXHOSTNAMELEN], [1], [Define is MAXHOSTNAMELEN is in netdb.h])])
+
AC_TRY_COMPILE([#include <stdlib.h>],
[printf("%s\n", __FUNCTION__);],
[AC_DEFINE([HAVE_FUNCTION_MACRO], [1], [Define is you have __FUNCTION__])])
diff -up freeipmi-0.8.2/ipmiconsole/src/libipmiconsole/ipmiconsole_defs.h.orig freeipmi-0.8.2/ipmiconsole/src/libipmiconsole/ipmiconsole_defs.h
--- freeipmi-0.8.2/ipmiconsole/src/libipmiconsole/ipmiconsole_defs.h.orig 2010-01-18 11:00:50.000000000 +1100
+++ freeipmi-0.8.2/ipmiconsole/src/libipmiconsole/ipmiconsole_defs.h 2010-01-18 10:46:47.000000000 +1100
@@ -53,6 +53,10 @@
#ifndef _IPMICONSOLE_DEFS_H
#define _IPMICONSOLE_DEFS_H
+#if NETDB_HAS_MAXHOSTNAMELEN
+#include <netdb.h>
+#endif
+
#ifndef MAXHOSTNAMELEN
#define MAXHOSTNAMELEN 64
#endif /* MAXHOSTNAMELEN */
diff -up freeipmi-0.8.2/ipmidetect/src/ipmidetectd/ipmidetectd.h.orig freeipmi-0.8.2/ipmidetect/src/ipmidetectd/ipmidetectd.h
--- freeipmi-0.8.2/ipmidetect/src/ipmidetectd/ipmidetectd.h.orig 2010-01-18 11:01:17.000000000 +1100
+++ freeipmi-0.8.2/ipmidetect/src/ipmidetectd/ipmidetectd.h 2010-01-18 10:46:45.000000000 +1100
@@ -33,6 +33,10 @@
#include <limits.h>
+#if NETDB_HAS_MAXHOSTNAMELEN
+#include <netdb.h>
+#endif
+
#ifndef MAXHOSTNAMELEN
#define MAXHOSTNAMELEN 64
#endif /* MAXHOSTNAMELEN */
diff -up freeipmi-0.8.2/ipmimonitoring/src/libipmimonitoring/ipmi_monitoring_defs.h.orig freeipmi-0.8.2/ipmimonitoring/src/libipmimonitoring/ipmi_monitoring_defs.h
--- freeipmi-0.8.2/ipmimonitoring/src/libipmimonitoring/ipmi_monitoring_defs.h.orig 2010-01-18 11:01:49.000000000 +1100
+++ freeipmi-0.8.2/ipmimonitoring/src/libipmimonitoring/ipmi_monitoring_defs.h 2010-01-18 10:47:19.000000000 +1100
@@ -35,6 +35,10 @@
#include "list.h"
+#if NETDB_HAS_MAXHOSTNAMELEN
+#include <netdb.h>
+#endif
+
#ifndef MAXHOSTNAMELEN
#define MAXHOSTNAMELEN 64
#endif /* MAXHOSTNAMELEN */
diff -up freeipmi-0.8.2/ipmipower/src/ipmipower.h.orig freeipmi-0.8.2/ipmipower/src/ipmipower.h
--- freeipmi-0.8.2/ipmipower/src/ipmipower.h.orig 2010-01-18 11:02:07.000000000 +1100
+++ freeipmi-0.8.2/ipmipower/src/ipmipower.h 2010-01-18 10:46:46.000000000 +1100
@@ -53,6 +53,10 @@
#include "ipmidetect.h"
+#if NETDB_HAS_MAXHOSTNAMELEN
+#include <netdb.h>
+#endif
+
#ifndef MAXHOSTNAMELEN
#define MAXHOSTNAMELEN 64
#endif /* MAXHOSTNAMELEN */
diff -up freeipmi-0.8.2/libfreeipmi/src/api/ipmi-api-defs.h.orig freeipmi-0.8.2/libfreeipmi/src/api/ipmi-api-defs.h
--- freeipmi-0.8.2/libfreeipmi/src/api/ipmi-api-defs.h.orig 2010-01-18 10:47:00.000000000 +1100
+++ freeipmi-0.8.2/libfreeipmi/src/api/ipmi-api-defs.h 2010-01-18 10:47:01.000000000 +1100
@@ -24,6 +24,7 @@
#include <config.h>
#endif /* HAVE_CONFIG_H */
+#include <netdb.h>
#include <stdint.h>
#include <netinet/in.h>
#include <sys/param.h>
diff -up freeipmi-0.8.2/Makefile.am.orig freeipmi-0.8.2/Makefile.am
--- freeipmi-0.8.2/Makefile.am.orig 2010-01-18 10:57:33.000000000 +1100
+++ freeipmi-0.8.2/Makefile.am 2010-01-18 10:47:22.000000000 +1100
@@ -1,3 +1,4 @@
+ACLOCAL_AMFLAGS = -Iconfig
SUBDIRS = \
doc \
etc \
_______________________________________________
Freeipmi-devel mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/freeipmi-devel