mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2024-05-11 05:55:12 +00:00
@@ -6,8 +6,8 @@ import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
// IpConversion describes an IP conversion.
|
||||
type IpConversion struct {
|
||||
// IPConversion describes an IP conversion.
|
||||
type IPConversion struct {
|
||||
Low, High net.IP
|
||||
NewBases []net.IP
|
||||
NewIPs []net.IP
|
||||
@@ -32,8 +32,8 @@ func UintToIP(u uint32) net.IP {
|
||||
}
|
||||
|
||||
// DecodeTransformTable turns a string-encoded table into a list of conversions.
|
||||
func DecodeTransformTable(transforms string) ([]IpConversion, error) {
|
||||
result := []IpConversion{}
|
||||
func DecodeTransformTable(transforms string) ([]IPConversion, error) {
|
||||
result := []IPConversion{}
|
||||
rows := strings.Split(transforms, ";")
|
||||
for ri, row := range rows {
|
||||
items := strings.Split(row, "~")
|
||||
@@ -44,7 +44,7 @@ func DecodeTransformTable(transforms string) ([]IpConversion, error) {
|
||||
items[i] = strings.TrimSpace(item)
|
||||
}
|
||||
|
||||
con := IpConversion{
|
||||
con := IPConversion{
|
||||
Low: net.ParseIP(items[0]),
|
||||
High: net.ParseIP(items[1]),
|
||||
}
|
||||
@@ -85,20 +85,20 @@ func DecodeTransformTable(transforms string) ([]IpConversion, error) {
|
||||
return result, nil
|
||||
}
|
||||
|
||||
// TransformIP transforms a single ip address. If the transform results in multiple new targets, an error will be returned.
|
||||
func TransformIP(address net.IP, transforms []IpConversion) (net.IP, error) {
|
||||
ips, err := TransformIPToList(address, transforms)
|
||||
// IP transforms a single ip address. If the transform results in multiple new targets, an error will be returned.
|
||||
func IP(address net.IP, transforms []IPConversion) (net.IP, error) {
|
||||
ips, err := IPToList(address, transforms)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if len(ips) != 1 {
|
||||
return nil, fmt.Errorf("Expect exactly one ip for TransformIP result. Got: %s", ips)
|
||||
return nil, fmt.Errorf("Expect exactly one ip for IP result. Got: %s", ips)
|
||||
}
|
||||
return ips[0], err
|
||||
}
|
||||
|
||||
// TransformIPToList manipulates an net.IP based on a list of IpConversions. It can potentially expand one ip address into multiple addresses.
|
||||
func TransformIPToList(address net.IP, transforms []IpConversion) ([]net.IP, error) {
|
||||
// IPToList manipulates an net.IP based on a list of IPConversions. It can potentially expand one ip address into multiple addresses.
|
||||
func IPToList(address net.IP, transforms []IPConversion) ([]net.IP, error) {
|
||||
thisIP, err := ipToUint(address)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@@ -103,9 +103,9 @@ func Test_DecodeTransformTable_Base_and_IP(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func Test_TransformIP(t *testing.T) {
|
||||
func Test_IP(t *testing.T) {
|
||||
|
||||
var transforms1 = []IpConversion{{
|
||||
var transforms1 = []IPConversion{{
|
||||
Low: net.ParseIP("11.11.11.0"),
|
||||
High: net.ParseIP("11.11.11.20"),
|
||||
NewBases: []net.IP{net.ParseIP("99.99.99.0")},
|
||||
@@ -156,7 +156,7 @@ func Test_TransformIP(t *testing.T) {
|
||||
|
||||
for _, test := range tests {
|
||||
experiment := net.ParseIP(test.experiment)
|
||||
actual, err := TransformIPToList(experiment, transforms1)
|
||||
actual, err := IPToList(experiment, transforms1)
|
||||
if err != nil {
|
||||
t.Errorf("%v: got an err: %v\n", experiment, err)
|
||||
}
|
||||
@@ -171,9 +171,9 @@ func Test_TransformIP(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func Test_TransformIP_NewIP(t *testing.T) {
|
||||
func Test_IP_NewIP(t *testing.T) {
|
||||
|
||||
var transforms1 = []IpConversion{{
|
||||
var transforms1 = []IPConversion{{
|
||||
Low: net.ParseIP("11.11.11.0"),
|
||||
High: net.ParseIP("11.11.11.20"),
|
||||
NewIPs: []net.IP{net.ParseIP("1.1.1.1")},
|
||||
@@ -213,7 +213,7 @@ func Test_TransformIP_NewIP(t *testing.T) {
|
||||
for _, test := range tests {
|
||||
experiment := net.ParseIP(test.experiment)
|
||||
expected := net.ParseIP(test.expected)
|
||||
actual, err := TransformIP(experiment, transforms1)
|
||||
actual, err := IP(experiment, transforms1)
|
||||
if err != nil {
|
||||
t.Errorf("%v: got an err: %v\n", experiment, err)
|
||||
}
|
||||
|
Reference in New Issue
Block a user