Skip to content

Commit

Permalink
Add regression test for TLSA.
Browse files Browse the repository at this point in the history
  • Loading branch information
vstakhov committed Mar 27, 2014
1 parent 495ef96 commit 96f6a32
Showing 1 changed file with 56 additions and 2 deletions.
58 changes: 56 additions & 2 deletions test/dns_regress.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,46 @@

static int remain_tests = 0;



static void
rdns_regress_callback (struct rdns_reply *reply, void *arg)
{
printf ("got result for host: %s\n", (const char *)arg);
struct rdns_reply_entry *entry;

printf ("got result for host: %s, code: %s\n", (const char *)arg,
rdns_strerror (reply->code));

if (reply->code == DNS_RC_NOERROR) {
entry = reply->entries;
while (entry != NULL) {
if (entry->type == DNS_REQUEST_A) {
printf ("%s is %s\n", (char *)arg, inet_ntoa (entry->content.a.addr));
}
else if (entry->type == DNS_REQUEST_TLSA) {
char *hex, *p;
unsigned i;

hex = malloc (entry->content.tlsa.datalen * 2 + 1);
p = hex;

for (i = 0; i < entry->content.tlsa.datalen; i ++) {
sprintf (p, "%02x", entry->content.tlsa.data[i]);
p += 2;
}

printf ("%s has TLSA record (%d %d %d) %s\n",
(char *)arg,
(int)entry->content.tlsa.usage,
(int)entry->content.tlsa.selector,
(int)entry->content.tlsa.match_type,
hex);

free (hex);
}
entry = entry->next;
}
}

if (--remain_tests == 0) {
rdns_resolver_release (reply->resolver);
Expand All @@ -58,6 +94,22 @@ rdns_test_a (struct rdns_resolver *resolver)
}
}

static void
rdns_test_tlsa (struct rdns_resolver *resolver)
{
const char *names[] = {
"_25._tcp.mail6.highsecure.ru",
"_25._tcp.open.NLnetLabs.nl",
NULL
};
const char **cur;

for (cur = names; *cur != NULL; cur ++) {
rdns_make_request_full (resolver, rdns_regress_callback, *cur, 1.0, 2, *cur, 1, DNS_REQUEST_TLSA);
remain_tests ++;
}
}

int
main (int argc, char **argv)
{
Expand All @@ -72,23 +124,25 @@ main (int argc, char **argv)
rdns_bind_libev (resolver_ev, loop);
rdns_resolver_set_log_level (resolver_ev, RDNS_LOG_DEBUG);
rdns_resolver_set_max_io_uses (resolver_ev, 1, 0.1);
/* Google and opendns */
assert (rdns_resolver_parse_resolv_conf (resolver_ev, "/etc/resolv.conf"));

resolver_event = rdns_resolver_new ();
rdns_bind_libevent (resolver_event, base);
rdns_resolver_set_log_level (resolver_event, RDNS_LOG_DEBUG);
/* Google and opendns */
assert (rdns_resolver_add_server (resolver_event, "208.67.222.222", 53, 0, 8));
assert (rdns_resolver_add_server (resolver_event, "8.8.8.8", 53, 0, 1));

assert (rdns_resolver_init (resolver_ev));
assert (rdns_resolver_init (resolver_event));

rdns_test_a (resolver_ev);
rdns_test_tlsa (resolver_ev);
ev_loop (loop, 0);
ev_loop_destroy (loop);

rdns_test_a (resolver_event);
rdns_test_tlsa (resolver_event);
event_base_loop (base, 0);
event_base_free (base);

Expand Down

0 comments on commit 96f6a32

Please sign in to comment.