Alexandre Julliard : iphlpapi: Implemented GetIpStatistics for Solaris.

Alexandre Julliard julliard at winehq.org
Fri Mar 6 09:49:29 CST 2009


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Thu Mar  5 19:25:36 2009 +0100

iphlpapi: Implemented GetIpStatistics for Solaris.

---

 dlls/iphlpapi/ipstats.c |   35 +++++++++++++++++++++++++++++++++++
 1 files changed, 35 insertions(+), 0 deletions(-)

diff --git a/dlls/iphlpapi/ipstats.c b/dlls/iphlpapi/ipstats.c
index 888f95f..e8e8781 100644
--- a/dlls/iphlpapi/ipstats.c
+++ b/dlls/iphlpapi/ipstats.c
@@ -495,6 +495,41 @@ DWORD WINAPI GetIpStatistics(PMIB_IPSTATS stats)
             ret = NO_ERROR;
         }
     }
+#elif defined(HAVE_LIBKSTAT)
+    {
+        static char ip[] = "ip";
+        kstat_ctl_t *kc;
+        kstat_t *ksp;
+
+        if ((kc = kstat_open()) &&
+            (ksp = kstat_lookup( kc, ip, 0, ip )) &&
+            kstat_read( kc, ksp, NULL ) != -1 &&
+            ksp->ks_type == KSTAT_TYPE_NAMED)
+        {
+            stats->dwForwarding      = kstat_get_ui32( ksp, "forwarding" );
+            stats->dwDefaultTTL      = kstat_get_ui32( ksp, "defaultTTL" );
+            stats->dwInReceives      = kstat_get_ui32( ksp, "inReceives" );
+            stats->dwInHdrErrors     = kstat_get_ui32( ksp, "inHdrErrors" );
+            stats->dwInAddrErrors    = kstat_get_ui32( ksp, "inAddrErrors" );
+            stats->dwForwDatagrams   = kstat_get_ui32( ksp, "forwDatagrams" );
+            stats->dwInUnknownProtos = kstat_get_ui32( ksp, "inUnknownProtos" );
+            stats->dwInDiscards      = kstat_get_ui32( ksp, "inDiscards" );
+            stats->dwInDelivers      = kstat_get_ui32( ksp, "inDelivers" );
+            stats->dwOutRequests     = kstat_get_ui32( ksp, "outRequests" );
+            stats->dwRoutingDiscards = kstat_get_ui32( ksp, "routingDiscards" );
+            stats->dwOutDiscards     = kstat_get_ui32( ksp, "outDiscards" );
+            stats->dwOutNoRoutes     = kstat_get_ui32( ksp, "outNoRoutes" );
+            stats->dwReasmTimeout    = kstat_get_ui32( ksp, "reasmTimeout" );
+            stats->dwReasmReqds      = kstat_get_ui32( ksp, "reasmReqds" );
+            stats->dwReasmOks        = kstat_get_ui32( ksp, "reasmOKs" );
+            stats->dwReasmFails      = kstat_get_ui32( ksp, "reasmFails" );
+            stats->dwFragOks         = kstat_get_ui32( ksp, "fragOKs" );
+            stats->dwFragFails       = kstat_get_ui32( ksp, "fragFails" );
+            stats->dwFragCreates     = kstat_get_ui32( ksp, "fragCreates" );
+            ret = NO_ERROR;
+        }
+        if (kc) kstat_close( kc );
+    }
 #elif defined(HAVE_SYS_SYSCTL_H) && defined(IPCTL_STATS)
     {
         int mib[] = {CTL_NET, PF_INET, IPPROTO_IP, IPCTL_STATS};




More information about the wine-cvs mailing list