AdGuardHome/internal/dhcpsvc/interface.go
Ainar Garipov 332621f268 Pull request 2147: all: upd deps, go, scripts
Squashed commit of the following:

commit 425f1bd28074d22890629d06f43257e0353ce3d5
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date:   Thu Feb 8 20:15:58 2024 +0300

    all: upd deps, go, scripts
2024-02-08 20:39:18 +03:00

40 lines
966 B
Go

package dhcpsvc
import (
"fmt"
"slices"
"time"
)
// netInterface is a common part of any network interface within the DHCP
// server.
//
// TODO(e.burkov): Add other methods as [DHCPServer] evolves.
type netInterface struct {
// name is the name of the network interface.
name string
// leases is a set of leases sorted by hardware address.
leases []*Lease
// leaseTTL is the default Time-To-Live value for leases.
leaseTTL time.Duration
}
// reset clears all the slices in iface for reuse.
func (iface *netInterface) reset() {
iface.leases = iface.leases[:0]
}
// insertLease inserts the given lease into iface. It returns an error if the
// lease can't be inserted.
func (iface *netInterface) insertLease(l *Lease) (err error) {
i, found := slices.BinarySearchFunc(iface.leases, l, compareLeaseMAC)
if found {
return fmt.Errorf("lease for mac %s already exists", l.HWAddr)
}
iface.leases = slices.Insert(iface.leases, i, l)
return nil
}