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

Reply via email to