added CIDR method

This commit is contained in:
ston1th 2021-09-26 19:47:17 +02:00
commit 04aad6a34b

View file

@ -47,7 +47,7 @@ func (a *GenericAlloc) Alloc() (ip *net.IPAddr, err error) {
last := c.Last()
for ; pos != nil && pos != last; pos = c.Next() {
net := &net.IPAddr{IP: pos.IP}
cidr := CIDR(a.prefix, net)
cidr := a.CIDR(net)
ok, e := a.store.Exists(cidr)
if e != nil {
return nil, e
@ -67,13 +67,13 @@ func (a *GenericAlloc) AllocCIDR() (cidr string, err error) {
if err != nil {
return
}
return CIDR(a.prefix, ip), nil
return a.CIDR(ip), nil
}
func (a *GenericAlloc) Free(ip *net.IPAddr) (err error) {
a.store.Lock()
defer a.store.Unlock()
cidr := CIDR(a.prefix, ip)
cidr := a.CIDR(ip)
a.store.Delete(cidr)
return
}
@ -86,6 +86,10 @@ func (a *GenericAlloc) FreeCIDR(cidr string) (err error) {
return a.Free(&net.IPAddr{IP: ip})
}
func (a *GenericAlloc) CIDR(ip *net.IPAddr) string {
return CIDR(a.prefix, ip)
}
func (a *GenericAlloc) SetStore(store Store) {
a.store = store
}