From 38fc0868a8dc2ac44453aa1809ed1e6d165943c2 Mon Sep 17 00:00:00 2001 From: Angel Iglesias Date: Tue, 26 Dec 2023 22:54:09 +0100 Subject: [PATCH] Fix duplicated IPs address suggestions Use Go 1.21+ stdlib's package slices to filter duplicated suggestions Signed-off-by: Angel Iglesias --- handler/routes.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/handler/routes.go b/handler/routes.go index aa5461b..b9595bc 100644 --- a/handler/routes.go +++ b/handler/routes.go @@ -9,6 +9,7 @@ import ( "net/http" "os" "regexp" + "slices" "sort" "strings" "time" @@ -1018,10 +1019,14 @@ func SuggestIPAllocation(db store.IStore) echo.HandlerFunc { fmt.Sprintf("Cannot suggest ip allocation: failed to get available ip from network %s", cidr), }) } + var newAddr string if strings.Contains(ip, ":") { - suggestedIPs = append(suggestedIPs, fmt.Sprintf("%s/128", ip)) + newAddr = fmt.Sprintf("%s/128", ip) } else { - suggestedIPs = append(suggestedIPs, fmt.Sprintf("%s/32", ip)) + newAddr = fmt.Sprintf("%s/32", ip) + } + if !slices.Contains(suggestedIPs, newAddr) { + suggestedIPs = slices.Insert(suggestedIPs, len(suggestedIPs), newAddr) } }