mirror of
https://github.com/moby/moby.git
synced 2026-01-11 18:51:37 +00:00
Add IPv6 to the null IPAM driver
Signed-off-by: Rob Murray <rob.murray@docker.com>
This commit is contained in:
@@ -15,11 +15,14 @@ const (
|
||||
DriverName = "null"
|
||||
|
||||
defaultAddressSpace = "null"
|
||||
defaultPoolCIDR = "0.0.0.0/0"
|
||||
defaultPoolID = defaultAddressSpace + "/" + defaultPoolCIDR
|
||||
defaultPoolCIDR4 = "0.0.0.0/0"
|
||||
defaultPoolID4 = defaultAddressSpace + "/" + defaultPoolCIDR4
|
||||
defaultPoolCIDR6 = "::/0"
|
||||
defaultPoolID6 = defaultAddressSpace + "/" + defaultPoolCIDR6
|
||||
)
|
||||
|
||||
var defaultPool = netip.MustParsePrefix(defaultPoolCIDR)
|
||||
var defaultPool4 = netip.MustParsePrefix(defaultPoolCIDR4)
|
||||
var defaultPool6 = netip.MustParsePrefix(defaultPoolCIDR6)
|
||||
|
||||
type allocator struct{}
|
||||
|
||||
@@ -38,11 +41,14 @@ func (a *allocator) RequestPool(req ipamapi.PoolRequest) (ipamapi.AllocatedPool,
|
||||
return ipamapi.AllocatedPool{}, types.InvalidParameterErrorf("null ipam driver does not handle specific address subpool requests")
|
||||
}
|
||||
if req.V6 {
|
||||
return ipamapi.AllocatedPool{}, types.InvalidParameterErrorf("null ipam driver does not handle IPv6 address pool requests")
|
||||
return ipamapi.AllocatedPool{
|
||||
PoolID: defaultPoolID6,
|
||||
Pool: defaultPool6,
|
||||
}, nil
|
||||
}
|
||||
return ipamapi.AllocatedPool{
|
||||
PoolID: defaultPoolID,
|
||||
Pool: defaultPool,
|
||||
PoolID: defaultPoolID4,
|
||||
Pool: defaultPool4,
|
||||
}, nil
|
||||
}
|
||||
|
||||
@@ -51,14 +57,14 @@ func (a *allocator) ReleasePool(poolID string) error {
|
||||
}
|
||||
|
||||
func (a *allocator) RequestAddress(poolID string, ip net.IP, opts map[string]string) (*net.IPNet, map[string]string, error) {
|
||||
if poolID != defaultPoolID {
|
||||
if poolID != defaultPoolID4 && poolID != defaultPoolID6 {
|
||||
return nil, nil, types.InvalidParameterErrorf("unknown pool id: %s", poolID)
|
||||
}
|
||||
return nil, nil, nil
|
||||
}
|
||||
|
||||
func (a *allocator) ReleaseAddress(poolID string, ip net.IP) error {
|
||||
if poolID != defaultPoolID {
|
||||
if poolID != defaultPoolID4 && poolID != defaultPoolID6 {
|
||||
return types.InvalidParameterErrorf("unknown pool id: %s", poolID)
|
||||
}
|
||||
return nil
|
||||
|
||||
@@ -13,8 +13,13 @@ func TestPoolRequest(t *testing.T) {
|
||||
|
||||
alloc, err := a.RequestPool(ipamapi.PoolRequest{AddressSpace: defaultAddressSpace})
|
||||
assert.NilError(t, err)
|
||||
assert.Check(t, is.Equal(alloc.PoolID, defaultPoolID))
|
||||
assert.Check(t, is.Equal(alloc.Pool, defaultPool))
|
||||
assert.Check(t, is.Equal(alloc.PoolID, defaultPoolID4))
|
||||
assert.Check(t, is.Equal(alloc.Pool, defaultPool4))
|
||||
|
||||
alloc, err = a.RequestPool(ipamapi.PoolRequest{AddressSpace: defaultAddressSpace, V6: true})
|
||||
assert.NilError(t, err)
|
||||
assert.Check(t, is.Equal(alloc.PoolID, defaultPoolID6))
|
||||
assert.Check(t, is.Equal(alloc.Pool, defaultPool6))
|
||||
|
||||
_, err = a.RequestPool(ipamapi.PoolRequest{AddressSpace: "default"})
|
||||
assert.ErrorContains(t, err, "unknown address space: default")
|
||||
@@ -24,15 +29,20 @@ func TestPoolRequest(t *testing.T) {
|
||||
|
||||
_, err = a.RequestPool(ipamapi.PoolRequest{AddressSpace: defaultAddressSpace, SubPool: "192.168.0.0/24"})
|
||||
assert.ErrorContains(t, err, "null ipam driver does not handle specific address subpool requests")
|
||||
|
||||
_, err = a.RequestPool(ipamapi.PoolRequest{AddressSpace: defaultAddressSpace, V6: true})
|
||||
assert.ErrorContains(t, err, "null ipam driver does not handle IPv6 address pool requests")
|
||||
}
|
||||
|
||||
func TestOtherRequests(t *testing.T) {
|
||||
a := allocator{}
|
||||
|
||||
ip, _, err := a.RequestAddress(defaultPoolID, nil, nil)
|
||||
ip, _, err := a.RequestAddress(defaultPoolID4, nil, nil)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if ip != nil {
|
||||
t.Fatalf("Unexpected address returned: %v", ip)
|
||||
}
|
||||
|
||||
ip, _, err = a.RequestAddress(defaultPoolID6, nil, nil)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user