xref: /minix3/external/bsd/bind/dist/contrib/scripts/named-bootconf.sh (revision 00b67f09dd46474d133c95011a48590a8e8f94c7)
1*00b67f09SDavid van Moolenbroek#!/bin/sh
2*00b67f09SDavid van Moolenbroek#
3*00b67f09SDavid van Moolenbroek# Portions Copyright (C) 2004, 2006, 2007, 2012, 2014  Internet Systems Consortium, Inc. ("ISC")
4*00b67f09SDavid van Moolenbroek# Portions Copyright (C) 1999-2001  Internet Software Consortium.
5*00b67f09SDavid van Moolenbroek#
6*00b67f09SDavid van Moolenbroek# Permission to use, copy, modify, and/or distribute this software for any
7*00b67f09SDavid van Moolenbroek# purpose with or without fee is hereby granted, provided that the above
8*00b67f09SDavid van Moolenbroek# copyright notice and this permission notice appear in all copies.
9*00b67f09SDavid van Moolenbroek#
10*00b67f09SDavid van Moolenbroek# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
11*00b67f09SDavid van Moolenbroek# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
12*00b67f09SDavid van Moolenbroek# AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
13*00b67f09SDavid van Moolenbroek# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
14*00b67f09SDavid van Moolenbroek# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
15*00b67f09SDavid van Moolenbroek# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16*00b67f09SDavid van Moolenbroek# PERFORMANCE OF THIS SOFTWARE.
17*00b67f09SDavid van Moolenbroek
18*00b67f09SDavid van Moolenbroek# Id: named-bootconf.sh,v 1.12 2007/06/19 23:47:07 tbox Exp
19*00b67f09SDavid van Moolenbroek
20*00b67f09SDavid van Moolenbroek# NetBSD: named-bootconf.sh,v 1.5 1998/12/15 01:00:53 tron Exp
21*00b67f09SDavid van Moolenbroek#
22*00b67f09SDavid van Moolenbroek# Copyright (c) 1995, 1998 The NetBSD Foundation, Inc.
23*00b67f09SDavid van Moolenbroek# All rights reserved.
24*00b67f09SDavid van Moolenbroek#
25*00b67f09SDavid van Moolenbroek# This code is derived from software contributed to The NetBSD Foundation
26*00b67f09SDavid van Moolenbroek# by Matthias Scheler.
27*00b67f09SDavid van Moolenbroek#
28*00b67f09SDavid van Moolenbroek# Redistribution and use in source and binary forms, with or without
29*00b67f09SDavid van Moolenbroek# modification, are permitted provided that the following conditions
30*00b67f09SDavid van Moolenbroek# are met:
31*00b67f09SDavid van Moolenbroek# 1. Redistributions of source code must retain the above copyright
32*00b67f09SDavid van Moolenbroek#    notice, this list of conditions and the following disclaimer.
33*00b67f09SDavid van Moolenbroek# 2. Redistributions in binary form must reproduce the above copyright
34*00b67f09SDavid van Moolenbroek#    notice, this list of conditions and the following disclaimer in the
35*00b67f09SDavid van Moolenbroek#    documentation and/or other materials provided with the distribution.
36*00b67f09SDavid van Moolenbroek#
37*00b67f09SDavid van Moolenbroek# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
38*00b67f09SDavid van Moolenbroek# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
39*00b67f09SDavid van Moolenbroek# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
40*00b67f09SDavid van Moolenbroek# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
41*00b67f09SDavid van Moolenbroek# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
42*00b67f09SDavid van Moolenbroek# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
43*00b67f09SDavid van Moolenbroek# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
44*00b67f09SDavid van Moolenbroek# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
45*00b67f09SDavid van Moolenbroek# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
46*00b67f09SDavid van Moolenbroek# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
47*00b67f09SDavid van Moolenbroek# POSSIBILITY OF SUCH DAMAGE.
48*00b67f09SDavid van Moolenbroek
49*00b67f09SDavid van Moolenbroekif [ ${OPTIONFILE-X} = X ]; then
50*00b67f09SDavid van Moolenbroek	WORKDIR=/tmp/`date +%s`.$$
51*00b67f09SDavid van Moolenbroek	( umask 077 ; mkdir $WORKDIR ) || {
52*00b67f09SDavid van Moolenbroek		echo "unable to create work directory '$WORKDIR'" >&2
53*00b67f09SDavid van Moolenbroek		exit 1
54*00b67f09SDavid van Moolenbroek	}
55*00b67f09SDavid van Moolenbroek	OPTIONFILE=$WORKDIR/options
56*00b67f09SDavid van Moolenbroek	ZONEFILE=$WORKDIR/zones
57*00b67f09SDavid van Moolenbroek	COMMENTFILE=$WORKDIR/comments
58*00b67f09SDavid van Moolenbroek	export OPTIONFILE ZONEFILE COMMENTFILE
59*00b67f09SDavid van Moolenbroek	touch $OPTIONFILE $ZONEFILE $COMMENTFILE
60*00b67f09SDavid van Moolenbroek	DUMP=1
61*00b67f09SDavid van Moolenbroekelse
62*00b67f09SDavid van Moolenbroek	DUMP=0
63*00b67f09SDavid van Moolenbroekfi
64*00b67f09SDavid van Moolenbroek
65*00b67f09SDavid van Moolenbroekwhile read CMD ARGS; do
66*00b67f09SDavid van Moolenbroek	class=
67*00b67f09SDavid van Moolenbroek	CMD=`echo "${CMD}" | tr '[A-Z]' '[a-z]'`
68*00b67f09SDavid van Moolenbroek	case $CMD in
69*00b67f09SDavid van Moolenbroek	\; )
70*00b67f09SDavid van Moolenbroek		echo \# $ARGS >>$COMMENTFILE
71*00b67f09SDavid van Moolenbroek		;;
72*00b67f09SDavid van Moolenbroek	cache )
73*00b67f09SDavid van Moolenbroek		set - X $ARGS
74*00b67f09SDavid van Moolenbroek		shift
75*00b67f09SDavid van Moolenbroek		if [ $# -eq 2 ]; then
76*00b67f09SDavid van Moolenbroek			(echo ""
77*00b67f09SDavid van Moolenbroek			cat $COMMENTFILE
78*00b67f09SDavid van Moolenbroek			echo "zone \"$1\" {"
79*00b67f09SDavid van Moolenbroek			echo "	type hint;"
80*00b67f09SDavid van Moolenbroek			echo "	file \"$2\";"
81*00b67f09SDavid van Moolenbroek			echo "};") >>$ZONEFILE
82*00b67f09SDavid van Moolenbroek			rm -f $COMMENTFILE
83*00b67f09SDavid van Moolenbroek			touch $COMMENTFILE
84*00b67f09SDavid van Moolenbroek		fi
85*00b67f09SDavid van Moolenbroek		;;
86*00b67f09SDavid van Moolenbroek	directory )
87*00b67f09SDavid van Moolenbroek		set - X $ARGS
88*00b67f09SDavid van Moolenbroek		shift
89*00b67f09SDavid van Moolenbroek		if [ $# -eq 1 ]; then
90*00b67f09SDavid van Moolenbroek			(cat $COMMENTFILE
91*00b67f09SDavid van Moolenbroek			echo "	directory \"$1\";") >>$OPTIONFILE
92*00b67f09SDavid van Moolenbroek			rm -f $COMMENTFILE
93*00b67f09SDavid van Moolenbroek			touch $COMMENTFILE
94*00b67f09SDavid van Moolenbroek
95*00b67f09SDavid van Moolenbroek			DIRECTORY=$1
96*00b67f09SDavid van Moolenbroek			export DIRECTORY
97*00b67f09SDavid van Moolenbroek		fi
98*00b67f09SDavid van Moolenbroek		;;
99*00b67f09SDavid van Moolenbroek	forwarders )
100*00b67f09SDavid van Moolenbroek		(cat $COMMENTFILE
101*00b67f09SDavid van Moolenbroek		echo "	forwarders {"
102*00b67f09SDavid van Moolenbroek		for ARG in $ARGS; do
103*00b67f09SDavid van Moolenbroek			echo "		$ARG;"
104*00b67f09SDavid van Moolenbroek		done
105*00b67f09SDavid van Moolenbroek		echo "	};") >>$OPTIONFILE
106*00b67f09SDavid van Moolenbroek		rm -f $COMMENTFILE
107*00b67f09SDavid van Moolenbroek		touch $COMMENTFILE
108*00b67f09SDavid van Moolenbroek		;;
109*00b67f09SDavid van Moolenbroek	include )
110*00b67f09SDavid van Moolenbroek		if [ "$ARGS" != "" ]; then
111*00b67f09SDavid van Moolenbroek			(cd ${DIRECTORY-.}; cat $ARGS) | $0
112*00b67f09SDavid van Moolenbroek		fi
113*00b67f09SDavid van Moolenbroek		;;
114*00b67f09SDavid van Moolenbroek	limit )
115*00b67f09SDavid van Moolenbroek		ARGS=`echo "${ARGS}" | tr '[A-Z]' '[a-z]'`
116*00b67f09SDavid van Moolenbroek		set - X $ARGS
117*00b67f09SDavid van Moolenbroek		shift
118*00b67f09SDavid van Moolenbroek		if [ $# -eq 2 ]; then
119*00b67f09SDavid van Moolenbroek			cat $COMMENTFILE >>$OPTIONFILE
120*00b67f09SDavid van Moolenbroek			case $1 in
121*00b67f09SDavid van Moolenbroek			datasize | files | transfers-in | transfers-per-ns )
122*00b67f09SDavid van Moolenbroek				echo "	$1 $2;" >>$OPTIONFILE
123*00b67f09SDavid van Moolenbroek				;;
124*00b67f09SDavid van Moolenbroek			esac
125*00b67f09SDavid van Moolenbroek			rm -f $COMMENTFILE
126*00b67f09SDavid van Moolenbroek			touch $COMMENTFILE
127*00b67f09SDavid van Moolenbroek		fi
128*00b67f09SDavid van Moolenbroek		;;
129*00b67f09SDavid van Moolenbroek	options )
130*00b67f09SDavid van Moolenbroek		ARGS=`echo "${ARGS}" | tr '[A-Z]' '[a-z]'`
131*00b67f09SDavid van Moolenbroek		cat $COMMENTFILE >>$OPTIONFILE
132*00b67f09SDavid van Moolenbroek		for ARG in $ARGS; do
133*00b67f09SDavid van Moolenbroek			case $ARG in
134*00b67f09SDavid van Moolenbroek			fake-iquery )
135*00b67f09SDavid van Moolenbroek				echo "	fake-iquery yes;" >>$OPTIONFILE
136*00b67f09SDavid van Moolenbroek				;;
137*00b67f09SDavid van Moolenbroek			forward-only )
138*00b67f09SDavid van Moolenbroek				echo "	forward only;" >>$OPTIONFILE
139*00b67f09SDavid van Moolenbroek				;;
140*00b67f09SDavid van Moolenbroek			no-fetch-glue )
141*00b67f09SDavid van Moolenbroek				echo "	fetch-glue no;" >>$OPTIONFILE
142*00b67f09SDavid van Moolenbroek				;;
143*00b67f09SDavid van Moolenbroek			no-recursion )
144*00b67f09SDavid van Moolenbroek				echo "	recursion no;" >>$OPTIONFILE
145*00b67f09SDavid van Moolenbroek				;;
146*00b67f09SDavid van Moolenbroek			esac
147*00b67f09SDavid van Moolenbroek		done
148*00b67f09SDavid van Moolenbroek		rm -f $COMMENTFILE
149*00b67f09SDavid van Moolenbroek		touch $COMMENTFILE
150*00b67f09SDavid van Moolenbroek		;;
151*00b67f09SDavid van Moolenbroek	primary|primary/* )
152*00b67f09SDavid van Moolenbroek		case $CMD in
153*00b67f09SDavid van Moolenbroek		primary/chaos )
154*00b67f09SDavid van Moolenbroek			class="chaos "
155*00b67f09SDavid van Moolenbroek			;;
156*00b67f09SDavid van Moolenbroek		primary/hs )
157*00b67f09SDavid van Moolenbroek			class="hesiod "
158*00b67f09SDavid van Moolenbroek			;;
159*00b67f09SDavid van Moolenbroek		esac
160*00b67f09SDavid van Moolenbroek		set - X $ARGS
161*00b67f09SDavid van Moolenbroek		shift
162*00b67f09SDavid van Moolenbroek		if [ $# -eq 2 ]; then
163*00b67f09SDavid van Moolenbroek			(echo ""
164*00b67f09SDavid van Moolenbroek			cat $COMMENTFILE
165*00b67f09SDavid van Moolenbroek			echo "zone \"$1\" ${class}{"
166*00b67f09SDavid van Moolenbroek			echo "	type master;"
167*00b67f09SDavid van Moolenbroek			echo "	file \"$2\";"
168*00b67f09SDavid van Moolenbroek			echo "};") >>$ZONEFILE
169*00b67f09SDavid van Moolenbroek			rm -f $COMMENTFILE
170*00b67f09SDavid van Moolenbroek			touch $COMMENTFILE
171*00b67f09SDavid van Moolenbroek		fi
172*00b67f09SDavid van Moolenbroek		;;
173*00b67f09SDavid van Moolenbroek	secondary|secondary/* )
174*00b67f09SDavid van Moolenbroek		case $CMD in
175*00b67f09SDavid van Moolenbroek		secondary/chaos )
176*00b67f09SDavid van Moolenbroek			class="chaos "
177*00b67f09SDavid van Moolenbroek			;;
178*00b67f09SDavid van Moolenbroek		secondary/hs )
179*00b67f09SDavid van Moolenbroek			class="hesiod "
180*00b67f09SDavid van Moolenbroek			;;
181*00b67f09SDavid van Moolenbroek		esac
182*00b67f09SDavid van Moolenbroek		set - X $ARGS
183*00b67f09SDavid van Moolenbroek		shift
184*00b67f09SDavid van Moolenbroek		if [ $# -gt 2 ]; then
185*00b67f09SDavid van Moolenbroek			ZONE=$1
186*00b67f09SDavid van Moolenbroek			shift
187*00b67f09SDavid van Moolenbroek			PRIMARIES=$1
188*00b67f09SDavid van Moolenbroek			while [ $# -gt 2 ]; do
189*00b67f09SDavid van Moolenbroek				shift
190*00b67f09SDavid van Moolenbroek				PRIMARIES="$PRIMARIES $1"
191*00b67f09SDavid van Moolenbroek			done
192*00b67f09SDavid van Moolenbroek			(echo ""
193*00b67f09SDavid van Moolenbroek			cat $COMMENTFILE
194*00b67f09SDavid van Moolenbroek			echo "zone \"$ZONE\" ${class}{"
195*00b67f09SDavid van Moolenbroek			echo "	type slave;"
196*00b67f09SDavid van Moolenbroek			echo "	file \"$2\";"
197*00b67f09SDavid van Moolenbroek			echo "	masters {"
198*00b67f09SDavid van Moolenbroek			for PRIMARY in $PRIMARIES; do
199*00b67f09SDavid van Moolenbroek				echo "		$PRIMARY;"
200*00b67f09SDavid van Moolenbroek			done
201*00b67f09SDavid van Moolenbroek			echo "	};"
202*00b67f09SDavid van Moolenbroek			echo "};") >>$ZONEFILE
203*00b67f09SDavid van Moolenbroek			rm -f $COMMENTFILE
204*00b67f09SDavid van Moolenbroek			touch $COMMENTFILE
205*00b67f09SDavid van Moolenbroek		fi
206*00b67f09SDavid van Moolenbroek		;;
207*00b67f09SDavid van Moolenbroek	stub|stub/* )
208*00b67f09SDavid van Moolenbroek		case $CMD in
209*00b67f09SDavid van Moolenbroek		stub/chaos )
210*00b67f09SDavid van Moolenbroek			class="chaos "
211*00b67f09SDavid van Moolenbroek			;;
212*00b67f09SDavid van Moolenbroek		stub/hs )
213*00b67f09SDavid van Moolenbroek			class="hesiod "
214*00b67f09SDavid van Moolenbroek			;;
215*00b67f09SDavid van Moolenbroek		esac
216*00b67f09SDavid van Moolenbroek		set - X $ARGS
217*00b67f09SDavid van Moolenbroek		shift
218*00b67f09SDavid van Moolenbroek		if [ $# -gt 2 ]; then
219*00b67f09SDavid van Moolenbroek			ZONE=$1
220*00b67f09SDavid van Moolenbroek			shift
221*00b67f09SDavid van Moolenbroek			PRIMARIES=$1
222*00b67f09SDavid van Moolenbroek			while [ $# -gt 2 ]; do
223*00b67f09SDavid van Moolenbroek				shift
224*00b67f09SDavid van Moolenbroek				PRIMARIES="$PRIMARIES $1"
225*00b67f09SDavid van Moolenbroek			done
226*00b67f09SDavid van Moolenbroek			(echo ""
227*00b67f09SDavid van Moolenbroek			cat $COMMENTFILE
228*00b67f09SDavid van Moolenbroek			echo "zone \"$ZONE\" ${class}{"
229*00b67f09SDavid van Moolenbroek			echo "	type stub;"
230*00b67f09SDavid van Moolenbroek			echo "	file \"$2\";"
231*00b67f09SDavid van Moolenbroek			echo "	masters {"
232*00b67f09SDavid van Moolenbroek			for PRIMARY in $PRIMARIES; do
233*00b67f09SDavid van Moolenbroek				echo "		$PRIMARY;"
234*00b67f09SDavid van Moolenbroek			done
235*00b67f09SDavid van Moolenbroek			echo "	};"
236*00b67f09SDavid van Moolenbroek			echo "};") >>$ZONEFILE
237*00b67f09SDavid van Moolenbroek			rm -f $COMMENTFILE
238*00b67f09SDavid van Moolenbroek			touch $COMMENTFILE
239*00b67f09SDavid van Moolenbroek		fi
240*00b67f09SDavid van Moolenbroek		;;
241*00b67f09SDavid van Moolenbroek	slave )
242*00b67f09SDavid van Moolenbroek		cat $COMMENTFILE >>$OPTIONFILE
243*00b67f09SDavid van Moolenbroek		echo "	forward only;" >>$OPTIONFILE
244*00b67f09SDavid van Moolenbroek		rm -f $COMMENTFILE
245*00b67f09SDavid van Moolenbroek		touch $COMMENTFILE
246*00b67f09SDavid van Moolenbroek		;;
247*00b67f09SDavid van Moolenbroek	sortlist )
248*00b67f09SDavid van Moolenbroek		(cat $COMMENTFILE
249*00b67f09SDavid van Moolenbroek		echo "	topology {"
250*00b67f09SDavid van Moolenbroek		for ARG in $ARGS; do
251*00b67f09SDavid van Moolenbroek			case $ARG in
252*00b67f09SDavid van Moolenbroek			*.0.0.0 )
253*00b67f09SDavid van Moolenbroek				echo "		$ARG/8;"
254*00b67f09SDavid van Moolenbroek				;;
255*00b67f09SDavid van Moolenbroek			*.0.0 )
256*00b67f09SDavid van Moolenbroek				echo "		$ARG/16;"
257*00b67f09SDavid van Moolenbroek				;;
258*00b67f09SDavid van Moolenbroek			*.0 )
259*00b67f09SDavid van Moolenbroek				echo "		$ARG/24;"
260*00b67f09SDavid van Moolenbroek				;;
261*00b67f09SDavid van Moolenbroek			* )
262*00b67f09SDavid van Moolenbroek				echo "		$ARG;"
263*00b67f09SDavid van Moolenbroek				;;
264*00b67f09SDavid van Moolenbroek			esac
265*00b67f09SDavid van Moolenbroek		done
266*00b67f09SDavid van Moolenbroek		echo "	};") >>$OPTIONFILE
267*00b67f09SDavid van Moolenbroek		rm -f $COMMENTFILE
268*00b67f09SDavid van Moolenbroek		touch $COMMENTFILE
269*00b67f09SDavid van Moolenbroek		;;
270*00b67f09SDavid van Moolenbroek	tcplist | xfrnets )
271*00b67f09SDavid van Moolenbroek		(cat $COMMENTFILE
272*00b67f09SDavid van Moolenbroek		echo "	allow-transfer {"
273*00b67f09SDavid van Moolenbroek		for ARG in $ARGS; do
274*00b67f09SDavid van Moolenbroek			case $ARG in
275*00b67f09SDavid van Moolenbroek			*.0.0.0 )
276*00b67f09SDavid van Moolenbroek				echo "		$ARG/8;"
277*00b67f09SDavid van Moolenbroek				;;
278*00b67f09SDavid van Moolenbroek			*.0.0 )
279*00b67f09SDavid van Moolenbroek				echo "		$ARG/16;"
280*00b67f09SDavid van Moolenbroek				;;
281*00b67f09SDavid van Moolenbroek			*.0 )
282*00b67f09SDavid van Moolenbroek				echo "		$ARG/24;"
283*00b67f09SDavid van Moolenbroek				;;
284*00b67f09SDavid van Moolenbroek			* )
285*00b67f09SDavid van Moolenbroek				echo "		$ARG;"
286*00b67f09SDavid van Moolenbroek				;;
287*00b67f09SDavid van Moolenbroek			esac
288*00b67f09SDavid van Moolenbroek		done
289*00b67f09SDavid van Moolenbroek		echo "	};") >>$OPTIONFILE
290*00b67f09SDavid van Moolenbroek		rm -f $COMMENTFILE
291*00b67f09SDavid van Moolenbroek		touch $COMMENTFILE
292*00b67f09SDavid van Moolenbroek		;;
293*00b67f09SDavid van Moolenbroek	esac
294*00b67f09SDavid van Moolenbroekdone
295*00b67f09SDavid van Moolenbroek
296*00b67f09SDavid van Moolenbroekif [ $DUMP -eq 1 ]; then
297*00b67f09SDavid van Moolenbroek	echo ""
298*00b67f09SDavid van Moolenbroek	echo "options {"
299*00b67f09SDavid van Moolenbroek	cat $OPTIONFILE
300*00b67f09SDavid van Moolenbroek	echo "};"
301*00b67f09SDavid van Moolenbroek	cat $ZONEFILE $COMMENTFILE
302*00b67f09SDavid van Moolenbroek
303*00b67f09SDavid van Moolenbroek	rm -f $OPTIONFILE $ZONEFILE $COMMENTFILE
304*00b67f09SDavid van Moolenbroek	rmdir $WORKDIR
305*00b67f09SDavid van Moolenbroekfi
306*00b67f09SDavid van Moolenbroek
307*00b67f09SDavid van Moolenbroekexit 0
308