diff --git a/.clang-format b/.clang-format index e35d26f..7eecf0e 100755 --- a/.clang-format +++ b/.clang-format @@ -7,3 +7,4 @@ UseTab: ForContinuationAndIndentation MaxEmptyLinesToKeep: 1 AllowShortFunctionsOnASingleLine: Empty BreakBeforeBraces: Linux +ColumnLimit: 120 diff --git a/src/dns.c b/src/dns.c index 12b708d..0e43992 100644 --- a/src/dns.c +++ b/src/dns.c @@ -18,15 +18,15 @@ #define _GNU_SOURCE #include "dns.h" -#include "tlog.h" #include "stringutil.h" +#include "tlog.h" +#include #include #include #include #include #include #include -#include #define QR_MASK 0x8000 #define OPCODE_MASK 0x7800 @@ -37,9 +37,9 @@ #define RCODE_MASK 0x000F #define DNS_RR_END (0XFFFF) -#define UNUSED(expr) \ - do { \ - (void)(expr); \ +#define UNUSED(expr) \ + do { \ + (void)(expr); \ } while (0) /* read short and move pointer */ @@ -305,7 +305,8 @@ static int _dns_get_qr_head(struct dns_data_context *data_context, char *domain, return 0; } -static int _dns_add_rr_head(struct dns_data_context *data_context, char *domain, int qtype, int qclass, int ttl, int rr_len) +static int _dns_add_rr_head(struct dns_data_context *data_context, char *domain, int qtype, int qclass, int ttl, + int rr_len) { int len = 0; @@ -333,7 +334,8 @@ static int _dns_add_rr_head(struct dns_data_context *data_context, char *domain, return 0; } -static int _dns_get_rr_head(struct dns_data_context *data_context, char *domain, int maxsize, int *qtype, int *qclass, int *ttl, int *rr_len) +static int _dns_get_rr_head(struct dns_data_context *data_context, char *domain, int maxsize, int *qtype, int *qclass, + int *ttl, int *rr_len) { int len = 0; @@ -358,7 +360,8 @@ static int _dns_get_rr_head(struct dns_data_context *data_context, char *domain, return len; } -static int _dns_add_RAW(struct dns_packet *packet, dns_rr_type rrtype, dns_type_t rtype, char *domain, int ttl, void *raw, int raw_len) +static int _dns_add_RAW(struct dns_packet *packet, dns_rr_type rrtype, dns_type_t rtype, char *domain, int ttl, + void *raw, int raw_len) { int maxlen = 0; int len = 0; @@ -451,14 +454,16 @@ static int _dns_add_opt_RAW(struct dns_packet *packet, dns_opt_code_t opt_rrtype return _dns_add_RAW(packet, DNS_RRS_OPT, DNS_OPT_T_TCP_KEEPALIVE, "", 0, opt_data, len); } -static int _dns_get_opt_RAW(struct dns_rrs *rrs, char *domain, int maxsize, int *ttl, struct dns_opt *dns_opt, int *dns_optlen) +static int _dns_get_opt_RAW(struct dns_rrs *rrs, char *domain, int maxsize, int *ttl, struct dns_opt *dns_opt, + int *dns_optlen) { *dns_optlen = DNS_MAX_OPT_LEN; return _dns_get_RAW(rrs, domain, maxsize, ttl, dns_opt, dns_optlen); } -static int __attribute__((unused)) _dns_add_OPT(struct dns_packet *packet, dns_rr_type type, unsigned short opt_code, unsigned short opt_len, struct dns_opt *opt) +static int __attribute__((unused)) _dns_add_OPT(struct dns_packet *packet, dns_rr_type type, unsigned short opt_code, + unsigned short opt_len, struct dns_opt *opt) { // TODO @@ -508,7 +513,8 @@ static int __attribute__((unused)) _dns_add_OPT(struct dns_packet *packet, dns_ return _dns_rr_add_end(packet, type, DNS_T_OPT, len); } -static int __attribute__((unused)) _dns_get_OPT(struct dns_rrs *rrs, unsigned short *opt_code, unsigned short *opt_len, struct dns_opt *opt, int *opt_maxlen) +static int __attribute__((unused)) _dns_get_OPT(struct dns_rrs *rrs, unsigned short *opt_code, unsigned short *opt_len, + struct dns_opt *opt, int *opt_maxlen) { // TODO @@ -593,7 +599,8 @@ int dns_get_NS(struct dns_rrs *rrs, char *domain, int maxsize, int *ttl, char *c return _dns_get_RAW(rrs, domain, maxsize, ttl, cname, &len); } -int dns_add_AAAA(struct dns_packet *packet, dns_rr_type type, char *domain, int ttl, unsigned char addr[DNS_RR_AAAA_LEN]) +int dns_add_AAAA(struct dns_packet *packet, dns_rr_type type, char *domain, int ttl, + unsigned char addr[DNS_RR_AAAA_LEN]) { return _dns_add_RAW(packet, type, DNS_T_AAAA, domain, ttl, addr, DNS_RR_AAAA_LEN); } @@ -749,7 +756,8 @@ int dns_add_OPT_TCP_KEEYALIVE(struct dns_packet *packet, unsigned short timeout) return _dns_add_opt_RAW(packet, DNS_OPT_T_TCP_KEEPALIVE, &timeout_net, data_len); } -int dns_get_OPT_TCP_KEEYALIVE(struct dns_rrs *rrs, unsigned short *opt_code, unsigned short *opt_len, unsigned short *timeout) +int dns_get_OPT_TCP_KEEYALIVE(struct dns_rrs *rrs, unsigned short *opt_code, unsigned short *opt_len, + unsigned short *timeout) { unsigned char opt_data[DNS_MAX_OPT_LEN]; struct dns_opt *opt = (struct dns_opt *)opt_data; @@ -961,7 +969,8 @@ static int _dns_decode_domain(struct dns_context *context, char *output, int siz } ptr = context->data + len; if (ptr > context->data + context->maxsize) { - tlog(TLOG_DEBUG, "length is not enough %u:%ld, %p, %p", context->maxsize, (long)(ptr - context->data), context->ptr, context->data); + tlog(TLOG_DEBUG, "length is not enough %u:%ld, %p, %p", context->maxsize, (long)(ptr - context->data), + context->ptr, context->data); return -1; } is_compressed = 1; @@ -979,7 +988,8 @@ static int _dns_decode_domain(struct dns_context *context, char *output, int siz } if (ptr > context->data + context->maxsize) { - tlog(TLOG_DEBUG, "length is not enough %u:%ld, %p, %p", context->maxsize, (long)(ptr - context->data), context->ptr, context->data); + tlog(TLOG_DEBUG, "length is not enough %u:%ld, %p, %p", context->maxsize, (long)(ptr - context->data), + context->ptr, context->data); return -1; } @@ -988,7 +998,8 @@ static int _dns_decode_domain(struct dns_context *context, char *output, int siz /* copy sub string */ copy_len = (len < size - output_len) ? len : size - 1 - output_len; if ((ptr + copy_len) > (context->data + context->maxsize)) { - tlog(TLOG_DEBUG, "length is not enough %u:%ld, %p, %p", context->maxsize, (long)(ptr - context->data), context->ptr, context->data); + tlog(TLOG_DEBUG, "length is not enough %u:%ld, %p, %p", context->maxsize, (long)(ptr - context->data), + context->ptr, context->data); return -1; } memcpy(output, ptr, copy_len); @@ -1089,7 +1100,8 @@ static int _dns_encode_qr_head(struct dns_context *context, char *domain, int qt return 0; } -static int _dns_decode_rr_head(struct dns_context *context, char *domain, int domain_size, int *qtype, int *qclass, int *ttl, int *rr_len) +static int _dns_decode_rr_head(struct dns_context *context, char *domain, int domain_size, int *qtype, int *qclass, + int *ttl, int *rr_len) { int len = 0; @@ -1358,7 +1370,8 @@ static int _dns_decode_opt_ecs(struct dns_context *context, struct dns_opt_ecs * memcpy(ecs->addr, context->ptr, len); context->ptr += len; - tlog(TLOG_DEBUG, "ECS: family:%d, source_prefix:%d, scope_prefix:%d, len:%d", ecs->family, ecs->source_prefix, ecs->scope_prefix, len); + tlog(TLOG_DEBUG, "ECS: family:%d, source_prefix:%d, scope_prefix:%d, len:%d", ecs->family, ecs->source_prefix, + ecs->scope_prefix, len); tlog(TLOG_DEBUG, "%d.%d.%d.%d", ecs->addr[0], ecs->addr[1], ecs->addr[2], ecs->addr[3]); return 0; diff --git a/src/dns.h b/src/dns.h index 9b59dd4..366050b 100644 --- a/src/dns.h +++ b/src/dns.h @@ -44,7 +44,10 @@ typedef enum dns_rr_type { DNS_RRS_END, } dns_rr_type; -typedef enum dns_class { DNS_C_IN = 1, DNS_C_ANY = 255 } dns_class_t; +typedef enum dns_class { + DNS_C_IN = 1, // DNS C IN + DNS_C_ANY = 255 +} dns_class_t; typedef enum dns_type { DNS_T_A = 1, @@ -63,10 +66,10 @@ typedef enum dns_type { DNS_T_ALL = 255 } dns_type_t; -typedef enum dns_opt_code { - DNS_OPT_T_ECS = 8, +typedef enum dns_opt_code { + DNS_OPT_T_ECS = 8, // OPT ECS DNS_OPT_T_TCP_KEEPALIVE = 11, - DNS_OPT_T_ALL = 255 + DNS_OPT_T_ALL = 255 } dns_opt_code_t; typedef enum dns_opcode { @@ -196,7 +199,8 @@ int dns_get_A(struct dns_rrs *rrs, char *domain, int maxsize, int *ttl, unsigned int dns_add_PTR(struct dns_packet *packet, dns_rr_type type, char *domain, int ttl, char *cname); int dns_get_PTR(struct dns_rrs *rrs, char *domain, int maxsize, int *ttl, char *cname, int cname_size); -int dns_add_AAAA(struct dns_packet *packet, dns_rr_type type, char *domain, int ttl, unsigned char addr[DNS_RR_AAAA_LEN]); +int dns_add_AAAA(struct dns_packet *packet, dns_rr_type type, char *domain, int ttl, + unsigned char addr[DNS_RR_AAAA_LEN]); int dns_get_AAAA(struct dns_rrs *rrs, char *domain, int maxsize, int *ttl, unsigned char addr[DNS_RR_AAAA_LEN]); int dns_add_SOA(struct dns_packet *packet, dns_rr_type type, char *domain, int ttl, struct dns_soa *soa); @@ -212,7 +216,8 @@ int dns_add_OPT_ECS(struct dns_packet *packet, struct dns_opt_ecs *ecs); int dns_get_OPT_ECS(struct dns_rrs *rrs, unsigned short *opt_code, unsigned short *opt_len, struct dns_opt_ecs *ecs); int dns_add_OPT_TCP_KEEYALIVE(struct dns_packet *packet, unsigned short timeout); -int dns_get_OPT_TCP_KEEYALIVE(struct dns_rrs *rrs, unsigned short *opt_code, unsigned short *opt_len, unsigned short *timeout); +int dns_get_OPT_TCP_KEEYALIVE(struct dns_rrs *rrs, unsigned short *opt_code, unsigned short *opt_len, + unsigned short *timeout); /* * Packet operation */ diff --git a/src/dns_cache.c b/src/dns_cache.c index 1a1459c..c495623 100644 --- a/src/dns_cache.c +++ b/src/dns_cache.c @@ -118,7 +118,8 @@ static void _dns_cache_move_inactive(struct dns_cache *dns_cache) list_add_tail(&dns_cache->list, &dns_cache_head.inactive_list); } -int dns_cache_replace(char *domain, char *cname, int cname_ttl, int ttl, dns_type_t qtype, unsigned char *addr, int addr_len, int speed) +int dns_cache_replace(char *domain, char *cname, int cname_ttl, int ttl, dns_type_t qtype, unsigned char *addr, + int addr_len, int speed) { struct dns_cache *dns_cache = NULL; @@ -178,7 +179,8 @@ errout_unlock: return -1; } -int dns_cache_insert(char *domain, char *cname, int cname_ttl, int ttl, dns_type_t qtype, unsigned char *addr, int addr_len, int speed) +int dns_cache_insert(char *domain, char *cname, int cname_ttl, int ttl, dns_type_t qtype, unsigned char *addr, + int addr_len, int speed) { uint32_t key = 0; struct dns_cache *dns_cache = NULL; diff --git a/src/dns_cache.h b/src/dns_cache.h index 2c85fd9..691b8bf 100644 --- a/src/dns_cache.h +++ b/src/dns_cache.h @@ -57,9 +57,11 @@ struct dns_cache { int dns_cache_init(int size, int enable_inactive, int inactive_list_expired); -int dns_cache_replace(char *domain, char *cname, int cname_ttl, int ttl, dns_type_t qtype, unsigned char *addr, int addr_len, int speed); +int dns_cache_replace(char *domain, char *cname, int cname_ttl, int ttl, dns_type_t qtype, unsigned char *addr, + int addr_len, int speed); -int dns_cache_insert(char *domain, char *cname, int cname_ttl, int ttl, dns_type_t qtype, unsigned char *addr, int addr_len, int speed); +int dns_cache_insert(char *domain, char *cname, int cname_ttl, int ttl, dns_type_t qtype, unsigned char *addr, + int addr_len, int speed); struct dns_cache *dns_cache_lookup(char *domain, dns_type_t qtype); diff --git a/src/dns_client.c b/src/dns_client.c index e3091a7..ad7e8b1 100644 --- a/src/dns_client.c +++ b/src/dns_client.c @@ -29,8 +29,8 @@ #include "tlog.h" #include "util.h" #include -#include #include +#include #include #include #include @@ -46,7 +46,6 @@ #include #include #include -#include #include #include #include @@ -63,7 +62,6 @@ #define SOCKET_PRIORITY (6) #define SOCKET_IP_TOS (IPTOS_LOWDELAY | IPTOS_RELIABILITY) - /* ECS info */ struct dns_client_ecs { int enable; @@ -247,12 +245,11 @@ static LIST_HEAD(pending_servers); static pthread_mutex_t pending_server_mutex = PTHREAD_MUTEX_INITIALIZER; static int dns_client_has_bootstrap_dns = 0; -const char *_dns_server_get_type_string(dns_server_type_t type) +const char *_dns_server_get_type_string(dns_server_type_t type) { const char *type_str = ""; - switch (type) - { + switch (type) { case DNS_SERVER_UDP: type_str = "udp"; break; @@ -322,8 +319,9 @@ static int _dns_client_server_exist(const char *server_ip, int port, dns_server_ return -1; } -static void _dns_client_server_update_ttl(struct ping_host_struct *ping_host, const char *host, FAST_PING_RESULT result, struct sockaddr *addr, - socklen_t addr_len, int seqno, int ttl, struct timeval *tv, void *userptr) +static void _dns_client_server_update_ttl(struct ping_host_struct *ping_host, const char *host, FAST_PING_RESULT result, + struct sockaddr *addr, socklen_t addr_len, int seqno, int ttl, + struct timeval *tv, void *userptr) { struct dns_server_info *server_info = userptr; if (result != PING_RESULT_RESPONSE || server_info == NULL) { @@ -479,7 +477,8 @@ errout: } /* add server to group */ -static int _dns_client_add_to_group_pending(char *group_name, char *server_ip, int port, dns_server_type_t server_type, int ispending) +static int _dns_client_add_to_group_pending(char *group_name, char *server_ip, int port, dns_server_type_t server_type, + int ispending) { struct dns_server_info *server_info = NULL; @@ -714,7 +713,8 @@ static char *_dns_client_server_get_spki(struct dns_server_info *server_info, in } /* add dns server information */ -static int _dns_client_server_add(char *server_ip, char *server_host, int port, dns_server_type_t server_type, struct client_dns_server_flags *flags) +static int _dns_client_server_add(char *server_ip, char *server_host, int port, dns_server_type_t server_type, + struct client_dns_server_flags *flags) { struct dns_server_info *server_info = NULL; struct addrinfo *gai = NULL; @@ -821,7 +821,8 @@ static int _dns_client_server_add(char *server_ip, char *server_host, int port, /* safe address info */ if (gai->ai_addrlen > sizeof(server_info->in6)) { - tlog(TLOG_ERROR, "addr len invalid, %d, %zd, %d", gai->ai_addrlen, sizeof(server_info->addr), server_info->ai_family); + tlog(TLOG_ERROR, "addr len invalid, %d, %zd, %d", gai->ai_addrlen, sizeof(server_info->addr), + server_info->ai_family); goto errout; } memcpy(&server_info->addr, gai->ai_addr, gai->ai_addrlen); @@ -829,7 +830,8 @@ static int _dns_client_server_add(char *server_ip, char *server_host, int port, /* start ping task */ if (server_type == DNS_SERVER_UDP) { if (ttl <= 0 && (server_info->flags.result_flag & DNSSERVER_FLAG_CHECK_TTL)) { - server_info->ping_host = fast_ping_start(PING_TYPE_DNS, server_ip, 0, 60000, 1000, _dns_client_server_update_ttl, server_info); + server_info->ping_host = + fast_ping_start(PING_TYPE_DNS, server_ip, 0, 60000, 1000, _dns_client_server_update_ttl, server_info); if (server_info->ping_host == NULL) { tlog(TLOG_ERROR, "start ping failed."); goto errout; @@ -1004,7 +1006,8 @@ void _dns_client_server_pending_release(struct dns_server_pending *pending) free(pending); } -static int _dns_client_server_pending(char *server_ip, int port, dns_server_type_t server_type, struct client_dns_server_flags *flags) +static int _dns_client_server_pending(char *server_ip, int port, dns_server_type_t server_type, + struct client_dns_server_flags *flags) { struct dns_server_pending *pending = NULL; @@ -1040,8 +1043,8 @@ errout: return -1; } -static int _dns_client_add_server_pending(char *server_ip, char *server_host, int port, dns_server_type_t server_type, struct client_dns_server_flags *flags, - int ispending) +static int _dns_client_add_server_pending(char *server_ip, char *server_host, int port, dns_server_type_t server_type, + struct client_dns_server_flags *flags, int ispending) { int ret; @@ -1071,7 +1074,8 @@ errout: return -1; } -int dns_client_add_server(char *server_ip, int port, dns_server_type_t server_type, struct client_dns_server_flags *flags) +int dns_client_add_server(char *server_ip, int port, dns_server_type_t server_type, + struct client_dns_server_flags *flags) { return _dns_client_add_server_pending(server_ip, NULL, port, server_type, flags, 1); } @@ -1287,7 +1291,8 @@ static int _dns_replied_check_add(struct dns_query_struct *dns_query, struct soc return 0; } -static int _dns_client_recv(struct dns_server_info *server_info, unsigned char *inpacket, int inpacket_len, struct sockaddr *from, socklen_t from_len) +static int _dns_client_recv(struct dns_server_info *server_info, unsigned char *inpacket, int inpacket_len, + struct sockaddr *from, socklen_t from_len) { int len; int i; @@ -1309,8 +1314,8 @@ static int _dns_client_recv(struct dns_server_info *server_info, unsigned char * len = dns_decode(packet, DNS_PACKSIZE, inpacket, inpacket_len); if (len != 0) { char host_name[DNS_MAX_CNAME_LEN]; - tlog(TLOG_WARN, "decode failed, packet len = %d, tc = %d, id = %d, from = %s\n", inpacket_len, packet->head.tc, packet->head.id, - gethost_by_addr(host_name, sizeof(host_name), from)); + tlog(TLOG_WARN, "decode failed, packet len = %d, tc = %d, id = %d, from = %s\n", inpacket_len, packet->head.tc, + packet->head.id, gethost_by_addr(host_name, sizeof(host_name), from)); return -1; } @@ -1320,9 +1325,12 @@ static int _dns_client_recv(struct dns_server_info *server_info, unsigned char * return -1; } - tlog(TLOG_DEBUG, "qdcount = %d, ancount = %d, nscount = %d, nrcount = %d, len = %d, id = %d, tc = %d, rd = %d, ra = %d, rcode = %d, payloadsize = %d\n", - packet->head.qdcount, packet->head.ancount, packet->head.nscount, packet->head.nrcount, inpacket_len, packet->head.id, packet->head.tc, - packet->head.rd, packet->head.ra, packet->head.rcode, dns_get_OPT_payload_size(packet)); + tlog(TLOG_DEBUG, + "qdcount = %d, ancount = %d, nscount = %d, nrcount = %d, len = %d, id = %d, tc = %d, rd = %d, ra = %d, rcode " + "= %d, payloadsize = %d\n", + packet->head.qdcount, packet->head.ancount, packet->head.nscount, packet->head.nrcount, inpacket_len, + packet->head.id, packet->head.tc, packet->head.rd, packet->head.ra, packet->head.rcode, + dns_get_OPT_payload_size(packet)); /* get question */ rrs = dns_get_rrs_start(packet, DNS_RRS_QD, &rr_count); @@ -1361,7 +1369,8 @@ static int _dns_client_recv(struct dns_server_info *server_info, unsigned char * /* notify caller dns query result */ if (query->callback) { - ret = query->callback(query->domain, DNS_QUERY_RESULT, server_info->flags.result_flag, packet, inpacket, inpacket_len, query->user_ptr); + ret = query->callback(query->domain, DNS_QUERY_RESULT, server_info->flags.result_flag, packet, inpacket, + inpacket_len, query->user_ptr); if (request_num == 0 || ret) { /* if all server replied, or done, stop query, release resource */ _dns_client_query_remove(query); @@ -1646,7 +1655,8 @@ static int _dns_client_process_udp(struct dns_server_info *server_info, struct e } } - tlog(TLOG_DEBUG, "recv udp packet from %s, len: %d, ttl: %d", gethost_by_addr(from_host, sizeof(from_host), (struct sockaddr *)&from), len, ttl); + tlog(TLOG_DEBUG, "recv udp packet from %s, len: %d, ttl: %d", + gethost_by_addr(from_host, sizeof(from_host), (struct sockaddr *)&from), len, ttl); /* update recv time */ time(&server_info->last_recv); @@ -1791,7 +1801,8 @@ static int _dns_client_socket_recv(struct dns_server_info *server_info) if (server_info->type == DNS_SERVER_UDP) { return -1; } else if (server_info->type == DNS_SERVER_TCP) { - return recv(server_info->fd, server_info->recv_buff.data + server_info->recv_buff.len, DNS_TCP_BUFFER - server_info->recv_buff.len, 0); + return recv(server_info->fd, server_info->recv_buff.data + server_info->recv_buff.len, + DNS_TCP_BUFFER - server_info->recv_buff.len, 0); } else if (server_info->type == DNS_SERVER_TLS || server_info->type == DNS_SERVER_HTTPS) { return _dns_client_socket_ssl_recv(server_info->ssl, server_info->recv_buff.data + server_info->recv_buff.len, DNS_TCP_BUFFER - server_info->recv_buff.len); @@ -1824,10 +1835,9 @@ static int _dns_client_process_tcp_buff(struct dns_server_info *server_info) } if (http_head_get_httpcode(http_head) != 200) { - tlog(TLOG_WARN, "http server query from %s:%d failed, server return http code : %d, %s", - server_info->ip, server_info->port, - http_head_get_httpcode(http_head), - http_head_get_httpcode_msg(http_head)); + tlog(TLOG_WARN, "http server query from %s:%d failed, server return http code : %d, %s", + server_info->ip, server_info->port, http_head_get_httpcode(http_head), + http_head_get_httpcode_msg(http_head)); goto errout; } @@ -1856,7 +1866,8 @@ static int _dns_client_process_tcp_buff(struct dns_server_info *server_info) tlog(TLOG_DEBUG, "recv tcp packet from %s, len = %d", server_info->ip, len); /* process result */ - if (_dns_client_recv(server_info, inpacket_data, dns_packet_len, &server_info->addr, server_info->ai_addrlen) != 0) { + if (_dns_client_recv(server_info, inpacket_data, dns_packet_len, &server_info->addr, server_info->ai_addrlen) != + 0) { goto errout; } @@ -2031,7 +2042,7 @@ static int _dns_client_tls_matchName(const char *host, const char *pattern, int if (i == size && host[j] == '\0') { match = 0; } - + return match; } @@ -2070,14 +2081,15 @@ static int _dns_client_tls_verify(struct dns_server_info *server_info) tlog(TLOG_ERROR, "cannot found x509 name"); goto errout; } - + tlog(TLOG_DEBUG, "peer CN: %s", peer_CN); /* check tls host */ tls_host_verify = _dns_client_server_get_tls_host_verify(server_info); if (tls_host_verify) { if (_dns_client_tls_matchName(peer_CN, tls_host_verify, strnlen(tls_host_verify, DNS_MAX_CNAME_LEN)) != 0) { - tlog(TLOG_INFO, "server %s CN is invalid, peer CN: %s, expect CN: %s", server_info->ip, peer_CN, tls_host_verify); + tlog(TLOG_INFO, "server %s CN is invalid, peer CN: %s, expect CN: %s", server_info->ip, peer_CN, + tls_host_verify); goto errout; } } @@ -2359,7 +2371,7 @@ static int _dns_client_send_tls(struct dns_server_info *server_info, void *packe send_len = _dns_client_socket_ssl_send(server_info->ssl, inpacket, len); if (send_len < 0) { - if (errno == EAGAIN || errno == EPIPE || server_info->ssl == NULL ) { + if (errno == EAGAIN || errno == EPIPE || server_info->ssl == NULL) { /* save data to buffer, and retry when EPOLLOUT is available */ return _dns_client_send_data_to_buffer(server_info, inpacket, len); } else if (server_info->ssl && errno != ENOMEM) { @@ -2409,7 +2421,7 @@ static int _dns_client_send_https(struct dns_server_info *server_info, void *pac send_len = _dns_client_socket_ssl_send(server_info->ssl, inpacket, http_len); if (send_len < 0) { - if (errno == EAGAIN || errno == EPIPE || server_info->ssl == NULL ) { + if (errno == EAGAIN || errno == EPIPE || server_info->ssl == NULL) { /* save data to buffer, and retry when EPOLLOUT is available */ return _dns_client_send_data_to_buffer(server_info, inpacket, http_len); } else if (server_info->ssl && errno != ENOMEM) { @@ -2476,9 +2488,11 @@ static int _dns_client_send_packet(struct dns_query_struct *query, void *packet, if (ret != 0) { if (send_err != ENOMEM) { - tlog(TLOG_ERROR, "send query to %s failed, %s, type: %d", server_info->ip, strerror(send_err), server_info->type); + tlog(TLOG_ERROR, "send query to %s failed, %s, type: %d", server_info->ip, strerror(send_err), + server_info->type); } else { - tlog(TLOG_DEBUG, "send query to %s failed, %s, type: %d", server_info->ip, strerror(send_err), server_info->type); + tlog(TLOG_DEBUG, "send query to %s failed, %s, type: %d", server_info->ip, strerror(send_err), + server_info->type); } atomic_dec(&query->dns_request_sent); continue; @@ -2655,7 +2669,8 @@ static void _dns_client_check_servers(void) pthread_mutex_unlock(&client.server_list_lock); } -static int _dns_client_pending_server_resolve(char *domain, dns_rtcode_t rtcode, dns_type_t addr_type, char *ip, unsigned int ping_time, void *user_ptr) +static int _dns_client_pending_server_resolve(char *domain, dns_rtcode_t rtcode, dns_type_t addr_type, char *ip, + unsigned int ping_time, void *user_ptr) { struct dns_server_pending *pending = user_ptr; int ret = 0; @@ -2757,7 +2772,7 @@ static void _dns_client_add_pending_servers(void) exit(1); return; } - + _dns_client_server_pending_release_lck(pending); } } diff --git a/src/dns_client.h b/src/dns_client.h index 5610399..40e890c 100644 --- a/src/dns_client.h +++ b/src/dns_client.h @@ -52,8 +52,9 @@ int dns_client_init(void); int dns_client_set_ecs(char *ip, int subnet); /* query result notify function */ -typedef int (*dns_client_callback)(char *domain, dns_result_type rtype, unsigned int result_flag, struct dns_packet *packet, unsigned char *inpacket, - int inpacket_len, void *user_ptr); +typedef int (*dns_client_callback)(char *domain, dns_result_type rtype, unsigned int result_flag, + struct dns_packet *packet, unsigned char *inpacket, int inpacket_len, + void *user_ptr); /* query domain */ int dns_client_query(char *domain, int qtype, dns_client_callback callback, void *user_ptr, const char *group_name); @@ -95,7 +96,8 @@ struct client_dns_server_flags { int dns_client_spki_decode(const char *spki, unsigned char *spki_data_out); /* add remote dns server */ -int dns_client_add_server(char *server_ip, int port, dns_server_type_t server_type, struct client_dns_server_flags *flags); +int dns_client_add_server(char *server_ip, int port, dns_server_type_t server_type, + struct client_dns_server_flags *flags); /* remove remote dns server */ int dns_client_remove_server(char *server_ip, int port, dns_server_type_t server_type); diff --git a/src/dns_server.c b/src/dns_server.c index de68aba..d4c1990 100644 --- a/src/dns_server.c +++ b/src/dns_server.c @@ -299,12 +299,15 @@ static void _dns_server_audit_log(struct dns_request *request) } if (request->qtype == DNS_T_AAAA && request->has_ipv6) { - snprintf(req_result, sizeof(req_result), "%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x", request->ipv6_addr[0], - request->ipv6_addr[1], request->ipv6_addr[2], request->ipv6_addr[3], request->ipv6_addr[4], request->ipv6_addr[5], request->ipv6_addr[6], - request->ipv6_addr[7], request->ipv6_addr[8], request->ipv6_addr[9], request->ipv6_addr[10], request->ipv6_addr[11], request->ipv6_addr[12], + snprintf(req_result, sizeof(req_result), + "%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x", request->ipv6_addr[0], + request->ipv6_addr[1], request->ipv6_addr[2], request->ipv6_addr[3], request->ipv6_addr[4], + request->ipv6_addr[5], request->ipv6_addr[6], request->ipv6_addr[7], request->ipv6_addr[8], + request->ipv6_addr[9], request->ipv6_addr[10], request->ipv6_addr[11], request->ipv6_addr[12], request->ipv6_addr[13], request->ipv6_addr[14], request->ipv6_addr[15]); } else if (request->qtype == DNS_T_A && request->has_ipv4) { - snprintf(req_result, sizeof(req_result), "%d.%d.%d.%d", request->ipv4_addr[0], request->ipv4_addr[1], request->ipv4_addr[2], request->ipv4_addr[3]); + snprintf(req_result, sizeof(req_result), "%d.%d.%d.%d", request->ipv4_addr[0], request->ipv4_addr[1], + request->ipv4_addr[2], request->ipv4_addr[3]); } else if (request->has_soa) { if (!dns_conf_audit_log_SOA) { return; @@ -317,9 +320,11 @@ static void _dns_server_audit_log(struct dns_request *request) gethost_by_addr(req_host, sizeof(req_host), &request->addr); tlog_localtime(&tm); - snprintf(req_time, sizeof(req_time), "[%.4d-%.2d-%.2d %.2d:%.2d:%.2d,%.3d]", tm.year, tm.mon, tm.mday, tm.hour, tm.min, tm.sec, tm.usec / 1000); + snprintf(req_time, sizeof(req_time), "[%.4d-%.2d-%.2d %.2d:%.2d:%.2d,%.3d]", tm.year, tm.mon, tm.mday, tm.hour, + tm.min, tm.sec, tm.usec / 1000); - tlog_printf(dns_audit, "%s %s query %s, type %d, result %s\n", req_time, req_host, request->domain, request->qtype, req_result); + tlog_printf(dns_audit, "%s %s query %s, type %d, result %s\n", req_time, req_host, request->domain, request->qtype, + req_result); } static int _dns_add_rrs(struct dns_packet *packet, struct dns_request *request) @@ -437,7 +442,8 @@ static int _dns_server_reply_tcp_to_buffer(struct dns_server_conn_tcp_client *tc return 0; } -static int _dns_server_reply_tcp(struct dns_request *request, struct dns_server_conn_tcp_client *tcpclient, void *packet, unsigned short len) +static int _dns_server_reply_tcp(struct dns_request *request, struct dns_server_conn_tcp_client *tcpclient, + void *packet, unsigned short len) { int send_len = 0; unsigned char inpacket_data[DNS_IN_PACKSIZE]; @@ -465,10 +471,12 @@ static int _dns_server_reply_tcp(struct dns_request *request, struct dns_server_ return 0; } -static int _dns_server_reply_udp(struct dns_request *request, struct dns_server_conn_udp *udpserver, unsigned char *inpacket, int inpacket_len) +static int _dns_server_reply_udp(struct dns_request *request, struct dns_server_conn_udp *udpserver, + unsigned char *inpacket, int inpacket_len) { int send_len = 0; - send_len = sendto(udpserver->head.fd, inpacket, inpacket_len, 0, (struct sockaddr *)&request->addr, request->addr_len); + send_len = + sendto(udpserver->head.fd, inpacket, inpacket_len, 0, (struct sockaddr *)&request->addr, request->addr_len); if (send_len != inpacket_len) { tlog(TLOG_ERROR, "send failed."); return -1; @@ -558,7 +566,6 @@ static int _dns_result_callback_nxdomain(struct dns_request *request) char ip[DNS_MAX_CNAME_LEN]; unsigned int ping_time = -1; - ip[0] = 0; if (request->result_callback == NULL) { return 0; @@ -586,20 +593,24 @@ static int _dns_result_callback(struct dns_request *request) goto out; } - sprintf(ip, "%d.%d.%d.%d", request->ipv4_addr[0], request->ipv4_addr[1], request->ipv4_addr[2], request->ipv4_addr[3]); + sprintf(ip, "%d.%d.%d.%d", request->ipv4_addr[0], request->ipv4_addr[1], request->ipv4_addr[2], + request->ipv4_addr[3]); ping_time = request->ping_ttl_v4; - return request->result_callback(request->domain, request->rcode, request->qtype, ip, ping_time, request->user_ptr); + return request->result_callback(request->domain, request->rcode, request->qtype, ip, ping_time, + request->user_ptr); } else if (request->qtype == DNS_T_AAAA) { if (request->has_ipv6 == 0) { goto out; } - sprintf(ip, "%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x", request->ipv6_addr[0], request->ipv6_addr[1], - request->ipv6_addr[2], request->ipv6_addr[3], request->ipv6_addr[4], request->ipv6_addr[5], request->ipv6_addr[6], request->ipv6_addr[7], - request->ipv6_addr[8], request->ipv6_addr[9], request->ipv6_addr[10], request->ipv6_addr[11], request->ipv6_addr[12], request->ipv6_addr[13], - request->ipv6_addr[14], request->ipv6_addr[15]); + sprintf(ip, "%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x", request->ipv6_addr[0], + request->ipv6_addr[1], request->ipv6_addr[2], request->ipv6_addr[3], request->ipv6_addr[4], + request->ipv6_addr[5], request->ipv6_addr[6], request->ipv6_addr[7], request->ipv6_addr[8], + request->ipv6_addr[9], request->ipv6_addr[10], request->ipv6_addr[11], request->ipv6_addr[12], + request->ipv6_addr[13], request->ipv6_addr[14], request->ipv6_addr[15]); ping_time = request->ping_ttl_v6; - return request->result_callback(request->domain, request->rcode, request->qtype, ip, ping_time, request->user_ptr); + return request->result_callback(request->domain, request->rcode, request->qtype, ip, ping_time, + request->user_ptr); } _dns_result_callback_nxdomain(request); @@ -695,8 +706,8 @@ static int _dns_server_request_complete_A(struct dns_request *request) return 0; } - tlog(TLOG_INFO, "result: %s, rcode: %d, %d.%d.%d.%d\n", request->domain, request->rcode, request->ipv4_addr[0], request->ipv4_addr[1], - request->ipv4_addr[2], request->ipv4_addr[3]); + tlog(TLOG_INFO, "result: %s, rcode: %d, %d.%d.%d.%d\n", request->domain, request->rcode, request->ipv4_addr[0], + request->ipv4_addr[1], request->ipv4_addr[2], request->ipv4_addr[3]); request->has_soa = 0; if (request->has_ping_result == 0 && request->ttl_v4 > DNS_SERVER_TMOUT_TTL) { @@ -709,10 +720,12 @@ static int _dns_server_request_complete_A(struct dns_request *request) /* if doing prefetch, update cache only */ if (request->prefetch) { - dns_cache_replace(request->domain, cname, cname_ttl, request->ttl_v4, DNS_T_A, request->ipv4_addr, DNS_RR_A_LEN, request->ping_ttl_v4); + dns_cache_replace(request->domain, cname, cname_ttl, request->ttl_v4, DNS_T_A, request->ipv4_addr, DNS_RR_A_LEN, + request->ping_ttl_v4); } else { /* insert result to cache */ - dns_cache_insert(request->domain, cname, cname_ttl, request->ttl_v4, DNS_T_A, request->ipv4_addr, DNS_RR_A_LEN, request->ping_ttl_v4); + dns_cache_insert(request->domain, cname, cname_ttl, request->ttl_v4, DNS_T_A, request->ipv4_addr, DNS_RR_A_LEN, + request->ping_ttl_v4); } return 0; @@ -729,10 +742,13 @@ static int _dns_server_request_complete_AAAA(struct dns_request *request) } if (request->has_ipv6) { - tlog(TLOG_INFO, "result: %s, rcode: %d, %.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x", request->domain, request->rcode, - request->ipv6_addr[0], request->ipv6_addr[1], request->ipv6_addr[2], request->ipv6_addr[3], request->ipv6_addr[4], request->ipv6_addr[5], - request->ipv6_addr[6], request->ipv6_addr[7], request->ipv6_addr[8], request->ipv6_addr[9], request->ipv6_addr[10], request->ipv6_addr[11], - request->ipv6_addr[12], request->ipv6_addr[13], request->ipv6_addr[14], request->ipv6_addr[15]); + tlog(TLOG_INFO, + "result: %s, rcode: %d, %.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x", + request->domain, request->rcode, request->ipv6_addr[0], request->ipv6_addr[1], request->ipv6_addr[2], + request->ipv6_addr[3], request->ipv6_addr[4], request->ipv6_addr[5], request->ipv6_addr[6], + request->ipv6_addr[7], request->ipv6_addr[8], request->ipv6_addr[9], request->ipv6_addr[10], + request->ipv6_addr[11], request->ipv6_addr[12], request->ipv6_addr[13], request->ipv6_addr[14], + request->ipv6_addr[15]); if (request->has_ping_result == 0 && request->ttl_v6 > DNS_SERVER_TMOUT_TTL) { request->ttl_v6 = DNS_SERVER_TMOUT_TTL; @@ -741,10 +757,12 @@ static int _dns_server_request_complete_AAAA(struct dns_request *request) /* if doing prefetch, update cache only */ if (_dns_server_has_bind_flag(request, BIND_FLAG_NO_CACHE) != 0) { if (request->prefetch) { - dns_cache_replace(request->domain, cname, cname_ttl, request->ttl_v6, DNS_T_AAAA, request->ipv6_addr, DNS_RR_AAAA_LEN, request->ping_ttl_v6); + dns_cache_replace(request->domain, cname, cname_ttl, request->ttl_v6, DNS_T_AAAA, request->ipv6_addr, + DNS_RR_AAAA_LEN, request->ping_ttl_v6); } else { /* insert result to cache */ - dns_cache_insert(request->domain, cname, cname_ttl, request->ttl_v6, DNS_T_AAAA, request->ipv6_addr, DNS_RR_AAAA_LEN, request->ping_ttl_v6); + dns_cache_insert(request->domain, cname, cname_ttl, request->ttl_v6, DNS_T_AAAA, request->ipv6_addr, + DNS_RR_AAAA_LEN, request->ping_ttl_v6); } } @@ -752,17 +770,20 @@ static int _dns_server_request_complete_AAAA(struct dns_request *request) } if (request->has_ipv4 && (request->ping_ttl_v4 > 0)) { - tlog(TLOG_INFO, "result: %s, rcode: %d, %d.%d.%d.%d\n", request->domain, request->rcode, request->ipv4_addr[0], request->ipv4_addr[1], - request->ipv4_addr[2], request->ipv4_addr[3]); + tlog(TLOG_INFO, "result: %s, rcode: %d, %d.%d.%d.%d\n", request->domain, request->rcode, request->ipv4_addr[0], + request->ipv4_addr[1], request->ipv4_addr[2], request->ipv4_addr[3]); /* if ipv4 is fasting than ipv6, add ipv4 to cache, and return SOA for AAAA request */ - if ((request->ping_ttl_v4 + (dns_conf_dualstack_ip_selection_threshold * 10)) < request->ping_ttl_v6 || request->ping_ttl_v6 < 0) { + if ((request->ping_ttl_v4 + (dns_conf_dualstack_ip_selection_threshold * 10)) < request->ping_ttl_v6 || + request->ping_ttl_v6 < 0) { tlog(TLOG_DEBUG, "Force IPV4 perfered."); if (_dns_server_has_bind_flag(request, BIND_FLAG_NO_CACHE) != 0) { if (request->prefetch) { - dns_cache_replace(request->domain, cname, cname_ttl, request->ttl_v4, DNS_T_A, request->ipv4_addr, DNS_RR_A_LEN, request->ping_ttl_v4); + dns_cache_replace(request->domain, cname, cname_ttl, request->ttl_v4, DNS_T_A, request->ipv4_addr, + DNS_RR_A_LEN, request->ping_ttl_v4); } else { - dns_cache_insert(request->domain, cname, cname_ttl, request->ttl_v4, DNS_T_A, request->ipv4_addr, DNS_RR_A_LEN, request->ping_ttl_v4); + dns_cache_insert(request->domain, cname, cname_ttl, request->ttl_v4, DNS_T_A, request->ipv4_addr, + DNS_RR_A_LEN, request->ping_ttl_v4); } } @@ -891,16 +912,19 @@ static void _dns_server_select_possible_ipaddress(struct dns_request *request) case DNS_T_A: { memcpy(request->ipv4_addr, selected_addr_map->ipv4_addr, DNS_RR_A_LEN); request->ttl_v4 = DNS_SERVER_TMOUT_TTL; - tlog(TLOG_DEBUG, "possible result: %s, rcode: %d, %d.%d.%d.%d\n", request->domain, request->rcode, request->ipv4_addr[0], request->ipv4_addr[1], - request->ipv4_addr[2], request->ipv4_addr[3]); + tlog(TLOG_DEBUG, "possible result: %s, rcode: %d, %d.%d.%d.%d\n", request->domain, request->rcode, + request->ipv4_addr[0], request->ipv4_addr[1], request->ipv4_addr[2], request->ipv4_addr[3]); } break; case DNS_T_AAAA: { memcpy(request->ipv6_addr, selected_addr_map->ipv6_addr, DNS_RR_AAAA_LEN); request->ttl_v6 = DNS_SERVER_TMOUT_TTL; - tlog(TLOG_DEBUG, "possible result: %s, rcode: %d, %.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x", request->domain, - request->rcode, request->ipv6_addr[0], request->ipv6_addr[1], request->ipv6_addr[2], request->ipv6_addr[3], request->ipv6_addr[4], - request->ipv6_addr[5], request->ipv6_addr[6], request->ipv6_addr[7], request->ipv6_addr[8], request->ipv6_addr[9], request->ipv6_addr[10], - request->ipv6_addr[11], request->ipv6_addr[12], request->ipv6_addr[13], request->ipv6_addr[14], request->ipv6_addr[15]); + tlog(TLOG_DEBUG, + "possible result: %s, rcode: %d, %.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x", + request->domain, request->rcode, request->ipv6_addr[0], request->ipv6_addr[1], request->ipv6_addr[2], + request->ipv6_addr[3], request->ipv6_addr[4], request->ipv6_addr[5], request->ipv6_addr[6], + request->ipv6_addr[7], request->ipv6_addr[8], request->ipv6_addr[9], request->ipv6_addr[10], + request->ipv6_addr[11], request->ipv6_addr[12], request->ipv6_addr[13], request->ipv6_addr[14], + request->ipv6_addr[15]); } break; default: break; @@ -998,8 +1022,9 @@ errout: return NULL; } -static void _dns_server_ping_result(struct ping_host_struct *ping_host, const char *host, FAST_PING_RESULT result, struct sockaddr *addr, socklen_t addr_len, - int seqno, int ttl, struct timeval *tv, void *userptr) +static void _dns_server_ping_result(struct ping_host_struct *ping_host, const char *host, FAST_PING_RESULT result, + struct sockaddr *addr, socklen_t addr_len, int seqno, int ttl, struct timeval *tv, + void *userptr) { struct dns_request *request = userptr; int may_complete = 0; @@ -1181,7 +1206,8 @@ static int _dns_server_get_conf_ttl(int ttl) return ttl; } -static int _dns_server_ip_rule_check(struct dns_request *request, unsigned char *addr, int addr_len, dns_type_t addr_type, int result_flag) +static int _dns_server_ip_rule_check(struct dns_request *request, unsigned char *addr, int addr_len, + dns_type_t addr_type, int result_flag) { prefix_t prefix; radix_node_t *node = NULL; @@ -1266,7 +1292,8 @@ static int _dns_server_is_adblock_ipv6(unsigned char addr[16]) return -1; } -static int _dns_server_process_answer_A(struct dns_rrs *rrs, struct dns_request *request, char *domain, unsigned int result_flag, int ping_timeout) +static int _dns_server_process_answer_A(struct dns_rrs *rrs, struct dns_request *request, char *domain, + unsigned int result_flag, int ping_timeout) { int ttl; int ip_check_result = 0; @@ -1339,7 +1366,8 @@ static int _dns_server_process_answer_A(struct dns_rrs *rrs, struct dns_request return 0; } -static int _dns_server_process_answer_AAAA(struct dns_rrs *rrs, struct dns_request *request, char *domain, unsigned int result_flag, int ping_timeout) +static int _dns_server_process_answer_AAAA(struct dns_rrs *rrs, struct dns_request *request, char *domain, + unsigned int result_flag, int ping_timeout) { unsigned char addr[16]; char name[DNS_MAX_CNAME_LEN] = {0}; @@ -1354,8 +1382,9 @@ static int _dns_server_process_answer_AAAA(struct dns_rrs *rrs, struct dns_reque _dns_server_request_get(request); dns_get_AAAA(rrs, name, DNS_MAX_CNAME_LEN, &ttl, addr); - tlog(TLOG_DEBUG, "domain: %s TTL: %d IP: %.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x", name, ttl, addr[0], addr[1], addr[2], - addr[3], addr[4], addr[5], addr[6], addr[7], addr[8], addr[9], addr[10], addr[11], addr[12], addr[13], addr[14], addr[15]); + tlog(TLOG_DEBUG, "domain: %s TTL: %d IP: %.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x", + name, ttl, addr[0], addr[1], addr[2], addr[3], addr[4], addr[5], addr[6], addr[7], addr[8], addr[9], addr[10], + addr[11], addr[12], addr[13], addr[14], addr[15]); ip_check_result = _dns_server_ip_rule_check(request, addr, 16, DNS_T_AAAA, result_flag); if (ip_check_result == 0) { @@ -1399,8 +1428,9 @@ static int _dns_server_process_answer_AAAA(struct dns_rrs *rrs, struct dns_reque return -1; } - sprintf(ip, "[%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x]", addr[0], addr[1], addr[2], addr[3], addr[4], addr[5], addr[6], - addr[7], addr[8], addr[9], addr[10], addr[11], addr[12], addr[13], addr[14], addr[15]); + sprintf(ip, "[%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x]", addr[0], addr[1], addr[2], + addr[3], addr[4], addr[5], addr[6], addr[7], addr[8], addr[9], addr[10], addr[11], addr[12], addr[13], + addr[14], addr[15]); /* start ping */ if (_dns_server_check_speed(request, ip, 0, ping_timeout) != 0) { @@ -1410,7 +1440,8 @@ static int _dns_server_process_answer_AAAA(struct dns_rrs *rrs, struct dns_reque return 0; } -static int _dns_server_process_answer(struct dns_request *request, char *domain, struct dns_packet *packet, unsigned int result_flag) +static int _dns_server_process_answer(struct dns_request *request, char *domain, struct dns_packet *packet, + unsigned int result_flag) { int ttl; char name[DNS_MAX_CNAME_LEN] = {0}; @@ -1477,9 +1508,11 @@ static int _dns_server_process_answer(struct dns_request *request, char *domain, request->has_soa = 1; request->rcode = packet->head.rcode; dns_get_SOA(rrs, name, 128, &ttl, &request->soa); - tlog(TLOG_DEBUG, "domain: %s, qtype: %d, SOA: mname: %s, rname: %s, serial: %d, refresh: %d, retry: %d, expire: %d, minimum: %d", domain, - request->qtype, request->soa.mname, request->soa.rname, request->soa.serial, request->soa.refresh, request->soa.retry, request->soa.expire, - request->soa.minimum); + tlog(TLOG_DEBUG, + "domain: %s, qtype: %d, SOA: mname: %s, rname: %s, serial: %d, refresh: %d, retry: %d, expire: " + "%d, minimum: %d", + domain, request->qtype, request->soa.mname, request->soa.rname, request->soa.serial, + request->soa.refresh, request->soa.retry, request->soa.expire, request->soa.minimum); if (atomic_inc_return(&request->soa_num) >= (dns_server_num() / 2)) { _dns_server_request_complete(request); } @@ -1508,7 +1541,8 @@ static int dns_server_update_reply_packet_id(struct dns_request *request, unsign return 0; } -static int _dns_server_passthrough_rule_check(struct dns_request *request, char *domain, struct dns_packet *packet, unsigned int result_flag) +static int _dns_server_passthrough_rule_check(struct dns_request *request, char *domain, struct dns_packet *packet, + unsigned int result_flag) { int ttl; char name[DNS_MAX_CNAME_LEN] = {0}; @@ -1567,8 +1601,10 @@ static int _dns_server_passthrough_rule_check(struct dns_request *request, char _dns_server_request_get(request); dns_get_AAAA(rrs, name, DNS_MAX_CNAME_LEN, &ttl, addr); - tlog(TLOG_DEBUG, "domain: %s TTL: %d IP: %.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x", name, ttl, addr[0], addr[1], - addr[2], addr[3], addr[4], addr[5], addr[6], addr[7], addr[8], addr[9], addr[10], addr[11], addr[12], addr[13], addr[14], addr[15]); + tlog(TLOG_DEBUG, + "domain: %s TTL: %d IP: %.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x", + name, ttl, addr[0], addr[1], addr[2], addr[3], addr[4], addr[5], addr[6], addr[7], addr[8], + addr[9], addr[10], addr[11], addr[12], addr[13], addr[14], addr[15]); ip_check_result = _dns_server_ip_rule_check(request, addr, 16, DNS_T_AAAA, result_flag); if (ip_check_result == 0) { @@ -1591,7 +1627,8 @@ static int _dns_server_passthrough_rule_check(struct dns_request *request, char return -1; } -static int _dns_server_reply_passthrouth(struct dns_request *request, struct dns_packet *packet, unsigned char *inpacket, int inpacket_len) +static int _dns_server_reply_passthrouth(struct dns_request *request, struct dns_packet *packet, + unsigned char *inpacket, int inpacket_len) { int ret = 0; @@ -1606,8 +1643,9 @@ static int _dns_server_reply_passthrouth(struct dns_request *request, struct dns return ret; } -static int dns_server_resolve_callback(char *domain, dns_result_type rtype, unsigned int result_flag, struct dns_packet *packet, unsigned char *inpacket, - int inpacket_len, void *user_ptr) +static int dns_server_resolve_callback(char *domain, dns_result_type rtype, unsigned int result_flag, + struct dns_packet *packet, unsigned char *inpacket, int inpacket_len, + void *user_ptr) { struct dns_request *request = user_ptr; int ip_num = 0; @@ -1679,23 +1717,28 @@ static int _dns_server_process_ptr(struct dns_request *request) struct sockaddr_in *addr_in; addr_in = (struct sockaddr_in *)ifa->ifa_addr; addr = (unsigned char *)&(addr_in->sin_addr.s_addr); - snprintf(reverse_addr, sizeof(reverse_addr), "%d.%d.%d.%d.in-addr.arpa", addr[3], addr[2], addr[1], addr[0]); + snprintf(reverse_addr, sizeof(reverse_addr), "%d.%d.%d.%d.in-addr.arpa", addr[3], addr[2], addr[1], + addr[0]); } break; case AF_INET6: { struct sockaddr_in6 *addr_in6; addr_in6 = (struct sockaddr_in6 *)ifa->ifa_addr; if (IN6_IS_ADDR_V4MAPPED(&addr_in6->sin6_addr)) { addr = addr_in6->sin6_addr.s6_addr + 12; - snprintf(reverse_addr, sizeof(reverse_addr), "%d.%d.%d.%d.in-addr.arpa", addr[3], addr[2], addr[1], addr[0]); + snprintf(reverse_addr, sizeof(reverse_addr), "%d.%d.%d.%d.in-addr.arpa", addr[3], addr[2], addr[1], + addr[0]); } else { addr = addr_in6->sin6_addr.s6_addr; snprintf(reverse_addr, sizeof(reverse_addr), - "%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.ip6.arpa", addr[15] & 0xF, - (addr[15] >> 4) & 0xF, addr[14] & 0xF, (addr[14] >> 4) & 0xF, addr[13] & 0xF, (addr[13] >> 4) & 0xF, addr[12] & 0xF, - (addr[12] >> 4) & 0xF, addr[11] & 0xF, (addr[11] >> 4) & 0xF, addr[10] & 0xF, (addr[10] >> 4) & 0xF, addr[9] & 0xF, - (addr[9] >> 4) & 0xF, addr[8] & 0xF, (addr[8] >> 4) & 0xF, addr[7] & 0xF, (addr[7] >> 4) & 0xF, addr[6] & 0xF, (addr[6] >> 4) & 0xF, - addr[5] & 0xF, (addr[5] >> 4) & 0xF, addr[4] & 0xF, (addr[4] >> 4) & 0xF, addr[3] & 0xF, (addr[3] >> 4) & 0xF, addr[2] & 0xF, - (addr[2] >> 4) & 0xF, addr[1] & 0xF, (addr[1] >> 4) & 0xF, addr[0] & 0xF, (addr[0] >> 4) & 0xF); + "%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x." + "%x.ip6.arpa", + addr[15] & 0xF, (addr[15] >> 4) & 0xF, addr[14] & 0xF, (addr[14] >> 4) & 0xF, addr[13] & 0xF, + (addr[13] >> 4) & 0xF, addr[12] & 0xF, (addr[12] >> 4) & 0xF, addr[11] & 0xF, + (addr[11] >> 4) & 0xF, addr[10] & 0xF, (addr[10] >> 4) & 0xF, addr[9] & 0xF, + (addr[9] >> 4) & 0xF, addr[8] & 0xF, (addr[8] >> 4) & 0xF, addr[7] & 0xF, (addr[7] >> 4) & 0xF, + addr[6] & 0xF, (addr[6] >> 4) & 0xF, addr[5] & 0xF, (addr[5] >> 4) & 0xF, addr[4] & 0xF, + (addr[4] >> 4) & 0xF, addr[3] & 0xF, (addr[3] >> 4) & 0xF, addr[2] & 0xF, (addr[2] >> 4) & 0xF, + addr[1] & 0xF, (addr[1] >> 4) & 0xF, addr[0] & 0xF, (addr[0] >> 4) & 0xF); } } break; default: @@ -1736,7 +1779,8 @@ errout: return -1; } -static void _dns_server_log_rule(const char *domain, enum domain_rule rule_type, unsigned char *rule_key, int rule_key_len) +static void _dns_server_log_rule(const char *domain, enum domain_rule rule_type, unsigned char *rule_key, + int rule_key_len) { char rule_name[DNS_MAX_CNAME_LEN]; @@ -1751,8 +1795,7 @@ static void _dns_server_log_rule(const char *domain, enum domain_rule rule_type, static void _dns_server_update_rule_by_flags(struct dns_request *request) { - struct dns_rule_flags *rule_flag = - (struct dns_rule_flags *)request->domain_rule.rules[0]; + struct dns_rule_flags *rule_flag = (struct dns_rule_flags *)request->domain_rule.rules[0]; unsigned int flags = 0; if (rule_flag == NULL) { @@ -1828,7 +1871,8 @@ void _dns_server_get_domain_rule(struct dns_request *request) domain_key[domain_len] = 0; /* find domain rule */ - art_substring_walk(&dns_conf_domain_rule, (unsigned char *)domain_key, domain_len, _dns_server_get_rules, &walk_args); + art_substring_walk(&dns_conf_domain_rule, (unsigned char *)domain_key, domain_len, _dns_server_get_rules, + &walk_args); if (likely(dns_conf_log_level > TLOG_DEBUG)) { return; } @@ -2004,7 +2048,8 @@ static int _dns_server_process_cache(struct dns_request *request) if (request->dualstack_selection && request->qtype == DNS_T_AAAA) { dns_cache_A = dns_cache_lookup(request->domain, DNS_T_A); if (dns_cache_A && (dns_cache_A->speed > 0)) { - if ((dns_cache_A->speed + (dns_conf_dualstack_ip_selection_threshold * 10)) < dns_cache->speed || dns_cache->speed < 0) { + if ((dns_cache_A->speed + (dns_conf_dualstack_ip_selection_threshold * 10)) < dns_cache->speed || + dns_cache->speed < 0) { tlog(TLOG_DEBUG, "Force IPV4 perfered."); dns_cache_release(dns_cache_A); dns_cache_release(dns_cache); @@ -2084,7 +2129,8 @@ static void _dns_server_request_set_enable_prefetch(struct dns_request *request) request->prefetch = 1; } -static int _dns_server_request_set_client_addr(struct dns_request *request, struct sockaddr_storage *from, socklen_t from_len) +static int _dns_server_request_set_client_addr(struct dns_request *request, struct sockaddr_storage *from, + socklen_t from_len) { switch (from->ss_family) { case AF_INET: @@ -2255,8 +2301,9 @@ errout: return ret; } -static int _dns_server_recv(struct dns_server_conn_head *conn, unsigned char *inpacket, int inpacket_len, struct sockaddr_storage *local, socklen_t local_len, - struct sockaddr_storage *from, socklen_t from_len) +static int _dns_server_recv(struct dns_server_conn_head *conn, unsigned char *inpacket, int inpacket_len, + struct sockaddr_storage *local, socklen_t local_len, struct sockaddr_storage *from, + socklen_t from_len) { int decode_len; int ret = -1; @@ -2272,16 +2319,19 @@ static int _dns_server_recv(struct dns_server_conn_head *conn, unsigned char *in int qtype = DNS_T_ALL; /* decode packet */ - tlog(TLOG_DEBUG, "recv query packet from %s, len = %d", gethost_by_addr(name, sizeof(name), (struct sockaddr *)from), inpacket_len); + tlog(TLOG_DEBUG, "recv query packet from %s, len = %d", + gethost_by_addr(name, sizeof(name), (struct sockaddr *)from), inpacket_len); decode_len = dns_decode(packet, DNS_PACKSIZE, inpacket, inpacket_len); if (decode_len < 0) { tlog(TLOG_DEBUG, "decode failed.\n"); goto errout; } - tlog(TLOG_DEBUG, "request qdcount = %d, ancount = %d, nscount = %d, nrcount = %d, len = %d, id = %d, tc = %d, rd = %d, ra = %d, rcode = %d\n", - packet->head.qdcount, packet->head.ancount, packet->head.nscount, packet->head.nrcount, inpacket_len, packet->head.id, packet->head.tc, - packet->head.rd, packet->head.ra, packet->head.rcode); + tlog(TLOG_DEBUG, + "request qdcount = %d, ancount = %d, nscount = %d, nrcount = %d, len = %d, id = %d, tc = %d, rd = %d, ra = " + "%d, rcode = %d\n", + packet->head.qdcount, packet->head.ancount, packet->head.nscount, packet->head.nrcount, inpacket_len, + packet->head.id, packet->head.tc, packet->head.rd, packet->head.ra, packet->head.rcode); if (packet->head.qr != DNS_QR_QUERY) { goto errout; @@ -2452,7 +2502,8 @@ static int _dns_server_client_close(struct dns_server_conn_head *conn) return 0; } -static int _dns_server_tcp_accept(struct dns_server_conn_tcp_server *tcpserver, struct epoll_event *event, unsigned long now) +static int _dns_server_tcp_accept(struct dns_server_conn_tcp_server *tcpserver, struct epoll_event *event, + unsigned long now) { struct sockaddr_storage addr; struct dns_server_conn_tcp_client *tcpclient = NULL; @@ -2516,7 +2567,8 @@ static int _dns_server_tcp_recv(struct dns_server_conn_tcp_client *tcpclient) return 0; } - len = recv(tcpclient->head.fd, tcpclient->recvbuff.buf + tcpclient->recvbuff.size, sizeof(tcpclient->recvbuff.buf) - tcpclient->recvbuff.size, 0); + len = recv(tcpclient->head.fd, tcpclient->recvbuff.buf + tcpclient->recvbuff.size, + sizeof(tcpclient->recvbuff.buf) - tcpclient->recvbuff.size, 0); if (len < 0) { if (errno == EAGAIN) { return RECV_ERROR_AGAIN; @@ -2566,8 +2618,8 @@ static int _dns_server_tcp_process_one_request(struct dns_server_conn_tcp_client request_data = (unsigned char *)(tcpclient->recvbuff.buf + proceed_len + sizeof(unsigned short)); /* process one record */ - if (_dns_server_recv(&tcpclient->head, request_data, request_len, &tcpclient->localaddr, tcpclient->localaddr_len, &tcpclient->addr, - tcpclient->addr_len) != 0) { + if (_dns_server_recv(&tcpclient->head, request_data, request_len, &tcpclient->localaddr, + tcpclient->localaddr_len, &tcpclient->addr, tcpclient->addr_len) != 0) { tlog(TLOG_ERROR, "process tcp request failed."); return RECV_ERROR_FAIL; } @@ -2650,7 +2702,8 @@ static int _dns_server_tcp_send(struct dns_server_conn_tcp_client *tcpclient) return 0; } -static int _dns_server_process_tcp(struct dns_server_conn_tcp_client *dnsserver, struct epoll_event *event, unsigned long now) +static int _dns_server_process_tcp(struct dns_server_conn_tcp_client *dnsserver, struct epoll_event *event, + unsigned long now) { int ret = 0; @@ -2724,16 +2777,18 @@ static void _dns_server_second_ping_check(struct dns_request *request) switch (addr_map->addr_type) { case DNS_T_A: { _dns_server_request_get(request); - sprintf(ip, "%d.%d.%d.%d", addr_map->ipv4_addr[0], addr_map->ipv4_addr[1], addr_map->ipv4_addr[2], addr_map->ipv4_addr[3]); + sprintf(ip, "%d.%d.%d.%d", addr_map->ipv4_addr[0], addr_map->ipv4_addr[1], addr_map->ipv4_addr[2], + addr_map->ipv4_addr[3]); if (_dns_server_check_speed(request, ip, 1, DNS_PING_SECOND_TIMEOUT) != 0) { _dns_server_request_release(request); } } break; case DNS_T_AAAA: { _dns_server_request_get(request); - sprintf(ip, "[%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x]", addr_map->ipv6_addr[0], addr_map->ipv6_addr[1], - addr_map->ipv6_addr[2], addr_map->ipv6_addr[3], addr_map->ipv6_addr[4], addr_map->ipv6_addr[5], addr_map->ipv6_addr[6], - addr_map->ipv6_addr[7], addr_map->ipv6_addr[8], addr_map->ipv6_addr[9], addr_map->ipv6_addr[10], addr_map->ipv6_addr[11], + sprintf(ip, "[%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x]", + addr_map->ipv6_addr[0], addr_map->ipv6_addr[1], addr_map->ipv6_addr[2], addr_map->ipv6_addr[3], + addr_map->ipv6_addr[4], addr_map->ipv6_addr[5], addr_map->ipv6_addr[6], addr_map->ipv6_addr[7], + addr_map->ipv6_addr[8], addr_map->ipv6_addr[9], addr_map->ipv6_addr[10], addr_map->ipv6_addr[11], addr_map->ipv6_addr[12], addr_map->ipv6_addr[13], addr_map->ipv6_addr[14], addr_map->ipv6_addr[15]); if (_dns_server_check_speed(request, ip, 1, DNS_PING_SECOND_TIMEOUT) != 0) { @@ -2758,7 +2813,8 @@ static void _dns_server_prefetch_domain(struct dns_cache *dns_cache) } /* start prefetch domain */ - tlog(TLOG_DEBUG, "prefetch by cache %s, qtype %d, ttl %d, hitnum %d", dns_cache->domain, dns_cache->qtype, dns_cache->ttl, hitnum); + tlog(TLOG_DEBUG, "prefetch by cache %s, qtype %d, ttl %d, hitnum %d", dns_cache->domain, dns_cache->qtype, + dns_cache->ttl, hitnum); if (_dns_server_prefetch_request(dns_cache->domain, dns_cache->qtype) != 0) { tlog(TLOG_ERROR, "prefetch domain %s, qtype %d, failed.", dns_cache->domain, dns_cache->qtype); } @@ -2990,7 +3046,8 @@ static int _dns_create_socket(const char *host_ip, int type) fd = socket(gai->ai_family, gai->ai_socktype, gai->ai_protocol); if (fd < 0) { - tlog(TLOG_ERROR, "create socket failed, family = %d, type = %d, proto = %d, %s\n", gai->ai_family, gai->ai_socktype, gai->ai_protocol, strerror(errno)); + tlog(TLOG_ERROR, "create socket failed, family = %d, type = %d, proto = %d, %s\n", gai->ai_family, + gai->ai_socktype, gai->ai_protocol, strerror(errno)); goto errout; } @@ -3255,4 +3312,3 @@ void dns_server_exit(void) dns_cache_destroy(); } - diff --git a/src/dns_server.h b/src/dns_server.h index e19f18a..358bd60 100644 --- a/src/dns_server.h +++ b/src/dns_server.h @@ -36,7 +36,8 @@ void dns_server_stop(void); void dns_server_exit(void); /* query result notify function */ -typedef int (*dns_result_callback)(char *domain, dns_rtcode_t rtcode, dns_type_t addr_type, char *ip, unsigned int ping_time, void *user_ptr); +typedef int (*dns_result_callback)(char *domain, dns_rtcode_t rtcode, dns_type_t addr_type, char *ip, + unsigned int ping_time, void *user_ptr); /* query domain */ int dns_server_query(char *domain, int qtype, dns_result_callback callback, void *user_ptr); diff --git a/src/fast_ping.c b/src/fast_ping.c index 830a440..1bdf67f 100644 --- a/src/fast_ping.c +++ b/src/fast_ping.c @@ -219,7 +219,8 @@ static void _fast_ping_install_filter_v4(int sock) } } -static int _fast_ping_sockaddr_ip_cmp(struct sockaddr *first_addr, socklen_t first_addr_len, struct sockaddr *second_addr, socklen_t second_addr_len) +static int _fast_ping_sockaddr_ip_cmp(struct sockaddr *first_addr, socklen_t first_addr_len, + struct sockaddr *second_addr, socklen_t second_addr_len) { if (first_addr_len != second_addr_len) { return -1; @@ -379,8 +380,8 @@ static void _fast_ping_host_put(struct ping_host_struct *ping_host) tv.tv_sec = 0; tv.tv_usec = 0; - ping_host->ping_callback(ping_host, ping_host->host, PING_RESULT_END, &ping_host->addr, ping_host->addr_len, ping_host->seq, ping_host->ttl, &tv, - ping_host->userptr); + ping_host->ping_callback(ping_host, ping_host->host, PING_RESULT_END, &ping_host->addr, ping_host->addr_len, + ping_host->seq, ping_host->ttl, &tv, ping_host->userptr); } tlog(TLOG_DEBUG, "ping end, id %d", ping_host->sid); @@ -407,8 +408,8 @@ static void _fast_ping_host_remove(struct ping_host_struct *ping_host) tv.tv_sec = 0; tv.tv_usec = 0; - ping_host->ping_callback(ping_host, ping_host->host, PING_RESULT_END, &ping_host->addr, ping_host->addr_len, ping_host->seq, ping_host->ttl, &tv, - ping_host->userptr); + ping_host->ping_callback(ping_host, ping_host->host, PING_RESULT_END, &ping_host->addr, ping_host->addr_len, + ping_host->seq, ping_host->ttl, &tv, ping_host->userptr); } _fast_ping_host_put(ping_host); @@ -435,7 +436,8 @@ static int _fast_ping_sendping_v6(struct ping_host_struct *ping_host) packet->msg.seq = ping_host->seq; icmp6->icmp6_cksum = _fast_ping_checksum((void *)packet, sizeof(struct fast_ping_packet)); - len = sendto(ping.fd_icmp6, &ping_host->packet, sizeof(struct fast_ping_packet), 0, (struct sockaddr *)&ping_host->addr, ping_host->addr_len); + len = sendto(ping.fd_icmp6, &ping_host->packet, sizeof(struct fast_ping_packet), 0, + (struct sockaddr *)&ping_host->addr, ping_host->addr_len); if (len < 0 || len != sizeof(struct fast_ping_packet)) { int err = errno; if (errno == ENETUNREACH || errno == EINVAL) { @@ -450,8 +452,9 @@ static int _fast_ping_sendping_v6(struct ping_host_struct *ping_host) } char ping_host_name[PING_MAX_HOSTLEN]; - tlog(TLOG_ERROR, "sendto %s, id %d, %s", gethost_by_addr(ping_host_name, sizeof(ping_host_name), (struct sockaddr *)&ping_host->addr), ping_host->sid, - strerror(err)); + tlog(TLOG_ERROR, "sendto %s, id %d, %s", + gethost_by_addr(ping_host_name, sizeof(ping_host_name), (struct sockaddr *)&ping_host->addr), + ping_host->sid, strerror(err)); goto errout; } @@ -482,15 +485,17 @@ static int _fast_ping_sendping_v4(struct ping_host_struct *ping_host) packet->msg.cookie = ping_host->cookie; icmp->icmp_cksum = _fast_ping_checksum((void *)packet, sizeof(struct fast_ping_packet)); - len = sendto(ping.fd_icmp, packet, sizeof(struct fast_ping_packet), 0, (struct sockaddr *)&ping_host->addr, ping_host->addr_len); + len = sendto(ping.fd_icmp, packet, sizeof(struct fast_ping_packet), 0, (struct sockaddr *)&ping_host->addr, + ping_host->addr_len); if (len < 0 || len != sizeof(struct fast_ping_packet)) { int err = errno; if (errno == ENETUNREACH || errno == EINVAL) { goto errout; } char ping_host_name[PING_MAX_HOSTLEN]; - tlog(TLOG_ERROR, "sendto %s, id %d, %s", gethost_by_addr(ping_host_name, sizeof(ping_host_name), (struct sockaddr *)&ping_host->addr), ping_host->sid, - strerror(err)); + tlog(TLOG_ERROR, "sendto %s, id %d, %s", + gethost_by_addr(ping_host_name, sizeof(ping_host_name), (struct sockaddr *)&ping_host->addr), + ping_host->sid, strerror(err)); goto errout; } @@ -535,8 +540,9 @@ static int _fast_ping_sendping_udp(struct ping_host_struct *ping_host) goto errout; } char ping_host_name[PING_MAX_HOSTLEN]; - tlog(TLOG_ERROR, "sendto %s, id %d, %s", gethost_by_addr(ping_host_name, sizeof(ping_host_name), (struct sockaddr *)&ping_host->addr), ping_host->sid, - strerror(err)); + tlog(TLOG_ERROR, "sendto %s, id %d, %s", + gethost_by_addr(ping_host_name, sizeof(ping_host_name), (struct sockaddr *)&ping_host->addr), + ping_host->sid, strerror(err)); goto errout; } @@ -583,7 +589,8 @@ static int _fast_ping_sendping_tcp(struct ping_host_struct *ping_host) bool_print_log = 0; } - tlog(TLOG_ERROR, "connect %s, id %d, %s", gethost_by_addr(ping_host_name, sizeof(ping_host_name), (struct sockaddr *)&ping_host->addr), + tlog(TLOG_ERROR, "connect %s, id %d, %s", + gethost_by_addr(ping_host_name, sizeof(ping_host_name), (struct sockaddr *)&ping_host->addr), ping_host->sid, strerror(errno)); goto errout; } @@ -671,8 +678,8 @@ static int _fast_ping_create_icmp_sock(FAST_PING_TYPE type) } struct icmp_filter filt; - filt.data = ~((1 << ICMP_SOURCE_QUENCH) | (1 << ICMP_DEST_UNREACH) | (1 << ICMP_TIME_EXCEEDED) | (1 << ICMP_PARAMETERPROB) | (1 << ICMP_REDIRECT) | - (1 << ICMP_ECHOREPLY)); + filt.data = ~((1 << ICMP_SOURCE_QUENCH) | (1 << ICMP_DEST_UNREACH) | (1 << ICMP_TIME_EXCEEDED) | + (1 << ICMP_PARAMETERPROB) | (1 << ICMP_REDIRECT) | (1 << ICMP_ECHOREPLY)); setsockopt(fd, SOL_RAW, ICMP_FILTER, &filt, sizeof filt); setsockopt(fd, SOL_SOCKET, SO_SNDBUF, (const char *)&buffsize, optlen); setsockopt(fd, SOL_SOCKET, SO_RCVBUF, (const char *)&buffsize, optlen); @@ -829,8 +836,9 @@ errout: return -1; } -static void _fast_ping_print_result(struct ping_host_struct *ping_host, const char *host, FAST_PING_RESULT result, struct sockaddr *addr, socklen_t addr_len, - int seqno, int ttl, struct timeval *tv, void *userptr) +static void _fast_ping_print_result(struct ping_host_struct *ping_host, const char *host, FAST_PING_RESULT result, + struct sockaddr *addr, socklen_t addr_len, int seqno, int ttl, struct timeval *tv, + void *userptr) { if (result == PING_RESULT_RESPONSE) { double rtt = tv->tv_sec * 1000.0 + tv->tv_usec / 1000.0; @@ -842,7 +850,8 @@ static void _fast_ping_print_result(struct ping_host_struct *ping_host, const ch } } -static int _fast_ping_get_addr_by_icmp(const char *ip_str, int port, struct addrinfo **out_gai, FAST_PING_TYPE *out_ping_type) +static int _fast_ping_get_addr_by_icmp(const char *ip_str, int port, struct addrinfo **out_gai, + FAST_PING_TYPE *out_ping_type) { struct addrinfo *gai = NULL; int socktype = 0; @@ -891,7 +900,8 @@ errout: return -1; } -static int _fast_ping_get_addr_by_tcp(const char *ip_str, int port, struct addrinfo **out_gai, FAST_PING_TYPE *out_ping_type) +static int _fast_ping_get_addr_by_tcp(const char *ip_str, int port, struct addrinfo **out_gai, + FAST_PING_TYPE *out_ping_type) { struct addrinfo *gai = NULL; int socktype = 0; @@ -926,7 +936,8 @@ errout: return -1; } -static int _fast_ping_get_addr_by_dns(const char *ip_str, int port, struct addrinfo **out_gai, FAST_PING_TYPE *out_ping_type) +static int _fast_ping_get_addr_by_dns(const char *ip_str, int port, struct addrinfo **out_gai, + FAST_PING_TYPE *out_ping_type) { struct addrinfo *gai = NULL; int socktype = 0; @@ -982,7 +993,8 @@ errout: return -1; } -static int _fast_ping_get_addr_by_type(PING_TYPE type, const char *ip_str, int port, struct addrinfo **out_gai, FAST_PING_TYPE *out_ping_type) +static int _fast_ping_get_addr_by_type(PING_TYPE type, const char *ip_str, int port, struct addrinfo **out_gai, + FAST_PING_TYPE *out_ping_type) { switch (type) { case PING_TYPE_ICMP: @@ -1001,7 +1013,8 @@ static int _fast_ping_get_addr_by_type(PING_TYPE type, const char *ip_str, int p return -1; } -struct ping_host_struct *fast_ping_start(PING_TYPE type, const char *host, int count, int interval, int timeout, fast_ping_result ping_callback, void *userptr) +struct ping_host_struct *fast_ping_start(PING_TYPE type, const char *host, int count, int interval, int timeout, + fast_ping_result ping_callback, void *userptr) { struct ping_host_struct *ping_host = NULL; struct addrinfo *gai = NULL; @@ -1106,7 +1119,8 @@ static void tv_sub(struct timeval *out, struct timeval *in) out->tv_sec -= in->tv_sec; } -static struct fast_ping_packet *_fast_ping_icmp6_packet(struct ping_host_struct *ping_host, struct msghdr *msg, u_char *packet_data, int data_len) +static struct fast_ping_packet *_fast_ping_icmp6_packet(struct ping_host_struct *ping_host, struct msghdr *msg, + u_char *packet_data, int data_len) { int icmp_len; struct fast_ping_packet *packet = (struct fast_ping_packet *)packet_data; @@ -1148,7 +1162,8 @@ static struct fast_ping_packet *_fast_ping_icmp6_packet(struct ping_host_struct return packet; } -static struct fast_ping_packet *_fast_ping_icmp_packet(struct ping_host_struct *ping_host, struct msghdr *msg, u_char *packet_data, int data_len) +static struct fast_ping_packet *_fast_ping_icmp_packet(struct ping_host_struct *ping_host, struct msghdr *msg, + u_char *packet_data, int data_len) { struct ip *ip = (struct ip *)packet_data; struct fast_ping_packet *packet; @@ -1185,8 +1200,8 @@ static struct fast_ping_packet *_fast_ping_icmp_packet(struct ping_host_struct * return packet; } -static struct fast_ping_packet *_fast_ping_recv_packet(struct ping_host_struct *ping_host, struct msghdr *msg, u_char *inpacket, int len, - struct timeval *tvrecv) +static struct fast_ping_packet *_fast_ping_recv_packet(struct ping_host_struct *ping_host, struct msghdr *msg, + u_char *inpacket, int len, struct timeval *tvrecv) { struct fast_ping_packet *packet = NULL; @@ -1248,7 +1263,8 @@ static int _fast_ping_process_icmp(struct ping_host_struct *ping_host, struct ti packet = _fast_ping_recv_packet(ping_host, &msg, inpacket, len, now); if (packet == NULL) { char name[PING_MAX_HOSTLEN]; - tlog(TLOG_DEBUG, "recv ping packet from %s failed.", gethost_by_addr(name, sizeof(name), (struct sockaddr *)&from)); + tlog(TLOG_DEBUG, "recv ping packet from %s failed.", + gethost_by_addr(name, sizeof(name), (struct sockaddr *)&from)); goto errout; } @@ -1260,7 +1276,8 @@ static int _fast_ping_process_icmp(struct ping_host_struct *ping_host, struct ti pthread_mutex_lock(&ping.map_lock); hash_for_each_possible(ping.addrmap, recv_ping_host, addr_node, addrkey) { - if (_fast_ping_sockaddr_ip_cmp(&recv_ping_host->addr, recv_ping_host->addr_len, (struct sockaddr *)&from, from_len) == 0 && + if (_fast_ping_sockaddr_ip_cmp(&recv_ping_host->addr, recv_ping_host->addr_len, (struct sockaddr *)&from, + from_len) == 0 && recv_ping_host->sid == sid && recv_ping_host->cookie == cookie) { _fast_ping_host_get(recv_ping_host); break; @@ -1282,8 +1299,9 @@ static int _fast_ping_process_icmp(struct ping_host_struct *ping_host, struct ti recv_ping_host->ttl = packet->ttl; tv_sub(&tvresult, tvsend); if (recv_ping_host->ping_callback) { - recv_ping_host->ping_callback(recv_ping_host, recv_ping_host->host, PING_RESULT_RESPONSE, &recv_ping_host->addr, recv_ping_host->addr_len, - recv_ping_host->seq, recv_ping_host->ttl, &tvresult, recv_ping_host->userptr); + recv_ping_host->ping_callback(recv_ping_host, recv_ping_host->host, PING_RESULT_RESPONSE, &recv_ping_host->addr, + recv_ping_host->addr_len, recv_ping_host->seq, recv_ping_host->ttl, &tvresult, + recv_ping_host->userptr); } recv_ping_host->send = 0; @@ -1316,8 +1334,8 @@ static int _fast_ping_process_tcp(struct ping_host_struct *ping_host, struct epo } tv_sub(&tvresult, tvsend); if (ping_host->ping_callback) { - ping_host->ping_callback(ping_host, ping_host->host, PING_RESULT_RESPONSE, &ping_host->addr, ping_host->addr_len, ping_host->seq, ping_host->ttl, - &tvresult, ping_host->userptr); + ping_host->ping_callback(ping_host, ping_host->host, PING_RESULT_RESPONSE, &ping_host->addr, + ping_host->addr_len, ping_host->seq, ping_host->ttl, &tvresult, ping_host->userptr); } ping_host->send = 0; @@ -1393,7 +1411,8 @@ static int _fast_ping_process_udp(struct ping_host_struct *ping_host, struct tim pthread_mutex_lock(&ping.map_lock); hash_for_each_possible(ping.addrmap, recv_ping_host, addr_node, addrkey) { - if (_fast_ping_sockaddr_ip_cmp(&recv_ping_host->addr, recv_ping_host->addr_len, (struct sockaddr *)&from, from_len) == 0 && + if (_fast_ping_sockaddr_ip_cmp(&recv_ping_host->addr, recv_ping_host->addr_len, (struct sockaddr *)&from, + from_len) == 0 && recv_ping_host->sid == sid) { _fast_ping_host_get(recv_ping_host); break; @@ -1410,8 +1429,9 @@ static int _fast_ping_process_udp(struct ping_host_struct *ping_host, struct tim tvsend = &recv_ping_host->last; tv_sub(&tvresult, tvsend); if (recv_ping_host->ping_callback) { - recv_ping_host->ping_callback(recv_ping_host, recv_ping_host->host, PING_RESULT_RESPONSE, &recv_ping_host->addr, recv_ping_host->addr_len, - recv_ping_host->seq, recv_ping_host->ttl, &tvresult, recv_ping_host->userptr); + recv_ping_host->ping_callback(recv_ping_host, recv_ping_host->host, PING_RESULT_RESPONSE, &recv_ping_host->addr, + recv_ping_host->addr_len, recv_ping_host->seq, recv_ping_host->ttl, &tvresult, + recv_ping_host->userptr); } recv_ping_host->send = 0; @@ -1518,8 +1538,9 @@ static void _fast_ping_period_run(void) tv_sub(&interval, &ping_host->last); millisecond = interval.tv_sec * 1000 + interval.tv_usec / 1000; if (millisecond >= ping_host->timeout && ping_host->send == 1) { - ping_host->ping_callback(ping_host, ping_host->host, PING_RESULT_TIMEOUT, &ping_host->addr, ping_host->addr_len, ping_host->seq, ping_host->ttl, - &interval, ping_host->userptr); + ping_host->ping_callback(ping_host, ping_host->host, PING_RESULT_TIMEOUT, &ping_host->addr, + ping_host->addr_len, ping_host->seq, ping_host->ttl, &interval, + ping_host->userptr); ping_host->send = 0; } diff --git a/src/fast_ping.h b/src/fast_ping.h index f1bf716..b9124c3 100644 --- a/src/fast_ping.h +++ b/src/fast_ping.h @@ -38,11 +38,13 @@ typedef enum { } FAST_PING_RESULT; struct ping_host_struct; -typedef void (*fast_ping_result)(struct ping_host_struct *ping_host, const char *host, FAST_PING_RESULT result, struct sockaddr *addr, socklen_t addr_len, - int seqno, int ttl, struct timeval *tv, void *userptr); +typedef void (*fast_ping_result)(struct ping_host_struct *ping_host, const char *host, FAST_PING_RESULT result, + struct sockaddr *addr, socklen_t addr_len, int seqno, int ttl, struct timeval *tv, + void *userptr); /* start ping */ -struct ping_host_struct *fast_ping_start(PING_TYPE type, const char *host, int count, int interval, int timeout, fast_ping_result ping_callback, void *userptr); +struct ping_host_struct *fast_ping_start(PING_TYPE type, const char *host, int count, int interval, int timeout, + fast_ping_result ping_callback, void *userptr); /* stop ping */ int fast_ping_stop(struct ping_host_struct *ping_host); diff --git a/src/include/conf.h b/src/include/conf.h index 04ac58a..d0c73f9 100644 --- a/src/include/conf.h +++ b/src/include/conf.h @@ -16,7 +16,6 @@ * along with this program. If not, see . */ - #ifndef _GENERIC_CONF_H #define _GENERIC_CONF_H @@ -27,9 +26,9 @@ #define CONF_INT_MAX (~(1 << 31)) #define CONF_INT_MIN (1 << 31) -#define CONF_RET_OK 0 -#define CONF_RET_ERR -1 -#define CONF_RET_WARN -2 +#define CONF_RET_OK 0 +#define CONF_RET_ERR -1 +#define CONF_RET_WARN -2 #define CONF_RET_NOENT -3 struct config_item { @@ -64,48 +63,48 @@ struct config_item_size { size_t max; }; -#define CONF_INT(key, value, min_value, max_value) \ - { \ - key, conf_int, &(struct config_item_int) \ - { \ - .data = value, .min = min_value, .max = max_value \ - } \ +#define CONF_INT(key, value, min_value, max_value) \ + { \ + key, conf_int, &(struct config_item_int) \ + { \ + .data = value, .min = min_value, .max = max_value \ + } \ } -#define CONF_STRING(key, value, len_value) \ - { \ - key, conf_string, &(struct config_item_string) \ - { \ - .data = value, .size = len_value \ - } \ +#define CONF_STRING(key, value, len_value) \ + { \ + key, conf_string, &(struct config_item_string) \ + { \ + .data = value, .size = len_value \ + } \ } -#define CONF_YESNO(key, value) \ - { \ - key, conf_yesno, &(struct config_item_yesno) \ - { \ - .data = value \ - } \ +#define CONF_YESNO(key, value) \ + { \ + key, conf_yesno, &(struct config_item_yesno) \ + { \ + .data = value \ + } \ } -#define CONF_SIZE(key, value, min_value, max_value) \ - { \ - key, conf_size, &(struct config_item_size) \ - { \ - .data = value, .min = min_value, .max = max_value \ - } \ +#define CONF_SIZE(key, value, min_value, max_value) \ + { \ + key, conf_size, &(struct config_item_size) \ + { \ + .data = value, .min = min_value, .max = max_value \ + } \ } /* * func: int (*func)(void *data, int argc, char *argv[]); */ -#define CONF_CUSTOM(key, func, data) \ - { \ - key, conf_custom, &(struct config_item_custom) \ - { \ - .custom_data = data, .custom_func = func \ - } \ +#define CONF_CUSTOM(key, func, data) \ + { \ + key, conf_custom, &(struct config_item_custom) \ + { \ + .custom_data = data, .custom_func = func \ + } \ } -#define CONF_END() \ - { \ - NULL, NULL, NULL \ +#define CONF_END() \ + { \ + NULL, NULL, NULL \ } extern int conf_custom(const char *item, void *data, int argc, char *argv[]); diff --git a/src/smartdns.c b/src/smartdns.c index 4a4397b..6132a37 100644 --- a/src/smartdns.c +++ b/src/smartdns.c @@ -79,7 +79,8 @@ static void _show_version(void) #else struct tm tm; get_compiled_time(&tm); - snprintf(str_ver, sizeof(str_ver), "1.%.4d%.2d%.2d-%.2d%.2d", tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min); + snprintf(str_ver, sizeof(str_ver), "1.%.4d%.2d%.2d-%.2d%.2d", tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, + tm.tm_hour, tm.tm_min); #endif printf("smartdns %s\n", str_ver); } @@ -157,13 +158,15 @@ static int _smartdns_add_servers(void) safe_strncpy(flag_http->hostname, dns_conf_servers[i].hostname, sizeof(flag_http->hostname)); safe_strncpy(flag_http->path, dns_conf_servers[i].path, sizeof(flag_http->path)); safe_strncpy(flag_http->httphost, dns_conf_servers[i].httphost, sizeof(flag_http->httphost)); - safe_strncpy(flag_http->tls_host_verify, dns_conf_servers[i].tls_host_verify, sizeof(flag_http->tls_host_verify)); + safe_strncpy(flag_http->tls_host_verify, dns_conf_servers[i].tls_host_verify, + sizeof(flag_http->tls_host_verify)); } break; case DNS_SERVER_TLS: { struct client_dns_server_flag_tls *flag_tls = &flags.tls; flag_tls->spi_len = dns_client_spki_decode(dns_conf_servers[i].spki, (unsigned char *)flag_tls->spki); safe_strncpy(flag_tls->hostname, dns_conf_servers[i].hostname, sizeof(flag_tls->hostname)); - safe_strncpy(flag_tls->tls_host_verify, dns_conf_servers[i].tls_host_verify, sizeof(flag_tls->tls_host_verify)); + safe_strncpy(flag_tls->tls_host_verify, dns_conf_servers[i].tls_host_verify, + sizeof(flag_tls->tls_host_verify)); } break; case DNS_SERVER_TCP: break; @@ -175,7 +178,8 @@ static int _smartdns_add_servers(void) flags.type = dns_conf_servers[i].type; flags.server_flag = dns_conf_servers[i].server_flag; flags.result_flag = dns_conf_servers[i].result_flag; - ret = dns_client_add_server(dns_conf_servers[i].server, dns_conf_servers[i].port, dns_conf_servers[i].type, &flags); + ret = dns_client_add_server(dns_conf_servers[i].server, dns_conf_servers[i].port, dns_conf_servers[i].type, + &flags); if (ret != 0) { tlog(TLOG_ERROR, "add server failed, %s:%d", dns_conf_servers[i].server, dns_conf_servers[i].port); return -1; @@ -259,7 +263,8 @@ static int _smartdns_init(void) tlog_setlogscreen(verbose_screen); tlog_setlevel(dns_conf_log_level); - tlog(TLOG_NOTICE, "smartdns starting...(Copyright (C) Nick Peng , build:%s %s)", __DATE__, __TIME__); + tlog(TLOG_NOTICE, "smartdns starting...(Copyright (C) Nick Peng , build:%s %s)", __DATE__, + __TIME__); if (_smartdns_init_ssl() != 0) { tlog(TLOG_ERROR, "init ssl failed."); @@ -344,8 +349,11 @@ static void _sig_error_exit(int signo, siginfo_t *siginfo, void *ct) #elif defined(__mips__) PC = context->uc_mcontext.pc; #endif - tlog(TLOG_FATAL, "process exit with signal %d, code = %d, errno = %d, pid = %d, self = %d, pc = %#lx, addr = %#lx, build(%s %s)\n", signo, siginfo->si_code, - siginfo->si_errno, siginfo->si_pid, getpid(), PC, (unsigned long)siginfo->si_addr, __DATE__, __TIME__); + tlog(TLOG_FATAL, + "process exit with signal %d, code = %d, errno = %d, pid = %d, self = %d, pc = %#lx, addr = %#lx, build(%s " + "%s)\n", + signo, siginfo->si_code, siginfo->si_errno, siginfo->si_pid, getpid(), PC, (unsigned long)siginfo->si_addr, + __DATE__, __TIME__); sleep(1); _exit(0); diff --git a/src/util.c b/src/util.c index 63a1723..a7f5983 100644 --- a/src/util.c +++ b/src/util.c @@ -24,20 +24,20 @@ #include #include #include -#include +#include #include +#include +#include #include #include #include -#include #include #include +#include #include #include #include #include -#include -#include #define TMP_BUFF_LEN_32 32 @@ -285,14 +285,14 @@ int parse_ip(const char *value, char *ip, int *port) return 0; } -static int _check_is_ipv4(const char *ip) +static int _check_is_ipv4(const char *ip) { const char *ptr = ip; char c = 0; int dot_num = 0; int dig_num = 0; - while ( (c = *ptr++) != '\0') { + while ((c = *ptr++) != '\0') { if (c == '.') { dot_num++; dig_num = 0; @@ -326,7 +326,7 @@ static int _check_is_ipv6(const char *ip) int colon_num = 0; int dig_num = 0; - while ( (c = *ptr++) != '\0') { + while ((c = *ptr++) != '\0') { if (c == '[' || c == ']') { continue; } @@ -420,7 +420,7 @@ int parse_uri(char *value, char *scheme, char *host, int *port, char *path) if (path) { strncpy(path, process_ptr, PATH_MAX); - } + } return 0; } @@ -456,8 +456,8 @@ char *reverse_string(char *output, const char *input, int len, int to_lower_case if (to_lower_case) { if (*output >= 'A' && *output <= 'Z') { /* To lower case */ - *output = *output + 32; - } + *output = *output + 32; + } } output++; len--; @@ -502,7 +502,8 @@ static int _ipset_support_timeout(const char *ipsetname) return -1; } -static int _ipset_operate(const char *ipsetname, const unsigned char addr[], int addr_len, unsigned long timeout, int operate) +static int _ipset_operate(const char *ipsetname, const unsigned char addr[], int addr_len, unsigned long timeout, + int operate) { struct nlmsghdr *netlink_head; struct ipset_netlink_msg *netlink_msg; @@ -560,7 +561,9 @@ static int _ipset_operate(const char *ipsetname, const unsigned char addr[], int netlink_head->nlmsg_len += NETLINK_ALIGN(sizeof(struct ipset_netlink_attr)); nested[1]->type = NLA_F_NESTED | IPSET_ATTR_IP; - _ipset_add_attr(netlink_head, (af == AF_INET ? IPSET_ATTR_IPADDR_IPV4 : IPSET_ATTR_IPADDR_IPV6) | NLA_F_NET_BYTEORDER, addr_len, addr); + _ipset_add_attr(netlink_head, + (af == AF_INET ? IPSET_ATTR_IPADDR_IPV4 : IPSET_ATTR_IPADDR_IPV6) | NLA_F_NET_BYTEORDER, addr_len, + addr); nested[1]->len = (void *)buffer + NETLINK_ALIGN(netlink_head->nlmsg_len) - (void *)nested[1]; if (timeout > 0 && _ipset_support_timeout(ipsetname) == 0) { @@ -925,20 +928,20 @@ static int parse_server_name_extension(const char *data, size_t data_len, char * return -2; } -void get_compiled_time(struct tm *tm) -{ - char s_month[5]; - int month, day, year; +void get_compiled_time(struct tm *tm) +{ + char s_month[5]; + int month, day, year; int hour, min, sec; - static const char *month_names = "JanFebMarAprMayJunJulAugSepOctNovDec"; + static const char *month_names = "JanFebMarAprMayJunJulAugSepOctNovDec"; - sscanf(__DATE__, "%5s %d %d", s_month, &day, &year); - month = (strstr(month_names, s_month) - month_names) / 3; + sscanf(__DATE__, "%5s %d %d", s_month, &day, &year); + month = (strstr(month_names, s_month) - month_names) / 3; sscanf(__TIME__, "%d:%d:%d", &hour, &min, &sec); - tm->tm_year = year - 1900; - tm->tm_mon = month; - tm->tm_mday = day; - tm->tm_isdst = -1; + tm->tm_year = year - 1900; + tm->tm_mon = month; + tm->tm_mday = day; + tm->tm_isdst = -1; tm->tm_hour = hour; tm->tm_min = min; tm->tm_sec = sec; @@ -958,7 +961,7 @@ int has_network_raw_cap(void) int set_sock_keepalive(int fd, int keepidle, int keepinterval, int keepcnt) { const int yes = 1; - if (setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &yes, sizeof(yes))!= 0) { + if (setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &yes, sizeof(yes)) != 0) { return -1; } diff --git a/src/util.h b/src/util.h index 144674b..b5c4390 100644 --- a/src/util.h +++ b/src/util.h @@ -19,27 +19,27 @@ #ifndef SMART_DNS_UTIL_H #define SMART_DNS_UTIL_H +#include "stringutil.h" #include #include -#include "stringutil.h" #ifdef __cplusplus extern "C" { #endif /*__cplusplus */ #ifndef TCP_FASTOPEN -#define TCP_FASTOPEN 23 +#define TCP_FASTOPEN 23 #endif #ifndef TCP_FASTOPEN_CONNECT #define TCP_FASTOPEN_CONNECT 30 #endif #ifndef TCP_THIN_LINEAR_TIMEOUTS -#define TCP_THIN_LINEAR_TIMEOUTS 16 +#define TCP_THIN_LINEAR_TIMEOUTS 16 #endif #ifndef TCP_THIN_DUPACK -#define TCP_THIN_DUPACK 17 +#define TCP_THIN_DUPACK 17 #endif #define PORT_NOT_DEFINED -1