Lines Matching +full:0 +full:- +full:2
2 * configparser.y -- yacc grammar for unbound configuration files
4 * Copyright (c) 2001-2006, NLnet Labs. All rights reserved.
61 #if 0
225 OUTYY(("\nP(force-toplevel)\n"));
226 cfg_parser->started_toplevel = 0;
233 cfg_parser->started_toplevel = 1;
357 if(cfg_parser->cfg->stubs &&
358 !cfg_parser->cfg->stubs->name)
359 yyerror("stub-zone without name");
366 cfg_parser->started_toplevel = 1;
369 s->next = cfg_parser->cfg->stubs;
370 cfg_parser->cfg->stubs = s;
384 if(cfg_parser->cfg->forwards &&
385 !cfg_parser->cfg->forwards->name)
386 yyerror("forward-zone without name");
393 cfg_parser->started_toplevel = 1;
396 s->next = cfg_parser->cfg->forwards;
397 cfg_parser->cfg->forwards = s;
411 if(cfg_parser->cfg->views &&
412 !cfg_parser->cfg->views->name)
420 cfg_parser->started_toplevel = 1;
423 s->next = cfg_parser->cfg->views;
424 cfg_parser->cfg->views = s;
439 cfg_parser->started_toplevel = 1;
442 s->next = cfg_parser->cfg->auths;
443 cfg_parser->cfg->auths = s;
445 s->for_downstream = 1;
446 s->for_upstream = 1;
447 s->fallback_enabled = 0;
448 s->zonemd_check = 0;
449 s->zonemd_reject_absence = 0;
450 s->isrpz = 0;
466 size_t len = 0;
467 OUTYY(("P(server_local_zone_tag:%s)\n", $2));
468 bitlist = config_parse_taglist(cfg_parser->cfg, $2,
470 free($2);
472 yyerror("could not parse tags, (define-tag them first)");
475 cfg_parser->cfg->auths->rpz_taglist = bitlist;
476 cfg_parser->cfg->auths->rpz_taglistlen = len;
484 OUTYY(("P(rpz_action_override:%s)\n", $2));
485 if(strcmp($2, "nxdomain")!=0 && strcmp($2, "nodata")!=0 &&
486 strcmp($2, "passthru")!=0 && strcmp($2, "drop")!=0 &&
487 strcmp($2, "cname")!=0 && strcmp($2, "disabled")!=0) {
488 yyerror("rpz-action-override action: expected nxdomain, "
490 free($2);
491 cfg_parser->cfg->auths->rpz_action_override = NULL;
494 cfg_parser->cfg->auths->rpz_action_override = $2;
501 OUTYY(("P(rpz_cname_override:%s)\n", $2));
502 free(cfg_parser->cfg->auths->rpz_cname);
503 cfg_parser->cfg->auths->rpz_cname = $2;
509 OUTYY(("P(rpz_log:%s)\n", $2));
510 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
512 else cfg_parser->cfg->auths->rpz_log = (strcmp($2, "yes")==0);
513 free($2);
519 OUTYY(("P(rpz_log_name:%s)\n", $2));
520 free(cfg_parser->cfg->auths->rpz_log_name);
521 cfg_parser->cfg->auths->rpz_log_name = $2;
526 OUTYY(("P(rpz_signal_nxdomain_ra:%s)\n", $2));
527 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
529 else cfg_parser->cfg->auths->rpz_signal_nxdomain_ra = (strcmp($2, "yes")==0);
530 free($2);
538 cfg_parser->started_toplevel = 1;
541 s->next = cfg_parser->cfg->auths;
542 cfg_parser->cfg->auths = s;
544 s->for_downstream = 0;
545 s->for_upstream = 0;
546 s->fallback_enabled = 0;
547 s->isrpz = 1;
561 OUTYY(("P(server_num_threads:%s)\n", $2));
562 if(atoi($2) == 0 && strcmp($2, "0") != 0)
564 else cfg_parser->cfg->num_threads = atoi($2);
565 free($2);
570 OUTYY(("P(server_verbosity:%s)\n", $2));
571 if(atoi($2) == 0 && strcmp($2, "0") != 0)
573 else cfg_parser->cfg->verbosity = atoi($2);
574 free($2);
579 OUTYY(("P(server_statistics_interval:%s)\n", $2));
580 if(strcmp($2, "") == 0 || strcmp($2, "0") == 0)
581 cfg_parser->cfg->stat_interval = 0;
582 else if(atoi($2) == 0)
584 else cfg_parser->cfg->stat_interval = atoi($2);
585 free($2);
590 OUTYY(("P(server_statistics_cumulative:%s)\n", $2));
591 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
593 else cfg_parser->cfg->stat_cumulative = (strcmp($2, "yes")==0);
594 free($2);
599 OUTYY(("P(server_extended_statistics:%s)\n", $2));
600 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
602 else cfg_parser->cfg->stat_extended = (strcmp($2, "yes")==0);
603 free($2);
608 OUTYY(("P(server_statistics_inhibit_zero:%s)\n", $2));
609 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
611 else cfg_parser->cfg->stat_inhibit_zero = (strcmp($2, "yes")==0);
612 free($2);
617 OUTYY(("P(server_shm_enable:%s)\n", $2));
618 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
620 else cfg_parser->cfg->shm_enable = (strcmp($2, "yes")==0);
621 free($2);
626 OUTYY(("P(server_shm_key:%s)\n", $2));
627 if(strcmp($2, "") == 0 || strcmp($2, "0") == 0)
628 cfg_parser->cfg->shm_key = 0;
629 else if(atoi($2) == 0)
631 else cfg_parser->cfg->shm_key = atoi($2);
632 free($2);
637 OUTYY(("P(server_port:%s)\n", $2));
638 if(atoi($2) == 0)
640 else cfg_parser->cfg->port = atoi($2);
641 free($2);
647 OUTYY(("P(server_send_client_subnet:%s)\n", $2));
648 if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, $2))
649 fatal_exit("out of memory adding client-subnet");
652 free($2);
659 OUTYY(("P(server_client_subnet_zone:%s)\n", $2));
660 if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet_zone,
661 $2))
662 fatal_exit("out of memory adding client-subnet-zone");
665 free($2);
673 OUTYY(("P(server_client_subnet_always_forward:%s)\n", $2));
674 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
677 cfg_parser->cfg->client_subnet_always_forward =
678 (strcmp($2, "yes")==0);
682 free($2);
688 OUTYY(("P(client_subnet_opcode:%s)\n", $2));
693 free($2);
699 OUTYY(("P(max_client_subnet_ipv4:%s)\n", $2));
700 if(atoi($2) == 0 && strcmp($2, "0") != 0)
702 else if (atoi($2) > 32)
703 cfg_parser->cfg->max_client_subnet_ipv4 = 32;
704 else if (atoi($2) < 0)
705 cfg_parser->cfg->max_client_subnet_ipv4 = 0;
706 else cfg_parser->cfg->max_client_subnet_ipv4 = (uint8_t)atoi($2);
710 free($2);
716 OUTYY(("P(max_client_subnet_ipv6:%s)\n", $2));
717 if(atoi($2) == 0 && strcmp($2, "0") != 0)
719 else if (atoi($2) > 128)
720 cfg_parser->cfg->max_client_subnet_ipv6 = 128;
721 else if (atoi($2) < 0)
722 cfg_parser->cfg->max_client_subnet_ipv6 = 0;
723 else cfg_parser->cfg->max_client_subnet_ipv6 = (uint8_t)atoi($2);
727 free($2);
733 OUTYY(("P(min_client_subnet_ipv4:%s)\n", $2));
734 if(atoi($2) == 0 && strcmp($2, "0") != 0)
736 else if (atoi($2) > 32)
737 cfg_parser->cfg->min_client_subnet_ipv4 = 32;
738 else if (atoi($2) < 0)
739 cfg_parser->cfg->min_client_subnet_ipv4 = 0;
740 else cfg_parser->cfg->min_client_subnet_ipv4 = (uint8_t)atoi($2);
744 free($2);
750 OUTYY(("P(min_client_subnet_ipv6:%s)\n", $2));
751 if(atoi($2) == 0 && strcmp($2, "0") != 0)
753 else if (atoi($2) > 128)
754 cfg_parser->cfg->min_client_subnet_ipv6 = 128;
755 else if (atoi($2) < 0)
756 cfg_parser->cfg->min_client_subnet_ipv6 = 0;
757 else cfg_parser->cfg->min_client_subnet_ipv6 = (uint8_t)atoi($2);
761 free($2);
767 OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", $2));
768 if(atoi($2) == 0 && strcmp($2, "0") != 0)
770 else if (atoi($2) < 0)
771 cfg_parser->cfg->max_ecs_tree_size_ipv4 = 0;
772 else cfg_parser->cfg->max_ecs_tree_size_ipv4 = (uint32_t)atoi($2);
776 free($2);
782 OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", $2));
783 if(atoi($2) == 0 && strcmp($2, "0") != 0)
785 else if (atoi($2) < 0)
786 cfg_parser->cfg->max_ecs_tree_size_ipv6 = 0;
787 else cfg_parser->cfg->max_ecs_tree_size_ipv6 = (uint32_t)atoi($2);
791 free($2);
796 OUTYY(("P(server_interface:%s)\n", $2));
797 if(cfg_parser->cfg->num_ifs == 0)
798 cfg_parser->cfg->ifs = calloc(1, sizeof(char*));
799 else cfg_parser->cfg->ifs = realloc(cfg_parser->cfg->ifs,
800 (cfg_parser->cfg->num_ifs+1)*sizeof(char*));
801 if(!cfg_parser->cfg->ifs)
804 cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = $2;
809 OUTYY(("P(server_outgoing_interface:%s)\n", $2));
810 if(cfg_parser->cfg->num_out_ifs == 0)
811 cfg_parser->cfg->out_ifs = calloc(1, sizeof(char*));
812 else cfg_parser->cfg->out_ifs = realloc(
813 cfg_parser->cfg->out_ifs,
814 (cfg_parser->cfg->num_out_ifs+1)*sizeof(char*));
815 if(!cfg_parser->cfg->out_ifs)
818 cfg_parser->cfg->out_ifs[
819 cfg_parser->cfg->num_out_ifs++] = $2;
824 OUTYY(("P(server_outgoing_range:%s)\n", $2));
825 if(atoi($2) == 0)
827 else cfg_parser->cfg->outgoing_num_ports = atoi($2);
828 free($2);
833 OUTYY(("P(server_outgoing_port_permit:%s)\n", $2));
834 if(!cfg_mark_ports($2, 1,
835 cfg_parser->cfg->outgoing_avail_ports, 65536))
836 yyerror("port number or range (\"low-high\") expected");
837 free($2);
842 OUTYY(("P(server_outgoing_port_avoid:%s)\n", $2));
843 if(!cfg_mark_ports($2, 0,
844 cfg_parser->cfg->outgoing_avail_ports, 65536))
845 yyerror("port number or range (\"low-high\") expected");
846 free($2);
851 OUTYY(("P(server_outgoing_num_tcp:%s)\n", $2));
852 if(atoi($2) == 0 && strcmp($2, "0") != 0)
854 else cfg_parser->cfg->outgoing_num_tcp = atoi($2);
855 free($2);
860 OUTYY(("P(server_incoming_num_tcp:%s)\n", $2));
861 if(atoi($2) == 0 && strcmp($2, "0") != 0)
863 else cfg_parser->cfg->incoming_num_tcp = atoi($2);
864 free($2);
869 OUTYY(("P(server_interface_automatic:%s)\n", $2));
870 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
872 else cfg_parser->cfg->if_automatic = (strcmp($2, "yes")==0);
873 free($2);
878 OUTYY(("P(server_interface_automatic_ports:%s)\n", $2));
879 free(cfg_parser->cfg->if_automatic_ports);
880 cfg_parser->cfg->if_automatic_ports = $2;
885 OUTYY(("P(server_do_ip4:%s)\n", $2));
886 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
888 else cfg_parser->cfg->do_ip4 = (strcmp($2, "yes")==0);
889 free($2);
894 OUTYY(("P(server_do_ip6:%s)\n", $2));
895 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
897 else cfg_parser->cfg->do_ip6 = (strcmp($2, "yes")==0);
898 free($2);
903 OUTYY(("P(server_do_nat64:%s)\n", $2));
904 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
906 else cfg_parser->cfg->do_nat64 = (strcmp($2, "yes")==0);
907 free($2);
912 OUTYY(("P(server_do_udp:%s)\n", $2));
913 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
915 else cfg_parser->cfg->do_udp = (strcmp($2, "yes")==0);
916 free($2);
921 OUTYY(("P(server_do_tcp:%s)\n", $2));
922 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
924 else cfg_parser->cfg->do_tcp = (strcmp($2, "yes")==0);
925 free($2);
930 OUTYY(("P(server_prefer_ip4:%s)\n", $2));
931 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
933 else cfg_parser->cfg->prefer_ip4 = (strcmp($2, "yes")==0);
934 free($2);
939 OUTYY(("P(server_prefer_ip6:%s)\n", $2));
940 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
942 else cfg_parser->cfg->prefer_ip6 = (strcmp($2, "yes")==0);
943 free($2);
948 OUTYY(("P(server_tcp_mss:%s)\n", $2));
949 if(atoi($2) == 0 && strcmp($2, "0") != 0)
951 else cfg_parser->cfg->tcp_mss = atoi($2);
952 free($2);
957 OUTYY(("P(server_outgoing_tcp_mss:%s)\n", $2));
958 if(atoi($2) == 0 && strcmp($2, "0") != 0)
960 else cfg_parser->cfg->outgoing_tcp_mss = atoi($2);
961 free($2);
966 OUTYY(("P(server_tcp_idle_timeout:%s)\n", $2));
967 if(atoi($2) == 0 && strcmp($2, "0") != 0)
969 else if (atoi($2) > 120000)
970 cfg_parser->cfg->tcp_idle_timeout = 120000;
971 else if (atoi($2) < 1)
972 cfg_parser->cfg->tcp_idle_timeout = 1;
973 else cfg_parser->cfg->tcp_idle_timeout = atoi($2);
974 free($2);
979 OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", $2));
980 if(atoi($2) == 0 && strcmp($2, "0") != 0)
982 else if (atoi($2) < 1)
983 cfg_parser->cfg->max_reuse_tcp_queries = 0;
984 else cfg_parser->cfg->max_reuse_tcp_queries = atoi($2);
985 free($2);
990 OUTYY(("P(server_tcp_reuse_timeout:%s)\n", $2));
991 if(atoi($2) == 0 && strcmp($2, "0") != 0)
993 else if (atoi($2) < 1)
994 cfg_parser->cfg->tcp_reuse_timeout = 0;
995 else cfg_parser->cfg->tcp_reuse_timeout = atoi($2);
996 free($2);
1001 OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", $2));
1002 if(atoi($2) == 0 && strcmp($2, "0") != 0)
1004 else if (atoi($2) < 1)
1005 cfg_parser->cfg->tcp_auth_query_timeout = 0;
1006 else cfg_parser->cfg->tcp_auth_query_timeout = atoi($2);
1007 free($2);
1012 OUTYY(("P(server_tcp_keepalive:%s)\n", $2));
1013 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1015 else cfg_parser->cfg->do_tcp_keepalive = (strcmp($2, "yes")==0);
1016 free($2);
1021 OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", $2));
1022 if(atoi($2) == 0 && strcmp($2, "0") != 0)
1024 else if (atoi($2) > 6553500)
1025 cfg_parser->cfg->tcp_keepalive_timeout = 6553500;
1026 else if (atoi($2) < 1)
1027 cfg_parser->cfg->tcp_keepalive_timeout = 0;
1028 else cfg_parser->cfg->tcp_keepalive_timeout = atoi($2);
1029 free($2);
1034 OUTYY(("P(server_sock_queue_timeout:%s)\n", $2));
1035 if(atoi($2) == 0 && strcmp($2, "0") != 0)
1037 else if (atoi($2) > 6553500)
1038 cfg_parser->cfg->sock_queue_timeout = 6553500;
1039 else if (atoi($2) < 1)
1040 cfg_parser->cfg->sock_queue_timeout = 0;
1041 else cfg_parser->cfg->sock_queue_timeout = atoi($2);
1042 free($2);
1047 OUTYY(("P(server_tcp_upstream:%s)\n", $2));
1048 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1050 else cfg_parser->cfg->tcp_upstream = (strcmp($2, "yes")==0);
1051 free($2);
1056 OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", $2));
1057 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1059 else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp($2, "yes")==0);
1060 free($2);
1065 OUTYY(("P(server_ssl_upstream:%s)\n", $2));
1066 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1068 else cfg_parser->cfg->ssl_upstream = (strcmp($2, "yes")==0);
1069 free($2);
1074 OUTYY(("P(server_ssl_service_key:%s)\n", $2));
1075 free(cfg_parser->cfg->ssl_service_key);
1076 cfg_parser->cfg->ssl_service_key = $2;
1081 OUTYY(("P(server_ssl_service_pem:%s)\n", $2));
1082 free(cfg_parser->cfg->ssl_service_pem);
1083 cfg_parser->cfg->ssl_service_pem = $2;
1088 OUTYY(("P(server_ssl_port:%s)\n", $2));
1089 if(atoi($2) == 0)
1091 else cfg_parser->cfg->ssl_port = atoi($2);
1092 free($2);
1097 OUTYY(("P(server_tls_cert_bundle:%s)\n", $2));
1098 free(cfg_parser->cfg->tls_cert_bundle);
1099 cfg_parser->cfg->tls_cert_bundle = $2;
1104 OUTYY(("P(server_tls_win_cert:%s)\n", $2));
1105 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1107 else cfg_parser->cfg->tls_win_cert = (strcmp($2, "yes")==0);
1108 free($2);
1113 OUTYY(("P(server_tls_additional_port:%s)\n", $2));
1114 if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port,
1115 $2))
1121 OUTYY(("P(server_tls_ciphers:%s)\n", $2));
1122 free(cfg_parser->cfg->tls_ciphers);
1123 cfg_parser->cfg->tls_ciphers = $2;
1128 OUTYY(("P(server_tls_ciphersuites:%s)\n", $2));
1129 free(cfg_parser->cfg->tls_ciphersuites);
1130 cfg_parser->cfg->tls_ciphersuites = $2;
1135 OUTYY(("P(server_tls_session_ticket_keys:%s)\n", $2));
1136 if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys,
1137 $2))
1143 OUTYY(("P(server_tls_use_sni:%s)\n", $2));
1144 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1146 else cfg_parser->cfg->tls_use_sni = (strcmp($2, "yes")==0);
1147 free($2);
1152 OUTYY(("P(server_https_port:%s)\n", $2));
1153 if(atoi($2) == 0)
1155 else cfg_parser->cfg->https_port = atoi($2);
1156 free($2);
1160 OUTYY(("P(server_http_endpoint:%s)\n", $2));
1161 free(cfg_parser->cfg->http_endpoint);
1162 if($2 && $2[0] != '/') {
1163 cfg_parser->cfg->http_endpoint = malloc(strlen($2)+2);
1164 if(!cfg_parser->cfg->http_endpoint)
1166 cfg_parser->cfg->http_endpoint[0] = '/';
1167 memmove(cfg_parser->cfg->http_endpoint+1, $2,
1168 strlen($2)+1);
1169 free($2);
1171 cfg_parser->cfg->http_endpoint = $2;
1176 OUTYY(("P(server_http_max_streams:%s)\n", $2));
1177 if(atoi($2) == 0 && strcmp($2, "0") != 0)
1179 else cfg_parser->cfg->http_max_streams = atoi($2);
1180 free($2);
1184 OUTYY(("P(server_http_query_buffer_size:%s)\n", $2));
1185 if(!cfg_parse_memsize($2,
1186 &cfg_parser->cfg->http_query_buffer_size))
1188 free($2);
1192 OUTYY(("P(server_http_response_buffer_size:%s)\n", $2));
1193 if(!cfg_parse_memsize($2,
1194 &cfg_parser->cfg->http_response_buffer_size))
1196 free($2);
1200 OUTYY(("P(server_http_nodelay:%s)\n", $2));
1201 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1203 else cfg_parser->cfg->http_nodelay = (strcmp($2, "yes")==0);
1204 free($2);
1208 OUTYY(("P(server_http_notls_downstream:%s)\n", $2));
1209 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1211 else cfg_parser->cfg->http_notls_downstream = (strcmp($2, "yes")==0);
1212 free($2);
1216 OUTYY(("P(server_quic_port:%s)\n", $2));
1220 "over QUIC.", cfg_parser->filename, cfg_parser->line);
1222 if(atoi($2) == 0)
1224 else cfg_parser->cfg->quic_port = atoi($2);
1225 free($2);
1229 OUTYY(("P(server_quic_size:%s)\n", $2));
1230 if(!cfg_parse_memsize($2, &cfg_parser->cfg->quic_size))
1232 free($2);
1236 OUTYY(("P(server_use_systemd:%s)\n", $2));
1237 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1239 else cfg_parser->cfg->use_systemd = (strcmp($2, "yes")==0);
1240 free($2);
1245 OUTYY(("P(server_do_daemonize:%s)\n", $2));
1246 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1248 else cfg_parser->cfg->do_daemonize = (strcmp($2, "yes")==0);
1249 free($2);
1254 OUTYY(("P(server_use_syslog:%s)\n", $2));
1255 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1257 else cfg_parser->cfg->use_syslog = (strcmp($2, "yes")==0);
1259 if(strcmp($2, "yes") == 0)
1263 free($2);
1268 OUTYY(("P(server_log_time_ascii:%s)\n", $2));
1269 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1271 else cfg_parser->cfg->log_time_ascii = (strcmp($2, "yes")==0);
1272 free($2);
1277 OUTYY(("P(server_log_time_iso:%s)\n", $2));
1278 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1280 else cfg_parser->cfg->log_time_iso = (strcmp($2, "yes")==0);
1281 free($2);
1286 OUTYY(("P(server_log_queries:%s)\n", $2));
1287 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1289 else cfg_parser->cfg->log_queries = (strcmp($2, "yes")==0);
1290 free($2);
1295 OUTYY(("P(server_log_replies:%s)\n", $2));
1296 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1298 else cfg_parser->cfg->log_replies = (strcmp($2, "yes")==0);
1299 free($2);
1304 OUTYY(("P(server_log_tag_queryreply:%s)\n", $2));
1305 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1307 else cfg_parser->cfg->log_tag_queryreply = (strcmp($2, "yes")==0);
1308 free($2);
1313 OUTYY(("P(server_log_servfail:%s)\n", $2));
1314 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1316 else cfg_parser->cfg->log_servfail = (strcmp($2, "yes")==0);
1317 free($2);
1322 OUTYY(("P(server_log_destaddr:%s)\n", $2));
1323 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1325 else cfg_parser->cfg->log_destaddr = (strcmp($2, "yes")==0);
1326 free($2);
1331 OUTYY(("P(server_log_local_actions:%s)\n", $2));
1332 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1334 else cfg_parser->cfg->log_local_actions = (strcmp($2, "yes")==0);
1335 free($2);
1340 OUTYY(("P(server_chroot:%s)\n", $2));
1341 free(cfg_parser->cfg->chrootdir);
1342 cfg_parser->cfg->chrootdir = $2;
1347 OUTYY(("P(server_username:%s)\n", $2));
1348 free(cfg_parser->cfg->username);
1349 cfg_parser->cfg->username = $2;
1354 OUTYY(("P(server_directory:%s)\n", $2));
1355 free(cfg_parser->cfg->directory);
1356 cfg_parser->cfg->directory = $2;
1358 if($2[0]) {
1361 w_config_adjust_directory(cfg_parser->cfg);
1363 d = cfg_parser->cfg->directory;
1366 if(cfg_parser->chroot && cfg_parser->chroot[0] &&
1367 strncmp(d, cfg_parser->chroot, strlen(
1368 cfg_parser->chroot)) == 0)
1369 d += strlen(cfg_parser->chroot);
1370 if(d[0]) {
1380 OUTYY(("P(server_logfile:%s)\n", $2));
1381 free(cfg_parser->cfg->logfile);
1382 cfg_parser->cfg->logfile = $2;
1383 cfg_parser->cfg->use_syslog = 0;
1388 OUTYY(("P(server_pidfile:%s)\n", $2));
1389 free(cfg_parser->cfg->pidfile);
1390 cfg_parser->cfg->pidfile = $2;
1395 OUTYY(("P(server_root_hints:%s)\n", $2));
1396 if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, $2))
1402 OUTYY(("P(server_dlv_anchor_file:%s)\n", $2));
1403 log_warn("option dlv-anchor-file ignored: DLV is decommissioned");
1404 free($2);
1409 OUTYY(("P(server_dlv_anchor:%s)\n", $2));
1410 log_warn("option dlv-anchor ignored: DLV is decommissioned");
1411 free($2);
1416 OUTYY(("P(server_auto_trust_anchor_file:%s)\n", $2));
1417 if(!cfg_strlist_insert(&cfg_parser->cfg->
1418 auto_trust_anchor_file_list, $2))
1424 OUTYY(("P(server_trust_anchor_file:%s)\n", $2));
1425 if(!cfg_strlist_insert(&cfg_parser->cfg->
1426 trust_anchor_file_list, $2))
1432 OUTYY(("P(server_trusted_keys_file:%s)\n", $2));
1433 if(!cfg_strlist_insert(&cfg_parser->cfg->
1434 trusted_keys_file_list, $2))
1440 OUTYY(("P(server_trust_anchor:%s)\n", $2));
1441 if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, $2))
1447 OUTYY(("P(server_trust_anchor_signaling:%s)\n", $2));
1448 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1451 cfg_parser->cfg->trust_anchor_signaling =
1452 (strcmp($2, "yes")==0);
1453 free($2);
1458 OUTYY(("P(server_root_key_sentinel:%s)\n", $2));
1459 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1462 cfg_parser->cfg->root_key_sentinel =
1463 (strcmp($2, "yes")==0);
1464 free($2);
1469 OUTYY(("P(server_domain_insecure:%s)\n", $2));
1470 if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, $2))
1476 OUTYY(("P(server_hide_identity:%s)\n", $2));
1477 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1479 else cfg_parser->cfg->hide_identity = (strcmp($2, "yes")==0);
1480 free($2);
1485 OUTYY(("P(server_hide_version:%s)\n", $2));
1486 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1488 else cfg_parser->cfg->hide_version = (strcmp($2, "yes")==0);
1489 free($2);
1494 OUTYY(("P(server_hide_trustanchor:%s)\n", $2));
1495 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1497 else cfg_parser->cfg->hide_trustanchor = (strcmp($2, "yes")==0);
1498 free($2);
1503 OUTYY(("P(server_hide_user_agent:%s)\n", $2));
1504 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1506 else cfg_parser->cfg->hide_http_user_agent = (strcmp($2, "yes")==0);
1507 free($2);
1512 OUTYY(("P(server_identity:%s)\n", $2));
1513 free(cfg_parser->cfg->identity);
1514 cfg_parser->cfg->identity = $2;
1519 OUTYY(("P(server_version:%s)\n", $2));
1520 free(cfg_parser->cfg->version);
1521 cfg_parser->cfg->version = $2;
1526 OUTYY(("P(server_http_user_agent:%s)\n", $2));
1527 free(cfg_parser->cfg->http_user_agent);
1528 cfg_parser->cfg->http_user_agent = $2;
1533 OUTYY(("P(server_nsid:%s)\n", $2));
1534 free(cfg_parser->cfg->nsid_cfg_str);
1535 cfg_parser->cfg->nsid_cfg_str = $2;
1536 free(cfg_parser->cfg->nsid);
1537 cfg_parser->cfg->nsid = NULL;
1538 cfg_parser->cfg->nsid_len = 0;
1539 if (*$2 == 0)
1541 else if (!(cfg_parser->cfg->nsid = cfg_parse_nsid(
1542 $2, &cfg_parser->cfg->nsid_len)))
1549 OUTYY(("P(server_so_rcvbuf:%s)\n", $2));
1550 if(!cfg_parse_memsize($2, &cfg_parser->cfg->so_rcvbuf))
1552 free($2);
1557 OUTYY(("P(server_so_sndbuf:%s)\n", $2));
1558 if(!cfg_parse_memsize($2, &cfg_parser->cfg->so_sndbuf))
1560 free($2);
1565 OUTYY(("P(server_so_reuseport:%s)\n", $2));
1566 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1568 else cfg_parser->cfg->so_reuseport =
1569 (strcmp($2, "yes")==0);
1570 free($2);
1575 OUTYY(("P(server_ip_transparent:%s)\n", $2));
1576 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1578 else cfg_parser->cfg->ip_transparent =
1579 (strcmp($2, "yes")==0);
1580 free($2);
1585 OUTYY(("P(server_ip_freebind:%s)\n", $2));
1586 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1588 else cfg_parser->cfg->ip_freebind =
1589 (strcmp($2, "yes")==0);
1590 free($2);
1595 OUTYY(("P(server_ip_dscp:%s)\n", $2));
1596 if(atoi($2) == 0 && strcmp($2, "0") != 0)
1598 else if (atoi($2) > 63)
1600 else if (atoi($2) < 0)
1601 yyerror("value too small (min 0)");
1603 cfg_parser->cfg->ip_dscp = atoi($2);
1604 free($2);
1609 OUTYY(("P(server_stream_wait_size:%s)\n", $2));
1610 if(!cfg_parse_memsize($2, &cfg_parser->cfg->stream_wait_size))
1612 free($2);
1617 OUTYY(("P(server_edns_buffer_size:%s)\n", $2));
1618 if(atoi($2) == 0)
1620 else if (atoi($2) < 12)
1622 else if (atoi($2) > 65535)
1623 cfg_parser->cfg->edns_buffer_size = 65535;
1624 else cfg_parser->cfg->edns_buffer_size = atoi($2);
1625 free($2);
1630 OUTYY(("P(server_msg_buffer_size:%s)\n", $2));
1631 if(atoi($2) == 0)
1633 else if (atoi($2) < 4096)
1635 else cfg_parser->cfg->msg_buffer_size = atoi($2);
1636 free($2);
1641 OUTYY(("P(server_msg_cache_size:%s)\n", $2));
1642 if(!cfg_parse_memsize($2, &cfg_parser->cfg->msg_cache_size))
1644 free($2);
1649 OUTYY(("P(server_msg_cache_slabs:%s)\n", $2));
1650 if(atoi($2) == 0) {
1653 cfg_parser->cfg->msg_cache_slabs = atoi($2);
1654 if(!is_pow2(cfg_parser->cfg->msg_cache_slabs))
1655 yyerror("must be a power of 2");
1657 free($2);
1662 OUTYY(("P(server_num_queries_per_thread:%s)\n", $2));
1663 if(atoi($2) == 0)
1665 else cfg_parser->cfg->num_queries_per_thread = atoi($2);
1666 free($2);
1671 OUTYY(("P(server_jostle_timeout:%s)\n", $2));
1672 if(atoi($2) == 0 && strcmp($2, "0") != 0)
1674 else cfg_parser->cfg->jostle_time = atoi($2);
1675 free($2);
1680 OUTYY(("P(server_delay_close:%s)\n", $2));
1681 if(atoi($2) == 0 && strcmp($2, "0") != 0)
1683 else cfg_parser->cfg->delay_close = atoi($2);
1684 free($2);
1689 OUTYY(("P(server_udp_connect:%s)\n", $2));
1690 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1692 else cfg_parser->cfg->udp_connect = (strcmp($2, "yes")==0);
1693 free($2);
1698 OUTYY(("P(server_unblock_lan_zones:%s)\n", $2));
1699 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1701 else cfg_parser->cfg->unblock_lan_zones =
1702 (strcmp($2, "yes")==0);
1703 free($2);
1708 OUTYY(("P(server_insecure_lan_zones:%s)\n", $2));
1709 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1711 else cfg_parser->cfg->insecure_lan_zones =
1712 (strcmp($2, "yes")==0);
1713 free($2);
1718 OUTYY(("P(server_rrset_cache_size:%s)\n", $2));
1719 if(!cfg_parse_memsize($2, &cfg_parser->cfg->rrset_cache_size))
1721 free($2);
1726 OUTYY(("P(server_rrset_cache_slabs:%s)\n", $2));
1727 if(atoi($2) == 0) {
1730 cfg_parser->cfg->rrset_cache_slabs = atoi($2);
1731 if(!is_pow2(cfg_parser->cfg->rrset_cache_slabs))
1732 yyerror("must be a power of 2");
1734 free($2);
1739 OUTYY(("P(server_infra_host_ttl:%s)\n", $2));
1740 if(atoi($2) == 0 && strcmp($2, "0") != 0)
1742 else cfg_parser->cfg->host_ttl = atoi($2);
1743 free($2);
1748 OUTYY(("P(server_infra_lame_ttl:%s)\n", $2));
1749 verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option "
1750 "removed, use infra-host-ttl)", $2);
1751 free($2);
1756 OUTYY(("P(server_infra_cache_numhosts:%s)\n", $2));
1757 if(atoi($2) == 0)
1759 else cfg_parser->cfg->infra_cache_numhosts = atoi($2);
1760 free($2);
1765 OUTYY(("P(server_infra_cache_lame_size:%s)\n", $2));
1766 verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s "
1767 "(option removed, use infra-cache-numhosts)", $2);
1768 free($2);
1773 OUTYY(("P(server_infra_cache_slabs:%s)\n", $2));
1774 if(atoi($2) == 0) {
1777 cfg_parser->cfg->infra_cache_slabs = atoi($2);
1778 if(!is_pow2(cfg_parser->cfg->infra_cache_slabs))
1779 yyerror("must be a power of 2");
1781 free($2);
1786 OUTYY(("P(server_infra_cache_min_rtt:%s)\n", $2));
1787 if(atoi($2) == 0 && strcmp($2, "0") != 0)
1789 else cfg_parser->cfg->infra_cache_min_rtt = atoi($2);
1790 free($2);
1795 OUTYY(("P(server_infra_cache_max_rtt:%s)\n", $2));
1796 if(atoi($2) == 0 && strcmp($2, "0") != 0)
1798 else cfg_parser->cfg->infra_cache_max_rtt = atoi($2);
1799 free($2);
1804 OUTYY(("P(server_infra_keep_probing:%s)\n", $2));
1805 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1807 else cfg_parser->cfg->infra_keep_probing =
1808 (strcmp($2, "yes")==0);
1809 free($2);
1814 OUTYY(("P(server_target_fetch_policy:%s)\n", $2));
1815 free(cfg_parser->cfg->target_fetch_policy);
1816 cfg_parser->cfg->target_fetch_policy = $2;
1821 OUTYY(("P(server_harden_short_bufsize:%s)\n", $2));
1822 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1824 else cfg_parser->cfg->harden_short_bufsize =
1825 (strcmp($2, "yes")==0);
1826 free($2);
1831 OUTYY(("P(server_harden_large_queries:%s)\n", $2));
1832 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1834 else cfg_parser->cfg->harden_large_queries =
1835 (strcmp($2, "yes")==0);
1836 free($2);
1841 OUTYY(("P(server_harden_glue:%s)\n", $2));
1842 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1844 else cfg_parser->cfg->harden_glue =
1845 (strcmp($2, "yes")==0);
1846 free($2);
1851 OUTYY(("P(server_harden_unverified_glue:%s)\n", $2));
1852 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1854 else cfg_parser->cfg->harden_unverified_glue =
1855 (strcmp($2, "yes")==0);
1856 free($2);
1861 OUTYY(("P(server_harden_dnssec_stripped:%s)\n", $2));
1862 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1864 else cfg_parser->cfg->harden_dnssec_stripped =
1865 (strcmp($2, "yes")==0);
1866 free($2);
1871 OUTYY(("P(server_harden_below_nxdomain:%s)\n", $2));
1872 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1874 else cfg_parser->cfg->harden_below_nxdomain =
1875 (strcmp($2, "yes")==0);
1876 free($2);
1881 OUTYY(("P(server_harden_referral_path:%s)\n", $2));
1882 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1884 else cfg_parser->cfg->harden_referral_path =
1885 (strcmp($2, "yes")==0);
1886 free($2);
1891 OUTYY(("P(server_harden_algo_downgrade:%s)\n", $2));
1892 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1894 else cfg_parser->cfg->harden_algo_downgrade =
1895 (strcmp($2, "yes")==0);
1896 free($2);
1901 OUTYY(("P(server_harden_unknown_additional:%s)\n", $2));
1902 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1904 else cfg_parser->cfg->harden_unknown_additional =
1905 (strcmp($2, "yes")==0);
1906 free($2);
1911 OUTYY(("P(server_use_caps_for_id:%s)\n", $2));
1912 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1914 else cfg_parser->cfg->use_caps_bits_for_id =
1915 (strcmp($2, "yes")==0);
1916 free($2);
1921 OUTYY(("P(server_caps_whitelist:%s)\n", $2));
1922 if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, $2))
1928 OUTYY(("P(server_private_address:%s)\n", $2));
1929 if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, $2))
1935 OUTYY(("P(server_private_domain:%s)\n", $2));
1936 if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, $2))
1942 OUTYY(("P(server_prefetch:%s)\n", $2));
1943 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1945 else cfg_parser->cfg->prefetch = (strcmp($2, "yes")==0);
1946 free($2);
1951 OUTYY(("P(server_prefetch_key:%s)\n", $2));
1952 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1954 else cfg_parser->cfg->prefetch_key = (strcmp($2, "yes")==0);
1955 free($2);
1960 OUTYY(("P(server_deny_any:%s)\n", $2));
1961 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1963 else cfg_parser->cfg->deny_any = (strcmp($2, "yes")==0);
1964 free($2);
1969 OUTYY(("P(server_unwanted_reply_threshold:%s)\n", $2));
1970 if(atoi($2) == 0 && strcmp($2, "0") != 0)
1972 else cfg_parser->cfg->unwanted_threshold = atoi($2);
1973 free($2);
1978 OUTYY(("P(server_do_not_query_address:%s)\n", $2));
1979 if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, $2))
1985 OUTYY(("P(server_do_not_query_localhost:%s)\n", $2));
1986 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
1988 else cfg_parser->cfg->donotquery_localhost =
1989 (strcmp($2, "yes")==0);
1990 free($2);
1995 OUTYY(("P(server_access_control:%s %s)\n", $2, $3));
1997 if(!cfg_str2list_insert(&cfg_parser->cfg->acls, $2, $3))
2003 OUTYY(("P(server_interface_action:%s %s)\n", $2, $3));
2006 &cfg_parser->cfg->interface_actions, $2, $3))
2012 OUTYY(("P(server_module_conf:%s)\n", $2));
2013 free(cfg_parser->cfg->module_conf);
2014 cfg_parser->cfg->module_conf = $2;
2019 OUTYY(("P(server_val_override_date:%s)\n", $2));
2020 if(*$2 == '\0' || strcmp($2, "0") == 0) {
2021 cfg_parser->cfg->val_date_override = 0;
2022 } else if(strlen($2) == 14) {
2023 cfg_parser->cfg->val_date_override =
2024 cfg_convert_timeval($2);
2025 if(!cfg_parser->cfg->val_date_override)
2028 if(atoi($2) == 0)
2030 cfg_parser->cfg->val_date_override = atoi($2);
2032 free($2);
2037 OUTYY(("P(server_val_sig_skew_min:%s)\n", $2));
2038 if(*$2 == '\0' || strcmp($2, "0") == 0) {
2039 cfg_parser->cfg->val_sig_skew_min = 0;
2041 cfg_parser->cfg->val_sig_skew_min = atoi($2);
2042 if(!cfg_parser->cfg->val_sig_skew_min)
2045 free($2);
2050 OUTYY(("P(server_val_sig_skew_max:%s)\n", $2));
2051 if(*$2 == '\0' || strcmp($2, "0") == 0) {
2052 cfg_parser->cfg->val_sig_skew_max = 0;
2054 cfg_parser->cfg->val_sig_skew_max = atoi($2);
2055 if(!cfg_parser->cfg->val_sig_skew_max)
2058 free($2);
2063 OUTYY(("P(server_val_max_restart:%s)\n", $2));
2064 if(*$2 == '\0' || strcmp($2, "0") == 0) {
2065 cfg_parser->cfg->val_max_restart = 0;
2067 cfg_parser->cfg->val_max_restart = atoi($2);
2068 if(!cfg_parser->cfg->val_max_restart)
2071 free($2);
2076 OUTYY(("P(server_cache_max_ttl:%s)\n", $2));
2077 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2079 else cfg_parser->cfg->max_ttl = atoi($2);
2080 free($2);
2085 OUTYY(("P(server_cache_max_negative_ttl:%s)\n", $2));
2086 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2088 else cfg_parser->cfg->max_negative_ttl = atoi($2);
2089 free($2);
2094 OUTYY(("P(server_cache_min_negative_ttl:%s)\n", $2));
2095 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2097 else cfg_parser->cfg->min_negative_ttl = atoi($2);
2098 free($2);
2103 OUTYY(("P(server_cache_min_ttl:%s)\n", $2));
2104 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2106 else cfg_parser->cfg->min_ttl = atoi($2);
2107 free($2);
2112 OUTYY(("P(server_bogus_ttl:%s)\n", $2));
2113 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2115 else cfg_parser->cfg->bogus_ttl = atoi($2);
2116 free($2);
2121 OUTYY(("P(server_val_clean_additional:%s)\n", $2));
2122 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2124 else cfg_parser->cfg->val_clean_additional =
2125 (strcmp($2, "yes")==0);
2126 free($2);
2131 OUTYY(("P(server_val_permissive_mode:%s)\n", $2));
2132 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2134 else cfg_parser->cfg->val_permissive_mode =
2135 (strcmp($2, "yes")==0);
2136 free($2);
2141 OUTYY(("P(server_aggressive_nsec:%s)\n", $2));
2142 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2145 cfg_parser->cfg->aggressive_nsec =
2146 (strcmp($2, "yes")==0);
2147 free($2);
2152 OUTYY(("P(server_ignore_cd_flag:%s)\n", $2));
2153 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2155 else cfg_parser->cfg->ignore_cd = (strcmp($2, "yes")==0);
2156 free($2);
2161 OUTYY(("P(server_disable_edns_do:%s)\n", $2));
2162 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2164 else cfg_parser->cfg->disable_edns_do = (strcmp($2, "yes")==0);
2165 free($2);
2170 OUTYY(("P(server_serve_expired:%s)\n", $2));
2171 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2173 else cfg_parser->cfg->serve_expired = (strcmp($2, "yes")==0);
2174 free($2);
2179 OUTYY(("P(server_serve_expired_ttl:%s)\n", $2));
2180 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2182 else cfg_parser->cfg->serve_expired_ttl = atoi($2);
2183 free($2);
2188 OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", $2));
2189 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2191 else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp($2, "yes")==0);
2192 free($2);
2197 OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", $2));
2198 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2200 else cfg_parser->cfg->serve_expired_reply_ttl = atoi($2);
2201 free($2);
2206 OUTYY(("P(server_serve_expired_client_timeout:%s)\n", $2));
2207 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2209 else cfg_parser->cfg->serve_expired_client_timeout = atoi($2);
2210 free($2);
2215 OUTYY(("P(server_ede_serve_expired:%s)\n", $2));
2216 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2218 else cfg_parser->cfg->ede_serve_expired = (strcmp($2, "yes")==0);
2219 free($2);
2224 OUTYY(("P(server_serve_original_ttl:%s)\n", $2));
2225 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2227 else cfg_parser->cfg->serve_original_ttl = (strcmp($2, "yes")==0);
2228 free($2);
2233 OUTYY(("P(server_fake_dsa:%s)\n", $2));
2234 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2237 else fake_dsa = (strcmp($2, "yes")==0);
2241 free($2);
2246 OUTYY(("P(server_fake_sha1:%s)\n", $2));
2247 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2250 else fake_sha1 = (strcmp($2, "yes")==0);
2254 free($2);
2259 OUTYY(("P(server_val_log_level:%s)\n", $2));
2260 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2262 else cfg_parser->cfg->val_log_level = atoi($2);
2263 free($2);
2268 OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", $2));
2269 free(cfg_parser->cfg->val_nsec3_key_iterations);
2270 cfg_parser->cfg->val_nsec3_key_iterations = $2;
2275 OUTYY(("P(server_zonemd_permissive_mode:%s)\n", $2));
2276 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2278 else cfg_parser->cfg->zonemd_permissive_mode = (strcmp($2, "yes")==0);
2279 free($2);
2284 OUTYY(("P(server_add_holddown:%s)\n", $2));
2285 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2287 else cfg_parser->cfg->add_holddown = atoi($2);
2288 free($2);
2293 OUTYY(("P(server_del_holddown:%s)\n", $2));
2294 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2296 else cfg_parser->cfg->del_holddown = atoi($2);
2297 free($2);
2302 OUTYY(("P(server_keep_missing:%s)\n", $2));
2303 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2305 else cfg_parser->cfg->keep_missing = atoi($2);
2306 free($2);
2311 OUTYY(("P(server_permit_small_holddown:%s)\n", $2));
2312 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2314 else cfg_parser->cfg->permit_small_holddown =
2315 (strcmp($2, "yes")==0);
2316 free($2);
2321 OUTYY(("P(server_key_cache_size:%s)\n", $2));
2322 if(!cfg_parse_memsize($2, &cfg_parser->cfg->key_cache_size))
2324 free($2);
2329 OUTYY(("P(server_key_cache_slabs:%s)\n", $2));
2330 if(atoi($2) == 0) {
2333 cfg_parser->cfg->key_cache_slabs = atoi($2);
2334 if(!is_pow2(cfg_parser->cfg->key_cache_slabs))
2335 yyerror("must be a power of 2");
2337 free($2);
2342 OUTYY(("P(server_neg_cache_size:%s)\n", $2));
2343 if(!cfg_parse_memsize($2, &cfg_parser->cfg->neg_cache_size))
2345 free($2);
2350 OUTYY(("P(server_local_zone:%s %s)\n", $2, $3));
2351 if(strcmp($3, "static")!=0 && strcmp($3, "deny")!=0 &&
2352 strcmp($3, "refuse")!=0 && strcmp($3, "redirect")!=0 &&
2353 strcmp($3, "transparent")!=0 && strcmp($3, "nodefault")!=0
2354 && strcmp($3, "typetransparent")!=0
2355 && strcmp($3, "always_transparent")!=0
2356 && strcmp($3, "block_a")!=0
2357 && strcmp($3, "always_refuse")!=0
2358 && strcmp($3, "always_nxdomain")!=0
2359 && strcmp($3, "always_nodata")!=0
2360 && strcmp($3, "always_deny")!=0
2361 && strcmp($3, "always_null")!=0
2362 && strcmp($3, "noview")!=0
2363 && strcmp($3, "inform")!=0 && strcmp($3, "inform_deny")!=0
2364 && strcmp($3, "inform_redirect") != 0
2365 && strcmp($3, "ipset") != 0) {
2366 yyerror("local-zone type: expected static, deny, "
2373 free($2);
2375 } else if(strcmp($3, "nodefault")==0) {
2376 if(!cfg_strlist_insert(&cfg_parser->cfg->
2377 local_zones_nodefault, $2))
2378 fatal_exit("out of memory adding local-zone");
2381 } else if(strcmp($3, "ipset")==0) {
2382 size_t len = strlen($2);
2385 if($2[len-1] != '.') {
2386 if(!($2 = realloc($2, len+2))) {
2387 fatal_exit("out of memory adding local-zone");
2389 $2[len] = '.';
2390 $2[len+1] = 0;
2392 if(!cfg_strlist_insert(&cfg_parser->cfg->
2393 local_zones_ipset, $2))
2394 fatal_exit("out of memory adding local-zone");
2398 if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones,
2399 $2, $3))
2400 fatal_exit("out of memory adding local-zone");
2406 OUTYY(("P(server_local_data:%s)\n", $2));
2407 if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, $2))
2408 fatal_exit("out of memory adding local-data");
2414 OUTYY(("P(server_local_data_ptr:%s)\n", $2));
2415 ptr = cfg_ptr_reverse($2);
2416 free($2);
2418 if(!cfg_strlist_insert(&cfg_parser->cfg->
2420 fatal_exit("out of memory adding local-data");
2422 yyerror("local-data-ptr could not be reversed");
2428 OUTYY(("P(server_minimal_responses:%s)\n", $2));
2429 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2431 else cfg_parser->cfg->minimal_responses =
2432 (strcmp($2, "yes")==0);
2433 free($2);
2438 OUTYY(("P(server_rrset_roundrobin:%s)\n", $2));
2439 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2441 else cfg_parser->cfg->rrset_roundrobin =
2442 (strcmp($2, "yes")==0);
2443 free($2);
2448 OUTYY(("P(server_unknown_server_time_limit:%s)\n", $2));
2449 cfg_parser->cfg->unknown_server_time_limit = atoi($2);
2450 free($2);
2455 OUTYY(("P(server_discard_timeout:%s)\n", $2));
2456 cfg_parser->cfg->discard_timeout = atoi($2);
2457 free($2);
2462 OUTYY(("P(server_wait_limit:%s)\n", $2));
2463 cfg_parser->cfg->wait_limit = atoi($2);
2464 free($2);
2469 OUTYY(("P(server_wait_limit_cookie:%s)\n", $2));
2470 cfg_parser->cfg->wait_limit_cookie = atoi($2);
2471 free($2);
2476 OUTYY(("P(server_wait_limit_netblock:%s %s)\n", $2, $3));
2477 if(atoi($3) == 0 && strcmp($3, "0") != 0) {
2479 free($2);
2482 if(!cfg_str2list_insert(&cfg_parser->cfg->
2483 wait_limit_netblock, $2, $3))
2485 "wait-limit-netblock");
2491 OUTYY(("P(server_wait_limit_cookie_netblock:%s %s)\n", $2, $3));
2492 if(atoi($3) == 0 && strcmp($3, "0") != 0) {
2494 free($2);
2497 if(!cfg_str2list_insert(&cfg_parser->cfg->
2498 wait_limit_cookie_netblock, $2, $3))
2500 "wait-limit-cookie-netblock");
2506 OUTYY(("P(server_max_udp_size:%s)\n", $2));
2507 cfg_parser->cfg->max_udp_size = atoi($2);
2508 free($2);
2513 OUTYY(("P(dns64_prefix:%s)\n", $2));
2514 free(cfg_parser->cfg->dns64_prefix);
2515 cfg_parser->cfg->dns64_prefix = $2;
2520 OUTYY(("P(server_dns64_synthall:%s)\n", $2));
2521 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2523 else cfg_parser->cfg->dns64_synthall = (strcmp($2, "yes")==0);
2524 free($2);
2529 OUTYY(("P(dns64_ignore_aaaa:%s)\n", $2));
2530 if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa,
2531 $2))
2532 fatal_exit("out of memory adding dns64-ignore-aaaa");
2537 OUTYY(("P(nat64_prefix:%s)\n", $2));
2538 free(cfg_parser->cfg->nat64_prefix);
2539 cfg_parser->cfg->nat64_prefix = $2;
2544 char* p, *s = $2;
2545 OUTYY(("P(server_define_tag:%s)\n", $2));
2548 if(!config_add_tag(cfg_parser->cfg, p))
2549 yyerror("could not define-tag, "
2553 free($2);
2558 size_t len = 0;
2559 uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, $3,
2562 OUTYY(("P(server_local_zone_tag:%s)\n", $2));
2564 yyerror("could not parse tags, (define-tag them first)");
2565 free($2);
2569 &cfg_parser->cfg->local_zone_tags,
2570 $2, bitlist, len)) {
2572 free($2);
2579 size_t len = 0;
2580 uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, $3,
2583 OUTYY(("P(server_access_control_tag:%s)\n", $2));
2585 yyerror("could not parse tags, (define-tag them first)");
2586 free($2);
2590 &cfg_parser->cfg->acl_tags,
2591 $2, bitlist, len)) {
2593 free($2);
2600 OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", $2, $3, $4));
2601 if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions,
2602 $2, $3, $4)) {
2604 free($2);
2612 OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", $2, $3, $4));
2613 if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas,
2614 $2, $3, $4)) {
2616 free($2);
2624 OUTYY(("P(server_local_zone_override:%s %s %s)\n", $2, $3, $4));
2625 if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides,
2626 $2, $3, $4)) {
2628 free($2);
2636 OUTYY(("P(server_access_control_view:%s %s)\n", $2, $3));
2637 if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view,
2638 $2, $3)) {
2645 size_t len = 0;
2646 uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, $3,
2649 OUTYY(("P(server_interface_tag:%s)\n", $2));
2651 yyerror("could not parse tags, (define-tag them first)");
2652 free($2);
2656 &cfg_parser->cfg->interface_tags,
2657 $2, bitlist, len)) {
2659 free($2);
2666 OUTYY(("P(server_interface_tag_action:%s %s %s)\n", $2, $3, $4));
2667 if(!cfg_str3list_insert(&cfg_parser->cfg->interface_tag_actions,
2668 $2, $3, $4)) {
2670 free($2);
2678 OUTYY(("P(server_interface_tag_data:%s %s %s)\n", $2, $3, $4));
2679 if(!cfg_str3list_insert(&cfg_parser->cfg->interface_tag_datas,
2680 $2, $3, $4)) {
2682 free($2);
2690 OUTYY(("P(server_interface_view:%s %s)\n", $2, $3));
2691 if(!cfg_str2list_insert(&cfg_parser->cfg->interface_view,
2692 $2, $3)) {
2699 size_t len = 0;
2700 uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, $3,
2703 OUTYY(("P(response_ip_tag:%s)\n", $2));
2705 yyerror("could not parse tags, (define-tag them first)");
2706 free($2);
2710 &cfg_parser->cfg->respip_tags,
2711 $2, bitlist, len)) {
2713 free($2);
2720 OUTYY(("P(server_ip_ratelimit:%s)\n", $2));
2721 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2723 else cfg_parser->cfg->ip_ratelimit = atoi($2);
2724 free($2);
2729 OUTYY(("P(server_ip_ratelimit_cookie:%s)\n", $2));
2730 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2732 else cfg_parser->cfg->ip_ratelimit_cookie = atoi($2);
2733 free($2);
2738 OUTYY(("P(server_ratelimit:%s)\n", $2));
2739 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2741 else cfg_parser->cfg->ratelimit = atoi($2);
2742 free($2);
2747 OUTYY(("P(server_ip_ratelimit_size:%s)\n", $2));
2748 if(!cfg_parse_memsize($2, &cfg_parser->cfg->ip_ratelimit_size))
2750 free($2);
2755 OUTYY(("P(server_ratelimit_size:%s)\n", $2));
2756 if(!cfg_parse_memsize($2, &cfg_parser->cfg->ratelimit_size))
2758 free($2);
2763 OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", $2));
2764 if(atoi($2) == 0) {
2767 cfg_parser->cfg->ip_ratelimit_slabs = atoi($2);
2768 if(!is_pow2(cfg_parser->cfg->ip_ratelimit_slabs))
2769 yyerror("must be a power of 2");
2771 free($2);
2776 OUTYY(("P(server_ratelimit_slabs:%s)\n", $2));
2777 if(atoi($2) == 0) {
2780 cfg_parser->cfg->ratelimit_slabs = atoi($2);
2781 if(!is_pow2(cfg_parser->cfg->ratelimit_slabs))
2782 yyerror("must be a power of 2");
2784 free($2);
2789 OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", $2, $3));
2790 if(atoi($3) == 0 && strcmp($3, "0") != 0) {
2792 free($2);
2795 if(!cfg_str2list_insert(&cfg_parser->cfg->
2796 ratelimit_for_domain, $2, $3))
2798 "ratelimit-for-domain");
2804 OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", $2, $3));
2805 if(atoi($3) == 0 && strcmp($3, "0") != 0) {
2807 free($2);
2810 if(!cfg_str2list_insert(&cfg_parser->cfg->
2811 ratelimit_below_domain, $2, $3))
2813 "ratelimit-below-domain");
2819 OUTYY(("P(server_ip_ratelimit_factor:%s)\n", $2));
2820 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2822 else cfg_parser->cfg->ip_ratelimit_factor = atoi($2);
2823 free($2);
2828 OUTYY(("P(server_ratelimit_factor:%s)\n", $2));
2829 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2831 else cfg_parser->cfg->ratelimit_factor = atoi($2);
2832 free($2);
2837 OUTYY(("P(server_ip_ratelimit_backoff:%s)\n", $2));
2838 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2840 else cfg_parser->cfg->ip_ratelimit_backoff =
2841 (strcmp($2, "yes")==0);
2842 free($2);
2847 OUTYY(("P(server_ratelimit_backoff:%s)\n", $2));
2848 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2850 else cfg_parser->cfg->ratelimit_backoff =
2851 (strcmp($2, "yes")==0);
2852 free($2);
2857 OUTYY(("P(server_outbound_msg_retry:%s)\n", $2));
2858 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2860 else cfg_parser->cfg->outbound_msg_retry = atoi($2);
2861 free($2);
2866 OUTYY(("P(server_max_sent_count:%s)\n", $2));
2867 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2869 else cfg_parser->cfg->max_sent_count = atoi($2);
2870 free($2);
2875 OUTYY(("P(server_max_query_restarts:%s)\n", $2));
2876 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2878 else cfg_parser->cfg->max_query_restarts = atoi($2);
2879 free($2);
2884 OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n"));
2885 free($2);
2890 OUTYY(("P(server_fast_server_num:%s)\n", $2));
2891 if(atoi($2) <= 0)
2893 else cfg_parser->cfg->fast_server_num = atoi($2);
2894 free($2);
2899 OUTYY(("P(server_fast_server_permil:%s)\n", $2));
2900 if(atoi($2) == 0 && strcmp($2, "0") != 0)
2902 else cfg_parser->cfg->fast_server_permil = atoi($2);
2903 free($2);
2908 OUTYY(("P(server_qname_minimisation:%s)\n", $2));
2909 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2911 else cfg_parser->cfg->qname_minimisation =
2912 (strcmp($2, "yes")==0);
2913 free($2);
2918 OUTYY(("P(server_qname_minimisation_strict:%s)\n", $2));
2919 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2921 else cfg_parser->cfg->qname_minimisation_strict =
2922 (strcmp($2, "yes")==0);
2923 free($2);
2928 OUTYY(("P(server_pad_responses:%s)\n", $2));
2929 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2931 else cfg_parser->cfg->pad_responses =
2932 (strcmp($2, "yes")==0);
2933 free($2);
2938 OUTYY(("P(server_pad_responses_block_size:%s)\n", $2));
2939 if(atoi($2) == 0)
2941 else cfg_parser->cfg->pad_responses_block_size = atoi($2);
2942 free($2);
2947 OUTYY(("P(server_pad_queries:%s)\n", $2));
2948 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2950 else cfg_parser->cfg->pad_queries =
2951 (strcmp($2, "yes")==0);
2952 free($2);
2957 OUTYY(("P(server_pad_queries_block_size:%s)\n", $2));
2958 if(atoi($2) == 0)
2960 else cfg_parser->cfg->pad_queries_block_size = atoi($2);
2961 free($2);
2967 OUTYY(("P(server_ipsecmod_enabled:%s)\n", $2));
2968 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2970 else cfg_parser->cfg->ipsecmod_enabled = (strcmp($2, "yes")==0);
2974 free($2);
2980 OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", $2));
2981 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
2983 else cfg_parser->cfg->ipsecmod_ignore_bogus = (strcmp($2, "yes")==0);
2987 free($2);
2993 OUTYY(("P(server_ipsecmod_hook:%s)\n", $2));
2994 free(cfg_parser->cfg->ipsecmod_hook);
2995 cfg_parser->cfg->ipsecmod_hook = $2;
2998 free($2);
3005 OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", $2));
3006 if(atoi($2) == 0 && strcmp($2, "0") != 0)
3008 else cfg_parser->cfg->ipsecmod_max_ttl = atoi($2);
3009 free($2);
3012 free($2);
3019 OUTYY(("P(server_ipsecmod_whitelist:%s)\n", $2));
3020 if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, $2))
3024 free($2);
3031 OUTYY(("P(server_ipsecmod_strict:%s)\n", $2));
3032 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3034 else cfg_parser->cfg->ipsecmod_strict = (strcmp($2, "yes")==0);
3035 free($2);
3038 free($2);
3044 OUTYY(("P(server_edns_client_string:%s %s)\n", $2, $3));
3046 &cfg_parser->cfg->edns_client_strings, $2, $3))
3048 "edns-client-string");
3053 OUTYY(("P(edns_client_string_opcode:%s)\n", $2));
3054 if(atoi($2) == 0 && strcmp($2, "0") != 0)
3056 else if(atoi($2) > 65535 || atoi($2) < 0)
3057 yyerror("option code must be in interval [0, 65535]");
3058 else cfg_parser->cfg->edns_client_string_opcode = atoi($2);
3059 free($2);
3064 OUTYY(("P(server_ede:%s)\n", $2));
3065 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3067 else cfg_parser->cfg->ede = (strcmp($2, "yes")==0);
3068 free($2);
3073 OUTYY(("P(server_proxy_protocol_port:%s)\n", $2));
3074 if(!cfg_strlist_insert(&cfg_parser->cfg->proxy_protocol_port, $2))
3080 OUTYY(("P(name:%s)\n", $2));
3081 if(cfg_parser->cfg->stubs->name)
3083 "for one stub-zone");
3084 free(cfg_parser->cfg->stubs->name);
3085 cfg_parser->cfg->stubs->name = $2;
3090 OUTYY(("P(stub-host:%s)\n", $2));
3091 if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, $2))
3097 OUTYY(("P(stub-addr:%s)\n", $2));
3098 if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, $2))
3104 OUTYY(("P(stub-first:%s)\n", $2));
3105 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3107 else cfg_parser->cfg->stubs->isfirst=(strcmp($2, "yes")==0);
3108 free($2);
3113 OUTYY(("P(stub-no-cache:%s)\n", $2));
3114 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3116 else cfg_parser->cfg->stubs->no_cache=(strcmp($2, "yes")==0);
3117 free($2);
3122 OUTYY(("P(stub-ssl-upstream:%s)\n", $2));
3123 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3125 else cfg_parser->cfg->stubs->ssl_upstream =
3126 (strcmp($2, "yes")==0);
3127 free($2);
3132 OUTYY(("P(stub-tcp-upstream:%s)\n", $2));
3133 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3135 else cfg_parser->cfg->stubs->tcp_upstream =
3136 (strcmp($2, "yes")==0);
3137 free($2);
3142 OUTYY(("P(stub-prime:%s)\n", $2));
3143 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3145 else cfg_parser->cfg->stubs->isprime =
3146 (strcmp($2, "yes")==0);
3147 free($2);
3152 OUTYY(("P(name:%s)\n", $2));
3153 if(cfg_parser->cfg->forwards->name)
3155 "name for one forward-zone");
3156 free(cfg_parser->cfg->forwards->name);
3157 cfg_parser->cfg->forwards->name = $2;
3162 OUTYY(("P(forward-host:%s)\n", $2));
3163 if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, $2))
3169 OUTYY(("P(forward-addr:%s)\n", $2));
3170 if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, $2))
3176 OUTYY(("P(forward-first:%s)\n", $2));
3177 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3179 else cfg_parser->cfg->forwards->isfirst=(strcmp($2, "yes")==0);
3180 free($2);
3185 OUTYY(("P(forward-no-cache:%s)\n", $2));
3186 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3188 else cfg_parser->cfg->forwards->no_cache=(strcmp($2, "yes")==0);
3189 free($2);
3194 OUTYY(("P(forward-ssl-upstream:%s)\n", $2));
3195 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3197 else cfg_parser->cfg->forwards->ssl_upstream =
3198 (strcmp($2, "yes")==0);
3199 free($2);
3204 OUTYY(("P(forward-tcp-upstream:%s)\n", $2));
3205 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3207 else cfg_parser->cfg->forwards->tcp_upstream =
3208 (strcmp($2, "yes")==0);
3209 free($2);
3214 OUTYY(("P(name:%s)\n", $2));
3215 if(cfg_parser->cfg->auths->name)
3217 "for one auth-zone");
3218 free(cfg_parser->cfg->auths->name);
3219 cfg_parser->cfg->auths->name = $2;
3224 OUTYY(("P(zonefile:%s)\n", $2));
3225 free(cfg_parser->cfg->auths->zonefile);
3226 cfg_parser->cfg->auths->zonefile = $2;
3231 OUTYY(("P(master:%s)\n", $2));
3232 if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, $2))
3238 OUTYY(("P(url:%s)\n", $2));
3239 if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, $2))
3245 OUTYY(("P(allow-notify:%s)\n", $2));
3246 if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify,
3247 $2))
3253 OUTYY(("P(zonemd-check:%s)\n", $2));
3254 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3256 else cfg_parser->cfg->auths->zonemd_check =
3257 (strcmp($2, "yes")==0);
3258 free($2);
3263 OUTYY(("P(zonemd-reject-absence:%s)\n", $2));
3264 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3266 else cfg_parser->cfg->auths->zonemd_reject_absence =
3267 (strcmp($2, "yes")==0);
3268 free($2);
3273 OUTYY(("P(for-downstream:%s)\n", $2));
3274 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3276 else cfg_parser->cfg->auths->for_downstream =
3277 (strcmp($2, "yes")==0);
3278 free($2);
3283 OUTYY(("P(for-upstream:%s)\n", $2));
3284 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3286 else cfg_parser->cfg->auths->for_upstream =
3287 (strcmp($2, "yes")==0);
3288 free($2);
3293 OUTYY(("P(fallback-enabled:%s)\n", $2));
3294 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3296 else cfg_parser->cfg->auths->fallback_enabled =
3297 (strcmp($2, "yes")==0);
3298 free($2);
3303 OUTYY(("P(name:%s)\n", $2));
3304 if(cfg_parser->cfg->views->name)
3307 free(cfg_parser->cfg->views->name);
3308 cfg_parser->cfg->views->name = $2;
3313 OUTYY(("P(view_local_zone:%s %s)\n", $2, $3));
3314 if(strcmp($3, "static")!=0 && strcmp($3, "deny")!=0 &&
3315 strcmp($3, "refuse")!=0 && strcmp($3, "redirect")!=0 &&
3316 strcmp($3, "transparent")!=0 && strcmp($3, "nodefault")!=0
3317 && strcmp($3, "typetransparent")!=0
3318 && strcmp($3, "always_transparent")!=0
3319 && strcmp($3, "always_refuse")!=0
3320 && strcmp($3, "always_nxdomain")!=0
3321 && strcmp($3, "always_nodata")!=0
3322 && strcmp($3, "always_deny")!=0
3323 && strcmp($3, "always_null")!=0
3324 && strcmp($3, "noview")!=0
3325 && strcmp($3, "inform")!=0 && strcmp($3, "inform_deny")!=0
3326 && strcmp($3, "inform_redirect") != 0
3327 && strcmp($3, "ipset") != 0) {
3328 yyerror("local-zone type: expected static, deny, "
3335 free($2);
3337 } else if(strcmp($3, "nodefault")==0) {
3338 if(!cfg_strlist_insert(&cfg_parser->cfg->views->
3339 local_zones_nodefault, $2))
3340 fatal_exit("out of memory adding local-zone");
3343 } else if(strcmp($3, "ipset")==0) {
3344 size_t len = strlen($2);
3347 if($2[len-1] != '.') {
3348 if(!($2 = realloc($2, len+2))) {
3349 fatal_exit("out of memory adding local-zone");
3351 $2[len] = '.';
3352 $2[len+1] = 0;
3354 if(!cfg_strlist_insert(&cfg_parser->cfg->views->
3355 local_zones_ipset, $2))
3356 fatal_exit("out of memory adding local-zone");
3361 &cfg_parser->cfg->views->local_zones,
3362 $2, $3))
3363 fatal_exit("out of memory adding local-zone");
3369 OUTYY(("P(view_response_ip:%s %s)\n", $2, $3));
3372 &cfg_parser->cfg->views->respip_actions, $2, $3))
3373 fatal_exit("out of memory adding per-view "
3374 "response-ip action");
3379 OUTYY(("P(view_response_ip_data:%s)\n", $2));
3381 &cfg_parser->cfg->views->respip_data, $2, $3))
3382 fatal_exit("out of memory adding response-ip-data");
3387 OUTYY(("P(view_local_data:%s)\n", $2));
3388 if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, $2)) {
3389 fatal_exit("out of memory adding local-data");
3396 OUTYY(("P(view_local_data_ptr:%s)\n", $2));
3397 ptr = cfg_ptr_reverse($2);
3398 free($2);
3400 if(!cfg_strlist_insert(&cfg_parser->cfg->views->
3402 fatal_exit("out of memory adding local-data");
3404 yyerror("local-data-ptr could not be reversed");
3410 OUTYY(("P(view-first:%s)\n", $2));
3411 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3413 else cfg_parser->cfg->views->isfirst=(strcmp($2, "yes")==0);
3414 free($2);
3419 OUTYY(("\nP(remote-control:)\n"));
3420 cfg_parser->started_toplevel = 1;
3431 OUTYY(("P(control_enable:%s)\n", $2));
3432 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3434 else cfg_parser->cfg->remote_control_enable =
3435 (strcmp($2, "yes")==0);
3436 free($2);
3441 OUTYY(("P(control_port:%s)\n", $2));
3442 if(atoi($2) == 0)
3444 else cfg_parser->cfg->control_port = atoi($2);
3445 free($2);
3450 OUTYY(("P(control_interface:%s)\n", $2));
3451 if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, $2))
3457 OUTYY(("P(control_use_cert:%s)\n", $2));
3458 cfg_parser->cfg->control_use_cert = (strcmp($2, "yes")==0);
3459 free($2);
3464 OUTYY(("P(rc_server_key_file:%s)\n", $2));
3465 free(cfg_parser->cfg->server_key_file);
3466 cfg_parser->cfg->server_key_file = $2;
3471 OUTYY(("P(rc_server_cert_file:%s)\n", $2));
3472 free(cfg_parser->cfg->server_cert_file);
3473 cfg_parser->cfg->server_cert_file = $2;
3478 OUTYY(("P(rc_control_key_file:%s)\n", $2));
3479 free(cfg_parser->cfg->control_key_file);
3480 cfg_parser->cfg->control_key_file = $2;
3485 OUTYY(("P(rc_control_cert_file:%s)\n", $2));
3486 free(cfg_parser->cfg->control_cert_file);
3487 cfg_parser->cfg->control_cert_file = $2;
3493 cfg_parser->started_toplevel = 1;
3514 OUTYY(("P(dt_dnstap_enable:%s)\n", $2));
3515 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3517 else cfg_parser->cfg->dnstap = (strcmp($2, "yes")==0);
3518 free($2);
3523 OUTYY(("P(dt_dnstap_bidirectional:%s)\n", $2));
3524 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3526 else cfg_parser->cfg->dnstap_bidirectional =
3527 (strcmp($2, "yes")==0);
3528 free($2);
3533 OUTYY(("P(dt_dnstap_socket_path:%s)\n", $2));
3534 free(cfg_parser->cfg->dnstap_socket_path);
3535 cfg_parser->cfg->dnstap_socket_path = $2;
3540 OUTYY(("P(dt_dnstap_ip:%s)\n", $2));
3541 free(cfg_parser->cfg->dnstap_ip);
3542 cfg_parser->cfg->dnstap_ip = $2;
3547 OUTYY(("P(dt_dnstap_tls:%s)\n", $2));
3548 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3550 else cfg_parser->cfg->dnstap_tls = (strcmp($2, "yes")==0);
3551 free($2);
3556 OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", $2));
3557 free(cfg_parser->cfg->dnstap_tls_server_name);
3558 cfg_parser->cfg->dnstap_tls_server_name = $2;
3563 OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", $2));
3564 free(cfg_parser->cfg->dnstap_tls_cert_bundle);
3565 cfg_parser->cfg->dnstap_tls_cert_bundle = $2;
3570 OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", $2));
3571 free(cfg_parser->cfg->dnstap_tls_client_key_file);
3572 cfg_parser->cfg->dnstap_tls_client_key_file = $2;
3577 OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", $2));
3578 free(cfg_parser->cfg->dnstap_tls_client_cert_file);
3579 cfg_parser->cfg->dnstap_tls_client_cert_file = $2;
3584 OUTYY(("P(dt_dnstap_send_identity:%s)\n", $2));
3585 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3587 else cfg_parser->cfg->dnstap_send_identity = (strcmp($2, "yes")==0);
3588 free($2);
3593 OUTYY(("P(dt_dnstap_send_version:%s)\n", $2));
3594 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3596 else cfg_parser->cfg->dnstap_send_version = (strcmp($2, "yes")==0);
3597 free($2);
3602 OUTYY(("P(dt_dnstap_identity:%s)\n", $2));
3603 free(cfg_parser->cfg->dnstap_identity);
3604 cfg_parser->cfg->dnstap_identity = $2;
3609 OUTYY(("P(dt_dnstap_version:%s)\n", $2));
3610 free(cfg_parser->cfg->dnstap_version);
3611 cfg_parser->cfg->dnstap_version = $2;
3616 OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", $2));
3617 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3619 else cfg_parser->cfg->dnstap_log_resolver_query_messages =
3620 (strcmp($2, "yes")==0);
3621 free($2);
3626 OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", $2));
3627 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3629 else cfg_parser->cfg->dnstap_log_resolver_response_messages =
3630 (strcmp($2, "yes")==0);
3631 free($2);
3636 OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", $2));
3637 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3639 else cfg_parser->cfg->dnstap_log_client_query_messages =
3640 (strcmp($2, "yes")==0);
3641 free($2);
3646 OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", $2));
3647 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3649 else cfg_parser->cfg->dnstap_log_client_response_messages =
3650 (strcmp($2, "yes")==0);
3651 free($2);
3656 OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", $2));
3657 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3659 else cfg_parser->cfg->dnstap_log_forwarder_query_messages =
3660 (strcmp($2, "yes")==0);
3661 free($2);
3666 OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", $2));
3667 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3669 else cfg_parser->cfg->dnstap_log_forwarder_response_messages =
3670 (strcmp($2, "yes")==0);
3671 free($2);
3676 OUTYY(("P(dt_dnstap_sample_rate:%s)\n", $2));
3677 if(atoi($2) == 0 && strcmp($2, "0") != 0)
3679 else if(atoi($2) < 0)
3681 else cfg_parser->cfg->dnstap_sample_rate = atoi($2);
3682 free($2);
3688 cfg_parser->started_toplevel = 1;
3697 OUTYY(("P(python-script:%s)\n", $2));
3698 if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, $2))
3705 cfg_parser->started_toplevel = 1;
3714 OUTYY(("P(dynlib-file:%s)\n", $2));
3715 if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, $2))
3721 OUTYY(("P(disable_dnssec_lame_check:%s)\n", $2));
3722 if (strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3724 else cfg_parser->cfg->disable_dnssec_lame_check =
3725 (strcmp($2, "yes")==0);
3726 free($2);
3731 OUTYY(("P(server_log_identity:%s)\n", $2));
3732 free(cfg_parser->cfg->log_identity);
3733 cfg_parser->cfg->log_identity = $2;
3738 OUTYY(("P(server_response_ip:%s %s)\n", $2, $3));
3740 if(!cfg_str2list_insert(&cfg_parser->cfg->respip_actions,
3741 $2, $3))
3742 fatal_exit("out of memory adding response-ip");
3747 OUTYY(("P(server_response_ip_data:%s)\n", $2));
3748 if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data,
3749 $2, $3))
3750 fatal_exit("out of memory adding response-ip-data");
3756 cfg_parser->started_toplevel = 1;
3772 OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", $2));
3773 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3775 else cfg_parser->cfg->dnscrypt = (strcmp($2, "yes")==0);
3776 free($2);
3781 OUTYY(("P(dnsc_dnscrypt_port:%s)\n", $2));
3782 if(atoi($2) == 0)
3784 else cfg_parser->cfg->dnscrypt_port = atoi($2);
3785 free($2);
3790 OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", $2));
3791 free(cfg_parser->cfg->dnscrypt_provider);
3792 cfg_parser->cfg->dnscrypt_provider = $2;
3797 OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", $2));
3798 if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, $2))
3799 log_warn("dnscrypt-provider-cert %s is a duplicate", $2);
3800 if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, $2))
3801 fatal_exit("out of memory adding dnscrypt-provider-cert");
3806 OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", $2));
3807 if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, $2))
3808 fatal_exit("out of memory adding dnscrypt-provider-cert-rotated");
3813 OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", $2));
3814 if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, $2))
3815 log_warn("dnscrypt-secret-key: %s is a duplicate", $2);
3816 if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, $2))
3817 fatal_exit("out of memory adding dnscrypt-secret-key");
3822 OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", $2));
3823 if(!cfg_parse_memsize($2, &cfg_parser->cfg->dnscrypt_shared_secret_cache_size))
3825 free($2);
3830 OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", $2));
3831 if(atoi($2) == 0) {
3834 cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs = atoi($2);
3835 if(!is_pow2(cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs))
3836 yyerror("must be a power of 2");
3838 free($2);
3843 OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", $2));
3844 if(!cfg_parse_memsize($2, &cfg_parser->cfg->dnscrypt_nonce_cache_size))
3846 free($2);
3851 OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", $2));
3852 if(atoi($2) == 0) {
3855 cfg_parser->cfg->dnscrypt_nonce_cache_slabs = atoi($2);
3856 if(!is_pow2(cfg_parser->cfg->dnscrypt_nonce_cache_slabs))
3857 yyerror("must be a power of 2");
3859 free($2);
3865 cfg_parser->started_toplevel = 1;
3879 OUTYY(("P(backend:%s)\n", $2));
3880 free(cfg_parser->cfg->cachedb_backend);
3881 cfg_parser->cfg->cachedb_backend = $2;
3884 free($2);
3891 OUTYY(("P(secret-seed:%s)\n", $2));
3892 free(cfg_parser->cfg->cachedb_secret);
3893 cfg_parser->cfg->cachedb_secret = $2;
3896 free($2);
3903 OUTYY(("P(cachedb_no_store:%s)\n", $2));
3904 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3906 else cfg_parser->cfg->cachedb_no_store = (strcmp($2, "yes")==0);
3910 free($2);
3916 OUTYY(("P(cachedb_check_when_serve_expired:%s)\n", $2));
3917 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
3919 else cfg_parser->cfg->cachedb_check_when_serve_expired = (strcmp($2, "yes")==0);
3923 free($2);
3929 OUTYY(("P(redis_server_host:%s)\n", $2));
3930 free(cfg_parser->cfg->redis_server_host);
3931 cfg_parser->cfg->redis_server_host = $2;
3934 free($2);
3942 OUTYY(("P(redis_server_port:%s)\n", $2));
3943 port = atoi($2);
3944 if(port == 0 || port < 0 || port > 65535)
3946 else cfg_parser->cfg->redis_server_port = port;
3950 free($2);
3956 OUTYY(("P(redis_server_path:%s)\n", $2));
3957 free(cfg_parser->cfg->redis_server_path);
3958 cfg_parser->cfg->redis_server_path = $2;
3961 free($2);
3968 OUTYY(("P(redis_server_password:%s)\n", $2));
3969 free(cfg_parser->cfg->redis_server_password);
3970 cfg_parser->cfg->redis_server_password = $2;
3973 free($2);
3980 OUTYY(("P(redis_timeout:%s)\n", $2));
3981 if(atoi($2) == 0)
3983 else cfg_parser->cfg->redis_timeout = atoi($2);
3987 free($2);
3993 OUTYY(("P(redis_command_timeout:%s)\n", $2));
3994 if(atoi($2) == 0 && strcmp($2, "0") != 0)
3996 else cfg_parser->cfg->redis_command_timeout = atoi($2);
4000 free($2);
4006 OUTYY(("P(redis_connect_timeout:%s)\n", $2));
4007 if(atoi($2) == 0 && strcmp($2, "0") != 0)
4009 else cfg_parser->cfg->redis_connect_timeout = atoi($2);
4013 free($2);
4019 OUTYY(("P(redis_expire_records:%s)\n", $2));
4020 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
4022 else cfg_parser->cfg->redis_expire_records = (strcmp($2, "yes")==0);
4026 free($2);
4033 OUTYY(("P(redis_logical_db:%s)\n", $2));
4034 db = atoi($2);
4035 if((db == 0 && strcmp($2, "0") != 0) || db < 0)
4037 else cfg_parser->cfg->redis_logical_db = db;
4041 free($2);
4046 OUTYY(("P(server_tcp_connection_limit:%s %s)\n", $2, $3));
4047 if (atoi($3) < 0)
4050 if(!cfg_str2list_insert(&cfg_parser->cfg->tcp_connection_limits, $2, $3))
4057 OUTYY(("P(server_answer_cookie:%s)\n", $2));
4058 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
4060 else cfg_parser->cfg->do_answer_cookie = (strcmp($2, "yes")==0);
4061 free($2);
4069 OUTYY(("P(server_cookie_secret:%s)\n", $2));
4070 if(sldns_str2wire_hex_buf($2, secret, &secret_len)
4074 cfg_parser->cfg->cookie_secret_len = secret_len;
4075 memcpy(cfg_parser->cfg->cookie_secret, secret, sizeof(secret));
4077 free($2);
4082 OUTYY(("P(cookie_secret_file:%s)\n", $2));
4083 free(cfg_parser->cfg->cookie_secret_file);
4084 cfg_parser->cfg->cookie_secret_file = $2;
4089 OUTYY(("P(server_iter_scrub_ns:%s)\n", $2));
4090 if(atoi($2) == 0 && strcmp($2, "0") != 0)
4092 else cfg_parser->cfg->iter_scrub_ns = atoi($2);
4093 free($2);
4098 OUTYY(("P(server_iter_scrub_cname:%s)\n", $2));
4099 if(atoi($2) == 0 && strcmp($2, "0") != 0)
4101 else cfg_parser->cfg->iter_scrub_cname = atoi($2);
4102 free($2);
4107 OUTYY(("P(server_max_global_quota:%s)\n", $2));
4108 if(atoi($2) == 0 && strcmp($2, "0") != 0)
4110 else cfg_parser->cfg->max_global_quota = atoi($2);
4111 free($2);
4117 cfg_parser->started_toplevel = 1;
4127 OUTYY(("P(name-v4:%s)\n", $2));
4128 if(cfg_parser->cfg->ipset_name_v4)
4131 free(cfg_parser->cfg->ipset_name_v4);
4132 cfg_parser->cfg->ipset_name_v4 = $2;
4135 free($2);
4142 OUTYY(("P(name-v6:%s)\n", $2));
4143 if(cfg_parser->cfg->ipset_name_v6)
4146 free(cfg_parser->cfg->ipset_name_v6);
4147 cfg_parser->cfg->ipset_name_v6 = $2;
4150 free($2);
4160 if(strcmp(action, "deny")!=0 &&
4161 strcmp(action, "redirect")!=0 &&
4162 strcmp(action, "inform")!=0 &&
4163 strcmp(action, "inform_deny")!=0 &&
4164 strcmp(action, "always_transparent")!=0 &&
4165 strcmp(action, "always_refuse")!=0 &&
4166 strcmp(action, "always_nxdomain")!=0)
4168 yyerror("response-ip action: expected deny, redirect, "
4177 if(strcmp(action, "deny")!=0 &&
4178 strcmp(action, "refuse")!=0 &&
4179 strcmp(action, "deny_non_local")!=0 &&
4180 strcmp(action, "refuse_non_local")!=0 &&
4181 strcmp(action, "allow_setrd")!=0 &&
4182 strcmp(action, "allow")!=0 &&
4183 strcmp(action, "allow_snoop")!=0 &&
4184 strcmp(action, "allow_cookie")!=0)