policy-generator/cmd/policygen/config.go
2025-01-02 11:37:20 +01:00

46 lines
953 B
Go

package main
import (
"github.com/goccy/go-yaml"
"net"
)
func validateCIDR(cidr string) error {
_, _, err := net.ParseCIDR(cidr)
return err
}
type CIDR string
// UnmarshalYAML implements the yaml.Unmarshaler interface
func (c *CIDR) UnmarshalYAML(value []byte) error {
// Get the string value from the node
var s string
if err := yaml.Unmarshal(value, &s); err != nil {
return err
}
if err := validateCIDR(s); err != nil {
return err
}
*c = CIDR(s)
return nil
}
// MarshalYAML implements the yaml.Marshaler interface
func (c CIDR) MarshalYAML() ([]byte, error) {
// Do any custom processing here before marshalling
return []byte(string(c)), nil
}
// CIDRS represents each network entry in the YAML
type CIDRS struct {
Name string `yaml:"name"`
CIDR CIDR `yaml:"cidr"`
Except []CIDR `yaml:"except,omitempty"`
}
// Config represents the top-level YAML structure
type Config struct {
Networks []CIDRS `yaml:"networks"`
}