<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <HTML> <HEAD> <TITLE>Master File Format</TITLE> </HEAD> <BODY> <H2>BIND Configuration Guide -- Master File Format</H2> <HR> <P> The Master File Format was initially defined in <A HREF=http://www.ietf.org/rfc/rfc1035.txt>RFC 1035</A> and has subsequently been extended. <P> While the Master File Format is class independent all records in a Master File must be of the same class. <H3>Master File Directives</H3> <H4>$ORIGIN</H4> Syntax: <CODE>$ORIGIN <domain-name> [<comment>]</CODE> <P> <CODE>$ORIGIN</CODE> set the domain name that will be appended to any unqualified records. When a zone is first read in there is an implict <CODE>$ORIGIN</CODE> <zone-name>. The current <CODE>$ORIGIN</CODE> is appended to the domain specified in the <CODE>$ORIGIN</CODE> argument if it is not absolute. <PRE> $ORIGIN EXAMPLE. $ORIGIN MYZONE WWW CNAME MAIN-SERVER </PRE> is equivlent to <PRE> WWW.MYZONE.EXAMPLE. CNAME MAIN-SERVER.MYZONE.EXAMPLE. </PRE> <H4>$INCLUDE</H4> Syntax: <CODE>$INCLUDE <filename> [<origin>] [<comment>]</CODE> <P> Read and process the file filename as if it was included into the file at this point. If origin is specified the file is processed with <CODE>$ORIGIN</CODE> set to that value otherwise the current <CODE>$ORIGIN</CODE> is used. <I>NOTE: The behaviour when <origin> is specified differs from that described in <A HREF=http://www.ietf.org/rfc/rfc1035.txt>RFC 1035</A>.</I> <P> The origin and current domain revert to the values they were prior to the <CODE>$INCLUDE</CODE> once the file has been read. <H4>$TTL</H4> Syntax: <CODE>$TTL <default-ttl> [<comment>]</CODE> <P> Set the default Time To Live (TTL) for subsequent records with undefined TTL's. Valid TTL's are of the range 0-2147483647. <P> <CODE>$TTL</CODE> is defined in <A HREF=http://www.ietf.org/rfc/rfc2308.txt>RFC 2308</A>. <H3>BIND Master File Extentions</H3> <H4>$GENERATE</H4> Syntax: <CODE>$GENERATE <range> <lhs> <type> <rhs> [<comment>]</CODE> <P> <CODE>$GENERATE</CODE> is used to create a series of resource records that only differ from each other by an iterator. <CODE>$GENERATE</CODE> can be used to easily generate the sets of records required to support sub /24 reverse delegations described in <A HREF=http://www.ietf.org/rfc/rfc2317.txt>RFC 2317: Classless IN-ADDR.ARPA delegation</A>. <PRE> $ORIGIN 0.0.192.IN-ADDR.ARPA. $GENERATE 1-2 0 NS SERVER$.EXAMPLE. $GENERATE 1-127 $ CNAME $.0 </PRE> is equivalent to <PRE> 0.0.0.192.IN-ADDR.ARPA NS SERVER1.EXAMPLE. 0.0.0.192.IN-ADDR.ARPA NS SERVER2.EXAMPLE. 1.0.0.192.IN-ADDR.ARPA CNAME 1.0.0.0.192.IN-ADDR.ARPA. 2.0.0.192.IN-ADDR.ARPA CNAME 2.0.0.0.192.IN-ADDR.ARPA. ... 127.0.0.192.IN-ADDR.ARPA CNAME 127.0.0.0.192.IN-ADDR.ARPA. </PRE> <DL> <DT>range</DT> <DD> This can be one of two forms: <I>start</I>-<I>stop</I> or <I>start</I>-<I>stop</I>/<I>step</I>. If the first form is used then step is set to 1. All of start, stop and step must be positive. <DT>lhs</DT> <DD> Lhs describes the owner name of the resource records to be created. Any single $ symbols within the LHS side are replaced by the iterator value. To get a $ in the output use \$. If the lhs is not absolute the current $ORIGIN is appended to the name, when appropriate. You can also apply an offset to the iterator by using ${offset} where offset is a decimal value to add to the iterator. And you can also change the format of the iterator by using a printf like string. The format is ${offset,width,radix} where offset is as before (use 0 for no change), width is the minimum field width (always zero padded) radix is one of d, o, x, or X to change the radix to decimal, octal, hex, or hex with capital letters. The default is ${0,1,d}. For example: ${16,3} will add 16 to the iterator and be replaced by a 3 digit decimal representation. ${0,2,x} will be replaced by a 2 digit hex representation. To get a { character inserted into the text immediately after the iterator, use $\{. <DT>type</DT> <DD> At present the only supported types are A, AAAA, PTR, CNAME and NS. <DT>rhs</DT> <DD> Rhs is the data. It is processed similarly to the lhs. <DD> </DL> <H2>Resource Records</H2> Syntax: <CODE>{<domain>|@|<blank>} [<ttl>] [<class>] <type> <rdata> [<comment>]</CODE> <P> All resource records have the same basic syntax. <DL> <DT><CODE>domain</CODE></DT> <DD> Specify the domain name for this record. If it is not absolute the current <CODE>$ORIGIN</CODE> is appended. <DT><CODE>@</CODE></DT> <DD> Use the current <CODE>$ORIGIN</CODE> for the domain name for this record. <DT><CODE>blank</CODE></DT> <DD> Use the last specified domainname. <DT><CODE>ttl</CODE></DT> <DD> This specifies how long this record will be cached by caching servers. The valid range is 0-2147483647. <DT><CODE>class</CODE></DT> <DD> Specify the class of this record. This is usually redundent as the class of a zone is specfied in the configuration file prior to reading the zone file. <DT><CODE>type</CODE></DT> <DD> Specify the type of this record. This describes the contents of the rdata section. <DT><CODE>rdata</CODE></DT> <DD> This is the value of the resource record. </DL> <H2>Time Values: Alternate Specification format (BIND Enhancement)</H2> <P> Many time values within the MASTER file may be specified in multiples of weeks, days, hours, minutes and seconds rather than just seconds. <P> The format for this is <CODE>#w#d#h#m#s</CODE>. To specify 1 week you would use <CODE>1w</CODE> or two weeks and 1 hour <CODE>2w1h</CODE>. <P> This format applies to TTL values, and SOA REFRESH, RETRY, EXPIRE and MINIMUM values. </P> </BODY> </HTML>