Support ipset feature

This commit is contained in:
Nick Peng
2018-12-15 22:02:43 +08:00
parent 767197473d
commit 3d8155e67b
8 changed files with 342 additions and 9 deletions

View File

@@ -11,6 +11,7 @@
#include "radix.h"
#define DNS_MAX_SERVERS 32
#define DNS_MAX_IPSET_NAMELEN 32
#define DNS_MAX_IPLEN 64
#define DNS_MAX_PATH 1024
#define DEFAULT_DNS_PORT 53
@@ -23,6 +24,7 @@
enum domain_rule {
DOMAIN_RULE_ADDRESS_IPV4 = 1,
DOMAIN_RULE_ADDRESS_IPV6 = 2,
DOMAIN_RULE_IPSET = 3,
DOMAIN_RULE_MAX,
};
@@ -34,6 +36,15 @@ struct dns_address_IPV6 {
unsigned char ipv6_addr[DNS_RR_AAAA_LEN];
};
struct dns_ipset_name {
struct hlist_node node;
char ipsetname[DNS_MAX_IPSET_NAMELEN];
};
struct dns_ipset_rule {
const char *ipsetname;
};
struct dns_domain_rule {
void *rules[DOMAIN_RULE_MAX];
};
@@ -66,10 +77,6 @@ struct dns_ip_address_rule {
unsigned int bogus : 1;
};
struct dns_bogus_nxdomain {
DECLARE_HASHTABLE(ip_hash, 12);
};
extern char dns_conf_server_ip[DNS_MAX_IPLEN];
extern char dns_conf_server_tcp_ip[DNS_MAX_IPLEN];
extern int dns_conf_tcp_idle_time;