]>
git.ipfire.org Git - thirdparty/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
19 #include <utils/debug.h>
24 static level_t dbg_level
= 1;
26 static void dbg_dnssec(debug_t group
, level_t level
, char *fmt
, ...)
28 if ((level
<= dbg_level
) || level
<= 1)
33 vfprintf(stderr
, fmt
, args
);
34 fprintf(stderr
, "\n");
39 int main(int argc
, char *argv
[])
42 resolver_response_t
*response
;
43 enumerator_t
*enumerator
;
48 library_init(NULL
, "dnssec");
49 atexit(library_deinit
);
53 if (!lib
->plugins
->load(lib
->plugins
, PLUGINS
))
59 fprintf(stderr
, "usage: dnssec <name>\n");
63 resolver
= lib
->resolver
->create(lib
->resolver
);
66 printf("failed to create a resolver!\n");
70 response
= resolver
->query(resolver
, argv
[1], RR_CLASS_IN
, RR_TYPE_A
);
73 printf("no response received!\n");
74 resolver
->destroy(resolver
);
78 printf("DNS response:\n");
79 if (!response
->has_data(response
) || !response
->query_name_exist(response
))
81 if (!response
->has_data(response
))
83 printf(" no data in the response\n");
85 if (!response
->query_name_exist(response
))
87 printf(" query name does not exist\n");
89 response
->destroy(response
);
90 resolver
->destroy(resolver
);
94 printf(" RRs in the response:\n");
95 rrset
= response
->get_rr_set(response
);
98 printf(" response contains no RRset!\n");
99 response
->destroy(response
);
100 resolver
->destroy(resolver
);
104 enumerator
= rrset
->create_rr_enumerator(rrset
);
105 while (enumerator
->enumerate(enumerator
, &rr
))
107 printf(" name: %s\n", rr
->get_name(rr
));
110 enumerator
= rrset
->create_rrsig_enumerator(rrset
);
113 printf(" RRSIGs for the RRset:\n");
114 while (enumerator
->enumerate(enumerator
, &rr
))
116 rdata
= rr
->get_rdata(rr
);
118 printf(" name: %s\n", rr
->get_name(rr
));
119 printf(" RDATA: %#B\n", &rdata
);
123 printf(" security status of the response: ");
124 switch (response
->get_security_state(response
))
127 printf("SECURE\n\n");
130 printf("INSECURE\n\n");
136 printf("INDETERMINATE\n\n");
139 response
->destroy(response
);
140 resolver
->destroy(resolver
);