Skip to content
Snippets Groups Projects
Commit 3dbc0c65 authored by Daniel Salzman's avatar Daniel Salzman
Browse files

dig/host params processing refactoring

refs #2137
parent a6c7eab3
No related branches found
No related tags found
No related merge requests found
......@@ -232,6 +232,26 @@ char* get_fqd_name(const char *name)
return fqd_name;
}
void params_flag_ipv4(params_t *params)
{
params->ip = IP_4;
}
void params_flag_ipv6(params_t *params)
{
params->ip = IP_6;
}
void params_flag_servfail(params_t *params)
{
params->servfail_stop = true;
}
void params_flag_nowait(params_t *params)
{
params->wait = -1;
}
void params_flag_tcp(params_t *params)
{
params->protocol = PROTO_TCP;
......@@ -239,8 +259,7 @@ void params_flag_tcp(params_t *params)
void params_flag_verbose(params_t *params)
{
params->format = FORMAT_VERBOSE;
params->format = FORMAT_VERBOSE;
}
int params_parse_interval(const char *value, int32_t *dst)
......
......@@ -38,7 +38,6 @@
#define DEFAULT_DNS_PORT "53"
#define DEFAULT_UDP_SIZE 512
#define MAX_PACKET_SIZE 65535
#define DEFAULT_WAIT_INTERVAL 1
#define SEP_CHARS "\n\t "
......@@ -118,6 +117,14 @@ char* get_reverse_name(const char *name);
char* get_fqd_name(const char *name);
void params_flag_ipv4(params_t *params);
void params_flag_ipv6(params_t *params);
void params_flag_servfail(params_t *params);
void params_flag_nowait(params_t *params);
void params_flag_tcp(params_t *params);
void params_flag_verbose(params_t *params);
......
......@@ -28,6 +28,9 @@
#include "utils/common/params.h" // parse_class
#include "utils/common/resolv.h" // get_nameservers
#define DEFAULT_RETRIES_DIG 3
#define DEFAULT_TIMEOUT_DIG 5
query_t* query_create(const char *name, const uint16_t type)
{
// Create output structure.
......@@ -85,8 +88,8 @@ static int dig_params_init(params_t *params)
params->class_num = KNOT_CLASS_IN;
params->type_num = -1;
params->xfr_serial = -1;
params->retries = 1;
params->wait = DEFAULT_WAIT_INTERVAL;
params->retries = DEFAULT_RETRIES_DIG;
params->wait = DEFAULT_TIMEOUT_DIG;
params->servfail_stop = false;
params->format = FORMAT_VERBOSE;
......@@ -126,48 +129,12 @@ void dig_params_clean(params_t *params)
memset(params, 0, sizeof(*params));
}
static void dig_params_flag_all(params_t *params)
{
params->type_num = KNOT_RRTYPE_ANY;
params->format = FORMAT_VERBOSE;
}
static void dig_params_flag_soa(params_t *params)
{
params->type_num = KNOT_RRTYPE_SOA;
params->operation = OPERATION_LIST_SOA;
}
static void dig_params_flag_axfr(params_t *params)
{
params->type_num = KNOT_RRTYPE_AXFR;
}
static void dig_params_flag_norecurse(params_t *params)
{
DIG_PARAM(params)->rd_flag = false;
}
static void dig_params_flag_ipv4(params_t *params)
{
params->ip = IP_4;
}
static void dig_params_flag_ipv6(params_t *params)
{
params->ip = IP_6;
}
static void dig_params_flag_servfail(params_t *params)
{
params->servfail_stop = true;
}
static void dig_params_flag_nowait(params_t *params)
{
params->wait = -1;
}
static int dig_params_parse_name(params_t *params, const char *name)
{
char *reverse = get_reverse_name(name);
......@@ -255,33 +222,38 @@ static int dig_params_parse_name(params_t *params, const char *name)
return KNOT_EOK;
}
static int dig_params_parse_server(params_t *params, const char *name)
static void dig_params_help(int argc, char *argv[])
{
printf("Usage: %s [-aCdlrsTvw] [-4] [-6] [-c class] [-R retries]\n"
" %*c [-t type] [-W time] name [server]\n",
argv[0], (int)strlen(argv[0]), ' ');
}
static int dig_params_parse_server(list *servers, const char *name)
{
node *n = NULL, *nxt = NULL;
// Remove default nameservers.
WALK_LIST_DELSAFE(n, nxt, params->servers) {
server_free((server_t *)n);
}
WALK_LIST_DELSAFE(n, nxt, *servers) {
server_free((server_t *)n);
}
// Initialize blank server list.
init_list(&params->servers);
init_list(servers);
// Add specified nameserver.
server_t *server = parse_nameserver(name);
if (server == NULL) {
return KNOT_ENOMEM;
}
add_tail(&params->servers, (node *)server);
add_tail(servers, (node *)server);
return KNOT_EOK;
}
static void dig_params_help(int argc, char *argv[])
void dig_params_flag_norecurse(params_t *params)
{
printf("Usage: %s [-aCdlrsTvw] [-4] [-6] [-c class] [-R retries]\n"
" %*c [-t type] [-W time] name [server]\n",
argv[0], (int)strlen(argv[0]), ' ');
DIG_PARAM(params)->rd_flag = false;
}
int dig_params_parse(params_t *params, int argc, char *argv[])
......@@ -300,35 +272,25 @@ int dig_params_parse(params_t *params, int argc, char *argv[])
while ((opt = getopt(argc, argv, "46aCdlrsTvwc:R:t:W:")) != -1) {
switch (opt) {
case '4':
dig_params_flag_ipv4(params);
params_flag_ipv4(params);
break;
case '6':
dig_params_flag_ipv6(params);
break;
case 'a':
dig_params_flag_all(params);
params_flag_ipv6(params);
break;
case 'C':
dig_params_flag_soa(params);
break;
case 'd':
case 'v': // Fall through.
params_flag_verbose(params);
break;
case 'l':
dig_params_flag_axfr(params);
break;
case 'r':
dig_params_flag_norecurse(params);
break;
case 's':
dig_params_flag_servfail(params);
params_flag_servfail(params);
break;
case 'T':
params_flag_tcp(params);
break;
case 'w':
dig_params_flag_nowait(params);
params_flag_nowait(params);
break;
case 'c':
if (parse_class(optarg, &(params->class_num))
......@@ -364,8 +326,8 @@ int dig_params_parse(params_t *params, int argc, char *argv[])
// Process non-option parameters.
switch (argc - optind) {
case 2:
if (dig_params_parse_server(params, argv[optind + 1])
!= KNOT_EOK) {
if (dig_params_parse_server(&(params->servers),
argv[optind + 1]) != KNOT_EOK) {
return KNOT_EINVAL;
}
case 1: // Fall through.
......
......@@ -59,6 +59,9 @@ void query_set_serial(query_t *query, const uint32_t serial);
int dig_params_parse(params_t *params, int argc, char *argv[]);
void dig_params_clean(params_t *params);
void dig_params_flag_norecurse(params_t *params);
#endif // _DIG__DIG_PARAMS_H_
/*! @} */
......@@ -28,6 +28,9 @@
#include "utils/dig/dig_params.h" // dig_params_t
#include "utils/common/resolv.h" // get_nameservers
#define DEFAULT_RETRIES_HOST 1
#define DEFAULT_TIMEOUT_HOST 1
static int host_params_init(params_t *params)
{
memset(params, 0, sizeof(*params));
......@@ -52,8 +55,8 @@ static int host_params_init(params_t *params)
params->class_num = KNOT_CLASS_IN;
params->type_num = -1;
params->xfr_serial = -1;
params->retries = 1;
params->wait = DEFAULT_WAIT_INTERVAL;
params->retries = DEFAULT_RETRIES_HOST;
params->wait = DEFAULT_TIMEOUT_HOST;
params->servfail_stop = false;
params->format = FORMAT_HOST;
......@@ -110,31 +113,6 @@ static void host_params_flag_axfr(params_t *params)
params->type_num = KNOT_RRTYPE_AXFR;
}
static void host_params_flag_nonrecursive(params_t *params)
{
DIG_PARAM(params)->rd_flag = false;
}
static void host_params_flag_ipv4(params_t *params)
{
params->ip = IP_4;
}
static void host_params_flag_ipv6(params_t *params)
{
params->ip = IP_6;
}
static void host_params_flag_servfail(params_t *params)
{
params->servfail_stop = true;
}
static void host_params_flag_nowait(params_t *params)
{
params->wait = -1;
}
static int host_params_parse_name(params_t *params, const char *name)
{
char *reverse = get_reverse_name(name);
......@@ -222,35 +200,35 @@ static int host_params_parse_name(params_t *params, const char *name)
return KNOT_EOK;
}
static int host_params_parse_server(params_t *params, const char *name)
static void host_params_help(int argc, char *argv[])
{
printf("Usage: %s [-aCdlrsTvw] [-4] [-6] [-c class] [-R retries]\n"
" %*c [-t type] [-W time] name [server]\n",
argv[0], (int)strlen(argv[0]), ' ');
}
int host_params_parse_server(list *servers, const char *name)
{
node *n = NULL, *nxt = NULL;
// Remove default nameservers.
WALK_LIST_DELSAFE(n, nxt, params->servers) {
server_free((server_t *)n);
}
WALK_LIST_DELSAFE(n, nxt, *servers) {
server_free((server_t *)n);
}
// Initialize blank server list.
init_list(&params->servers);
init_list(servers);
// Add specified nameserver.
server_t *server = parse_nameserver(name);
if (server == NULL) {
return KNOT_ENOMEM;
}
add_tail(&params->servers, (node *)server);
add_tail(servers, (node *)server);
return KNOT_EOK;
}
static void host_params_help(int argc, char *argv[])
{
printf("Usage: %s [-aCdlrsTvw] [-4] [-6] [-c class] [-R retries]\n"
" %*c [-t type] [-W time] name [server]\n",
argv[0], (int)strlen(argv[0]), ' ');
}
int host_params_parse(params_t *params, int argc, char *argv[])
{
int opt = 0;
......@@ -267,10 +245,10 @@ int host_params_parse(params_t *params, int argc, char *argv[])
while ((opt = getopt(argc, argv, "46aCdlrsTvwc:R:t:W:")) != -1) {
switch (opt) {
case '4':
host_params_flag_ipv4(params);
params_flag_ipv4(params);
break;
case '6':
host_params_flag_ipv6(params);
params_flag_ipv6(params);
break;
case 'a':
host_params_flag_all(params);
......@@ -286,16 +264,16 @@ int host_params_parse(params_t *params, int argc, char *argv[])
host_params_flag_axfr(params);
break;
case 'r':
host_params_flag_nonrecursive(params);
dig_params_flag_norecurse(params);
break;
case 's':
host_params_flag_servfail(params);
params_flag_servfail(params);
break;
case 'T':
params_flag_tcp(params);
break;
case 'w':
host_params_flag_nowait(params);
params_flag_nowait(params);
break;
case 'c':
if (parse_class(optarg, &(params->class_num))
......@@ -331,8 +309,8 @@ int host_params_parse(params_t *params, int argc, char *argv[])
// Process non-option parameters.
switch (argc - optind) {
case 2:
if (host_params_parse_server(params, argv[optind + 1])
!= KNOT_EOK) {
if (host_params_parse_server(&(params->servers),
argv[optind + 1]) != KNOT_EOK) {
return KNOT_EINVAL;
}
case 1: // Fall through.
......
......@@ -27,7 +27,8 @@
#include "common/errcode.h"
#include "libknot/packet/packet.h"
#define DEFAULT_RETRIES 3
#define DEFAULT_RETRIES_NSUPDATE 3
#define DEFAULT_TIMEOUT_NSUPDATE 1
static void parse_rr(const scanner_t *s) {
return; /* Dummy */
......@@ -77,8 +78,8 @@ static int nsupdate_params_init(params_t *params)
params->operation = OPERATION_UPDATE;
params->protocol = PROTO_ALL;
params->udp_size = DEFAULT_UDP_SIZE;
params->retries = DEFAULT_RETRIES;
params->wait = DEFAULT_WAIT_INTERVAL;
params->retries = DEFAULT_RETRIES_NSUPDATE;
params->wait = DEFAULT_TIMEOUT_NSUPDATE;
params->format = FORMAT_NSUPDATE;
params->type_num = KNOT_RRTYPE_SOA;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment