aboutsummaryrefslogtreecommitdiff
path: root/src/gns
diff options
context:
space:
mode:
authorLRN <lrn1986@gmail.com>2013-12-15 17:23:48 +0000
committerLRN <lrn1986@gmail.com>2013-12-15 17:23:48 +0000
commit63059b5d1a1c183301624585bd1e106f1d1da8cb (patch)
tree9c8cb99547ce3afbc20df034af5efac2ab4302d1 /src/gns
parentf117f9c905bca6ef72f0b0cbc5a6bf251b4aaf53 (diff)
downloadgnunet-63059b5d1a1c183301624585bd1e106f1d1da8cb.tar.gz
gnunet-63059b5d1a1c183301624585bd1e106f1d1da8cb.zip
Clean up W32 NSP tools, increase verbosity
Diffstat (limited to 'src/gns')
-rw-r--r--src/gns/w32nsp-install.c78
-rw-r--r--src/gns/w32nsp-resolve.c16
-rw-r--r--src/gns/w32nsp-uninstall.c9
3 files changed, 89 insertions, 14 deletions
diff --git a/src/gns/w32nsp-install.c b/src/gns/w32nsp-install.c
index 5c2ccf23e..cb25ca9b2 100644
--- a/src/gns/w32nsp-install.c
+++ b/src/gns/w32nsp-install.c
@@ -24,9 +24,9 @@
24 */ 24 */
25 25
26#define INITGUID 26#define INITGUID
27#include <ws2spi.h>
27#include <windows.h> 28#include <windows.h>
28#include <nspapi.h> 29#include <nspapi.h>
29#include <ws2spi.h>
30#include "gnunet_w32nsp_lib.h" 30#include "gnunet_w32nsp_lib.h"
31#include <stdio.h> 31#include <stdio.h>
32 32
@@ -40,42 +40,104 @@ main (int argc, char **argv)
40 wchar_t *cmdl; 40 wchar_t *cmdl;
41 int wargc; 41 int wargc;
42 wchar_t **wargv; 42 wchar_t **wargv;
43 /* Allocate a 4K buffer to retrieve all the namespace providers */
44 DWORD dwInitialBufferLen = 4096;
45 DWORD dwBufferLen;
46 WSANAMESPACE_INFO *pi;
47 int p_count;
48 int i;
43 49
44 if (WSAStartup(MAKEWORD(2,2), &wsd) != 0) 50 if (WSAStartup (MAKEWORD (2,2), &wsd) != 0)
45 { 51 {
46 fprintf (stderr, "WSAStartup() failed: %lu\n", GetLastError()); 52 fprintf (stderr, "WSAStartup () failed: %lu\n", GetLastError ());
47 return 5; 53 return 5;
48 } 54 }
49 55
56 dwBufferLen = dwInitialBufferLen;
57 pi = malloc (dwBufferLen);
58 if (NULL == pi)
59 {
60 fprintf (stderr, "malloc (%lu) failed: %d\n", dwBufferLen, errno);
61 WSACleanup ();
62 return 6;
63 }
64 p_count = WSAEnumNameSpaceProviders (&dwBufferLen, pi);
65 if (SOCKET_ERROR == p_count)
66 {
67 DWORD err = GetLastError ();
68 if (WSAEFAULT == err && dwBufferLen != dwInitialBufferLen)
69 {
70 free (pi);
71
72 pi = malloc (dwBufferLen);
73 if (pi == NULL)
74 {
75 fprintf (stderr, "malloc (%lu) failed: %d\n", dwBufferLen, errno);
76 WSACleanup ();
77 return 6;
78 }
79
80 p_count = WSAEnumNameSpaceProviders (&dwBufferLen, pi);
81 if (SOCKET_ERROR == p_count)
82 {
83 fprintf (stderr, "WSAEnumNameSpaceProviders (&%lu, %p) failed: %lu\n", dwBufferLen, pi, GetLastError ());
84 free (pi);
85 WSACleanup ();
86 return 7;
87 }
88 }
89 else
90 {
91 fprintf (stderr, "WSAEnumNameSpaceProviders (&%lu, %p) failed: %lu\n", dwBufferLen, pi, GetLastError ());
92 free (pi);
93 WSACleanup ();
94 return 8;
95 }
96 }
97 for (i= 0; i < p_count; i++)
98 {
99 if (IsEqualGUID (&pi[i].NSProviderId, &id))
100 {
101 fprintf (stderr, "GNUnet DNS provider is already installed\n");
102 free (pi);
103 WSACleanup ();
104 return 0;
105 }
106 }
107 free (pi);
108
50 cmdl = GetCommandLineW (); 109 cmdl = GetCommandLineW ();
51 if (cmdl == NULL) 110 if (cmdl == NULL)
52 { 111 {
53 WSACleanup(); 112 WSACleanup ();
54 return 2; 113 return 2;
55 } 114 }
56 wargv = CommandLineToArgvW (cmdl, &wargc); 115 wargv = CommandLineToArgvW (cmdl, &wargc);
57 if (wargv == NULL) 116 if (wargv == NULL)
58 { 117 {
59 WSACleanup(); 118 WSACleanup ();
60 return 3; 119 return 3;
61 } 120 }
62 r = 4; 121 r = 4;
63 122
64 if (wargc == 2) 123 if (wargc == 2)
65 { 124 {
66 ret = WSCInstallNameSpace (L"GNUnet DNS provider", wargv[1], NS_DNS, 1, &id); 125 ret = WSCInstallNameSpace (L"GNUnet DNS provider", wargv[1], NS_DNS, 0, &id);
67 if (ret == NO_ERROR) 126 if (ret == NO_ERROR)
68 { 127 {
128 fprintf (stderr, "Installed GNUnet DNS provider\n");
69 r = 0; 129 r = 0;
70 } 130 }
71 else 131 else
72 { 132 {
73 r = 1; 133 r = 1;
74 fprintf (stderr, 134 fprintf (stderr,
75 "WSCInstallNameSpace(L\"GNUnet DNS provider\", \"%S\", %d, 0, %p) failed: %lu\n", 135 "WSCInstallNameSpace (L\"GNUnet DNS provider\", \"%S\", %d, 0, %p) failed: %lu\n",
76 wargv[1], NS_DNS, &id, GetLastError ()); 136 wargv[1], NS_DNS, &id, GetLastError ());
77 } 137 }
78 } 138 }
79 WSACleanup(); 139 else
140 fprintf (stderr, "Usage: %S <path-to-libw32nsp>\n", wargv[0]);
141 WSACleanup ();
80 return r; 142 return r;
81} 143}
diff --git a/src/gns/w32nsp-resolve.c b/src/gns/w32nsp-resolve.c
index 2bbe45021..31f806343 100644
--- a/src/gns/w32nsp-resolve.c
+++ b/src/gns/w32nsp-resolve.c
@@ -206,6 +206,15 @@ main (int argc, char **argv)
206 else 206 else
207 wargc -= 1; 207 wargc -= 1;
208 } 208 }
209 else
210 {
211 fprintf (stderr, "Usage: %S <record type> <service name> <NSP library path> <NSP id>\n"
212 "record type - one of the following: A | AAAA | name | addr\n"
213 "service name - a string to resolve; \" \" (a space) means 'blank'\n"
214 "NSP library path - path to libw32nsp\n"
215 "NSP id - one of the following: mswdns | gnunetdns\n",
216 wargv[0]);
217 }
209 218
210 if (wargc == 5) 219 if (wargc == 5)
211 { 220 {
@@ -219,12 +228,15 @@ main (int argc, char **argv)
219 else 228 else
220 { 229 {
221 LPNSPSTARTUP startup = (LPNSPSTARTUP) GetProcAddress (nsp, "NSPStartup"); 230 LPNSPSTARTUP startup = (LPNSPSTARTUP) GetProcAddress (nsp, "NSPStartup");
231 if (startup == NULL)
232 startup = (LPNSPSTARTUP) GetProcAddress (nsp, "NSPStartup@8");
222 if (startup != NULL) 233 if (startup != NULL)
223 { 234 {
224 NSP_ROUTINE api; 235 NSP_ROUTINE api;
236 api.cbSize = sizeof (api);
225 ret = startup (&prov, &api); 237 ret = startup (&prov, &api);
226 if (NO_ERROR != ret) 238 if (NO_ERROR != ret)
227 fprintf (stderr, "startup failed\n"); 239 fprintf (stderr, "startup failed: %lu\n", GetLastError ());
228 else 240 else
229 { 241 {
230 HANDLE lookup; 242 HANDLE lookup;
@@ -251,7 +263,7 @@ main (int argc, char **argv)
251 err = GetLastError (); 263 err = GetLastError ();
252 if (ret != NO_ERROR) 264 if (ret != NO_ERROR)
253 { 265 {
254 fprintf (stderr, "lookup next failed\n"); 266 fprintf (stderr, "lookup next failed: %lu\n", err);
255 } 267 }
256 else 268 else
257 { 269 {
diff --git a/src/gns/w32nsp-uninstall.c b/src/gns/w32nsp-uninstall.c
index ac5aafe2d..6b123cc38 100644
--- a/src/gns/w32nsp-uninstall.c
+++ b/src/gns/w32nsp-uninstall.c
@@ -1,7 +1,7 @@
1#define INITGUID 1#define INITGUID
2#include <ws2spi.h>
2#include <windows.h> 3#include <windows.h>
3#include <nspapi.h> 4#include <nspapi.h>
4#include <ws2spi.h>
5#include "gnunet_w32nsp_lib.h" 5#include "gnunet_w32nsp_lib.h"
6#include <stdio.h> 6#include <stdio.h>
7 7
@@ -12,19 +12,20 @@ main (int argc, char **argv)
12 GUID id = GNUNET_NAMESPACE_PROVIDER_DNS; 12 GUID id = GNUNET_NAMESPACE_PROVIDER_DNS;
13 WSADATA wsd; 13 WSADATA wsd;
14 14
15 if (WSAStartup(MAKEWORD(2,2), &wsd) != 0) 15 if (WSAStartup (MAKEWORD (2,2), &wsd) != 0)
16 { 16 {
17 fprintf (stderr, "WSAStartup() failed: %lu\n", GetLastError()); 17 fprintf (stderr, "WSAStartup () failed: %lu\n", GetLastError ());
18 return 5; 18 return 5;
19 } 19 }
20 20
21 ret = WSCUnInstallNameSpace (&id); 21 ret = WSCUnInstallNameSpace (&id);
22 if (ret == NO_ERROR) 22 if (ret == NO_ERROR)
23 { 23 {
24 fprintf (stderr, "Uninstalled GNUnet DNS provider\n");
24 WSACleanup (); 25 WSACleanup ();
25 return 0; 26 return 0;
26 } 27 }
27 fprintf (stderr, "WSCUnInstallNameSpace() failed: %lu\n", GetLastError ()); 28 fprintf (stderr, "WSCUnInstallNameSpace () failed: %lu\n", GetLastError ());
28 WSACleanup (); 29 WSACleanup ();
29 return 1; 30 return 1;
30} \ No newline at end of file 31} \ No newline at end of file