aboutsummaryrefslogtreecommitdiff
path: root/plugin/pkg/dnsutil/zone.go
blob: 579fef1ba740379a8d82a9dbb88d7d87c256b2ac (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package dnsutil

import (
	"errors"

	"github.com/miekg/dns"
)

// TrimZone removes the zone component from q. It returns the trimmed
// name or an error is zone is longer then qname. The trimmed name will be returned
// without a trailing dot.
func TrimZone(q string, z string) (string, error) {
	zl := dns.CountLabel(z)
	i, ok := dns.PrevLabel(q, zl)
	if ok || i-1 < 0 {
		return "", errors.New("trimzone: overshot qname: " + q + "for zone " + z)
	}
	// This includes the '.', remove on return
	return q[:i-1], nil
}