package builtin import ( "net" "github.com/docker/docker/libnetwork/ipam" "github.com/docker/docker/libnetwork/ipamapi" "github.com/docker/docker/libnetwork/ipamutils" ) var ( // defaultAddressPool Stores user configured subnet list defaultAddressPool []*net.IPNet ) // registerBuiltin registers the built-in ipam driver with libnetwork. func registerBuiltin(ic ipamapi.Registerer) error { var localAddressPool []*net.IPNet if len(defaultAddressPool) > 0 { localAddressPool = append([]*net.IPNet(nil), defaultAddressPool...) } else { localAddressPool = ipamutils.GetLocalScopeDefaultNetworks() } a, err := ipam.NewAllocator(localAddressPool, ipamutils.GetGlobalScopeDefaultNetworks()) if err != nil { return err } cps := &ipamapi.Capability{RequiresRequestReplay: true} return ic.RegisterIpamDriverWithCapabilities(ipamapi.DefaultIPAM, a, cps) } // SetDefaultIPAddressPool stores default address pool. func SetDefaultIPAddressPool(addressPool []*ipamutils.NetworkToSplit) error { nets, err := ipamutils.SplitNetworks(addressPool) if err != nil { return err } defaultAddressPool = nets return nil }