diff --git a/dlls/iphlpapi/iphlpapi.spec b/dlls/iphlpapi/iphlpapi.spec index c51b58bbd10..fcb6d72fc98 100644 --- a/dlls/iphlpapi/iphlpapi.spec +++ b/dlls/iphlpapi/iphlpapi.spec @@ -46,7 +46,7 @@ #@ stub CreatePersistentTcpPortReservation #@ stub CreatePersistentUdpPortReservation @ stdcall CreateProxyArpEntry( long long long ) -#@ stub CreateSortedAddressPairs +@ stdcall CreateSortedAddressPairs( ptr long ptr long long ptr ptr ) #@ stub CreateUnicastIpAddressEntry #@ stub DeleteAnycastIpAddressEntry @ stdcall DeleteIPAddress( long ) diff --git a/dlls/iphlpapi/iphlpapi_main.c b/dlls/iphlpapi/iphlpapi_main.c index c06b69feb42..f04e12a19a2 100644 --- a/dlls/iphlpapi/iphlpapi_main.c +++ b/dlls/iphlpapi/iphlpapi_main.c @@ -279,6 +279,28 @@ DWORD WINAPI CreateProxyArpEntry(DWORD dwAddress, DWORD dwMask, DWORD dwIfIndex) } +/****************************************************************** + * CreateSortedAddressPairs (IPHLPAPI.@) + */ +DWORD WINAPI CreateSortedAddressPairs(const PSOCKADDR_IN6 source, DWORD sourcecount, + const PSOCKADDR_IN6 destination, DWORD destinationcount, + DWORD sortoptions, + PSOCKADDR_IN6_PAIR *sortedaddr, DWORD *sortedcount) +{ + FIXME("(source %p, sourcecount %d, destination %p, destcount %d, sortoptions %x," + " sortedaddr %p, sortedcount %p): stub\n", source, sourcecount, destination, + destinationcount, sortoptions, sortedaddr, sortedcount); + + if (source || sourcecount || !destination || !sortedaddr || !sortedcount || destinationcount > 500) + return ERROR_INVALID_PARAMETER; + + /* Returning not supported tells the client we don't have IPv6 support + * so applications can fallback to IPv4. + */ + return ERROR_NOT_SUPPORTED; +} + + /****************************************************************** * DeleteIPAddress (IPHLPAPI.@) * diff --git a/include/ws2ipdef.h b/include/ws2ipdef.h index ea8db3d5d4d..ca47caaab23 100644 --- a/include/ws2ipdef.h +++ b/include/ws2ipdef.h @@ -129,6 +129,12 @@ typedef struct WS(sockaddr_in6) ULONG sin6_scope_id; } SOCKADDR_IN6,*PSOCKADDR_IN6, *LPSOCKADDR_IN6; +typedef struct WS(sockaddr_in6_pair) +{ + PSOCKADDR_IN6 SourceAddress; + PSOCKADDR_IN6 DestinationAddress; +} SOCKADDR_IN6_PAIR, *PSOCKADDR_IN6_PAIR; + /* * Multicast group information */