2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-30 14:07:59 +00:00

support 'disabled' statement in zone config (causes

zone to be parsed and then ignored). Currently must
come after the 'type' clause.

support optional ports in masters and also-notify
statements:

	masters [ port xxx ] { y.y.y.y [ port zzz ] ; }

removed some unused arguments.

stop issuing some warnings about some features that
were not implemented, but now are.
This commit is contained in:
James Brister 2000-05-03 19:29:43 +00:00
parent 6ba0a8a5e7
commit e2cf9c2db3
10 changed files with 119 additions and 58 deletions

14
CHANGES
View File

@ -1,3 +1,17 @@
148. [func + cleanup] support 'disabled' statement in zone config (causes
zone to be parsed and then ignored). Currently must
come after the 'type' clause.
support optional ports in masters and also-notify
statements:
masters [ port xxx ] { y.y.y.y [ port zzz ] ; }
removed some unused arguments.
stop issuing some warnings about some features that
were not implemented, but now are.
147. [bug] Changed yacc union size to be smaller for yaccs that
put yacc-stack on the real stack.

View File

@ -182,7 +182,7 @@ zone "master.demo.zone" {
// zone? The global option is used
// if "notify" is not specified
// here.
also-notify { }; // don't notify any nameservers other
also-notify { 1.0.0.1; }; // don't notify any nameservers other
// than those on the NS list for this
// zone
forward first;
@ -207,9 +207,7 @@ zone "slave.demo.zone" {
max-transfer-time-out 1; // if not set, global option is used.
max-transfer-idle-in 2; // if not set, global option is used.
max-transfer-idle-out 3; // if not set, global option is used.
also-notify { }; // don't notify any nameservers other
// than those on the NS list for this
// zone
also-notify { 1.0.0.2; };
forward only;
forwarders { 10.45.45.45; 10.0.0.3; 1:2:3:4:5:6:7:8; };
};
@ -264,8 +262,8 @@ zone "stub.demo.zone" {
// are transferred.
file "stub.demo.zone";
masters {
1.2.3.4; // where to zone transfer from
5.6.7.8;
1.2.3.4 ; // where to zone transfer from
5.6.7.8 port 999;
};
check-names warn;
allow-update { none; };
@ -294,6 +292,7 @@ acl can_axfr { 1.2.3.4; can_query; }; // host 1.2.3.4 and any host allowed
zone "non-default-acl.demo.zone" {
type master;
disabled;
file "foo";
allow-query { can_query; };
allow-transfer { can_axfr; };

View File

@ -74,7 +74,7 @@ optscbk(dns_c_ctx_t *ctx, void *uap)
return (ISC_R_SUCCESS);
}
extern int dns__yydebug;
int main (int argc, char **argv) {
dns_c_ctx_t *configctx = NULL;
@ -100,7 +100,8 @@ int main (int argc, char **argv) {
if (argc > 1 && strcmp(argv[1],"-d") == 0) {
argv++;
argc--;
debug_mem_print = ISC_TRUE;
/* debug_mem_print = ISC_TRUE; */
dns__yydebug = 1;
}
conffile = getenv("NAMED_CONF");

View File

@ -15,7 +15,7 @@
* SOFTWARE.
*/
/* $Id: confctx.c,v 1.53 2000/04/28 01:23:54 gson Exp $ */
/* $Id: confctx.c,v 1.54 2000/05/03 19:29:35 brister Exp $ */
#include <config.h>
@ -230,7 +230,6 @@ dns_c_checkconfig(dns_c_ctx_t *cfg)
isc_int32_t intval;
isc_uint32_t uintval;
dns_c_ipmatchlist_t *ipml;
dns_c_iplist_t *iplist;
isc_result_t result = ISC_R_SUCCESS;
isc_result_t tmpres;
dns_c_rrsolist_t *olist;
@ -316,13 +315,6 @@ dns_c_checkconfig(dns_c_ctx_t *cfg)
}
if (dns_c_ctx_getnotify(cfg, &bval) != ISC_R_NOTFOUND) {
isc_log_write(dns_lctx,DNS_LOGCATEGORY_CONFIG,
DNS_LOGMODULE_CONFIG, ISC_LOG_WARNING,
"option 'notify' is not yet implemented.");
}
if (dns_c_ctx_getrfc2308type1(cfg, &bval) != ISC_R_NOTFOUND) {
isc_log_write(dns_lctx,DNS_LOGCATEGORY_CONFIG,
DNS_LOGMODULE_CONFIG, ISC_LOG_WARNING,
@ -344,15 +336,6 @@ dns_c_checkconfig(dns_c_ctx_t *cfg)
}
if (dns_c_ctx_getalsonotify(cfg, &iplist) != ISC_R_NOTFOUND) {
dns_c_iplist_detach(&iplist);
isc_log_write(dns_lctx,DNS_LOGCATEGORY_CONFIG,
DNS_LOGMODULE_CONFIG, ISC_LOG_WARNING,
"option 'also-notify' is not yet implemented.");
}
if ((dns_c_ctx_getchecknames(cfg, dns_trans_primary,
&severity) != ISC_R_NOTFOUND) ||
(dns_c_ctx_getchecknames(cfg, dns_trans_secondary,
@ -1010,7 +993,8 @@ dns_c_ctx_optionsprint(FILE *fp, int indent, dns_c_options_t *options)
if (options->also_notify != NULL) {
dns_c_printtabs(fp, indent + 1);
fprintf(fp, "also-notify ") ;
dns_c_iplist_print(fp, indent + 2, options->also_notify);
dns_c_iplist_printfully(fp, indent + 2, ISC_TRUE,
options->also_notify);
fprintf(fp, ";\n");
}

View File

@ -15,7 +15,7 @@
* SOFTWARE.
*/
/* $Id: confip.c,v 1.22 2000/04/28 01:10:30 halley Exp $ */
/* $Id: confip.c,v 1.23 2000/05/03 19:29:37 brister Exp $ */
#include <config.h>
@ -885,27 +885,63 @@ dns_c_iplist_equal(dns_c_iplist_t *list1, dns_c_iplist_t *list2) {
void
dns_c_iplist_print(FILE *fp, int indent, dns_c_iplist_t *list)
dns_c_iplist_printfully(FILE *fp, int indent, isc_boolean_t porttoo,
dns_c_iplist_t *list)
{
isc_uint32_t i;
in_port_t port;
in_port_t tmpport;
isc_boolean_t athead = ISC_TRUE;
REQUIRE(DNS_C_IPLIST_VALID(list));
fprintf(fp, "{\n");
if (list->nextidx == 0) {
fputc('{', fp);
fputc('\n', fp);
dns_c_printtabs(fp, indent);
fprintf(fp, "/* no ip addresses defined */\n");
dns_c_printtabs(fp, indent - 1);
fputc('}', fp);
} else {
if (porttoo) {
port = isc_sockaddr_getport(&list->ips[0]);
for (i = 0 ; i < list->nextidx ; i++) {
tmpport = isc_sockaddr_getport(&list->ips[i]);
if (tmpport != port) {
athead = ISC_FALSE;
}
}
if (athead) {
fprintf(fp, "port %d ", port);
}
}
fputc('{', fp);
fputc('\n', fp);
for (i = 0 ; i < list->nextidx ; i++) {
dns_c_printtabs(fp, indent);
dns_c_print_ipaddr(fp, &list->ips[i]);
if (!athead) {
fprintf(fp, " port %d",
isc_sockaddr_getport(&list->ips[i]));
}
fprintf(fp, ";\n");
}
dns_c_printtabs(fp, indent - 1);
fputc('}', fp);
}
dns_c_printtabs(fp, indent - 1);
fprintf(fp, "}");
fputc('\n', fp);
}
void
dns_c_iplist_print(FILE *fp, int indent, dns_c_iplist_t *list)
{
dns_c_iplist_printfully(fp, indent, ISC_FALSE, list);
}

View File

@ -16,7 +16,7 @@
* SOFTWARE.
*/
/* $Id: confparser.y,v 1.70 2000/05/02 17:56:39 brister Exp $ */
/* $Id: confparser.y,v 1.71 2000/05/03 19:29:38 brister Exp $ */
#include <config.h>
@ -116,6 +116,7 @@ static isc_lexspecials_t specials;
static isc_result_t tmpres;
static isc_boolean_t disabled; /* if "disabled" keyword was in zone */
static int debug_lexer;
static int yylex(void);
@ -255,6 +256,7 @@ static isc_boolean_t int_too_big(isc_uint32_t base, isc_uint32_t mult);
%token L_DENY
%token L_DIALUP
%token L_DIRECTORY
%token L_DISABLED
%token L_DUMP_FILE
%token L_DYNAMIC
%token L_END_INCLUDE
@ -926,10 +928,10 @@ option: /* Empty */
YYABORT;
}
}
| L_ALSO_NOTIFY L_LBRACE notify_in_addr_list L_RBRACE
| L_ALSO_NOTIFY port_ip_list
{
tmpres = dns_c_ctx_setalsonotify(currcfg, $3);
dns_c_iplist_detach(&$3);
tmpres = dns_c_ctx_setalsonotify(currcfg, $2);
dns_c_iplist_detach(&$2);
if (tmpres == ISC_R_EXISTS) {
parser_warning(ISC_FALSE, "redefining also-notify.");
@ -3730,6 +3732,8 @@ zone_stmt: L_ZONE domain_name optional_class L_LBRACE L_TYPE zone_type L_EOS
{
dns_c_zone_t *zone;
disabled = ISC_FALSE;
if (currcfg->zlist == NULL) {
tmpres = dns_c_zonelist_new(currcfg->mem,
&currcfg->zlist);
@ -3774,19 +3778,29 @@ zone_stmt: L_ZONE domain_name optional_class L_LBRACE L_TYPE zone_type L_EOS
} optional_zone_options_list L_RBRACE {
dns_c_zone_t *zone;
dns_c_view_t *view;
zone = dns_c_ctx_getcurrzone(currcfg);
view = dns_c_ctx_getcurrview(currcfg);
zone->view = view;
if (disabled) {
isc_log_write(dns_lctx, DNS_LOGCATEGORY_CONFIG,
DNS_LOGMODULE_CONFIG,
ISC_LOG_WARNING, "zone '%s' is disabled",
zone->name);
dns_c_zonelist_rmzone(currcfg->zlist, zone);
zone = NULL;
} else {
zone->view = view;
if (view != NULL) {
dns_c_view_addzone(view, zone);
if (view != NULL) {
dns_c_view_addzone(view, zone);
}
}
dns_c_ctx_setcurrzone(currcfg, NULL);
if (callbacks != NULL && callbacks->zonecbk != NULL) {
if (zone != NULL &&
callbacks != NULL && callbacks->zonecbk != NULL) {
tmpres = callbacks->zonecbk(currcfg,
zone,
view,
@ -3910,7 +3924,8 @@ zone_non_type_keywords: L_FILE | L_FILE_IXFR | L_IXFR_TMP | L_MASTERS |
L_TCP_CLIENTS | L_RECURSIVE_CLIENTS | L_UPDATE_POLICY | L_DENY |
L_MAX_TRANSFER_TIME_OUT | L_MAX_TRANSFER_IDLE_IN |
L_MAX_TRANSFER_IDLE_OUT | L_MAX_LOG_SIZE_IXFR | L_NOTIFY |
L_MAINTAIN_IXFR_BASE | L_PUBKEY | L_ALSO_NOTIFY | L_DIALUP
L_MAINTAIN_IXFR_BASE | L_PUBKEY | L_ALSO_NOTIFY | L_DIALUP |
L_DISABLED
;
@ -4316,14 +4331,13 @@ zone_option: L_FILE L_QSTRING
isc_mem_free(memctx, $5);
}
| L_ALSO_NOTIFY L_LBRACE notify_in_addr_list L_RBRACE
| L_ALSO_NOTIFY port_ip_list
{
dns_c_zone_t *zone = dns_c_ctx_getcurrzone(currcfg);
INSIST(zone != NULL);
tmpres = dns_c_zone_setalsonotify(zone, $3,
ISC_FALSE);
tmpres = dns_c_zone_setalsonotify(zone, $2, ISC_FALSE);
if (tmpres == ISC_R_EXISTS) {
parser_warning(ISC_FALSE,
"redefining zone also-notify.");
@ -4349,6 +4363,10 @@ zone_option: L_FILE L_QSTRING
YYABORT;
}
}
| L_DISABLED
{
disabled = ISC_TRUE;
}
| zone_update_policy
;
@ -4600,6 +4618,7 @@ static struct token keyword_tokens [] = {
{ "default", L_DEFAULT },
{ "dialup", L_DIALUP },
{ "directory", L_DIRECTORY },
{ "disabled", L_DISABLED },
{ "dump-file", L_DUMP_FILE },
{ "dynamic", L_DYNAMIC },
{ "expert-mode", L_EXPERT_MODE },

View File

@ -15,7 +15,7 @@
* SOFTWARE.
*/
/* $Id: confview.c,v 1.24 2000/04/28 01:10:38 halley Exp $ */
/* $Id: confview.c,v 1.25 2000/05/03 19:29:39 brister Exp $ */
#include <config.h>
@ -1040,11 +1040,9 @@ dns_c_view_getordering(dns_c_view_t *view,
isc_result_t
dns_c_view_unsetordering(dns_c_view_t *view,
dns_c_rrsolist_t **olist)
dns_c_view_unsetordering(dns_c_view_t *view)
{
REQUIRE(DNS_C_VIEW_VALID(view));
REQUIRE(olist != NULL);
if (view->ordering != NULL) {
dns_c_rrsolist_delete(&view->ordering);

View File

@ -15,7 +15,7 @@
* SOFTWARE.
*/
/* $Id: confzone.c,v 1.37 2000/04/28 01:10:40 halley Exp $ */
/* $Id: confzone.c,v 1.38 2000/05/03 19:29:41 brister Exp $ */
#include <config.h>
@ -340,6 +340,8 @@ dns_c_zonelist_rmzone(dns_c_zonelist_t *zlist,
if (zone == zoneelem->thezone) {
break;
}
zoneelem = ISC_LIST_NEXT(zoneelem, next);
}
if (zoneelem != NULL) {
@ -3365,7 +3367,8 @@ master_zone_print(FILE *fp, int indent,
if (mzone->also_notify != NULL) {
dns_c_printtabs(fp, indent);
fprintf(fp, "also-notify ");
dns_c_iplist_print(fp, indent + 1, mzone->also_notify);
dns_c_iplist_printfully(fp, indent + 1, ISC_TRUE,
mzone->also_notify);
fprintf(fp, ";\n");
}
@ -3452,7 +3455,8 @@ slave_zone_print(FILE *fp, int indent,
szone->master_ips->nextidx == 0) {
fprintf(fp, "{ /* none defined */ }");
} else {
dns_c_iplist_print(fp, indent + 1, szone->master_ips);
dns_c_iplist_printfully(fp, indent + 1,
ISC_TRUE, szone->master_ips);
}
fprintf(fp, ";\n");
}
@ -3568,7 +3572,8 @@ slave_zone_print(FILE *fp, int indent,
if (szone->also_notify != NULL) {
dns_c_printtabs(fp, indent);
fprintf(fp, "also-notify ");
dns_c_iplist_print(fp, indent + 1, szone->also_notify);
dns_c_iplist_printfully(fp, indent + 1,
ISC_TRUE, szone->also_notify);
fprintf(fp, ";\n");
}
@ -3603,7 +3608,8 @@ stub_zone_print(FILE *fp, int indent, dns_c_stubzone_t *tzone)
tzone->master_ips->nextidx == 0) {
fprintf(fp, "{ /* none defined */ }");
} else {
dns_c_iplist_print(fp, indent + 1, tzone->master_ips);
dns_c_iplist_printfully(fp, indent + 1,
ISC_TRUE, tzone->master_ips);
}
fprintf(fp, ";\n");
}

View File

@ -246,6 +246,10 @@ dns_c_iplist_remove(dns_c_iplist_t *list, isc_sockaddr_t newaddr);
void
dns_c_iplist_print(FILE *fp, int indent, dns_c_iplist_t *list);
void
dns_c_iplist_printfully(FILE *fp, int indent, isc_boolean_t porttoo,
dns_c_iplist_t *list);
isc_boolean_t
dns_c_iplist_equal(dns_c_iplist_t *list1, dns_c_iplist_t *list2);

View File

@ -323,7 +323,7 @@ dns_c_view_setordering(dns_c_view_t *view, isc_boolean_t copy,
dns_c_rrsolist_t *olist);
isc_result_t
dns_c_view_unsetordering(dns_c_view_t *view, dns_c_rrsolist_t **olist);
dns_c_view_unsetordering(dns_c_view_t *view);
isc_result_t
dns_c_view_setchecknames(dns_c_view_t *view, dns_c_trans_t transtype,