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