Lines Matching +full:2 +full:-

2  * configparser.y -- yacc grammar for unbound configuration files
4 * Copyright (c) 2001-2006, NLnet Labs. All rights reserved.
232 OUTYY(("\nP(force-toplevel)\n"));
233 cfg_parser->started_toplevel = 0;
240 cfg_parser->started_toplevel = 1;
365 if(cfg_parser->cfg->stubs &&
366 !cfg_parser->cfg->stubs->name)
367 yyerror("stub-zone without name");
374 cfg_parser->started_toplevel = 1;
377 s->next = cfg_parser->cfg->stubs;
378 cfg_parser->cfg->stubs = s;
392 if(cfg_parser->cfg->forwards &&
393 !cfg_parser->cfg->forwards->name)
394 yyerror("forward-zone without name");
401 cfg_parser->started_toplevel = 1;
404 s->next = cfg_parser->cfg->forwards;
405 cfg_parser->cfg->forwards = s;
419 if(cfg_parser->cfg->views &&
420 !cfg_parser->cfg->views->name)
428 cfg_parser->started_toplevel = 1;
431 s->next = cfg_parser->cfg->views;
432 cfg_parser->cfg->views = s;
447 cfg_parser->started_toplevel = 1;
450 s->next = cfg_parser->cfg->auths;
451 cfg_parser->cfg->auths = s;
453 s->for_downstream = 1;
454 s->for_upstream = 1;
455 s->fallback_enabled = 0;
456 s->zonemd_check = 0;
457 s->zonemd_reject_absence = 0;
458 s->isrpz = 0;
475 OUTYY(("P(server_local_zone_tag:%s)\n", $2));
476 bitlist = config_parse_taglist(cfg_parser->cfg, $2,
478 free($2);
480 yyerror("could not parse tags, (define-tag them first)");
483 cfg_parser->cfg->auths->rpz_taglist = bitlist;
484 cfg_parser->cfg->auths->rpz_taglistlen = len;
492 OUTYY(("P(rpz_action_override:%s)\n", $2));
493 if(strcmp($2, "nxdomain")!=0 && strcmp($2, "nodata")!=0 &&
494 strcmp($2, "passthru")!=0 && strcmp($2, "drop")!=0 &&
495 strcmp($2, "cname")!=0 && strcmp($2, "disabled")!=0) {
496 yyerror("rpz-action-override action: expected nxdomain, "
498 free($2);
499 cfg_parser->cfg->auths->rpz_action_override = NULL;
502 cfg_parser->cfg->auths->rpz_action_override = $2;
509 OUTYY(("P(rpz_cname_override:%s)\n", $2));
510 free(cfg_parser->cfg->auths->rpz_cname);
511 cfg_parser->cfg->auths->rpz_cname = $2;
517 OUTYY(("P(rpz_log:%s)\n", $2));
518 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
520 else cfg_parser->cfg->auths->rpz_log = (strcmp($2, "yes")==0);
521 free($2);
527 OUTYY(("P(rpz_log_name:%s)\n", $2));
528 free(cfg_parser->cfg->auths->rpz_log_name);
529 cfg_parser->cfg->auths->rpz_log_name = $2;
534 OUTYY(("P(rpz_signal_nxdomain_ra:%s)\n", $2));
535 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
537 else cfg_parser->cfg->auths->rpz_signal_nxdomain_ra = (strcmp($2, "yes")==0);
538 free($2);
546 cfg_parser->started_toplevel = 1;
549 s->next = cfg_parser->cfg->auths;
550 cfg_parser->cfg->auths = s;
552 s->for_downstream = 0;
553 s->for_upstream = 0;
554 s->fallback_enabled = 0;
555 s->isrpz = 1;
569 OUTYY(("P(server_num_threads:%s)\n", $2));
570 if(atoi($2) == 0 && strcmp($2, "0") != 0)
572 else cfg_parser->cfg->num_threads = atoi($2);
573 free($2);
578 OUTYY(("P(server_verbosity:%s)\n", $2));
579 if(atoi($2) == 0 && strcmp($2, "0") != 0)
581 else cfg_parser->cfg->verbosity = atoi($2);
582 free($2);
587 OUTYY(("P(server_statistics_interval:%s)\n", $2));
588 if(strcmp($2, "") == 0 || strcmp($2, "0") == 0)
589 cfg_parser->cfg->stat_interval = 0;
590 else if(atoi($2) == 0)
592 else cfg_parser->cfg->stat_interval = atoi($2);
593 free($2);
598 OUTYY(("P(server_statistics_cumulative:%s)\n", $2));
599 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
601 else cfg_parser->cfg->stat_cumulative = (strcmp($2, "yes")==0);
602 free($2);
607 OUTYY(("P(server_extended_statistics:%s)\n", $2));
608 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
610 else cfg_parser->cfg->stat_extended = (strcmp($2, "yes")==0);
611 free($2);
616 OUTYY(("P(server_statistics_inhibit_zero:%s)\n", $2));
617 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
619 else cfg_parser->cfg->stat_inhibit_zero = (strcmp($2, "yes")==0);
620 free($2);
625 OUTYY(("P(server_shm_enable:%s)\n", $2));
626 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
628 else cfg_parser->cfg->shm_enable = (strcmp($2, "yes")==0);
629 free($2);
634 OUTYY(("P(server_shm_key:%s)\n", $2));
635 if(strcmp($2, "") == 0 || strcmp($2, "0") == 0)
636 cfg_parser->cfg->shm_key = 0;
637 else if(atoi($2) == 0)
639 else cfg_parser->cfg->shm_key = atoi($2);
640 free($2);
645 OUTYY(("P(server_port:%s)\n", $2));
646 if(atoi($2) == 0)
648 else cfg_parser->cfg->port = atoi($2);
649 free($2);
655 OUTYY(("P(server_send_client_subnet:%s)\n", $2));
656 if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, $2))
657 fatal_exit("out of memory adding client-subnet");
660 free($2);
667 OUTYY(("P(server_client_subnet_zone:%s)\n", $2));
668 if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet_zone,
669 $2))
670 fatal_exit("out of memory adding client-subnet-zone");
673 free($2);
681 OUTYY(("P(server_client_subnet_always_forward:%s)\n", $2));
682 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
685 cfg_parser->cfg->client_subnet_always_forward =
686 (strcmp($2, "yes")==0);
690 free($2);
696 OUTYY(("P(client_subnet_opcode:%s)\n", $2));
701 free($2);
707 OUTYY(("P(max_client_subnet_ipv4:%s)\n", $2));
708 if(atoi($2) == 0 && strcmp($2, "0") != 0)
710 else if (atoi($2) > 32)
711 cfg_parser->cfg->max_client_subnet_ipv4 = 32;
712 else if (atoi($2) < 0)
713 cfg_parser->cfg->max_client_subnet_ipv4 = 0;
714 else cfg_parser->cfg->max_client_subnet_ipv4 = (uint8_t)atoi($2);
718 free($2);
724 OUTYY(("P(max_client_subnet_ipv6:%s)\n", $2));
725 if(atoi($2) == 0 && strcmp($2, "0") != 0)
727 else if (atoi($2) > 128)
728 cfg_parser->cfg->max_client_subnet_ipv6 = 128;
729 else if (atoi($2) < 0)
730 cfg_parser->cfg->max_client_subnet_ipv6 = 0;
731 else cfg_parser->cfg->max_client_subnet_ipv6 = (uint8_t)atoi($2);
735 free($2);
741 OUTYY(("P(min_client_subnet_ipv4:%s)\n", $2));
742 if(atoi($2) == 0 && strcmp($2, "0") != 0)
744 else if (atoi($2) > 32)
745 cfg_parser->cfg->min_client_subnet_ipv4 = 32;
746 else if (atoi($2) < 0)
747 cfg_parser->cfg->min_client_subnet_ipv4 = 0;
748 else cfg_parser->cfg->min_client_subnet_ipv4 = (uint8_t)atoi($2);
752 free($2);
758 OUTYY(("P(min_client_subnet_ipv6:%s)\n", $2));
759 if(atoi($2) == 0 && strcmp($2, "0") != 0)
761 else if (atoi($2) > 128)
762 cfg_parser->cfg->min_client_subnet_ipv6 = 128;
763 else if (atoi($2) < 0)
764 cfg_parser->cfg->min_client_subnet_ipv6 = 0;
765 else cfg_parser->cfg->min_client_subnet_ipv6 = (uint8_t)atoi($2);
769 free($2);
775 OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", $2));
776 if(atoi($2) == 0 && strcmp($2, "0") != 0)
778 else if (atoi($2) < 0)
779 cfg_parser->cfg->max_ecs_tree_size_ipv4 = 0;
780 else cfg_parser->cfg->max_ecs_tree_size_ipv4 = (uint32_t)atoi($2);
784 free($2);
790 OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", $2));
791 if(atoi($2) == 0 && strcmp($2, "0") != 0)
793 else if (atoi($2) < 0)
794 cfg_parser->cfg->max_ecs_tree_size_ipv6 = 0;
795 else cfg_parser->cfg->max_ecs_tree_size_ipv6 = (uint32_t)atoi($2);
799 free($2);
804 OUTYY(("P(server_interface:%s)\n", $2));
805 if(cfg_parser->cfg->num_ifs == 0)
806 cfg_parser->cfg->ifs = calloc(1, sizeof(char*));
807 else cfg_parser->cfg->ifs = realloc(cfg_parser->cfg->ifs,
808 (cfg_parser->cfg->num_ifs+1)*sizeof(char*));
809 if(!cfg_parser->cfg->ifs)
812 cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = $2;
817 OUTYY(("P(server_outgoing_interface:%s)\n", $2));
818 if(cfg_parser->cfg->num_out_ifs == 0)
819 cfg_parser->cfg->out_ifs = calloc(1, sizeof(char*));
820 else cfg_parser->cfg->out_ifs = realloc(
821 cfg_parser->cfg->out_ifs,
822 (cfg_parser->cfg->num_out_ifs+1)*sizeof(char*));
823 if(!cfg_parser->cfg->out_ifs)
826 cfg_parser->cfg->out_ifs[
827 cfg_parser->cfg->num_out_ifs++] = $2;
832 OUTYY(("P(server_outgoing_range:%s)\n", $2));
833 if(atoi($2) == 0)
835 else cfg_parser->cfg->outgoing_num_ports = atoi($2);
836 free($2);
841 OUTYY(("P(server_outgoing_port_permit:%s)\n", $2));
842 if(!cfg_mark_ports($2, 1,
843 cfg_parser->cfg->outgoing_avail_ports, 65536))
844 yyerror("port number or range (\"low-high\") expected");
845 free($2);
850 OUTYY(("P(server_outgoing_port_avoid:%s)\n", $2));
851 if(!cfg_mark_ports($2, 0,
852 cfg_parser->cfg->outgoing_avail_ports, 65536))
853 yyerror("port number or range (\"low-high\") expected");
854 free($2);
859 OUTYY(("P(server_outgoing_num_tcp:%s)\n", $2));
860 if(atoi($2) == 0 && strcmp($2, "0") != 0)
862 else cfg_parser->cfg->outgoing_num_tcp = atoi($2);
863 free($2);
868 OUTYY(("P(server_incoming_num_tcp:%s)\n", $2));
869 if(atoi($2) == 0 && strcmp($2, "0") != 0)
871 else cfg_parser->cfg->incoming_num_tcp = atoi($2);
872 free($2);
877 OUTYY(("P(server_interface_automatic:%s)\n", $2));
878 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
880 else cfg_parser->cfg->if_automatic = (strcmp($2, "yes")==0);
881 free($2);
886 OUTYY(("P(server_interface_automatic_ports:%s)\n", $2));
887 free(cfg_parser->cfg->if_automatic_ports);
888 cfg_parser->cfg->if_automatic_ports = $2;
893 OUTYY(("P(server_do_ip4:%s)\n", $2));
894 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
896 else cfg_parser->cfg->do_ip4 = (strcmp($2, "yes")==0);
897 free($2);
902 OUTYY(("P(server_do_ip6:%s)\n", $2));
903 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
905 else cfg_parser->cfg->do_ip6 = (strcmp($2, "yes")==0);
906 free($2);
911 OUTYY(("P(server_do_nat64:%s)\n", $2));
912 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
914 else cfg_parser->cfg->do_nat64 = (strcmp($2, "yes")==0);
915 free($2);
920 OUTYY(("P(server_do_udp:%s)\n", $2));
921 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
923 else cfg_parser->cfg->do_udp = (strcmp($2, "yes")==0);
924 free($2);
929 OUTYY(("P(server_do_tcp:%s)\n", $2));
930 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
932 else cfg_parser->cfg->do_tcp = (strcmp($2, "yes")==0);
933 free($2);
938 OUTYY(("P(server_prefer_ip4:%s)\n", $2));
939 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
941 else cfg_parser->cfg->prefer_ip4 = (strcmp($2, "yes")==0);
942 free($2);
947 OUTYY(("P(server_prefer_ip6:%s)\n", $2));
948 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
950 else cfg_parser->cfg->prefer_ip6 = (strcmp($2, "yes")==0);
951 free($2);
956 OUTYY(("P(server_tcp_mss:%s)\n", $2));
957 if(atoi($2) == 0 && strcmp($2, "0") != 0)
959 else cfg_parser->cfg->tcp_mss = atoi($2);
960 free($2);
965 OUTYY(("P(server_outgoing_tcp_mss:%s)\n", $2));
966 if(atoi($2) == 0 && strcmp($2, "0") != 0)
968 else cfg_parser->cfg->outgoing_tcp_mss = atoi($2);
969 free($2);
974 OUTYY(("P(server_tcp_idle_timeout:%s)\n", $2));
975 if(atoi($2) == 0 && strcmp($2, "0") != 0)
977 else if (atoi($2) > 120000)
978 cfg_parser->cfg->tcp_idle_timeout = 120000;
979 else if (atoi($2) < 1)
980 cfg_parser->cfg->tcp_idle_timeout = 1;
981 else cfg_parser->cfg->tcp_idle_timeout = atoi($2);
982 free($2);
987 OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", $2));
988 if(atoi($2) == 0 && strcmp($2, "0") != 0)
990 else if (atoi($2) < 1)
991 cfg_parser->cfg->max_reuse_tcp_queries = 0;
992 else cfg_parser->cfg->max_reuse_tcp_queries = atoi($2);
993 free($2);
998 OUTYY(("P(server_tcp_reuse_timeout:%s)\n", $2));
999 if(atoi($2) == 0 && strcmp($2, "0") != 0)
1001 else if (atoi($2) < 1)
1002 cfg_parser->cfg->tcp_reuse_timeout = 0;
1003 else cfg_parser->cfg->tcp_reuse_timeout = atoi($2);
1004 free($2);
1009 OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", $2));
1010 if(atoi($2) == 0 && strcmp($2, "0") != 0)
1012 else if (atoi($2) < 1)
1013 cfg_parser->cfg->tcp_auth_query_timeout = 0;
1014 else cfg_parser->cfg->tcp_auth_query_timeout = atoi($2);
1015 free($2);
1020 OUTYY(("P(server_tcp_keepalive:%s)\n", $2));
1021 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1023 else cfg_parser->cfg->do_tcp_keepalive = (strcmp($2, "yes")==0);
1024 free($2);
1029 OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", $2));
1030 if(atoi($2) == 0 && strcmp($2, "0") != 0)
1032 else if (atoi($2) > 6553500)
1033 cfg_parser->cfg->tcp_keepalive_timeout = 6553500;
1034 else if (atoi($2) < 1)
1035 cfg_parser->cfg->tcp_keepalive_timeout = 0;
1036 else cfg_parser->cfg->tcp_keepalive_timeout = atoi($2);
1037 free($2);
1042 OUTYY(("P(server_sock_queue_timeout:%s)\n", $2));
1043 if(atoi($2) == 0 && strcmp($2, "0") != 0)
1045 else if (atoi($2) > 6553500)
1046 cfg_parser->cfg->sock_queue_timeout = 6553500;
1047 else if (atoi($2) < 1)
1048 cfg_parser->cfg->sock_queue_timeout = 0;
1049 else cfg_parser->cfg->sock_queue_timeout = atoi($2);
1050 free($2);
1055 OUTYY(("P(server_tcp_upstream:%s)\n", $2));
1056 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1058 else cfg_parser->cfg->tcp_upstream = (strcmp($2, "yes")==0);
1059 free($2);
1064 OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", $2));
1065 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1067 else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp($2, "yes")==0);
1068 free($2);
1073 OUTYY(("P(server_ssl_upstream:%s)\n", $2));
1074 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1076 else cfg_parser->cfg->ssl_upstream = (strcmp($2, "yes")==0);
1077 free($2);
1082 OUTYY(("P(server_ssl_service_key:%s)\n", $2));
1083 free(cfg_parser->cfg->ssl_service_key);
1084 cfg_parser->cfg->ssl_service_key = $2;
1089 OUTYY(("P(server_ssl_service_pem:%s)\n", $2));
1090 free(cfg_parser->cfg->ssl_service_pem);
1091 cfg_parser->cfg->ssl_service_pem = $2;
1096 OUTYY(("P(server_ssl_port:%s)\n", $2));
1097 if(atoi($2) == 0)
1099 else cfg_parser->cfg->ssl_port = atoi($2);
1100 free($2);
1105 OUTYY(("P(server_tls_cert_bundle:%s)\n", $2));
1106 free(cfg_parser->cfg->tls_cert_bundle);
1107 cfg_parser->cfg->tls_cert_bundle = $2;
1112 OUTYY(("P(server_tls_win_cert:%s)\n", $2));
1113 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1115 else cfg_parser->cfg->tls_win_cert = (strcmp($2, "yes")==0);
1116 free($2);
1121 OUTYY(("P(server_tls_additional_port:%s)\n", $2));
1122 if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port,
1123 $2))
1129 OUTYY(("P(server_tls_ciphers:%s)\n", $2));
1130 free(cfg_parser->cfg->tls_ciphers);
1131 cfg_parser->cfg->tls_ciphers = $2;
1136 OUTYY(("P(server_tls_ciphersuites:%s)\n", $2));
1137 free(cfg_parser->cfg->tls_ciphersuites);
1138 cfg_parser->cfg->tls_ciphersuites = $2;
1143 OUTYY(("P(server_tls_session_ticket_keys:%s)\n", $2));
1144 if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys,
1145 $2))
1151 OUTYY(("P(server_tls_use_sni:%s)\n", $2));
1152 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1154 else cfg_parser->cfg->tls_use_sni = (strcmp($2, "yes")==0);
1155 free($2);
1160 OUTYY(("P(server_https_port:%s)\n", $2));
1161 if(atoi($2) == 0)
1163 else cfg_parser->cfg->https_port = atoi($2);
1164 free($2);
1168 OUTYY(("P(server_http_endpoint:%s)\n", $2));
1169 free(cfg_parser->cfg->http_endpoint);
1170 if($2 && $2[0] != '/') {
1171 cfg_parser->cfg->http_endpoint = malloc(strlen($2)+2);
1172 if(cfg_parser->cfg->http_endpoint) {
1173 cfg_parser->cfg->http_endpoint[0] = '/';
1174 memmove(cfg_parser->cfg->http_endpoint+1, $2,
1175 strlen($2)+1);
1179 free($2);
1181 cfg_parser->cfg->http_endpoint = $2;
1186 OUTYY(("P(server_http_max_streams:%s)\n", $2));
1187 if(atoi($2) == 0 && strcmp($2, "0") != 0)
1189 else cfg_parser->cfg->http_max_streams = atoi($2);
1190 free($2);
1194 OUTYY(("P(server_http_query_buffer_size:%s)\n", $2));
1195 if(!cfg_parse_memsize($2,
1196 &cfg_parser->cfg->http_query_buffer_size))
1198 free($2);
1202 OUTYY(("P(server_http_response_buffer_size:%s)\n", $2));
1203 if(!cfg_parse_memsize($2,
1204 &cfg_parser->cfg->http_response_buffer_size))
1206 free($2);
1210 OUTYY(("P(server_http_nodelay:%s)\n", $2));
1211 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1213 else cfg_parser->cfg->http_nodelay = (strcmp($2, "yes")==0);
1214 free($2);
1218 OUTYY(("P(server_http_notls_downstream:%s)\n", $2));
1219 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1221 else cfg_parser->cfg->http_notls_downstream = (strcmp($2, "yes")==0);
1222 free($2);
1226 OUTYY(("P(server_quic_port:%s)\n", $2));
1230 "over QUIC.", cfg_parser->filename, cfg_parser->line);
1232 if(atoi($2) == 0)
1234 else cfg_parser->cfg->quic_port = atoi($2);
1235 free($2);
1239 OUTYY(("P(server_quic_size:%s)\n", $2));
1240 if(!cfg_parse_memsize($2, &cfg_parser->cfg->quic_size))
1242 free($2);
1246 OUTYY(("P(server_use_systemd:%s)\n", $2));
1247 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1249 else cfg_parser->cfg->use_systemd = (strcmp($2, "yes")==0);
1250 free($2);
1255 OUTYY(("P(server_do_daemonize:%s)\n", $2));
1256 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1258 else cfg_parser->cfg->do_daemonize = (strcmp($2, "yes")==0);
1259 free($2);
1264 OUTYY(("P(server_use_syslog:%s)\n", $2));
1265 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1267 else cfg_parser->cfg->use_syslog = (strcmp($2, "yes")==0);
1269 if(strcmp($2, "yes") == 0)
1273 free($2);
1278 OUTYY(("P(server_log_time_ascii:%s)\n", $2));
1279 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1281 else cfg_parser->cfg->log_time_ascii = (strcmp($2, "yes")==0);
1282 free($2);
1287 OUTYY(("P(server_log_time_iso:%s)\n", $2));
1288 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1290 else cfg_parser->cfg->log_time_iso = (strcmp($2, "yes")==0);
1291 free($2);
1296 OUTYY(("P(server_log_queries:%s)\n", $2));
1297 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1299 else cfg_parser->cfg->log_queries = (strcmp($2, "yes")==0);
1300 free($2);
1305 OUTYY(("P(server_log_replies:%s)\n", $2));
1306 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1308 else cfg_parser->cfg->log_replies = (strcmp($2, "yes")==0);
1309 free($2);
1314 OUTYY(("P(server_log_tag_queryreply:%s)\n", $2));
1315 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1317 else cfg_parser->cfg->log_tag_queryreply = (strcmp($2, "yes")==0);
1318 free($2);
1323 OUTYY(("P(server_log_servfail:%s)\n", $2));
1324 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1326 else cfg_parser->cfg->log_servfail = (strcmp($2, "yes")==0);
1327 free($2);
1332 OUTYY(("P(server_log_destaddr:%s)\n", $2));
1333 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1335 else cfg_parser->cfg->log_destaddr = (strcmp($2, "yes")==0);
1336 free($2);
1341 OUTYY(("P(server_log_local_actions:%s)\n", $2));
1342 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1344 else cfg_parser->cfg->log_local_actions = (strcmp($2, "yes")==0);
1345 free($2);
1350 OUTYY(("P(server_chroot:%s)\n", $2));
1351 free(cfg_parser->cfg->chrootdir);
1352 cfg_parser->cfg->chrootdir = $2;
1357 OUTYY(("P(server_username:%s)\n", $2));
1358 free(cfg_parser->cfg->username);
1359 cfg_parser->cfg->username = $2;
1364 OUTYY(("P(server_directory:%s)\n", $2));
1365 free(cfg_parser->cfg->directory);
1366 cfg_parser->cfg->directory = $2;
1368 if($2[0]) {
1371 w_config_adjust_directory(cfg_parser->cfg);
1373 d = cfg_parser->cfg->directory;
1376 if(cfg_parser->chroot && cfg_parser->chroot[0] &&
1377 strncmp(d, cfg_parser->chroot, strlen(
1378 cfg_parser->chroot)) == 0)
1379 d += strlen(cfg_parser->chroot);
1390 OUTYY(("P(server_logfile:%s)\n", $2));
1391 free(cfg_parser->cfg->logfile);
1392 cfg_parser->cfg->logfile = $2;
1393 cfg_parser->cfg->use_syslog = 0;
1398 OUTYY(("P(server_pidfile:%s)\n", $2));
1399 free(cfg_parser->cfg->pidfile);
1400 cfg_parser->cfg->pidfile = $2;
1405 OUTYY(("P(server_root_hints:%s)\n", $2));
1406 if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, $2))
1412 OUTYY(("P(server_dlv_anchor_file:%s)\n", $2));
1413 log_warn("option dlv-anchor-file ignored: DLV is decommissioned");
1414 free($2);
1419 OUTYY(("P(server_dlv_anchor:%s)\n", $2));
1420 log_warn("option dlv-anchor ignored: DLV is decommissioned");
1421 free($2);
1426 OUTYY(("P(server_auto_trust_anchor_file:%s)\n", $2));
1427 if(!cfg_strlist_insert(&cfg_parser->cfg->
1428 auto_trust_anchor_file_list, $2))
1434 OUTYY(("P(server_trust_anchor_file:%s)\n", $2));
1435 if(!cfg_strlist_insert(&cfg_parser->cfg->
1436 trust_anchor_file_list, $2))
1442 OUTYY(("P(server_trusted_keys_file:%s)\n", $2));
1443 if(!cfg_strlist_insert(&cfg_parser->cfg->
1444 trusted_keys_file_list, $2))
1450 OUTYY(("P(server_trust_anchor:%s)\n", $2));
1451 if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, $2))
1457 OUTYY(("P(server_trust_anchor_signaling:%s)\n", $2));
1458 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1461 cfg_parser->cfg->trust_anchor_signaling =
1462 (strcmp($2, "yes")==0);
1463 free($2);
1468 OUTYY(("P(server_root_key_sentinel:%s)\n", $2));
1469 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1472 cfg_parser->cfg->root_key_sentinel =
1473 (strcmp($2, "yes")==0);
1474 free($2);
1479 OUTYY(("P(server_domain_insecure:%s)\n", $2));
1480 if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, $2))
1486 OUTYY(("P(server_hide_identity:%s)\n", $2));
1487 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1489 else cfg_parser->cfg->hide_identity = (strcmp($2, "yes")==0);
1490 free($2);
1495 OUTYY(("P(server_hide_version:%s)\n", $2));
1496 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1498 else cfg_parser->cfg->hide_version = (strcmp($2, "yes")==0);
1499 free($2);
1504 OUTYY(("P(server_hide_trustanchor:%s)\n", $2));
1505 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1507 else cfg_parser->cfg->hide_trustanchor = (strcmp($2, "yes")==0);
1508 free($2);
1513 OUTYY(("P(server_hide_user_agent:%s)\n", $2));
1514 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1516 else cfg_parser->cfg->hide_http_user_agent = (strcmp($2, "yes")==0);
1517 free($2);
1522 OUTYY(("P(server_identity:%s)\n", $2));
1523 free(cfg_parser->cfg->identity);
1524 cfg_parser->cfg->identity = $2;
1529 OUTYY(("P(server_version:%s)\n", $2));
1530 free(cfg_parser->cfg->version);
1531 cfg_parser->cfg->version = $2;
1536 OUTYY(("P(server_http_user_agent:%s)\n", $2));
1537 free(cfg_parser->cfg->http_user_agent);
1538 cfg_parser->cfg->http_user_agent = $2;
1543 OUTYY(("P(server_nsid:%s)\n", $2));
1544 free(cfg_parser->cfg->nsid_cfg_str);
1545 cfg_parser->cfg->nsid_cfg_str = $2;
1546 free(cfg_parser->cfg->nsid);
1547 cfg_parser->cfg->nsid = NULL;
1548 cfg_parser->cfg->nsid_len = 0;
1549 if (*$2 == 0)
1551 else if (!(cfg_parser->cfg->nsid = cfg_parse_nsid(
1552 $2, &cfg_parser->cfg->nsid_len)))
1559 OUTYY(("P(server_so_rcvbuf:%s)\n", $2));
1560 if(!cfg_parse_memsize($2, &cfg_parser->cfg->so_rcvbuf))
1562 free($2);
1567 OUTYY(("P(server_so_sndbuf:%s)\n", $2));
1568 if(!cfg_parse_memsize($2, &cfg_parser->cfg->so_sndbuf))
1570 free($2);
1575 OUTYY(("P(server_so_reuseport:%s)\n", $2));
1576 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1578 else cfg_parser->cfg->so_reuseport =
1579 (strcmp($2, "yes")==0);
1580 free($2);
1585 OUTYY(("P(server_ip_transparent:%s)\n", $2));
1586 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1588 else cfg_parser->cfg->ip_transparent =
1589 (strcmp($2, "yes")==0);
1590 free($2);
1595 OUTYY(("P(server_ip_freebind:%s)\n", $2));
1596 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1598 else cfg_parser->cfg->ip_freebind =
1599 (strcmp($2, "yes")==0);
1600 free($2);
1605 OUTYY(("P(server_ip_dscp:%s)\n", $2));
1606 if(atoi($2) == 0 && strcmp($2, "0") != 0)
1608 else if (atoi($2) > 63)
1610 else if (atoi($2) < 0)
1613 cfg_parser->cfg->ip_dscp = atoi($2);
1614 free($2);
1619 OUTYY(("P(server_stream_wait_size:%s)\n", $2));
1620 if(!cfg_parse_memsize($2, &cfg_parser->cfg->stream_wait_size))
1622 free($2);
1627 OUTYY(("P(server_edns_buffer_size:%s)\n", $2));
1628 if(atoi($2) == 0)
1630 else if (atoi($2) < 12)
1632 else if (atoi($2) > 65535)
1633 cfg_parser->cfg->edns_buffer_size = 65535;
1634 else cfg_parser->cfg->edns_buffer_size = atoi($2);
1635 free($2);
1640 OUTYY(("P(server_msg_buffer_size:%s)\n", $2));
1641 if(atoi($2) == 0)
1643 else if (atoi($2) < 4096)
1645 else cfg_parser->cfg->msg_buffer_size = atoi($2);
1646 free($2);
1651 OUTYY(("P(server_msg_cache_size:%s)\n", $2));
1652 if(!cfg_parse_memsize($2, &cfg_parser->cfg->msg_cache_size))
1654 free($2);
1659 OUTYY(("P(server_msg_cache_slabs:%s)\n", $2));
1660 if(atoi($2) == 0) {
1663 cfg_parser->cfg->msg_cache_slabs = atoi($2);
1664 if(!is_pow2(cfg_parser->cfg->msg_cache_slabs))
1665 yyerror("must be a power of 2");
1667 free($2);
1672 OUTYY(("P(server_num_queries_per_thread:%s)\n", $2));
1673 if(atoi($2) == 0)
1675 else cfg_parser->cfg->num_queries_per_thread = atoi($2);
1676 free($2);
1681 OUTYY(("P(server_jostle_timeout:%s)\n", $2));
1682 if(atoi($2) == 0 && strcmp($2, "0") != 0)
1684 else cfg_parser->cfg->jostle_time = atoi($2);
1685 free($2);
1690 OUTYY(("P(server_delay_close:%s)\n", $2));
1691 if(atoi($2) == 0 && strcmp($2, "0") != 0)
1693 else cfg_parser->cfg->delay_close = atoi($2);
1694 free($2);
1699 OUTYY(("P(server_udp_connect:%s)\n", $2));
1700 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1702 else cfg_parser->cfg->udp_connect = (strcmp($2, "yes")==0);
1703 free($2);
1708 OUTYY(("P(server_unblock_lan_zones:%s)\n", $2));
1709 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1711 else cfg_parser->cfg->unblock_lan_zones =
1712 (strcmp($2, "yes")==0);
1713 free($2);
1718 OUTYY(("P(server_insecure_lan_zones:%s)\n", $2));
1719 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1721 else cfg_parser->cfg->insecure_lan_zones =
1722 (strcmp($2, "yes")==0);
1723 free($2);
1728 OUTYY(("P(server_rrset_cache_size:%s)\n", $2));
1729 if(!cfg_parse_memsize($2, &cfg_parser->cfg->rrset_cache_size))
1731 free($2);
1736 OUTYY(("P(server_rrset_cache_slabs:%s)\n", $2));
1737 if(atoi($2) == 0) {
1740 cfg_parser->cfg->rrset_cache_slabs = atoi($2);
1741 if(!is_pow2(cfg_parser->cfg->rrset_cache_slabs))
1742 yyerror("must be a power of 2");
1744 free($2);
1749 OUTYY(("P(server_infra_host_ttl:%s)\n", $2));
1750 if(atoi($2) == 0 && strcmp($2, "0") != 0)
1752 else cfg_parser->cfg->host_ttl = atoi($2);
1753 free($2);
1758 OUTYY(("P(server_infra_lame_ttl:%s)\n", $2));
1759 verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option "
1760 "removed, use infra-host-ttl)", $2);
1761 free($2);
1766 OUTYY(("P(server_infra_cache_numhosts:%s)\n", $2));
1767 if(atoi($2) == 0)
1769 else cfg_parser->cfg->infra_cache_numhosts = atoi($2);
1770 free($2);
1775 OUTYY(("P(server_infra_cache_lame_size:%s)\n", $2));
1776 verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s "
1777 "(option removed, use infra-cache-numhosts)", $2);
1778 free($2);
1783 OUTYY(("P(server_infra_cache_slabs:%s)\n", $2));
1784 if(atoi($2) == 0) {
1787 cfg_parser->cfg->infra_cache_slabs = atoi($2);
1788 if(!is_pow2(cfg_parser->cfg->infra_cache_slabs))
1789 yyerror("must be a power of 2");
1791 free($2);
1796 OUTYY(("P(server_infra_cache_min_rtt:%s)\n", $2));
1797 if(atoi($2) == 0 && strcmp($2, "0") != 0)
1799 else cfg_parser->cfg->infra_cache_min_rtt = atoi($2);
1800 free($2);
1805 OUTYY(("P(server_infra_cache_max_rtt:%s)\n", $2));
1806 if(atoi($2) == 0 && strcmp($2, "0") != 0)
1808 else cfg_parser->cfg->infra_cache_max_rtt = atoi($2);
1809 free($2);
1814 OUTYY(("P(server_infra_keep_probing:%s)\n", $2));
1815 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1817 else cfg_parser->cfg->infra_keep_probing =
1818 (strcmp($2, "yes")==0);
1819 free($2);
1824 OUTYY(("P(server_target_fetch_policy:%s)\n", $2));
1825 free(cfg_parser->cfg->target_fetch_policy);
1826 cfg_parser->cfg->target_fetch_policy = $2;
1831 OUTYY(("P(server_harden_short_bufsize:%s)\n", $2));
1832 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1834 else cfg_parser->cfg->harden_short_bufsize =
1835 (strcmp($2, "yes")==0);
1836 free($2);
1841 OUTYY(("P(server_harden_large_queries:%s)\n", $2));
1842 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1844 else cfg_parser->cfg->harden_large_queries =
1845 (strcmp($2, "yes")==0);
1846 free($2);
1851 OUTYY(("P(server_harden_glue:%s)\n", $2));
1852 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1854 else cfg_parser->cfg->harden_glue =
1855 (strcmp($2, "yes")==0);
1856 free($2);
1861 OUTYY(("P(server_harden_unverified_glue:%s)\n", $2));
1862 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1864 else cfg_parser->cfg->harden_unverified_glue =
1865 (strcmp($2, "yes")==0);
1866 free($2);
1871 OUTYY(("P(server_harden_dnssec_stripped:%s)\n", $2));
1872 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1874 else cfg_parser->cfg->harden_dnssec_stripped =
1875 (strcmp($2, "yes")==0);
1876 free($2);
1881 OUTYY(("P(server_harden_below_nxdomain:%s)\n", $2));
1882 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1884 else cfg_parser->cfg->harden_below_nxdomain =
1885 (strcmp($2, "yes")==0);
1886 free($2);
1891 OUTYY(("P(server_harden_referral_path:%s)\n", $2));
1892 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1894 else cfg_parser->cfg->harden_referral_path =
1895 (strcmp($2, "yes")==0);
1896 free($2);
1901 OUTYY(("P(server_harden_algo_downgrade:%s)\n", $2));
1902 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1904 else cfg_parser->cfg->harden_algo_downgrade =
1905 (strcmp($2, "yes")==0);
1906 free($2);
1911 OUTYY(("P(server_harden_unknown_additional:%s)\n", $2));
1912 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1914 else cfg_parser->cfg->harden_unknown_additional =
1915 (strcmp($2, "yes")==0);
1916 free($2);
1921 OUTYY(("P(server_use_caps_for_id:%s)\n", $2));
1922 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1924 else cfg_parser->cfg->use_caps_bits_for_id =
1925 (strcmp($2, "yes")==0);
1926 free($2);
1931 OUTYY(("P(server_caps_whitelist:%s)\n", $2));
1932 if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, $2))
1938 OUTYY(("P(server_private_address:%s)\n", $2));
1939 if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, $2))
1945 OUTYY(("P(server_private_domain:%s)\n", $2));
1946 if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, $2))
1952 OUTYY(("P(server_prefetch:%s)\n", $2));
1953 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1955 else cfg_parser->cfg->prefetch = (strcmp($2, "yes")==0);
1956 free($2);
1961 OUTYY(("P(server_prefetch_key:%s)\n", $2));
1962 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1964 else cfg_parser->cfg->prefetch_key = (strcmp($2, "yes")==0);
1965 free($2);
1970 OUTYY(("P(server_deny_any:%s)\n", $2));
1971 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1973 else cfg_parser->cfg->deny_any = (strcmp($2, "yes")==0);
1974 free($2);
1979 OUTYY(("P(server_unwanted_reply_threshold:%s)\n", $2));
1980 if(atoi($2) == 0 && strcmp($2, "0") != 0)
1982 else cfg_parser->cfg->unwanted_threshold = atoi($2);
1983 free($2);
1988 OUTYY(("P(server_do_not_query_address:%s)\n", $2));
1989 if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, $2))
1995 OUTYY(("P(server_do_not_query_localhost:%s)\n", $2));
1996 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1998 else cfg_parser->cfg->donotquery_localhost =
1999 (strcmp($2, "yes")==0);
2000 free($2);
2005 OUTYY(("P(server_access_control:%s %s)\n", $2, $3));
2007 if(!cfg_str2list_insert(&cfg_parser->cfg->acls, $2, $3))
2013 OUTYY(("P(server_interface_action:%s %s)\n", $2, $3));
2016 &cfg_parser->cfg->interface_actions, $2, $3))
2022 OUTYY(("P(server_module_conf:%s)\n", $2));
2023 free(cfg_parser->cfg->module_conf);
2024 cfg_parser->cfg->module_conf = $2;
2029 OUTYY(("P(server_val_override_date:%s)\n", $2));
2030 if(*$2 == '\0' || strcmp($2, "0") == 0) {
2031 cfg_parser->cfg->val_date_override = 0;
2032 } else if(strlen($2) == 14) {
2033 cfg_parser->cfg->val_date_override =
2034 cfg_convert_timeval($2);
2035 if(!cfg_parser->cfg->val_date_override)
2038 if(atoi($2) == 0)
2040 cfg_parser->cfg->val_date_override = atoi($2);
2042 free($2);
2047 OUTYY(("P(server_val_sig_skew_min:%s)\n", $2));
2048 if(*$2 == '\0' || strcmp($2, "0") == 0) {
2049 cfg_parser->cfg->val_sig_skew_min = 0;
2051 cfg_parser->cfg->val_sig_skew_min = atoi($2);
2052 if(!cfg_parser->cfg->val_sig_skew_min)
2055 free($2);
2060 OUTYY(("P(server_val_sig_skew_max:%s)\n", $2));
2061 if(*$2 == '\0' || strcmp($2, "0") == 0) {
2062 cfg_parser->cfg->val_sig_skew_max = 0;
2064 cfg_parser->cfg->val_sig_skew_max = atoi($2);
2065 if(!cfg_parser->cfg->val_sig_skew_max)
2068 free($2);
2073 OUTYY(("P(server_val_max_restart:%s)\n", $2));
2074 if(*$2 == '\0' || strcmp($2, "0") == 0) {
2075 cfg_parser->cfg->val_max_restart = 0;
2077 cfg_parser->cfg->val_max_restart = atoi($2);
2078 if(!cfg_parser->cfg->val_max_restart)
2081 free($2);
2086 OUTYY(("P(server_cache_max_ttl:%s)\n", $2));
2087 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2089 else cfg_parser->cfg->max_ttl = atoi($2);
2090 free($2);
2095 OUTYY(("P(server_cache_max_negative_ttl:%s)\n", $2));
2096 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2098 else cfg_parser->cfg->max_negative_ttl = atoi($2);
2099 free($2);
2104 OUTYY(("P(server_cache_min_negative_ttl:%s)\n", $2));
2105 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2107 else cfg_parser->cfg->min_negative_ttl = atoi($2);
2108 free($2);
2113 OUTYY(("P(server_cache_min_ttl:%s)\n", $2));
2114 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2116 else cfg_parser->cfg->min_ttl = atoi($2);
2117 free($2);
2122 OUTYY(("P(server_bogus_ttl:%s)\n", $2));
2123 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2125 else cfg_parser->cfg->bogus_ttl = atoi($2);
2126 free($2);
2131 OUTYY(("P(server_val_clean_additional:%s)\n", $2));
2132 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2134 else cfg_parser->cfg->val_clean_additional =
2135 (strcmp($2, "yes")==0);
2136 free($2);
2141 OUTYY(("P(server_val_permissive_mode:%s)\n", $2));
2142 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2144 else cfg_parser->cfg->val_permissive_mode =
2145 (strcmp($2, "yes")==0);
2146 free($2);
2151 OUTYY(("P(server_aggressive_nsec:%s)\n", $2));
2152 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2155 cfg_parser->cfg->aggressive_nsec =
2156 (strcmp($2, "yes")==0);
2157 free($2);
2162 OUTYY(("P(server_ignore_cd_flag:%s)\n", $2));
2163 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2165 else cfg_parser->cfg->ignore_cd = (strcmp($2, "yes")==0);
2166 free($2);
2171 OUTYY(("P(server_disable_edns_do:%s)\n", $2));
2172 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2174 else cfg_parser->cfg->disable_edns_do = (strcmp($2, "yes")==0);
2175 free($2);
2180 OUTYY(("P(server_serve_expired:%s)\n", $2));
2181 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2183 else cfg_parser->cfg->serve_expired = (strcmp($2, "yes")==0);
2184 free($2);
2189 OUTYY(("P(server_serve_expired_ttl:%s)\n", $2));
2190 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2192 else cfg_parser->cfg->serve_expired_ttl = atoi($2);
2193 free($2);
2198 OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", $2));
2199 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2201 else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp($2, "yes")==0);
2202 free($2);
2207 OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", $2));
2208 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2210 else cfg_parser->cfg->serve_expired_reply_ttl = atoi($2);
2211 free($2);
2216 OUTYY(("P(server_serve_expired_client_timeout:%s)\n", $2));
2217 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2219 else cfg_parser->cfg->serve_expired_client_timeout = atoi($2);
2220 free($2);
2225 OUTYY(("P(server_ede_serve_expired:%s)\n", $2));
2226 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2228 else cfg_parser->cfg->ede_serve_expired = (strcmp($2, "yes")==0);
2229 free($2);
2234 OUTYY(("P(server_serve_original_ttl:%s)\n", $2));
2235 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2237 else cfg_parser->cfg->serve_original_ttl = (strcmp($2, "yes")==0);
2238 free($2);
2243 OUTYY(("P(server_fake_dsa:%s)\n", $2));
2244 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2247 else fake_dsa = (strcmp($2, "yes")==0);
2251 free($2);
2256 OUTYY(("P(server_fake_sha1:%s)\n", $2));
2257 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2260 else fake_sha1 = (strcmp($2, "yes")==0);
2264 free($2);
2269 OUTYY(("P(server_val_log_level:%s)\n", $2));
2270 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2272 else cfg_parser->cfg->val_log_level = atoi($2);
2273 free($2);
2278 OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", $2));
2279 free(cfg_parser->cfg->val_nsec3_key_iterations);
2280 cfg_parser->cfg->val_nsec3_key_iterations = $2;
2285 OUTYY(("P(server_zonemd_permissive_mode:%s)\n", $2));
2286 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2288 else cfg_parser->cfg->zonemd_permissive_mode = (strcmp($2, "yes")==0);
2289 free($2);
2294 OUTYY(("P(server_add_holddown:%s)\n", $2));
2295 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2297 else cfg_parser->cfg->add_holddown = atoi($2);
2298 free($2);
2303 OUTYY(("P(server_del_holddown:%s)\n", $2));
2304 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2306 else cfg_parser->cfg->del_holddown = atoi($2);
2307 free($2);
2312 OUTYY(("P(server_keep_missing:%s)\n", $2));
2313 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2315 else cfg_parser->cfg->keep_missing = atoi($2);
2316 free($2);
2321 OUTYY(("P(server_permit_small_holddown:%s)\n", $2));
2322 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2324 else cfg_parser->cfg->permit_small_holddown =
2325 (strcmp($2, "yes")==0);
2326 free($2);
2331 OUTYY(("P(server_key_cache_size:%s)\n", $2));
2332 if(!cfg_parse_memsize($2, &cfg_parser->cfg->key_cache_size))
2334 free($2);
2339 OUTYY(("P(server_key_cache_slabs:%s)\n", $2));
2340 if(atoi($2) == 0) {
2343 cfg_parser->cfg->key_cache_slabs = atoi($2);
2344 if(!is_pow2(cfg_parser->cfg->key_cache_slabs))
2345 yyerror("must be a power of 2");
2347 free($2);
2352 OUTYY(("P(server_neg_cache_size:%s)\n", $2));
2353 if(!cfg_parse_memsize($2, &cfg_parser->cfg->neg_cache_size))
2355 free($2);
2360 OUTYY(("P(server_local_zone:%s %s)\n", $2, $3));
2376 yyerror("local-zone type: expected static, deny, "
2383 free($2);
2386 if(!cfg_strlist_insert(&cfg_parser->cfg->
2387 local_zones_nodefault, $2))
2388 fatal_exit("out of memory adding local-zone");
2392 size_t len = strlen($2);
2395 if($2[len-1] != '.') {
2396 if(!($2 = realloc($2, len+2))) {
2397 fatal_exit("out of memory adding local-zone");
2399 $2[len] = '.';
2400 $2[len+1] = 0;
2402 if(!cfg_strlist_insert(&cfg_parser->cfg->
2403 local_zones_ipset, $2))
2404 fatal_exit("out of memory adding local-zone");
2408 if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones,
2409 $2, $3))
2410 fatal_exit("out of memory adding local-zone");
2416 OUTYY(("P(server_local_data:%s)\n", $2));
2417 if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, $2))
2418 fatal_exit("out of memory adding local-data");
2424 OUTYY(("P(server_local_data_ptr:%s)\n", $2));
2425 ptr = cfg_ptr_reverse($2);
2426 free($2);
2428 if(!cfg_strlist_insert(&cfg_parser->cfg->
2430 fatal_exit("out of memory adding local-data");
2432 yyerror("local-data-ptr could not be reversed");
2438 OUTYY(("P(server_minimal_responses:%s)\n", $2));
2439 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2441 else cfg_parser->cfg->minimal_responses =
2442 (strcmp($2, "yes")==0);
2443 free($2);
2448 OUTYY(("P(server_rrset_roundrobin:%s)\n", $2));
2449 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2451 else cfg_parser->cfg->rrset_roundrobin =
2452 (strcmp($2, "yes")==0);
2453 free($2);
2458 OUTYY(("P(server_unknown_server_time_limit:%s)\n", $2));
2459 cfg_parser->cfg->unknown_server_time_limit = atoi($2);
2460 free($2);
2465 OUTYY(("P(server_discard_timeout:%s)\n", $2));
2466 cfg_parser->cfg->discard_timeout = atoi($2);
2467 free($2);
2472 OUTYY(("P(server_wait_limit:%s)\n", $2));
2473 cfg_parser->cfg->wait_limit = atoi($2);
2474 free($2);
2479 OUTYY(("P(server_wait_limit_cookie:%s)\n", $2));
2480 cfg_parser->cfg->wait_limit_cookie = atoi($2);
2481 free($2);
2486 OUTYY(("P(server_wait_limit_netblock:%s %s)\n", $2, $3));
2489 free($2);
2492 if(!cfg_str2list_insert(&cfg_parser->cfg->
2493 wait_limit_netblock, $2, $3))
2495 "wait-limit-netblock");
2501 OUTYY(("P(server_wait_limit_cookie_netblock:%s %s)\n", $2, $3));
2504 free($2);
2507 if(!cfg_str2list_insert(&cfg_parser->cfg->
2508 wait_limit_cookie_netblock, $2, $3))
2510 "wait-limit-cookie-netblock");
2516 OUTYY(("P(server_max_udp_size:%s)\n", $2));
2517 cfg_parser->cfg->max_udp_size = atoi($2);
2518 free($2);
2523 OUTYY(("P(dns64_prefix:%s)\n", $2));
2524 free(cfg_parser->cfg->dns64_prefix);
2525 cfg_parser->cfg->dns64_prefix = $2;
2530 OUTYY(("P(server_dns64_synthall:%s)\n", $2));
2531 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2533 else cfg_parser->cfg->dns64_synthall = (strcmp($2, "yes")==0);
2534 free($2);
2539 OUTYY(("P(dns64_ignore_aaaa:%s)\n", $2));
2540 if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa,
2541 $2))
2542 fatal_exit("out of memory adding dns64-ignore-aaaa");
2547 OUTYY(("P(nat64_prefix:%s)\n", $2));
2548 free(cfg_parser->cfg->nat64_prefix);
2549 cfg_parser->cfg->nat64_prefix = $2;
2554 char* p, *s = $2;
2555 OUTYY(("P(server_define_tag:%s)\n", $2));
2558 if(!config_add_tag(cfg_parser->cfg, p))
2559 yyerror("could not define-tag, "
2563 free($2);
2569 uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, $3,
2572 OUTYY(("P(server_local_zone_tag:%s)\n", $2));
2574 yyerror("could not parse tags, (define-tag them first)");
2575 free($2);
2579 &cfg_parser->cfg->local_zone_tags,
2580 $2, bitlist, len)) {
2582 free($2);
2590 uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, $3,
2593 OUTYY(("P(server_access_control_tag:%s)\n", $2));
2595 yyerror("could not parse tags, (define-tag them first)");
2596 free($2);
2600 &cfg_parser->cfg->acl_tags,
2601 $2, bitlist, len)) {
2603 free($2);
2610 OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", $2, $3, $4));
2611 if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions,
2612 $2, $3, $4)) {
2614 free($2);
2622 OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", $2, $3, $4));
2623 if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas,
2624 $2, $3, $4)) {
2626 free($2);
2634 OUTYY(("P(server_local_zone_override:%s %s %s)\n", $2, $3, $4));
2635 if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides,
2636 $2, $3, $4)) {
2638 free($2);
2646 OUTYY(("P(server_access_control_view:%s %s)\n", $2, $3));
2647 if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view,
2648 $2, $3)) {
2656 uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, $3,
2659 OUTYY(("P(server_interface_tag:%s)\n", $2));
2661 yyerror("could not parse tags, (define-tag them first)");
2662 free($2);
2666 &cfg_parser->cfg->interface_tags,
2667 $2, bitlist, len)) {
2669 free($2);
2676 OUTYY(("P(server_interface_tag_action:%s %s %s)\n", $2, $3, $4));
2677 if(!cfg_str3list_insert(&cfg_parser->cfg->interface_tag_actions,
2678 $2, $3, $4)) {
2680 free($2);
2688 OUTYY(("P(server_interface_tag_data:%s %s %s)\n", $2, $3, $4));
2689 if(!cfg_str3list_insert(&cfg_parser->cfg->interface_tag_datas,
2690 $2, $3, $4)) {
2692 free($2);
2700 OUTYY(("P(server_interface_view:%s %s)\n", $2, $3));
2701 if(!cfg_str2list_insert(&cfg_parser->cfg->interface_view,
2702 $2, $3)) {
2710 uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, $3,
2713 OUTYY(("P(response_ip_tag:%s)\n", $2));
2715 yyerror("could not parse tags, (define-tag them first)");
2716 free($2);
2720 &cfg_parser->cfg->respip_tags,
2721 $2, bitlist, len)) {
2723 free($2);
2730 OUTYY(("P(server_ip_ratelimit:%s)\n", $2));
2731 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2733 else cfg_parser->cfg->ip_ratelimit = atoi($2);
2734 free($2);
2739 OUTYY(("P(server_ip_ratelimit_cookie:%s)\n", $2));
2740 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2742 else cfg_parser->cfg->ip_ratelimit_cookie = atoi($2);
2743 free($2);
2748 OUTYY(("P(server_ratelimit:%s)\n", $2));
2749 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2751 else cfg_parser->cfg->ratelimit = atoi($2);
2752 free($2);
2757 OUTYY(("P(server_ip_ratelimit_size:%s)\n", $2));
2758 if(!cfg_parse_memsize($2, &cfg_parser->cfg->ip_ratelimit_size))
2760 free($2);
2765 OUTYY(("P(server_ratelimit_size:%s)\n", $2));
2766 if(!cfg_parse_memsize($2, &cfg_parser->cfg->ratelimit_size))
2768 free($2);
2773 OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", $2));
2774 if(atoi($2) == 0) {
2777 cfg_parser->cfg->ip_ratelimit_slabs = atoi($2);
2778 if(!is_pow2(cfg_parser->cfg->ip_ratelimit_slabs))
2779 yyerror("must be a power of 2");
2781 free($2);
2786 OUTYY(("P(server_ratelimit_slabs:%s)\n", $2));
2787 if(atoi($2) == 0) {
2790 cfg_parser->cfg->ratelimit_slabs = atoi($2);
2791 if(!is_pow2(cfg_parser->cfg->ratelimit_slabs))
2792 yyerror("must be a power of 2");
2794 free($2);
2799 OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", $2, $3));
2802 free($2);
2805 if(!cfg_str2list_insert(&cfg_parser->cfg->
2806 ratelimit_for_domain, $2, $3))
2808 "ratelimit-for-domain");
2814 OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", $2, $3));
2817 free($2);
2820 if(!cfg_str2list_insert(&cfg_parser->cfg->
2821 ratelimit_below_domain, $2, $3))
2823 "ratelimit-below-domain");
2829 OUTYY(("P(server_ip_ratelimit_factor:%s)\n", $2));
2830 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2832 else cfg_parser->cfg->ip_ratelimit_factor = atoi($2);
2833 free($2);
2838 OUTYY(("P(server_ratelimit_factor:%s)\n", $2));
2839 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2841 else cfg_parser->cfg->ratelimit_factor = atoi($2);
2842 free($2);
2847 OUTYY(("P(server_ip_ratelimit_backoff:%s)\n", $2));
2848 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2850 else cfg_parser->cfg->ip_ratelimit_backoff =
2851 (strcmp($2, "yes")==0);
2852 free($2);
2857 OUTYY(("P(server_ratelimit_backoff:%s)\n", $2));
2858 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2860 else cfg_parser->cfg->ratelimit_backoff =
2861 (strcmp($2, "yes")==0);
2862 free($2);
2867 OUTYY(("P(server_outbound_msg_retry:%s)\n", $2));
2868 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2870 else cfg_parser->cfg->outbound_msg_retry = atoi($2);
2871 free($2);
2876 OUTYY(("P(server_max_sent_count:%s)\n", $2));
2877 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2879 else cfg_parser->cfg->max_sent_count = atoi($2);
2880 free($2);
2885 OUTYY(("P(server_max_query_restarts:%s)\n", $2));
2886 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2888 else cfg_parser->cfg->max_query_restarts = atoi($2);
2889 free($2);
2894 OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n"));
2895 free($2);
2900 OUTYY(("P(server_fast_server_num:%s)\n", $2));
2901 if(atoi($2) <= 0)
2903 else cfg_parser->cfg->fast_server_num = atoi($2);
2904 free($2);
2909 OUTYY(("P(server_fast_server_permil:%s)\n", $2));
2910 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2912 else cfg_parser->cfg->fast_server_permil = atoi($2);
2913 free($2);
2918 OUTYY(("P(server_qname_minimisation:%s)\n", $2));
2919 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2921 else cfg_parser->cfg->qname_minimisation =
2922 (strcmp($2, "yes")==0);
2923 free($2);
2928 OUTYY(("P(server_qname_minimisation_strict:%s)\n", $2));
2929 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2931 else cfg_parser->cfg->qname_minimisation_strict =
2932 (strcmp($2, "yes")==0);
2933 free($2);
2938 OUTYY(("P(server_pad_responses:%s)\n", $2));
2939 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2941 else cfg_parser->cfg->pad_responses =
2942 (strcmp($2, "yes")==0);
2943 free($2);
2948 OUTYY(("P(server_pad_responses_block_size:%s)\n", $2));
2949 if(atoi($2) == 0)
2951 else cfg_parser->cfg->pad_responses_block_size = atoi($2);
2952 free($2);
2957 OUTYY(("P(server_pad_queries:%s)\n", $2));
2958 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2960 else cfg_parser->cfg->pad_queries =
2961 (strcmp($2, "yes")==0);
2962 free($2);
2967 OUTYY(("P(server_pad_queries_block_size:%s)\n", $2));
2968 if(atoi($2) == 0)
2970 else cfg_parser->cfg->pad_queries_block_size = atoi($2);
2971 free($2);
2977 OUTYY(("P(server_ipsecmod_enabled:%s)\n", $2));
2978 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2980 else cfg_parser->cfg->ipsecmod_enabled = (strcmp($2, "yes")==0);
2984 free($2);
2990 OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", $2));
2991 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2993 else cfg_parser->cfg->ipsecmod_ignore_bogus = (strcmp($2, "yes")==0);
2997 free($2);
3003 OUTYY(("P(server_ipsecmod_hook:%s)\n", $2));
3004 free(cfg_parser->cfg->ipsecmod_hook);
3005 cfg_parser->cfg->ipsecmod_hook = $2;
3008 free($2);
3015 OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", $2));
3016 if(atoi($2) == 0 && strcmp($2, "0") != 0)
3018 else cfg_parser->cfg->ipsecmod_max_ttl = atoi($2);
3019 free($2);
3022 free($2);
3029 OUTYY(("P(server_ipsecmod_whitelist:%s)\n", $2));
3030 if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, $2))
3034 free($2);
3041 OUTYY(("P(server_ipsecmod_strict:%s)\n", $2));
3042 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3044 else cfg_parser->cfg->ipsecmod_strict = (strcmp($2, "yes")==0);
3045 free($2);
3048 free($2);
3054 OUTYY(("P(server_edns_client_string:%s %s)\n", $2, $3));
3056 &cfg_parser->cfg->edns_client_strings, $2, $3))
3058 "edns-client-string");
3063 OUTYY(("P(edns_client_string_opcode:%s)\n", $2));
3064 if(atoi($2) == 0 && strcmp($2, "0") != 0)
3066 else if(atoi($2) > 65535 || atoi($2) < 0)
3068 else cfg_parser->cfg->edns_client_string_opcode = atoi($2);
3069 free($2);
3074 OUTYY(("P(server_ede:%s)\n", $2));
3075 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3077 else cfg_parser->cfg->ede = (strcmp($2, "yes")==0);
3078 free($2);
3083 OUTYY(("P(server_dns_error_reporting:%s)\n", $2));
3084 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3086 else cfg_parser->cfg->dns_error_reporting = (strcmp($2, "yes")==0);
3087 free($2);
3092 OUTYY(("P(server_proxy_protocol_port:%s)\n", $2));
3093 if(!cfg_strlist_insert(&cfg_parser->cfg->proxy_protocol_port, $2))
3099 OUTYY(("P(name:%s)\n", $2));
3100 if(cfg_parser->cfg->stubs->name)
3102 "for one stub-zone");
3103 free(cfg_parser->cfg->stubs->name);
3104 cfg_parser->cfg->stubs->name = $2;
3109 OUTYY(("P(stub-host:%s)\n", $2));
3110 if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, $2))
3116 OUTYY(("P(stub-addr:%s)\n", $2));
3117 if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, $2))
3123 OUTYY(("P(stub-first:%s)\n", $2));
3124 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3126 else cfg_parser->cfg->stubs->isfirst=(strcmp($2, "yes")==0);
3127 free($2);
3132 OUTYY(("P(stub-no-cache:%s)\n", $2));
3133 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3135 else cfg_parser->cfg->stubs->no_cache=(strcmp($2, "yes")==0);
3136 free($2);
3141 OUTYY(("P(stub-ssl-upstream:%s)\n", $2));
3142 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3144 else cfg_parser->cfg->stubs->ssl_upstream =
3145 (strcmp($2, "yes")==0);
3146 free($2);
3151 OUTYY(("P(stub-tcp-upstream:%s)\n", $2));
3152 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3154 else cfg_parser->cfg->stubs->tcp_upstream =
3155 (strcmp($2, "yes")==0);
3156 free($2);
3161 OUTYY(("P(stub-prime:%s)\n", $2));
3162 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3164 else cfg_parser->cfg->stubs->isprime =
3165 (strcmp($2, "yes")==0);
3166 free($2);
3171 OUTYY(("P(name:%s)\n", $2));
3172 if(cfg_parser->cfg->forwards->name)
3174 "name for one forward-zone");
3175 free(cfg_parser->cfg->forwards->name);
3176 cfg_parser->cfg->forwards->name = $2;
3181 OUTYY(("P(forward-host:%s)\n", $2));
3182 if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, $2))
3188 OUTYY(("P(forward-addr:%s)\n", $2));
3189 if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, $2))
3195 OUTYY(("P(forward-first:%s)\n", $2));
3196 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3198 else cfg_parser->cfg->forwards->isfirst=(strcmp($2, "yes")==0);
3199 free($2);
3204 OUTYY(("P(forward-no-cache:%s)\n", $2));
3205 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3207 else cfg_parser->cfg->forwards->no_cache=(strcmp($2, "yes")==0);
3208 free($2);
3213 OUTYY(("P(forward-ssl-upstream:%s)\n", $2));
3214 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3216 else cfg_parser->cfg->forwards->ssl_upstream =
3217 (strcmp($2, "yes")==0);
3218 free($2);
3223 OUTYY(("P(forward-tcp-upstream:%s)\n", $2));
3224 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3226 else cfg_parser->cfg->forwards->tcp_upstream =
3227 (strcmp($2, "yes")==0);
3228 free($2);
3233 OUTYY(("P(name:%s)\n", $2));
3234 if(cfg_parser->cfg->auths->name)
3236 "for one auth-zone");
3237 free(cfg_parser->cfg->auths->name);
3238 cfg_parser->cfg->auths->name = $2;
3243 OUTYY(("P(zonefile:%s)\n", $2));
3244 free(cfg_parser->cfg->auths->zonefile);
3245 cfg_parser->cfg->auths->zonefile = $2;
3250 OUTYY(("P(master:%s)\n", $2));
3251 if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, $2))
3257 OUTYY(("P(url:%s)\n", $2));
3258 if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, $2))
3264 OUTYY(("P(allow-notify:%s)\n", $2));
3265 if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify,
3266 $2))
3272 OUTYY(("P(zonemd-check:%s)\n", $2));
3273 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3275 else cfg_parser->cfg->auths->zonemd_check =
3276 (strcmp($2, "yes")==0);
3277 free($2);
3282 OUTYY(("P(zonemd-reject-absence:%s)\n", $2));
3283 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3285 else cfg_parser->cfg->auths->zonemd_reject_absence =
3286 (strcmp($2, "yes")==0);
3287 free($2);
3292 OUTYY(("P(for-downstream:%s)\n", $2));
3293 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3295 else cfg_parser->cfg->auths->for_downstream =
3296 (strcmp($2, "yes")==0);
3297 free($2);
3302 OUTYY(("P(for-upstream:%s)\n", $2));
3303 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3305 else cfg_parser->cfg->auths->for_upstream =
3306 (strcmp($2, "yes")==0);
3307 free($2);
3312 OUTYY(("P(fallback-enabled:%s)\n", $2));
3313 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3315 else cfg_parser->cfg->auths->fallback_enabled =
3316 (strcmp($2, "yes")==0);
3317 free($2);
3322 OUTYY(("P(name:%s)\n", $2));
3323 if(cfg_parser->cfg->views->name)
3326 free(cfg_parser->cfg->views->name);
3327 cfg_parser->cfg->views->name = $2;
3332 OUTYY(("P(view_local_zone:%s %s)\n", $2, $3));
3347 yyerror("local-zone type: expected static, deny, "
3354 free($2);
3357 if(!cfg_strlist_insert(&cfg_parser->cfg->views->
3358 local_zones_nodefault, $2))
3359 fatal_exit("out of memory adding local-zone");
3363 size_t len = strlen($2);
3366 if($2[len-1] != '.') {
3367 if(!($2 = realloc($2, len+2))) {
3368 fatal_exit("out of memory adding local-zone");
3370 $2[len] = '.';
3371 $2[len+1] = 0;
3373 if(!cfg_strlist_insert(&cfg_parser->cfg->views->
3374 local_zones_ipset, $2))
3375 fatal_exit("out of memory adding local-zone");
3380 &cfg_parser->cfg->views->local_zones,
3381 $2, $3))
3382 fatal_exit("out of memory adding local-zone");
3388 OUTYY(("P(view_response_ip:%s %s)\n", $2, $3));
3391 &cfg_parser->cfg->views->respip_actions, $2, $3))
3392 fatal_exit("out of memory adding per-view "
3393 "response-ip action");
3398 OUTYY(("P(view_response_ip_data:%s)\n", $2));
3400 &cfg_parser->cfg->views->respip_data, $2, $3))
3401 fatal_exit("out of memory adding response-ip-data");
3406 OUTYY(("P(view_local_data:%s)\n", $2));
3407 if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, $2)) {
3408 fatal_exit("out of memory adding local-data");
3415 OUTYY(("P(view_local_data_ptr:%s)\n", $2));
3416 ptr = cfg_ptr_reverse($2);
3417 free($2);
3419 if(!cfg_strlist_insert(&cfg_parser->cfg->views->
3421 fatal_exit("out of memory adding local-data");
3423 yyerror("local-data-ptr could not be reversed");
3429 OUTYY(("P(view-first:%s)\n", $2));
3430 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3432 else cfg_parser->cfg->views->isfirst=(strcmp($2, "yes")==0);
3433 free($2);
3438 OUTYY(("\nP(remote-control:)\n"));
3439 cfg_parser->started_toplevel = 1;
3450 OUTYY(("P(control_enable:%s)\n", $2));
3451 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3453 else cfg_parser->cfg->remote_control_enable =
3454 (strcmp($2, "yes")==0);
3455 free($2);
3460 OUTYY(("P(control_port:%s)\n", $2));
3461 if(atoi($2) == 0)
3463 else cfg_parser->cfg->control_port = atoi($2);
3464 free($2);
3469 OUTYY(("P(control_interface:%s)\n", $2));
3470 if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, $2))
3476 OUTYY(("P(control_use_cert:%s)\n", $2));
3477 cfg_parser->cfg->control_use_cert = (strcmp($2, "yes")==0);
3478 free($2);
3483 OUTYY(("P(rc_server_key_file:%s)\n", $2));
3484 free(cfg_parser->cfg->server_key_file);
3485 cfg_parser->cfg->server_key_file = $2;
3490 OUTYY(("P(rc_server_cert_file:%s)\n", $2));
3491 free(cfg_parser->cfg->server_cert_file);
3492 cfg_parser->cfg->server_cert_file = $2;
3497 OUTYY(("P(rc_control_key_file:%s)\n", $2));
3498 free(cfg_parser->cfg->control_key_file);
3499 cfg_parser->cfg->control_key_file = $2;
3504 OUTYY(("P(rc_control_cert_file:%s)\n", $2));
3505 free(cfg_parser->cfg->control_cert_file);
3506 cfg_parser->cfg->control_cert_file = $2;
3512 cfg_parser->started_toplevel = 1;
3533 OUTYY(("P(dt_dnstap_enable:%s)\n", $2));
3534 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3536 else cfg_parser->cfg->dnstap = (strcmp($2, "yes")==0);
3537 free($2);
3542 OUTYY(("P(dt_dnstap_bidirectional:%s)\n", $2));
3543 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3545 else cfg_parser->cfg->dnstap_bidirectional =
3546 (strcmp($2, "yes")==0);
3547 free($2);
3552 OUTYY(("P(dt_dnstap_socket_path:%s)\n", $2));
3553 free(cfg_parser->cfg->dnstap_socket_path);
3554 cfg_parser->cfg->dnstap_socket_path = $2;
3559 OUTYY(("P(dt_dnstap_ip:%s)\n", $2));
3560 free(cfg_parser->cfg->dnstap_ip);
3561 cfg_parser->cfg->dnstap_ip = $2;
3566 OUTYY(("P(dt_dnstap_tls:%s)\n", $2));
3567 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3569 else cfg_parser->cfg->dnstap_tls = (strcmp($2, "yes")==0);
3570 free($2);
3575 OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", $2));
3576 free(cfg_parser->cfg->dnstap_tls_server_name);
3577 cfg_parser->cfg->dnstap_tls_server_name = $2;
3582 OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", $2));
3583 free(cfg_parser->cfg->dnstap_tls_cert_bundle);
3584 cfg_parser->cfg->dnstap_tls_cert_bundle = $2;
3589 OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", $2));
3590 free(cfg_parser->cfg->dnstap_tls_client_key_file);
3591 cfg_parser->cfg->dnstap_tls_client_key_file = $2;
3596 OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", $2));
3597 free(cfg_parser->cfg->dnstap_tls_client_cert_file);
3598 cfg_parser->cfg->dnstap_tls_client_cert_file = $2;
3603 OUTYY(("P(dt_dnstap_send_identity:%s)\n", $2));
3604 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3606 else cfg_parser->cfg->dnstap_send_identity = (strcmp($2, "yes")==0);
3607 free($2);
3612 OUTYY(("P(dt_dnstap_send_version:%s)\n", $2));
3613 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3615 else cfg_parser->cfg->dnstap_send_version = (strcmp($2, "yes")==0);
3616 free($2);
3621 OUTYY(("P(dt_dnstap_identity:%s)\n", $2));
3622 free(cfg_parser->cfg->dnstap_identity);
3623 cfg_parser->cfg->dnstap_identity = $2;
3628 OUTYY(("P(dt_dnstap_version:%s)\n", $2));
3629 free(cfg_parser->cfg->dnstap_version);
3630 cfg_parser->cfg->dnstap_version = $2;
3635 OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", $2));
3636 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3638 else cfg_parser->cfg->dnstap_log_resolver_query_messages =
3639 (strcmp($2, "yes")==0);
3640 free($2);
3645 OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", $2));
3646 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3648 else cfg_parser->cfg->dnstap_log_resolver_response_messages =
3649 (strcmp($2, "yes")==0);
3650 free($2);
3655 OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", $2));
3656 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3658 else cfg_parser->cfg->dnstap_log_client_query_messages =
3659 (strcmp($2, "yes")==0);
3660 free($2);
3665 OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", $2));
3666 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3668 else cfg_parser->cfg->dnstap_log_client_response_messages =
3669 (strcmp($2, "yes")==0);
3670 free($2);
3675 OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", $2));
3676 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3678 else cfg_parser->cfg->dnstap_log_forwarder_query_messages =
3679 (strcmp($2, "yes")==0);
3680 free($2);
3685 OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", $2));
3686 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3688 else cfg_parser->cfg->dnstap_log_forwarder_response_messages =
3689 (strcmp($2, "yes")==0);
3690 free($2);
3695 OUTYY(("P(dt_dnstap_sample_rate:%s)\n", $2));
3696 if(atoi($2) == 0 && strcmp($2, "0") != 0)
3698 else if(atoi($2) < 0)
3700 else cfg_parser->cfg->dnstap_sample_rate = atoi($2);
3701 free($2);
3707 cfg_parser->started_toplevel = 1;
3716 OUTYY(("P(python-script:%s)\n", $2));
3717 if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, $2))
3724 cfg_parser->started_toplevel = 1;
3733 OUTYY(("P(dynlib-file:%s)\n", $2));
3734 if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, $2))
3740 OUTYY(("P(disable_dnssec_lame_check:%s)\n", $2));
3741 if (strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3743 else cfg_parser->cfg->disable_dnssec_lame_check =
3744 (strcmp($2, "yes")==0);
3745 free($2);
3750 OUTYY(("P(server_log_identity:%s)\n", $2));
3751 free(cfg_parser->cfg->log_identity);
3752 cfg_parser->cfg->log_identity = $2;
3757 OUTYY(("P(server_response_ip:%s %s)\n", $2, $3));
3759 if(!cfg_str2list_insert(&cfg_parser->cfg->respip_actions,
3760 $2, $3))
3761 fatal_exit("out of memory adding response-ip");
3766 OUTYY(("P(server_response_ip_data:%s)\n", $2));
3767 if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data,
3768 $2, $3))
3769 fatal_exit("out of memory adding response-ip-data");
3775 cfg_parser->started_toplevel = 1;
3791 OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", $2));
3792 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3794 else cfg_parser->cfg->dnscrypt = (strcmp($2, "yes")==0);
3795 free($2);
3800 OUTYY(("P(dnsc_dnscrypt_port:%s)\n", $2));
3801 if(atoi($2) == 0)
3803 else cfg_parser->cfg->dnscrypt_port = atoi($2);
3804 free($2);
3809 OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", $2));
3810 free(cfg_parser->cfg->dnscrypt_provider);
3811 cfg_parser->cfg->dnscrypt_provider = $2;
3816 OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", $2));
3817 if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, $2))
3818 log_warn("dnscrypt-provider-cert %s is a duplicate", $2);
3819 if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, $2))
3820 fatal_exit("out of memory adding dnscrypt-provider-cert");
3825 OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", $2));
3826 if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, $2))
3827 fatal_exit("out of memory adding dnscrypt-provider-cert-rotated");
3832 OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", $2));
3833 if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, $2))
3834 log_warn("dnscrypt-secret-key: %s is a duplicate", $2);
3835 if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, $2))
3836 fatal_exit("out of memory adding dnscrypt-secret-key");
3841 OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", $2));
3842 if(!cfg_parse_memsize($2, &cfg_parser->cfg->dnscrypt_shared_secret_cache_size))
3844 free($2);
3849 OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", $2));
3850 if(atoi($2) == 0) {
3853 cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs = atoi($2);
3854 if(!is_pow2(cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs))
3855 yyerror("must be a power of 2");
3857 free($2);
3862 OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", $2));
3863 if(!cfg_parse_memsize($2, &cfg_parser->cfg->dnscrypt_nonce_cache_size))
3865 free($2);
3870 OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", $2));
3871 if(atoi($2) == 0) {
3874 cfg_parser->cfg->dnscrypt_nonce_cache_slabs = atoi($2);
3875 if(!is_pow2(cfg_parser->cfg->dnscrypt_nonce_cache_slabs))
3876 yyerror("must be a power of 2");
3878 free($2);
3884 cfg_parser->started_toplevel = 1;
3904 OUTYY(("P(backend:%s)\n", $2));
3905 free(cfg_parser->cfg->cachedb_backend);
3906 cfg_parser->cfg->cachedb_backend = $2;
3909 free($2);
3916 OUTYY(("P(secret-seed:%s)\n", $2));
3917 free(cfg_parser->cfg->cachedb_secret);
3918 cfg_parser->cfg->cachedb_secret = $2;
3921 free($2);
3928 OUTYY(("P(cachedb_no_store:%s)\n", $2));
3929 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3931 else cfg_parser->cfg->cachedb_no_store = (strcmp($2, "yes")==0);
3935 free($2);
3941 OUTYY(("P(cachedb_check_when_serve_expired:%s)\n", $2));
3942 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3944 else cfg_parser->cfg->cachedb_check_when_serve_expired = (strcmp($2, "yes")==0);
3948 free($2);
3954 OUTYY(("P(redis_server_host:%s)\n", $2));
3955 free(cfg_parser->cfg->redis_server_host);
3956 cfg_parser->cfg->redis_server_host = $2;
3959 free($2);
3966 OUTYY(("P(redis_replica_server_host:%s)\n", $2));
3967 free(cfg_parser->cfg->redis_replica_server_host);
3968 cfg_parser->cfg->redis_replica_server_host = $2;
3971 free($2);
3979 OUTYY(("P(redis_server_port:%s)\n", $2));
3980 port = atoi($2);
3983 else cfg_parser->cfg->redis_server_port = port;
3987 free($2);
3994 OUTYY(("P(redis_replica_server_port:%s)\n", $2));
3995 port = atoi($2);
3998 else cfg_parser->cfg->redis_replica_server_port = port;
4002 free($2);
4008 OUTYY(("P(redis_server_path:%s)\n", $2));
4009 free(cfg_parser->cfg->redis_server_path);
4010 cfg_parser->cfg->redis_server_path = $2;
4013 free($2);
4020 OUTYY(("P(redis_replica_server_path:%s)\n", $2));
4021 free(cfg_parser->cfg->redis_replica_server_path);
4022 cfg_parser->cfg->redis_replica_server_path = $2;
4025 free($2);
4032 OUTYY(("P(redis_server_password:%s)\n", $2));
4033 free(cfg_parser->cfg->redis_server_password);
4034 cfg_parser->cfg->redis_server_password = $2;
4037 free($2);
4044 OUTYY(("P(redis_replica_server_password:%s)\n", $2));
4045 free(cfg_parser->cfg->redis_replica_server_password);
4046 cfg_parser->cfg->redis_replica_server_password = $2;
4049 free($2);
4056 OUTYY(("P(redis_timeout:%s)\n", $2));
4057 if(atoi($2) == 0)
4059 else cfg_parser->cfg->redis_timeout = atoi($2);
4063 free($2);
4069 OUTYY(("P(redis_replica_timeout:%s)\n", $2));
4070 if(atoi($2) == 0)
4072 else cfg_parser->cfg->redis_replica_timeout = atoi($2);
4076 free($2);
4082 OUTYY(("P(redis_command_timeout:%s)\n", $2));
4083 if(atoi($2) == 0 && strcmp($2, "0") != 0)
4085 else cfg_parser->cfg->redis_command_timeout = atoi($2);
4089 free($2);
4095 OUTYY(("P(redis_replica_command_timeout:%s)\n", $2));
4096 if(atoi($2) == 0 && strcmp($2, "0") != 0)
4098 else cfg_parser->cfg->redis_replica_command_timeout = atoi($2);
4102 free($2);
4108 OUTYY(("P(redis_connect_timeout:%s)\n", $2));
4109 if(atoi($2) == 0 && strcmp($2, "0") != 0)
4111 else cfg_parser->cfg->redis_connect_timeout = atoi($2);
4115 free($2);
4121 OUTYY(("P(redis_replica_connect_timeout:%s)\n", $2));
4122 if(atoi($2) == 0 && strcmp($2, "0") != 0)
4124 else cfg_parser->cfg->redis_replica_connect_timeout = atoi($2);
4128 free($2);
4134 OUTYY(("P(redis_expire_records:%s)\n", $2));
4135 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
4137 else cfg_parser->cfg->redis_expire_records = (strcmp($2, "yes")==0);
4141 free($2);
4148 OUTYY(("P(redis_logical_db:%s)\n", $2));
4149 db = atoi($2);
4150 if((db == 0 && strcmp($2, "0") != 0) || db < 0)
4152 else cfg_parser->cfg->redis_logical_db = db;
4156 free($2);
4163 OUTYY(("P(redis_replica_logical_db:%s)\n", $2));
4164 db = atoi($2);
4165 if((db == 0 && strcmp($2, "0") != 0) || db < 0)
4167 else cfg_parser->cfg->redis_replica_logical_db = db;
4171 free($2);
4176 OUTYY(("P(server_tcp_connection_limit:%s %s)\n", $2, $3));
4180 if(!cfg_str2list_insert(&cfg_parser->cfg->tcp_connection_limits, $2, $3))
4187 OUTYY(("P(server_answer_cookie:%s)\n", $2));
4188 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
4190 else cfg_parser->cfg->do_answer_cookie = (strcmp($2, "yes")==0);
4191 free($2);
4199 OUTYY(("P(server_cookie_secret:%s)\n", $2));
4200 if(sldns_str2wire_hex_buf($2, secret, &secret_len)
4204 cfg_parser->cfg->cookie_secret_len = secret_len;
4205 memcpy(cfg_parser->cfg->cookie_secret, secret, sizeof(secret));
4207 free($2);
4212 OUTYY(("P(cookie_secret_file:%s)\n", $2));
4213 free(cfg_parser->cfg->cookie_secret_file);
4214 cfg_parser->cfg->cookie_secret_file = $2;
4219 OUTYY(("P(server_iter_scrub_ns:%s)\n", $2));
4220 if(atoi($2) == 0 && strcmp($2, "0") != 0)
4222 else cfg_parser->cfg->iter_scrub_ns = atoi($2);
4223 free($2);
4228 OUTYY(("P(server_iter_scrub_cname:%s)\n", $2));
4229 if(atoi($2) == 0 && strcmp($2, "0") != 0)
4231 else cfg_parser->cfg->iter_scrub_cname = atoi($2);
4232 free($2);
4237 OUTYY(("P(server_max_global_quota:%s)\n", $2));
4238 if(atoi($2) == 0 && strcmp($2, "0") != 0)
4240 else cfg_parser->cfg->max_global_quota = atoi($2);
4241 free($2);
4246 OUTYY(("P(server_iter_scrub_promiscuous:%s)\n", $2));
4247 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
4249 else cfg_parser->cfg->iter_scrub_promiscuous =
4250 (strcmp($2, "yes")==0);
4251 free($2);
4257 cfg_parser->started_toplevel = 1;
4267 OUTYY(("P(name-v4:%s)\n", $2));
4268 if(cfg_parser->cfg->ipset_name_v4)
4271 free(cfg_parser->cfg->ipset_name_v4);
4272 cfg_parser->cfg->ipset_name_v4 = $2;
4275 free($2);
4282 OUTYY(("P(name-v6:%s)\n", $2));
4283 if(cfg_parser->cfg->ipset_name_v6)
4286 free(cfg_parser->cfg->ipset_name_v6);
4287 cfg_parser->cfg->ipset_name_v6 = $2;
4290 free($2);
4308 yyerror("response-ip action: expected deny, redirect, "