diff --git a/pkg/eni/local.go b/pkg/eni/local.go index 1db400e0..9d11a992 100644 --- a/pkg/eni/local.go +++ b/pkg/eni/local.go @@ -328,7 +328,8 @@ func (l *Local) Allocate(ctx context.Context, cni *daemon.CNI, request ResourceR expectV6 := 0 if l.enableIPv4 { - ipv4 := l.ipv4.PeekAvailable(cni.PodID, lo.IPv4) + log.Info("peek", "cni", cni.PodID, "lo", lo.IPv4.String()) + ipv4 := l.ipv4.PeekAvailable(cni.PodID) if ipv4 == nil && len(l.ipv4)+l.allocatingV4 >= l.cap { return nil, []Trace{{Condition: Full}} } else if ipv4 == nil { @@ -337,7 +338,7 @@ func (l *Local) Allocate(ctx context.Context, cni *daemon.CNI, request ResourceR } if l.enableIPv6 { - ipv6 := l.ipv6.PeekAvailable(cni.PodID, lo.IPv6) + ipv6 := l.ipv6.PeekAvailable(cni.PodID) if ipv6 == nil && len(l.ipv6)+l.allocatingV6 >= l.cap { return nil, []Trace{{Condition: Full}} } else if ipv6 == nil { @@ -452,7 +453,7 @@ func (l *Local) allocWorker(ctx context.Context, cni *daemon.CNI, request *Local var ip types.IPSet2 var ipv4, ipv6 *IP if l.enableIPv4 { - ipv4 = l.ipv4.PeekAvailable(cni.PodID, request.IPv4) + ipv4 = l.ipv4.PeekAvailable(cni.PodID) if ipv4 == nil { l.cond.Wait() continue @@ -460,7 +461,7 @@ func (l *Local) allocWorker(ctx context.Context, cni *daemon.CNI, request *Local ip.IPv4 = ipv4.ip } if l.enableIPv6 { - ipv6 = l.ipv6.PeekAvailable(cni.PodID, request.IPv6) + ipv6 = l.ipv6.PeekAvailable(cni.PodID) if ipv6 == nil { l.cond.Wait() continue diff --git a/pkg/eni/types.go b/pkg/eni/types.go index e448ff99..82c762a7 100644 --- a/pkg/eni/types.go +++ b/pkg/eni/types.go @@ -126,9 +126,9 @@ func (s Set) Allocatable() []*IP { return result } -func (s Set) PeekAvailable(podID string, prefer netip.Addr) *IP { - if podID != "" && prefer.IsValid() { - if v, ok := s[prefer]; ok { +func (s Set) PeekAvailable(podID string) *IP { + if podID != "" { + for _, v := range s { if v.podID == podID { return v } diff --git a/types/daemon/res.go b/types/daemon/res.go index 1ec6f13f..a1aa341a 100644 --- a/types/daemon/res.go +++ b/types/daemon/res.go @@ -76,7 +76,7 @@ func (p PodResources) GetResourceItemByType(resType string) []ResourceItem { var ret []ResourceItem for _, r := range p.Resources { if resType == r.Type { - ret = append(ret, ResourceItem{Type: resType, ID: r.ID}) + ret = append(ret, ResourceItem{Type: resType, ID: r.ID, ENIID: r.ENIID, ENIMAC: r.ENIMAC, IPv4: r.IPv4, IPv6: r.IPv6}) } } return ret