Add check for overlapping subnets

Signed-off-by: Abhinandan Prativadi <abhi@docker.com>
This commit is contained in:
Abhinandan Prativadi 2018-05-10 12:14:44 -07:00
parent 60d8639a81
commit 9fe5cc10b2
1 changed files with 4 additions and 3 deletions

View File

@ -262,12 +262,13 @@ func (aSpace *addrSpace) updatePoolDBOnAdd(k SubnetKey, nw *net.IPNet, ipr *Addr
defer aSpace.Unlock() defer aSpace.Unlock()
// Check if already allocated // Check if already allocated
if p, ok := aSpace.subnets[k]; ok { if _, ok := aSpace.subnets[k]; ok {
if pdf { if pdf {
return nil, types.InternalMaskableErrorf("predefined pool %s is already reserved", nw) return nil, types.InternalMaskableErrorf("predefined pool %s is already reserved", nw)
} }
aSpace.incRefCount(p, 1) // This means the same pool is already allocated. updatePoolDBOnAdd is called when there
return func() error { return nil }, nil // is request for a pool/subpool. It should ensure there is no overlap with existing pools
return nil, ipamapi.ErrPoolOverlap
} }
// If master pool, check for overlap // If master pool, check for overlap