Files
terraform-provider-unifi/internal/provider/cidr.go
2020-09-20 21:03:06 -04:00

63 lines
1.0 KiB
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 ""
}
if len(cidrNet.Mask) == net.IPv6len {
return ""
}
return cidrNet.String()
}
func cidrOneBased(cidr string) string {
_, cidrNet, err := net.ParseCIDR(cidr)
if err != nil {
return ""
}
if len(cidrNet.Mask) == net.IPv6len {
return ""
}
cidrNet.IP[3]++
return cidrNet.String()
}