aboutsummaryrefslogtreecommitdiff
path: root/src/gns
diff options
context:
space:
mode:
authorMartin Schanzenbach <mschanzenbach@posteo.de>2014-02-08 16:46:25 +0000
committerMartin Schanzenbach <mschanzenbach@posteo.de>2014-02-08 16:46:25 +0000
commit5caf86f236b1a819abdfdc5c2515bdc087b56a69 (patch)
tree56b206d4f40266a09382723f9548b25378707dfd /src/gns
parentea14803789efc976c0f9d89097b1785a9325968d (diff)
downloadgnunet-5caf86f236b1a819abdfdc5c2515bdc087b56a69.tar.gz
gnunet-5caf86f236b1a819abdfdc5c2515bdc087b56a69.zip
-no reverse GNS
Diffstat (limited to 'src/gns')
-rw-r--r--src/gns/nss/nss_gns.c98
-rw-r--r--src/gns/nss/nss_gns_query.c34
-rw-r--r--src/gns/nss/nss_gns_query.h28
3 files changed, 2 insertions, 158 deletions
diff --git a/src/gns/nss/nss_gns.c b/src/gns/nss/nss_gns.c
index d97d51fb5..77fdc26f7 100644
--- a/src/gns/nss/nss_gns.c
+++ b/src/gns/nss/nss_gns.c
@@ -253,103 +253,9 @@ enum nss_status _nss_gns_gethostbyaddr_r(
253 int *errnop, 253 int *errnop,
254 int *h_errnop) { 254 int *h_errnop) {
255 255
256 struct userdata u;
257 enum nss_status status = NSS_STATUS_UNAVAIL;
258 int r;
259 size_t addr_len, idx, astart;
260
261 *errnop = EINVAL; 256 *errnop = EINVAL;
262 *h_errnop = NO_RECOVERY; 257 *h_errnop = NO_RECOVERY;
263 258 //NOTE we allow to leak this into DNS so no NOTFOUND
264 u.count = 0; 259 return NSS_STATUS_UNAVAIL;
265 u.data_len = 0;
266
267 addr_len = af == AF_INET ? sizeof(ipv4_address_t) : sizeof(ipv6_address_t);
268
269 if (len < (int) addr_len ||
270#ifdef NSS_IPV4_ONLY
271 af != AF_INET
272#elif NSS_IPV6_ONLY
273 af != AF_INET6
274#else
275 (af != AF_INET && af != AF_INET6)
276#endif
277 ) {
278 *errnop = EINVAL;
279 *h_errnop = NO_RECOVERY;
280
281 goto finish;
282 }
283
284 if (buflen < sizeof((char*) addr_len)) {
285 *errnop = ERANGE;
286 *h_errnop = NO_RECOVERY;
287 status = NSS_STATUS_TRYAGAIN;
288 goto finish;
289 }
290
291#if ! defined(NSS_IPV6_ONLY) && ! defined(NSS_IPV4_ONLY)
292 if (af == AF_INET)
293#endif
294#ifndef NSS_IPV6_ONLY
295 r = namecache_resolve_ip4((const ipv4_address_t*) addr, &u);
296#endif
297#if ! defined(NSS_IPV6_ONLY) && ! defined(NSS_IPV4_ONLY)
298 else
299#endif
300#ifndef NSS_IPV4_ONLY
301 r = namecache_resolve_ip6((const ipv6_address_t*) addr, &u);
302#endif
303 if (0 > r) {
304 *errnop = ETIMEDOUT;
305 *h_errnop = HOST_NOT_FOUND;
306 //NODE we allow to leak this into DNS so no NOTFOUND
307 status = NSS_STATUS_UNAVAIL;
308 goto finish;
309 }
310
311 *((char**) buffer) = NULL;
312 result->h_aliases = (char**) buffer;
313 idx = sizeof(char*);
314
315 assert(u.count > 0);
316 assert(u.data.name[0]);
317
318 if (buflen <
319 strlen(u.data.name[0])+1+ /* official names */
320 sizeof(char*)+ /* alias names */
321 addr_len+ /* address */
322 sizeof(void*)*2 + /* address list */
323 sizeof(void*)) { /* padding to get the alignment right */
324 *errnop = ERANGE;
325 *h_errnop = NO_RECOVERY;
326 status = NSS_STATUS_TRYAGAIN;
327 goto finish;
328 }
329
330 /* Official name */
331 strcpy(buffer+idx, u.data.name[0]);
332 result->h_name = buffer+idx;
333 idx += strlen(u.data.name[0])+1;
334
335 result->h_addrtype = af;
336 result->h_length = addr_len;
337
338 /* Address */
339 astart = idx;
340 memcpy(buffer+astart, addr, addr_len);
341 idx += addr_len;
342
343 /* Address array, idx might not be at pointer alignment anymore, so we need
344 * to ensure it is*/
345 ALIGN(idx);
346
347 ((char**) (buffer+idx))[0] = buffer+astart;
348 ((char**) (buffer+idx))[1] = NULL;
349 result->h_addr_list = (char**) (buffer+idx);
350
351 status = NSS_STATUS_SUCCESS;
352finish:
353 return status;
354} 260}
355 261
diff --git a/src/gns/nss/nss_gns_query.c b/src/gns/nss/nss_gns_query.c
index 9e1cdde34..91d85e88e 100644
--- a/src/gns/nss/nss_gns_query.c
+++ b/src/gns/nss/nss_gns_query.c
@@ -105,38 +105,4 @@ gns_resolve_name (int af,
105 free (cmd); 105 free (cmd);
106 return 0; 106 return 0;
107} 107}
108
109#ifndef NSS_IPV6_ONLY
110/**
111 * Wrapper function that uses gnunet-namecache cli tool to resolve
112 * an hostnames from IPv4/6 addresses.
113 *
114 * @param addr the ip to resolve
115 * @param u the userdata (result struct)
116 * @return -1 on error else 0
117 */
118int
119namecache_resolve_ip4 (const ipv4_address_t* addr,
120 struct userdata *u)
121{
122 return -1;
123}
124#endif
125
126#ifndef NSS_IPV4_ONLY
127/**
128 * Wrapper function that uses gnunet-namecache cli tool to resolve
129 * an hostnames from IPv4/6 addresses.
130 *
131 * @param addr the ip to resolve
132 * @param u the userdata (result struct)
133 * @return -1 on error else 0
134 */
135int
136namecache_resolve_ip6 (const ipv6_address_t* addr,
137 struct userdata *u)
138{
139 return -1;
140}
141#endif
142/* end of nss_gns_query.c */ 108/* end of nss_gns_query.c */
diff --git a/src/gns/nss/nss_gns_query.h b/src/gns/nss/nss_gns_query.h
index 95c0d2f29..65b0311fe 100644
--- a/src/gns/nss/nss_gns_query.h
+++ b/src/gns/nss/nss_gns_query.h
@@ -60,32 +60,4 @@ int gns_resolve_name(int af,
60 const char *name, 60 const char *name,
61 struct userdata *userdata); 61 struct userdata *userdata);
62 62
63#ifndef NSS_IPV6_ONLY
64/**
65 * Wrapper function that uses gnunet-namecache cli tool to resolve
66 * an hostnames from IPv4/6 addresses.
67 *
68 * @param addr the ip to resolve
69 * @param u the userdata (result struct)
70 * @return -1 on error else 0
71 */
72int
73namecache_resolve_ip4 (const ipv4_address_t* addr,
74 struct userdata *u);
75#endif
76
77#ifndef NSS_IPV4_ONLY
78/**
79 * Wrapper function that uses gnunet-namecache cli tool to resolve
80 * an hostnames from IPv4/6 addresses.
81 *
82 * @param addr the ip to resolve
83 * @param u the userdata (result struct)
84 * @return -1 on error else 0
85 */
86int
87namecache_resolve_ip6 (const ipv6_address_t* addr,
88 struct userdata *u);
89#endif
90
91#endif 63#endif