pub struct Catalog { /* private fields */ }
Expand description

Set of authorities, zones, available to this server.

Implementations

Constructs a new Catalog

Insert or update a zone authority

Arguments
  • name - zone name, e.g. example.com.
  • authority - the zone data

Remove a zone from the catalog

Update the zone given the Update request.

RFC 2136, DNS Update, April 1997

3.1 - Process Zone Section

  3.1.1. The Zone Section is checked to see that there is exactly one
  RR therein and that the RR's ZTYPE is SOA, else signal FORMERR to the
  requestor.  Next, the ZNAME and ZCLASS are checked to see if the zone
  so named is one of this server's authority zones, else signal NOTAUTH
  to the requestor.  If the server is a zone Secondary, the request will be
  forwarded toward the Primary Zone Server.

  3.1.2 - Pseudocode For Zone Section Processing

     if (zcount != 1 || ztype != SOA)
          return (FORMERR)
     if (zone_type(zname, zclass) == SECONDARY)
          return forward()
     if (zone_type(zname, zclass) == PRIMARY)
          return update()
     return (NOTAUTH)

  Sections 3.2 through 3.8 describe the primary's behaviour,
  whereas Section 6 describes a forwarder's behaviour.

3.8 - Response

  At the end of UPDATE processing, a response code will be known.  A
  response message is generated by copying the ID and Opcode fields
  from the request, and either copying the ZOCOUNT, PRCOUNT, UPCOUNT,
  and ADCOUNT fields and associated sections, or placing zeros (0) in
  the these "count" fields and not including any part of the original
  update.  The QR bit is set to one (1), and the response is sent back
  to the requestor.  If the requestor used UDP, then the response will
  be sent to the requestor's source UDP port.  If the requestor used
  TCP, then the response will be sent back on the requestor's open TCP
  connection.

The “request” should be an update formatted message. The response will be in the alternate, all 0’s format described in RFC 2136 section 3.8 as this is more efficient.

Arguments
  • request - an update message
  • response_handle - sink for the response message to be sent

Checks whether the Catalog contains DNS records for name

Use this when you know the exact LowerName that was used when adding an authority and you don’t care about the authority it contains. For public domain names, LowerName is usually the top level domain name like example.com..

If you do not know the exact domain name to use or you actually want to use the authority it contains, use find instead.

Given the requested query, lookup and return any matching results.

Arguments
  • request - the query message.
  • response_handle - sink for the response message to be sent

Recursively searches the catalog for a matching authority

Trait Implementations

Returns the “default value” for a type. Read more

Determines what needs to happen given the type of request, i.e. Query or Update.

Arguments
  • request - the requested action to perform.
  • response_handle - sink for the response message to be sent

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more