diff options
author | Christian Grothoff <christian@grothoff.org> | 2012-03-07 10:11:35 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2012-03-07 10:11:35 +0000 |
commit | 6c4c7de0f532f64fb4cce1c2f5b2259265c0d691 (patch) | |
tree | 2622508fba8a8fba8cb0a34d052690478103f4be /src | |
parent | b2a867ec4f23366f2aecd4cf2f72c3b8f70e8372 (diff) | |
download | gnunet-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.c | 72 |
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 | */ |
264 | char * | 264 | char * |
265 | GNUNET_NAMESTORE_value_to_string (uint32_t type, | 265 | GNUNET_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 | } |