Add mtime to the zone structure

This commit is contained in:
Miek Gieben 2012-12-06 15:38:23 +01:00
parent 25e58e4edd
commit 885aba5fad
1 changed files with 12 additions and 6 deletions

18
zone.go
View File

@ -16,13 +16,13 @@ import (
// Zone represents a DNS zone. It's safe for concurrent use by
// multilpe goroutines.
type Zone struct {
Origin string // Origin of the zone
olabels []string // origin cut up in labels, just to speed up the isSubDomain method
Wildcard int // Whenever we see a wildcard name, this is incremented
*radix.Radix // Zone data
Origin string // Origin of the zone
olabels []string // origin cut up in labels, just to speed up the isSubDomain method
Wildcard int // Whenever we see a wildcard name, this is incremented
expired bool // Slave zone is expired
mtime time.Time // When is the zone last modified
*radix.Radix // Zone data
*sync.RWMutex
expired bool // Slave zone is expired
// Do we need a timemodified?
}
type uint16Slice []uint16
@ -84,6 +84,7 @@ func NewZone(origin string) *Zone {
z.olabels = SplitLabels(z.Origin)
z.Radix = radix.New()
z.RWMutex = new(sync.RWMutex)
z.mtime = time.Now().UTC()
return z
}
@ -202,6 +203,7 @@ func (z *Zone) Insert(r RR) error {
key := toRadixName(r.Header().Name)
z.Lock()
z.mtime = time.Now.UTC()
zd, exact := z.Radix.Find(key)
if !exact {
// Not an exact match, so insert new value
@ -251,6 +253,7 @@ func (z *Zone) Insert(r RR) error {
func (z *Zone) Remove(r RR) error {
key := toRadixName(r.Header().Name)
z.Lock()
m.mtime = time.Now.UTC()
zd, exact := z.Radix.Find(key)
if !exact {
defer z.Unlock()
@ -312,6 +315,7 @@ func (z *Zone) Remove(r RR) error {
func (z *Zone) RemoveName(s string) error {
key := toRadixName(s)
z.Lock()
z.mtime = time.Now().UTC()
defer z.Unlock()
z.Radix.Remove(key)
if len(s) > 1 && s[0] == '*' && s[1] == '.' {
@ -327,6 +331,7 @@ func (z *Zone) RemoveName(s string) error {
// Typical use of this method is when processing a RemoveRRset dynamic update packet.
func (z *Zone) RemoveRRset(s string, t uint16) error {
z.Lock()
z.mtime = time.Now().UTC()
zd, exact := z.Radix.Find(toRadixName(s))
if !exact {
defer z.Unlock()
@ -418,6 +423,7 @@ func (z *Zone) isSubDomain(child string) bool {
// // Admire your signed zone...
func (z *Zone) Sign(keys map[*RR_DNSKEY]PrivateKey, config *SignatureConfig) error {
z.Lock()
z.mtime = time.Now().UTC()
defer z.Unlock()
if config == nil {
config = DefaultSignatureConfig