/*
This file is part of GNUnet.
- (C) 2012 Christian Grothoff (and other contributing authors)
+ Copyright (C) 2012 GNUnet e.V.
GNUnet is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
You should have received a copy of the GNU General Public License
along with GNUnet; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
*/
/**
* @file gns/w32nsp-resolve.c
* @brief W32 integration for GNS
* @author LRN
*/
-#define INITGUID
#include <ws2tcpip.h>
#include <windows.h>
#include <nspapi.h>
#include <ws2spi.h>
#include <nspapi.h>
+#include <initguid.h>
#include "gnunet_w32nsp_lib.h"
#include <stdio.h>
else
wargc -= 1;
}
+ else if (wargc == 3)
+ {
+ }
else
{
fprintf (stderr, "Usage: %S <record type> <service name> <NSP library path> <NSP id>\n"
FreeLibrary (nsp);
}
}
+ else if (wargc == 3)
+ {
+ int s;
+ ADDRINFOW hints;
+ ADDRINFOW *result;
+ ADDRINFOW *pos;
+
+ memset (&hints, 0, sizeof (struct addrinfo));
+ hints.ai_family = AF_UNSPEC;
+ hints.ai_socktype = SOCK_STREAM;
+
+ if (0 != (s = GetAddrInfoW (wargv[2], NULL, &hints, &result)))
+ {
+ fprintf (stderr, "Cound not resolve `%S' using GetAddrInfoW: %lu\n",
+ wargv[2], GetLastError ());
+ }
+ else
+ {
+ for (pos = result; pos != NULL; pos = pos->ai_next)
+ {
+ wchar_t tmpbuf[1024];
+ DWORD buflen = 1024;
+ if (0 == WSAAddressToStringW (pos->ai_addr, pos->ai_addrlen, NULL, tmpbuf, &buflen))
+ fprintf (stderr, "Result:\n"
+ " flags: 0x%X\n"
+ " family: 0x%X\n"
+ " socktype: 0x%X\n"
+ " protocol: 0x%X\n"
+ " addrlen: %u\n"
+ " addr: %S\n"
+ " canonname: %S\n",
+ pos->ai_flags,
+ pos->ai_family,
+ pos->ai_socktype,
+ pos->ai_protocol,
+ pos->ai_addrlen,
+ tmpbuf,
+ pos->ai_canonname);
+ else
+ fprintf (stderr, "Result:\n"
+ " flags: 0x%X\n"
+ " family: 0x%X\n"
+ " socktype: 0x%X\n"
+ " protocol: 0x%X\n"
+ " addrlen: %u\n"
+ " addr: %S\n"
+ " canonname: %S\n",
+ pos->ai_flags,
+ pos->ai_family,
+ pos->ai_socktype,
+ pos->ai_protocol,
+ pos->ai_addrlen,
+ L"<can't stringify>",
+ pos->ai_canonname);
+ }
+ if (NULL != result)
+ FreeAddrInfoW (result);
+ }
+ }
WSACleanup();
return r;
}