diff options
Diffstat (limited to 'src/service')
-rw-r--r-- | src/service/dns/gnunet-dns-monitor.c | 17 | ||||
-rw-r--r-- | src/service/dns/gnunet-zonewalk.c | 11 | ||||
-rw-r--r-- | src/service/gns/gnunet-service-gns_interceptor.c | 10 | ||||
-rw-r--r-- | src/service/gns/gnunet-service-gns_resolver.c | 55 |
4 files changed, 92 insertions, 1 deletions
diff --git a/src/service/dns/gnunet-dns-monitor.c b/src/service/dns/gnunet-dns-monitor.c index c1ef17255..afdb336f0 100644 --- a/src/service/dns/gnunet-dns-monitor.c +++ b/src/service/dns/gnunet-dns-monitor.c | |||
@@ -84,6 +84,8 @@ get_type (uint16_t type) | |||
84 | case GNUNET_DNSPARSER_TYPE_AAAA: return "AAAA"; | 84 | case GNUNET_DNSPARSER_TYPE_AAAA: return "AAAA"; |
85 | 85 | ||
86 | case GNUNET_DNSPARSER_TYPE_SRV: return "SRV"; | 86 | case GNUNET_DNSPARSER_TYPE_SRV: return "SRV"; |
87 | |||
88 | case GNUNET_DNSPARSER_TYPE_URI: return "URI"; | ||
87 | } | 89 | } |
88 | GNUNET_snprintf (buf, sizeof(buf), "%u", (unsigned int) type); | 90 | GNUNET_snprintf (buf, sizeof(buf), "%u", (unsigned int) type); |
89 | return buf; | 91 | return buf; |
@@ -210,6 +212,21 @@ display_record (const struct GNUNET_DNSPARSER_Record *record) | |||
210 | format = tmp; | 212 | format = tmp; |
211 | } | 213 | } |
212 | break; | 214 | break; |
215 | |||
216 | case GNUNET_DNSPARSER_TYPE_URI: | ||
217 | if (NULL == record->data.uri) | ||
218 | format = "<invalid>"; | ||
219 | else | ||
220 | { | ||
221 | GNUNET_asprintf (&tmp, | ||
222 | "priority %u, weight = %u, target = \"%s\"", | ||
223 | (unsigned int) record->data.uri->priority, | ||
224 | (unsigned int) record->data.uri->weight, | ||
225 | record->data.uri->target); | ||
226 | format = tmp; | ||
227 | } | ||
228 | break; | ||
229 | |||
213 | 230 | ||
214 | case GNUNET_DNSPARSER_TYPE_TXT: | 231 | case GNUNET_DNSPARSER_TYPE_TXT: |
215 | GNUNET_asprintf (&tmp, | 232 | GNUNET_asprintf (&tmp, |
diff --git a/src/service/dns/gnunet-zonewalk.c b/src/service/dns/gnunet-zonewalk.c index 0526df698..f4b676d6c 100644 --- a/src/service/dns/gnunet-zonewalk.c +++ b/src/service/dns/gnunet-zonewalk.c | |||
@@ -214,6 +214,15 @@ process_record (struct Request *req, | |||
214 | rec->data.srv->weight, | 214 | rec->data.srv->weight, |
215 | rec->data.srv->port); | 215 | rec->data.srv->port); |
216 | break; | 216 | break; |
217 | |||
218 | case GNUNET_DNSPARSER_TYPE_URI: | ||
219 | fprintf (stdout, | ||
220 | "%s URI \"%s\" %u %u\n", | ||
221 | req->hostname, | ||
222 | rec->data.uri->target, | ||
223 | rec->data.uri->priority, | ||
224 | rec->data.uri->weight); | ||
225 | break; | ||
217 | 226 | ||
218 | case GNUNET_DNSPARSER_TYPE_PTR: | 227 | case GNUNET_DNSPARSER_TYPE_PTR: |
219 | fprintf (stdout, | 228 | fprintf (stdout, |
@@ -247,7 +256,6 @@ process_record (struct Request *req, | |||
247 | case GNUNET_DNSPARSER_TYPE_RP: | 256 | case GNUNET_DNSPARSER_TYPE_RP: |
248 | case GNUNET_DNSPARSER_TYPE_TKEY: | 257 | case GNUNET_DNSPARSER_TYPE_TKEY: |
249 | case GNUNET_DNSPARSER_TYPE_TSIG: | 258 | case GNUNET_DNSPARSER_TYPE_TSIG: |
250 | case GNUNET_DNSPARSER_TYPE_URI: | ||
251 | case GNUNET_DNSPARSER_TYPE_TA: | 259 | case GNUNET_DNSPARSER_TYPE_TA: |
252 | 260 | ||
253 | /* DNSSEC */ | 261 | /* DNSSEC */ |
@@ -265,6 +273,7 @@ process_record (struct Request *req, | |||
265 | case GNUNET_DNSPARSER_TYPE_SSHFP: | 273 | case GNUNET_DNSPARSER_TYPE_SSHFP: |
266 | case GNUNET_DNSPARSER_TYPE_IPSECKEY: | 274 | case GNUNET_DNSPARSER_TYPE_IPSECKEY: |
267 | case GNUNET_DNSPARSER_TYPE_TLSA: | 275 | case GNUNET_DNSPARSER_TYPE_TLSA: |
276 | case GNUNET_DNSPARSER_TYPE_SMIMEA: | ||
268 | case GNUNET_DNSPARSER_TYPE_OPENPGPKEY: | 277 | case GNUNET_DNSPARSER_TYPE_OPENPGPKEY: |
269 | 278 | ||
270 | /* obsolete records */ | 279 | /* obsolete records */ |
diff --git a/src/service/gns/gnunet-service-gns_interceptor.c b/src/service/gns/gnunet-service-gns_interceptor.c index f49d60b94..acc4e3fbc 100644 --- a/src/service/gns/gnunet-service-gns_interceptor.c +++ b/src/service/gns/gnunet-service-gns_interceptor.c | |||
@@ -168,6 +168,11 @@ reply_to_dns (void *cls, uint32_t rd_count, | |||
168 | skip_answers++; | 168 | skip_answers++; |
169 | break; | 169 | break; |
170 | 170 | ||
171 | case GNUNET_DNSPARSER_TYPE_URI: | ||
172 | /* FIXME: URI is not yet supported */ | ||
173 | skip_answers++; | ||
174 | break; | ||
175 | |||
171 | case GNUNET_DNSPARSER_TYPE_MX: | 176 | case GNUNET_DNSPARSER_TYPE_MX: |
172 | answer_records[i - skip_answers].data.mx | 177 | answer_records[i - skip_answers].data.mx |
173 | = GNUNET_DNSPARSER_parse_mx (rd[i].data, | 178 | = GNUNET_DNSPARSER_parse_mx (rd[i].data, |
@@ -245,6 +250,11 @@ reply_to_dns (void *cls, uint32_t rd_count, | |||
245 | skip_answers++; | 250 | skip_answers++; |
246 | break; | 251 | break; |
247 | 252 | ||
253 | case GNUNET_DNSPARSER_TYPE_URI: | ||
254 | /* FIXME: URI is not yet supported */ | ||
255 | skip_answers++; | ||
256 | break; | ||
257 | |||
248 | default: | 258 | default: |
249 | additional_records[i - skip_additional].data.raw.data_len = | 259 | additional_records[i - skip_additional].data.raw.data_len = |
250 | rd[i].data_size; | 260 | rd[i].data_size; |
diff --git a/src/service/gns/gnunet-service-gns_resolver.c b/src/service/gns/gnunet-service-gns_resolver.c index aa0189b15..edef6a8ab 100644 --- a/src/service/gns/gnunet-service-gns_resolver.c +++ b/src/service/gns/gnunet-service-gns_resolver.c | |||
@@ -1085,6 +1085,22 @@ dns_result_parser (void *cls, | |||
1085 | rd[i - skip].data_size = buf_off - buf_start; | 1085 | rd[i - skip].data_size = buf_off - buf_start; |
1086 | rd[i - skip].data = &buf[buf_start]; | 1086 | rd[i - skip].data = &buf[buf_start]; |
1087 | break; | 1087 | break; |
1088 | |||
1089 | case GNUNET_DNSPARSER_TYPE_URI: | ||
1090 | buf_start = buf_off; | ||
1091 | if (GNUNET_OK != | ||
1092 | GNUNET_DNSPARSER_builder_add_uri (buf, | ||
1093 | sizeof(buf), | ||
1094 | &buf_off, | ||
1095 | rec->data.uri)) | ||
1096 | { | ||
1097 | GNUNET_break (0); | ||
1098 | skip++; | ||
1099 | continue; | ||
1100 | } | ||
1101 | rd[i - skip].data_size = buf_off - buf_start; | ||
1102 | rd[i - skip].data = &buf[buf_start]; | ||
1103 | break; | ||
1088 | 1104 | ||
1089 | default: | 1105 | default: |
1090 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 1106 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
@@ -2170,6 +2186,45 @@ handle_gns_resolution_result (void *cls, | |||
2170 | } | 2186 | } |
2171 | break; | 2187 | break; |
2172 | 2188 | ||
2189 | case GNUNET_DNSPARSER_TYPE_URI: | ||
2190 | { | ||
2191 | struct GNUNET_DNSPARSER_UriRecord *uri; | ||
2192 | |||
2193 | off = 0; | ||
2194 | uri = GNUNET_DNSPARSER_parse_uri (rd[i].data, | ||
2195 | rd[i].data_size, | ||
2196 | &off); | ||
2197 | if ((NULL == uri) || | ||
2198 | (off != rd[i].data_size)) | ||
2199 | { | ||
2200 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | ||
2201 | _ ("Failed to deserialize URI record with target\n")); | ||
2202 | GNUNET_break_op (0); /* record not well-formed */ | ||
2203 | } | ||
2204 | else | ||
2205 | { | ||
2206 | scratch_start = scratch_off; | ||
2207 | if (GNUNET_OK != | ||
2208 | GNUNET_DNSPARSER_builder_add_uri (scratch, | ||
2209 | sizeof(scratch), | ||
2210 | &scratch_off, | ||
2211 | uri)) | ||
2212 | { | ||
2213 | GNUNET_break (0); | ||
2214 | } | ||
2215 | else | ||
2216 | { | ||
2217 | GNUNET_assert (rd_off < rd_count); | ||
2218 | rd_new[rd_off].data = &scratch[scratch_start]; | ||
2219 | rd_new[rd_off].data_size = scratch_off - scratch_start; | ||
2220 | rd_off++; | ||
2221 | } | ||
2222 | } | ||
2223 | if (NULL != uri) | ||
2224 | GNUNET_DNSPARSER_free_uri (uri); | ||
2225 | } | ||
2226 | break; | ||
2227 | |||
2173 | case GNUNET_GNSRECORD_TYPE_PKEY: | 2228 | case GNUNET_GNSRECORD_TYPE_PKEY: |
2174 | case GNUNET_GNSRECORD_TYPE_EDKEY: | 2229 | case GNUNET_GNSRECORD_TYPE_EDKEY: |
2175 | { | 2230 | { |