code: func IPRange() schema.SchemaValidateFunc {
  	return func(i interface{}, k string) (s []string, es []error) {
  		v, ok := i.(string)
  		if !ok {
  			es = append(es, fmt.Errorf("expected type of %s to be string", k))
  			return
  		}
  
  		ips := strings.Split(v, "-")
  		if len(ips) != 2 {
  			es = append(es, fmt.Errorf(
  				"expected %s to contain a valid IP range, got: %s", k, v))
  			return
  		}
  		ip1 := net.ParseIP(ips[0])
  		ip2 := net.ParseIP(ips[1])
  		if ip1 == nil || ip2 == nil || bytes.Compare(ip1, ip2) > 0 {
  			es = append(es, fmt.Errorf(
  				"expected %s to contain a valid IP range, got: %s", k, v))
  		}
  		return
  	}
  }
docs: // IPRange returns a SchemaValidateFunc which tests if the provided value
  // is of type string, and in valid IP range notation