From f75c44b6b39fd42dfbe759b4419d96baab67adb2 Mon Sep 17 00:00:00 2001 From: Julian Kornberger <jk+github@digineo.de> Date: Sat, 29 Dec 2018 16:34:34 +0100 Subject: [PATCH] Extract netlinkRouteEquals() (#159) --- route/route.go | 52 ++++++++++++++++++++++++++------------------------ 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/route/route.go b/route/route.go index 9d8a7340..fccb5955 100644 --- a/route/route.go +++ b/route/route.go @@ -293,34 +293,36 @@ func NetlinkRouteDiff(a, b []netlink.Route) []netlink.Route { } func netlinkRoutesContains(needle netlink.Route, haystack []netlink.Route) bool { - for _, p := range haystack { - - probeMaskSize, probeMaskBits := p.Dst.Mask.Size() - needleMaskSize, needleMaskBits := needle.Dst.Mask.Size() - - if p.LinkIndex == needle.LinkIndex && - p.ILinkIndex == needle.ILinkIndex && - p.Scope == needle.Scope && - - p.Dst.IP.Equal(needle.Dst.IP) && - probeMaskSize == needleMaskSize && - probeMaskBits == needleMaskBits && - - p.Src.Equal(needle.Src) && - p.Gw.Equal(needle.Gw) && - - p.Protocol == needle.Protocol && - p.Priority == needle.Priority && - p.Table == needle.Table && - p.Type == needle.Type && - p.Tos == needle.Tos && - p.Flags == needle.Flags && - p.MTU == needle.MTU && - p.AdvMSS == needle.AdvMSS { - + for i := range haystack { + if netlinkRouteEquals(&needle, &haystack[i]) { return true } } return false } + +func netlinkRouteEquals(a, b *netlink.Route) bool { + aMaskSize, aMaskBits := a.Dst.Mask.Size() + bMaskSize, bMaskBits := b.Dst.Mask.Size() + + return a.LinkIndex == b.LinkIndex && + a.ILinkIndex == b.ILinkIndex && + a.Scope == b.Scope && + + a.Dst.IP.Equal(b.Dst.IP) && + aMaskSize == bMaskSize && + aMaskBits == bMaskBits && + + a.Src.Equal(b.Src) && + a.Gw.Equal(b.Gw) && + + a.Protocol == b.Protocol && + a.Priority == b.Priority && + a.Table == b.Table && + a.Type == b.Type && + a.Tos == b.Tos && + a.Flags == b.Flags && + a.MTU == b.MTU && + a.AdvMSS == b.AdvMSS +} -- GitLab