Fix IPv6 case for CIDR format reverse zones (#4652)

* fix ipv6 case for cidr.Class

Signed-off-by: Chris O'Haver <cohaver@infoblox.com>

* add check and test case for invalid ipv6 cidr

Signed-off-by: Chris O'Haver <cohaver@infoblox.com>

* net package is bad at detecting ipv6/ipv4

Signed-off-by: Chris O'Haver <cohaver@infoblox.com>

* rename Class -> Split

Signed-off-by: Chris O'Haver <cohaver@infoblox.com>
This commit is contained in:
Chris O'Haver 2021-06-04 04:17:17 -04:00 committed by GitHub
parent a50c0f151f
commit 846ace3f51
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 67 additions and 9 deletions

View file

@ -163,8 +163,12 @@ func SplitHostPort(s string) (hosts []string, port string, err error) {
return []string{s}, port, nil
}
if s[0] == ':' || (s[0] == '0' && strings.Contains(s, ":")) {
return nil, "", fmt.Errorf("invalid CIDR %s", s)
}
// now check if multiple hosts must be returned.
nets := cidr.Class(n)
nets := cidr.Split(n)
hosts = cidr.Reverse(nets)
return hosts, port, nil
}