Format code
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
#ifndef _SMARTDNS_CACHE_H
|
||||
#define _SMARTDNS_CACHE_H
|
||||
|
||||
#include "dns.h"
|
||||
#include "hashtable.h"
|
||||
#include "hash.h"
|
||||
#include "list.h"
|
||||
#include "atomic.h"
|
||||
#include "dns.h"
|
||||
#include "hash.h"
|
||||
#include "hashtable.h"
|
||||
#include "list.h"
|
||||
#include <time.h>
|
||||
|
||||
struct dns_cache {
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
#define DNS_TCP_BUFFER (16 * 1024)
|
||||
|
||||
#ifndef TCP_FASTOPEN_CONNECT
|
||||
#define TCP_FASTOPEN_CONNECT 30
|
||||
#define TCP_FASTOPEN_CONNECT 30
|
||||
#endif
|
||||
|
||||
struct dns_client_ecs {
|
||||
@@ -231,8 +231,8 @@ int _dns_client_server_exist(struct addrinfo *gai, dns_server_type_t server_type
|
||||
return -1;
|
||||
}
|
||||
|
||||
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)
|
||||
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) {
|
||||
@@ -661,9 +661,9 @@ 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);
|
||||
@@ -710,7 +710,7 @@ static int _dns_client_create_socket_udp(struct dns_server_info *server_info)
|
||||
int fd = 0;
|
||||
struct epoll_event event;
|
||||
const int on = 1;
|
||||
const int val=255;
|
||||
const int val = 255;
|
||||
|
||||
fd = socket(server_info->ai_family, SOCK_DGRAM, 0);
|
||||
if (fd < 0) {
|
||||
@@ -757,7 +757,7 @@ static int _DNS_client_create_socket_tcp(struct dns_server_info *server_info)
|
||||
goto errout;
|
||||
}
|
||||
|
||||
if (setsockopt(fd, IPPROTO_TCP, TCP_FASTOPEN_CONNECT, &yes, sizeof(yes)) != 0 ) {
|
||||
if (setsockopt(fd, IPPROTO_TCP, TCP_FASTOPEN_CONNECT, &yes, sizeof(yes)) != 0) {
|
||||
tlog(TLOG_DEBUG, "enable TCP fast open failed.");
|
||||
}
|
||||
|
||||
@@ -819,7 +819,7 @@ static int _DNS_client_create_socket_tls(struct dns_server_info *server_info)
|
||||
goto errout;
|
||||
}
|
||||
|
||||
if (setsockopt(fd, IPPROTO_TCP, TCP_FASTOPEN_CONNECT, &yes, sizeof(yes)) != 0 ) {
|
||||
if (setsockopt(fd, IPPROTO_TCP, TCP_FASTOPEN_CONNECT, &yes, sizeof(yes)) != 0) {
|
||||
tlog(TLOG_DEBUG, "enable TCP fast open failed.");
|
||||
}
|
||||
|
||||
@@ -920,10 +920,8 @@ static int _dns_client_process_udp(struct dns_server_info *server_info, struct e
|
||||
from_len = msg.msg_namelen;
|
||||
|
||||
for (cmsg = CMSG_FIRSTHDR(&msg); cmsg; cmsg = CMSG_NXTHDR(&msg, cmsg)) {
|
||||
if (cmsg->cmsg_level == SOL_IP
|
||||
&& cmsg->cmsg_type == IP_TTL
|
||||
) {
|
||||
uint8_t * ttlPtr = (uint8_t *)CMSG_DATA(cmsg);
|
||||
if (cmsg->cmsg_level == SOL_IP && cmsg->cmsg_type == IP_TTL) {
|
||||
uint8_t *ttlPtr = (uint8_t *)CMSG_DATA(cmsg);
|
||||
ttl = *ttlPtr;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -25,7 +25,8 @@ 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);
|
||||
|
||||
@@ -18,10 +18,10 @@
|
||||
#define _GNU_SOURCE
|
||||
#include "dns_server.h"
|
||||
#include "atomic.h"
|
||||
#include "dns_conf.h"
|
||||
#include "dns.h"
|
||||
#include "dns_cache.h"
|
||||
#include "dns_client.h"
|
||||
#include "dns_conf.h"
|
||||
#include "fast_ping.h"
|
||||
#include "hashtable.h"
|
||||
#include "list.h"
|
||||
@@ -528,7 +528,8 @@ int _dns_server_request_complete(struct dns_request *request)
|
||||
if (request->has_ipv4) {
|
||||
dns_cache_insert(request->domain, cname, cname_ttl, request->ttl_v4, DNS_T_AAAA, request->ipv4_addr, DNS_RR_A_LEN);
|
||||
|
||||
if (((request->ping_ttl_v4 + (dns_conf_dualstack_ip_selection_threshold * 10) < request->ping_ttl_v6 ) && (request->ping_ttl_v4 > 0)) || (request->ping_ttl_v6 == -1) ) {
|
||||
if (((request->ping_ttl_v4 + (dns_conf_dualstack_ip_selection_threshold * 10) < request->ping_ttl_v6) && (request->ping_ttl_v4 > 0)) ||
|
||||
(request->ping_ttl_v6 == -1)) {
|
||||
tlog(TLOG_DEBUG, "Force IPV4 perfered.");
|
||||
return _dns_server_reply_SOA(DNS_RC_NOERROR, request, NULL);
|
||||
}
|
||||
@@ -602,16 +603,15 @@ void _dns_server_select_maxhit_ipaddress(struct dns_request *request)
|
||||
|
||||
tlog(TLOG_DEBUG, "select best ip address, %s", request->domain);
|
||||
switch (request->qtype) {
|
||||
case DNS_T_A: {
|
||||
memcpy(request->ipv4_addr, maxhit_addr_map->ipv4_addr, DNS_RR_A_LEN);
|
||||
request->ttl_v4 = DNS_SERVER_TMOUT_TTL;
|
||||
} break;
|
||||
case DNS_T_AAAA: {
|
||||
memcpy(request->ipv6_addr, maxhit_addr_map->ipv6_addr, DNS_RR_AAAA_LEN);
|
||||
request->ttl_v6 = DNS_SERVER_TMOUT_TTL;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
case DNS_T_A: {
|
||||
memcpy(request->ipv4_addr, maxhit_addr_map->ipv4_addr, DNS_RR_A_LEN);
|
||||
request->ttl_v4 = DNS_SERVER_TMOUT_TTL;
|
||||
} break;
|
||||
case DNS_T_AAAA: {
|
||||
memcpy(request->ipv6_addr, maxhit_addr_map->ipv6_addr, DNS_RR_AAAA_LEN);
|
||||
request->ttl_v6 = DNS_SERVER_TMOUT_TTL;
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -625,8 +625,7 @@ void _dns_server_request_release(struct dns_request *request)
|
||||
int refcnt = atomic_dec_return(&request->refcnt);
|
||||
if (refcnt) {
|
||||
if (refcnt < 0) {
|
||||
tlog(TLOG_ERROR, "BUG: refcnt is %d, domain %s, qtype =%d", refcnt, request->domain,
|
||||
request->qtype);
|
||||
tlog(TLOG_ERROR, "BUG: refcnt is %d, domain %s, qtype =%d", refcnt, request->domain, request->qtype);
|
||||
abort();
|
||||
}
|
||||
return;
|
||||
@@ -675,7 +674,6 @@ void _dns_server_ping_result(struct ping_host_struct *ping_host, const char *hos
|
||||
|
||||
unsigned int rtt = tv->tv_sec * 10000 + tv->tv_usec / 100;
|
||||
|
||||
|
||||
switch (addr->sa_family) {
|
||||
case AF_INET: {
|
||||
struct sockaddr_in *addr_in;
|
||||
@@ -1007,8 +1005,8 @@ static int dns_server_update_reply_packet_id(struct dns_request *request, unsign
|
||||
return 0;
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
@@ -53,14 +53,14 @@ struct ping_dns_head {
|
||||
unsigned short adcount;
|
||||
} __attribute__((packed));
|
||||
|
||||
typedef enum FAST_PING_TYPE {
|
||||
FAST_PING_ICMP = 1,
|
||||
FAST_PING_ICMP6 = 2,
|
||||
FAST_PING_TCP,
|
||||
FAST_PING_UDP,
|
||||
typedef enum FAST_PING_TYPE {
|
||||
FAST_PING_ICMP = 1,
|
||||
FAST_PING_ICMP6 = 2,
|
||||
FAST_PING_TCP,
|
||||
FAST_PING_UDP,
|
||||
FAST_PING_UDP6,
|
||||
FAST_PING_END,
|
||||
} FAST_PING_TYPE;
|
||||
} FAST_PING_TYPE;
|
||||
|
||||
struct fast_ping_packet_msg {
|
||||
struct timeval tv;
|
||||
@@ -636,7 +636,7 @@ static int _fast_ping_create_udp_sock(FAST_PING_TYPE type)
|
||||
tlog(TLOG_ERROR, "create udp socket failed, %s\n", strerror(errno));
|
||||
goto errout;
|
||||
}
|
||||
|
||||
|
||||
udp_host = &ping.udp_host;
|
||||
break;
|
||||
case FAST_PING_UDP6:
|
||||
@@ -645,7 +645,7 @@ static int _fast_ping_create_udp_sock(FAST_PING_TYPE type)
|
||||
tlog(TLOG_ERROR, "create udp socket failed, %s\n", strerror(errno));
|
||||
goto errout;
|
||||
}
|
||||
|
||||
|
||||
udp_host = &ping.udp6_host;
|
||||
break;
|
||||
default:
|
||||
@@ -671,7 +671,7 @@ errout:
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int _fast_ping_create_udp(FAST_PING_TYPE type)
|
||||
static int _fast_ping_create_udp(FAST_PING_TYPE type)
|
||||
{
|
||||
int fd = 0;
|
||||
int *set_fd = NULL;
|
||||
@@ -1176,10 +1176,8 @@ static int _fast_ping_process_udp(struct ping_host_struct *ping_host, struct tim
|
||||
}
|
||||
|
||||
for (cmsg = CMSG_FIRSTHDR(&msg); cmsg; cmsg = CMSG_NXTHDR(&msg, cmsg)) {
|
||||
if (cmsg->cmsg_level == SOL_IP
|
||||
&& cmsg->cmsg_type == IP_TTL
|
||||
) {
|
||||
uint8_t * ttlPtr = (uint8_t *)CMSG_DATA(cmsg);
|
||||
if (cmsg->cmsg_level == SOL_IP && cmsg->cmsg_type == IP_TTL) {
|
||||
uint8_t *ttlPtr = (uint8_t *)CMSG_DATA(cmsg);
|
||||
ttl = *ttlPtr;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#ifndef FAST_PING_H
|
||||
#define FAST_PING_H
|
||||
|
||||
#include <sys/time.h>
|
||||
#include <netdb.h>
|
||||
#include <sys/time.h>
|
||||
#ifdef __cpluscplus
|
||||
extern "C" {
|
||||
#endif
|
||||
@@ -20,7 +20,8 @@ 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);
|
||||
|
||||
@@ -97,7 +97,7 @@ extern int conf_size(const char *item, void *data, int argc, char *argv[]);
|
||||
/*
|
||||
* Example:
|
||||
* int num = 0;
|
||||
*
|
||||
*
|
||||
* struct config_item itmes [] = {
|
||||
* CONF_INT("CONF_NUM", &num, -1, 10),
|
||||
* CONF_END();
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
#define _GNU_SOURCE
|
||||
#include "art.h"
|
||||
#include "atomic.h"
|
||||
#include "dns_conf.h"
|
||||
#include "dns_client.h"
|
||||
#include "dns_conf.h"
|
||||
#include "dns_server.h"
|
||||
#include "fast_ping.h"
|
||||
#include "hashtable.h"
|
||||
@@ -124,8 +124,8 @@ int smartdns_add_servers(void)
|
||||
int i = 0;
|
||||
int ret = 0;
|
||||
for (i = 0; i < dns_conf_server_num; i++) {
|
||||
ret = dns_add_server(dns_conf_servers[i].server, dns_conf_servers[i].port, dns_conf_servers[i].type, dns_conf_servers[i].result_flag,
|
||||
dns_conf_servers[i].ttl);
|
||||
ret = dns_add_server(dns_conf_servers[i].server, dns_conf_servers[i].port, dns_conf_servers[i].type, dns_conf_servers[i].result_flag,
|
||||
dns_conf_servers[i].ttl);
|
||||
if (ret != 0) {
|
||||
tlog(TLOG_ERROR, "add server failed, %s:%d", dns_conf_servers[i].server, dns_conf_servers[i].port);
|
||||
return -1;
|
||||
@@ -267,7 +267,7 @@ int smartdns_init(void)
|
||||
}
|
||||
|
||||
ret = smartdns_set_ecs_ip();
|
||||
if (ret != 0 ) {
|
||||
if (ret != 0) {
|
||||
tlog(TLOG_WARN, "set ecs ip address failed.");
|
||||
}
|
||||
|
||||
@@ -299,8 +299,8 @@ void sig_exit(int signo)
|
||||
|
||||
void sig_error_exit(int signo, siginfo_t *siginfo, void *context)
|
||||
{
|
||||
tlog(TLOG_ERROR, "process exit with signal %d, code = %d, errno = %d, pid = %d, self = %d, addr = %p\n", signo,
|
||||
siginfo->si_code, siginfo->si_errno, siginfo->si_pid, getpid(), siginfo->si_addr);
|
||||
tlog(TLOG_ERROR, "process exit with signal %d, code = %d, errno = %d, pid = %d, self = %d, addr = %p\n", signo, siginfo->si_code, siginfo->si_errno,
|
||||
siginfo->si_pid, getpid(), siginfo->si_addr);
|
||||
sleep(1);
|
||||
_exit(0);
|
||||
}
|
||||
@@ -386,7 +386,7 @@ int main(int argc, char *argv[])
|
||||
atexit(smartdns_exit);
|
||||
|
||||
return smartdns_run();
|
||||
|
||||
|
||||
errout:
|
||||
|
||||
return 1;
|
||||
|
||||
Reference in New Issue
Block a user