aboutsummaryrefslogtreecommitdiff
path: root/utils/ipam
diff options
context:
space:
mode:
Diffstat (limited to 'utils/ipam')
-rw-r--r--utils/ipam/yaml_model/yaml_model.go36
1 files changed, 36 insertions, 0 deletions
diff --git a/utils/ipam/yaml_model/yaml_model.go b/utils/ipam/yaml_model/yaml_model.go
new file mode 100644
index 0000000..6e5b0f8
--- /dev/null
+++ b/utils/ipam/yaml_model/yaml_model.go
@@ -0,0 +1,36 @@
+package yaml_model
+
+import "gopkg.in/yaml.v3"
+
+type Ipam struct {
+ Ipam6 Ipam6 `yaml:"ipam6,omitempty"`
+ Routers []Router `yaml:"routers,omitempty"`
+}
+
+type Ipam6 struct {
+ Networks map[string]Network6Yaml `yaml:"networks"`
+}
+
+type Network6Yaml struct {
+ Range string `yaml:"range"`
+ Hosts map[string]string `yaml:"hosts"`
+}
+
+type Router struct {
+ As string `yaml:"as,omitempty"`
+ Peer []Peer `yaml:"peer,omitempty"`
+}
+
+type Peer struct {
+ Name string `yaml:"name"`
+}
+
+func Parse(bs []byte) (Ipam, error) {
+ var ipam Ipam
+ err := yaml.Unmarshal(bs, &ipam)
+ if err != nil {
+ return Ipam{}, err
+ }
+
+ return ipam, nil
+}