diff --git a/configure.ac b/configure.ac index bbb655b0..4c3c7778 100644 --- a/configure.ac +++ b/configure.ac @@ -85,6 +85,7 @@ AC_CHECK_HEADERS([ \ linux/serial.h \ netdb.h \ netinet/in.h \ + netinet/ip.h \ netinet/tcp.h \ sys/ioctl.h \ sys/params.h \ @@ -104,7 +105,7 @@ AC_CHECK_DECLS([__CYGWIN__]) AC_SEARCH_LIBS(accept, network socket) # Checks for library functions. -AC_CHECK_FUNCS([accept4 getaddrinfo gettimeofday inet_pton inet_ntop select socket strerror strlcpy]) +AC_CHECK_FUNCS([accept4 gai_strerror getaddrinfo gettimeofday inet_pton inet_ntop select socket strerror strlcpy]) # Required for MinGW with GCC v4.8.1 on Win7 AC_DEFINE(WINVER, 0x0501, _) diff --git a/src/modbus-tcp.c b/src/modbus-tcp.c index 0c571097..a1f36908 100644 --- a/src/modbus-tcp.c +++ b/src/modbus-tcp.c @@ -41,7 +41,9 @@ #endif # include +#ifdef HAVE_NETINET_IP_H # include +#endif # include # include # include @@ -401,7 +403,11 @@ static int _modbus_tcp_pi_connect(modbus_t *ctx) rc = getaddrinfo(ctx_tcp_pi->node, ctx_tcp_pi->service, &ai_hints, &ai_list); if (rc != 0) { if (ctx->debug) { +#ifdef HAVE_GAI_STRERROR fprintf(stderr, "Error returned by getaddrinfo: %s\n", gai_strerror(rc)); +#else + fprintf(stderr, "Error returned by getaddrinfo: %d\n", rc); +#endif } freeaddrinfo(ai_list); errno = ECONNREFUSED; @@ -627,7 +633,11 @@ int modbus_tcp_pi_listen(modbus_t *ctx, int nb_connection) rc = getaddrinfo(node, service, &ai_hints, &ai_list); if (rc != 0) { if (ctx->debug) { +#ifdef HAVE_GAI_STRERROR fprintf(stderr, "Error returned by getaddrinfo: %s\n", gai_strerror(rc)); +#else + fprintf(stderr, "Error returned by getaddrinfo: %d\n", rc); +#endif } freeaddrinfo(ai_list); errno = ECONNREFUSED;