Indy 9
TSOARecord
Hierarchy, Properties, Methods, Unit: IdDNSResolver
Represents resource records in a DNS response that include Start of Authority resource record types.
TSOARecord = class(TResultRecord)
Unit
IdDNSResolver
Description
TSOARecord is a TResultRecord descendant that represents a resource record returned in the results for a DNS query. TSOARecord is the collection item created to represent a resource resource returned when TIdDNSResolver.QueryRecords includes the value qtSOA for Start of Authority resource records.

A Start of Authority resource record is used to identify the start of a zone of authority for the authoritative data in the Answer section of the DNS response. A Start of Authority resource record is especially for describing name server zone management parameters.

A Start of Authority resource record uses the same DNS packet layout as other TResultRecord-based responses, but extends the use of RData to include the following definition and format:

  +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  |                                               |
  .                                               .
  .                     MNAME                     .
  .                                               .
  +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  |                                               |
  .                                               .
  .                     RNAME                     .
  .                                               .
  +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  |                    SERIAL                     |
  |                                               |
  +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  |                    REFRESH                    |
  |                                               |
  +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  |                     RETRY                     |
  |                                               |
  +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  |                    EXPIRE                     |
  |                                               |
  +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  |                    MINIMUM                    |
  |                                               |
  +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

  • MNAME - Domain name of the name server that was the original or primary source of data for this zone.

  • RNAME - Domain name which specifies the mailbox of the person responsible for this zone.

  • SERIAL - 32-bit unsigned integer that is the version number of the original copy of the zone. Zone transfers preserve this value. This value wraps and should be compared using sequence space arithmetic.

  • REFRESH - 32-bit time interval before the zone should be refreshed.

  • RETRY - 32-bit time interval that should elapse before a failed refresh should be retried.

  • EXPIRE - 32-bit time value that specifies the upper limit on the time interval that can elapse before the zone is no longer authoritative.

  • MINIMUM - 32-bit unsigned integer that is the minimum TTL field that should be exported with any RR from this zone.

All times are expressed in seconds.

Most of these fields are pertinent only for name server maintenance operations. However, MINIMUM is used in all query operations that retrieve Resource Records from a zone.

Whenever a Start of Authority RR is sent in a response to a query, the TTL field is set to the maximum of the TTL field from the Resource Record, and the MINIMUM field in the appropriate SOA. Thus MINIMUM is a lower bound on the TTL field for all RRs in a zone. Note that this use of MINIMUM should occur when the Resource Records are copied into the response and not when the zone is loaded from a master file or via a zone transfer. The reason for this provison is to allow future dynamic update facilities to change the Start of Authority Resource Record with known semantics.

TSOARecord extends TResultRecord to implement the specifics of accessing RData values as properties, including Primary, ResponsiblePerson, Serial, Refresh, Retry, Expire, and MinimumTTL. TSOARecord also overrides the Parse method to read the values in RData into their property counterparts.


TSOARecord.Expire
TSOARecord
Authoritative zone timeout value.
property Expire: Cardinal;
Description
Expire is a read-only Cardinal property that represents the 32-bit time value that specifies the upper limit on the time interval that can elapse before the zone is no longer authoritative. Expire is expressed in seconds.

Expire is used to control when a cached response from a DNS name server needs to be Refreshed or polled by a secondary name server or resolver. Other maintenance parameters for the TSOARecord, like MinimumTTL and Refresh, may also force a similar operation.


TSOARecord.MinimumTTL
TSOARecord
Minimum Time-To-Live for Resource Records in this Zone.
property MinimumTTL: Cardinal;
Description
MinimumTTL is a read-only Cardinal property that represents the unsigned 32-bit minimum Time-To-Live field that should be exported with any Resource Record from this zone.

MinimumTTL is the value assigned by the DNS name server as the default value for TTL in all Resource Records for which it is an Authoritative name server. TTL may be given a higher value at some other time.


TSOARecord.Primary
TSOARecord
Domain name of the primary name server for this zone.
property Primary: string;
Description
Primary is a read-only String property that represents the domain name of the name server that was the original or primary source of data for this zone. Primary is the host server where any changes to the DNS master file are coordinated for any resources in the zone.

Secondary name servers and resolver will periodically monitor the server identified in Primary for changes to the TSOARecord for the name server.


TSOARecord.Refresh
TSOARecord
Zone refresh time interval.
property Refresh: Cardinal;
Description
Refresh is a read-only Cardinal property that represents the 32-bit time interval before the zone should be refreshed. Refresh is expressed in seconds.

Refresh is used to force distributed domain name service data to be refreshed at periodic intervals. The host server in Primary determines the Refresh interval, and secondary name servers and resolvers are responsible for performing the actions needed to refresh distributed DNS data.


TSOARecord.ResponsiblePerson
TSOARecord, See Also
Indicates the person responsible for this DNS zone.
property ResponsiblePerson: string;
Description
ResponsiblePerson is a read-only String property that represents the name of the person responsible for maintaining this zone in the domain name space. ResponsiblePerson is updated when Parse is used to examine the response message from the DNS server. ResponsiblePerson is populated using TQueryResult values.

TSOARecord.Retry
TSOARecord
Time interval before retrying a failed refresh.
property Retry: Cardinal;
Description
Retry is a read-only Cardinal property that represents the 32-bit time interval that should elapse before a failed refresh should be retried. Retry is expressed in seconds.

Retry is a zone maintenance parameter used to control periodic polling of the secondary name servers for the zone. Retry is used when a secondary name server is attempt to check zone data after Refresh has expired. If this check cannot be completed, new checks are started every Retry seconds.

The check is a simple query to the primary for the TSOARecord Resource Record for the zone. If the value in Serial in the secondary zone data is equal to the Serial returned by Primary, then no changes have occurred, and the Refresh interval wait is restarted. If the secondary finds it impossible to perform a serial check for the Expire interval, it must assume that its copy of the zone is obsolete an discard it.


TSOARecord.Serial
TSOARecord
Serial number of the original Zone transfer.
property Serial: cardinal;
Description
Serial is a read-only Cardinal property that represents the unsigned 32-bit version number of the original copy of the zone data. Zone transfers preserve this value. This value wraps and should be compared using sequence space arithmetic.

Serial is a zone maintenance parameter used to control periodic polling of the secondary name servers for the zone. Serial is used when a secondary name server is attempt to check zone data after Refresh has expired. If this check cannot be completed, new checks are started every Retry seconds.

The check is a simple query to the primary for the TSOARecord Resource Record for the zone. If the value in Serial in the secondary zone data is equal to the Serial returned by Primary, then no changes have occurred, and the Refresh interval wait is restarted. If the secondary finds it impossible to perform a serial check for the Expire interval, it must assume that its copy of the zone is obsolete an discard it.


TSOARecord.Parse
TSOARecord
Parses RData values into properties.
procedure Parse(CompleteMessage: String; APos: Integer); override;
Parameters
CompleteMessage: String
Contents of the resource record.
APos: Integer
Position where RData values begin in the answer.
Description
Parse is an overridden procedure that implements a routine to parse resource record values in the DNS response into their property-based counterparts.

CompleteMessage is the contents of the resource record. Since the DNS message can contain compressed data, the whole message is needed for parsing and pointer location.

APos is the position in the resource record where RData values for this record type are located in the DNS Answer.

Parse calls the inherited Parse method, and retrieves the DNS labels and values for the Primary, ResponsiblePerson, Serial, Refresh, Retry, Expire, and MinimumTTL properties.


Created with Doc-O-Matic 2 donated to Project JEDI. Commercial license available from the Doc-O-Matic site.