conf: some minor fix
This commit is contained in:
@@ -1843,7 +1843,8 @@ static int _dns_client_create_socket_udp(struct dns_server_info *server_info)
|
||||
server_info->status = DNS_SERVER_STATUS_CONNECTIONLESS;
|
||||
|
||||
if (connect(fd, &server_info->addr, server_info->ai_addrlen) != 0) {
|
||||
if (errno == ENETUNREACH || errno == EHOSTUNREACH || errno == ECONNREFUSED) {
|
||||
if (errno == ENETUNREACH || errno == EHOSTUNREACH || errno == ECONNREFUSED || errno == EPERM ||
|
||||
errno == EACCES) {
|
||||
tlog(TLOG_INFO, "connect %s failed, %s", server_info->ip, strerror(errno));
|
||||
goto errout;
|
||||
}
|
||||
@@ -3567,7 +3568,8 @@ static int _dns_client_send_packet(struct dns_query_struct *query, void *packet,
|
||||
time(&now);
|
||||
if (now - lastlog > 120) {
|
||||
lastlog = now;
|
||||
tlog(TLOG_WARN, "Send query %s to upstream server failed, total server number %d", query->domain, total_server);
|
||||
tlog(TLOG_WARN, "Send query %s to upstream server failed, total server number %d", query->domain,
|
||||
total_server);
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -83,7 +83,7 @@ static struct config_enum_list dns_conf_response_mode_enum[] = {
|
||||
enum response_mode_type dns_conf_response_mode;
|
||||
|
||||
/* cache */
|
||||
int dns_conf_cachesize = -1;
|
||||
ssize_t dns_conf_cachesize = -1;
|
||||
int dns_conf_prefetch = 0;
|
||||
int dns_conf_serve_expired = 1;
|
||||
int dns_conf_serve_expired_ttl = 24 * 3600 * 3; /* 3 days */
|
||||
@@ -3250,7 +3250,7 @@ static struct config_item _config_item[] = {
|
||||
CONF_CUSTOM("nftset-no-speed", _config_nftset_no_speed, NULL),
|
||||
CONF_CUSTOM("speed-check-mode", _config_speed_check_mode, NULL),
|
||||
CONF_INT("tcp-idle-time", &dns_conf_tcp_idle_time, 0, 3600),
|
||||
CONF_INT("cache-size", &dns_conf_cachesize, 0, CONF_INT_MAX),
|
||||
CONF_SSIZE("cache-size", &dns_conf_cachesize, 0, CONF_INT_MAX),
|
||||
CONF_CUSTOM("cache-file", _config_option_parser_filepath, (char *)&dns_conf_cache_file),
|
||||
CONF_YESNO("cache-persist", &dns_conf_cache_persist),
|
||||
CONF_YESNO("prefetch-domain", &dns_conf_prefetch),
|
||||
|
||||
@@ -434,7 +434,7 @@ extern char dns_conf_bind_ca_key_pass[DNS_MAX_PATH];
|
||||
extern char dns_conf_need_cert;
|
||||
|
||||
extern int dns_conf_tcp_idle_time;
|
||||
extern int dns_conf_cachesize;
|
||||
extern ssize_t dns_conf_cachesize;
|
||||
extern int dns_conf_prefetch;
|
||||
extern int dns_conf_serve_expired;
|
||||
extern int dns_conf_serve_expired_ttl;
|
||||
|
||||
@@ -71,6 +71,12 @@ struct config_item_size {
|
||||
size_t max;
|
||||
};
|
||||
|
||||
struct config_item_ssize {
|
||||
ssize_t *data;
|
||||
ssize_t min;
|
||||
ssize_t max;
|
||||
};
|
||||
|
||||
struct config_enum_list {
|
||||
char *name;
|
||||
int id;
|
||||
@@ -116,6 +122,13 @@ struct config_enum {
|
||||
.data = value, .min = min_value, .max = max_value \
|
||||
} \
|
||||
}
|
||||
#define CONF_SSIZE(key, value, min_value, max_value) \
|
||||
{ \
|
||||
key, conf_ssize, &(struct config_item_ssize) \
|
||||
{ \
|
||||
.data = value, .min = min_value, .max = max_value \
|
||||
} \
|
||||
}
|
||||
|
||||
#define CONF_ENUM(key, value, enum) \
|
||||
{ \
|
||||
@@ -153,6 +166,8 @@ extern int conf_yesno(const char *item, void *data, int argc, char *argv[]);
|
||||
|
||||
extern int conf_size(const char *item, void *data, int argc, char *argv[]);
|
||||
|
||||
extern int conf_ssize(const char *item, void *data, int argc, char *argv[]);
|
||||
|
||||
extern int conf_enum(const char *item, void *data, int argc, char *argv[]);
|
||||
|
||||
/*
|
||||
|
||||
@@ -189,6 +189,39 @@ int conf_size(const char *item, void *data, int argc, char *argv[])
|
||||
return 0;
|
||||
}
|
||||
|
||||
int conf_ssize(const char *item, void *data, int argc, char *argv[])
|
||||
{
|
||||
int base = 1;
|
||||
ssize_t size = 0;
|
||||
int num = 0;
|
||||
struct config_item_ssize *item_size = data;
|
||||
char *value = argv[1];
|
||||
|
||||
if (strstr(value, "k") || strstr(value, "K")) {
|
||||
base = 1024;
|
||||
} else if (strstr(value, "m") || strstr(value, "M")) {
|
||||
base = 1024 * 1024;
|
||||
} else if (strstr(value, "g") || strstr(value, "G")) {
|
||||
base = 1024 * 1024 * 1024;
|
||||
}
|
||||
|
||||
num = atoi(value);
|
||||
if (num < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
size = num * base;
|
||||
if (size > item_size->max) {
|
||||
size = item_size->max;
|
||||
} else if (size < item_size->min) {
|
||||
size = item_size->min;
|
||||
}
|
||||
|
||||
*(item_size->data) = size;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int conf_enum(const char *item, void *data, int argc, char *argv[])
|
||||
{
|
||||
struct config_enum *item_enum = data;
|
||||
|
||||
Reference in New Issue
Block a user