From a6a8a6a0d37d8e7c0964cfc9b966e0751f670b8c Mon Sep 17 00:00:00 2001 From: hwipl <33433250+hwipl@users.noreply.github.com> Date: Wed, 22 May 2024 17:58:04 +0200 Subject: [PATCH] internal/splitrt: change net and netip type conversions Signed-off-by: hwipl <33433250+hwipl@users.noreply.github.com> --- internal/splitrt/excludes.go | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/internal/splitrt/excludes.go b/internal/splitrt/excludes.go index 3e4a7b2..7c3378d 100644 --- a/internal/splitrt/excludes.go +++ b/internal/splitrt/excludes.go @@ -45,15 +45,19 @@ func (e *Excludes) setFilter(ctx context.Context) { setExcludes(ctx, addresses) } +// prefixFromIPNet returns ipnet as netip.Prefix. +func prefixFromIPNet(ipnet *net.IPNet) netip.Prefix { + addr, _ := netip.AddrFromSlice(ipnet.IP) + bits, _ := ipnet.Mask.Size() + return netip.PrefixFrom(addr.Unmap(), bits) +} + // AddStatic adds a static entry to the split excludes. func (e *Excludes) AddStatic(ctx context.Context, address *net.IPNet) { log.WithField("address", address).Debug("SplitRouting adding static exclude") - a, err := netip.ParsePrefix(address.String()) - if err != nil { - log.WithError(err).Error("SplitRouting could not parse static exclude") - return - } + // convert address + a := prefixFromIPNet(address) e.Lock() defer e.Unlock() @@ -98,11 +102,8 @@ func (e *Excludes) AddDynamic(ctx context.Context, address *net.IPNet, ttl uint3 "ttl": ttl, }).Debug("SplitRouting adding dynamic exclude") - prefix, err := netip.ParsePrefix(address.String()) - if err != nil { - log.WithError(err).Error("SplitRouting could not parse dynamic exclude") - return - } + // convert address + prefix := prefixFromIPNet(address) if !prefix.IsSingleIP() { log.Error("SplitRouting error adding dynamic exclude with multiple IPs") return