@@ -16,6 +16,7 @@ import (
1616 "github.com/cosi-project/runtime/pkg/resource"
1717 "github.com/cosi-project/runtime/pkg/safe"
1818 "github.com/cosi-project/runtime/pkg/state"
19+ "github.com/siderolabs/gen/xslices"
1920 "go.uber.org/zap"
2021
2122 "github.com/siderolabs/talos/pkg/machinery/resources/network"
@@ -141,31 +142,19 @@ func mergeDNSServers(dst *[]netip.Addr, src []netip.Addr) {
141142 return
142143 }
143144
144- srcHasV4 := len ( filterIPFamily ( src , true )) > 0
145- srcHasV6 := len ( filterIPFamily ( src , false )) > 0
146- dstHasV4 := len ( filterIPFamily ( * dst , true )) > 0
147- dstHasV6 := len ( filterIPFamily ( * dst , false )) > 0
145+ srcHasV4 := slices . IndexFunc ( src , netip . Addr . Is4 ) != - 1
146+ srcHasV6 := slices . IndexFunc ( src , netip . Addr . Is6 ) != - 1
147+ dstHasV4 := slices . IndexFunc ( * dst , netip . Addr . Is4 ) != - 1
148+ dstHasV6 := slices . IndexFunc ( * dst , netip . Addr . Is6 ) != - 1
148149
149150 // if old set has IPv4, and new one doesn't, preserve IPv4
150151 // and same vice versa for IPv6
151152 switch {
152153 case dstHasV4 && ! srcHasV4 :
153- * dst = slices .Concat (src , filterIPFamily (* dst , true ))
154+ * dst = slices .Concat (src , xslices . Filter (* dst , netip . Addr . Is4 ))
154155 case dstHasV6 && ! srcHasV6 :
155- * dst = slices .Concat (src , filterIPFamily (* dst , false ))
156+ * dst = slices .Concat (src , xslices . Filter (* dst , netip . Addr . Is6 ))
156157 default :
157158 * dst = src
158159 }
159160}
160-
161- func filterIPFamily (src []netip.Addr , isIPv4 bool ) []netip.Addr {
162- var dst []netip.Addr
163-
164- for _ , addr := range src {
165- if addr .Is4 () == isIPv4 {
166- dst = append (dst , addr )
167- }
168- }
169-
170- return dst
171- }
0 commit comments