mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Merge pull request #697 from aboch/bq
Do not manipulate bitseq length to reserve broadcast address
This commit is contained in:
commit
cd971b9db4
2 changed files with 22 additions and 5 deletions
|
@ -246,11 +246,6 @@ func (a *Allocator) insertBitMask(key SubnetKey, pool *net.IPNet) error {
|
|||
ones, bits := pool.Mask.Size()
|
||||
numAddresses := uint64(1 << uint(bits-ones))
|
||||
|
||||
if ipVer == v4 {
|
||||
// Do not let broadcast address be reserved
|
||||
numAddresses--
|
||||
}
|
||||
|
||||
// Allow /64 subnet
|
||||
if ipVer == v6 && numAddresses == 0 {
|
||||
numAddresses--
|
||||
|
@ -266,6 +261,11 @@ func (a *Allocator) insertBitMask(key SubnetKey, pool *net.IPNet) error {
|
|||
// Do the same for IPv6 so that bridge ip starts with XXXX...::1
|
||||
h.Set(0)
|
||||
|
||||
// Do not let broadcast address be reserved
|
||||
if ipVer == v4 {
|
||||
h.Set(numAddresses - 1)
|
||||
}
|
||||
|
||||
a.Lock()
|
||||
a.addresses[key] = h
|
||||
a.Unlock()
|
||||
|
|
|
@ -575,6 +575,23 @@ func TestGetSameAddress(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestGetAddressSubPoolEqualPool(t *testing.T) {
|
||||
a, err := getAllocator()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
// Requesting a subpool of same size of the master pool should not cause any problem on ip allocation
|
||||
pid, _, _, err := a.RequestPool(localAddressSpace, "172.18.0.0/16", "172.18.0.0/16", nil, false)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
_, _, err = a.RequestAddress(pid, nil, nil)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRequestReleaseAddressFromSubPool(t *testing.T) {
|
||||
a, err := getAllocator()
|
||||
if err != nil {
|
||||
|
|
Loading…
Add table
Reference in a new issue