xref: /minix3/external/bsd/bind/dist/lib/dns/include/dns/master.h (revision 00b67f09dd46474d133c95011a48590a8e8f94c7)
1*00b67f09SDavid van Moolenbroek /*	$NetBSD: master.h,v 1.6 2014/12/10 04:37:58 christos Exp $	*/
2*00b67f09SDavid van Moolenbroek 
3*00b67f09SDavid van Moolenbroek /*
4*00b67f09SDavid van Moolenbroek  * Copyright (C) 2004-2009, 2011-2014  Internet Systems Consortium, Inc. ("ISC")
5*00b67f09SDavid van Moolenbroek  * Copyright (C) 1999-2002  Internet Software Consortium.
6*00b67f09SDavid van Moolenbroek  *
7*00b67f09SDavid van Moolenbroek  * Permission to use, copy, modify, and/or distribute this software for any
8*00b67f09SDavid van Moolenbroek  * purpose with or without fee is hereby granted, provided that the above
9*00b67f09SDavid van Moolenbroek  * copyright notice and this permission notice appear in all copies.
10*00b67f09SDavid van Moolenbroek  *
11*00b67f09SDavid van Moolenbroek  * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
12*00b67f09SDavid van Moolenbroek  * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
13*00b67f09SDavid van Moolenbroek  * AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
14*00b67f09SDavid van Moolenbroek  * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
15*00b67f09SDavid van Moolenbroek  * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
16*00b67f09SDavid van Moolenbroek  * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17*00b67f09SDavid van Moolenbroek  * PERFORMANCE OF THIS SOFTWARE.
18*00b67f09SDavid van Moolenbroek  */
19*00b67f09SDavid van Moolenbroek 
20*00b67f09SDavid van Moolenbroek /* Id: master.h,v 1.57.8.1 2012/02/07 00:44:16 each Exp  */
21*00b67f09SDavid van Moolenbroek 
22*00b67f09SDavid van Moolenbroek #ifndef DNS_MASTER_H
23*00b67f09SDavid van Moolenbroek #define DNS_MASTER_H 1
24*00b67f09SDavid van Moolenbroek 
25*00b67f09SDavid van Moolenbroek /*! \file dns/master.h */
26*00b67f09SDavid van Moolenbroek 
27*00b67f09SDavid van Moolenbroek /***
28*00b67f09SDavid van Moolenbroek  ***	Imports
29*00b67f09SDavid van Moolenbroek  ***/
30*00b67f09SDavid van Moolenbroek 
31*00b67f09SDavid van Moolenbroek #include <stdio.h>
32*00b67f09SDavid van Moolenbroek 
33*00b67f09SDavid van Moolenbroek #include <isc/lang.h>
34*00b67f09SDavid van Moolenbroek 
35*00b67f09SDavid van Moolenbroek #include <dns/types.h>
36*00b67f09SDavid van Moolenbroek 
37*00b67f09SDavid van Moolenbroek /*
38*00b67f09SDavid van Moolenbroek  * Flags to be passed in the 'options' argument in the functions below.
39*00b67f09SDavid van Moolenbroek  */
40*00b67f09SDavid van Moolenbroek #define	DNS_MASTER_AGETTL 	0x00000001	/*%< Age the ttl based on $DATE. */
41*00b67f09SDavid van Moolenbroek #define DNS_MASTER_MANYERRORS 	0x00000002	/*%< Continue processing on errors. */
42*00b67f09SDavid van Moolenbroek #define DNS_MASTER_NOINCLUDE 	0x00000004	/*%< Disallow $INCLUDE directives. */
43*00b67f09SDavid van Moolenbroek #define DNS_MASTER_ZONE 	0x00000008	/*%< Loading a zone master file. */
44*00b67f09SDavid van Moolenbroek #define DNS_MASTER_HINT 	0x00000010	/*%< Loading a hint master file. */
45*00b67f09SDavid van Moolenbroek #define DNS_MASTER_SLAVE 	0x00000020	/*%< Loading a slave master file. */
46*00b67f09SDavid van Moolenbroek #define DNS_MASTER_CHECKNS 	0x00000040	/*%<
47*00b67f09SDavid van Moolenbroek 						 * Check NS records to see
48*00b67f09SDavid van Moolenbroek 						 * if they are an address
49*00b67f09SDavid van Moolenbroek 						 */
50*00b67f09SDavid van Moolenbroek #define DNS_MASTER_FATALNS 	0x00000080	/*%<
51*00b67f09SDavid van Moolenbroek 						 * Treat DNS_MASTER_CHECKNS
52*00b67f09SDavid van Moolenbroek 						 * matches as fatal
53*00b67f09SDavid van Moolenbroek 						 */
54*00b67f09SDavid van Moolenbroek #define DNS_MASTER_CHECKNAMES   0x00000100
55*00b67f09SDavid van Moolenbroek #define DNS_MASTER_CHECKNAMESFAIL 0x00000200
56*00b67f09SDavid van Moolenbroek #define DNS_MASTER_CHECKWILDCARD 0x00000400	/* Check for internal wildcards. */
57*00b67f09SDavid van Moolenbroek #define DNS_MASTER_CHECKMX	0x00000800
58*00b67f09SDavid van Moolenbroek #define DNS_MASTER_CHECKMXFAIL	0x00001000
59*00b67f09SDavid van Moolenbroek 
60*00b67f09SDavid van Moolenbroek #define DNS_MASTER_RESIGN	0x00002000
61*00b67f09SDavid van Moolenbroek #define DNS_MASTER_KEY	 	0x00004000	/*%< Loading a key zone master file. */
62*00b67f09SDavid van Moolenbroek #define DNS_MASTER_NOTTL	0x00008000	/*%< Don't require ttl. */
63*00b67f09SDavid van Moolenbroek #define DNS_MASTER_CHECKTTL	0x00010000	/*%< Check max-zone-ttl */
64*00b67f09SDavid van Moolenbroek 
65*00b67f09SDavid van Moolenbroek ISC_LANG_BEGINDECLS
66*00b67f09SDavid van Moolenbroek 
67*00b67f09SDavid van Moolenbroek /*
68*00b67f09SDavid van Moolenbroek  * Structures that implement the "raw" format for master dump.
69*00b67f09SDavid van Moolenbroek  * These are provided for a reference purpose only; in the actual
70*00b67f09SDavid van Moolenbroek  * encoding, we directly read/write each field so that the encoded data
71*00b67f09SDavid van Moolenbroek  * is always "packed", regardless of the hardware architecture.
72*00b67f09SDavid van Moolenbroek  */
73*00b67f09SDavid van Moolenbroek #define DNS_RAWFORMAT_VERSION 1
74*00b67f09SDavid van Moolenbroek 
75*00b67f09SDavid van Moolenbroek /*
76*00b67f09SDavid van Moolenbroek  * Flags to indicate the status of the data in the raw file header
77*00b67f09SDavid van Moolenbroek  */
78*00b67f09SDavid van Moolenbroek #define DNS_MASTERRAW_COMPAT 		0x01
79*00b67f09SDavid van Moolenbroek #define DNS_MASTERRAW_SOURCESERIALSET	0x02
80*00b67f09SDavid van Moolenbroek #define DNS_MASTERRAW_LASTXFRINSET	0x04
81*00b67f09SDavid van Moolenbroek 
82*00b67f09SDavid van Moolenbroek /* Common header */
83*00b67f09SDavid van Moolenbroek struct dns_masterrawheader {
84*00b67f09SDavid van Moolenbroek 	isc_uint32_t		format;		/* must be
85*00b67f09SDavid van Moolenbroek 						 * dns_masterformat_raw
86*00b67f09SDavid van Moolenbroek 						 * or
87*00b67f09SDavid van Moolenbroek 						 * dns_masterformat_map */
88*00b67f09SDavid van Moolenbroek 	isc_uint32_t		version;	/* compatibility for future
89*00b67f09SDavid van Moolenbroek 						 * extensions */
90*00b67f09SDavid van Moolenbroek 	isc_uint32_t		dumptime;	/* timestamp on creation
91*00b67f09SDavid van Moolenbroek 						 * (currently unused) */
92*00b67f09SDavid van Moolenbroek 	isc_uint32_t		flags;		/* Flags */
93*00b67f09SDavid van Moolenbroek 	isc_uint32_t		sourceserial;	/* Source serial number (used
94*00b67f09SDavid van Moolenbroek 						 * by inline-signing zones) */
95*00b67f09SDavid van Moolenbroek 	isc_uint32_t		lastxfrin;	/* timestamp of last transfer
96*00b67f09SDavid van Moolenbroek 						 * (used by slave zones) */
97*00b67f09SDavid van Moolenbroek };
98*00b67f09SDavid van Moolenbroek 
99*00b67f09SDavid van Moolenbroek /* The structure for each RRset */
100*00b67f09SDavid van Moolenbroek typedef struct {
101*00b67f09SDavid van Moolenbroek 	isc_uint32_t		totallen;	/* length of the data for this
102*00b67f09SDavid van Moolenbroek 						 * RRset, including the
103*00b67f09SDavid van Moolenbroek 						 * "header" part */
104*00b67f09SDavid van Moolenbroek 	dns_rdataclass_t	rdclass;	/* 16-bit class */
105*00b67f09SDavid van Moolenbroek 	dns_rdatatype_t		type;		/* 16-bit type */
106*00b67f09SDavid van Moolenbroek 	dns_rdatatype_t		covers;		/* same as type */
107*00b67f09SDavid van Moolenbroek 	dns_ttl_t		ttl;		/* 32-bit TTL */
108*00b67f09SDavid van Moolenbroek 	isc_uint32_t		nrdata;		/* number of RRs in this set */
109*00b67f09SDavid van Moolenbroek 	/* followed by encoded owner name, and then rdata */
110*00b67f09SDavid van Moolenbroek } dns_masterrawrdataset_t;
111*00b67f09SDavid van Moolenbroek 
112*00b67f09SDavid van Moolenbroek /*
113*00b67f09SDavid van Moolenbroek  * Method prototype: a callback to register each include file as
114*00b67f09SDavid van Moolenbroek  * it is encountered.
115*00b67f09SDavid van Moolenbroek  */
116*00b67f09SDavid van Moolenbroek typedef void
117*00b67f09SDavid van Moolenbroek (*dns_masterincludecb_t)(const char *file, void *arg);
118*00b67f09SDavid van Moolenbroek 
119*00b67f09SDavid van Moolenbroek /***
120*00b67f09SDavid van Moolenbroek  ***	Function
121*00b67f09SDavid van Moolenbroek  ***/
122*00b67f09SDavid van Moolenbroek 
123*00b67f09SDavid van Moolenbroek isc_result_t
124*00b67f09SDavid van Moolenbroek dns_master_loadfile(const char *master_file,
125*00b67f09SDavid van Moolenbroek 		    dns_name_t *top,
126*00b67f09SDavid van Moolenbroek 		    dns_name_t *origin,
127*00b67f09SDavid van Moolenbroek 		    dns_rdataclass_t zclass,
128*00b67f09SDavid van Moolenbroek 		    unsigned int options,
129*00b67f09SDavid van Moolenbroek 		    dns_rdatacallbacks_t *callbacks,
130*00b67f09SDavid van Moolenbroek 		    isc_mem_t *mctx);
131*00b67f09SDavid van Moolenbroek 
132*00b67f09SDavid van Moolenbroek isc_result_t
133*00b67f09SDavid van Moolenbroek dns_master_loadfile2(const char *master_file,
134*00b67f09SDavid van Moolenbroek 		     dns_name_t *top,
135*00b67f09SDavid van Moolenbroek 		     dns_name_t *origin,
136*00b67f09SDavid van Moolenbroek 		     dns_rdataclass_t zclass,
137*00b67f09SDavid van Moolenbroek 		     unsigned int options,
138*00b67f09SDavid van Moolenbroek 		     dns_rdatacallbacks_t *callbacks,
139*00b67f09SDavid van Moolenbroek 		     isc_mem_t *mctx,
140*00b67f09SDavid van Moolenbroek 		     dns_masterformat_t format);
141*00b67f09SDavid van Moolenbroek 
142*00b67f09SDavid van Moolenbroek isc_result_t
143*00b67f09SDavid van Moolenbroek dns_master_loadfile3(const char *master_file,
144*00b67f09SDavid van Moolenbroek 		     dns_name_t *top,
145*00b67f09SDavid van Moolenbroek 		     dns_name_t *origin,
146*00b67f09SDavid van Moolenbroek 		     dns_rdataclass_t zclass,
147*00b67f09SDavid van Moolenbroek 		     unsigned int options,
148*00b67f09SDavid van Moolenbroek 		     isc_uint32_t resign,
149*00b67f09SDavid van Moolenbroek 		     dns_rdatacallbacks_t *callbacks,
150*00b67f09SDavid van Moolenbroek 		     isc_mem_t *mctx,
151*00b67f09SDavid van Moolenbroek 		     dns_masterformat_t format);
152*00b67f09SDavid van Moolenbroek 
153*00b67f09SDavid van Moolenbroek isc_result_t
154*00b67f09SDavid van Moolenbroek dns_master_loadfile4(const char *master_file,
155*00b67f09SDavid van Moolenbroek 		     dns_name_t *top,
156*00b67f09SDavid van Moolenbroek 		     dns_name_t *origin,
157*00b67f09SDavid van Moolenbroek 		     dns_rdataclass_t zclass,
158*00b67f09SDavid van Moolenbroek 		     unsigned int options,
159*00b67f09SDavid van Moolenbroek 		     isc_uint32_t resign,
160*00b67f09SDavid van Moolenbroek 		     dns_rdatacallbacks_t *callbacks,
161*00b67f09SDavid van Moolenbroek 		     dns_masterincludecb_t include_cb,
162*00b67f09SDavid van Moolenbroek 		     void *include_arg, isc_mem_t *mctx,
163*00b67f09SDavid van Moolenbroek 		     dns_masterformat_t format);
164*00b67f09SDavid van Moolenbroek 
165*00b67f09SDavid van Moolenbroek isc_result_t
166*00b67f09SDavid van Moolenbroek dns_master_loadfile5(const char *master_file,
167*00b67f09SDavid van Moolenbroek 		     dns_name_t *top,
168*00b67f09SDavid van Moolenbroek 		     dns_name_t *origin,
169*00b67f09SDavid van Moolenbroek 		     dns_rdataclass_t zclass,
170*00b67f09SDavid van Moolenbroek 		     unsigned int options,
171*00b67f09SDavid van Moolenbroek 		     isc_uint32_t resign,
172*00b67f09SDavid van Moolenbroek 		     dns_rdatacallbacks_t *callbacks,
173*00b67f09SDavid van Moolenbroek 		     dns_masterincludecb_t include_cb,
174*00b67f09SDavid van Moolenbroek 		     void *include_arg, isc_mem_t *mctx,
175*00b67f09SDavid van Moolenbroek 		     dns_masterformat_t format,
176*00b67f09SDavid van Moolenbroek 		     dns_ttl_t maxttl);
177*00b67f09SDavid van Moolenbroek 
178*00b67f09SDavid van Moolenbroek isc_result_t
179*00b67f09SDavid van Moolenbroek dns_master_loadstream(FILE *stream,
180*00b67f09SDavid van Moolenbroek 		      dns_name_t *top,
181*00b67f09SDavid van Moolenbroek 		      dns_name_t *origin,
182*00b67f09SDavid van Moolenbroek 		      dns_rdataclass_t zclass,
183*00b67f09SDavid van Moolenbroek 		      unsigned int options,
184*00b67f09SDavid van Moolenbroek 		      dns_rdatacallbacks_t *callbacks,
185*00b67f09SDavid van Moolenbroek 		      isc_mem_t *mctx);
186*00b67f09SDavid van Moolenbroek 
187*00b67f09SDavid van Moolenbroek isc_result_t
188*00b67f09SDavid van Moolenbroek dns_master_loadbuffer(isc_buffer_t *buffer,
189*00b67f09SDavid van Moolenbroek 		      dns_name_t *top,
190*00b67f09SDavid van Moolenbroek 		      dns_name_t *origin,
191*00b67f09SDavid van Moolenbroek 		      dns_rdataclass_t zclass,
192*00b67f09SDavid van Moolenbroek 		      unsigned int options,
193*00b67f09SDavid van Moolenbroek 		      dns_rdatacallbacks_t *callbacks,
194*00b67f09SDavid van Moolenbroek 		      isc_mem_t *mctx);
195*00b67f09SDavid van Moolenbroek 
196*00b67f09SDavid van Moolenbroek isc_result_t
197*00b67f09SDavid van Moolenbroek dns_master_loadlexer(isc_lex_t *lex,
198*00b67f09SDavid van Moolenbroek 		     dns_name_t *top,
199*00b67f09SDavid van Moolenbroek 		     dns_name_t *origin,
200*00b67f09SDavid van Moolenbroek 		     dns_rdataclass_t zclass,
201*00b67f09SDavid van Moolenbroek 		     unsigned int options,
202*00b67f09SDavid van Moolenbroek 		     dns_rdatacallbacks_t *callbacks,
203*00b67f09SDavid van Moolenbroek 		     isc_mem_t *mctx);
204*00b67f09SDavid van Moolenbroek 
205*00b67f09SDavid van Moolenbroek isc_result_t
206*00b67f09SDavid van Moolenbroek dns_master_loadfileinc(const char *master_file,
207*00b67f09SDavid van Moolenbroek 		       dns_name_t *top,
208*00b67f09SDavid van Moolenbroek 		       dns_name_t *origin,
209*00b67f09SDavid van Moolenbroek 		       dns_rdataclass_t zclass,
210*00b67f09SDavid van Moolenbroek 		       unsigned int options,
211*00b67f09SDavid van Moolenbroek 		       dns_rdatacallbacks_t *callbacks,
212*00b67f09SDavid van Moolenbroek 		       isc_task_t *task,
213*00b67f09SDavid van Moolenbroek 		       dns_loaddonefunc_t done, void *done_arg,
214*00b67f09SDavid van Moolenbroek 		       dns_loadctx_t **ctxp, isc_mem_t *mctx);
215*00b67f09SDavid van Moolenbroek 
216*00b67f09SDavid van Moolenbroek isc_result_t
217*00b67f09SDavid van Moolenbroek dns_master_loadfileinc2(const char *master_file,
218*00b67f09SDavid van Moolenbroek 			dns_name_t *top,
219*00b67f09SDavid van Moolenbroek 			dns_name_t *origin,
220*00b67f09SDavid van Moolenbroek 			dns_rdataclass_t zclass,
221*00b67f09SDavid van Moolenbroek 			unsigned int options,
222*00b67f09SDavid van Moolenbroek 			dns_rdatacallbacks_t *callbacks,
223*00b67f09SDavid van Moolenbroek 			isc_task_t *task,
224*00b67f09SDavid van Moolenbroek 			dns_loaddonefunc_t done, void *done_arg,
225*00b67f09SDavid van Moolenbroek 			dns_loadctx_t **ctxp, isc_mem_t *mctx,
226*00b67f09SDavid van Moolenbroek 			dns_masterformat_t format);
227*00b67f09SDavid van Moolenbroek 
228*00b67f09SDavid van Moolenbroek isc_result_t
229*00b67f09SDavid van Moolenbroek dns_master_loadfileinc3(const char *master_file,
230*00b67f09SDavid van Moolenbroek 			dns_name_t *top,
231*00b67f09SDavid van Moolenbroek 			dns_name_t *origin,
232*00b67f09SDavid van Moolenbroek 			dns_rdataclass_t zclass,
233*00b67f09SDavid van Moolenbroek 			unsigned int options,
234*00b67f09SDavid van Moolenbroek 			isc_uint32_t resign,
235*00b67f09SDavid van Moolenbroek 			dns_rdatacallbacks_t *callbacks,
236*00b67f09SDavid van Moolenbroek 			isc_task_t *task,
237*00b67f09SDavid van Moolenbroek 			dns_loaddonefunc_t done, void *done_arg,
238*00b67f09SDavid van Moolenbroek 			dns_loadctx_t **ctxp, isc_mem_t *mctx,
239*00b67f09SDavid van Moolenbroek 			dns_masterformat_t format);
240*00b67f09SDavid van Moolenbroek 
241*00b67f09SDavid van Moolenbroek isc_result_t
242*00b67f09SDavid van Moolenbroek dns_master_loadfileinc4(const char *master_file,
243*00b67f09SDavid van Moolenbroek 			dns_name_t *top,
244*00b67f09SDavid van Moolenbroek 			dns_name_t *origin,
245*00b67f09SDavid van Moolenbroek 			dns_rdataclass_t zclass,
246*00b67f09SDavid van Moolenbroek 			unsigned int options,
247*00b67f09SDavid van Moolenbroek 			isc_uint32_t resign,
248*00b67f09SDavid van Moolenbroek 			dns_rdatacallbacks_t *callbacks,
249*00b67f09SDavid van Moolenbroek 			isc_task_t *task,
250*00b67f09SDavid van Moolenbroek 			dns_loaddonefunc_t done, void *done_arg,
251*00b67f09SDavid van Moolenbroek 			dns_loadctx_t **ctxp,
252*00b67f09SDavid van Moolenbroek 			dns_masterincludecb_t include_cb, void *include_arg,
253*00b67f09SDavid van Moolenbroek 			isc_mem_t *mctx, dns_masterformat_t format);
254*00b67f09SDavid van Moolenbroek 
255*00b67f09SDavid van Moolenbroek isc_result_t
256*00b67f09SDavid van Moolenbroek dns_master_loadfileinc5(const char *master_file,
257*00b67f09SDavid van Moolenbroek 			dns_name_t *top,
258*00b67f09SDavid van Moolenbroek 			dns_name_t *origin,
259*00b67f09SDavid van Moolenbroek 			dns_rdataclass_t zclass,
260*00b67f09SDavid van Moolenbroek 			unsigned int options,
261*00b67f09SDavid van Moolenbroek 			isc_uint32_t resign,
262*00b67f09SDavid van Moolenbroek 			dns_rdatacallbacks_t *callbacks,
263*00b67f09SDavid van Moolenbroek 			isc_task_t *task,
264*00b67f09SDavid van Moolenbroek 			dns_loaddonefunc_t done, void *done_arg,
265*00b67f09SDavid van Moolenbroek 			dns_loadctx_t **ctxp,
266*00b67f09SDavid van Moolenbroek 			dns_masterincludecb_t include_cb, void *include_arg,
267*00b67f09SDavid van Moolenbroek 			isc_mem_t *mctx, dns_masterformat_t format,
268*00b67f09SDavid van Moolenbroek 			isc_uint32_t maxttl);
269*00b67f09SDavid van Moolenbroek 
270*00b67f09SDavid van Moolenbroek isc_result_t
271*00b67f09SDavid van Moolenbroek dns_master_loadstreaminc(FILE *stream,
272*00b67f09SDavid van Moolenbroek 			 dns_name_t *top,
273*00b67f09SDavid van Moolenbroek 			 dns_name_t *origin,
274*00b67f09SDavid van Moolenbroek 			 dns_rdataclass_t zclass,
275*00b67f09SDavid van Moolenbroek 			 unsigned int options,
276*00b67f09SDavid van Moolenbroek 			 dns_rdatacallbacks_t *callbacks,
277*00b67f09SDavid van Moolenbroek 			 isc_task_t *task,
278*00b67f09SDavid van Moolenbroek 			 dns_loaddonefunc_t done, void *done_arg,
279*00b67f09SDavid van Moolenbroek 			 dns_loadctx_t **ctxp, isc_mem_t *mctx);
280*00b67f09SDavid van Moolenbroek 
281*00b67f09SDavid van Moolenbroek isc_result_t
282*00b67f09SDavid van Moolenbroek dns_master_loadbufferinc(isc_buffer_t *buffer,
283*00b67f09SDavid van Moolenbroek 			 dns_name_t *top,
284*00b67f09SDavid van Moolenbroek 			 dns_name_t *origin,
285*00b67f09SDavid van Moolenbroek 			 dns_rdataclass_t zclass,
286*00b67f09SDavid van Moolenbroek 			 unsigned int options,
287*00b67f09SDavid van Moolenbroek 			 dns_rdatacallbacks_t *callbacks,
288*00b67f09SDavid van Moolenbroek 			 isc_task_t *task,
289*00b67f09SDavid van Moolenbroek 			 dns_loaddonefunc_t done, void *done_arg,
290*00b67f09SDavid van Moolenbroek 			 dns_loadctx_t **ctxp, isc_mem_t *mctx);
291*00b67f09SDavid van Moolenbroek 
292*00b67f09SDavid van Moolenbroek isc_result_t
293*00b67f09SDavid van Moolenbroek dns_master_loadlexerinc(isc_lex_t *lex,
294*00b67f09SDavid van Moolenbroek 			dns_name_t *top,
295*00b67f09SDavid van Moolenbroek 			dns_name_t *origin,
296*00b67f09SDavid van Moolenbroek 			dns_rdataclass_t zclass,
297*00b67f09SDavid van Moolenbroek 			unsigned int options,
298*00b67f09SDavid van Moolenbroek 			dns_rdatacallbacks_t *callbacks,
299*00b67f09SDavid van Moolenbroek 			isc_task_t *task,
300*00b67f09SDavid van Moolenbroek 			dns_loaddonefunc_t done, void *done_arg,
301*00b67f09SDavid van Moolenbroek 			dns_loadctx_t **ctxp, isc_mem_t *mctx);
302*00b67f09SDavid van Moolenbroek 
303*00b67f09SDavid van Moolenbroek /*%<
304*00b67f09SDavid van Moolenbroek  * Loads a RFC1305 master file from a file, stream, buffer, or existing
305*00b67f09SDavid van Moolenbroek  * lexer into rdatasets and then calls 'callbacks->commit' to commit the
306*00b67f09SDavid van Moolenbroek  * rdatasets.  Rdata memory belongs to dns_master_load and will be
307*00b67f09SDavid van Moolenbroek  * reused / released when the callback completes.  dns_load_master will
308*00b67f09SDavid van Moolenbroek  * abort if callbacks->commit returns any value other than ISC_R_SUCCESS.
309*00b67f09SDavid van Moolenbroek  *
310*00b67f09SDavid van Moolenbroek  * If 'DNS_MASTER_AGETTL' is set and the master file contains one or more
311*00b67f09SDavid van Moolenbroek  * $DATE directives, the TTLs of the data will be aged accordingly.
312*00b67f09SDavid van Moolenbroek  *
313*00b67f09SDavid van Moolenbroek  * 'callbacks->commit' is assumed to call 'callbacks->error' or
314*00b67f09SDavid van Moolenbroek  * 'callbacks->warn' to generate any error messages required.
315*00b67f09SDavid van Moolenbroek  *
316*00b67f09SDavid van Moolenbroek  * 'done' is called with 'done_arg' and a result code when the loading
317*00b67f09SDavid van Moolenbroek  * is completed or has failed.  If the initial setup fails 'done' is
318*00b67f09SDavid van Moolenbroek  * not called.
319*00b67f09SDavid van Moolenbroek  *
320*00b67f09SDavid van Moolenbroek  * 'resign' the number of seconds before a RRSIG expires that it should
321*00b67f09SDavid van Moolenbroek  * be re-signed.  0 is used if not provided.
322*00b67f09SDavid van Moolenbroek  *
323*00b67f09SDavid van Moolenbroek  * Requires:
324*00b67f09SDavid van Moolenbroek  *\li	'master_file' points to a valid string.
325*00b67f09SDavid van Moolenbroek  *\li	'lexer' points to a valid lexer.
326*00b67f09SDavid van Moolenbroek  *\li	'top' points to a valid name.
327*00b67f09SDavid van Moolenbroek  *\li	'origin' points to a valid name.
328*00b67f09SDavid van Moolenbroek  *\li	'callbacks->commit' points to a valid function.
329*00b67f09SDavid van Moolenbroek  *\li	'callbacks->error' points to a valid function.
330*00b67f09SDavid van Moolenbroek  *\li	'callbacks->warn' points to a valid function.
331*00b67f09SDavid van Moolenbroek  *\li	'mctx' points to a valid memory context.
332*00b67f09SDavid van Moolenbroek  *\li	'task' and 'done' to be valid.
333*00b67f09SDavid van Moolenbroek  *\li	'lmgr' to be valid.
334*00b67f09SDavid van Moolenbroek  *\li	'ctxp != NULL && ctxp == NULL'.
335*00b67f09SDavid van Moolenbroek  *
336*00b67f09SDavid van Moolenbroek  * Returns:
337*00b67f09SDavid van Moolenbroek  *\li	ISC_R_SUCCESS upon successfully loading the master file.
338*00b67f09SDavid van Moolenbroek  *\li	ISC_R_SEENINCLUDE upon successfully loading the master file with
339*00b67f09SDavid van Moolenbroek  *		a $INCLUDE statement.
340*00b67f09SDavid van Moolenbroek  *\li	ISC_R_NOMEMORY out of memory.
341*00b67f09SDavid van Moolenbroek  *\li	ISC_R_UNEXPECTEDEND expected to be able to read a input token and
342*00b67f09SDavid van Moolenbroek  *		there was not one.
343*00b67f09SDavid van Moolenbroek  *\li	ISC_R_UNEXPECTED
344*00b67f09SDavid van Moolenbroek  *\li	DNS_R_NOOWNER failed to specify a ownername.
345*00b67f09SDavid van Moolenbroek  *\li	DNS_R_NOTTL failed to specify a ttl.
346*00b67f09SDavid van Moolenbroek  *\li	DNS_R_BADCLASS record class did not match zone class.
347*00b67f09SDavid van Moolenbroek  *\li	DNS_R_CONTINUE load still in progress (dns_master_load*inc() only).
348*00b67f09SDavid van Moolenbroek  *\li	Any dns_rdata_fromtext() error code.
349*00b67f09SDavid van Moolenbroek  *\li	Any error code from callbacks->commit().
350*00b67f09SDavid van Moolenbroek  */
351*00b67f09SDavid van Moolenbroek 
352*00b67f09SDavid van Moolenbroek void
353*00b67f09SDavid van Moolenbroek dns_loadctx_detach(dns_loadctx_t **ctxp);
354*00b67f09SDavid van Moolenbroek /*%<
355*00b67f09SDavid van Moolenbroek  * Detach from the load context.
356*00b67f09SDavid van Moolenbroek  *
357*00b67f09SDavid van Moolenbroek  * Requires:
358*00b67f09SDavid van Moolenbroek  *\li	'*ctxp' to be valid.
359*00b67f09SDavid van Moolenbroek  *
360*00b67f09SDavid van Moolenbroek  * Ensures:
361*00b67f09SDavid van Moolenbroek  *\li	'*ctxp == NULL'
362*00b67f09SDavid van Moolenbroek  */
363*00b67f09SDavid van Moolenbroek 
364*00b67f09SDavid van Moolenbroek void
365*00b67f09SDavid van Moolenbroek dns_loadctx_attach(dns_loadctx_t *source, dns_loadctx_t **target);
366*00b67f09SDavid van Moolenbroek /*%<
367*00b67f09SDavid van Moolenbroek  * Attach to the load context.
368*00b67f09SDavid van Moolenbroek  *
369*00b67f09SDavid van Moolenbroek  * Requires:
370*00b67f09SDavid van Moolenbroek  *\li	'source' to be valid.
371*00b67f09SDavid van Moolenbroek  *\li	'target != NULL && *target == NULL'.
372*00b67f09SDavid van Moolenbroek  */
373*00b67f09SDavid van Moolenbroek 
374*00b67f09SDavid van Moolenbroek void
375*00b67f09SDavid van Moolenbroek dns_loadctx_cancel(dns_loadctx_t *ctx);
376*00b67f09SDavid van Moolenbroek /*%<
377*00b67f09SDavid van Moolenbroek  * Cancel loading the zone file associated with this load context.
378*00b67f09SDavid van Moolenbroek  *
379*00b67f09SDavid van Moolenbroek  * Requires:
380*00b67f09SDavid van Moolenbroek  *\li	'ctx' to be valid
381*00b67f09SDavid van Moolenbroek  */
382*00b67f09SDavid van Moolenbroek 
383*00b67f09SDavid van Moolenbroek void
384*00b67f09SDavid van Moolenbroek dns_master_initrawheader(dns_masterrawheader_t *header);
385*00b67f09SDavid van Moolenbroek /*%<
386*00b67f09SDavid van Moolenbroek  * Initializes the header for a raw master file, setting all
387*00b67f09SDavid van Moolenbroek  * values to zero.
388*00b67f09SDavid van Moolenbroek  */
389*00b67f09SDavid van Moolenbroek ISC_LANG_ENDDECLS
390*00b67f09SDavid van Moolenbroek 
391*00b67f09SDavid van Moolenbroek #endif /* DNS_MASTER_H */
392