* @author LRN
*/
#define INITGUID
+#include <ws2tcpip.h>
#include <windows.h>
#include <nspapi.h>
#include <ws2spi.h>
#include <nspapi.h>
-#include <ws2tcpip.h>
#include "gnunet_w32nsp_lib.h"
#include <stdio.h>
typedef int (WSPAPI *LPNSPSTARTUP) (LPGUID lpProviderId, LPNSP_ROUTINE lpnspRoutines);
GUID host = {0x0002a800,0,0,{ 0xC0,0,0,0,0,0,0,0x46 }};
-GUID ip4 = {0x00090035,0,1,{ 0xc0,0,0,0,0,0,0,0x046}};
+GUID ip4 = {0x00090035,0,1,{ 0xc0,0,0,0,0,0,0,0x046}};
GUID ip6 = {0x00090035,0,0x001c, { 0xc0,0,0,0,0,0,0,0x046}};
DEFINE_GUID(W32_DNS, 0x22059D40, 0x7E9E, 0x11CF, 0xAE, 0x5A, 0x00, 0xAA, 0x00, 0xA7, 0x11, 0x2B);
// to convert structures returned as BLOBs.
//
-VOID
+VOID
FixList(PCHAR ** List, PCHAR Base)
{
if(*List)
// Routine to convert a hostent returned in a BLOB to one with
// usable pointers. The structure is converted in-place.
//
-VOID
+VOID
UnpackHostEnt(struct hostent * hostent)
{
PCHAR pch;
int ret;
int r = 1;
WSADATA wsd;
- GUID *prov = NULL;
- GUID *sc = NULL;
+ GUID prov;
+ GUID sc;
wchar_t *cmdl;
int wargc;
wchar_t **wargv;
if (wargc == 5)
{
if (wcscmp (wargv[1], L"A") == 0)
- sc = &SVCID_DNS_TYPE_A;
+ sc = SVCID_DNS_TYPE_A;
else if (wcscmp (wargv[1], L"AAAA") == 0)
- sc = &SVCID_DNS_TYPE_AAAA;
+ sc = SVCID_DNS_TYPE_AAAA;
else if (wcscmp (wargv[1], L"name") == 0)
- sc = &SVCID_HOSTNAME;
+ sc = SVCID_HOSTNAME;
else if (wcscmp (wargv[1], L"addr") == 0)
- sc = &SVCID_INET_HOSTADDRBYNAME;
+ sc = SVCID_INET_HOSTADDRBYNAME;
else
wargc -= 1;
if (wcscmp (wargv[4], L"mswdns") == 0)
- prov = &W32_DNS;
+ prov = W32_DNS;
else if (wcscmp (wargv[4], L"gnunetdns") == 0)
- prov = &GNUNET_NAMESPACE_PROVIDER_DNS;
+ prov = GNUNET_NAMESPACE_PROVIDER_DNS;
else
wargc -= 1;
}
if (wargc == 5)
{
HMODULE nsp;
-
+
nsp = LoadLibraryW (wargv[3]);
if (nsp == NULL)
{
if (startup != NULL)
{
NSP_ROUTINE api;
- ret = startup (prov, &api);
+ ret = startup (&prov, &api);
if (NO_ERROR != ret)
fprintf (stderr, "startup failed\n");
else
memset (&search, 0, sizeof (search));
search.dwSize = sizeof (search);
search.lpszServiceInstanceName = (wcscmp (wargv[2], L" ") == 0) ? NULL : wargv[2];
- search.lpServiceClassId = sc;
- search.lpNSProviderId = prov;
+ search.lpServiceClassId = ≻
+ search.lpNSProviderId = &prov;
search.dwNameSpace = NS_ALL;
- ret = api.NSPLookupServiceBegin (prov, &search, NULL, LUP_RETURN_ALL, &lookup);
+ ret = api.NSPLookupServiceBegin (&prov, &search, NULL, LUP_RETURN_ALL, &lookup);
if (ret != NO_ERROR)
{
fprintf (stderr, "lookup start failed\n");
if (ret != NO_ERROR)
printf ("NSPLookupServiceEnd() failed: %lu\n", GetLastError ());
}
- api.NSPCleanup (prov);
+ api.NSPCleanup (&prov);
}
}
FreeLibrary (nsp);