From a2db0cbc4c87f94ca73f123e8d6dfadc92067373 Mon Sep 17 00:00:00 2001 From: haim-kermany Date: Tue, 25 Jun 2024 12:59:38 +0300 Subject: [PATCH 1/2] impl --- pkg/ipblock/ipblock.go | 13 +++++++++++-- pkg/ipblock/ipblock_test.go | 8 ++++---- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/pkg/ipblock/ipblock.go b/pkg/ipblock/ipblock.go index 6380d6d..7bba479 100644 --- a/pkg/ipblock/ipblock.go +++ b/pkg/ipblock/ipblock.go @@ -134,7 +134,7 @@ func (b *IPBlock) Copy() *IPBlock { return &IPBlock{ipRange: b.ipRange.Copy()} } -func (b *IPBlock) ipCount() int { +func (b *IPBlock) IpCount() int { return int(b.ipRange.CalculateSize()) } @@ -167,7 +167,7 @@ func DisjointIPBlocks(set1, set2 []*IPBlock) []*IPBlock { } // sort ipbList by ip_count per ipblock sort.Slice(ipbList, func(i, j int) bool { - return ipbList[i].ipCount() < ipbList[j].ipCount() + return ipbList[i].IpCount() < ipbList[j].IpCount() }) // making sure the resulting list does not contain overlapping ipBlocks res := []*IPBlock{} @@ -300,6 +300,7 @@ func (b *IPBlock) ToCidrListString() string { } // ListToPrint: returns a uniform to print list s.t. each element contains either a single cidr or an ip range +// todo - remove this func, and put its code under ToRangesList() func (b *IPBlock) ListToPrint() []string { cidrsIPRangesList := []string{} for _, ipRange := range b.ipRange.Intervals() { @@ -313,6 +314,14 @@ func (b *IPBlock) ListToPrint() []string { return cidrsIPRangesList } +func (b *IPBlock) ToRangesList() []string { + return b.ListToPrint() +} + +func (b *IPBlock) ToRangesListString() string { + return strings.Join(b.ToRangesList(), commaSeparator) +} + // ToIPAdressString returns the IP Address string for this IPBlock func (b *IPBlock) ToIPAddressString() string { if b.ipRange.IsSingleNumber() { diff --git a/pkg/ipblock/ipblock_test.go b/pkg/ipblock/ipblock_test.go index a57c5fe..09c9c53 100644 --- a/pkg/ipblock/ipblock_test.go +++ b/pkg/ipblock/ipblock_test.go @@ -60,7 +60,7 @@ func TestConversions(t *testing.T) { require.Nil(t, err) require.Equal(t, ipb1.ToCidrListString(), ipb2.ToCidrListString()) - toPrint := ipb1.ListToPrint() + toPrint := ipb1.ToRangesList() require.Len(t, toPrint, 1) require.Equal(t, ipRange, toPrint[0]) @@ -90,12 +90,12 @@ func TestDisjointIPBlocks(t *testing.T) { func TestPairCIDRsToIPBlocks(t *testing.T) { first, second, err := ipblock.PairCIDRsToIPBlocks("5.6.7.8/24", "4.9.2.1/32") require.Nil(t, err) - require.Equal(t, "5.6.7.0/24", first.ListToPrint()[0]) - require.Equal(t, "4.9.2.1/32", second.ListToPrint()[0]) + require.Equal(t, "5.6.7.0/24", first.ToRangesList()[0]) + require.Equal(t, "4.9.2.1/32", second.ToRangesList()[0]) intersect := first.Intersect(second) require.Equal(t, "", intersect.ToIPAddressString()) - require.Empty(t, intersect.ListToPrint()) + require.Empty(t, intersect.ToRangesList()) require.Empty(t, intersect.ToCidrListString()) } From f6cb33b1d7f613195d8eb1bd8ec2280d2f55f7e6 Mon Sep 17 00:00:00 2001 From: haim-kermany Date: Tue, 25 Jun 2024 13:22:26 +0300 Subject: [PATCH 2/2] lint --- pkg/ipblock/ipblock.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/ipblock/ipblock.go b/pkg/ipblock/ipblock.go index 7bba479..b4c24ce 100644 --- a/pkg/ipblock/ipblock.go +++ b/pkg/ipblock/ipblock.go @@ -134,7 +134,7 @@ func (b *IPBlock) Copy() *IPBlock { return &IPBlock{ipRange: b.ipRange.Copy()} } -func (b *IPBlock) IpCount() int { +func (b *IPBlock) IPCount() int { return int(b.ipRange.CalculateSize()) } @@ -167,7 +167,7 @@ func DisjointIPBlocks(set1, set2 []*IPBlock) []*IPBlock { } // sort ipbList by ip_count per ipblock sort.Slice(ipbList, func(i, j int) bool { - return ipbList[i].IpCount() < ipbList[j].IpCount() + return ipbList[i].IPCount() < ipbList[j].IPCount() }) // making sure the resulting list does not contain overlapping ipBlocks res := []*IPBlock{}