Fix: add mutex for fake ip pool
This commit is contained in:
parent
0a6f9b3878
commit
d883e7986e
1 changed files with 5 additions and 0 deletions
|
@ -3,6 +3,7 @@ package fakeip
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"net"
|
"net"
|
||||||
|
"sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Pool is a implementation about fake ip generator without storage
|
// Pool is a implementation about fake ip generator without storage
|
||||||
|
@ -10,10 +11,13 @@ type Pool struct {
|
||||||
max uint32
|
max uint32
|
||||||
min uint32
|
min uint32
|
||||||
offset uint32
|
offset uint32
|
||||||
|
mux *sync.Mutex
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get return a new fake ip
|
// Get return a new fake ip
|
||||||
func (p *Pool) Get() net.IP {
|
func (p *Pool) Get() net.IP {
|
||||||
|
p.mux.Lock()
|
||||||
|
defer p.mux.Unlock()
|
||||||
ip := uintToIP(p.min + p.offset)
|
ip := uintToIP(p.min + p.offset)
|
||||||
p.offset = (p.offset + 1) % (p.max - p.min)
|
p.offset = (p.offset + 1) % (p.max - p.min)
|
||||||
return ip
|
return ip
|
||||||
|
@ -46,5 +50,6 @@ func New(ipnet *net.IPNet) (*Pool, error) {
|
||||||
return &Pool{
|
return &Pool{
|
||||||
min: min,
|
min: min,
|
||||||
max: max,
|
max: max,
|
||||||
|
mux: &sync.Mutex{},
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue