3 years agozone.lisp: Maintain `:sshfp' fingerprints in binary internally. master
Mark Wooding [Wed, 27 Jun 2018 08:18:21 +0000 (09:18 +0100)]
zone.lisp: Maintain `:sshfp' fingerprints in binary internally.

This means that we can format them with line splitting, which is good.

4 years agozone.lisp: Add support for CAA records (RFC 6844).
Mark Wooding [Tue, 19 Sep 2017 17:14:21 +0000 (18:14 +0100)]
zone.lisp: Add support for CAA records (RFC 6844).

4 years agozone.lisp: Sink `&allow-other-keys' until after the keyword arguments.
Mark Wooding [Tue, 19 Sep 2017 17:13:41 +0000 (18:13 +0100)]
zone.lisp: Sink `&allow-other-keys' until after the keyword arguments.

The spec is clear that it must be like this.

4 years agozone.lisp: Don't try to take the `car' of something we know isn't a list.
Mark Wooding [Tue, 19 Sep 2017 17:13:06 +0000 (18:13 +0100)]
zone.lisp: Don't try to take the `car' of something we know isn't a list.

4 years agozone.lisp: Sink `zone-text-name' until after `zone' structure is defined.
Mark Wooding [Tue, 19 Sep 2017 17:11:59 +0000 (18:11 +0100)]
zone.lisp: Sink `zone-text-name' until after `zone' structure is defined.

Muffles a warning from SBCL, which was sad because it couldn't inline a
structure accessor.

4 years agozone.lisp: Include SSHFP type code for Ed25519 keys.
Mark Wooding [Sat, 8 Jul 2017 13:59:13 +0000 (14:59 +0100)]
zone.lisp: Include SSHFP type code for Ed25519 keys.

6 years agozone.lisp: Support for DS records.
Mark Wooding [Thu, 26 Mar 2015 01:43:46 +0000 (01:43 +0000)]
zone.lisp: Support for DS records.

6 years agozone.lisp (devrevzone): Remove trailing dot on the zone name.
Mark Wooding [Wed, 25 Mar 2015 21:06:38 +0000 (21:06 +0000)]
zone.lisp (devrevzone): Remove trailing dot on the zone name.

It doesn't help anything, and it screws up the serial-file names.

6 years agozone.lisp: Memoize the conversion of TLSA association-data files.
Mark Wooding [Mon, 22 Dec 2014 20:32:58 +0000 (20:32 +0000)]
zone.lisp: Memoize the conversion of TLSA association-data files.

6 years agozone.lisp: Use a synthetic pathname as the temporary-files template.
Mark Wooding [Mon, 22 Dec 2014 20:32:58 +0000 (20:32 +0000)]
zone.lisp: Use a synthetic pathname as the temporary-files template.

6 years agozone.lisp: Include configurable search path for TLSA association data.
Mark Wooding [Mon, 22 Dec 2014 20:32:58 +0000 (20:32 +0000)]
zone.lisp: Include configurable search path for TLSA association data.

6 years agozone.lisp: Allow pathnames as input to `:sshfp' records.
Mark Wooding [Mon, 22 Dec 2014 20:32:58 +0000 (20:32 +0000)]
zone.lisp: Allow pathnames as input to `:sshfp' records.

6 years agozone.lisp, frontend.lisp: New configuration-variable machinery.
Mark Wooding [Mon, 22 Dec 2014 20:32:58 +0000 (20:32 +0000)]
zone.lisp, frontend.lisp: New configuration-variable machinery.

Maintain a list `*zone-config*' of configuration variables, and have the
frontend rebind these around each input file.  Add
`*sshfp-pathname-defaults*' and `*dkim-pathname-defaults*' to the list.

6 years agozone.lisp: Close output files after writing.
Mark Wooding [Mon, 22 Dec 2014 20:32:58 +0000 (20:32 +0000)]
zone.lisp: Close output files after writing.

Otherwise we end up with lots of open files for no good reason.

6 years agozone.lisp: Support for TLSA records.
Mark Wooding [Mon, 22 Dec 2014 22:20:56 +0000 (22:20 +0000)]
zone.lisp: Support for TLSA records.

6 years agozone.lisp: New utility for hashing files.
Mark Wooding [Mon, 22 Dec 2014 22:19:50 +0000 (22:19 +0000)]
zone.lisp: New utility for hashing files.

6 years agosys.lisp: New toy for running external programs.
Mark Wooding [Mon, 22 Dec 2014 22:19:17 +0000 (22:19 +0000)]
sys.lisp: New toy for running external programs.

6 years agosys.lisp: New tools for making temporary files.
Mark Wooding [Mon, 22 Dec 2014 22:16:53 +0000 (22:16 +0000)]
sys.lisp: New tools for making temporary files.

Not used yet.  Wait for it...

6 years agozone.lisp: Some new utilities for handling raw binary strings.
Mark Wooding [Mon, 22 Dec 2014 20:44:10 +0000 (20:44 +0000)]
zone.lisp: Some new utilities for handling raw binary strings.

6 years agozone.lisp: Abstract out Bind hex output from `zone-write-raw-rrdata'.
Mark Wooding [Mon, 22 Dec 2014 20:40:11 +0000 (20:40 +0000)]
zone.lisp: Abstract out Bind hex output from `zone-write-raw-rrdata'.

It's had a bit of a rewrite (to do less consing) during the move.

6 years agozone.lisp: Have `bind-format-record''s caller provide the newline.
Mark Wooding [Mon, 22 Dec 2014 20:37:40 +0000 (20:37 +0000)]
zone.lisp: Have `bind-format-record''s caller provide the newline.

This allows callers to append their own stuff if they want to.

6 years agozone.lisp: Change the `:sshfp' option tags to be keywords.
Mark Wooding [Mon, 22 Dec 2014 20:41:48 +0000 (20:41 +0000)]
zone.lisp: Change the `:sshfp' option tags to be keywords.

6 years agozone.lisp: Escape DEL in TinyDNS output.
Mark Wooding [Mon, 22 Dec 2014 22:20:37 +0000 (22:20 +0000)]
zone.lisp: Escape DEL in TinyDNS output.

6 years agozone.lisp: Some minor reformatting.
Mark Wooding [Mon, 22 Dec 2014 20:42:30 +0000 (20:42 +0000)]
zone.lisp: Some minor reformatting.

6 years agozone.lisp: Abstract out and improve the enum machinery from `:sshfp'.
Mark Wooding [Mon, 22 Dec 2014 20:32:58 +0000 (20:32 +0000)]
zone.lisp: Abstract out and improve the enum machinery from `:sshfp'.

We're going to want it for something else soon.  Also add ancillary
functionality for reverse lookups and iteration, and a switch
controlling exports.

6 years agozone.lisp: Fix the docstring for `:srv' records.
Mark Wooding [Sat, 20 Dec 2014 20:10:35 +0000 (20:10 +0000)]
zone.lisp: Fix the docstring for `:srv' records.

Missing the `:protocol' key, for no especially obvious reason.

7 years agozone.lisp: Silence warning from CLisp.
Mark Wooding [Thu, 22 May 2014 09:06:00 +0000 (10:06 +0100)]
zone.lisp: Silence warning from CLisp.

7 years agoHandle domain names properly, including RFC1035 quoting.
Mark Wooding [Wed, 21 May 2014 16:02:43 +0000 (17:02 +0100)]
Handle domain names properly, including RFC1035 quoting.

It's all rather invasive, but the result is a definite improvement.

7 years agozone.lisp: Export `tinydns-output', because it looks handy.
Mark Wooding [Wed, 30 Apr 2014 15:08:13 +0000 (16:08 +0100)]
zone.lisp: Export `tinydns-output', because it looks handy.

Extensions adding new record types might want this.

7 years agozone.lisp: General support for unknown record types.
Mark Wooding [Wed, 30 Apr 2014 15:17:09 +0000 (16:17 +0100)]
zone.lisp: General support for unknown record types.

There's now a `zone-record-rrdata' protocol for zone record types to
serialize themselves in the correct format, and implementations for all
of the record types currently emitted.

There's also a `zone-write-raw-rrdata' protocol for writing these out
when the format doesn't have a better plan, which is used by a (new)
default method on `zone-write-record'.

7 years agozone.lisp: Refactor the output stage.
Mark Wooding [Wed, 30 Apr 2014 15:12:23 +0000 (16:12 +0100)]
zone.lisp: Refactor the output stage.

Provide a default implementation of `zone-write', which does the tedious
business of iterating over the individual records.  Make the output
formats use this new protocol.

7 years agozone.lisp: Refactor and improve the domain-name sorting.
Mark Wooding [Wed, 30 Apr 2014 14:41:05 +0000 (15:41 +0100)]
zone.lisp: Refactor and improve the domain-name sorting.

Sort the components according to a `natural' ordering which tries to do
approximately sane things with numeric sequences.  It's not always
successful: in particular, it wants to order 144, 144-159, 145, ...; but
it's not too awful.

7 years agozone.lisp: For BIND output, omit record names where possible.
Mark Wooding [Wed, 30 Apr 2014 10:11:10 +0000 (11:11 +0100)]
zone.lisp: For BIND output, omit record names where possible.

This makes the output easier to read, especially now the records are

7 years agozone.lisp: Sort records for presentation.
Mark Wooding [Wed, 30 Apr 2014 10:10:27 +0000 (11:10 +0100)]
zone.lisp: Sort records for presentation.

Currently order by domain components, right to left, and then by RRTYPE

7 years agofrontend.lisp: Import MOP hacking for CLisp.
Mark Wooding [Mon, 28 Apr 2014 14:59:30 +0000 (15:59 +0100)]
frontend.lisp: Import MOP hacking for CLisp.

7 years agozone.lisp: Output format for Daniel Bernstein's `tinydns' server.
Mark Wooding [Mon, 28 Apr 2014 09:05:20 +0000 (10:05 +0100)]
zone.lisp: Output format for Daniel Bernstein's `tinydns' server.

7 years agozone.lisp: A bunch of functions for building raw DNS records.
Mark Wooding [Mon, 28 Apr 2014 09:04:33 +0000 (10:04 +0100)]
zone.lisp: A bunch of functions for building raw DNS records.

Not used yet.  Soon...

7 years agozone.lisp: TXT record data is always a list of strings.
Mark Wooding [Mon, 28 Apr 2014 09:03:50 +0000 (10:03 +0100)]
zone.lisp: TXT record data is always a list of strings.

Never a singleton.  Otherwise all output formats must do the listifying
separately, and that's just annoying.

7 years agofrontend.lisp: New `-D' option to generate stack backtrace on error.
Mark Wooding [Mon, 28 Apr 2014 09:02:26 +0000 (10:02 +0100)]
frontend.lisp: New `-D' option to generate stack backtrace on error.

This is a frequent debugging modification, so I might as well make it

The fundamental problem is that tracking down errors in a zone
description file is a complete nightmare.  This needs fixing some time.

7 years agozone.lisp: Stringify the zone name at construction time.
Mark Wooding [Fri, 25 Apr 2014 23:10:46 +0000 (00:10 +0100)]
zone.lisp: Stringify the zone name at construction time.

It causes trouble later if we don't.

7 years agozone.lisp: Remove unnecessary parens in definition of `:multi'.
Mark Wooding [Fri, 25 Apr 2014 23:10:14 +0000 (00:10 +0100)]
zone.lisp: Remove unnecessary parens in definition of `:multi'.

7 years agoMerge branch 'master' of
Mark Wooding [Fri, 25 Apr 2014 21:37:17 +0000 (22:37 +0100)]
Merge branch 'master' of

* 'master' of
  addr-family-ipv6.lisp (ipaddr-string): Ignore trivial runs of zeros.
  addr-family-ipv6.lisp (ipaddr-string): Use IPv4 notation if appropriate.
  addr-family-ipv6.lisp (ipaddr-string): Upend the conditional.

7 years agoaddr-family-ipv6.lisp (ipaddr-string): Ignore trivial runs of zeros.
Mark Wooding [Tue, 22 Apr 2014 13:14:24 +0000 (14:14 +0100)]
addr-family-ipv6.lisp (ipaddr-string): Ignore trivial runs of zeros.

It seems that the convention is to write addresses out longhand if they
have only isolated zero components.  So do that here too.

7 years agoaddr-family-ipv6.lisp (ipaddr-string): Use IPv4 notation if appropriate.
Mark Wooding [Tue, 22 Apr 2014 13:12:48 +0000 (14:12 +0100)]
addr-family-ipv6.lisp (ipaddr-string): Use IPv4 notation if appropriate.

This supports the v4-mapped range ::ffff:, and the deprecated
v4-compatible range :: (with an exception for ::0/112 so that
the magic addresses ::1 and :: still comes out OK).  The output
behaviour here seems to match Linux's inet_ntop(3).

7 years agoaddr-family-ipv6.lisp (ipaddr-string): Upend the conditional.
Mark Wooding [Tue, 22 Apr 2014 13:10:58 +0000 (14:10 +0100)]
addr-family-ipv6.lisp (ipaddr-string): Upend the conditional.

Put the simple fully-populated case first.

7 years agozone.lisp: Move zone administrator address onto its own line.
Mark Wooding [Sat, 13 Jul 2013 15:34:40 +0000 (16:34 +0100)]
zone.lisp: Move zone administrator address onto its own line.

Prevents SOA records with an out-of-zone source from spilling out to the
right so much.

7 years agonet.lisp: Write a bunch of better docstrings.
Mark Wooding [Sat, 13 Jul 2013 15:34:40 +0000 (16:34 +0100)]
net.lisp: Write a bunch of better docstrings.

7 years agonet.lisp: Factor out family-switch form parsing, and fix it.
Mark Wooding [Sat, 13 Jul 2013 15:34:40 +0000 (16:34 +0100)]
net.lisp: Factor out family-switch form parsing, and fix it.

Both `host-parse' and `net-parse-to-ipnets' had common code for
handling ((:FAMILY . ITEM)*) forms, but they (a) handled them
differently if an explicit family was provided, and (b) both
implementations were wrong.

Split out the necessary functionality, and implement it correctly.

7 years agozone.lisp: Export function and macro for iterating over hosts.
Mark Wooding [Sat, 13 Jul 2013 15:34:40 +0000 (16:34 +0100)]
zone.lisp: Export function and macro for iterating over hosts.

7 years agonet.lisp: Support string-like host designations in `net-host'.
Mark Wooding [Sat, 13 Jul 2013 15:34:40 +0000 (16:34 +0100)]
net.lisp: Support string-like host designations in `net-host'.

7 years agonet.lisp: net.lisp: Refactor `string-subipnet' and its friends.
Mark Wooding [Sat, 13 Jul 2013 15:34:40 +0000 (16:34 +0100)]
net.lisp: net.lisp: Refactor `string-subipnet' and its friends.

  * Kill `ipnet-subnet', which wasn't used anywhere else anyway.
    Replace with `check-subipnet', with a different interface.

  * Add `:slashp' argument to `parse-subnet', controlling whether it
    bothers to detect a `/'.

  * Introduce `parse-subipnet' as a higher-level interface to

7 years agonet.lisp: Add docstring for `string-subipnet'.
Mark Wooding [Sat, 13 Jul 2013 15:34:40 +0000 (16:34 +0100)]
net.lisp: Add docstring for `string-subipnet'.

7 years agonet.lisp: Whitespace fixup.
Mark Wooding [Sat, 13 Jul 2013 15:34:40 +0000 (16:34 +0100)]
net.lisp: Whitespace fixup.

7 years agonet.lisp: Improve error in `ipmask'.
Mark Wooding [Sat, 13 Jul 2013 15:34:40 +0000 (16:34 +0100)]
net.lisp: Improve error in `ipmask'.

7 years agonet.lisp, zone.lisp: Support for IPv6 addresses.
Mark Wooding [Tue, 15 Apr 2014 15:42:05 +0000 (16:42 +0100)]
net.lisp, zone.lisp: Support for IPv6 addresses.

This just pretty much slots in now.  After an awful lot of work making
slots which are exactly the right shape!

7 years agonet.lisp, zone.lisp: Major overhaul for multiple address families.
Mark Wooding [Tue, 15 Apr 2014 13:02:06 +0000 (14:02 +0100)]
net.lisp, zone.lisp: Major overhaul for multiple address families.

A lot of internals have changed, and some user-visible features have
been dropped.

  * IP addresses and networks are now captured in CLOS objects, and the
    low-level details of messing with them are handled in generic
    functions which live in their own separate files.

  * `ipnet-pretty' has gone.  Now `ipnet' objects are directly

  * `ipnet-changeable-bytes' has gone; there's now
    `ipnet-changeable-bits' instead.

  * `host' and `net' objects now track multiple addresses, so accessing
    them is a bit different.  `net-get-as-ipnet' has gone, replaced by
    `net-parse-to-ipnets'.  Acceptable syntaxes have mostly been
    enhanced, with the ability to control which address families are

  * Slightly painfully, support for DNS lookups has been dropped --
    because SBCL doesn't have a good way of doing IPv6 lookups.

  * The `:cidr-delegation' record parser has gone, and been replaced by
    `:multi', which can be used to achieve the same thing (and a number
    of other special effects besides).

  * For the sake of sanity, the `:a' record parser only produces A
    records.  The new `:addr' parser will produce records for all
    address families associated with its input.

7 years agonet.lisp, zone.lisp: Improve commentary and docstrings.
Mark Wooding [Tue, 15 Apr 2014 10:57:24 +0000 (11:57 +0100)]
net.lisp, zone.lisp: Improve commentary and docstrings.

Also one or two minor whitespace fixes.

7 years agozone.lisp: Change `zone-parse-records' interface to be more useful.
Mark Wooding [Tue, 15 Apr 2014 13:39:15 +0000 (14:39 +0100)]
zone.lisp: Change `zone-parse-records' interface to be more useful.

Now it returns a list of the processed records rather than appending
them to a zone object.

7 years agozone.lisp: Apply pathname templates to DKIM and SSHFP files.
Mark Wooding [Tue, 15 Apr 2014 14:02:31 +0000 (15:02 +0100)]
zone.lisp: Apply pathname templates to DKIM and SSHFP files.

Makes zone files nicer.  Alas, not compatible; sorry.

7 years agozone.lisp: Fix `:sshfp' handling of literals.
Mark Wooding [Tue, 15 Apr 2014 13:53:39 +0000 (14:53 +0100)]
zone.lisp: Fix `:sshfp' handling of literals.

It was, unfortunately, completely broken.

7 years agozone.lisp: Fix default output directory.
Mark Wooding [Tue, 15 Apr 2014 11:00:49 +0000 (12:00 +0100)]
zone.lisp: Fix default output directory.

The code used to capture `*default-pathname-defaults*' in
`*zone-output-path*' at load time, which (varying by implementation)
might indicate the calling process's working directory, or might be the
directory from which the file was loaded.  The latter is obviously
wrong, so we adopt the convention in `zone-file-name' that if
`*zone-output-path*' is nil then we use `*default-pathname-defaults'
from the time of the call.

7 years agozone.lisp: Support for SSHFP records.
Mark Wooding [Thu, 3 Apr 2014 17:44:26 +0000 (18:44 +0100)]
zone.lisp: Support for SSHFP records.

Fingerprints can be supplied explicitly or read from files in the
format written by ssh-keygen(1).

7 years agozone.lisp: Support for DKIM key records.
Mark Wooding [Thu, 3 Apr 2014 16:21:44 +0000 (17:21 +0100)]
zone.lisp: Support for DKIM key records.

Reads the key data from a PEM file.  Splits stuff into multiple lines in
a vaguely sensible way.

7 years agozone.lisp: Support multi-line TXT records.
Mark Wooding [Thu, 3 Apr 2014 16:20:25 +0000 (17:20 +0100)]
zone.lisp: Support multi-line TXT records.

7 years agozone.lisp: Mark an ignored function parameter.
Mark Wooding [Sun, 29 Dec 2013 21:21:24 +0000 (21:21 +0000)]
zone.lisp: Mark an ignored function parameter.

CLisp complains about this one, but SBCL doesn't mind.

7 years agozone.lisp: Improve commentary regarding the syntax of record forms.
Mark Wooding [Sun, 29 Dec 2013 21:18:56 +0000 (21:18 +0000)]
zone.lisp: Improve commentary regarding the syntax of record forms.

7 years agozone.lisp: Minor comment formatting.
Mark Wooding [Sun, 29 Dec 2013 20:39:28 +0000 (20:39 +0000)]
zone.lisp: Minor comment formatting.

7 years agozone.lisp: Clean up whitespace.
Mark Wooding [Sun, 29 Dec 2013 20:41:15 +0000 (20:41 +0000)]
zone.lisp: Clean up whitespace.

8 years agozone.lisp: Choose first matching record for preferred subnet.
Mark Wooding [Sat, 8 Dec 2012 15:07:43 +0000 (15:07 +0000)]
zone.lisp: Choose first matching record for preferred subnet.

The old (overly imperative) algorithm picked the last, which doesn't fit
with the fallback to the first record if none is preferred.

9 years agosys.lisp: Use OS:UNAME rather than UNIX:GET-HOST-NAME in CLisp.
Mark Wooding [Sun, 22 Apr 2012 17:55:48 +0000 (18:55 +0100)]
sys.lisp: Use OS:UNAME rather than UNIX:GET-HOST-NAME in CLisp.

The latter appears to have been withdrawn in later versions of CLisp.

9 years agozone.lisp: Rename `broadcast' to `bcast' in :NET records.
Mark Wooding [Sun, 11 Mar 2012 04:53:36 +0000 (04:53 +0000)]
zone.lisp: Rename `broadcast' to `bcast' in :NET records.

9 years agozone.lisp: Reverse delegation for multiple subnets into the same target.
Mark Wooding [Sun, 11 Mar 2012 04:50:55 +0000 (04:50 +0000)]
zone.lisp: Reverse delegation for multiple subnets into the same target.

Just a notational convenience.

9 years agozone.lisp: Better documentation for reverse-zone directives.
Mark Wooding [Sun, 11 Mar 2012 04:49:29 +0000 (04:49 +0000)]
zone.lisp: Better documentation for reverse-zone directives.

10 years agoRun via core file.
Mark Wooding [Tue, 6 Sep 2011 11:46:00 +0000 (12:46 +0100)]
Run via core file.

This gives rather faster response.  Maybe when this machinery moves to a
faster machine it'll be worth reverting this change, but right now it
seems good.

10 years agofrontend.lisp: Whitespace fixing.
Mark Wooding [Tue, 6 Sep 2011 11:44:19 +0000 (12:44 +0100)]
frontend.lisp: Whitespace fixing.

10 years agoserv.lisp: Spread exports throughout the file.
Mark Wooding [Tue, 6 Sep 2011 11:42:42 +0000 (12:42 +0100)]
serv.lisp: Spread exports throughout the file.

10 years agozone.lisp: Reformat, scattering exports.
Mark Wooding [Sun, 22 May 2011 14:28:34 +0000 (15:28 +0100)]
zone.lisp: Reformat, scattering exports.

Put the exports near the things they export.  This makes it easier to
see whether a function is exported, and keep track of exports when
things get refactored.

10 years agozone.lisp: Add support for TXT records.
Mark Wooding [Sun, 22 May 2011 14:28:14 +0000 (15:28 +0100)]
zone.lisp: Add support for TXT records.

10 years agonet.lisp, sys.lisp: Merge packages.
Mark Wooding [Sun, 22 May 2011 14:10:48 +0000 (15:10 +0100)]
net.lisp, sys.lisp: Merge packages.

Separate out the package defintion into a new file `net-package.lisp'.
Scatter the EXPORT directives so that they decorate the functions they
refer to.

This was prompted because of a dependency cycle in a CLisp-specific
part of sys.lisp.

10 years agofrontend.lisp: Hack around CLisp's bizarreness.
Mark Wooding [Sun, 22 May 2011 14:07:33 +0000 (15:07 +0100)]
frontend.lisp: Hack around CLisp's bizarreness.

Annoyingly, CLisp's PROBE-FILE signals an error if you give it a
directory name.  Bodge around this.  I pinched the basic idea from
the CL-FAD package, by Peter Seibel and Edi Weitz.

12 years agozone: Use cl-launch.
Mark Wooding [Wed, 26 Nov 2008 21:22:47 +0000 (21:22 +0000)]
zone: Use cl-launch.

It's very shiny!

13 years agodriver: Use asdf rather than CLC to start the program.
Mark Wooding [Mon, 14 Apr 2008 09:32:47 +0000 (10:32 +0100)]
driver: Use asdf rather than CLC to start the program.

This gives us more control over the verbose output.

13 years agoUpgrade everything for SBCL.
Mark Wooding [Sun, 30 Mar 2008 23:17:39 +0000 (00:17 +0100)]
Upgrade everything for SBCL.

While we're at it, isolate the system-specific stuff to its own sin-bin
for easier porting to other systems.

13 years agozone: Clean up the :cidr-delegation parser.
Mark Wooding [Sun, 16 Mar 2008 15:02:14 +0000 (15:02 +0000)]
zone: Clean up the :cidr-delegation parser.

13 years agozone, serv: Add support for SRV records.
Mark Wooding [Sun, 16 Mar 2008 14:28:48 +0000 (14:28 +0000)]
zone, serv: Add support for SRV records.

14 years agozone: Quench warnings from zone-parser functions.
Mark Wooding [Mon, 20 Aug 2007 08:13:20 +0000 (09:13 +0100)]
zone: Quench warnings from zone-parser functions.

14 years agozone: Remove unused function zone-cidr-delegation.
Mark Wooding [Mon, 20 Aug 2007 08:11:02 +0000 (09:11 +0100)]
zone: Remove unused function zone-cidr-delegation.

14 years agozone, frontend: Open up the writing of zones to files.
Mark Wooding [Tue, 26 Jun 2007 16:43:12 +0000 (17:43 +0100)]
zone, frontend: Open up the writing of zones to files.

All file writing is now done using generic functions, parameterized by a
format keyword.  Writing of the default BIND format zone files is also
handled by generic functions, dispatched based on the record types.

14 years agozone: New macro preferred-subnet-case.
Mark Wooding [Mon, 25 Jun 2007 16:55:27 +0000 (17:55 +0100)]
zone: New macro preferred-subnet-case.

A pleasant way to make decisions based on which subnets are preferred.

14 years agofrontend: Allow use of new zone machinery.
Mark Wooding [Fri, 15 Jun 2007 14:19:29 +0000 (15:19 +0100)]
frontend: Allow use of new zone machinery.

New options --subnet declares preferred subnets and --directory sets an
output directory.  Also --feature inserts a keyword into *features* for
use by #+/#- reader macros in zone files.

14 years agozone: Change default subnet selection.
Mark Wooding [Fri, 15 Jun 2007 14:16:26 +0000 (15:16 +0100)]
zone: Change default subnet selection.

We now have a concept of `preferred subnets'.  If a record has a subnet
whose name is on the list *preferred-subnets*, and no explicit default
record, then the record for the first such subnet is used as the
default.  If no preferred subnet is found, then the first listed subnet
is used, as before.

The objective is to make describing split-horizon DNS systems easier.

14 years agozone: New record type :svc creates A records without PTR records.
Mark Wooding [Fri, 15 Jun 2007 14:15:27 +0000 (15:15 +0100)]
zone: New record type :svc creates A records without PTR records.

The :svc record type inserts an A record into the zone without inserting
a matching PTR record into the reverse zone(s).  This is useful for
service role addresses.

To make this work, we add a new slot make-ptr-p to zone records which is
used to label those A records which are eligible to be turned into
PTRs.  This mechanism is, I hope, considerably simpler than the old
defsubp system.

14 years agozone: Allow record parsers more control over the names they produce.
Mark Wooding [Fri, 15 Jun 2007 14:12:16 +0000 (15:12 +0100)]
zone: Allow record parsers more control over the names they produce.

Pass in the parent zone and the given prefix, rather than computing the
final name.  The defzoneparse macro wrapper computes the final name,
though parsers have access to the original data and the function to
compute the name so that they can produce different names should they so

14 years agozone: Use hash-table for reversing zones; eliminate defsubp.
Mark Wooding [Fri, 15 Jun 2007 14:07:08 +0000 (15:07 +0100)]
zone: Use hash-table for reversing zones; eliminate defsubp.

For :reverse, use a hash-table to keep track of which addresses have
been assigned PTR records so far.  Eliminate the defsubp slot of zone
records as being a bad (and confusing) idea.

14 years agozone: Allow control over output file names.
Mark Wooding [Fri, 15 Jun 2007 14:07:07 +0000 (15:07 +0100)]
zone: Allow control over output file names.

Output file names are now constructed by a dedicated function, using
Lisp pathname functions rather than format.  There's also a default
*zone-output-path* to control where the files get put.

This suggests a reordering of the code, specifically to move
make-serial-number below the new zone-file-name.

14 years agozone: Simplify zone-write.
Mark Wooding [Fri, 15 Jun 2007 11:53:35 +0000 (12:53 +0100)]
zone: Simplify zone-write.

Use ecase instead of case, and merge NS handling with PTR and CNAME.

14 years agozone: Random whitespace cleanups.
Mark Wooding [Fri, 15 Jun 2007 11:50:41 +0000 (12:50 +0100)]
zone: Random whitespace cleanups.

14 years agozone: Delete redundant functions.
Mark Wooding [Fri, 15 Jun 2007 11:50:02 +0000 (12:50 +0100)]
zone: Delete redundant functions.

I've just noticed: zone-reverse and zone-reverse-records are not used by
anything, and not exported.  Delete them.

14 years agozone, net, frontend: Kill trailing whitespaces.
Mark Wooding [Tue, 12 Jun 2007 19:38:45 +0000 (20:38 +0100)]
zone, net, frontend: Kill trailing whitespaces.

14 years agozone: Use new with-parsed-body macro.
Mark Wooding [Sun, 24 Dec 2006 18:30:01 +0000 (18:30 +0000)]
zone: Use new with-parsed-body macro.