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  }