Module: wine Branch: master Commit: 4f67d8233dbc15c36a76d0668203713e0a1602c1 URL: http://source.winehq.org/git/wine.git/?a=commit;h=4f67d8233dbc15c36a76d06682...
Author: Alexandre Julliard julliard@winehq.org Date: Tue Mar 10 17:11:44 2009 +0100
iphlpapi: Implemented AllocateAndGetIpForwardTableFromStack for Solaris.
---
dlls/iphlpapi/ipstats.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 files changed, 38 insertions(+), 0 deletions(-)
diff --git a/dlls/iphlpapi/ipstats.c b/dlls/iphlpapi/ipstats.c index 9a157cd..69f3376 100644 --- a/dlls/iphlpapi/ipstats.c +++ b/dlls/iphlpapi/ipstats.c @@ -1054,6 +1054,44 @@ DWORD WINAPI AllocateAndGetIpForwardTableFromStack(PMIB_IPFORWARDTABLE *ppIpForw } else ret = ERROR_NOT_SUPPORTED; } +#elif defined(HAVE_SYS_TIHDR_H) && defined(T_OPTMGMT_ACK) + { + void *data; + int fd, len, namelen; + mib2_ipRouteEntry_t *entry; + char name[64]; + + if ((fd = open_streams_mib( NULL )) != -1) + { + if ((data = read_mib_entry( fd, MIB2_IP, MIB2_IP_ROUTE, &len ))) + { + for (entry = data; (char *)(entry + 1) <= (char *)data + len; entry++) + { + row.dwForwardDest = entry->ipRouteDest; + row.dwForwardMask = entry->ipRouteMask; + row.dwForwardPolicy = 0; + row.dwForwardNextHop = entry->ipRouteNextHop; + row.dwForwardType = entry->ipRouteType; + row.dwForwardProto = entry->ipRouteProto; + row.dwForwardAge = entry->ipRouteAge; + row.dwForwardNextHopAS = 0; + row.dwForwardMetric1 = entry->ipRouteMetric1; + row.dwForwardMetric2 = entry->ipRouteMetric2; + row.dwForwardMetric3 = entry->ipRouteMetric3; + row.dwForwardMetric4 = entry->ipRouteMetric4; + row.dwForwardMetric5 = entry->ipRouteMetric5; + namelen = min( sizeof(name) - 1, entry->ipRouteIfIndex.o_length ); + memcpy( name, entry->ipRouteIfIndex.o_bytes, namelen ); + name[namelen] = 0; + getInterfaceIndexByName( name, &row.dwForwardIfIndex ); + if (!(table = append_ipforward_row( heap, flags, table, &count, &row ))) break; + } + HeapFree( GetProcessHeap(), 0, data ); + } + close( fd ); + } + else ret = ERROR_NOT_SUPPORTED; + } #elif defined(HAVE_SYS_SYSCTL_H) && defined(NET_RT_DUMP) { int mib[6] = {CTL_NET, PF_ROUTE, 0, PF_INET, NET_RT_DUMP, 0};