package main
import (
"context"
"fmt"
goipam "github.com/metal-stack/go-ipam"
)
type Subnet struct {
cidr string
parentCidr string
}
var parentSubnets = []Subnet{
{
cidr: "192.168.0.0/24",
parentCidr: "",
},
}
var subnets = []Subnet{
{
cidr: "192.168.0.0/30",
parentCidr: "192.168.0.0/24",
},
}
var storage = map[string][]Subnet{
"parents": parentSubnets,
"children": subnets,
}
func main() {
ipam := goipam.New()
ctx := context.Background()
for _, parent := range storage["parents"] {
parPrefix, err := ipam.NewPrefix(ctx, parent.cidr)
if err != nil {
fmt.Println(err)
}
for _, child := range storage["children"] {
if child.parentCidr == parent.cidr {
chPrefix, err := ipam.AcquireSpecificChildPrefix(ctx, parent.cidr, child.cidr)
if err != nil {
fmt.Println(err)
}
// This call will panic
u := chPrefix.Usage()
_ = u
}
}
}
}