package container

import (
	"errors"
	"fmt"

	"github.com/moby/moby/api/types/network"
	"github.com/moby/moby/v2/daemon/internal/netiputil"
	"github.com/moby/swarmkit/v2/api"
)

func ipamConfig(ic *api.IPAMConfig) (network.IPAMConfig, error) {
	var (
		cfg  network.IPAMConfig
		errs []error
		err  error
	)
	cfg.Subnet, err = netiputil.MaybeParseCIDR(ic.Subnet)
	if err != nil {
		errs = append(errs, fmt.Errorf("invalid subnet: %w", err))
	}
	cfg.IPRange, err = netiputil.MaybeParseCIDR(ic.Range)
	if err != nil {
		errs = append(errs, fmt.Errorf("invalid ip range: %w", err))
	}
	gw, err := netiputil.MaybeParseAddr(ic.Gateway)
	cfg.Gateway = gw.Unmap()
	if err != nil {
		errs = append(errs, fmt.Errorf("invalid gateway: %w", err))
	}
	return cfg, errors.Join(errs...)
}