diff options
author | Christian Grothoff <christian@grothoff.org> | 2018-04-06 20:08:52 +0200 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2018-04-06 20:08:52 +0200 |
commit | e0d9869415af5a5752e3b27ea14b249a52ac9877 (patch) | |
tree | 140e99c88e4ea9eeb7146acfdea36e05c4b02323 /src | |
parent | 4e2412d14731d4da085b0ce353d3d9d2eb2a0756 (diff) | |
download | gnunet-e0d9869415af5a5752e3b27ea14b249a52ac9877.tar.gz gnunet-e0d9869415af5a5752e3b27ea14b249a52ac9877.zip |
do work on more record types
Diffstat (limited to 'src')
-rw-r--r-- | src/dns/dnsparser.c | 5 | ||||
-rw-r--r-- | src/dns/gnunet-zoneimport.c | 88 | ||||
-rw-r--r-- | src/include/gnunet_dnsparser_lib.h | 27 |
3 files changed, 118 insertions, 2 deletions
diff --git a/src/dns/dnsparser.c b/src/dns/dnsparser.c index 1fe6f595f..ab833f7c5 100644 --- a/src/dns/dnsparser.c +++ b/src/dns/dnsparser.c | |||
@@ -615,6 +615,7 @@ GNUNET_DNSPARSER_parse_record (const char *udp_payload, | |||
615 | { | 615 | { |
616 | case GNUNET_DNSPARSER_TYPE_NS: | 616 | case GNUNET_DNSPARSER_TYPE_NS: |
617 | case GNUNET_DNSPARSER_TYPE_CNAME: | 617 | case GNUNET_DNSPARSER_TYPE_CNAME: |
618 | case GNUNET_DNSPARSER_TYPE_DNAME: | ||
618 | case GNUNET_DNSPARSER_TYPE_PTR: | 619 | case GNUNET_DNSPARSER_TYPE_PTR: |
619 | r->data.hostname = GNUNET_DNSPARSER_parse_name (udp_payload, | 620 | r->data.hostname = GNUNET_DNSPARSER_parse_name (udp_payload, |
620 | udp_payload_length, | 621 | udp_payload_length, |
@@ -659,7 +660,9 @@ GNUNET_DNSPARSER_parse_record (const char *udp_payload, | |||
659 | default: | 660 | default: |
660 | r->data.raw.data = GNUNET_malloc (data_len); | 661 | r->data.raw.data = GNUNET_malloc (data_len); |
661 | r->data.raw.data_len = data_len; | 662 | r->data.raw.data_len = data_len; |
662 | GNUNET_memcpy (r->data.raw.data, &udp_payload[*off], data_len); | 663 | GNUNET_memcpy (r->data.raw.data, |
664 | &udp_payload[*off], | ||
665 | data_len); | ||
663 | break; | 666 | break; |
664 | } | 667 | } |
665 | (*off) += data_len; | 668 | (*off) += data_len; |
diff --git a/src/dns/gnunet-zoneimport.c b/src/dns/gnunet-zoneimport.c index c1897d6e6..914868af4 100644 --- a/src/dns/gnunet-zoneimport.c +++ b/src/dns/gnunet-zoneimport.c | |||
@@ -189,6 +189,94 @@ process_record (struct Request *req, | |||
189 | (unsigned int) rec->data.mx->preference, | 189 | (unsigned int) rec->data.mx->preference, |
190 | rec->data.mx->mxhost); | 190 | rec->data.mx->mxhost); |
191 | break; | 191 | break; |
192 | case GNUNET_DNSPARSER_TYPE_SOA: | ||
193 | fprintf (stdout, | ||
194 | "%s SOA %s %s %u %u %u %u %u\n", | ||
195 | req->hostname, | ||
196 | rec->data.soa->mname, | ||
197 | rec->data.soa->rname, | ||
198 | (unsigned int) rec->data.soa->serial, | ||
199 | (unsigned int) rec->data.soa->refresh, | ||
200 | (unsigned int) rec->data.soa->retry, | ||
201 | (unsigned int) rec->data.soa->expire, | ||
202 | (unsigned int) rec->data.soa->minimum_ttl); | ||
203 | break; | ||
204 | case GNUNET_DNSPARSER_TYPE_SRV: | ||
205 | fprintf (stdout, | ||
206 | "%s SRV %s %u %u %u\n", | ||
207 | req->hostname, | ||
208 | rec->data.srv->target, | ||
209 | rec->data.srv->priority, | ||
210 | rec->data.srv->weight, | ||
211 | rec->data.srv->port); | ||
212 | break; | ||
213 | case GNUNET_DNSPARSER_TYPE_PTR: | ||
214 | fprintf (stdout, | ||
215 | "%s PTR %s\n", | ||
216 | req->hostname, | ||
217 | rec->data.hostname); | ||
218 | break; | ||
219 | case GNUNET_DNSPARSER_TYPE_TXT: | ||
220 | fprintf (stdout, | ||
221 | "%s TXT %.*s\n", | ||
222 | req->hostname, | ||
223 | (int) rec->data.raw.data_len, | ||
224 | (char *) rec->data.raw.data); | ||
225 | break; | ||
226 | case GNUNET_DNSPARSER_TYPE_DNAME: | ||
227 | fprintf (stdout, | ||
228 | "%s DNAME %s\n", | ||
229 | req->hostname, | ||
230 | rec->data.hostname); | ||
231 | break; | ||
232 | |||
233 | /* obscure records */ | ||
234 | case GNUNET_DNSPARSER_TYPE_AFSDB: | ||
235 | case GNUNET_DNSPARSER_TYPE_NAPTR: | ||
236 | case GNUNET_DNSPARSER_TYPE_APL: | ||
237 | case GNUNET_DNSPARSER_TYPE_DHCID: | ||
238 | case GNUNET_DNSPARSER_TYPE_HIP: | ||
239 | case GNUNET_DNSPARSER_TYPE_LOC: | ||
240 | case GNUNET_DNSPARSER_TYPE_RP: | ||
241 | case GNUNET_DNSPARSER_TYPE_TKEY: | ||
242 | case GNUNET_DNSPARSER_TYPE_TSIG: | ||
243 | case GNUNET_DNSPARSER_TYPE_URI: | ||
244 | case GNUNET_DNSPARSER_TYPE_TA: | ||
245 | |||
246 | /* DNSSEC */ | ||
247 | case GNUNET_DNSPARSER_TYPE_DS: | ||
248 | case GNUNET_DNSPARSER_TYPE_RRSIG: | ||
249 | case GNUNET_DNSPARSER_TYPE_NSEC: | ||
250 | case GNUNET_DNSPARSER_TYPE_DNSKEY: | ||
251 | case GNUNET_DNSPARSER_TYPE_NSEC3: | ||
252 | case GNUNET_DNSPARSER_TYPE_NSEC3PARAM: | ||
253 | case GNUNET_DNSPARSER_TYPE_CDS: | ||
254 | case GNUNET_DNSPARSER_TYPE_CDNSKEY: | ||
255 | |||
256 | /* DNSSEC payload */ | ||
257 | case GNUNET_DNSPARSER_TYPE_CERT: | ||
258 | case GNUNET_DNSPARSER_TYPE_SSHFP: | ||
259 | case GNUNET_DNSPARSER_TYPE_IPSECKEY: | ||
260 | case GNUNET_DNSPARSER_TYPE_TLSA: | ||
261 | case GNUNET_DNSPARSER_TYPE_OPENPGPKEY: | ||
262 | |||
263 | /* obsolete records */ | ||
264 | case GNUNET_DNSPARSER_TYPE_SIG: | ||
265 | case GNUNET_DNSPARSER_TYPE_KEY: | ||
266 | case GNUNET_DNSPARSER_TYPE_KX: | ||
267 | { | ||
268 | char *base32; | ||
269 | |||
270 | base32 = GNUNET_STRINGS_data_to_string_alloc (rec->data.raw.data, | ||
271 | rec->data.raw.data_len); | ||
272 | fprintf (stdout, | ||
273 | "%s (%u) %s\n", | ||
274 | req->hostname, | ||
275 | rec->type, | ||
276 | base32); | ||
277 | GNUNET_free (base32); | ||
278 | } | ||
279 | break; | ||
192 | default: | 280 | default: |
193 | fprintf (stderr, | 281 | fprintf (stderr, |
194 | "Unsupported type %u\n", | 282 | "Unsupported type %u\n", |
diff --git a/src/include/gnunet_dnsparser_lib.h b/src/include/gnunet_dnsparser_lib.h index 57709d5f7..3a2f785d3 100644 --- a/src/include/gnunet_dnsparser_lib.h +++ b/src/include/gnunet_dnsparser_lib.h | |||
@@ -57,11 +57,36 @@ | |||
57 | #define GNUNET_DNSPARSER_TYPE_PTR 12 | 57 | #define GNUNET_DNSPARSER_TYPE_PTR 12 |
58 | #define GNUNET_DNSPARSER_TYPE_MX 15 | 58 | #define GNUNET_DNSPARSER_TYPE_MX 15 |
59 | #define GNUNET_DNSPARSER_TYPE_TXT 16 | 59 | #define GNUNET_DNSPARSER_TYPE_TXT 16 |
60 | #define GNUNET_DNSPARSER_TYPE_RP 17 | ||
61 | #define GNUNET_DNSPARSER_TYPE_AFSDB 18 | ||
62 | #define GNUNET_DNSPARSER_TYPE_SIG 24 | ||
63 | #define GNUNET_DNSPARSER_TYPE_KEY 25 | ||
60 | #define GNUNET_DNSPARSER_TYPE_AAAA 28 | 64 | #define GNUNET_DNSPARSER_TYPE_AAAA 28 |
65 | #define GNUNET_DNSPARSER_TYPE_LOC 29 | ||
61 | #define GNUNET_DNSPARSER_TYPE_SRV 33 | 66 | #define GNUNET_DNSPARSER_TYPE_SRV 33 |
67 | #define GNUNET_DNSPARSER_TYPE_NAPTR 35 | ||
68 | #define GNUNET_DNSPARSER_TYPE_KX 36 | ||
62 | #define GNUNET_DNSPARSER_TYPE_CERT 37 | 69 | #define GNUNET_DNSPARSER_TYPE_CERT 37 |
70 | #define GNUNET_DNSPARSER_TYPE_DNAME 39 | ||
71 | #define GNUNET_DNSPARSER_TYPE_APL 42 | ||
72 | #define GNUNET_DNSPARSER_TYPE_DS 43 | ||
73 | #define GNUNET_DNSPARSER_TYPE_SSHFP 44 | ||
74 | #define GNUNET_DNSPARSER_TYPE_IPSECKEY 45 | ||
75 | #define GNUNET_DNSPARSER_TYPE_RRSIG 46 | ||
76 | #define GNUNET_DNSPARSER_TYPE_NSEC 47 | ||
77 | #define GNUNET_DNSPARSER_TYPE_DNSKEY 48 | ||
78 | #define GNUNET_DNSPARSER_TYPE_DHCID 49 | ||
79 | #define GNUNET_DNSPARSER_TYPE_NSEC3 50 | ||
80 | #define GNUNET_DNSPARSER_TYPE_NSEC3PARAM 51 | ||
63 | #define GNUNET_DNSPARSER_TYPE_TLSA 52 | 81 | #define GNUNET_DNSPARSER_TYPE_TLSA 52 |
64 | 82 | #define GNUNET_DNSPARSER_TYPE_HIP 55 | |
83 | #define GNUNET_DNSPARSER_TYPE_CDS 59 | ||
84 | #define GNUNET_DNSPARSER_TYPE_CDNSKEY 60 | ||
85 | #define GNUNET_DNSPARSER_TYPE_OPENPGPKEY 61 | ||
86 | #define GNUNET_DNSPARSER_TYPE_TKEY 249 | ||
87 | #define GNUNET_DNSPARSER_TYPE_TSIG 250 | ||
88 | #define GNUNET_DNSPARSER_TYPE_URI 256 | ||
89 | #define GNUNET_DNSPARSER_TYPE_TA 32768 | ||
65 | 90 | ||
66 | /** | 91 | /** |
67 | * A DNS query. | 92 | * A DNS query. |