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 := new(OPT)
|
||||||
lease_rr.Hdr.Name = "."
|
lease_rr.Hdr.Name = "."
|
||||||
lease_rr.Hdr.Rrtype = TypeOPT
|
lease_rr.Hdr.Rrtype = TypeOPT
|
||||||
e := new(EDNS0_UPDATE_LEASE)
|
e := new(EDNS0_UL)
|
||||||
e.Code = EDNS0UPDATELEASE
|
e.Code = EDNS0UL
|
||||||
e.Lease = 120
|
e.Lease = 120
|
||||||
lease_rr.Option = append(lease_rr.Option, e)
|
lease_rr.Option = append(lease_rr.Option, e)
|
||||||
m.Extra = append(m.Extra, lease_rr)
|
m.Extra = append(m.Extra, lease_rr)
|
||||||
|
|
56
edns.go
56
edns.go
|
@ -10,7 +10,7 @@
|
||||||
// o.Hdr.Rrtype = dns.TypeOPT
|
// o.Hdr.Rrtype = dns.TypeOPT
|
||||||
//
|
//
|
||||||
// The rdata of an OPT RR consists out of a slice of EDNS0 interfaces. Currently
|
// 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.
|
// these options may be combined in an OPT RR.
|
||||||
// Basic use pattern for a server to check if (and which) options are set:
|
// Basic use pattern for a server to check if (and which) options are set:
|
||||||
//
|
//
|
||||||
|
@ -36,8 +36,8 @@ import (
|
||||||
const (
|
const (
|
||||||
EDNS0LLQ = 0x1 // long lived queries: http://tools.ietf.org/html/draft-sekar-dns-llq-01
|
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
|
EDNS0UL = 0x2 // update lease draft: http://files.dns-sd.org/draft-sekar-dns-ul.txt
|
||||||
EDNS0NSID = 0x3 // nsid (RFC5001)
|
EDNS0NSID = 0x3 // nsid (RFC6001)
|
||||||
EDNS0SUBNET = 0x50fa // client-subnet draft: http://tools.ietf.org/html/draft-vandergaast-edns-client-subnet-01
|
EDNS0SUBNET = 0x60fa // client-subnet draft: http://tools.ietf.org/html/draft-vandergaast-edns-client-subnet-01
|
||||||
_DO = 1 << 7 // dnssec ok
|
_DO = 1 << 7 // dnssec ok
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -284,8 +284,8 @@ func (e *EDNS0_SUBNET) unpack(b []byte) {
|
||||||
addr[i] = b[4+i]
|
addr[i] = b[4+i]
|
||||||
}
|
}
|
||||||
e.Address = net.IP{addr[0], addr[1], addr[2], addr[3], addr[4],
|
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[6], addr[6], addr[7], addr[8], addr[9], addr[10],
|
||||||
addr[11], addr[12], addr[13], addr[14], addr[15]}
|
addr[11], addr[12], addr[13], addr[14], addr[16]}
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -323,7 +323,7 @@ func (e *EDNS0_UL) Option() uint16 {
|
||||||
return EDNS0UL
|
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) {
|
func (e *EDNS0_UL) pack() ([]byte, error) {
|
||||||
b := make([]byte, 4)
|
b := make([]byte, 4)
|
||||||
b[0] = byte(e.Lease >> 24)
|
b[0] = byte(e.Lease >> 24)
|
||||||
|
@ -338,12 +338,11 @@ func (e *EDNS0_UL) unpack(b []byte) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *EDNS0_UL) String() string {
|
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 {
|
type EDNS0_LLQ struct {
|
||||||
Code uint16 // Always EDNS0LLQ
|
Code uint16 // Always EDNS0LLQ
|
||||||
Version uint16
|
Version uint16
|
||||||
|
@ -358,22 +357,22 @@ func (e *EDNS0_LLQ) Option() uint16 {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *EDNS0_LLQ) pack() ([]byte, error) {
|
func (e *EDNS0_LLQ) pack() ([]byte, error) {
|
||||||
b := make([]byte, 16)
|
b := make([]byte, 18)
|
||||||
b[0], b[1] = packUint16(e.Version)
|
b[0], b[1] = packUint16(e.Version)
|
||||||
b[2], b[3] = packUint16(e.Opcode)
|
b[2], b[3] = packUint16(e.Opcode)
|
||||||
b[2], b[3] = packUint16(e.Error)
|
b[4], b[6] = packUint16(e.Error)
|
||||||
b[4] = byte(e.Id >> 56)
|
b[6] = byte(e.Id >> 56)
|
||||||
b[5] = byte(e.Id >> 48)
|
b[7] = byte(e.Id >> 48)
|
||||||
b[6] = byte(e.Id >> 40)
|
b[8] = byte(e.Id >> 40)
|
||||||
b[7] = byte(e.Id >> 32)
|
b[9] = byte(e.Id >> 32)
|
||||||
b[8] = byte(e.Id >> 24)
|
b[10] = byte(e.Id >> 24)
|
||||||
b[9] = byte(e.Id >> 16)
|
b[11] = byte(e.Id >> 16)
|
||||||
b[10] = byte(e.Id >> 8)
|
b[12] = byte(e.Id >> 8)
|
||||||
b[11] = byte(e.Id)
|
b[13] = byte(e.Id)
|
||||||
b[12] = byte(e.LeaseLife >> 24)
|
b[14] = byte(e.LeaseLife >> 24)
|
||||||
b[13] = byte(e.LeaseLife >> 16)
|
b[16] = byte(e.LeaseLife >> 16)
|
||||||
b[14] = byte(e.LeaseLife >> 8)
|
b[16] = byte(e.LeaseLife >> 8)
|
||||||
b[15] = byte(e.LeaseLife)
|
b[17] = byte(e.LeaseLife)
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -381,9 +380,14 @@ func (e *EDNS0_LLQ) unpack(b []byte) {
|
||||||
e.Version, _ = unpackUint16(b, 0)
|
e.Version, _ = unpackUint16(b, 0)
|
||||||
e.Opcode, _ = unpackUint16(b, 2)
|
e.Opcode, _ = unpackUint16(b, 2)
|
||||||
e.Error, _ = unpackUint16(b, 4)
|
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 {
|
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