aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Schanzenbach <mschanzenbach@posteo.de>2012-07-31 07:37:22 +0000
committerMartin Schanzenbach <mschanzenbach@posteo.de>2012-07-31 07:37:22 +0000
commit0bcdd97c38f467001fa3723d9de22f8f135a2d5a (patch)
tree9eb8f4584e52742b0a3109a209eff7658731e769
parent6429ccfb2ffb8c44a1d10a28a545b72f64c0b6da (diff)
downloadgnunet-0bcdd97c38f467001fa3723d9de22f8f135a2d5a.tar.gz
gnunet-0bcdd97c38f467001fa3723d9de22f8f135a2d5a.zip
-tlsa rr added to namestore
-rw-r--r--src/gns/gnunet-service-gns_resolver.c2
-rw-r--r--src/gns/test_gns_simple_srv_lookup.c2
-rw-r--r--src/include/gns_protocol.h (renamed from src/gns/gns_records.h)0
-rw-r--r--src/include/gnunet_dnsparser_lib.h1
-rw-r--r--src/include/gnunet_gns_service.h4
-rw-r--r--src/namestore/namestore_common.c60
6 files changed, 49 insertions, 20 deletions
diff --git a/src/gns/gnunet-service-gns_resolver.c b/src/gns/gnunet-service-gns_resolver.c
index 89aa4a06e..6a07f6d94 100644
--- a/src/gns/gnunet-service-gns_resolver.c
+++ b/src/gns/gnunet-service-gns_resolver.c
@@ -33,7 +33,7 @@
33#include "gnunet_dns_service.h" 33#include "gnunet_dns_service.h"
34#include "gnunet_resolver_service.h" 34#include "gnunet_resolver_service.h"
35#include "gnunet_dnsparser_lib.h" 35#include "gnunet_dnsparser_lib.h"
36#include "gns_records.h" 36#include "gns_protocol.h"
37#include "gnunet_gns_service.h" 37#include "gnunet_gns_service.h"
38#include "block_gns.h" 38#include "block_gns.h"
39#include "gns.h" 39#include "gns.h"
diff --git a/src/gns/test_gns_simple_srv_lookup.c b/src/gns/test_gns_simple_srv_lookup.c
index 259d32e53..c9676e874 100644
--- a/src/gns/test_gns_simple_srv_lookup.c
+++ b/src/gns/test_gns_simple_srv_lookup.c
@@ -30,7 +30,7 @@
30#include "gnunet_namestore_service.h" 30#include "gnunet_namestore_service.h"
31#include "../namestore/namestore.h" 31#include "../namestore/namestore.h"
32#include "gnunet_dnsparser_lib.h" 32#include "gnunet_dnsparser_lib.h"
33#include "gns_records.h" 33#include "gns_protocol.h"
34#include "gnunet_gns_service.h" 34#include "gnunet_gns_service.h"
35 35
36/* DEFINES */ 36/* DEFINES */
diff --git a/src/gns/gns_records.h b/src/include/gns_protocol.h
index b5e6f33e1..b5e6f33e1 100644
--- a/src/gns/gns_records.h
+++ b/src/include/gns_protocol.h
diff --git a/src/include/gnunet_dnsparser_lib.h b/src/include/gnunet_dnsparser_lib.h
index 4cc8fc8d2..328a2286a 100644
--- a/src/include/gnunet_dnsparser_lib.h
+++ b/src/include/gnunet_dnsparser_lib.h
@@ -42,6 +42,7 @@
42#define GNUNET_DNSPARSER_TYPE_TXT 16 42#define GNUNET_DNSPARSER_TYPE_TXT 16
43#define GNUNET_DNSPARSER_TYPE_AAAA 28 43#define GNUNET_DNSPARSER_TYPE_AAAA 28
44#define GNUNET_DNSPARSER_TYPE_SRV 33 44#define GNUNET_DNSPARSER_TYPE_SRV 33
45#define GNUNET_DNSPARSER_TYPE_TLSA 52
45 46
46/** 47/**
47 * A few common DNS classes (ok, only one is common, but I list a 48 * A few common DNS classes (ok, only one is common, but I list a
diff --git a/src/include/gnunet_gns_service.h b/src/include/gnunet_gns_service.h
index 47c743ea2..fcb71fa6f 100644
--- a/src/include/gnunet_gns_service.h
+++ b/src/include/gnunet_gns_service.h
@@ -23,10 +23,6 @@
23 * @brief API to the GNS service 23 * @brief API to the GNS service
24 * @author Martin Schanzenbach 24 * @author Martin Schanzenbach
25 * 25 *
26 * TODO:
27 * - decide what goes into storage API and what into GNS-service API
28 * - decide where to pass/expose/check keys / signatures
29 * - are GNS private keys per peer or per user?
30 */ 26 */
31 27
32 28
diff --git a/src/namestore/namestore_common.c b/src/namestore/namestore_common.c
index 8b095eb26..f5c039c3b 100644
--- a/src/namestore/namestore_common.c
+++ b/src/namestore/namestore_common.c
@@ -32,7 +32,7 @@
32#include "gnunet_arm_service.h" 32#include "gnunet_arm_service.h"
33#include "gnunet_namestore_service.h" 33#include "gnunet_namestore_service.h"
34#include "gnunet_dnsparser_lib.h" 34#include "gnunet_dnsparser_lib.h"
35#include "../dns/dnsparser.h" 35#include "gns_protocol.h"
36#include "namestore.h" 36#include "namestore.h"
37 37
38 38
@@ -348,19 +348,20 @@ GNUNET_NAMESTORE_value_to_string (uint32_t type,
348 const void *data, 348 const void *data,
349 size_t data_size) 349 size_t data_size)
350{ 350{
351 char tmp[INET6_ADDRSTRLEN];
352 struct GNUNET_CRYPTO_ShortHashAsciiEncoded enc;
353 uint16_t mx_pref; 351 uint16_t mx_pref;
354 char* result;
355 char* soa_rname;
356 char* soa_mname;
357 struct soa_data *soa; 352 struct soa_data *soa;
358
359 struct vpn_data *vpn; 353 struct vpn_data *vpn;
354 struct srv_data *srv;
355 struct tlsa_data *tlsa;
356 struct GNUNET_CRYPTO_ShortHashAsciiEncoded enc;
357 struct GNUNET_CRYPTO_HashAsciiEncoded s_peer;
360 char* vpn_str; 358 char* vpn_str;
361 char* srv_str; 359 char* srv_str;
362 struct GNUNET_CRYPTO_HashAsciiEncoded s_peer; 360 char* tlsa_str;
363 struct srv_data *srv; 361 char* result;
362 char* soa_rname;
363 char* soa_mname;
364 char tmp[INET6_ADDRSTRLEN];
364 365
365 switch (type) 366 switch (type)
366 { 367 {
@@ -434,6 +435,16 @@ GNUNET_NAMESTORE_value_to_string (uint32_t type,
434 (char*)&srv[1])) 435 (char*)&srv[1]))
435 return NULL; 436 return NULL;
436 return srv_str; 437 return srv_str;
438 case GNUNET_DNSPARSER_TYPE_TLSA:
439 tlsa = (struct tlsa_data*)data;
440
441 if (GNUNET_OK != GNUNET_asprintf (&tlsa_str, "%c %c %c %s",
442 tlsa->usage,
443 tlsa->selector,
444 tlsa->matching_type,
445 tlsa[1]))
446 return NULL;
447 return tlsa_str;
437 default: 448 default:
438 GNUNET_break (0); 449 GNUNET_break (0);
439 } 450 }
@@ -461,20 +472,21 @@ GNUNET_NAMESTORE_string_to_value (uint32_t type,
461 struct in_addr value_a; 472 struct in_addr value_a;
462 struct in6_addr value_aaaa; 473 struct in6_addr value_aaaa;
463 struct GNUNET_CRYPTO_ShortHashCode pkey; 474 struct GNUNET_CRYPTO_ShortHashCode pkey;
464 uint16_t mx_pref;
465 uint16_t mx_pref_n;
466 struct soa_data *soa; 475 struct soa_data *soa;
476 struct vpn_data *vpn;
477 struct tlsa_data *tlsa;
467 char result[253]; 478 char result[253];
468 char soa_rname[63]; 479 char soa_rname[63];
469 char soa_mname[63]; 480 char soa_mname[63];
481 char s_peer[104];
482 char s_serv[253];
470 uint32_t soa_serial; 483 uint32_t soa_serial;
471 uint32_t soa_refresh; 484 uint32_t soa_refresh;
472 uint32_t soa_retry; 485 uint32_t soa_retry;
473 uint32_t soa_expire; 486 uint32_t soa_expire;
474 uint32_t soa_min; 487 uint32_t soa_min;
475 char s_peer[104]; 488 uint16_t mx_pref;
476 char s_serv[253]; 489 uint16_t mx_pref_n;
477 struct vpn_data* vpn;
478 uint16_t proto; 490 uint16_t proto;
479 int ret; 491 int ret;
480 492
@@ -582,6 +594,26 @@ GNUNET_NAMESTORE_string_to_value (uint32_t type,
582 vpn->proto = htons (proto); 594 vpn->proto = htons (proto);
583 strcpy ((char*)&vpn[1], s_serv); 595 strcpy ((char*)&vpn[1], s_serv);
584 return GNUNET_OK; 596 return GNUNET_OK;
597 case GNUNET_DNSPARSER_TYPE_TLSA:
598 tlsa = (struct tlsa_data*)*data;
599 *data_size = sizeof (struct tlsa_data) + strlen (s) - 6;
600 tlsa = GNUNET_malloc (*data_size);
601 ret = SSCANF (s, "%c %c %c %s",
602 &tlsa->usage,
603 &tlsa->selector,
604 &tlsa->matching_type,
605 (char*)&tlsa[1]);
606
607 if (4 != ret)
608 {
609 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
610 "Unable to parse TLSA record string %s\n", s);
611 *data_size = 0;
612 GNUNET_free (tlsa);
613 return GNUNET_SYSERR;
614 }
615
616 return GNUNET_OK;
585 default: 617 default:
586 GNUNET_break (0); 618 GNUNET_break (0);
587 } 619 }