aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2012-03-07 10:11:35 +0000
committerChristian Grothoff <christian@grothoff.org>2012-03-07 10:11:35 +0000
commit6c4c7de0f532f64fb4cce1c2f5b2259265c0d691 (patch)
tree2622508fba8a8fba8cb0a34d052690478103f4be /src
parentb2a867ec4f23366f2aecd4cf2f72c3b8f70e8372 (diff)
downloadgnunet-6c4c7de0f532f64fb4cce1c2f5b2259265c0d691.tar.gz
gnunet-6c4c7de0f532f64fb4cce1c2f5b2259265c0d691.zip
implementing more of GNUNET_NAMESTORE_value_to_string
Diffstat (limited to 'src')
-rw-r--r--src/namestore/namestore_common.c72
1 files changed, 60 insertions, 12 deletions
diff --git a/src/namestore/namestore_common.c b/src/namestore/namestore_common.c
index b865b0b79..22368d478 100644
--- a/src/namestore/namestore_common.c
+++ b/src/namestore/namestore_common.c
@@ -263,9 +263,54 @@ GNUNET_NAMESTORE_create_signature (const struct GNUNET_CRYPTO_RsaPrivateKey *key
263 */ 263 */
264char * 264char *
265GNUNET_NAMESTORE_value_to_string (uint32_t type, 265GNUNET_NAMESTORE_value_to_string (uint32_t type,
266 const void *data, 266 const void *data,
267 size_t data_size) 267 size_t data_size)
268{ 268{
269 char tmp[INET6_ADDRSTRLEN];
270
271 switch (type)
272 {
273 case 0:
274 return NULL;
275 case GNUNET_DNSPARSER_TYPE_A:
276 if (data_size != sizeof (struct in_addr))
277 return NULL;
278 if (NULL == inet_ntop (AF_INET, data, tmp, sizeof (tmp)))
279 return NULL;
280 return GNUNET_strdup (tmp);
281 case GNUNET_DNSPARSER_TYPE_NS:
282 return GNUNET_strndup (data, data_size);
283 case GNUNET_DNSPARSER_TYPE_CNAME:
284 return GNUNET_strndup (data, data_size);
285 case GNUNET_DNSPARSER_TYPE_SOA:
286 GNUNET_break (0);
287 // FIXME
288 return NULL;
289 case GNUNET_DNSPARSER_TYPE_PTR:
290 GNUNET_break (0);
291 // FIXME
292 return NULL;
293 case GNUNET_DNSPARSER_TYPE_MX:
294 GNUNET_break (0);
295 // FIXME
296 return NULL;
297 case GNUNET_DNSPARSER_TYPE_TXT:
298 return GNUNET_strndup (data, data_size);
299 case GNUNET_DNSPARSER_TYPE_AAAA:
300 if (data_size != sizeof (struct in6_addr))
301 return NULL;
302 if (NULL == inet_ntop (AF_INET6, data, tmp, sizeof (tmp)))
303 return NULL;
304 return GNUNET_strdup (tmp);
305 case GNUNET_NAMESTORE_TYPE_PKEY:
306 if (data_size != sizeof (GNUNET_HashCode))
307 return NULL;
308 return GNUNET_strdup (GNUNET_h2s_full (data));
309 case GNUNET_NAMESTORE_TYPE_PSEU:
310 return GNUNET_strndup (data, data_size);
311 default:
312 GNUNET_break (0);
313 }
269 GNUNET_break (0); // not implemented 314 GNUNET_break (0); // not implemented
270 return NULL; 315 return NULL;
271} 316}
@@ -289,27 +334,27 @@ GNUNET_NAMESTORE_string_to_value (uint32_t type,
289{ 334{
290 struct in_addr value_a; 335 struct in_addr value_a;
291 struct in6_addr value_aaaa; 336 struct in6_addr value_aaaa;
337 GNUNET_HashCode pkey;
292 338
293 switch (type) 339 switch (type)
294 { 340 {
295 case 0: 341 case 0:
296 return GNUNET_SYSERR; 342 return GNUNET_SYSERR;
297 break;
298 case GNUNET_DNSPARSER_TYPE_A: 343 case GNUNET_DNSPARSER_TYPE_A:
299 if (1 != inet_pton (AF_INET, s, &value_a)) 344 if (1 != inet_pton (AF_INET, s, &value_a))
300 return GNUNET_SYSERR; 345 return GNUNET_SYSERR;
301 *data = GNUNET_malloc (sizeof (struct in_addr)); 346 *data = GNUNET_malloc (sizeof (struct in_addr));
302 memcpy (*data, &value_a, sizeof (value_a)); 347 memcpy (*data, &value_a, sizeof (value_a));
303 *data_size = sizeof (value_a); 348 *data_size = sizeof (value_a);
304 break; 349 return GNUNET_OK;
305 case GNUNET_DNSPARSER_TYPE_NS: 350 case GNUNET_DNSPARSER_TYPE_NS:
306 *data = GNUNET_strdup (s); 351 *data = GNUNET_strdup (s);
307 *data_size = strlen (s); 352 *data_size = strlen (s);
308 break; 353 return GNUNET_OK;
309 case GNUNET_DNSPARSER_TYPE_CNAME: 354 case GNUNET_DNSPARSER_TYPE_CNAME:
310 *data = GNUNET_strdup (s); 355 *data = GNUNET_strdup (s);
311 *data_size = strlen (s); 356 *data_size = strlen (s);
312 break; 357 return GNUNET_OK;
313 case GNUNET_DNSPARSER_TYPE_SOA: 358 case GNUNET_DNSPARSER_TYPE_SOA:
314 GNUNET_break (0); 359 GNUNET_break (0);
315 // FIXME 360 // FIXME
@@ -325,21 +370,24 @@ GNUNET_NAMESTORE_string_to_value (uint32_t type,
325 case GNUNET_DNSPARSER_TYPE_TXT: 370 case GNUNET_DNSPARSER_TYPE_TXT:
326 *data = GNUNET_strdup (s); 371 *data = GNUNET_strdup (s);
327 *data_size = strlen (s); 372 *data_size = strlen (s);
328 break; 373 return GNUNET_OK;
329 case GNUNET_DNSPARSER_TYPE_AAAA: 374 case GNUNET_DNSPARSER_TYPE_AAAA:
330 if (1 != inet_pton (AF_INET6, s, &value_aaaa)) 375 if (1 != inet_pton (AF_INET6, s, &value_aaaa))
331 return GNUNET_SYSERR; 376 return GNUNET_SYSERR;
332 *data = GNUNET_malloc (sizeof (struct in6_addr)); 377 *data = GNUNET_malloc (sizeof (struct in6_addr));
333 memcpy (*data, &value_aaaa, sizeof (value_aaaa)); 378 memcpy (*data, &value_aaaa, sizeof (value_aaaa));
334 break; 379 return GNUNET_OK;
335 case GNUNET_NAMESTORE_TYPE_PKEY: 380 case GNUNET_NAMESTORE_TYPE_PKEY:
336 GNUNET_break (0); 381 if (GNUNET_OK !=
337 // FIXME 382 GNUNET_CRYPTO_hash_from_string (s, &pkey))
338 return GNUNET_SYSERR; 383 return GNUNET_SYSERR;
384 *data = GNUNET_malloc (sizeof (GNUNET_HashCode));
385 memcpy (*data, &pkey, sizeof (pkey));
386 return GNUNET_OK;
339 case GNUNET_NAMESTORE_TYPE_PSEU: 387 case GNUNET_NAMESTORE_TYPE_PSEU:
340 *data = GNUNET_strdup (s); 388 *data = GNUNET_strdup (s);
341 *data_size = strlen (s); 389 *data_size = strlen (s);
342 break; 390 return GNUNET_OK;
343 default: 391 default:
344 GNUNET_break (0); 392 GNUNET_break (0);
345 } 393 }