=head1 NAME

gdnsd.djbdns - gdnsd support for the djbdns tinydns zone data format

=head1 SYNOPSIS

  @GDNSD_DEFPATH_CONFIG@/djbdns/my-djbdns-datafile:
    Zexample.com:a.ns.example.com:hostmaster.example.com::::::86400
    &example.com:192.0.2.1:a.ns.example.com.:86400
    &example.com:192.0.2.2:b.ns.example.com.:86400
    =foo.example.com:192.0.2.100:86400

=head1 DESCRIPTION

This zone data backend implements the tinydns format described
in L<http://cr.yp.to/djbdns/tinydns-data.html>.

As of this writing, djbdns file format support is considered
EXPERIMENTAL.  Feel free to submit issues and/or pull requests
to make the implementation and documentation more correct and
complete!  There are probably many legal djbdns zone datasets
that do not load correctly (or at all) yet.  However, there are
users loading data from this in production.

The djbdns zone data backend loads all files found within
the F<djbdns> subdirectory of the daemon config directory,
default F<@GDNSD_DEFPATH_CONFIG@/djbdns/>.  Each file can contain
multiple zones (identified by C<Z> records).

At this time, unlike the RFC1035 zone data backend, the djbdns
backend does not support automatic reloading of updates based on
filesystem notification.  It only explicitly reloads any
changed data on C<SIGUSR1> / C<gdnsd reload-zones>.

=head1 SUPPORTED RECORD TYPES

The following record types are implemented in the parser:

=over 4

=item B<Z> - SOA

The C<Z> type denotes the existence of a zone and defines
its SOA-record.  All records within a file must be contained within
a zone defined by a C<Z> entry.

=item B<&> - NS (+ A)

Implemented.

=item B<.> - NS + SOA (+ A)

The C<.> type is meant to create an SOA along with the zone's
NS records.  At this time, gdnsd doesn't support this record for
defining the SOA or a zone's existence, and treats it just like C<&> above.

=item B<@> - MX (+ A)

Implemented.

=item B<+> - A

If the 5th field is C<~~>, this can be used to create C<DYNA>
records as well, with the C<plugin!resource> part in the 2nd field.

=item B<=> - A + PTR

The autogeneration of PTR records for C<=> is not implemented yet,
so this is treated identically to C<+> above.

=item B<C> - CNAME

If the 5th field is C<~~>, this can be used to create C<DYNC>
records as well, with the C<plugin!resource> part in the 2nd field.

=item B<\> - TXT

Implemented.

=item B<S> - SRV

Implemented.

=item B<N> - NAPTR

Implemented.

=item B<3> - AAAA

Not yet implemented.

=item B<6> - AAAA + PTR

Not yet implemented.

=item B<^> - PTR

Not yet implemented.

=item B<:> - Raw

Not yet implemented.

=back

=head1 SEE ALSO

L<gdnsd(8)>, L<gdnsd.config(5)>, L<gdnsd.zonefile(8)>

The gdnsd manual.

=head1 COPYRIGHT AND LICENSE

Copyright (c) 2014 Brandon L Black <blblack@gmail.com>

This file is part of gdnsd.

gdnsd is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

gdnsd is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with gdnsd.  If not, see <http://www.gnu.org/licenses/>.

=cut
