|
|
|
@ -152,12 +152,9 @@ const (
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// Used in ZONEMD https://tools.ietf.org/html/rfc8976
|
|
|
|
|
|
|
|
|
|
const (
|
|
|
|
|
// ZoneMD Accepted Schemes
|
|
|
|
|
ZoneMDSchemeSimple = 1
|
|
|
|
|
|
|
|
|
|
// ZoneMD Hash Algorithms
|
|
|
|
|
ZoneMDHashAlgSHA384 = 1
|
|
|
|
|
ZoneMDHashAlgSHA512 = 2
|
|
|
|
|
)
|
|
|
|
@ -1416,13 +1413,13 @@ func (rr *APL) String() string {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// str returns presentation form of the APL prefix.
|
|
|
|
|
func (p *APLPrefix) str() string {
|
|
|
|
|
func (a *APLPrefix) str() string {
|
|
|
|
|
var sb strings.Builder
|
|
|
|
|
if p.Negation {
|
|
|
|
|
if a.Negation {
|
|
|
|
|
sb.WriteByte('!')
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
switch len(p.Network.IP) {
|
|
|
|
|
switch len(a.Network.IP) {
|
|
|
|
|
case net.IPv4len:
|
|
|
|
|
sb.WriteByte('1')
|
|
|
|
|
case net.IPv6len:
|
|
|
|
@ -1431,20 +1428,20 @@ func (p *APLPrefix) str() string {
|
|
|
|
|
|
|
|
|
|
sb.WriteByte(':')
|
|
|
|
|
|
|
|
|
|
switch len(p.Network.IP) {
|
|
|
|
|
switch len(a.Network.IP) {
|
|
|
|
|
case net.IPv4len:
|
|
|
|
|
sb.WriteString(p.Network.IP.String())
|
|
|
|
|
sb.WriteString(a.Network.IP.String())
|
|
|
|
|
case net.IPv6len:
|
|
|
|
|
// add prefix for IPv4-mapped IPv6
|
|
|
|
|
if v4 := p.Network.IP.To4(); v4 != nil {
|
|
|
|
|
if v4 := a.Network.IP.To4(); v4 != nil {
|
|
|
|
|
sb.WriteString("::ffff:")
|
|
|
|
|
}
|
|
|
|
|
sb.WriteString(p.Network.IP.String())
|
|
|
|
|
sb.WriteString(a.Network.IP.String())
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sb.WriteByte('/')
|
|
|
|
|
|
|
|
|
|
prefix, _ := p.Network.Mask.Size()
|
|
|
|
|
prefix, _ := a.Network.Mask.Size()
|
|
|
|
|
sb.WriteString(strconv.Itoa(prefix))
|
|
|
|
|
|
|
|
|
|
return sb.String()
|
|
|
|
@ -1458,17 +1455,17 @@ func (a *APLPrefix) equals(b *APLPrefix) bool {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// copy returns a copy of the APL prefix.
|
|
|
|
|
func (p *APLPrefix) copy() APLPrefix {
|
|
|
|
|
func (a *APLPrefix) copy() APLPrefix {
|
|
|
|
|
return APLPrefix{
|
|
|
|
|
Negation: p.Negation,
|
|
|
|
|
Network: copyNet(p.Network),
|
|
|
|
|
Negation: a.Negation,
|
|
|
|
|
Network: copyNet(a.Network),
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// len returns size of the prefix in wire format.
|
|
|
|
|
func (p *APLPrefix) len() int {
|
|
|
|
|
func (a *APLPrefix) len() int {
|
|
|
|
|
// 4-byte header and the network address prefix (see Section 4 of RFC 3123)
|
|
|
|
|
prefix, _ := p.Network.Mask.Size()
|
|
|
|
|
prefix, _ := a.Network.Mask.Size()
|
|
|
|
|
return 4 + (prefix+7)/8
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|