 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
  
    Overview ¶
Package file implements a file backend.
Index ¶
- Constants
- Variables
- type Apex
- type File
- type Result
- type Xfr
- type Zone
- func (z *Zone) All() []dns.RR
- func (z *Zone) ClosestEncloser(qname string) (*tree.Elem, bool)
- func (z *Zone) Copy() *Zone
- func (z *Zone) CopyWithoutApex() *Zone
- func (z *Zone) Delete(r dns.RR)
- func (z *Zone) File() string
- func (z *Zone) Glue(nsrrs []dns.RR, do bool) []dns.RR
- func (z *Zone) Insert(r dns.RR) error
- func (z *Zone) Lookup(state request.Request, qname string) ([]dns.RR, []dns.RR, []dns.RR, Result)
- func (z *Zone) Notify()
- func (z *Zone) OnShutdown() error
- func (z *Zone) Print()
- func (z *Zone) Reload() error
- func (z *Zone) SOASerialIfDefined() int64
- func (z *Zone) SetFile(path string)
- func (z *Zone) TransferAllowed(state request.Request) bool
- func (z *Zone) TransferIn() error
- func (z *Zone) Update() error
 
- type Zones
Examples ¶
Constants ¶
const MaxSerialIncrement uint32 = 2147483647
    MaxSerialIncrement is the maximum difference between two serial numbers. If the difference between two serials is greater than this number, the smaller one is considered greater.
Variables ¶
var TickTime = 1 * time.Minute
    TickTime is the default time we use to reload zone. Exported to be tweaked in tests.
Functions ¶
This section is empty.
Types ¶
type Result ¶
type Result int
Result is the result of a Lookup
const ( // Success is a successful lookup. Success Result = iota // NameError indicates a nameerror NameError // Delegation indicates the lookup resulted in a delegation. Delegation // NoData indicates the lookup resulted in a NODATA. NoData // ServerFailure indicates a server failure during the lookup. ServerFailure )
type Zone ¶
type Zone struct {
	*tree.Tree
	Apex Apex
	TransferTo   []string
	StartupOnce  sync.Once
	TransferFrom []string
	Expired      *bool
	NoReload bool
	Upstream upstream.Upstream // Upstream for looking up names during the resolution process
	// contains filtered or unexported fields
}
    Zone defines a structure that contains all data related to a DNS zone.
func Parse ¶
Parse parses the zone in filename and returns a new Zone or an error. If serial >= 0 it will reload the zone, if the SOA hasn't changed it returns an error indicating nothing was read.
func (*Zone) All ¶
All returns all records from the zone, the first record will be the SOA record, otionally followed by all RRSIG(SOA)s.
Example ¶
zone, err := Parse(strings.NewReader(dbMiekNL), testzone, "stdin", 0)
if err != nil {
	return
}
records := zone.All()
for _, r := range records {
	fmt.Printf("%+v\n", r)
}
// Output
// xfr_test.go:15: miek.nl.	1800	IN	SOA	linode.atoom.net. miek.miek.nl. 1282630057 14400 3600 604800 14400
// xfr_test.go:15: www.miek.nl.	1800	IN	CNAME	a.miek.nl.
// xfr_test.go:15: miek.nl.	1800	IN	NS	linode.atoom.net.
// xfr_test.go:15: miek.nl.	1800	IN	NS	ns-ext.nlnetlabs.nl.
// xfr_test.go:15: miek.nl.	1800	IN	NS	omval.tednet.nl.
// xfr_test.go:15: miek.nl.	1800	IN	NS	ext.ns.whyscream.net.
// xfr_test.go:15: miek.nl.	1800	IN	MX	1 aspmx.l.google.com.
// xfr_test.go:15: miek.nl.	1800	IN	MX	5 alt1.aspmx.l.google.com.
// xfr_test.go:15: miek.nl.	1800	IN	MX	5 alt2.aspmx.l.google.com.
// xfr_test.go:15: miek.nl.	1800	IN	MX	10 aspmx2.googlemail.com.
// xfr_test.go:15: miek.nl.	1800	IN	MX	10 aspmx3.googlemail.com.
// xfr_test.go:15: miek.nl.	1800	IN	A	139.162.196.78
// xfr_test.go:15: miek.nl.	1800	IN	AAAA	2a01:7e00::f03c:91ff:fef1:6735
// xfr_test.go:15: archive.miek.nl.	1800	IN	CNAME	a.miek.nl.
// xfr_test.go:15: a.miek.nl.	1800	IN	A	139.162.196.78
// xfr_test.go:15: a.miek.nl.	1800	IN	AAAA	2a01:7e00::f03c:91ff:fef1:6735
func (*Zone) ClosestEncloser ¶
ClosestEncloser returns the closest encloser for qname.
func (*Zone) CopyWithoutApex ¶ added in v1.0.5
CopyWithoutApex copies zone z without the Apex records.
func (*Zone) Lookup ¶
Lookup looks up qname and qtype in the zone. When do is true DNSSEC records are included. Three sets of records are returned, one for the answer, one for authority and one for the additional section.
func (*Zone) Notify ¶
func (z *Zone) Notify()
Notify will send notifies to all configured TransferTo IP addresses.
func (*Zone) OnShutdown ¶ added in v1.1.0
OnShutdown shuts down any running go-routines for this zone.
func (*Zone) Reload ¶
Reload reloads a zone when it is changed on disk. If z.NoRoload is true, no reloading will be done.
func (*Zone) SOASerialIfDefined ¶
SOASerialIfDefined returns the SOA's serial if the zone has a SOA record in the Apex, or -1 otherwise.
func (*Zone) TransferAllowed ¶
TransferAllowed checks if incoming request for transferring the zone is allowed according to the ACLs.
func (*Zone) TransferIn ¶
TransferIn retrieves the zone from the masters, parses it and sets it live.
func (*Zone) Update ¶
Update updates the secondary zone according to its SOA. It will run for the life time of the server and uses the SOA parameters. Every refresh it will check for a new SOA number. If that fails (for all server) it will retry every retry interval. If the zone failed to transfer before the expire, the zone will be marked expired.