diff options
author | Martin Schanzenbach <mschanzenbach@posteo.de> | 2014-02-08 16:46:25 +0000 |
---|---|---|
committer | Martin Schanzenbach <mschanzenbach@posteo.de> | 2014-02-08 16:46:25 +0000 |
commit | 5caf86f236b1a819abdfdc5c2515bdc087b56a69 (patch) | |
tree | 56b206d4f40266a09382723f9548b25378707dfd /src/gns/nss | |
parent | ea14803789efc976c0f9d89097b1785a9325968d (diff) | |
download | gnunet-5caf86f236b1a819abdfdc5c2515bdc087b56a69.tar.gz gnunet-5caf86f236b1a819abdfdc5c2515bdc087b56a69.zip |
-no reverse GNS
Diffstat (limited to 'src/gns/nss')
-rw-r--r-- | src/gns/nss/nss_gns.c | 98 | ||||
-rw-r--r-- | src/gns/nss/nss_gns_query.c | 34 | ||||
-rw-r--r-- | src/gns/nss/nss_gns_query.h | 28 |
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; | ||
352 | finish: | ||
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 | */ | ||
118 | int | ||
119 | namecache_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 | */ | ||
135 | int | ||
136 | namecache_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 | */ | ||
72 | int | ||
73 | namecache_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 | */ | ||
86 | int | ||
87 | namecache_resolve_ip6 (const ipv6_address_t* addr, | ||
88 | struct userdata *u); | ||
89 | #endif | ||
90 | |||
91 | #endif | 63 | #endif |