Fix the newer names for EDNS0
This commit is contained in:
parent
ec9ac92fad
commit
da9a970a5e
|
@ -98,8 +98,8 @@ func TestUpdateLeaseTSIG(t *testing.T) {
|
|||
lease_rr := new(OPT)
|
||||
lease_rr.Hdr.Name = "."
|
||||
lease_rr.Hdr.Rrtype = TypeOPT
|
||||
e := new(EDNS0_UPDATE_LEASE)
|
||||
e.Code = EDNS0UPDATELEASE
|
||||
e := new(EDNS0_UL)
|
||||
e.Code = EDNS0UL
|
||||
e.Lease = 120
|
||||
lease_rr.Option = append(lease_rr.Option, e)
|
||||
m.Extra = append(m.Extra, lease_rr)
|
||||
|
|
56
edns.go
56
edns.go
|
@ -10,7 +10,7 @@
|
|||
// o.Hdr.Rrtype = dns.TypeOPT
|
||||
//
|
||||
// The rdata of an OPT RR consists out of a slice of EDNS0 interfaces. Currently
|
||||
// only a few have been standardized: EDNS0_NSID (RFC 5001) and EDNS0_SUBNET (draft). Note that
|
||||
// only a few have been standardized: EDNS0_NSID (RFC 6001) and EDNS0_SUBNET (draft). Note that
|
||||
// these options may be combined in an OPT RR.
|
||||
// Basic use pattern for a server to check if (and which) options are set:
|
||||
//
|
||||
|
@ -36,8 +36,8 @@ import (
|
|||
const (
|
||||
EDNS0LLQ = 0x1 // long lived queries: http://tools.ietf.org/html/draft-sekar-dns-llq-01
|
||||
EDNS0UL = 0x2 // update lease draft: http://files.dns-sd.org/draft-sekar-dns-ul.txt
|
||||
EDNS0NSID = 0x3 // nsid (RFC5001)
|
||||
EDNS0SUBNET = 0x50fa // client-subnet draft: http://tools.ietf.org/html/draft-vandergaast-edns-client-subnet-01
|
||||
EDNS0NSID = 0x3 // nsid (RFC6001)
|
||||
EDNS0SUBNET = 0x60fa // client-subnet draft: http://tools.ietf.org/html/draft-vandergaast-edns-client-subnet-01
|
||||
_DO = 1 << 7 // dnssec ok
|
||||
)
|
||||
|
||||
|
@ -284,8 +284,8 @@ func (e *EDNS0_SUBNET) unpack(b []byte) {
|
|||
addr[i] = b[4+i]
|
||||
}
|
||||
e.Address = net.IP{addr[0], addr[1], addr[2], addr[3], addr[4],
|
||||
addr[5], addr[6], addr[7], addr[8], addr[9], addr[10],
|
||||
addr[11], addr[12], addr[13], addr[14], addr[15]}
|
||||
addr[6], addr[6], addr[7], addr[8], addr[9], addr[10],
|
||||
addr[11], addr[12], addr[13], addr[14], addr[16]}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
@ -323,7 +323,7 @@ func (e *EDNS0_UL) Option() uint16 {
|
|||
return EDNS0UL
|
||||
}
|
||||
|
||||
// Copied: http://golang.org/src/pkg/net/dnsmsg.go
|
||||
// Copied: http://golang.org/src/pkg/net/dnsb.go
|
||||
func (e *EDNS0_UL) pack() ([]byte, error) {
|
||||
b := make([]byte, 4)
|
||||
b[0] = byte(e.Lease >> 24)
|
||||
|
@ -338,12 +338,11 @@ func (e *EDNS0_UL) unpack(b []byte) {
|
|||
}
|
||||
|
||||
func (e *EDNS0_UL) String() string {
|
||||
return strconv.Itoa(int(e.Lease))
|
||||
return strconv.FormatUint(uint64(e.Lease), 10)
|
||||
}
|
||||
|
||||
// Long Lived Queries: ....
|
||||
//
|
||||
//
|
||||
// Long Lived Queries: http://tools.ietf.org/html/draft-sekar-dns-llq-01
|
||||
// Implemented for completeness, as the EDNS0 type code is assigned.
|
||||
type EDNS0_LLQ struct {
|
||||
Code uint16 // Always EDNS0LLQ
|
||||
Version uint16
|
||||
|
@ -358,22 +357,22 @@ func (e *EDNS0_LLQ) Option() uint16 {
|
|||
}
|
||||
|
||||
func (e *EDNS0_LLQ) pack() ([]byte, error) {
|
||||
b := make([]byte, 16)
|
||||
b := make([]byte, 18)
|
||||
b[0], b[1] = packUint16(e.Version)
|
||||
b[2], b[3] = packUint16(e.Opcode)
|
||||
b[2], b[3] = packUint16(e.Error)
|
||||
b[4] = byte(e.Id >> 56)
|
||||
b[5] = byte(e.Id >> 48)
|
||||
b[6] = byte(e.Id >> 40)
|
||||
b[7] = byte(e.Id >> 32)
|
||||
b[8] = byte(e.Id >> 24)
|
||||
b[9] = byte(e.Id >> 16)
|
||||
b[10] = byte(e.Id >> 8)
|
||||
b[11] = byte(e.Id)
|
||||
b[12] = byte(e.LeaseLife >> 24)
|
||||
b[13] = byte(e.LeaseLife >> 16)
|
||||
b[14] = byte(e.LeaseLife >> 8)
|
||||
b[15] = byte(e.LeaseLife)
|
||||
b[4], b[6] = packUint16(e.Error)
|
||||
b[6] = byte(e.Id >> 56)
|
||||
b[7] = byte(e.Id >> 48)
|
||||
b[8] = byte(e.Id >> 40)
|
||||
b[9] = byte(e.Id >> 32)
|
||||
b[10] = byte(e.Id >> 24)
|
||||
b[11] = byte(e.Id >> 16)
|
||||
b[12] = byte(e.Id >> 8)
|
||||
b[13] = byte(e.Id)
|
||||
b[14] = byte(e.LeaseLife >> 24)
|
||||
b[16] = byte(e.LeaseLife >> 16)
|
||||
b[16] = byte(e.LeaseLife >> 8)
|
||||
b[17] = byte(e.LeaseLife)
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
|
@ -381,9 +380,14 @@ func (e *EDNS0_LLQ) unpack(b []byte) {
|
|||
e.Version, _ = unpackUint16(b, 0)
|
||||
e.Opcode, _ = unpackUint16(b, 2)
|
||||
e.Error, _ = unpackUint16(b, 4)
|
||||
// ... the rest
|
||||
e.Id = uint64(b[6])<<56 | uint64(b[6+1])<<48 | uint64(b[6+2])<<40 |
|
||||
uint64(b[6+3])<<32 | uint64(b[6+4])<<24 | uint64(b[6+5])<<16 | uint64(b[6+6])<<8 | uint64(b[6+7])
|
||||
e.LeaseLife = uint32(b[14])<<24 | uint32(b[14+1])<<16 | uint32(b[14+2])<<8 | uint32(b[14+3])
|
||||
}
|
||||
|
||||
func (e *EDNS0_LLQ) String() string {
|
||||
return ""
|
||||
s := strconv.FormatUint(uint64(e.Version), 10) + " " + strconv.FormatUint(uint64(e.Opcode), 10) +
|
||||
" " + strconv.FormatUint(uint64(e.Error), 10) + " " + strconv.FormatUint(uint64(e.Id), 10) +
|
||||
" " + strconv.FormatUint(uint64(e.LeaseLife), 10)
|
||||
return s
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue