github.com/rawahars/moby@v24.0.4+incompatible/libnetwork/ipams/builtin/builtin.go (about) 1 package builtin 2 3 import ( 4 "net" 5 6 "github.com/docker/docker/libnetwork/ipam" 7 "github.com/docker/docker/libnetwork/ipamapi" 8 "github.com/docker/docker/libnetwork/ipamutils" 9 ) 10 11 var ( 12 // defaultAddressPool Stores user configured subnet list 13 defaultAddressPool []*net.IPNet 14 ) 15 16 // registerBuiltin registers the built-in ipam driver with libnetwork. 17 func registerBuiltin(ic ipamapi.Registerer) error { 18 var localAddressPool []*net.IPNet 19 if len(defaultAddressPool) > 0 { 20 localAddressPool = append([]*net.IPNet(nil), defaultAddressPool...) 21 } else { 22 localAddressPool = ipamutils.GetLocalScopeDefaultNetworks() 23 } 24 25 a, err := ipam.NewAllocator(localAddressPool, ipamutils.GetGlobalScopeDefaultNetworks()) 26 if err != nil { 27 return err 28 } 29 30 cps := &ipamapi.Capability{RequiresRequestReplay: true} 31 32 return ic.RegisterIpamDriverWithCapabilities(ipamapi.DefaultIPAM, a, cps) 33 } 34 35 // SetDefaultIPAddressPool stores default address pool. 36 func SetDefaultIPAddressPool(addressPool []*ipamutils.NetworkToSplit) error { 37 nets, err := ipamutils.SplitNetworks(addressPool) 38 if err != nil { 39 return err 40 } 41 defaultAddressPool = nets 42 return nil 43 }