=?UTF-8?Q?Andr=C3=A9=20Hentschel=20?=: iphlpapi: Check for the right TCP statistics structure name (for DragonFly BSD).

Alexandre Julliard julliard at winehq.org
Mon Jun 4 13:27:13 CDT 2012


Module: wine
Branch: master
Commit: eaab7a88f4e52b3630a21db183cea2a0d21e6fa5
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=eaab7a88f4e52b3630a21db183cea2a0d21e6fa5

Author: André Hentschel <nerv at dawncrow.de>
Date:   Sun Jun  3 14:32:20 2012 +0200

iphlpapi: Check for the right TCP statistics structure name (for DragonFly BSD).

---

 configure               |   28 ++++++++++++++++++++++++++++
 configure.ac            |   12 ++++++++++++
 dlls/iphlpapi/ipstats.c |    6 +++++-
 include/config.h.in     |    6 ++++++
 4 files changed, 51 insertions(+), 1 deletions(-)

diff --git a/configure b/configure
index 0add636..e8201d3 100755
--- a/configure
+++ b/configure
@@ -14086,6 +14086,34 @@ _ACEOF
 fi
 
 
+ac_fn_c_check_member "$LINENO" "struct tcpstat" "tcps_connattempt" "ac_cv_member_struct_tcpstat_tcps_connattempt" "#ifdef HAVE_NETINET_TCP_VAR_H
+#include <netinet/tcp_var.h>
+#endif
+"
+if test "x$ac_cv_member_struct_tcpstat_tcps_connattempt" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TCPSTAT_TCPS_CONNATTEMPT 1
+_ACEOF
+
+
+fi
+
+
+ac_fn_c_check_member "$LINENO" "struct tcp_stats" "tcps_connattempt" "ac_cv_member_struct_tcp_stats_tcps_connattempt" "#ifdef HAVE_NETINET_TCP_VAR_H
+#include <netinet/tcp_var.h>
+#endif
+"
+if test "x$ac_cv_member_struct_tcp_stats_tcps_connattempt" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TCP_STATS_TCPS_CONNATTEMPT 1
+_ACEOF
+
+
+fi
+
+
 ac_fn_c_check_member "$LINENO" "struct ifreq" "ifr_hwaddr" "ac_cv_member_struct_ifreq_ifr_hwaddr" "#ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
 #endif
diff --git a/configure.ac b/configure.ac
index d085459..d1acb72 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2324,6 +2324,18 @@ AC_CHECK_MEMBERS([struct ip_stats.ips_total],,,
 #include <netinet/ip_var.h>
 #endif])
 
+dnl Check for struct tcpstat
+AC_CHECK_MEMBERS([struct tcpstat.tcps_connattempt],,,
+[#ifdef HAVE_NETINET_TCP_VAR_H
+#include <netinet/tcp_var.h>
+#endif])
+
+dnl Check for struct tcp_stats
+AC_CHECK_MEMBERS([struct tcp_stats.tcps_connattempt],,,
+[#ifdef HAVE_NETINET_TCP_VAR_H
+#include <netinet/tcp_var.h>
+#endif])
+
 dnl Check for struct ifreq.ifr_hwaddr
 AC_CHECK_MEMBERS([struct ifreq.ifr_hwaddr],,,
 [#ifdef HAVE_SYS_TYPES_H
diff --git a/dlls/iphlpapi/ipstats.c b/dlls/iphlpapi/ipstats.c
index 9b4b76b..41cb779 100644
--- a/dlls/iphlpapi/ipstats.c
+++ b/dlls/iphlpapi/ipstats.c
@@ -812,7 +812,7 @@ DWORD WINAPI GetTcpStatistics(PMIB_TCPSTATS stats)
         }
         if (kc) kstat_close( kc );
     }
-#elif defined(HAVE_SYS_SYSCTL_H) && defined(UDPCTL_STATS)
+#elif defined(HAVE_SYS_SYSCTL_H) && defined(TCPCTL_STATS) && (HAVE_STRUCT_TCPSTAT_TCPS_CONNATTEMPT || HAVE_STRUCT_TCP_STATS_TCPS_CONNATTEMPT)
     {
 #ifndef TCPTV_MIN  /* got removed in Mac OS X for some reason */
 #define TCPTV_MIN 2
@@ -821,7 +821,11 @@ DWORD WINAPI GetTcpStatistics(PMIB_TCPSTATS stats)
         int mib[] = {CTL_NET, PF_INET, IPPROTO_TCP, TCPCTL_STATS};
 #define MIB_LEN (sizeof(mib) / sizeof(mib[0]))
 #define hz 1000
+#if HAVE_STRUCT_TCPSTAT_TCPS_CONNATTEMPT
         struct tcpstat tcp_stat;
+#elif HAVE_STRUCT_TCP_STATS_TCPS_CONNATTEMPT
+        struct tcp_stats tcp_stat;
+#endif
         size_t needed = sizeof(tcp_stat);
 
         if(sysctl(mib, MIB_LEN, &tcp_stat, &needed, NULL, 0) != -1)
diff --git a/include/config.h.in b/include/config.h.in
index bdcb199..c4b67a0 100644
--- a/include/config.h.in
+++ b/include/config.h.in
@@ -857,6 +857,12 @@
 /* Define to 1 if `st_mtim' is a member of `struct stat'. */
 #undef HAVE_STRUCT_STAT_ST_MTIM
 
+/* Define to 1 if `tcps_connattempt' is a member of `struct tcpstat'. */
+#undef HAVE_STRUCT_TCPSTAT_TCPS_CONNATTEMPT
+
+/* Define to 1 if `tcps_connattempt' is a member of `struct tcp_stats'. */
+#undef HAVE_STRUCT_TCP_STATS_TCPS_CONNATTEMPT
+
 /* Define to 1 if the system has the type `struct xinpgen'. */
 #undef HAVE_STRUCT_XINPGEN
 




More information about the wine-cvs mailing list