* Improve tests * Add Ipv6 support * We can't create IPv6 static routes without a gateway * Revert "We can't create IPv6 static routes without a gateway" This reverts commit dfff85c5b7d22c28d50485536c567e3a8b657136. * Adopt device * Fix * Revert "Adopt device" This reverts commit a1fb209c7b2cd0d9ae44640fece91f4bafeed2ae.
57 lines
945 B
Go
57 lines
945 B
Go
package provider
|
|
|
|
import (
|
|
"fmt"
|
|
"net"
|
|
|
|
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
|
|
)
|
|
|
|
func cidrValidate(raw interface{}, key string) ([]string, []error) {
|
|
v, ok := raw.(string)
|
|
if !ok {
|
|
return nil, []error{fmt.Errorf("expected string, got %T", raw)}
|
|
}
|
|
|
|
_, _, err := net.ParseCIDR(v)
|
|
if err != nil {
|
|
return nil, []error{err}
|
|
}
|
|
|
|
return nil, nil
|
|
}
|
|
|
|
func cidrDiffSuppress(k, old, new string, d *schema.ResourceData) bool {
|
|
_, oldNet, err := net.ParseCIDR(old)
|
|
if err != nil {
|
|
return false
|
|
}
|
|
|
|
_, newNet, err := net.ParseCIDR(new)
|
|
if err != nil {
|
|
return false
|
|
}
|
|
|
|
return oldNet.String() == newNet.String()
|
|
}
|
|
|
|
func cidrZeroBased(cidr string) string {
|
|
_, cidrNet, err := net.ParseCIDR(cidr)
|
|
if err != nil {
|
|
return ""
|
|
}
|
|
|
|
return cidrNet.String()
|
|
}
|
|
|
|
func cidrOneBased(cidr string) string {
|
|
_, cidrNet, err := net.ParseCIDR(cidr)
|
|
if err != nil {
|
|
return ""
|
|
}
|
|
|
|
cidrNet.IP[3]++
|
|
|
|
return cidrNet.String()
|
|
}
|