]>
git.ipfire.org Git - people/ms/strongswan.git/blob - scripts/dnssec.c
2 * Copyright (C) 2011-2012 Reto Guadagnini
3 * Hochschule fuer Technik Rapperswil
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License as published by the
7 * Free Software Foundation; either version 2 of the License, or (at your
8 * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
12 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
20 int main(int argc
, char *argv
[])
23 resolver_response_t
*response
;
24 enumerator_t
*enumerator
;
30 atexit(library_deinit
);
31 if (!lib
->plugins
->load(lib
->plugins
, NULL
, PLUGINS
))
37 fprintf(stderr
, "usage: %s <name>\n", argv
[0]);
41 resolver
= lib
->resolver
->create(lib
->resolver
);
44 printf("failed to create a resolver!\n");
48 response
= resolver
->query(resolver
, argv
[1], RR_CLASS_IN
, RR_TYPE_A
);
51 printf("no response received!\n");
52 resolver
->destroy(resolver
);
56 printf("DNS response:\n");
57 if (!response
->has_data(response
) || !response
->query_name_exist(response
))
59 if (!response
->has_data(response
))
61 printf(" no data in the response\n");
63 if (!response
->query_name_exist(response
))
65 printf(" query name does not exist\n");
67 response
->destroy(response
);
68 resolver
->destroy(resolver
);
72 printf(" RRs in the response:\n");
73 rrset
= response
->get_rr_set(response
);
76 printf(" response contains no RRset!\n");
77 response
->destroy(response
);
78 resolver
->destroy(resolver
);
82 enumerator
= rrset
->create_rr_enumerator(rrset
);
83 while (enumerator
->enumerate(enumerator
, &rr
))
86 printf(rr
->get_name(rr
));
90 enumerator
= rrset
->create_rrsig_enumerator(rrset
);
93 printf(" RRSIGs for the RRset:\n");
94 while (enumerator
->enumerate(enumerator
, &rr
))
97 printf(rr
->get_name(rr
));
99 chunk
= rr
->get_rdata(rr
);
100 chunk
= chunk_to_hex(chunk
, NULL
, TRUE
);
106 printf(" security status of the response: ");
107 switch (response
->get_security_state(response
))
110 printf("SECURE\n\n");
113 printf("INSECURE\n\n");
119 printf("INDETERMINATE\n\n");
122 response
->destroy(response
);
123 resolver
->destroy(resolver
);