DNS.Zone.Transfer (DNS v0.4.1)

View Source

Zone transfer functionality for DNS zones (AXFR/IXFR).

Provides full zone transfer (AXFR) and incremental zone transfer (IXFR) capabilities according to RFC 1995 and RFC 5936.

Summary

Functions

Apply transferred zone data to local zone store.

Perform full zone transfer (AXFR) for a zone.

Create zone transfer response message.

Perform incremental zone transfer (IXFR) for a zone.

Validate if zone transfer is allowed for the requesting client.

Functions

apply_transfer(zone_name, records, options \\ [])

@spec apply_transfer(
  String.t() | DNS.Zone.Name.t(),
  [DNS.Message.Record.t()],
  keyword()
) ::
  {:ok, DNS.Zone.t()} | {:error, String.t()}

Apply transferred zone data to local zone store.

axfr(zone_name)

@spec axfr(String.t() | DNS.Zone.Name.t()) ::
  {:ok, [DNS.Message.Record.t()]} | {:error, String.t()}

Perform full zone transfer (AXFR) for a zone.

create_transfer_request(zone_name, transfer_type, options \\ [])

@spec create_transfer_request(
  String.t() | DNS.Zone.Name.t(),
  :axfr | :ixfr,
  keyword()
) ::
  {:ok, map()} | {:error, String.t()}

Create zone transfer request.

create_transfer_response(zone_name, records, transfer_type)

@spec create_transfer_response(
  String.t() | DNS.Zone.Name.t(),
  [DNS.Message.Record.t()],
  :axfr | :ixfr
) ::
  {:ok, map()} | {:error, String.t()}

Create zone transfer response message.

ixfr(zone_name, serial)

@spec ixfr(String.t() | DNS.Zone.Name.t(), integer() | DateTime.t()) ::
  {:ok, [DNS.Message.Record.t()]} | {:error, String.t()}

Perform incremental zone transfer (IXFR) for a zone.

transfer_allowed?(zone_name, client_ip)

@spec transfer_allowed?(String.t() | DNS.Zone.Name.t(), :inet.ip_address()) ::
  boolean()

Validate if zone transfer is allowed for the requesting client.