or gigabytes (1024*1024 bytes in a megabyte).
.TP
.B local\-zone: \fI<zone> <type>
-Configure a local zone. The type determines the answer to give if there is
-no match from local\-data. The types are deny, refuse, static, transparent,
-redirect, nodefault, and are explained below. After that the default settings
-are listed. Use local\-data: to enter data into the local zone. Answers for
-local zones are authoritative DNS answers. By default the zones are class IN.
+Configure a local zone. The type determines the answer to give if
+there is no match from local\-data. The types are deny, refuse, static,
+transparent, redirect, nodefault, typetransparent, and are explained
+below. After that the default settings are listed. Use local\-data: to
+enter data into the local zone. Answers for local zones are authoritative
+DNS answers. By default the zones are class IN.
.IP
If you need more complicated authoritative data, with referrals, wildcards,
CNAME/DNAME support, or DNSSEC authoritative service, setup a stub\-zone for
If no local\-zone is given local\-data causes a transparent zone
to be created by default.
.TP 10
+\h'5'\fItypetransparent\fR
+If there is a match from local data, the query is answered. If the query
+is for a different name, or for the same name but for a different type,
+the query is resolved normally. So, similar to transparent but types
+that are not listed in local data are resolved normally, so if an A record
+is in the local data that does not cause a nodata reply for AAAA queries.
+.TP 10
\h'5'\fIredirect\fR
The query is answered from the local data for the zone name.
There may be no local data beneath the zone name.
701, 711, 721, 731, 741, 751, 758, 765, 774, 783,
792, 799, 809, 823, 830, 848, 861, 874, 883, 892,
901, 911, 921, 930, 937, 946, 955, 964, 972, 985,
- 993, 1013, 1020, 1035, 1042, 1049, 1056, 1066, 1073, 1080,
- 1087, 1092, 1093, 1094, 1094, 1094, 1095, 1095, 1095, 1096,
- 1098, 1108, 1117, 1124, 1131, 1138, 1145, 1152, 1157, 1158,
- 1159, 1161
+ 993, 1015, 1022, 1037, 1044, 1051, 1058, 1068, 1075, 1082,
+ 1089, 1094, 1095, 1096, 1096, 1096, 1097, 1097, 1097, 1098,
+ 1100, 1110, 1119, 1126, 1133, 1140, 1147, 1154, 1159, 1160,
+ 1161, 1163
};
#endif
OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)));
if(strcmp((yyvsp[(3) - (3)].str), "static")!=0 && strcmp((yyvsp[(3) - (3)].str), "deny")!=0 &&
strcmp((yyvsp[(3) - (3)].str), "refuse")!=0 && strcmp((yyvsp[(3) - (3)].str), "redirect")!=0 &&
- strcmp((yyvsp[(3) - (3)].str), "transparent")!=0 && strcmp((yyvsp[(3) - (3)].str), "nodefault")!=0)
+ strcmp((yyvsp[(3) - (3)].str), "transparent")!=0 && strcmp((yyvsp[(3) - (3)].str), "nodefault")!=0
+ && strcmp((yyvsp[(3) - (3)].str), "typetransparent")!=0)
yyerror("local-zone type: expected static, deny, "
- "refuse, redirect, transparent or nodefault");
+ "refuse, redirect, transparent, "
+ "typetransparent or nodefault");
else if(strcmp((yyvsp[(3) - (3)].str), "nodefault")==0) {
if(!cfg_strlist_insert(&cfg_parser->cfg->
local_zones_nodefault, (yyvsp[(2) - (3)].str)))
case 201:
/* Line 1455 of yacc.c */
-#line 1014 "util/configparser.y"
+#line 1016 "util/configparser.y"
{
OUTYY(("P(server_local_data:%s)\n", (yyvsp[(2) - (2)].str)));
if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[(2) - (2)].str)))
case 202:
/* Line 1455 of yacc.c */
-#line 1021 "util/configparser.y"
+#line 1023 "util/configparser.y"
{
char* ptr;
OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[(2) - (2)].str)));
case 203:
/* Line 1455 of yacc.c */
-#line 1036 "util/configparser.y"
+#line 1038 "util/configparser.y"
{
OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str)));
free(cfg_parser->cfg->stubs->name);
case 204:
/* Line 1455 of yacc.c */
-#line 1043 "util/configparser.y"
+#line 1045 "util/configparser.y"
{
OUTYY(("P(stub-host:%s)\n", (yyvsp[(2) - (2)].str)));
if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[(2) - (2)].str)))
case 205:
/* Line 1455 of yacc.c */
-#line 1050 "util/configparser.y"
+#line 1052 "util/configparser.y"
{
OUTYY(("P(stub-addr:%s)\n", (yyvsp[(2) - (2)].str)));
if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[(2) - (2)].str)))
case 206:
/* Line 1455 of yacc.c */
-#line 1057 "util/configparser.y"
+#line 1059 "util/configparser.y"
{
OUTYY(("P(stub-prime:%s)\n", (yyvsp[(2) - (2)].str)));
if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
case 207:
/* Line 1455 of yacc.c */
-#line 1067 "util/configparser.y"
+#line 1069 "util/configparser.y"
{
OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str)));
free(cfg_parser->cfg->forwards->name);
case 208:
/* Line 1455 of yacc.c */
-#line 1074 "util/configparser.y"
+#line 1076 "util/configparser.y"
{
OUTYY(("P(forward-host:%s)\n", (yyvsp[(2) - (2)].str)));
if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[(2) - (2)].str)))
case 209:
/* Line 1455 of yacc.c */
-#line 1081 "util/configparser.y"
+#line 1083 "util/configparser.y"
{
OUTYY(("P(forward-addr:%s)\n", (yyvsp[(2) - (2)].str)));
if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[(2) - (2)].str)))
case 210:
/* Line 1455 of yacc.c */
-#line 1088 "util/configparser.y"
+#line 1090 "util/configparser.y"
{
OUTYY(("\nP(remote-control:)\n"));
}
case 220:
/* Line 1455 of yacc.c */
-#line 1099 "util/configparser.y"
+#line 1101 "util/configparser.y"
{
OUTYY(("P(control_enable:%s)\n", (yyvsp[(2) - (2)].str)));
if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
case 221:
/* Line 1455 of yacc.c */
-#line 1109 "util/configparser.y"
+#line 1111 "util/configparser.y"
{
OUTYY(("P(control_port:%s)\n", (yyvsp[(2) - (2)].str)));
if(atoi((yyvsp[(2) - (2)].str)) == 0)
case 222:
/* Line 1455 of yacc.c */
-#line 1118 "util/configparser.y"
+#line 1120 "util/configparser.y"
{
OUTYY(("P(control_interface:%s)\n", (yyvsp[(2) - (2)].str)));
if(!cfg_strlist_insert(&cfg_parser->cfg->control_ifs, (yyvsp[(2) - (2)].str)))
case 223:
/* Line 1455 of yacc.c */
-#line 1125 "util/configparser.y"
+#line 1127 "util/configparser.y"
{
OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[(2) - (2)].str)));
free(cfg_parser->cfg->server_key_file);
case 224:
/* Line 1455 of yacc.c */
-#line 1132 "util/configparser.y"
+#line 1134 "util/configparser.y"
{
OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[(2) - (2)].str)));
free(cfg_parser->cfg->server_cert_file);
case 225:
/* Line 1455 of yacc.c */
-#line 1139 "util/configparser.y"
+#line 1141 "util/configparser.y"
{
OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[(2) - (2)].str)));
free(cfg_parser->cfg->control_key_file);
case 226:
/* Line 1455 of yacc.c */
-#line 1146 "util/configparser.y"
+#line 1148 "util/configparser.y"
{
OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[(2) - (2)].str)));
free(cfg_parser->cfg->control_cert_file);
case 227:
/* Line 1455 of yacc.c */
-#line 1153 "util/configparser.y"
+#line 1155 "util/configparser.y"
{
OUTYY(("\nP(python:)\n"));
}
case 231:
/* Line 1455 of yacc.c */
-#line 1162 "util/configparser.y"
+#line 1164 "util/configparser.y"
{
OUTYY(("P(python-script:%s)\n", (yyvsp[(2) - (2)].str)));
free(cfg_parser->cfg->python_script);
/* Line 1455 of yacc.c */
-#line 3418 "util/configparser.c"
+#line 3420 "util/configparser.c"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
/* Line 1675 of yacc.c */
-#line 1167 "util/configparser.y"
+#line 1169 "util/configparser.y"
/* parse helper routines could be here */