aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2013-09-27 16:37:56 +0000
committerChristian Grothoff <christian@grothoff.org>2013-09-27 16:37:56 +0000
commit1f5714ff6c83585cb7cd701ca3b7176ef42d3e60 (patch)
treed68317d8b4e6aafe83c4f3448fdfe1d125777599
parent0773a954d6ed9a5c155b9cbceca7a6a316400ba6 (diff)
downloadgnunet-1f5714ff6c83585cb7cd701ca3b7176ef42d3e60.tar.gz
gnunet-1f5714ff6c83585cb7cd701ca3b7176ef42d3e60.zip
using DNS2GNS record type instead of recycling NS record type in GNS; fixing testcase by properly converting DNS records back to GNS blocks
-rw-r--r--src/gns/gnunet-gns.c15
-rw-r--r--src/gns/gnunet-service-gns_interceptor.c9
-rw-r--r--src/gns/gnunet-service-gns_resolver.c24
-rwxr-xr-xsrc/gns/test_gns_ns_lookup.sh16
-rw-r--r--src/include/gnunet_namestore_service.h5
-rw-r--r--src/namestore/namestore_api_common.c42
6 files changed, 97 insertions, 14 deletions
diff --git a/src/gns/gnunet-gns.c b/src/gns/gnunet-gns.c
index 0a6bcf66b..4b0ae38bc 100644
--- a/src/gns/gnunet-gns.c
+++ b/src/gns/gnunet-gns.c
@@ -133,7 +133,7 @@ do_shutdown (void *cls,
133 * 133 *
134 * @param cls the 'const char *' name that was resolved 134 * @param cls the 'const char *' name that was resolved
135 * @param rd_count number of records returned 135 * @param rd_count number of records returned
136 * @param rd array of 'rd_count' records with the results 136 * @param rd array of @a rd_count records with the results
137 */ 137 */
138static void 138static void
139process_lookup_result (void *cls, uint32_t rd_count, 139process_lookup_result (void *cls, uint32_t rd_count,
@@ -155,10 +155,21 @@ process_lookup_result (void *cls, uint32_t rd_count,
155 } 155 }
156 for (i=0; i<rd_count; i++) 156 for (i=0; i<rd_count; i++)
157 { 157 {
158 if ( (rd[i].record_type != rtype) &&
159 (GNUNET_NAMESTORE_TYPE_ANY != rtype) )
160 continue;
158 typename = GNUNET_NAMESTORE_number_to_typename (rd[i].record_type); 161 typename = GNUNET_NAMESTORE_number_to_typename (rd[i].record_type);
159 string_val = GNUNET_NAMESTORE_value_to_string (rd[i].record_type, 162 string_val = GNUNET_NAMESTORE_value_to_string (rd[i].record_type,
160 rd[i].data, 163 rd[i].data,
161 rd[i].data_size); 164 rd[i].data_size);
165 if (NULL == string_val)
166 {
167 fprintf (stderr,
168 "Record %u of type %d malformed, skipping\n",
169 (unsigned int) i,
170 (int) rd[i].record_type);
171 continue;
172 }
162 if (raw) 173 if (raw)
163 printf ("%s\n", 174 printf ("%s\n",
164 string_val); 175 string_val);
@@ -166,7 +177,7 @@ process_lookup_result (void *cls, uint32_t rd_count,
166 printf ("Got `%s' record: %s\n", 177 printf ("Got `%s' record: %s\n",
167 typename, 178 typename,
168 string_val); 179 string_val);
169 GNUNET_free_non_null (string_val); 180 GNUNET_free (string_val);
170 } 181 }
171 GNUNET_SCHEDULER_shutdown (); 182 GNUNET_SCHEDULER_shutdown ();
172} 183}
diff --git a/src/gns/gnunet-service-gns_interceptor.c b/src/gns/gnunet-service-gns_interceptor.c
index 33c05f743..0ab97db45 100644
--- a/src/gns/gnunet-service-gns_interceptor.c
+++ b/src/gns/gnunet-service-gns_interceptor.c
@@ -135,13 +135,16 @@ reply_to_dns (void *cls, uint32_t rd_count,
135 case GNUNET_DNSPARSER_TYPE_NS: 135 case GNUNET_DNSPARSER_TYPE_NS:
136 case GNUNET_DNSPARSER_TYPE_CNAME: 136 case GNUNET_DNSPARSER_TYPE_CNAME:
137 case GNUNET_DNSPARSER_TYPE_PTR: 137 case GNUNET_DNSPARSER_TYPE_PTR:
138 // FIXME: NO! need to use DNSPARSER!
138 answer_records[i].data.hostname = (char*)rd[i].data; 139 answer_records[i].data.hostname = (char*)rd[i].data;
139 break; 140 break;
140 case GNUNET_DNSPARSER_TYPE_SOA: 141 case GNUNET_DNSPARSER_TYPE_SOA:
142 // FIXME: NO! need to use DNSPARSER!
141 answer_records[i].data.soa = 143 answer_records[i].data.soa =
142 (struct GNUNET_DNSPARSER_SoaRecord *)rd[i].data; 144 (struct GNUNET_DNSPARSER_SoaRecord *)rd[i].data;
143 break; 145 break;
144 case GNUNET_DNSPARSER_TYPE_MX: 146 case GNUNET_DNSPARSER_TYPE_MX:
147 // FIXME: NO! need to use DNSPARSER!
145 answer_records[i].data.mx = 148 answer_records[i].data.mx =
146 (struct GNUNET_DNSPARSER_MxRecord *)rd[i].data; 149 (struct GNUNET_DNSPARSER_MxRecord *)rd[i].data;
147 break; 150 break;
@@ -163,17 +166,21 @@ reply_to_dns (void *cls, uint32_t rd_count,
163 case GNUNET_DNSPARSER_TYPE_NS: 166 case GNUNET_DNSPARSER_TYPE_NS:
164 case GNUNET_DNSPARSER_TYPE_CNAME: 167 case GNUNET_DNSPARSER_TYPE_CNAME:
165 case GNUNET_DNSPARSER_TYPE_PTR: 168 case GNUNET_DNSPARSER_TYPE_PTR:
169 // FIXME: NO! need to use DNSPARSER!
166 additional_records[i].data.hostname = (char*)rd[i].data; 170 additional_records[i].data.hostname = (char*)rd[i].data;
167 break; 171 break;
168 case GNUNET_DNSPARSER_TYPE_SOA: 172 case GNUNET_DNSPARSER_TYPE_SOA:
173 // FIXME: NO! need to use DNSPARSER!
169 additional_records[i].data.soa = 174 additional_records[i].data.soa =
170 (struct GNUNET_DNSPARSER_SoaRecord *)rd[i].data; 175 (struct GNUNET_DNSPARSER_SoaRecord *)rd[i].data;
171 break; 176 break;
172 case GNUNET_DNSPARSER_TYPE_MX: 177 case GNUNET_DNSPARSER_TYPE_MX:
178 // FIXME: NO! need to use DNSPARSER!
173 additional_records[i].data.mx = 179 additional_records[i].data.mx =
174 (struct GNUNET_DNSPARSER_MxRecord *)rd[i].data; 180 (struct GNUNET_DNSPARSER_MxRecord *)rd[i].data;
175 break; 181 break;
176 default: 182 default:
183 // FIXME: NO! need to use DNSPARSER!
177 additional_records[i].data.raw.data_len = rd[i].data_size; 184 additional_records[i].data.raw.data_len = rd[i].data_size;
178 additional_records[i].data.raw.data = (char*)rd[i].data; 185 additional_records[i].data.raw.data = (char*)rd[i].data;
179 break; 186 break;
@@ -288,7 +295,7 @@ handle_dns_request (void *cls,
288 * 295 *
289 * @param gnu_zone the zone to work in 296 * @param gnu_zone the zone to work in
290 * @param c the configuration 297 * @param c the configuration
291 * @return GNUNET_OK on success 298 * @return #GNUNET_OK on success
292 */ 299 */
293int 300int
294GNS_interceptor_init (const struct GNUNET_CRYPTO_EccPublicSignKey *gnu_zone, 301GNS_interceptor_init (const struct GNUNET_CRYPTO_EccPublicSignKey *gnu_zone,
diff --git a/src/gns/gnunet-service-gns_resolver.c b/src/gns/gnunet-service-gns_resolver.c
index 66029a21c..75a49a575 100644
--- a/src/gns/gnunet-service-gns_resolver.c
+++ b/src/gns/gnunet-service-gns_resolver.c
@@ -752,6 +752,7 @@ dns_result_parser (void *cls,
752 unsigned int skip; 752 unsigned int skip;
753 char buf[UINT16_MAX]; 753 char buf[UINT16_MAX];
754 size_t buf_off; 754 size_t buf_off;
755 size_t buf_start;
755 756
756 buf_off = 0; 757 buf_off = 0;
757 skip = 0; 758 skip = 0;
@@ -804,6 +805,7 @@ dns_result_parser (void *cls,
804 case GNUNET_DNSPARSER_TYPE_CNAME: 805 case GNUNET_DNSPARSER_TYPE_CNAME:
805 case GNUNET_DNSPARSER_TYPE_PTR: 806 case GNUNET_DNSPARSER_TYPE_PTR:
806 case GNUNET_DNSPARSER_TYPE_NS: 807 case GNUNET_DNSPARSER_TYPE_NS:
808 buf_start = buf_off;
807 if (GNUNET_OK != 809 if (GNUNET_OK !=
808 GNUNET_DNSPARSER_builder_add_name (buf, 810 GNUNET_DNSPARSER_builder_add_name (buf,
809 sizeof (buf), 811 sizeof (buf),
@@ -814,8 +816,11 @@ dns_result_parser (void *cls,
814 skip++; 816 skip++;
815 continue; 817 continue;
816 } 818 }
819 rd[i - skip].data_size = buf_off - buf_start;
820 rd[i - skip].data = &buf[buf_start];
817 break; 821 break;
818 case GNUNET_DNSPARSER_TYPE_SOA: 822 case GNUNET_DNSPARSER_TYPE_SOA:
823 buf_start = buf_off;
819 if (GNUNET_OK != 824 if (GNUNET_OK !=
820 GNUNET_DNSPARSER_builder_add_soa (buf, 825 GNUNET_DNSPARSER_builder_add_soa (buf,
821 sizeof (buf), 826 sizeof (buf),
@@ -826,8 +831,11 @@ dns_result_parser (void *cls,
826 skip++; 831 skip++;
827 continue; 832 continue;
828 } 833 }
834 rd[i - skip].data_size = buf_off - buf_start;
835 rd[i - skip].data = &buf[buf_start];
829 break; 836 break;
830 case GNUNET_DNSPARSER_TYPE_MX: 837 case GNUNET_DNSPARSER_TYPE_MX:
838 buf_start = buf_off;
831 if (GNUNET_OK != 839 if (GNUNET_OK !=
832 GNUNET_DNSPARSER_builder_add_mx (buf, 840 GNUNET_DNSPARSER_builder_add_mx (buf,
833 sizeof (buf), 841 sizeof (buf),
@@ -838,8 +846,11 @@ dns_result_parser (void *cls,
838 skip++; 846 skip++;
839 continue; 847 continue;
840 } 848 }
849 rd[i - skip].data_size = buf_off - buf_start;
850 rd[i - skip].data = &buf[buf_start];
841 break; 851 break;
842 case GNUNET_DNSPARSER_TYPE_SRV: 852 case GNUNET_DNSPARSER_TYPE_SRV:
853 buf_start = buf_off;
843 if (GNUNET_OK != 854 if (GNUNET_OK !=
844 GNUNET_DNSPARSER_builder_add_srv (buf, 855 GNUNET_DNSPARSER_builder_add_srv (buf,
845 sizeof (buf), 856 sizeof (buf),
@@ -850,6 +861,8 @@ dns_result_parser (void *cls,
850 skip++; 861 skip++;
851 continue; 862 continue;
852 } 863 }
864 rd[i - skip].data_size = buf_off - buf_start;
865 rd[i - skip].data = &buf[buf_start];
853 break; 866 break;
854 default: 867 default:
855 GNUNET_log (GNUNET_ERROR_TYPE_INFO, 868 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
@@ -1197,6 +1210,11 @@ handle_gns_resolution_result (void *cls,
1197 rh); 1210 rh);
1198 return; 1211 return;
1199 } 1212 }
1213 case GNUNET_NAMESTORE_TYPE_GNS2DNS:
1214 {
1215 /* delegation to DNS */
1216 goto do_recurse;
1217 }
1200 default: 1218 default:
1201 break; 1219 break;
1202 } 1220 }
@@ -1392,6 +1410,7 @@ handle_gns_resolution_result (void *cls,
1392 GNS_resolver_lookup_cancel (rh); 1410 GNS_resolver_lookup_cancel (rh);
1393 return; 1411 return;
1394 } 1412 }
1413 do_recurse:
1395 /* need to recurse, check if we can */ 1414 /* need to recurse, check if we can */
1396 for (i=0;i<rd_count;i++) 1415 for (i=0;i<rd_count;i++)
1397 { 1416 {
@@ -1428,7 +1447,7 @@ handle_gns_resolution_result (void *cls,
1428 rh->task_id = GNUNET_SCHEDULER_add_now (&recursive_resolution, 1447 rh->task_id = GNUNET_SCHEDULER_add_now (&recursive_resolution,
1429 rh); 1448 rh);
1430 return; 1449 return;
1431 case GNUNET_DNSPARSER_TYPE_NS: 1450 case GNUNET_NAMESTORE_TYPE_GNS2DNS:
1432 { 1451 {
1433 char *ns; 1452 char *ns;
1434 /* resolution continues within DNS */ 1453 /* resolution continues within DNS */
@@ -1527,9 +1546,10 @@ handle_gns_resolution_result (void *cls,
1527 created from the remainder of the GNS name and the 1546 created from the remainder of the GNS name and the
1528 name in the NS record */ 1547 name in the NS record */
1529 GNUNET_asprintf (&ac->label, 1548 GNUNET_asprintf (&ac->label,
1530 "%.*s.%s", 1549 "%.*s%s%s",
1531 (int) rh->name_resolution_pos, 1550 (int) rh->name_resolution_pos,
1532 rh->name, 1551 rh->name,
1552 (0 != rh->name_resolution_pos) ? "." : "",
1533 ns); 1553 ns);
1534 GNUNET_free (ns); 1554 GNUNET_free (ns);
1535 GNUNET_CONTAINER_DLL_insert_tail (rh->ac_head, 1555 GNUNET_CONTAINER_DLL_insert_tail (rh->ac_head,
diff --git a/src/gns/test_gns_ns_lookup.sh b/src/gns/test_gns_ns_lookup.sh
index 7e9b66bfd..827156974 100755
--- a/src/gns/test_gns_ns_lookup.sh
+++ b/src/gns/test_gns_ns_lookup.sh
@@ -6,18 +6,18 @@ TEST_DOMAIN_ALT="homepage.gnu"
6TEST_DOMAIN_ALT2="uk.homepage.gnu" 6TEST_DOMAIN_ALT2="uk.homepage.gnu"
7TEST_IP_ALT2="81.187.252.184" 7TEST_IP_ALT2="81.187.252.184"
8TEST_IP="131.159.74.67" 8TEST_IP="131.159.74.67"
9TEST_IP_NS="184.172.157.218" 9TEST_IP_GNS2DNS="184.172.157.218"
10TEST_RECORD_NAME="homepage" 10TEST_RECORD_NAME="homepage"
11TEST_RECORD_NS="gnunet.org" 11TEST_RECORD_GNS2DNS="gnunet.org"
12gnunet-arm -s -c test_gns_lookup.conf 12gnunet-arm -s -c test_gns_lookup.conf
13gnunet-identity -C testego -c test_gns_lookup.conf 13gnunet-identity -C testego -c test_gns_lookup.conf
14gnunet-namestore -p -z testego -a -n $TEST_RECORD_NAME -t A -V $TEST_IP_NS -e never -c test_gns_lookup.conf 14gnunet-namestore -p -z testego -a -n $TEST_RECORD_NAME -t A -V $TEST_IP_GNS2DNS -e never -c test_gns_lookup.conf
15gnunet-namestore -p -z testego -a -n $TEST_RECORD_NAME -t NS -V $TEST_RECORD_NS -e never -c test_gns_lookup.conf 15gnunet-namestore -p -z testego -a -n $TEST_RECORD_NAME -t GNS2DNS -V $TEST_RECORD_GNS2DNS -e never -c test_gns_lookup.conf
16RES_IP=$(timeout 5 gnunet-gns --raw -z testego -u $TEST_DOMAIN -t A -c test_gns_lookup.conf) 16RES_IP=$(timeout 5 gnunet-gns --raw -z testego -u $TEST_DOMAIN -t A -c test_gns_lookup.conf)
17RES_IP_ALT=$(timeout 5 gnunet-gns --raw -z testego -u $TEST_DOMAIN_ALT -t A -c test_gns_lookup.conf) 17RES_IP_ALT=$(timeout 5 gnunet-gns --raw -z testego -u $TEST_DOMAIN_ALT -t A -c test_gns_lookup.conf)
18RES_IP_ALT2=$(timeout 5 gnunet-gns --raw -z testego -u $TEST_DOMAIN_ALT2 -t A -c test_gns_lookup.conf) 18RES_IP_ALT2=$(timeout 5 gnunet-gns --raw -z testego -u $TEST_DOMAIN_ALT2 -t A -c test_gns_lookup.conf)
19gnunet-namestore -z testego -d -n www -t A -V $TEST_IP -e never -c test_gns_lookup.conf 19gnunet-namestore -z testego -d -n www -t A -V $TEST_IP -e never -c test_gns_lookup.conf
20gnunet-namestore -z testego -d -n $TEST_RECORD_NAME -t NS -V $TEST_RECORD_NS -e never -c test_gns_lookup.conf 20gnunet-namestore -z testego -d -n $TEST_RECORD_NAME -t GNS2DNS -V $TEST_RECORD_GNS2DNS -e never -c test_gns_lookup.conf
21gnunet-identity -D testego -c test_gns_lookup.conf 21gnunet-identity -D testego -c test_gns_lookup.conf
22gnunet-arm -e -c test_gns_lookup.conf 22gnunet-arm -e -c test_gns_lookup.conf
23 23
@@ -25,7 +25,7 @@ if [ "$RES_IP" == "$TEST_IP" ]
25then 25then
26 echo "PASS: Resolved $TEST_DOMAIN to $RES_IP." 26 echo "PASS: Resolved $TEST_DOMAIN to $RES_IP."
27else 27else
28 echo "Failed to resolve to proper IP for $TEST_DOMAIN, got $RES_IP." 28 echo "Failed to resolve to proper IP for $TEST_DOMAIN, got $RES_IP, wanted $TEST_IP."
29 exit 1 29 exit 1
30fi 30fi
31 31
@@ -33,7 +33,7 @@ if [ "$RES_IP_ALT" == "$TEST_IP" ]
33then 33then
34 echo "PASS: Resolved $TEST_DOMAIN_ALT to $RES_IP_ALT." 34 echo "PASS: Resolved $TEST_DOMAIN_ALT to $RES_IP_ALT."
35else 35else
36 echo "Failed to resolve to proper IP for $TEST_DOMAIN_ALT, got $RES_IP_ALT." 36 echo "Failed to resolve to proper IP for $TEST_DOMAIN_ALT, got $RES_IP_ALT, wanted $TEST_IP."
37 exit 1 37 exit 1
38fi 38fi
39 39
@@ -42,6 +42,6 @@ then
42 echo "PASS: Resolved $TEST_DOMAIN_ALT2 to $RES_IP_ALT2." 42 echo "PASS: Resolved $TEST_DOMAIN_ALT2 to $RES_IP_ALT2."
43 exit 0 43 exit 0
44else 44else
45 echo "Failed to resolve to proper IP for $TEST_DOMAIN_ALT2, got $RES_IP_ALT2." 45 echo "Failed to resolve to proper IP for $TEST_DOMAIN_ALT2, got $RES_IP_ALT2, wanted $TEST_IP_ALT2."
46 exit 1 46 exit 1
47fi 47fi
diff --git a/src/include/gnunet_namestore_service.h b/src/include/gnunet_namestore_service.h
index 1f78b40f6..fbb3a285c 100644
--- a/src/include/gnunet_namestore_service.h
+++ b/src/include/gnunet_namestore_service.h
@@ -67,6 +67,11 @@ extern "C"
67#define GNUNET_NAMESTORE_TYPE_VPN 65539 67#define GNUNET_NAMESTORE_TYPE_VPN 65539
68 68
69/** 69/**
70 * Record type for delegation to DNS.
71 */
72#define GNUNET_NAMESTORE_TYPE_GNS2DNS 65540
73
74/**
70 * Record type for a social place. 75 * Record type for a social place.
71 */ 76 */
72#define GNUNET_NAMESTORE_TYPE_PLACE 65541 77#define GNUNET_NAMESTORE_TYPE_PLACE 65541
diff --git a/src/namestore/namestore_api_common.c b/src/namestore/namestore_api_common.c
index 42969778f..b5a777083 100644
--- a/src/namestore/namestore_api_common.c
+++ b/src/namestore/namestore_api_common.c
@@ -501,7 +501,7 @@ GNUNET_NAMESTORE_block_decrypt (const struct GNUNET_NAMESTORE_Block *block,
501 * 501 *
502 * @param type type of the record 502 * @param type type of the record
503 * @param data value in binary encoding 503 * @param data value in binary encoding
504 * @param data_size number of bytes in data 504 * @param data_size number of bytes in @a data
505 * @return NULL on error, otherwise human-readable representation of the value 505 * @return NULL on error, otherwise human-readable representation of the value
506 */ 506 */
507char * 507char *
@@ -661,6 +661,23 @@ GNUNET_NAMESTORE_value_to_string (uint32_t type,
661 } 661 }
662 return vpn_str; 662 return vpn_str;
663 } 663 }
664 case GNUNET_NAMESTORE_TYPE_GNS2DNS:
665 {
666 char *ns;
667 size_t off;
668
669 off = 0;
670 ns = GNUNET_DNSPARSER_parse_name (data,
671 data_size,
672 &off);
673 if ( (NULL == ns) ||
674 (off != data_size) )
675 {
676 GNUNET_break_op (0);
677 return NULL;
678 }
679 return ns;
680 }
664 case GNUNET_DNSPARSER_TYPE_SRV: 681 case GNUNET_DNSPARSER_TYPE_SRV:
665 { 682 {
666 struct GNUNET_DNSPARSER_SrvRecord *srv; 683 struct GNUNET_DNSPARSER_SrvRecord *srv;
@@ -971,6 +988,28 @@ GNUNET_NAMESTORE_string_to_value (uint32_t type,
971 vpn->proto = htons ((uint16_t) proto); 988 vpn->proto = htons ((uint16_t) proto);
972 strcpy ((char*)&vpn[1], s_serv); 989 strcpy ((char*)&vpn[1], s_serv);
973 return GNUNET_OK; 990 return GNUNET_OK;
991 case GNUNET_NAMESTORE_TYPE_GNS2DNS:
992 {
993 char nsbuf[256];
994 size_t off;
995
996 off = 0;
997 if (GNUNET_OK !=
998 GNUNET_DNSPARSER_builder_add_name (nsbuf,
999 sizeof (nsbuf),
1000 &off,
1001 s))
1002 {
1003 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
1004 _("Failed to serialize GNS2DNS record with value `%s'\n"),
1005 s);
1006 return GNUNET_SYSERR;
1007 }
1008 *data_size = off;
1009 *data = GNUNET_malloc (off);
1010 memcpy (*data, nsbuf, off);
1011 return GNUNET_OK;
1012 }
974 case GNUNET_DNSPARSER_TYPE_TLSA: 1013 case GNUNET_DNSPARSER_TYPE_TLSA:
975 *data_size = sizeof (struct GNUNET_TUN_DnsTlsaRecord) + strlen (s) - 6; 1014 *data_size = sizeof (struct GNUNET_TUN_DnsTlsaRecord) + strlen (s) - 6;
976 *data = tlsa = GNUNET_malloc (*data_size); 1015 *data = tlsa = GNUNET_malloc (*data_size);
@@ -1017,6 +1056,7 @@ static struct {
1017 { "PSEU", GNUNET_NAMESTORE_TYPE_PSEU }, 1056 { "PSEU", GNUNET_NAMESTORE_TYPE_PSEU },
1018 { "LEHO", GNUNET_NAMESTORE_TYPE_LEHO }, 1057 { "LEHO", GNUNET_NAMESTORE_TYPE_LEHO },
1019 { "VPN", GNUNET_NAMESTORE_TYPE_VPN }, 1058 { "VPN", GNUNET_NAMESTORE_TYPE_VPN },
1059 { "GNS2DNS", GNUNET_NAMESTORE_TYPE_GNS2DNS },
1020 { "TLSA", GNUNET_DNSPARSER_TYPE_TLSA }, 1060 { "TLSA", GNUNET_DNSPARSER_TYPE_TLSA },
1021 { NULL, UINT32_MAX } 1061 { NULL, UINT32_MAX }
1022}; 1062};