make origin an fqdn
This commit is contained in:
parent
af2f485c8e
commit
7adc5ab95b
18
zone.go
18
zone.go
|
@ -8,10 +8,8 @@ import (
|
||||||
|
|
||||||
// Zone represents a DNS zone.
|
// Zone represents a DNS zone.
|
||||||
type Zone struct {
|
type Zone struct {
|
||||||
Name string // Name of the zone
|
Origin string // Origin of the zone
|
||||||
*radix.Radix // Zone data
|
*radix.Radix // Zone data
|
||||||
|
|
||||||
// soa parameters in here TODO(mg)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ZoneData holds all the RR belonging to Name.
|
// ZoneData holds all the RR belonging to Name.
|
||||||
|
@ -27,8 +25,14 @@ type ZoneData struct {
|
||||||
|
|
||||||
// New ...
|
// New ...
|
||||||
func NewZone(origin string) *Zone {
|
func NewZone(origin string) *Zone {
|
||||||
|
if origin == "" {
|
||||||
|
origin = "."
|
||||||
|
}
|
||||||
|
if _, _, ok := IsDomainName(origin); !ok {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
z := new(Zone)
|
z := new(Zone)
|
||||||
z.Origin = origin
|
z.Origin = Fqdn(origin)
|
||||||
z.Radix = radix.New()
|
z.Radix = radix.New()
|
||||||
return z
|
return z
|
||||||
}
|
}
|
||||||
|
@ -37,6 +41,11 @@ func NewZone(origin string) *Zone {
|
||||||
// Out-of-zone data
|
// Out-of-zone data
|
||||||
// Glue
|
// Glue
|
||||||
func (z *Zone) Insert(r RR) {
|
func (z *Zone) Insert(r RR) {
|
||||||
|
if !IsSubDomain(r.Header().Name, z.Origin) {
|
||||||
|
println("Out of zone data", z.Origin, r.String())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
zd := z.Radix.Find(r.Header().Name)
|
zd := z.Radix.Find(r.Header().Name)
|
||||||
if zd == nil {
|
if zd == nil {
|
||||||
zd := new(ZoneData)
|
zd := new(ZoneData)
|
||||||
|
@ -53,6 +62,7 @@ func (z *Zone) Insert(r RR) {
|
||||||
z.Radix.Insert(r.Header().Name, zd)
|
z.Radix.Insert(r.Header().Name, zd)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
// Name already added
|
||||||
switch t := r.Header().Rrtype; t {
|
switch t := r.Header().Rrtype; t {
|
||||||
case TypeRRSIG:
|
case TypeRRSIG:
|
||||||
zd.Value.(*ZoneData).Signatures = append(zd.Value.(*ZoneData).Signatures, r.(*RR_RRSIG))
|
zd.Value.(*ZoneData).Signatures = append(zd.Value.(*ZoneData).Signatures, r.(*RR_RRSIG))
|
||||||
|
|
6
zscan.go
6
zscan.go
|
@ -162,14 +162,12 @@ func parseZone(r io.Reader, origin, f string, t chan Token, include int) {
|
||||||
if origin == "" {
|
if origin == "" {
|
||||||
origin = "."
|
origin = "."
|
||||||
}
|
}
|
||||||
if !IsFqdn(origin) {
|
|
||||||
t <- Token{Error: &ParseError{f, "bad initial origin name", lex{}}}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if _, _, ok := IsDomainName(origin); !ok {
|
if _, _, ok := IsDomainName(origin); !ok {
|
||||||
t <- Token{Error: &ParseError{f, "bad initial origin name", lex{}}}
|
t <- Token{Error: &ParseError{f, "bad initial origin name", lex{}}}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
origin = Fqdn(origin)
|
||||||
|
|
||||||
st := _EXPECT_OWNER_DIR // initial state
|
st := _EXPECT_OWNER_DIR // initial state
|
||||||
var h RR_Header
|
var h RR_Header
|
||||||
var defttl uint32 = DefaultTtl
|
var defttl uint32 = DefaultTtl
|
||||||
|
|
Loading…
Reference in New Issue