mirror of https://github.com/getdnsapi/getdns.git
getdns_query -k to test for root trust anchor
has exit status 0 on success, 1 otherwise.
This commit is contained in:
parent
70857ccc74
commit
cacd8951ff
|
@ -149,6 +149,7 @@ print_usage(FILE *out, const char *progname)
|
||||||
fprintf(out, "\t-J\tPretty print json response dict\n");
|
fprintf(out, "\t-J\tPretty print json response dict\n");
|
||||||
fprintf(out, "\t-p\tPretty print response dict\n");
|
fprintf(out, "\t-p\tPretty print response dict\n");
|
||||||
fprintf(out, "\t-r\tSet recursing resolution type\n");
|
fprintf(out, "\t-r\tSet recursing resolution type\n");
|
||||||
|
fprintf(out, "\t-R\tPrint root trust anchors\n");
|
||||||
fprintf(out, "\t-s\tSet stub resolution type (default = recursing)\n");
|
fprintf(out, "\t-s\tSet stub resolution type (default = recursing)\n");
|
||||||
fprintf(out, "\t-S\tservice lookup (<type> is ignored)\n");
|
fprintf(out, "\t-S\tservice lookup (<type> is ignored)\n");
|
||||||
fprintf(out, "\t-t <timeout>\tSet timeout in miliseconds\n");
|
fprintf(out, "\t-t <timeout>\tSet timeout in miliseconds\n");
|
||||||
|
@ -288,6 +289,7 @@ void callback(getdns_context *context, getdns_callback_type_t callback_type,
|
||||||
}
|
}
|
||||||
|
|
||||||
#define CONTINUE ((getdns_return_t)-2)
|
#define CONTINUE ((getdns_return_t)-2)
|
||||||
|
#define CONTINUE_ERROR ((getdns_return_t)-3)
|
||||||
|
|
||||||
static getdns_return_t set_cookie(getdns_dict *exts, char *cookie)
|
static getdns_return_t set_cookie(getdns_dict *exts, char *cookie)
|
||||||
{
|
{
|
||||||
|
@ -325,7 +327,7 @@ static getdns_return_t set_cookie(getdns_dict *exts, char *cookie)
|
||||||
}
|
}
|
||||||
bindata.data = data;
|
bindata.data = data;
|
||||||
bindata.size = i;
|
bindata.size = i;
|
||||||
if ((r = getdns_dict_set_int(option, "option_code", 65001)))
|
if ((r = getdns_dict_set_int(option, "option_code", 10)))
|
||||||
goto done;
|
goto done;
|
||||||
if ((r = getdns_dict_set_bindata(option, "option_data", &bindata)))
|
if ((r = getdns_dict_set_bindata(option, "option_data", &bindata)))
|
||||||
goto done;
|
goto done;
|
||||||
|
@ -346,8 +348,9 @@ getdns_return_t parse_args(int argc, char **argv)
|
||||||
getdns_return_t r = GETDNS_RETURN_GOOD;
|
getdns_return_t r = GETDNS_RETURN_GOOD;
|
||||||
size_t i;
|
size_t i;
|
||||||
char *arg, *c, *endptr;
|
char *arg, *c, *endptr;
|
||||||
int t, print_api_info = 0;
|
int t, print_api_info = 0, print_trust_anchors = 0;
|
||||||
getdns_list *upstream_list = NULL;
|
getdns_list *upstream_list = NULL;
|
||||||
|
getdns_list *tas = NULL;
|
||||||
size_t upstream_count = 0;
|
size_t upstream_count = 0;
|
||||||
|
|
||||||
for (i = 1; i < argc; i++) {
|
for (i = 1; i < argc; i++) {
|
||||||
|
@ -454,6 +457,9 @@ getdns_return_t parse_args(int argc, char **argv)
|
||||||
case 'J':
|
case 'J':
|
||||||
json = 1;
|
json = 1;
|
||||||
break;
|
break;
|
||||||
|
case 'k':
|
||||||
|
print_trust_anchors = 1;
|
||||||
|
break;
|
||||||
case 'p':
|
case 'p':
|
||||||
json = 0;
|
json = 0;
|
||||||
case 'q':
|
case 'q':
|
||||||
|
@ -573,6 +579,13 @@ next: ;
|
||||||
getdns_context_get_api_information(context)));
|
getdns_context_get_api_information(context)));
|
||||||
return CONTINUE;
|
return CONTINUE;
|
||||||
}
|
}
|
||||||
|
if (print_trust_anchors) {
|
||||||
|
if ((tas = getdns_root_trust_anchor(NULL))) {
|
||||||
|
fprintf(stdout, "%s\n", getdns_pretty_print_list(tas));
|
||||||
|
return CONTINUE;
|
||||||
|
} else
|
||||||
|
return CONTINUE_ERROR;
|
||||||
|
}
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -636,7 +649,7 @@ main(int argc, char **argv)
|
||||||
while (linec < 256 &&
|
while (linec < 256 &&
|
||||||
(token = strtok(NULL, " \t\f\n\r")));
|
(token = strtok(NULL, " \t\f\n\r")));
|
||||||
if ((r = parse_args(linec, linev))) {
|
if ((r = parse_args(linec, linev))) {
|
||||||
if (r == CONTINUE)
|
if (r == CONTINUE || r == CONTINUE_ERROR)
|
||||||
continue;
|
continue;
|
||||||
else
|
else
|
||||||
goto done_destroy_context;
|
goto done_destroy_context;
|
||||||
|
@ -738,6 +751,8 @@ done_destroy_context:
|
||||||
|
|
||||||
if (r == CONTINUE)
|
if (r == CONTINUE)
|
||||||
return 0;
|
return 0;
|
||||||
|
else if (r == CONTINUE_ERROR)
|
||||||
|
return 1;
|
||||||
fprintf(stdout, "\nAll done.\n");
|
fprintf(stdout, "\nAll done.\n");
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
@ -808,6 +823,12 @@ int get_rrtype(const char *t) {
|
||||||
if ((t[2]|0x20) == 'a' && (t[3]|0x20) == 'm' && (t[4]|0x20) == 'e' && t[5] == '\0')
|
if ((t[2]|0x20) == 'a' && (t[3]|0x20) == 'm' && (t[4]|0x20) == 'e' && t[5] == '\0')
|
||||||
return GETDNS_RRTYPE_CNAME;
|
return GETDNS_RRTYPE_CNAME;
|
||||||
return -1;
|
return -1;
|
||||||
|
case 'S':
|
||||||
|
case 's': /* before "CS", final "YNC" (GETDNS_RRTYPE_CSYNC) */
|
||||||
|
if ((t[2]|0x20) == 'y' && (t[3]|0x20) == 'n' && (t[4]|0x20) == 'c' && t[5] == '\0')
|
||||||
|
return GETDNS_RRTYPE_CSYNC;
|
||||||
|
return -1;
|
||||||
|
|
||||||
default : return -1;
|
default : return -1;
|
||||||
};
|
};
|
||||||
case 'D':
|
case 'D':
|
||||||
|
|
Loading…
Reference in New Issue