mirror of
https://github.com/NLnetLabs/unbound.git
synced 2025-12-24 00:29:58 -05:00
Merge pull request #200 from yarikk/ipdiffserv
add ip-dscp option to specify the DSCP tag for outgoing packets
This commit is contained in:
commit
a96a7a6a20
19 changed files with 6913 additions and 6784 deletions
|
|
@ -329,7 +329,7 @@ add_open(const char* ip, int nr, struct listen_port** list, int noproto_is_err,
|
||||||
|
|
||||||
/* open fd */
|
/* open fd */
|
||||||
fd = create_tcp_accept_sock(res, 1, &noproto, 0,
|
fd = create_tcp_accept_sock(res, 1, &noproto, 0,
|
||||||
cfg->ip_transparent, 0, cfg->ip_freebind, cfg->use_systemd);
|
cfg->ip_transparent, 0, cfg->ip_freebind, cfg->use_systemd, cfg->ip_dscp);
|
||||||
freeaddrinfo(res);
|
freeaddrinfo(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1808,7 +1808,7 @@ worker_init(struct worker* worker, struct config_file *cfg,
|
||||||
worker->back = outside_network_create(worker->base,
|
worker->back = outside_network_create(worker->base,
|
||||||
cfg->msg_buffer_size, (size_t)cfg->outgoing_num_ports,
|
cfg->msg_buffer_size, (size_t)cfg->outgoing_num_ports,
|
||||||
cfg->out_ifs, cfg->num_out_ifs, cfg->do_ip4, cfg->do_ip6,
|
cfg->out_ifs, cfg->num_out_ifs, cfg->do_ip4, cfg->do_ip6,
|
||||||
cfg->do_tcp?cfg->outgoing_num_tcp:0,
|
cfg->do_tcp?cfg->outgoing_num_tcp:0, cfg->ip_dscp,
|
||||||
worker->daemon->env->infra_cache, worker->rndstate,
|
worker->daemon->env->infra_cache, worker->rndstate,
|
||||||
cfg->use_caps_bits_for_id, worker->ports, worker->numports,
|
cfg->use_caps_bits_for_id, worker->ports, worker->numports,
|
||||||
cfg->unwanted_threshold, cfg->outgoing_tcp_mss,
|
cfg->unwanted_threshold, cfg->outgoing_tcp_mss,
|
||||||
|
|
|
||||||
|
|
@ -323,6 +323,12 @@ IP addresses that are nonlocal or do not exist, like when the network
|
||||||
interface or IP address is down. Exists only on Linux, where the similar
|
interface or IP address is down. Exists only on Linux, where the similar
|
||||||
ip\-transparent option is also available.
|
ip\-transparent option is also available.
|
||||||
.TP
|
.TP
|
||||||
|
.B ip-dscp: \fI<number>
|
||||||
|
The value of the Differentiated Services Codepoint (DSCP) in the
|
||||||
|
differentiated services field (DS) of the outgoing IP packet headers.
|
||||||
|
The field replaces the outdated IPv4 Type-Of-Service field and the
|
||||||
|
IPV6 traffic class field.
|
||||||
|
.TP
|
||||||
.B rrset\-cache\-size: \fI<number>
|
.B rrset\-cache\-size: \fI<number>
|
||||||
Number of bytes size of the RRset cache. Default is 4 megabytes.
|
Number of bytes size of the RRset cache. Default is 4 megabytes.
|
||||||
A plain number is in bytes, append 'k', 'm' or 'g' for kilobytes, megabytes
|
A plain number is in bytes, append 'k', 'm' or 'g' for kilobytes, megabytes
|
||||||
|
|
|
||||||
|
|
@ -233,7 +233,7 @@ libworker_setup(struct ub_ctx* ctx, int is_bg, struct ub_event_base* eb)
|
||||||
w->back = outside_network_create(w->base, cfg->msg_buffer_size,
|
w->back = outside_network_create(w->base, cfg->msg_buffer_size,
|
||||||
(size_t)cfg->outgoing_num_ports, cfg->out_ifs,
|
(size_t)cfg->outgoing_num_ports, cfg->out_ifs,
|
||||||
cfg->num_out_ifs, cfg->do_ip4, cfg->do_ip6,
|
cfg->num_out_ifs, cfg->do_ip4, cfg->do_ip6,
|
||||||
cfg->do_tcp?cfg->outgoing_num_tcp:0,
|
cfg->do_tcp?cfg->outgoing_num_tcp:0, cfg->ip_dscp,
|
||||||
w->env->infra_cache, w->env->rnd, cfg->use_caps_bits_for_id,
|
w->env->infra_cache, w->env->rnd, cfg->use_caps_bits_for_id,
|
||||||
ports, numports, cfg->unwanted_threshold,
|
ports, numports, cfg->unwanted_threshold,
|
||||||
cfg->outgoing_tcp_mss, &libworker_alloc_cleanup, w,
|
cfg->outgoing_tcp_mss, &libworker_alloc_cleanup, w,
|
||||||
|
|
|
||||||
|
|
@ -179,9 +179,10 @@ int
|
||||||
create_udp_sock(int family, int socktype, struct sockaddr* addr,
|
create_udp_sock(int family, int socktype, struct sockaddr* addr,
|
||||||
socklen_t addrlen, int v6only, int* inuse, int* noproto,
|
socklen_t addrlen, int v6only, int* inuse, int* noproto,
|
||||||
int rcv, int snd, int listen, int* reuseport, int transparent,
|
int rcv, int snd, int listen, int* reuseport, int transparent,
|
||||||
int freebind, int use_systemd)
|
int freebind, int use_systemd, int dscp)
|
||||||
{
|
{
|
||||||
int s;
|
int s;
|
||||||
|
char* err;
|
||||||
#if defined(SO_REUSEADDR) || defined(SO_REUSEPORT) || defined(IPV6_USE_MIN_MTU) || defined(IP_TRANSPARENT) || defined(IP_BINDANY) || defined(IP_FREEBIND) || defined (SO_BINDANY)
|
#if defined(SO_REUSEADDR) || defined(SO_REUSEPORT) || defined(IPV6_USE_MIN_MTU) || defined(IP_TRANSPARENT) || defined(IP_BINDANY) || defined(IP_FREEBIND) || defined (SO_BINDANY)
|
||||||
int on=1;
|
int on=1;
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -451,6 +452,9 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr,
|
||||||
# endif
|
# endif
|
||||||
#endif /* SO_SNDBUF */
|
#endif /* SO_SNDBUF */
|
||||||
}
|
}
|
||||||
|
err = set_ip_dscp(s, family, dscp);
|
||||||
|
if(err != NULL)
|
||||||
|
log_warn("error setting IP DiffServ codepoint %d on UDP socket: %s", dscp, err);
|
||||||
if(family == AF_INET6) {
|
if(family == AF_INET6) {
|
||||||
# if defined(IPV6_V6ONLY)
|
# if defined(IPV6_V6ONLY)
|
||||||
if(v6only) {
|
if(v6only) {
|
||||||
|
|
@ -638,9 +642,10 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr,
|
||||||
|
|
||||||
int
|
int
|
||||||
create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto,
|
create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto,
|
||||||
int* reuseport, int transparent, int mss, int freebind, int use_systemd)
|
int* reuseport, int transparent, int mss, int freebind, int use_systemd, int dscp)
|
||||||
{
|
{
|
||||||
int s;
|
int s;
|
||||||
|
char* err;
|
||||||
#if defined(SO_REUSEADDR) || defined(SO_REUSEPORT) || defined(IPV6_V6ONLY) || defined(IP_TRANSPARENT) || defined(IP_BINDANY) || defined(IP_FREEBIND) || defined(SO_BINDANY)
|
#if defined(SO_REUSEADDR) || defined(SO_REUSEPORT) || defined(IPV6_V6ONLY) || defined(IP_TRANSPARENT) || defined(IP_BINDANY) || defined(IP_FREEBIND) || defined(SO_BINDANY)
|
||||||
int on = 1;
|
int on = 1;
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -793,6 +798,9 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto,
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
}
|
}
|
||||||
#endif /* IP_TRANSPARENT || IP_BINDANY || SO_BINDANY */
|
#endif /* IP_TRANSPARENT || IP_BINDANY || SO_BINDANY */
|
||||||
|
err = set_ip_dscp(s, addr->ai_family, dscp);
|
||||||
|
if(err != NULL)
|
||||||
|
log_warn("error setting IP DiffServ codepoint %d on TCP socket: %s", dscp, err);
|
||||||
if(
|
if(
|
||||||
#ifdef HAVE_SYSTEMD
|
#ifdef HAVE_SYSTEMD
|
||||||
!got_fd_from_systemd &&
|
!got_fd_from_systemd &&
|
||||||
|
|
@ -866,6 +874,48 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto,
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char*
|
||||||
|
set_ip_dscp(int socket, int addrfamily, int dscp) {
|
||||||
|
int ds;
|
||||||
|
|
||||||
|
if(dscp == 0)
|
||||||
|
return NULL;
|
||||||
|
ds = dscp << 2;
|
||||||
|
switch(addrfamily) {
|
||||||
|
case AF_INET6:
|
||||||
|
if(setsockopt(socket, IPPROTO_IPV6, IPV6_TCLASS, &ds, sizeof(ds)) < 0)
|
||||||
|
return sock_strerror(errno);
|
||||||
|
default:
|
||||||
|
if(setsockopt(socket, IPPROTO_IP, IP_TOS, &ds, sizeof(ds)) < 0)
|
||||||
|
return sock_strerror(errno);
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
# ifndef USE_WINSOCK
|
||||||
|
char*
|
||||||
|
sock_strerror(int errn){
|
||||||
|
return strerror(errno);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
sock_close(int socket) {
|
||||||
|
close(socket);
|
||||||
|
}
|
||||||
|
|
||||||
|
# else
|
||||||
|
char*
|
||||||
|
sock_strerror(int errn){
|
||||||
|
return wsa_strerror(WSAGetLastError()))
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
sock_close(int socket) {
|
||||||
|
closesocket(socket);
|
||||||
|
}
|
||||||
|
|
||||||
|
# endif /* USE_WINSOCK */
|
||||||
|
|
||||||
int
|
int
|
||||||
create_local_accept_sock(const char *path, int* noproto, int use_systemd)
|
create_local_accept_sock(const char *path, int* noproto, int use_systemd)
|
||||||
{
|
{
|
||||||
|
|
@ -952,7 +1002,7 @@ err:
|
||||||
static int
|
static int
|
||||||
make_sock(int stype, const char* ifname, const char* port,
|
make_sock(int stype, const char* ifname, const char* port,
|
||||||
struct addrinfo *hints, int v6only, int* noip6, size_t rcv, size_t snd,
|
struct addrinfo *hints, int v6only, int* noip6, size_t rcv, size_t snd,
|
||||||
int* reuseport, int transparent, int tcp_mss, int freebind, int use_systemd)
|
int* reuseport, int transparent, int tcp_mss, int freebind, int use_systemd, int dscp)
|
||||||
{
|
{
|
||||||
struct addrinfo *res = NULL;
|
struct addrinfo *res = NULL;
|
||||||
int r, s, inuse, noproto;
|
int r, s, inuse, noproto;
|
||||||
|
|
@ -980,7 +1030,7 @@ make_sock(int stype, const char* ifname, const char* port,
|
||||||
s = create_udp_sock(res->ai_family, res->ai_socktype,
|
s = create_udp_sock(res->ai_family, res->ai_socktype,
|
||||||
(struct sockaddr*)res->ai_addr, res->ai_addrlen,
|
(struct sockaddr*)res->ai_addr, res->ai_addrlen,
|
||||||
v6only, &inuse, &noproto, (int)rcv, (int)snd, 1,
|
v6only, &inuse, &noproto, (int)rcv, (int)snd, 1,
|
||||||
reuseport, transparent, freebind, use_systemd);
|
reuseport, transparent, freebind, use_systemd, dscp);
|
||||||
if(s == -1 && inuse) {
|
if(s == -1 && inuse) {
|
||||||
log_err("bind: address already in use");
|
log_err("bind: address already in use");
|
||||||
} else if(s == -1 && noproto && hints->ai_family == AF_INET6){
|
} else if(s == -1 && noproto && hints->ai_family == AF_INET6){
|
||||||
|
|
@ -988,7 +1038,7 @@ make_sock(int stype, const char* ifname, const char* port,
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
s = create_tcp_accept_sock(res, v6only, &noproto, reuseport,
|
s = create_tcp_accept_sock(res, v6only, &noproto, reuseport,
|
||||||
transparent, tcp_mss, freebind, use_systemd);
|
transparent, tcp_mss, freebind, use_systemd, dscp);
|
||||||
if(s == -1 && noproto && hints->ai_family == AF_INET6){
|
if(s == -1 && noproto && hints->ai_family == AF_INET6){
|
||||||
*noip6 = 1;
|
*noip6 = 1;
|
||||||
}
|
}
|
||||||
|
|
@ -1001,7 +1051,7 @@ make_sock(int stype, const char* ifname, const char* port,
|
||||||
static int
|
static int
|
||||||
make_sock_port(int stype, const char* ifname, const char* port,
|
make_sock_port(int stype, const char* ifname, const char* port,
|
||||||
struct addrinfo *hints, int v6only, int* noip6, size_t rcv, size_t snd,
|
struct addrinfo *hints, int v6only, int* noip6, size_t rcv, size_t snd,
|
||||||
int* reuseport, int transparent, int tcp_mss, int freebind, int use_systemd)
|
int* reuseport, int transparent, int tcp_mss, int freebind, int use_systemd, int dscp)
|
||||||
{
|
{
|
||||||
char* s = strchr(ifname, '@');
|
char* s = strchr(ifname, '@');
|
||||||
if(s) {
|
if(s) {
|
||||||
|
|
@ -1023,10 +1073,10 @@ make_sock_port(int stype, const char* ifname, const char* port,
|
||||||
(void)strlcpy(p, s+1, sizeof(p));
|
(void)strlcpy(p, s+1, sizeof(p));
|
||||||
p[strlen(s+1)]=0;
|
p[strlen(s+1)]=0;
|
||||||
return make_sock(stype, newif, p, hints, v6only, noip6,
|
return make_sock(stype, newif, p, hints, v6only, noip6,
|
||||||
rcv, snd, reuseport, transparent, tcp_mss, freebind, use_systemd);
|
rcv, snd, reuseport, transparent, tcp_mss, freebind, use_systemd, dscp);
|
||||||
}
|
}
|
||||||
return make_sock(stype, ifname, port, hints, v6only, noip6, rcv, snd,
|
return make_sock(stype, ifname, port, hints, v6only, noip6, rcv, snd,
|
||||||
reuseport, transparent, tcp_mss, freebind, use_systemd);
|
reuseport, transparent, tcp_mss, freebind, use_systemd, dscp);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -1154,7 +1204,7 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp,
|
||||||
size_t rcv, size_t snd, int ssl_port,
|
size_t rcv, size_t snd, int ssl_port,
|
||||||
struct config_strlist* tls_additional_port, int* reuseport,
|
struct config_strlist* tls_additional_port, int* reuseport,
|
||||||
int transparent, int tcp_mss, int freebind, int use_systemd,
|
int transparent, int tcp_mss, int freebind, int use_systemd,
|
||||||
int dnscrypt_port)
|
int dnscrypt_port, int dscp)
|
||||||
{
|
{
|
||||||
int s, noip6=0;
|
int s, noip6=0;
|
||||||
#ifdef USE_DNSCRYPT
|
#ifdef USE_DNSCRYPT
|
||||||
|
|
@ -1171,7 +1221,7 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp,
|
||||||
if(do_auto) {
|
if(do_auto) {
|
||||||
if((s = make_sock_port(SOCK_DGRAM, ifname, port, hints, 1,
|
if((s = make_sock_port(SOCK_DGRAM, ifname, port, hints, 1,
|
||||||
&noip6, rcv, snd, reuseport, transparent,
|
&noip6, rcv, snd, reuseport, transparent,
|
||||||
tcp_mss, freebind, use_systemd)) == -1) {
|
tcp_mss, freebind, use_systemd, dscp)) == -1) {
|
||||||
if(noip6) {
|
if(noip6) {
|
||||||
log_warn("IPv6 protocol not available");
|
log_warn("IPv6 protocol not available");
|
||||||
return 1;
|
return 1;
|
||||||
|
|
@ -1200,7 +1250,7 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp,
|
||||||
/* regular udp socket */
|
/* regular udp socket */
|
||||||
if((s = make_sock_port(SOCK_DGRAM, ifname, port, hints, 1,
|
if((s = make_sock_port(SOCK_DGRAM, ifname, port, hints, 1,
|
||||||
&noip6, rcv, snd, reuseport, transparent,
|
&noip6, rcv, snd, reuseport, transparent,
|
||||||
tcp_mss, freebind, use_systemd)) == -1) {
|
tcp_mss, freebind, use_systemd, dscp)) == -1) {
|
||||||
if(noip6) {
|
if(noip6) {
|
||||||
log_warn("IPv6 protocol not available");
|
log_warn("IPv6 protocol not available");
|
||||||
return 1;
|
return 1;
|
||||||
|
|
@ -1222,7 +1272,7 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp,
|
||||||
tls_additional_port);
|
tls_additional_port);
|
||||||
if((s = make_sock_port(SOCK_STREAM, ifname, port, hints, 1,
|
if((s = make_sock_port(SOCK_STREAM, ifname, port, hints, 1,
|
||||||
&noip6, 0, 0, reuseport, transparent, tcp_mss,
|
&noip6, 0, 0, reuseport, transparent, tcp_mss,
|
||||||
freebind, use_systemd)) == -1) {
|
freebind, use_systemd, dscp)) == -1) {
|
||||||
if(noip6) {
|
if(noip6) {
|
||||||
/*log_warn("IPv6 protocol not available");*/
|
/*log_warn("IPv6 protocol not available");*/
|
||||||
return 1;
|
return 1;
|
||||||
|
|
@ -1421,7 +1471,7 @@ listening_ports_open(struct config_file* cfg, int* reuseport)
|
||||||
cfg->ssl_port, cfg->tls_additional_port,
|
cfg->ssl_port, cfg->tls_additional_port,
|
||||||
reuseport, cfg->ip_transparent,
|
reuseport, cfg->ip_transparent,
|
||||||
cfg->tcp_mss, cfg->ip_freebind, cfg->use_systemd,
|
cfg->tcp_mss, cfg->ip_freebind, cfg->use_systemd,
|
||||||
cfg->dnscrypt_port)) {
|
cfg->dnscrypt_port, cfg->ip_dscp)) {
|
||||||
listening_ports_free(list);
|
listening_ports_free(list);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
@ -1435,7 +1485,7 @@ listening_ports_open(struct config_file* cfg, int* reuseport)
|
||||||
cfg->ssl_port, cfg->tls_additional_port,
|
cfg->ssl_port, cfg->tls_additional_port,
|
||||||
reuseport, cfg->ip_transparent,
|
reuseport, cfg->ip_transparent,
|
||||||
cfg->tcp_mss, cfg->ip_freebind, cfg->use_systemd,
|
cfg->tcp_mss, cfg->ip_freebind, cfg->use_systemd,
|
||||||
cfg->dnscrypt_port)) {
|
cfg->dnscrypt_port, cfg->ip_dscp)) {
|
||||||
listening_ports_free(list);
|
listening_ports_free(list);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
@ -1451,7 +1501,7 @@ listening_ports_open(struct config_file* cfg, int* reuseport)
|
||||||
cfg->ssl_port, cfg->tls_additional_port,
|
cfg->ssl_port, cfg->tls_additional_port,
|
||||||
reuseport, cfg->ip_transparent,
|
reuseport, cfg->ip_transparent,
|
||||||
cfg->tcp_mss, cfg->ip_freebind, cfg->use_systemd,
|
cfg->tcp_mss, cfg->ip_freebind, cfg->use_systemd,
|
||||||
cfg->dnscrypt_port)) {
|
cfg->dnscrypt_port, cfg->ip_dscp)) {
|
||||||
listening_ports_free(list);
|
listening_ports_free(list);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
@ -1465,7 +1515,7 @@ listening_ports_open(struct config_file* cfg, int* reuseport)
|
||||||
cfg->ssl_port, cfg->tls_additional_port,
|
cfg->ssl_port, cfg->tls_additional_port,
|
||||||
reuseport, cfg->ip_transparent,
|
reuseport, cfg->ip_transparent,
|
||||||
cfg->tcp_mss, cfg->ip_freebind, cfg->use_systemd,
|
cfg->tcp_mss, cfg->ip_freebind, cfg->use_systemd,
|
||||||
cfg->dnscrypt_port)) {
|
cfg->dnscrypt_port, cfg->ip_dscp)) {
|
||||||
listening_ports_free(list);
|
listening_ports_free(list);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -209,7 +209,7 @@ void listen_start_accept(struct listen_dnsport* listen);
|
||||||
*/
|
*/
|
||||||
int create_udp_sock(int family, int socktype, struct sockaddr* addr,
|
int create_udp_sock(int family, int socktype, struct sockaddr* addr,
|
||||||
socklen_t addrlen, int v6only, int* inuse, int* noproto, int rcv,
|
socklen_t addrlen, int v6only, int* inuse, int* noproto, int rcv,
|
||||||
int snd, int listen, int* reuseport, int transparent, int freebind, int use_systemd);
|
int snd, int listen, int* reuseport, int transparent, int freebind, int use_systemd, int dscp);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create and bind TCP listening socket
|
* Create and bind TCP listening socket
|
||||||
|
|
@ -225,7 +225,7 @@ int create_udp_sock(int family, int socktype, struct sockaddr* addr,
|
||||||
* @return: the socket. -1 on error.
|
* @return: the socket. -1 on error.
|
||||||
*/
|
*/
|
||||||
int create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto,
|
int create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto,
|
||||||
int* reuseport, int transparent, int mss, int freebind, int use_systemd);
|
int* reuseport, int transparent, int mss, int freebind, int use_systemd, int dscp);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create and bind local listening socket
|
* Create and bind local listening socket
|
||||||
|
|
@ -367,4 +367,7 @@ int tcp_req_info_handle_read_close(struct tcp_req_info* req);
|
||||||
/** get the size of currently used tcp stream wait buffers (in bytes) */
|
/** get the size of currently used tcp stream wait buffers (in bytes) */
|
||||||
size_t tcp_req_info_get_stream_buffer_size(void);
|
size_t tcp_req_info_get_stream_buffer_size(void);
|
||||||
|
|
||||||
|
char* set_ip_dscp(int socket, int addrfamily, int ds);
|
||||||
|
char* sock_strerror(int errn);
|
||||||
|
|
||||||
#endif /* LISTEN_DNSPORT_H */
|
#endif /* LISTEN_DNSPORT_H */
|
||||||
|
|
|
||||||
|
|
@ -205,18 +205,25 @@ pick_outgoing_tcp(struct waiting_tcp* w, int s)
|
||||||
/** get TCP file descriptor for address, returns -1 on failure,
|
/** get TCP file descriptor for address, returns -1 on failure,
|
||||||
* tcp_mss is 0 or maxseg size to set for TCP packets. */
|
* tcp_mss is 0 or maxseg size to set for TCP packets. */
|
||||||
int
|
int
|
||||||
outnet_get_tcp_fd(struct sockaddr_storage* addr, socklen_t addrlen, int tcp_mss)
|
outnet_get_tcp_fd(struct sockaddr_storage* addr, socklen_t addrlen, int tcp_mss, int dscp)
|
||||||
{
|
{
|
||||||
int s;
|
int s;
|
||||||
|
int af;
|
||||||
|
char* err;
|
||||||
#ifdef SO_REUSEADDR
|
#ifdef SO_REUSEADDR
|
||||||
int on = 1;
|
int on = 1;
|
||||||
#endif
|
#endif
|
||||||
#ifdef INET6
|
#ifdef INET6
|
||||||
if(addr_is_ip6(addr, addrlen))
|
if(addr_is_ip6(addr, addrlen)){
|
||||||
s = socket(PF_INET6, SOCK_STREAM, IPPROTO_TCP);
|
s = socket(PF_INET6, SOCK_STREAM, IPPROTO_TCP);
|
||||||
else
|
af = AF_INET6;
|
||||||
|
} else {
|
||||||
|
#else
|
||||||
|
{
|
||||||
#endif
|
#endif
|
||||||
|
af = AF_INET;
|
||||||
s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
|
s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
|
||||||
|
}
|
||||||
if(s == -1) {
|
if(s == -1) {
|
||||||
#ifndef USE_WINSOCK
|
#ifndef USE_WINSOCK
|
||||||
log_err_addr("outgoing tcp: socket", strerror(errno),
|
log_err_addr("outgoing tcp: socket", strerror(errno),
|
||||||
|
|
@ -236,6 +243,12 @@ outnet_get_tcp_fd(struct sockaddr_storage* addr, socklen_t addrlen, int tcp_mss)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
err = set_ip_dscp(s, af, dscp);
|
||||||
|
if(err != NULL) {
|
||||||
|
verbose(VERB_ALGO, "outgoing tcp:"
|
||||||
|
"error setting IP DiffServ codepoint on socket");
|
||||||
|
}
|
||||||
|
|
||||||
if(tcp_mss > 0) {
|
if(tcp_mss > 0) {
|
||||||
#if defined(IPPROTO_TCP) && defined(TCP_MAXSEG)
|
#if defined(IPPROTO_TCP) && defined(TCP_MAXSEG)
|
||||||
if(setsockopt(s, IPPROTO_TCP, TCP_MAXSEG,
|
if(setsockopt(s, IPPROTO_TCP, TCP_MAXSEG,
|
||||||
|
|
@ -291,7 +304,7 @@ outnet_tcp_take_into_use(struct waiting_tcp* w, uint8_t* pkt, size_t pkt_len)
|
||||||
log_assert(pkt);
|
log_assert(pkt);
|
||||||
log_assert(w->addrlen > 0);
|
log_assert(w->addrlen > 0);
|
||||||
/* open socket */
|
/* open socket */
|
||||||
s = outnet_get_tcp_fd(&w->addr, w->addrlen, w->outnet->tcp_mss);
|
s = outnet_get_tcp_fd(&w->addr, w->addrlen, w->outnet->tcp_mss, w->outnet->ip_dscp);
|
||||||
|
|
||||||
if(s == -1)
|
if(s == -1)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -719,7 +732,7 @@ static int setup_if(struct port_if* pif, const char* addrstr,
|
||||||
struct outside_network*
|
struct outside_network*
|
||||||
outside_network_create(struct comm_base *base, size_t bufsize,
|
outside_network_create(struct comm_base *base, size_t bufsize,
|
||||||
size_t num_ports, char** ifs, int num_ifs, int do_ip4,
|
size_t num_ports, char** ifs, int num_ifs, int do_ip4,
|
||||||
int do_ip6, size_t num_tcp, struct infra_cache* infra,
|
int do_ip6, size_t num_tcp, int dscp, struct infra_cache* infra,
|
||||||
struct ub_randstate* rnd, int use_caps_for_id, int* availports,
|
struct ub_randstate* rnd, int use_caps_for_id, int* availports,
|
||||||
int numavailports, size_t unwanted_threshold, int tcp_mss,
|
int numavailports, size_t unwanted_threshold, int tcp_mss,
|
||||||
void (*unwanted_action)(void*), void* unwanted_param, int do_udp,
|
void (*unwanted_action)(void*), void* unwanted_param, int do_udp,
|
||||||
|
|
@ -752,6 +765,7 @@ outside_network_create(struct comm_base *base, size_t bufsize,
|
||||||
outnet->use_caps_for_id = use_caps_for_id;
|
outnet->use_caps_for_id = use_caps_for_id;
|
||||||
outnet->do_udp = do_udp;
|
outnet->do_udp = do_udp;
|
||||||
outnet->tcp_mss = tcp_mss;
|
outnet->tcp_mss = tcp_mss;
|
||||||
|
outnet->ip_dscp = dscp;
|
||||||
#ifndef S_SPLINT_S
|
#ifndef S_SPLINT_S
|
||||||
if(delayclose) {
|
if(delayclose) {
|
||||||
outnet->delayclose = 1;
|
outnet->delayclose = 1;
|
||||||
|
|
@ -1041,7 +1055,7 @@ sai6_putrandom(struct sockaddr_in6 *sa, int pfxlen, struct ub_randstate *rnd)
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
udp_sockport(struct sockaddr_storage* addr, socklen_t addrlen, int pfxlen,
|
udp_sockport(struct sockaddr_storage* addr, socklen_t addrlen, int pfxlen,
|
||||||
int port, int* inuse, struct ub_randstate* rnd)
|
int port, int* inuse, struct ub_randstate* rnd, int dscp)
|
||||||
{
|
{
|
||||||
int fd, noproto;
|
int fd, noproto;
|
||||||
if(addr_is_ip6(addr, addrlen)) {
|
if(addr_is_ip6(addr, addrlen)) {
|
||||||
|
|
@ -1056,13 +1070,13 @@ udp_sockport(struct sockaddr_storage* addr, socklen_t addrlen, int pfxlen,
|
||||||
}
|
}
|
||||||
fd = create_udp_sock(AF_INET6, SOCK_DGRAM,
|
fd = create_udp_sock(AF_INET6, SOCK_DGRAM,
|
||||||
(struct sockaddr*)&sa, addrlen, 1, inuse, &noproto,
|
(struct sockaddr*)&sa, addrlen, 1, inuse, &noproto,
|
||||||
0, 0, 0, NULL, 0, freebind, 0);
|
0, 0, 0, NULL, 0, freebind, 0, dscp);
|
||||||
} else {
|
} else {
|
||||||
struct sockaddr_in* sa = (struct sockaddr_in*)addr;
|
struct sockaddr_in* sa = (struct sockaddr_in*)addr;
|
||||||
sa->sin_port = (in_port_t)htons((uint16_t)port);
|
sa->sin_port = (in_port_t)htons((uint16_t)port);
|
||||||
fd = create_udp_sock(AF_INET, SOCK_DGRAM,
|
fd = create_udp_sock(AF_INET, SOCK_DGRAM,
|
||||||
(struct sockaddr*)addr, addrlen, 1, inuse, &noproto,
|
(struct sockaddr*)addr, addrlen, 1, inuse, &noproto,
|
||||||
0, 0, 0, NULL, 0, 0, 0);
|
0, 0, 0, NULL, 0, 0, 0, dscp);
|
||||||
}
|
}
|
||||||
return fd;
|
return fd;
|
||||||
}
|
}
|
||||||
|
|
@ -1127,7 +1141,7 @@ select_ifport(struct outside_network* outnet, struct pending* pend,
|
||||||
my_port = portno = 0;
|
my_port = portno = 0;
|
||||||
#endif
|
#endif
|
||||||
fd = udp_sockport(&pif->addr, pif->addrlen, pif->pfxlen,
|
fd = udp_sockport(&pif->addr, pif->addrlen, pif->pfxlen,
|
||||||
portno, &inuse, outnet->rnd);
|
portno, &inuse, outnet->rnd, outnet->ip_dscp);
|
||||||
if(fd == -1 && !inuse) {
|
if(fd == -1 && !inuse) {
|
||||||
/* nonrecoverable error making socket */
|
/* nonrecoverable error making socket */
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -2176,10 +2190,11 @@ fd_for_dest(struct outside_network* outnet, struct sockaddr_storage* to_addr,
|
||||||
{
|
{
|
||||||
struct sockaddr_storage* addr;
|
struct sockaddr_storage* addr;
|
||||||
socklen_t addrlen;
|
socklen_t addrlen;
|
||||||
int i, try, pnum;
|
int i, try, pnum, dscp;
|
||||||
struct port_if* pif;
|
struct port_if* pif;
|
||||||
|
|
||||||
/* create fd */
|
/* create fd */
|
||||||
|
dscp = outnet->ip_dscp;
|
||||||
for(try = 0; try<1000; try++) {
|
for(try = 0; try<1000; try++) {
|
||||||
int port = 0;
|
int port = 0;
|
||||||
int freebind = 0;
|
int freebind = 0;
|
||||||
|
|
@ -2226,13 +2241,13 @@ fd_for_dest(struct outside_network* outnet, struct sockaddr_storage* to_addr,
|
||||||
sa.sin6_port = (in_port_t)htons((uint16_t)port);
|
sa.sin6_port = (in_port_t)htons((uint16_t)port);
|
||||||
fd = create_udp_sock(AF_INET6, SOCK_DGRAM,
|
fd = create_udp_sock(AF_INET6, SOCK_DGRAM,
|
||||||
(struct sockaddr*)&sa, addrlen, 1, &inuse, &noproto,
|
(struct sockaddr*)&sa, addrlen, 1, &inuse, &noproto,
|
||||||
0, 0, 0, NULL, 0, freebind, 0);
|
0, 0, 0, NULL, 0, freebind, 0, dscp);
|
||||||
} else {
|
} else {
|
||||||
struct sockaddr_in* sa = (struct sockaddr_in*)addr;
|
struct sockaddr_in* sa = (struct sockaddr_in*)addr;
|
||||||
sa->sin_port = (in_port_t)htons((uint16_t)port);
|
sa->sin_port = (in_port_t)htons((uint16_t)port);
|
||||||
fd = create_udp_sock(AF_INET, SOCK_DGRAM,
|
fd = create_udp_sock(AF_INET, SOCK_DGRAM,
|
||||||
(struct sockaddr*)addr, addrlen, 1, &inuse, &noproto,
|
(struct sockaddr*)addr, addrlen, 1, &inuse, &noproto,
|
||||||
0, 0, 0, NULL, 0, freebind, 0);
|
0, 0, 0, NULL, 0, freebind, 0, dscp);
|
||||||
}
|
}
|
||||||
if(fd != -1) {
|
if(fd != -1) {
|
||||||
return fd;
|
return fd;
|
||||||
|
|
@ -2324,7 +2339,7 @@ outnet_comm_point_for_tcp(struct outside_network* outnet,
|
||||||
sldns_buffer* query, int timeout, int ssl, char* host)
|
sldns_buffer* query, int timeout, int ssl, char* host)
|
||||||
{
|
{
|
||||||
struct comm_point* cp;
|
struct comm_point* cp;
|
||||||
int fd = outnet_get_tcp_fd(to_addr, to_addrlen, outnet->tcp_mss);
|
int fd = outnet_get_tcp_fd(to_addr, to_addrlen, outnet->tcp_mss, outnet->ip_dscp);
|
||||||
if(fd == -1) {
|
if(fd == -1) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
@ -2386,7 +2401,7 @@ outnet_comm_point_for_http(struct outside_network* outnet,
|
||||||
{
|
{
|
||||||
/* cp calls cb with err=NETEVENT_DONE when transfer is done */
|
/* cp calls cb with err=NETEVENT_DONE when transfer is done */
|
||||||
struct comm_point* cp;
|
struct comm_point* cp;
|
||||||
int fd = outnet_get_tcp_fd(to_addr, to_addrlen, outnet->tcp_mss);
|
int fd = outnet_get_tcp_fd(to_addr, to_addrlen, outnet->tcp_mss, outnet->ip_dscp);
|
||||||
if(fd == -1) {
|
if(fd == -1) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -138,6 +138,8 @@ struct outside_network {
|
||||||
#endif
|
#endif
|
||||||
/** maximum segment size of tcp socket */
|
/** maximum segment size of tcp socket */
|
||||||
int tcp_mss;
|
int tcp_mss;
|
||||||
|
/** IP_TOS socket option requested on the sockets */
|
||||||
|
int ip_dscp;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Array of tcp pending used for outgoing TCP connections.
|
* Array of tcp pending used for outgoing TCP connections.
|
||||||
|
|
@ -419,7 +421,7 @@ struct serviced_query {
|
||||||
*/
|
*/
|
||||||
struct outside_network* outside_network_create(struct comm_base* base,
|
struct outside_network* outside_network_create(struct comm_base* base,
|
||||||
size_t bufsize, size_t num_ports, char** ifs, int num_ifs,
|
size_t bufsize, size_t num_ports, char** ifs, int num_ifs,
|
||||||
int do_ip4, int do_ip6, size_t num_tcp, struct infra_cache* infra,
|
int do_ip4, int do_ip6, size_t num_tcp, int dscp, struct infra_cache* infra,
|
||||||
struct ub_randstate* rnd, int use_caps_for_id, int* availports,
|
struct ub_randstate* rnd, int use_caps_for_id, int* availports,
|
||||||
int numavailports, size_t unwanted_threshold, int tcp_mss,
|
int numavailports, size_t unwanted_threshold, int tcp_mss,
|
||||||
void (*unwanted_action)(void*), void* unwanted_param, int do_udp,
|
void (*unwanted_action)(void*), void* unwanted_param, int do_udp,
|
||||||
|
|
@ -542,7 +544,7 @@ size_t serviced_get_mem(struct serviced_query* sq);
|
||||||
|
|
||||||
/** get TCP file descriptor for address, returns -1 on failure,
|
/** get TCP file descriptor for address, returns -1 on failure,
|
||||||
* tcp_mss is 0 or maxseg size to set for TCP packets. */
|
* tcp_mss is 0 or maxseg size to set for TCP packets. */
|
||||||
int outnet_get_tcp_fd(struct sockaddr_storage* addr, socklen_t addrlen, int tcp_mss);
|
int outnet_get_tcp_fd(struct sockaddr_storage* addr, socklen_t addrlen, int tcp_mss, int dscp);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create udp commpoint suitable for sending packets to the destination.
|
* Create udp commpoint suitable for sending packets to the destination.
|
||||||
|
|
|
||||||
|
|
@ -1031,6 +1031,7 @@ outside_network_create(struct comm_base* base, size_t bufsize,
|
||||||
size_t ATTR_UNUSED(num_ports), char** ATTR_UNUSED(ifs),
|
size_t ATTR_UNUSED(num_ports), char** ATTR_UNUSED(ifs),
|
||||||
int ATTR_UNUSED(num_ifs), int ATTR_UNUSED(do_ip4),
|
int ATTR_UNUSED(num_ifs), int ATTR_UNUSED(do_ip4),
|
||||||
int ATTR_UNUSED(do_ip6), size_t ATTR_UNUSED(num_tcp),
|
int ATTR_UNUSED(do_ip6), size_t ATTR_UNUSED(num_tcp),
|
||||||
|
int ATTR_UNUSED(dscp),
|
||||||
struct infra_cache* infra,
|
struct infra_cache* infra,
|
||||||
struct ub_randstate* ATTR_UNUSED(rnd),
|
struct ub_randstate* ATTR_UNUSED(rnd),
|
||||||
int ATTR_UNUSED(use_caps_for_id), int* ATTR_UNUSED(availports),
|
int ATTR_UNUSED(use_caps_for_id), int* ATTR_UNUSED(availports),
|
||||||
|
|
@ -1583,7 +1584,7 @@ int create_udp_sock(int ATTR_UNUSED(family), int ATTR_UNUSED(socktype),
|
||||||
int* ATTR_UNUSED(noproto), int ATTR_UNUSED(rcv), int ATTR_UNUSED(snd),
|
int* ATTR_UNUSED(noproto), int ATTR_UNUSED(rcv), int ATTR_UNUSED(snd),
|
||||||
int ATTR_UNUSED(listen), int* ATTR_UNUSED(reuseport),
|
int ATTR_UNUSED(listen), int* ATTR_UNUSED(reuseport),
|
||||||
int ATTR_UNUSED(transparent), int ATTR_UNUSED(freebind),
|
int ATTR_UNUSED(transparent), int ATTR_UNUSED(freebind),
|
||||||
int ATTR_UNUSED(use_systemd))
|
int ATTR_UNUSED(use_systemd), int ATTR_UNUSED(dscp))
|
||||||
{
|
{
|
||||||
/* if you actually print to this, it'll be stdout during test */
|
/* if you actually print to this, it'll be stdout during test */
|
||||||
return 1;
|
return 1;
|
||||||
|
|
@ -1790,7 +1791,7 @@ int comm_point_send_udp_msg(struct comm_point *c, sldns_buffer* packet,
|
||||||
}
|
}
|
||||||
|
|
||||||
int outnet_get_tcp_fd(struct sockaddr_storage* ATTR_UNUSED(addr),
|
int outnet_get_tcp_fd(struct sockaddr_storage* ATTR_UNUSED(addr),
|
||||||
socklen_t ATTR_UNUSED(addrlen), int ATTR_UNUSED(tcp_mss))
|
socklen_t ATTR_UNUSED(addrlen), int ATTR_UNUSED(tcp_mss), int ATTR_UNUSED(dscp))
|
||||||
{
|
{
|
||||||
log_assert(0);
|
log_assert(0);
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
||||||
5
testdata/04-checkconf.tdir/bad.dscp
vendored
Normal file
5
testdata/04-checkconf.tdir/bad.dscp
vendored
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
include: "good.min"
|
||||||
|
|
||||||
|
server:
|
||||||
|
# an abnormal value for the option
|
||||||
|
ip-dscp: 500
|
||||||
4
testdata/04-checkconf.tdir/good.all
vendored
4
testdata/04-checkconf.tdir/good.all
vendored
|
|
@ -220,6 +220,10 @@ server:
|
||||||
# more slabs reduce lock contention, but fragment memory usage.
|
# more slabs reduce lock contention, but fragment memory usage.
|
||||||
key-cache-slabs: 4
|
key-cache-slabs: 4
|
||||||
|
|
||||||
|
# the value of the Differentiated Services Codepoint (DSCP)
|
||||||
|
# in the differentiated services field (DS) of the outgoing
|
||||||
|
# IP packets
|
||||||
|
ip-dscp: 5
|
||||||
|
|
||||||
# Stub zones.
|
# Stub zones.
|
||||||
# Create entries like below, to make all queries for 'example.com' and
|
# Create entries like below, to make all queries for 'example.com' and
|
||||||
|
|
|
||||||
7
testdata/04-checkconf.tdir/good.min
vendored
Normal file
7
testdata/04-checkconf.tdir/good.min
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
# the minimal passing config - include in your bad.x to verify that
|
||||||
|
# it is your option which triggers failure
|
||||||
|
server:
|
||||||
|
chroot: ""
|
||||||
|
username: ""
|
||||||
|
directory: "."
|
||||||
|
pidfile: ""
|
||||||
|
|
@ -186,6 +186,7 @@ config_create(void)
|
||||||
cfg->so_reuseport = REUSEPORT_DEFAULT;
|
cfg->so_reuseport = REUSEPORT_DEFAULT;
|
||||||
cfg->ip_transparent = 0;
|
cfg->ip_transparent = 0;
|
||||||
cfg->ip_freebind = 0;
|
cfg->ip_freebind = 0;
|
||||||
|
cfg->ip_dscp = 0;
|
||||||
cfg->num_ifs = 0;
|
cfg->num_ifs = 0;
|
||||||
cfg->ifs = NULL;
|
cfg->ifs = NULL;
|
||||||
cfg->num_out_ifs = 0;
|
cfg->num_out_ifs = 0;
|
||||||
|
|
@ -923,6 +924,7 @@ config_get_option(struct config_file* cfg, const char* opt,
|
||||||
else O_YNO(opt, "so-reuseport", so_reuseport)
|
else O_YNO(opt, "so-reuseport", so_reuseport)
|
||||||
else O_YNO(opt, "ip-transparent", ip_transparent)
|
else O_YNO(opt, "ip-transparent", ip_transparent)
|
||||||
else O_YNO(opt, "ip-freebind", ip_freebind)
|
else O_YNO(opt, "ip-freebind", ip_freebind)
|
||||||
|
else O_DEC(opt, "ip-dscp", ip_dscp)
|
||||||
else O_MEM(opt, "rrset-cache-size", rrset_cache_size)
|
else O_MEM(opt, "rrset-cache-size", rrset_cache_size)
|
||||||
else O_DEC(opt, "rrset-cache-slabs", rrset_cache_slabs)
|
else O_DEC(opt, "rrset-cache-slabs", rrset_cache_slabs)
|
||||||
else O_YNO(opt, "prefetch-key", prefetch_key)
|
else O_YNO(opt, "prefetch-key", prefetch_key)
|
||||||
|
|
|
||||||
|
|
@ -188,6 +188,8 @@ struct config_file {
|
||||||
int ip_transparent;
|
int ip_transparent;
|
||||||
/** IP_FREEBIND socket option request on port 53 sockets */
|
/** IP_FREEBIND socket option request on port 53 sockets */
|
||||||
int ip_freebind;
|
int ip_freebind;
|
||||||
|
/** IP_TOS socket option requested on port 53 sockets */
|
||||||
|
int ip_dscp;
|
||||||
|
|
||||||
/** number of interfaces to open. If 0 default all interfaces. */
|
/** number of interfaces to open. If 0 default all interfaces. */
|
||||||
int num_ifs;
|
int num_ifs;
|
||||||
|
|
|
||||||
5072
util/configlexer.c
5072
util/configlexer.c
File diff suppressed because it is too large
Load diff
|
|
@ -259,6 +259,7 @@ so-sndbuf{COLON} { YDVAR(1, VAR_SO_SNDBUF) }
|
||||||
so-reuseport{COLON} { YDVAR(1, VAR_SO_REUSEPORT) }
|
so-reuseport{COLON} { YDVAR(1, VAR_SO_REUSEPORT) }
|
||||||
ip-transparent{COLON} { YDVAR(1, VAR_IP_TRANSPARENT) }
|
ip-transparent{COLON} { YDVAR(1, VAR_IP_TRANSPARENT) }
|
||||||
ip-freebind{COLON} { YDVAR(1, VAR_IP_FREEBIND) }
|
ip-freebind{COLON} { YDVAR(1, VAR_IP_FREEBIND) }
|
||||||
|
ip-dscp{COLON} { YDVAR(1, VAR_IP_DSCP) }
|
||||||
chroot{COLON} { YDVAR(1, VAR_CHROOT) }
|
chroot{COLON} { YDVAR(1, VAR_CHROOT) }
|
||||||
username{COLON} { YDVAR(1, VAR_USERNAME) }
|
username{COLON} { YDVAR(1, VAR_USERNAME) }
|
||||||
directory{COLON} { YDVAR(1, VAR_DIRECTORY) }
|
directory{COLON} { YDVAR(1, VAR_DIRECTORY) }
|
||||||
|
|
|
||||||
7584
util/configparser.c
7584
util/configparser.c
File diff suppressed because it is too large
Load diff
|
|
@ -1,14 +1,14 @@
|
||||||
/* A Bison parser, made by GNU Bison 3.4.1. */
|
/* A Bison parser, made by GNU Bison 2.3. */
|
||||||
|
|
||||||
/* Bison interface for Yacc-like parsers in C
|
/* Skeleton interface for Bison's Yacc-like parsers in C
|
||||||
|
|
||||||
Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,
|
Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
|
||||||
Inc.
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
the Free Software Foundation; either version 2, or (at your option)
|
||||||
(at your option) any later version.
|
any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
|
@ -16,7 +16,9 @@
|
||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
Boston, MA 02110-1301, USA. */
|
||||||
|
|
||||||
/* As a special exception, you may create a larger work that contains
|
/* As a special exception, you may create a larger work that contains
|
||||||
part or all of the Bison parser skeleton and distribute that work
|
part or all of the Bison parser skeleton and distribute that work
|
||||||
|
|
@ -31,307 +33,296 @@
|
||||||
This special exception was added by the Free Software Foundation in
|
This special exception was added by the Free Software Foundation in
|
||||||
version 2.2 of Bison. */
|
version 2.2 of Bison. */
|
||||||
|
|
||||||
/* Undocumented macros, especially those whose name start with YY_,
|
/* Tokens. */
|
||||||
are private implementation details. Do not rely on them. */
|
|
||||||
|
|
||||||
#ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED
|
|
||||||
# define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED
|
|
||||||
/* Debug traces. */
|
|
||||||
#ifndef YYDEBUG
|
|
||||||
# define YYDEBUG 0
|
|
||||||
#endif
|
|
||||||
#if YYDEBUG
|
|
||||||
extern int yydebug;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Token type. */
|
|
||||||
#ifndef YYTOKENTYPE
|
#ifndef YYTOKENTYPE
|
||||||
# define YYTOKENTYPE
|
# define YYTOKENTYPE
|
||||||
enum yytokentype
|
/* Put the tokens into the symbol table, so that GDB and other debuggers
|
||||||
{
|
know about them. */
|
||||||
SPACE = 258,
|
enum yytokentype {
|
||||||
LETTER = 259,
|
SPACE = 258,
|
||||||
NEWLINE = 260,
|
LETTER = 259,
|
||||||
COMMENT = 261,
|
NEWLINE = 260,
|
||||||
COLON = 262,
|
COMMENT = 261,
|
||||||
ANY = 263,
|
COLON = 262,
|
||||||
ZONESTR = 264,
|
ANY = 263,
|
||||||
STRING_ARG = 265,
|
ZONESTR = 264,
|
||||||
VAR_SERVER = 266,
|
STRING_ARG = 265,
|
||||||
VAR_VERBOSITY = 267,
|
VAR_SERVER = 266,
|
||||||
VAR_NUM_THREADS = 268,
|
VAR_VERBOSITY = 267,
|
||||||
VAR_PORT = 269,
|
VAR_NUM_THREADS = 268,
|
||||||
VAR_OUTGOING_RANGE = 270,
|
VAR_PORT = 269,
|
||||||
VAR_INTERFACE = 271,
|
VAR_OUTGOING_RANGE = 270,
|
||||||
VAR_PREFER_IP4 = 272,
|
VAR_INTERFACE = 271,
|
||||||
VAR_DO_IP4 = 273,
|
VAR_PREFER_IP4 = 272,
|
||||||
VAR_DO_IP6 = 274,
|
VAR_DO_IP4 = 273,
|
||||||
VAR_PREFER_IP6 = 275,
|
VAR_DO_IP6 = 274,
|
||||||
VAR_DO_UDP = 276,
|
VAR_PREFER_IP6 = 275,
|
||||||
VAR_DO_TCP = 277,
|
VAR_DO_UDP = 276,
|
||||||
VAR_TCP_MSS = 278,
|
VAR_DO_TCP = 277,
|
||||||
VAR_OUTGOING_TCP_MSS = 279,
|
VAR_TCP_MSS = 278,
|
||||||
VAR_TCP_IDLE_TIMEOUT = 280,
|
VAR_OUTGOING_TCP_MSS = 279,
|
||||||
VAR_EDNS_TCP_KEEPALIVE = 281,
|
VAR_TCP_IDLE_TIMEOUT = 280,
|
||||||
VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 282,
|
VAR_EDNS_TCP_KEEPALIVE = 281,
|
||||||
VAR_CHROOT = 283,
|
VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 282,
|
||||||
VAR_USERNAME = 284,
|
VAR_CHROOT = 283,
|
||||||
VAR_DIRECTORY = 285,
|
VAR_USERNAME = 284,
|
||||||
VAR_LOGFILE = 286,
|
VAR_DIRECTORY = 285,
|
||||||
VAR_PIDFILE = 287,
|
VAR_LOGFILE = 286,
|
||||||
VAR_MSG_CACHE_SIZE = 288,
|
VAR_PIDFILE = 287,
|
||||||
VAR_MSG_CACHE_SLABS = 289,
|
VAR_MSG_CACHE_SIZE = 288,
|
||||||
VAR_NUM_QUERIES_PER_THREAD = 290,
|
VAR_MSG_CACHE_SLABS = 289,
|
||||||
VAR_RRSET_CACHE_SIZE = 291,
|
VAR_NUM_QUERIES_PER_THREAD = 290,
|
||||||
VAR_RRSET_CACHE_SLABS = 292,
|
VAR_RRSET_CACHE_SIZE = 291,
|
||||||
VAR_OUTGOING_NUM_TCP = 293,
|
VAR_RRSET_CACHE_SLABS = 292,
|
||||||
VAR_INFRA_HOST_TTL = 294,
|
VAR_OUTGOING_NUM_TCP = 293,
|
||||||
VAR_INFRA_LAME_TTL = 295,
|
VAR_INFRA_HOST_TTL = 294,
|
||||||
VAR_INFRA_CACHE_SLABS = 296,
|
VAR_INFRA_LAME_TTL = 295,
|
||||||
VAR_INFRA_CACHE_NUMHOSTS = 297,
|
VAR_INFRA_CACHE_SLABS = 296,
|
||||||
VAR_INFRA_CACHE_LAME_SIZE = 298,
|
VAR_INFRA_CACHE_NUMHOSTS = 297,
|
||||||
VAR_NAME = 299,
|
VAR_INFRA_CACHE_LAME_SIZE = 298,
|
||||||
VAR_STUB_ZONE = 300,
|
VAR_NAME = 299,
|
||||||
VAR_STUB_HOST = 301,
|
VAR_STUB_ZONE = 300,
|
||||||
VAR_STUB_ADDR = 302,
|
VAR_STUB_HOST = 301,
|
||||||
VAR_TARGET_FETCH_POLICY = 303,
|
VAR_STUB_ADDR = 302,
|
||||||
VAR_HARDEN_SHORT_BUFSIZE = 304,
|
VAR_TARGET_FETCH_POLICY = 303,
|
||||||
VAR_HARDEN_LARGE_QUERIES = 305,
|
VAR_HARDEN_SHORT_BUFSIZE = 304,
|
||||||
VAR_FORWARD_ZONE = 306,
|
VAR_HARDEN_LARGE_QUERIES = 305,
|
||||||
VAR_FORWARD_HOST = 307,
|
VAR_FORWARD_ZONE = 306,
|
||||||
VAR_FORWARD_ADDR = 308,
|
VAR_FORWARD_HOST = 307,
|
||||||
VAR_DO_NOT_QUERY_ADDRESS = 309,
|
VAR_FORWARD_ADDR = 308,
|
||||||
VAR_HIDE_IDENTITY = 310,
|
VAR_DO_NOT_QUERY_ADDRESS = 309,
|
||||||
VAR_HIDE_VERSION = 311,
|
VAR_HIDE_IDENTITY = 310,
|
||||||
VAR_IDENTITY = 312,
|
VAR_HIDE_VERSION = 311,
|
||||||
VAR_VERSION = 313,
|
VAR_IDENTITY = 312,
|
||||||
VAR_HARDEN_GLUE = 314,
|
VAR_VERSION = 313,
|
||||||
VAR_MODULE_CONF = 315,
|
VAR_HARDEN_GLUE = 314,
|
||||||
VAR_TRUST_ANCHOR_FILE = 316,
|
VAR_MODULE_CONF = 315,
|
||||||
VAR_TRUST_ANCHOR = 317,
|
VAR_TRUST_ANCHOR_FILE = 316,
|
||||||
VAR_VAL_OVERRIDE_DATE = 318,
|
VAR_TRUST_ANCHOR = 317,
|
||||||
VAR_BOGUS_TTL = 319,
|
VAR_VAL_OVERRIDE_DATE = 318,
|
||||||
VAR_VAL_CLEAN_ADDITIONAL = 320,
|
VAR_BOGUS_TTL = 319,
|
||||||
VAR_VAL_PERMISSIVE_MODE = 321,
|
VAR_VAL_CLEAN_ADDITIONAL = 320,
|
||||||
VAR_INCOMING_NUM_TCP = 322,
|
VAR_VAL_PERMISSIVE_MODE = 321,
|
||||||
VAR_MSG_BUFFER_SIZE = 323,
|
VAR_INCOMING_NUM_TCP = 322,
|
||||||
VAR_KEY_CACHE_SIZE = 324,
|
VAR_MSG_BUFFER_SIZE = 323,
|
||||||
VAR_KEY_CACHE_SLABS = 325,
|
VAR_KEY_CACHE_SIZE = 324,
|
||||||
VAR_TRUSTED_KEYS_FILE = 326,
|
VAR_KEY_CACHE_SLABS = 325,
|
||||||
VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 327,
|
VAR_TRUSTED_KEYS_FILE = 326,
|
||||||
VAR_USE_SYSLOG = 328,
|
VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 327,
|
||||||
VAR_OUTGOING_INTERFACE = 329,
|
VAR_USE_SYSLOG = 328,
|
||||||
VAR_ROOT_HINTS = 330,
|
VAR_OUTGOING_INTERFACE = 329,
|
||||||
VAR_DO_NOT_QUERY_LOCALHOST = 331,
|
VAR_ROOT_HINTS = 330,
|
||||||
VAR_CACHE_MAX_TTL = 332,
|
VAR_DO_NOT_QUERY_LOCALHOST = 331,
|
||||||
VAR_HARDEN_DNSSEC_STRIPPED = 333,
|
VAR_CACHE_MAX_TTL = 332,
|
||||||
VAR_ACCESS_CONTROL = 334,
|
VAR_HARDEN_DNSSEC_STRIPPED = 333,
|
||||||
VAR_LOCAL_ZONE = 335,
|
VAR_ACCESS_CONTROL = 334,
|
||||||
VAR_LOCAL_DATA = 336,
|
VAR_LOCAL_ZONE = 335,
|
||||||
VAR_INTERFACE_AUTOMATIC = 337,
|
VAR_LOCAL_DATA = 336,
|
||||||
VAR_STATISTICS_INTERVAL = 338,
|
VAR_INTERFACE_AUTOMATIC = 337,
|
||||||
VAR_DO_DAEMONIZE = 339,
|
VAR_STATISTICS_INTERVAL = 338,
|
||||||
VAR_USE_CAPS_FOR_ID = 340,
|
VAR_DO_DAEMONIZE = 339,
|
||||||
VAR_STATISTICS_CUMULATIVE = 341,
|
VAR_USE_CAPS_FOR_ID = 340,
|
||||||
VAR_OUTGOING_PORT_PERMIT = 342,
|
VAR_STATISTICS_CUMULATIVE = 341,
|
||||||
VAR_OUTGOING_PORT_AVOID = 343,
|
VAR_OUTGOING_PORT_PERMIT = 342,
|
||||||
VAR_DLV_ANCHOR_FILE = 344,
|
VAR_OUTGOING_PORT_AVOID = 343,
|
||||||
VAR_DLV_ANCHOR = 345,
|
VAR_DLV_ANCHOR_FILE = 344,
|
||||||
VAR_NEG_CACHE_SIZE = 346,
|
VAR_DLV_ANCHOR = 345,
|
||||||
VAR_HARDEN_REFERRAL_PATH = 347,
|
VAR_NEG_CACHE_SIZE = 346,
|
||||||
VAR_PRIVATE_ADDRESS = 348,
|
VAR_HARDEN_REFERRAL_PATH = 347,
|
||||||
VAR_PRIVATE_DOMAIN = 349,
|
VAR_PRIVATE_ADDRESS = 348,
|
||||||
VAR_REMOTE_CONTROL = 350,
|
VAR_PRIVATE_DOMAIN = 349,
|
||||||
VAR_CONTROL_ENABLE = 351,
|
VAR_REMOTE_CONTROL = 350,
|
||||||
VAR_CONTROL_INTERFACE = 352,
|
VAR_CONTROL_ENABLE = 351,
|
||||||
VAR_CONTROL_PORT = 353,
|
VAR_CONTROL_INTERFACE = 352,
|
||||||
VAR_SERVER_KEY_FILE = 354,
|
VAR_CONTROL_PORT = 353,
|
||||||
VAR_SERVER_CERT_FILE = 355,
|
VAR_SERVER_KEY_FILE = 354,
|
||||||
VAR_CONTROL_KEY_FILE = 356,
|
VAR_SERVER_CERT_FILE = 355,
|
||||||
VAR_CONTROL_CERT_FILE = 357,
|
VAR_CONTROL_KEY_FILE = 356,
|
||||||
VAR_CONTROL_USE_CERT = 358,
|
VAR_CONTROL_CERT_FILE = 357,
|
||||||
VAR_EXTENDED_STATISTICS = 359,
|
VAR_CONTROL_USE_CERT = 358,
|
||||||
VAR_LOCAL_DATA_PTR = 360,
|
VAR_EXTENDED_STATISTICS = 359,
|
||||||
VAR_JOSTLE_TIMEOUT = 361,
|
VAR_LOCAL_DATA_PTR = 360,
|
||||||
VAR_STUB_PRIME = 362,
|
VAR_JOSTLE_TIMEOUT = 361,
|
||||||
VAR_UNWANTED_REPLY_THRESHOLD = 363,
|
VAR_STUB_PRIME = 362,
|
||||||
VAR_LOG_TIME_ASCII = 364,
|
VAR_UNWANTED_REPLY_THRESHOLD = 363,
|
||||||
VAR_DOMAIN_INSECURE = 365,
|
VAR_LOG_TIME_ASCII = 364,
|
||||||
VAR_PYTHON = 366,
|
VAR_DOMAIN_INSECURE = 365,
|
||||||
VAR_PYTHON_SCRIPT = 367,
|
VAR_PYTHON = 366,
|
||||||
VAR_VAL_SIG_SKEW_MIN = 368,
|
VAR_PYTHON_SCRIPT = 367,
|
||||||
VAR_VAL_SIG_SKEW_MAX = 369,
|
VAR_VAL_SIG_SKEW_MIN = 368,
|
||||||
VAR_CACHE_MIN_TTL = 370,
|
VAR_VAL_SIG_SKEW_MAX = 369,
|
||||||
VAR_VAL_LOG_LEVEL = 371,
|
VAR_CACHE_MIN_TTL = 370,
|
||||||
VAR_AUTO_TRUST_ANCHOR_FILE = 372,
|
VAR_VAL_LOG_LEVEL = 371,
|
||||||
VAR_KEEP_MISSING = 373,
|
VAR_AUTO_TRUST_ANCHOR_FILE = 372,
|
||||||
VAR_ADD_HOLDDOWN = 374,
|
VAR_KEEP_MISSING = 373,
|
||||||
VAR_DEL_HOLDDOWN = 375,
|
VAR_ADD_HOLDDOWN = 374,
|
||||||
VAR_SO_RCVBUF = 376,
|
VAR_DEL_HOLDDOWN = 375,
|
||||||
VAR_EDNS_BUFFER_SIZE = 377,
|
VAR_SO_RCVBUF = 376,
|
||||||
VAR_PREFETCH = 378,
|
VAR_EDNS_BUFFER_SIZE = 377,
|
||||||
VAR_PREFETCH_KEY = 379,
|
VAR_PREFETCH = 378,
|
||||||
VAR_SO_SNDBUF = 380,
|
VAR_PREFETCH_KEY = 379,
|
||||||
VAR_SO_REUSEPORT = 381,
|
VAR_SO_SNDBUF = 380,
|
||||||
VAR_HARDEN_BELOW_NXDOMAIN = 382,
|
VAR_SO_REUSEPORT = 381,
|
||||||
VAR_IGNORE_CD_FLAG = 383,
|
VAR_HARDEN_BELOW_NXDOMAIN = 382,
|
||||||
VAR_LOG_QUERIES = 384,
|
VAR_IGNORE_CD_FLAG = 383,
|
||||||
VAR_LOG_REPLIES = 385,
|
VAR_LOG_QUERIES = 384,
|
||||||
VAR_LOG_LOCAL_ACTIONS = 386,
|
VAR_LOG_REPLIES = 385,
|
||||||
VAR_TCP_UPSTREAM = 387,
|
VAR_LOG_LOCAL_ACTIONS = 386,
|
||||||
VAR_SSL_UPSTREAM = 388,
|
VAR_TCP_UPSTREAM = 387,
|
||||||
VAR_SSL_SERVICE_KEY = 389,
|
VAR_SSL_UPSTREAM = 388,
|
||||||
VAR_SSL_SERVICE_PEM = 390,
|
VAR_SSL_SERVICE_KEY = 389,
|
||||||
VAR_SSL_PORT = 391,
|
VAR_SSL_SERVICE_PEM = 390,
|
||||||
VAR_FORWARD_FIRST = 392,
|
VAR_SSL_PORT = 391,
|
||||||
VAR_STUB_SSL_UPSTREAM = 393,
|
VAR_FORWARD_FIRST = 392,
|
||||||
VAR_FORWARD_SSL_UPSTREAM = 394,
|
VAR_STUB_SSL_UPSTREAM = 393,
|
||||||
VAR_TLS_CERT_BUNDLE = 395,
|
VAR_FORWARD_SSL_UPSTREAM = 394,
|
||||||
VAR_STUB_FIRST = 396,
|
VAR_TLS_CERT_BUNDLE = 395,
|
||||||
VAR_MINIMAL_RESPONSES = 397,
|
VAR_STUB_FIRST = 396,
|
||||||
VAR_RRSET_ROUNDROBIN = 398,
|
VAR_MINIMAL_RESPONSES = 397,
|
||||||
VAR_MAX_UDP_SIZE = 399,
|
VAR_RRSET_ROUNDROBIN = 398,
|
||||||
VAR_DELAY_CLOSE = 400,
|
VAR_MAX_UDP_SIZE = 399,
|
||||||
VAR_UNBLOCK_LAN_ZONES = 401,
|
VAR_DELAY_CLOSE = 400,
|
||||||
VAR_INSECURE_LAN_ZONES = 402,
|
VAR_UNBLOCK_LAN_ZONES = 401,
|
||||||
VAR_INFRA_CACHE_MIN_RTT = 403,
|
VAR_INSECURE_LAN_ZONES = 402,
|
||||||
VAR_DNS64_PREFIX = 404,
|
VAR_INFRA_CACHE_MIN_RTT = 403,
|
||||||
VAR_DNS64_SYNTHALL = 405,
|
VAR_DNS64_PREFIX = 404,
|
||||||
VAR_DNS64_IGNORE_AAAA = 406,
|
VAR_DNS64_SYNTHALL = 405,
|
||||||
VAR_DNSTAP = 407,
|
VAR_DNS64_IGNORE_AAAA = 406,
|
||||||
VAR_DNSTAP_ENABLE = 408,
|
VAR_DNSTAP = 407,
|
||||||
VAR_DNSTAP_SOCKET_PATH = 409,
|
VAR_DNSTAP_ENABLE = 408,
|
||||||
VAR_DNSTAP_IP = 410,
|
VAR_DNSTAP_SOCKET_PATH = 409,
|
||||||
VAR_DNSTAP_TLS = 411,
|
VAR_DNSTAP_IP = 410,
|
||||||
VAR_DNSTAP_TLS_SERVER_NAME = 412,
|
VAR_DNSTAP_TLS = 411,
|
||||||
VAR_DNSTAP_TLS_CERT_BUNDLE = 413,
|
VAR_DNSTAP_TLS_SERVER_NAME = 412,
|
||||||
VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 414,
|
VAR_DNSTAP_TLS_CERT_BUNDLE = 413,
|
||||||
VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 415,
|
VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 414,
|
||||||
VAR_DNSTAP_SEND_IDENTITY = 416,
|
VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 415,
|
||||||
VAR_DNSTAP_SEND_VERSION = 417,
|
VAR_DNSTAP_SEND_IDENTITY = 416,
|
||||||
VAR_DNSTAP_IDENTITY = 418,
|
VAR_DNSTAP_SEND_VERSION = 417,
|
||||||
VAR_DNSTAP_VERSION = 419,
|
VAR_DNSTAP_IDENTITY = 418,
|
||||||
VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 420,
|
VAR_DNSTAP_VERSION = 419,
|
||||||
VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 421,
|
VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 420,
|
||||||
VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 422,
|
VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 421,
|
||||||
VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 423,
|
VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 422,
|
||||||
VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 424,
|
VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 423,
|
||||||
VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 425,
|
VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 424,
|
||||||
VAR_RESPONSE_IP_TAG = 426,
|
VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 425,
|
||||||
VAR_RESPONSE_IP = 427,
|
VAR_RESPONSE_IP_TAG = 426,
|
||||||
VAR_RESPONSE_IP_DATA = 428,
|
VAR_RESPONSE_IP = 427,
|
||||||
VAR_HARDEN_ALGO_DOWNGRADE = 429,
|
VAR_RESPONSE_IP_DATA = 428,
|
||||||
VAR_IP_TRANSPARENT = 430,
|
VAR_HARDEN_ALGO_DOWNGRADE = 429,
|
||||||
VAR_DISABLE_DNSSEC_LAME_CHECK = 431,
|
VAR_IP_TRANSPARENT = 430,
|
||||||
VAR_IP_RATELIMIT = 432,
|
VAR_IP_DSCP = 431,
|
||||||
VAR_IP_RATELIMIT_SLABS = 433,
|
VAR_DISABLE_DNSSEC_LAME_CHECK = 432,
|
||||||
VAR_IP_RATELIMIT_SIZE = 434,
|
VAR_IP_RATELIMIT = 433,
|
||||||
VAR_RATELIMIT = 435,
|
VAR_IP_RATELIMIT_SLABS = 434,
|
||||||
VAR_RATELIMIT_SLABS = 436,
|
VAR_IP_RATELIMIT_SIZE = 435,
|
||||||
VAR_RATELIMIT_SIZE = 437,
|
VAR_RATELIMIT = 436,
|
||||||
VAR_RATELIMIT_FOR_DOMAIN = 438,
|
VAR_RATELIMIT_SLABS = 437,
|
||||||
VAR_RATELIMIT_BELOW_DOMAIN = 439,
|
VAR_RATELIMIT_SIZE = 438,
|
||||||
VAR_IP_RATELIMIT_FACTOR = 440,
|
VAR_RATELIMIT_FOR_DOMAIN = 439,
|
||||||
VAR_RATELIMIT_FACTOR = 441,
|
VAR_RATELIMIT_BELOW_DOMAIN = 440,
|
||||||
VAR_SEND_CLIENT_SUBNET = 442,
|
VAR_IP_RATELIMIT_FACTOR = 441,
|
||||||
VAR_CLIENT_SUBNET_ZONE = 443,
|
VAR_RATELIMIT_FACTOR = 442,
|
||||||
VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 444,
|
VAR_SEND_CLIENT_SUBNET = 443,
|
||||||
VAR_CLIENT_SUBNET_OPCODE = 445,
|
VAR_CLIENT_SUBNET_ZONE = 444,
|
||||||
VAR_MAX_CLIENT_SUBNET_IPV4 = 446,
|
VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 445,
|
||||||
VAR_MAX_CLIENT_SUBNET_IPV6 = 447,
|
VAR_CLIENT_SUBNET_OPCODE = 446,
|
||||||
VAR_MIN_CLIENT_SUBNET_IPV4 = 448,
|
VAR_MAX_CLIENT_SUBNET_IPV4 = 447,
|
||||||
VAR_MIN_CLIENT_SUBNET_IPV6 = 449,
|
VAR_MAX_CLIENT_SUBNET_IPV6 = 448,
|
||||||
VAR_MAX_ECS_TREE_SIZE_IPV4 = 450,
|
VAR_MIN_CLIENT_SUBNET_IPV4 = 449,
|
||||||
VAR_MAX_ECS_TREE_SIZE_IPV6 = 451,
|
VAR_MIN_CLIENT_SUBNET_IPV6 = 450,
|
||||||
VAR_CAPS_WHITELIST = 452,
|
VAR_MAX_ECS_TREE_SIZE_IPV4 = 451,
|
||||||
VAR_CACHE_MAX_NEGATIVE_TTL = 453,
|
VAR_MAX_ECS_TREE_SIZE_IPV6 = 452,
|
||||||
VAR_PERMIT_SMALL_HOLDDOWN = 454,
|
VAR_CAPS_WHITELIST = 453,
|
||||||
VAR_QNAME_MINIMISATION = 455,
|
VAR_CACHE_MAX_NEGATIVE_TTL = 454,
|
||||||
VAR_QNAME_MINIMISATION_STRICT = 456,
|
VAR_PERMIT_SMALL_HOLDDOWN = 455,
|
||||||
VAR_IP_FREEBIND = 457,
|
VAR_QNAME_MINIMISATION = 456,
|
||||||
VAR_DEFINE_TAG = 458,
|
VAR_QNAME_MINIMISATION_STRICT = 457,
|
||||||
VAR_LOCAL_ZONE_TAG = 459,
|
VAR_IP_FREEBIND = 458,
|
||||||
VAR_ACCESS_CONTROL_TAG = 460,
|
VAR_DEFINE_TAG = 459,
|
||||||
VAR_LOCAL_ZONE_OVERRIDE = 461,
|
VAR_LOCAL_ZONE_TAG = 460,
|
||||||
VAR_ACCESS_CONTROL_TAG_ACTION = 462,
|
VAR_ACCESS_CONTROL_TAG = 461,
|
||||||
VAR_ACCESS_CONTROL_TAG_DATA = 463,
|
VAR_LOCAL_ZONE_OVERRIDE = 462,
|
||||||
VAR_VIEW = 464,
|
VAR_ACCESS_CONTROL_TAG_ACTION = 463,
|
||||||
VAR_ACCESS_CONTROL_VIEW = 465,
|
VAR_ACCESS_CONTROL_TAG_DATA = 464,
|
||||||
VAR_VIEW_FIRST = 466,
|
VAR_VIEW = 465,
|
||||||
VAR_SERVE_EXPIRED = 467,
|
VAR_ACCESS_CONTROL_VIEW = 466,
|
||||||
VAR_SERVE_EXPIRED_TTL = 468,
|
VAR_VIEW_FIRST = 467,
|
||||||
VAR_SERVE_EXPIRED_TTL_RESET = 469,
|
VAR_SERVE_EXPIRED = 468,
|
||||||
VAR_SERVE_EXPIRED_REPLY_TTL = 470,
|
VAR_SERVE_EXPIRED_TTL = 469,
|
||||||
VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 471,
|
VAR_SERVE_EXPIRED_TTL_RESET = 470,
|
||||||
VAR_FAKE_DSA = 472,
|
VAR_SERVE_EXPIRED_REPLY_TTL = 471,
|
||||||
VAR_FAKE_SHA1 = 473,
|
VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 472,
|
||||||
VAR_LOG_IDENTITY = 474,
|
VAR_FAKE_DSA = 473,
|
||||||
VAR_HIDE_TRUSTANCHOR = 475,
|
VAR_FAKE_SHA1 = 474,
|
||||||
VAR_TRUST_ANCHOR_SIGNALING = 476,
|
VAR_LOG_IDENTITY = 475,
|
||||||
VAR_AGGRESSIVE_NSEC = 477,
|
VAR_HIDE_TRUSTANCHOR = 476,
|
||||||
VAR_USE_SYSTEMD = 478,
|
VAR_TRUST_ANCHOR_SIGNALING = 477,
|
||||||
VAR_SHM_ENABLE = 479,
|
VAR_AGGRESSIVE_NSEC = 478,
|
||||||
VAR_SHM_KEY = 480,
|
VAR_USE_SYSTEMD = 479,
|
||||||
VAR_ROOT_KEY_SENTINEL = 481,
|
VAR_SHM_ENABLE = 480,
|
||||||
VAR_DNSCRYPT = 482,
|
VAR_SHM_KEY = 481,
|
||||||
VAR_DNSCRYPT_ENABLE = 483,
|
VAR_ROOT_KEY_SENTINEL = 482,
|
||||||
VAR_DNSCRYPT_PORT = 484,
|
VAR_DNSCRYPT = 483,
|
||||||
VAR_DNSCRYPT_PROVIDER = 485,
|
VAR_DNSCRYPT_ENABLE = 484,
|
||||||
VAR_DNSCRYPT_SECRET_KEY = 486,
|
VAR_DNSCRYPT_PORT = 485,
|
||||||
VAR_DNSCRYPT_PROVIDER_CERT = 487,
|
VAR_DNSCRYPT_PROVIDER = 486,
|
||||||
VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 488,
|
VAR_DNSCRYPT_SECRET_KEY = 487,
|
||||||
VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 489,
|
VAR_DNSCRYPT_PROVIDER_CERT = 488,
|
||||||
VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 490,
|
VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 489,
|
||||||
VAR_DNSCRYPT_NONCE_CACHE_SIZE = 491,
|
VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 490,
|
||||||
VAR_DNSCRYPT_NONCE_CACHE_SLABS = 492,
|
VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 491,
|
||||||
VAR_IPSECMOD_ENABLED = 493,
|
VAR_DNSCRYPT_NONCE_CACHE_SIZE = 492,
|
||||||
VAR_IPSECMOD_HOOK = 494,
|
VAR_DNSCRYPT_NONCE_CACHE_SLABS = 493,
|
||||||
VAR_IPSECMOD_IGNORE_BOGUS = 495,
|
VAR_IPSECMOD_ENABLED = 494,
|
||||||
VAR_IPSECMOD_MAX_TTL = 496,
|
VAR_IPSECMOD_HOOK = 495,
|
||||||
VAR_IPSECMOD_WHITELIST = 497,
|
VAR_IPSECMOD_IGNORE_BOGUS = 496,
|
||||||
VAR_IPSECMOD_STRICT = 498,
|
VAR_IPSECMOD_MAX_TTL = 497,
|
||||||
VAR_CACHEDB = 499,
|
VAR_IPSECMOD_WHITELIST = 498,
|
||||||
VAR_CACHEDB_BACKEND = 500,
|
VAR_IPSECMOD_STRICT = 499,
|
||||||
VAR_CACHEDB_SECRETSEED = 501,
|
VAR_CACHEDB = 500,
|
||||||
VAR_CACHEDB_REDISHOST = 502,
|
VAR_CACHEDB_BACKEND = 501,
|
||||||
VAR_CACHEDB_REDISPORT = 503,
|
VAR_CACHEDB_SECRETSEED = 502,
|
||||||
VAR_CACHEDB_REDISTIMEOUT = 504,
|
VAR_CACHEDB_REDISHOST = 503,
|
||||||
VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 505,
|
VAR_CACHEDB_REDISPORT = 504,
|
||||||
VAR_FOR_UPSTREAM = 506,
|
VAR_CACHEDB_REDISTIMEOUT = 505,
|
||||||
VAR_AUTH_ZONE = 507,
|
VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 506,
|
||||||
VAR_ZONEFILE = 508,
|
VAR_FOR_UPSTREAM = 507,
|
||||||
VAR_MASTER = 509,
|
VAR_AUTH_ZONE = 508,
|
||||||
VAR_URL = 510,
|
VAR_ZONEFILE = 509,
|
||||||
VAR_FOR_DOWNSTREAM = 511,
|
VAR_MASTER = 510,
|
||||||
VAR_FALLBACK_ENABLED = 512,
|
VAR_URL = 511,
|
||||||
VAR_TLS_ADDITIONAL_PORT = 513,
|
VAR_FOR_DOWNSTREAM = 512,
|
||||||
VAR_LOW_RTT = 514,
|
VAR_FALLBACK_ENABLED = 513,
|
||||||
VAR_LOW_RTT_PERMIL = 515,
|
VAR_TLS_ADDITIONAL_PORT = 514,
|
||||||
VAR_FAST_SERVER_PERMIL = 516,
|
VAR_LOW_RTT = 515,
|
||||||
VAR_FAST_SERVER_NUM = 517,
|
VAR_LOW_RTT_PERMIL = 516,
|
||||||
VAR_ALLOW_NOTIFY = 518,
|
VAR_FAST_SERVER_PERMIL = 517,
|
||||||
VAR_TLS_WIN_CERT = 519,
|
VAR_FAST_SERVER_NUM = 518,
|
||||||
VAR_TCP_CONNECTION_LIMIT = 520,
|
VAR_ALLOW_NOTIFY = 519,
|
||||||
VAR_FORWARD_NO_CACHE = 521,
|
VAR_TLS_WIN_CERT = 520,
|
||||||
VAR_STUB_NO_CACHE = 522,
|
VAR_TCP_CONNECTION_LIMIT = 521,
|
||||||
VAR_LOG_SERVFAIL = 523,
|
VAR_FORWARD_NO_CACHE = 522,
|
||||||
VAR_DENY_ANY = 524,
|
VAR_STUB_NO_CACHE = 523,
|
||||||
VAR_UNKNOWN_SERVER_TIME_LIMIT = 525,
|
VAR_LOG_SERVFAIL = 524,
|
||||||
VAR_LOG_TAG_QUERYREPLY = 526,
|
VAR_DENY_ANY = 525,
|
||||||
VAR_STREAM_WAIT_SIZE = 527,
|
VAR_UNKNOWN_SERVER_TIME_LIMIT = 526,
|
||||||
VAR_TLS_CIPHERS = 528,
|
VAR_LOG_TAG_QUERYREPLY = 527,
|
||||||
VAR_TLS_CIPHERSUITES = 529,
|
VAR_STREAM_WAIT_SIZE = 528,
|
||||||
VAR_IPSET = 530,
|
VAR_TLS_CIPHERS = 529,
|
||||||
VAR_IPSET_NAME_V4 = 531,
|
VAR_TLS_CIPHERSUITES = 530,
|
||||||
VAR_IPSET_NAME_V6 = 532,
|
VAR_IPSET = 531,
|
||||||
VAR_TLS_SESSION_TICKET_KEYS = 533,
|
VAR_IPSET_NAME_V4 = 532,
|
||||||
VAR_RPZ = 534,
|
VAR_IPSET_NAME_V6 = 533,
|
||||||
VAR_TAGS = 535,
|
VAR_TLS_SESSION_TICKET_KEYS = 534,
|
||||||
VAR_RPZ_ACTION_OVERRIDE = 536,
|
VAR_RPZ = 535,
|
||||||
VAR_RPZ_CNAME_OVERRIDE = 537,
|
VAR_TAGS = 536,
|
||||||
VAR_RPZ_LOG = 538,
|
VAR_RPZ_ACTION_OVERRIDE = 537,
|
||||||
VAR_RPZ_LOG_NAME = 539
|
VAR_RPZ_CNAME_OVERRIDE = 538,
|
||||||
};
|
VAR_RPZ_LOG = 539,
|
||||||
|
VAR_RPZ_LOG_NAME = 540
|
||||||
|
};
|
||||||
#endif
|
#endif
|
||||||
/* Tokens. */
|
/* Tokens. */
|
||||||
#define SPACE 258
|
#define SPACE 258
|
||||||
|
|
@ -507,135 +498,133 @@ extern int yydebug;
|
||||||
#define VAR_RESPONSE_IP_DATA 428
|
#define VAR_RESPONSE_IP_DATA 428
|
||||||
#define VAR_HARDEN_ALGO_DOWNGRADE 429
|
#define VAR_HARDEN_ALGO_DOWNGRADE 429
|
||||||
#define VAR_IP_TRANSPARENT 430
|
#define VAR_IP_TRANSPARENT 430
|
||||||
#define VAR_DISABLE_DNSSEC_LAME_CHECK 431
|
#define VAR_IP_DSCP 431
|
||||||
#define VAR_IP_RATELIMIT 432
|
#define VAR_DISABLE_DNSSEC_LAME_CHECK 432
|
||||||
#define VAR_IP_RATELIMIT_SLABS 433
|
#define VAR_IP_RATELIMIT 433
|
||||||
#define VAR_IP_RATELIMIT_SIZE 434
|
#define VAR_IP_RATELIMIT_SLABS 434
|
||||||
#define VAR_RATELIMIT 435
|
#define VAR_IP_RATELIMIT_SIZE 435
|
||||||
#define VAR_RATELIMIT_SLABS 436
|
#define VAR_RATELIMIT 436
|
||||||
#define VAR_RATELIMIT_SIZE 437
|
#define VAR_RATELIMIT_SLABS 437
|
||||||
#define VAR_RATELIMIT_FOR_DOMAIN 438
|
#define VAR_RATELIMIT_SIZE 438
|
||||||
#define VAR_RATELIMIT_BELOW_DOMAIN 439
|
#define VAR_RATELIMIT_FOR_DOMAIN 439
|
||||||
#define VAR_IP_RATELIMIT_FACTOR 440
|
#define VAR_RATELIMIT_BELOW_DOMAIN 440
|
||||||
#define VAR_RATELIMIT_FACTOR 441
|
#define VAR_IP_RATELIMIT_FACTOR 441
|
||||||
#define VAR_SEND_CLIENT_SUBNET 442
|
#define VAR_RATELIMIT_FACTOR 442
|
||||||
#define VAR_CLIENT_SUBNET_ZONE 443
|
#define VAR_SEND_CLIENT_SUBNET 443
|
||||||
#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 444
|
#define VAR_CLIENT_SUBNET_ZONE 444
|
||||||
#define VAR_CLIENT_SUBNET_OPCODE 445
|
#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 445
|
||||||
#define VAR_MAX_CLIENT_SUBNET_IPV4 446
|
#define VAR_CLIENT_SUBNET_OPCODE 446
|
||||||
#define VAR_MAX_CLIENT_SUBNET_IPV6 447
|
#define VAR_MAX_CLIENT_SUBNET_IPV4 447
|
||||||
#define VAR_MIN_CLIENT_SUBNET_IPV4 448
|
#define VAR_MAX_CLIENT_SUBNET_IPV6 448
|
||||||
#define VAR_MIN_CLIENT_SUBNET_IPV6 449
|
#define VAR_MIN_CLIENT_SUBNET_IPV4 449
|
||||||
#define VAR_MAX_ECS_TREE_SIZE_IPV4 450
|
#define VAR_MIN_CLIENT_SUBNET_IPV6 450
|
||||||
#define VAR_MAX_ECS_TREE_SIZE_IPV6 451
|
#define VAR_MAX_ECS_TREE_SIZE_IPV4 451
|
||||||
#define VAR_CAPS_WHITELIST 452
|
#define VAR_MAX_ECS_TREE_SIZE_IPV6 452
|
||||||
#define VAR_CACHE_MAX_NEGATIVE_TTL 453
|
#define VAR_CAPS_WHITELIST 453
|
||||||
#define VAR_PERMIT_SMALL_HOLDDOWN 454
|
#define VAR_CACHE_MAX_NEGATIVE_TTL 454
|
||||||
#define VAR_QNAME_MINIMISATION 455
|
#define VAR_PERMIT_SMALL_HOLDDOWN 455
|
||||||
#define VAR_QNAME_MINIMISATION_STRICT 456
|
#define VAR_QNAME_MINIMISATION 456
|
||||||
#define VAR_IP_FREEBIND 457
|
#define VAR_QNAME_MINIMISATION_STRICT 457
|
||||||
#define VAR_DEFINE_TAG 458
|
#define VAR_IP_FREEBIND 458
|
||||||
#define VAR_LOCAL_ZONE_TAG 459
|
#define VAR_DEFINE_TAG 459
|
||||||
#define VAR_ACCESS_CONTROL_TAG 460
|
#define VAR_LOCAL_ZONE_TAG 460
|
||||||
#define VAR_LOCAL_ZONE_OVERRIDE 461
|
#define VAR_ACCESS_CONTROL_TAG 461
|
||||||
#define VAR_ACCESS_CONTROL_TAG_ACTION 462
|
#define VAR_LOCAL_ZONE_OVERRIDE 462
|
||||||
#define VAR_ACCESS_CONTROL_TAG_DATA 463
|
#define VAR_ACCESS_CONTROL_TAG_ACTION 463
|
||||||
#define VAR_VIEW 464
|
#define VAR_ACCESS_CONTROL_TAG_DATA 464
|
||||||
#define VAR_ACCESS_CONTROL_VIEW 465
|
#define VAR_VIEW 465
|
||||||
#define VAR_VIEW_FIRST 466
|
#define VAR_ACCESS_CONTROL_VIEW 466
|
||||||
#define VAR_SERVE_EXPIRED 467
|
#define VAR_VIEW_FIRST 467
|
||||||
#define VAR_SERVE_EXPIRED_TTL 468
|
#define VAR_SERVE_EXPIRED 468
|
||||||
#define VAR_SERVE_EXPIRED_TTL_RESET 469
|
#define VAR_SERVE_EXPIRED_TTL 469
|
||||||
#define VAR_SERVE_EXPIRED_REPLY_TTL 470
|
#define VAR_SERVE_EXPIRED_TTL_RESET 470
|
||||||
#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 471
|
#define VAR_SERVE_EXPIRED_REPLY_TTL 471
|
||||||
#define VAR_FAKE_DSA 472
|
#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 472
|
||||||
#define VAR_FAKE_SHA1 473
|
#define VAR_FAKE_DSA 473
|
||||||
#define VAR_LOG_IDENTITY 474
|
#define VAR_FAKE_SHA1 474
|
||||||
#define VAR_HIDE_TRUSTANCHOR 475
|
#define VAR_LOG_IDENTITY 475
|
||||||
#define VAR_TRUST_ANCHOR_SIGNALING 476
|
#define VAR_HIDE_TRUSTANCHOR 476
|
||||||
#define VAR_AGGRESSIVE_NSEC 477
|
#define VAR_TRUST_ANCHOR_SIGNALING 477
|
||||||
#define VAR_USE_SYSTEMD 478
|
#define VAR_AGGRESSIVE_NSEC 478
|
||||||
#define VAR_SHM_ENABLE 479
|
#define VAR_USE_SYSTEMD 479
|
||||||
#define VAR_SHM_KEY 480
|
#define VAR_SHM_ENABLE 480
|
||||||
#define VAR_ROOT_KEY_SENTINEL 481
|
#define VAR_SHM_KEY 481
|
||||||
#define VAR_DNSCRYPT 482
|
#define VAR_ROOT_KEY_SENTINEL 482
|
||||||
#define VAR_DNSCRYPT_ENABLE 483
|
#define VAR_DNSCRYPT 483
|
||||||
#define VAR_DNSCRYPT_PORT 484
|
#define VAR_DNSCRYPT_ENABLE 484
|
||||||
#define VAR_DNSCRYPT_PROVIDER 485
|
#define VAR_DNSCRYPT_PORT 485
|
||||||
#define VAR_DNSCRYPT_SECRET_KEY 486
|
#define VAR_DNSCRYPT_PROVIDER 486
|
||||||
#define VAR_DNSCRYPT_PROVIDER_CERT 487
|
#define VAR_DNSCRYPT_SECRET_KEY 487
|
||||||
#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 488
|
#define VAR_DNSCRYPT_PROVIDER_CERT 488
|
||||||
#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 489
|
#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 489
|
||||||
#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 490
|
#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 490
|
||||||
#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 491
|
#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 491
|
||||||
#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 492
|
#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 492
|
||||||
#define VAR_IPSECMOD_ENABLED 493
|
#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 493
|
||||||
#define VAR_IPSECMOD_HOOK 494
|
#define VAR_IPSECMOD_ENABLED 494
|
||||||
#define VAR_IPSECMOD_IGNORE_BOGUS 495
|
#define VAR_IPSECMOD_HOOK 495
|
||||||
#define VAR_IPSECMOD_MAX_TTL 496
|
#define VAR_IPSECMOD_IGNORE_BOGUS 496
|
||||||
#define VAR_IPSECMOD_WHITELIST 497
|
#define VAR_IPSECMOD_MAX_TTL 497
|
||||||
#define VAR_IPSECMOD_STRICT 498
|
#define VAR_IPSECMOD_WHITELIST 498
|
||||||
#define VAR_CACHEDB 499
|
#define VAR_IPSECMOD_STRICT 499
|
||||||
#define VAR_CACHEDB_BACKEND 500
|
#define VAR_CACHEDB 500
|
||||||
#define VAR_CACHEDB_SECRETSEED 501
|
#define VAR_CACHEDB_BACKEND 501
|
||||||
#define VAR_CACHEDB_REDISHOST 502
|
#define VAR_CACHEDB_SECRETSEED 502
|
||||||
#define VAR_CACHEDB_REDISPORT 503
|
#define VAR_CACHEDB_REDISHOST 503
|
||||||
#define VAR_CACHEDB_REDISTIMEOUT 504
|
#define VAR_CACHEDB_REDISPORT 504
|
||||||
#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 505
|
#define VAR_CACHEDB_REDISTIMEOUT 505
|
||||||
#define VAR_FOR_UPSTREAM 506
|
#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 506
|
||||||
#define VAR_AUTH_ZONE 507
|
#define VAR_FOR_UPSTREAM 507
|
||||||
#define VAR_ZONEFILE 508
|
#define VAR_AUTH_ZONE 508
|
||||||
#define VAR_MASTER 509
|
#define VAR_ZONEFILE 509
|
||||||
#define VAR_URL 510
|
#define VAR_MASTER 510
|
||||||
#define VAR_FOR_DOWNSTREAM 511
|
#define VAR_URL 511
|
||||||
#define VAR_FALLBACK_ENABLED 512
|
#define VAR_FOR_DOWNSTREAM 512
|
||||||
#define VAR_TLS_ADDITIONAL_PORT 513
|
#define VAR_FALLBACK_ENABLED 513
|
||||||
#define VAR_LOW_RTT 514
|
#define VAR_TLS_ADDITIONAL_PORT 514
|
||||||
#define VAR_LOW_RTT_PERMIL 515
|
#define VAR_LOW_RTT 515
|
||||||
#define VAR_FAST_SERVER_PERMIL 516
|
#define VAR_LOW_RTT_PERMIL 516
|
||||||
#define VAR_FAST_SERVER_NUM 517
|
#define VAR_FAST_SERVER_PERMIL 517
|
||||||
#define VAR_ALLOW_NOTIFY 518
|
#define VAR_FAST_SERVER_NUM 518
|
||||||
#define VAR_TLS_WIN_CERT 519
|
#define VAR_ALLOW_NOTIFY 519
|
||||||
#define VAR_TCP_CONNECTION_LIMIT 520
|
#define VAR_TLS_WIN_CERT 520
|
||||||
#define VAR_FORWARD_NO_CACHE 521
|
#define VAR_TCP_CONNECTION_LIMIT 521
|
||||||
#define VAR_STUB_NO_CACHE 522
|
#define VAR_FORWARD_NO_CACHE 522
|
||||||
#define VAR_LOG_SERVFAIL 523
|
#define VAR_STUB_NO_CACHE 523
|
||||||
#define VAR_DENY_ANY 524
|
#define VAR_LOG_SERVFAIL 524
|
||||||
#define VAR_UNKNOWN_SERVER_TIME_LIMIT 525
|
#define VAR_DENY_ANY 525
|
||||||
#define VAR_LOG_TAG_QUERYREPLY 526
|
#define VAR_UNKNOWN_SERVER_TIME_LIMIT 526
|
||||||
#define VAR_STREAM_WAIT_SIZE 527
|
#define VAR_LOG_TAG_QUERYREPLY 527
|
||||||
#define VAR_TLS_CIPHERS 528
|
#define VAR_STREAM_WAIT_SIZE 528
|
||||||
#define VAR_TLS_CIPHERSUITES 529
|
#define VAR_TLS_CIPHERS 529
|
||||||
#define VAR_IPSET 530
|
#define VAR_TLS_CIPHERSUITES 530
|
||||||
#define VAR_IPSET_NAME_V4 531
|
#define VAR_IPSET 531
|
||||||
#define VAR_IPSET_NAME_V6 532
|
#define VAR_IPSET_NAME_V4 532
|
||||||
#define VAR_TLS_SESSION_TICKET_KEYS 533
|
#define VAR_IPSET_NAME_V6 533
|
||||||
#define VAR_RPZ 534
|
#define VAR_TLS_SESSION_TICKET_KEYS 534
|
||||||
#define VAR_TAGS 535
|
#define VAR_RPZ 535
|
||||||
#define VAR_RPZ_ACTION_OVERRIDE 536
|
#define VAR_TAGS 536
|
||||||
#define VAR_RPZ_CNAME_OVERRIDE 537
|
#define VAR_RPZ_ACTION_OVERRIDE 537
|
||||||
#define VAR_RPZ_LOG 538
|
#define VAR_RPZ_CNAME_OVERRIDE 538
|
||||||
#define VAR_RPZ_LOG_NAME 539
|
#define VAR_RPZ_LOG 539
|
||||||
|
#define VAR_RPZ_LOG_NAME 540
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Value type. */
|
|
||||||
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
|
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
|
||||||
union YYSTYPE
|
typedef union YYSTYPE
|
||||||
{
|
|
||||||
#line 66 "./util/configparser.y"
|
#line 66 "./util/configparser.y"
|
||||||
|
{
|
||||||
char* str;
|
char* str;
|
||||||
|
}
|
||||||
#line 629 "util/configparser.h"
|
/* Line 1529 of yacc.c. */
|
||||||
|
#line 623 "util/configparser.h"
|
||||||
};
|
YYSTYPE;
|
||||||
typedef union YYSTYPE YYSTYPE;
|
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
|
||||||
# define YYSTYPE_IS_TRIVIAL 1
|
|
||||||
# define YYSTYPE_IS_DECLARED 1
|
# define YYSTYPE_IS_DECLARED 1
|
||||||
|
# define YYSTYPE_IS_TRIVIAL 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
extern YYSTYPE yylval;
|
extern YYSTYPE yylval;
|
||||||
|
|
||||||
int yyparse (void);
|
|
||||||
|
|
||||||
#endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */
|
|
||||||
|
|
|
||||||
|
|
@ -129,6 +129,7 @@ extern struct config_parser_state* cfg_parser;
|
||||||
%token VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES
|
%token VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES
|
||||||
%token VAR_RESPONSE_IP_TAG VAR_RESPONSE_IP VAR_RESPONSE_IP_DATA
|
%token VAR_RESPONSE_IP_TAG VAR_RESPONSE_IP VAR_RESPONSE_IP_DATA
|
||||||
%token VAR_HARDEN_ALGO_DOWNGRADE VAR_IP_TRANSPARENT
|
%token VAR_HARDEN_ALGO_DOWNGRADE VAR_IP_TRANSPARENT
|
||||||
|
%token VAR_IP_DSCP
|
||||||
%token VAR_DISABLE_DNSSEC_LAME_CHECK
|
%token VAR_DISABLE_DNSSEC_LAME_CHECK
|
||||||
%token VAR_IP_RATELIMIT VAR_IP_RATELIMIT_SLABS VAR_IP_RATELIMIT_SIZE
|
%token VAR_IP_RATELIMIT VAR_IP_RATELIMIT_SLABS VAR_IP_RATELIMIT_SIZE
|
||||||
%token VAR_RATELIMIT VAR_RATELIMIT_SLABS VAR_RATELIMIT_SIZE
|
%token VAR_RATELIMIT VAR_RATELIMIT_SLABS VAR_RATELIMIT_SIZE
|
||||||
|
|
@ -241,6 +242,7 @@ content_server: server_num_threads | server_verbosity | server_port |
|
||||||
server_dns64_prefix | server_dns64_synthall | server_dns64_ignore_aaaa |
|
server_dns64_prefix | server_dns64_synthall | server_dns64_ignore_aaaa |
|
||||||
server_infra_cache_min_rtt | server_harden_algo_downgrade |
|
server_infra_cache_min_rtt | server_harden_algo_downgrade |
|
||||||
server_ip_transparent | server_ip_ratelimit | server_ratelimit |
|
server_ip_transparent | server_ip_ratelimit | server_ratelimit |
|
||||||
|
server_ip_dscp |
|
||||||
server_ip_ratelimit_slabs | server_ratelimit_slabs |
|
server_ip_ratelimit_slabs | server_ratelimit_slabs |
|
||||||
server_ip_ratelimit_size | server_ratelimit_size |
|
server_ip_ratelimit_size | server_ratelimit_size |
|
||||||
server_ratelimit_for_domain |
|
server_ratelimit_for_domain |
|
||||||
|
|
@ -1258,6 +1260,20 @@ server_ip_freebind: VAR_IP_FREEBIND STRING_ARG
|
||||||
free($2);
|
free($2);
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
server_ip_dscp: VAR_IP_DSCP STRING_ARG
|
||||||
|
{
|
||||||
|
OUTYY(("P(server_ip_dscp:%s)\n", $2));
|
||||||
|
if(atoi($2) == 0 && strcmp($2, "0") != 0)
|
||||||
|
yyerror("number expected");
|
||||||
|
else if (atoi($2) > 63)
|
||||||
|
yyerror("value too large (max 63)");
|
||||||
|
else if (atoi($2) < 0)
|
||||||
|
yyerror("value too small (min 0)");
|
||||||
|
else
|
||||||
|
cfg_parser->cfg->ip_dscp = atoi($2);
|
||||||
|
free($2);
|
||||||
|
}
|
||||||
|
;
|
||||||
server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG
|
server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG
|
||||||
{
|
{
|
||||||
OUTYY(("P(server_stream_wait_size:%s)\n", $2));
|
OUTYY(("P(server_stream_wait_size:%s)\n", $2));
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue