Commit 0fc89c4e authored by Mark Andrews's avatar Mark Andrews
Browse files

540. [func] Add dialup support.

parent b209e8ec
540. [func] Add dialup support.
539. [func] Support the blackhole option.
538. [bug] fix buffer overruns by 1 in lwres_getnameinfo().
......
......@@ -15,7 +15,7 @@
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: server.h,v 1.41 2000/11/03 02:45:41 bwelling Exp $ */
/* $Id: server.h,v 1.42 2000/11/03 07:15:44 marka Exp $ */
#ifndef NAMED_SERVER_H
#define NAMED_SERVER_H 1
......@@ -61,6 +61,7 @@ struct ns_server {
dns_db_t * in_roothints;
dns_tkeyctx_t * tkeyctx;
isc_timer_t * interface_timer;
isc_timer_t * heartbeat_timer;
isc_mutex_t reload_event_lock;
isc_event_t * reload_event;
......
......@@ -15,7 +15,7 @@
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: server.c,v 1.235 2000/11/03 02:45:39 bwelling Exp $ */
/* $Id: server.c,v 1.236 2000/11/03 07:15:43 marka Exp $ */
#include <config.h>
......@@ -1264,6 +1264,24 @@ interface_timer_tick(isc_task_t *task, isc_event_t *event) {
RWUNLOCK(&server->conflock, isc_rwlocktype_write);
}
static void
heartbeat_timer_tick(isc_task_t *task, isc_event_t *event) {
ns_server_t *server = (ns_server_t *) event->ev_arg;
dns_view_t *view;
fprintf(stderr, "\n\nHEARTBEAT_TIMER_TICK\n");
UNUSED(task);
isc_event_free(&event);
RWLOCK(&server->conflock, isc_rwlocktype_read);
view = ISC_LIST_HEAD(server->viewlist);
while (view != NULL) {
dns_view_dialup(view);
view = ISC_LIST_NEXT(view, link);
}
RWUNLOCK(&server->conflock, isc_rwlocktype_read);
}
static isc_result_t
load_configuration(const char *filename, ns_server_t *server,
isc_boolean_t first_time)
......@@ -1280,6 +1298,7 @@ load_configuration(const char *filename, ns_server_t *server,
dns_dispatch_t *dispatchv6 = NULL;
char *pidfilename;
isc_uint32_t interface_interval;
isc_uint32_t heartbeat_interval;
in_port_t listen_port;
dns_aclconfctx_init(&aclconfctx);
......@@ -1449,6 +1468,24 @@ load_configuration(const char *filename, ns_server_t *server,
NULL, &interval, ISC_FALSE);
}
/*
* heartbeat timer
*/
heartbeat_interval = 3600; /* Default is 1 hour. */
(void)dns_c_ctx_getheartbeatinterval(cctx, &heartbeat_interval);
fprintf(stderr, "\n\nHEARTBEAT_INTERVAL = %u\n", heartbeat_interval);
if (heartbeat_interval == 0) {
isc_timer_reset(server->heartbeat_timer,
isc_timertype_inactive,
NULL, NULL, ISC_TRUE);
} else {
isc_interval_t interval;
isc_interval_set(&interval, heartbeat_interval, 0);
isc_timer_reset(server->heartbeat_timer, isc_timertype_ticker,
NULL, &interval, ISC_FALSE);
}
/*
* Configure and freeze all explicit views. Explicit
* views that have zones were already created at parsing
......@@ -1689,6 +1726,12 @@ run_server(isc_task_t *task, isc_event_t *event) {
server, &server->interface_timer),
"creating interface timer");
CHECKFATAL(isc_timer_create(ns_g_timermgr, isc_timertype_inactive,
NULL, NULL, server->task,
heartbeat_timer_tick,
server, &server->heartbeat_timer),
"creating heartbeat timer");
if (ns_g_lwresdonly)
CHECKFATAL(load_configuration(lwresd_g_conffile, server,
ISC_TRUE),
......@@ -1738,6 +1781,7 @@ shutdown_server(isc_task_t *task, isc_event_t *event) {
}
isc_timer_detach(&server->interface_timer);
isc_timer_detach(&server->heartbeat_timer);
ns_interfacemgr_shutdown(server->interfacemgr);
ns_interfacemgr_detach(&server->interfacemgr);
......@@ -1827,6 +1871,7 @@ ns_server_create(isc_mem_t *mctx, ns_server_t **serverp) {
"isc_app_onrun");
server->interface_timer = NULL;
server->heartbeat_timer = NULL;
CHECKFATAL(dns_zonemgr_create(ns_g_mctx, ns_g_taskmgr, ns_g_timermgr,
ns_g_socketmgr, &server->zonemgr),
......
......@@ -15,7 +15,7 @@
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: zoneconf.c,v 1.64 2000/10/31 05:34:18 marka Exp $ */
/* $Id: zoneconf.c,v 1.65 2000/11/03 07:15:52 marka Exp $ */
#include <config.h>
......@@ -174,6 +174,7 @@ dns_zone_configure(dns_c_ctx_t *cctx, dns_c_view_t *cview,
char **dbargv;
static char default_dbtype[] = "rbt";
isc_mem_t *mctx = dns_zone_getmctx(zone);
dns_dialuptype_t dialup;
isc_sockaddr_any(&sockaddr_any4);
isc_sockaddr_any6(&sockaddr_any6);
......@@ -240,12 +241,14 @@ dns_zone_configure(dns_c_ctx_t *cctx, dns_c_view_t *cview,
dns_zone_clearqueryacl));
if (czone->ztype != dns_c_zone_hint) {
result = dns_c_zone_getdialup(czone, &boolean);
result = dns_c_zone_getdialup(czone, &dialup);
if (result != ISC_R_SUCCESS && cview != NULL)
result = dns_c_view_getdialup(cview, &dialup);
if (result != ISC_R_SUCCESS)
result = dns_c_ctx_getdialup(cctx, &boolean);
result = dns_c_ctx_getdialup(cctx, &dialup);
if (result != ISC_R_SUCCESS)
boolean = ISC_FALSE;
dns_zone_setoption(zone, DNS_ZONEOPT_DIALUP, boolean);
dialup = dns_dialuptype_no;
dns_zone_setdialup(zone, dialup);
}
#ifndef NOMINUM_PUBLIC
......
@ 3600 SOA hostmaster.ns1 ns1 (
1 3600 1200 3600000 1200 )
NS ns1.example.
NS ns2.example.
NS ns3.example.
ns1 A 10.53.0.1
ns2 A 10.53.0.2
ns3 A 10.53.0.3
/*
* Copyright (C) 2000 Internet Software Consortium.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
* DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
* INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
* FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: named.conf,v 1.1 2000/11/03 07:15:46 marka Exp $ */
options {
query-source address 10.53.0.1;
transfer-source 10.53.0.1;
port 5300;
pid-file "named.pid";
listen-on { 10.53.0.1; };
listen-on-v6 {none;};
heartbeat-interval 2;
recursion no;
};
zone "." {
type master;
file "root.db";
};
zone "example." {
type master;
notify explicit;
also-notify { 10.53.0.2; };
dialup yes;
file "example.db";
};
@ 3600 SOA hostmaster.ns1.example ns1.example (
1 3600 1200 3600000 1200 )
NS ns1.example
example NS ns1.example
NS ns2.example
NS ns3.example
ns1.example A 10.53.0.1
ns2.example A 10.53.0.2
ns3.example A 10.53.0.3
. 1200 NS ns1.example
ns1.example A 10.53.0.1
/*
* Copyright (C) 2000 Internet Software Consortium.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
* DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
* INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
* FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: named.conf,v 1.1 2000/11/03 07:15:46 marka Exp $ */
options {
query-source address 10.53.0.2;
transfer-source 10.53.0.2;
port 5300;
pid-file "named.pid";
listen-on { 10.53.0.2; };
listen-on-v6 {none;};
heartbeat-interval 2;
recursion no;
};
zone "." {
type hint;
file "hint.db";
};
zone "example." {
type slave;
dialup passive;
notify no;
file "example.bk";
masters { 10.53.0.1; };
};
. 1200 NS ns1.example
ns1.example A 10.53.0.1
/*
* Copyright (C) 2000 Internet Software Consortium.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
* DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
* INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
* FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: named.conf,v 1.1 2000/11/03 07:15:47 marka Exp $ */
options {
query-source address 10.53.0.3;
transfer-source 10.53.0.3;
port 5300;
pid-file "named.pid";
listen-on { 10.53.0.3; };
listen-on-v6 {none;};
heartbeat-interval 2;
recursion no;
};
zone "." {
type hint;
file "hint.db";
};
zone "example." {
type slave;
dialup refresh;
notify no;
file "example.bk";
masters { 10.53.0.2; };
};
rm -f ns2/example.bk
rm -f ns3/example.bk
#!/bin/sh
#
# Copyright (C) 2000 Internet Software Consortium.
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
# DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
# INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
# $Id: tests.sh,v 1.1 2000/11/03 07:15:46 marka Exp $
#
# Perform tests
#
SYSTEMTESTTOP=..
. $SYSTEMTESTTOP/conf.sh
status=0
rm -f dig.out.*
DIGOPTS="+norec +tcp +noadd +nosea +nostat +noquest +nocmd -p 5300"
# Check the example. domain
$DIG $DIGOPTS example. @10.53.0.1 soa > dig.out.ns1.test || ret=1
echo "I:checking that first zone transfer worked"
ret=0
try=0
while test $try -lt 120
do
$DIG $DIGOPTS example. @10.53.0.2 soa > dig.out.ns2.test || ret=1
if grep SERVFAIL dig.out.ns2.test > /dev/null
then
try=`expr $try + 1`
sleep 1
else
$PERL ../digcomp.pl dig.out.ns1.test dig.out.ns2.test || ret=1
break;
fi
done
echo "I:try $try"
if [ $ret != 0 ]; then echo "I:failed"; fi
status=`expr $status + $ret`
echo "I:checking that second zone transfer worked"
ret=0
try=0
while test $try -lt 120
do
$DIG $DIGOPTS example. @10.53.0.3 soa > dig.out.ns3.test || ret=1
if grep SERVFAIL dig.out.ns3.test > /dev/null
then
try=`expr $try + 1`
sleep 1
else
$PERL ../digcomp.pl dig.out.ns1.test dig.out.ns3.test || ret=1
break;
fi
done
echo "I:try $try"
if [ $ret != 0 ]; then echo "I:failed"; fi
status=`expr $status + $ret`
echo "I:exit status: $status"
exit $status
......@@ -2,7 +2,7 @@
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.0//EN"
"http://www.oasis-open.org/docbook/xml/4.0/docbookx.dtd">
<!-- File: $Id: Bv9ARM-book.xml,v 1.21 2000/10/31 05:34:14 marka Exp $ -->
<!-- File: $Id: Bv9ARM-book.xml,v 1.22 2000/11/03 07:15:47 marka Exp $ -->
<book>
......@@ -1732,6 +1732,16 @@ to safely set a really large number.</para></entry>
The words <userinput>true</userinput> and <userinput>false</userinput> are
also accepted, as are the numbers <userinput>1</userinput> and <userinput>0</userinput>.</para></entry>
</row>
<row rowsep = "0">
<entry colname = "1"><para><varname>dialup_option</varname></para></entry>
<entry colname = "2"><para>One of <userinput>yes</userinput>,
<userinput>no</userinput>, <userinput>notify</userinput>,
<userinput>notify-passive</userinput>, <userinput>refresh</userinput> or
<userinput>passive</userinput>.
When used in a zone <userinput>notify-passive</userinput>,
<userinput>refresh</userinput> and <userinput>passive</userinput>
are restricted to slave and stub zones.</para></entry>
</row>
</tbody>
</tgroup></informaltable>
<sect2 id="address_match_lists"><title>Address Match Lists</title>
......@@ -2358,7 +2368,7 @@ lookups performed on behalf of clients by a caching name server.</para></entry>
<optional> statistics-file <replaceable>path_name</replaceable>; </optional>
<optional> auth-nxdomain <replaceable>yes_or_no</replaceable>; </optional>
<optional> deallocate-on-exit <replaceable>yes_or_no</replaceable>; </optional>
<optional> dialup <replaceable>yes_or_no</replaceable>; </optional>
<optional> dialup <replaceable>dialup_option</replaceable>; </optional>
<optional> fake-iquery <replaceable>yes_or_no</replaceable>; </optional>
<optional> fetch-glue <replaceable>yes_or_no</replaceable>; </optional>
<optional> has-old-clients <replaceable>yes_or_no</replaceable>; </optional>
......@@ -2541,17 +2551,25 @@ to zone type and concentrates the zone maintenance so that it all
happens in a short interval, once every <command>heartbeat-interval</command> and
hopefully during the one call. It also suppresses some of the normal
zone maintenance traffic. The default is <userinput>no</userinput>.</para><para>The <command>dialup</command> option
may also be specified in the <command>zone</command> statement,
may also be specified in the <command>view</command> and
<command>zone</command> statements,
in which case it overrides the <command>options dialup</command> statement.</para><para>If
the zone is a master then the server will send out a NOTIFY request
to all the slaves. This will trigger the zone serial number check
in the slave (providing it supports NOTIFY) allowing the slave to
verify the zone while the connection is active.</para><para>If the
zone is a slave or stub then the server will suppress the regular
"zone up to date" queries and only perform them when the
<command>heartbeat-interval</command> expires.</para><note>
<simpara>Not yet implemented
in <acronym>BIND</acronym> 9.</simpara></note></entry>
"zone up to date" (refresh) queries and only perform them when the
<command>heartbeat-interval</command> expires in addition to sending
NOTIFY requests.</para><para>Finer control can be achieved by using
<userinput>notity</userinput> which only sends NOTIFY messages,
<userinput>notity-passive</userinput> which sends NOTIFY messages and
suppresses the normal refresh queries, <userinput>refresh</userinput>
which suppresses normal refresh processing and send refresh queries
when the <command>heartbeat-interval</command> expires and
<userinput>passive</userinput> which just disables normal refresh
processing.</para>
</entry>
</row>
<row rowsep = "0">
<entry colname = "1"><para><command>fake-iquery</command></para></entry>
......@@ -3085,11 +3103,9 @@ If set to 0, no periodic cleaning will occur.</para></entry>
<row rowsep = "0">
<entry colname = "1"><para><command>heartbeat-interval</command></para></entry>
<entry colname = "2"><para>The server will perform zone maintenance tasks
for all zones marked <command>dialup yes</command> whenever this
for all zones marked as <command>dialup</command> whenever this
interval expires. The default is 60 minutes. Reasonable values are up
to 1 day (1440 minutes). If set to 0, no zone maintenance for these zones will occur.</para><note>
<simpara>Not yet
implemented in <acronym>BIND</acronym> 9.</simpara></note></entry>
to 1 day (1440 minutes). If set to 0, no zone maintenance for these zones will occur.</para></entry>
</row>
<row rowsep = "0">
<entry colname = "1"><para><command>interface-interval</command></para></entry>
......@@ -3505,7 +3521,7 @@ Statement Grammar</title>
<optional> allow-update-forwarding { <replaceable>address_match_list</replaceable> } ; </optional>
<optional> also-notify { <replaceable>ip_addr</replaceable> <optional>port <replaceable>ip_port</replaceable></optional> ; <optional> <replaceable>ip_addr</replaceable> <optional>port <replaceable>ip_port</replaceable></optional> ; ... </optional> }; </optional>
<optional> check-names (<constant>warn</constant>|<constant>fail</constant>|<constant>ignore</constant>) ; </optional>
<optional> dialup <replaceable>true_or_false</replaceable> ; </optional>
<optional> dialup <replaceable>dialup_option</replaceable> ; </optional>
<optional> file <replaceable>string</replaceable> ; </optional>
<optional> forward (<constant>only</constant>|<constant>first</constant>) ; </optional>
<optional> forwarders { <optional> <replaceable>ip_addr</replaceable> ; <optional> <replaceable>ip_addr</replaceable> ; <optional>...</optional></optional></optional> } ; </optional>
......@@ -3679,8 +3695,7 @@ The default is the empty list.</para></entry>
<row rowsep = "0">
<entry colname = "1"><para><command>dialup</command></para></entry>
<entry colname = "2"><para>See the description of
<command>dialup</command> under <xref linkend="boolean_options"/>.
<note><simpara>Not yet implemented in <acronym>BIND</acronym> 9.</simpara></note></para></entry>
<command>dialup</command> under <xref linkend="boolean_options"/>.</para></entry>
</row>
<row rowsep = "0">
<entry colname = "1"><para><command>forward</command></para></entry>
......
......@@ -15,7 +15,7 @@
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: confctx.c,v 1.95 2000/11/03 02:45:51 bwelling Exp $ */
/* $Id: confctx.c,v 1.96 2000/11/03 07:15:57 marka Exp $ */
#include <config.h>
......@@ -382,12 +382,6 @@ dns_c_checkconfig(dns_c_ctx_t *cfg)
"option 'deallocate-on-exit' is obsolete");
}
if (dns_c_ctx_getdialup(cfg, &bval) != ISC_R_NOTFOUND) {
isc_log_write(dns_lctx, DNS_LOGCATEGORY_CONFIG,
DNS_LOGMODULE_CONFIG, ISC_LOG_WARNING,
"option 'dialup' is not yet implemented");
}
if (dns_c_ctx_getfakeiquery(cfg, &bval) != ISC_R_NOTFOUND) {
isc_log_write(dns_lctx, DNS_LOGCATEGORY_CONFIG,
DNS_LOGMODULE_CONFIG, ISC_LOG_WARNING,
......@@ -512,13 +506,6 @@ dns_c_checkconfig(dns_c_ctx_t *cfg)
"implemented");
}
if (dns_c_ctx_getheartbeatinterval(cfg, &uintval) != ISC_R_NOTFOUND) {
isc_log_write(dns_lctx, DNS_LOGCATEGORY_CONFIG,
DNS_LOGMODULE_CONFIG, ISC_LOG_WARNING,
"option 'heartbeat-interval' is not yet "
"implemented");
}
if (dns_c_ctx_getstatsinterval(cfg, &uintval) != ISC_R_NOTFOUND) {
isc_log_write(dns_lctx, DNS_LOGCATEGORY_CONFIG,
DNS_LOGMODULE_CONFIG, ISC_LOG_WARNING,
......@@ -1074,7 +1061,13 @@ dns_c_ctx_optionsprint(FILE *fp, int indent, dns_c_options_t *options)
PRINT_AS_BOOLEAN(auth_nx_domain, "auth-nxdomain");
PRINT_AS_BOOLEAN(multiple_cnames, "multiple-cnames");
PRINT_AS_BOOLEAN(use_id_pool, "use-id-pool");
PRINT_AS_BOOLEAN(dialup, "dialup");
PRINT_IF_EQUAL(dns_dialuptype_no, "no", dialup, "dialup");
PRINT_IF_EQUAL(dns_dialuptype_yes, "yes", dialup, "dialup");
PRINT_IF_EQUAL(dns_dialuptype_notify, "notify", dialup, "dialup");
PRINT_IF_EQUAL(dns_dialuptype_refresh, "refresh", dialup, "dialup");
PRINT_IF_EQUAL(dns_dialuptype_passive, "passive", dialup, "dialup");
PRINT_IF_EQUAL(dns_dialuptype_notifypassive, "notify-passive",
dialup, "dialup");
PRINT_AS_BOOLEAN(rfc2308_type1, "rfc2308-type1");
PRINT_AS_BOOLEAN(request_ixfr, "request-ixfr");
PRINT_AS_BOOLEAN(provide_ixfr, "provide-ixfr");
......
......@@ -17,7 +17,7 @@
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: confparser.y.dirty,v 1.24 2000/10/31 01:17:18 marka Exp $ */
/* $Id: confparser.y.dirty,v 1.25 2000/11/03 07:15:58 marka Exp $ */
#include <config.h>
......@@ -216,6 +216,7 @@ static isc_boolean_t int_too_big(isc_uint32_t base, isc_uint32_t mult);
dns_c_trans_t transport;
dns_transfer_format_t tformat;
dns_notifytype_t notifytype;
dns_dialuptype_t dialuptype;
dns_c_ipmatchelement_t *ime;
dns_c_ipmatchlist_t *iml;
......@@ -344,6 +345,7 @@ static isc_boolean_t int_too_big(isc_uint32_t base, isc_uint32_t mult);
#ifndef NOMINUM_PUBLIC
%token L_NOTIFY_FORWARD
#endif /* NOMINUM_PUBLIC */
%token L_NOTIFY_PASSIVE
%token L_NULL_OUTPUT
%token L_ONE_ANSWER
%token L_ONLY
......@@ -352,6 +354,7 @@ static isc_boolean_t int_too_big(isc_uint32_t base, isc_uint32_t mult);
%token L_OWNER
%token L_RANDOM_DEVICE
%token L_RANDOM_SEED_FILE
%token L_PASSIVE
%token L_PERM
%token L_PIDFILE
%token L_PORT
......@@ -365,6 +368,7 @@ static isc_boolean_t int_too_big(isc_uint32_t base, isc_uint32_t mult);
%token L_RBRACE
%token L_RECURSION
%token L_RECURSIVE_CLIENTS
%token L_REFRESH
%token L_REQUEST_IXFR
%token L_RESPONSE
%token L_RFC2308_TYPE1
......@@ -424,6 +428,7 @@ static isc_boolean_t int_too_big(isc_uint32_t base, isc_uint32_t mult);
%type <boolean> grantp
%type <boolean> yea_or_nay
%type <notifytype> notify_setting
%type <dialuptype> dialup_setting
%type <forward> forward_opt
%type <forward> zone_forward_opt
%type <ime> address_match_element
......@@ -1586,7 +1591,7 @@ option: /* Empty */
YYABORT;
}
}
| L_DIALUP yea_or_nay
| L_DIALUP dialup_setting
{
tmpres = dns_c_ctx_setdialup(currcfg, $2);
if (tmpres == ISC_R_EXISTS) {
......@@ -2136,6 +2141,31 @@ notify_setting: yea_or_nay
}
;
dialup_setting: yea_or_nay
{
if ($1)
$$ = dns_dialuptype_yes;
else
$$ = dns_dialuptype_no;
}
| L_NOTIFY
{
$$ = dns_dialuptype_notify;
}
| L_NOTIFY_PASSIVE
{
$$ = dns_dialuptype_notifypassive;
}
| L_REFRESH