aboutsummaryrefslogtreecommitdiff
path: root/src/service
diff options
context:
space:
mode:
Diffstat (limited to 'src/service')
-rw-r--r--src/service/dns/gnunet-dns-monitor.c17
-rw-r--r--src/service/dns/gnunet-zonewalk.c11
-rw-r--r--src/service/gns/gnunet-service-gns_interceptor.c10
-rw-r--r--src/service/gns/gnunet-service-gns_resolver.c55
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 {