github.com/cilium/cilium@v1.16.2/pkg/ip/cidr_test.go (about) 1 // SPDX-License-Identifier: Apache-2.0 2 // Copyright Authors of Cilium 3 4 package ip 5 6 import ( 7 "net" 8 "net/netip" 9 "testing" 10 11 "github.com/stretchr/testify/assert" 12 ) 13 14 func TestAddrToIPNet(t *testing.T) { 15 _, v4IPNet, err := net.ParseCIDR("1.1.1.1/32") 16 assert.NoError(t, err) 17 _, v6IPNet, err := net.ParseCIDR("::ff/128") 18 assert.NoError(t, err) 19 20 ip4 := netip.MustParseAddr("1.1.1.1") 21 assert.NoError(t, err) 22 assert.Equal(t, v4IPNet, AddrToIPNet(ip4)) 23 24 ip6 := netip.MustParseAddr("::ff") 25 assert.NoError(t, err) 26 assert.Equal(t, v6IPNet, AddrToIPNet(ip6)) 27 28 var nilNet *net.IPNet 29 assert.Equal(t, nilNet, AddrToIPNet(netip.Addr{})) 30 } 31 32 func TestIPToNetPrefix(t *testing.T) { 33 v4, _, err := net.ParseCIDR("1.1.1.1/32") 34 assert.NoError(t, err) 35 v6, _, err := net.ParseCIDR("::ff/128") 36 assert.NoError(t, err) 37 assert.Equal(t, netip.PrefixFrom(netip.MustParseAddr(v4.String()), 32), IPToNetPrefix(v4.To4())) 38 assert.Equal(t, netip.PrefixFrom(netip.MustParseAddr(v6.String()), 128), IPToNetPrefix(v6.To16())) 39 40 assert.Equal(t, netip.Prefix{}, IPToNetPrefix(nil)) 41 } 42 43 func mustParseCIDR(t *testing.T, s string) *net.IPNet { 44 _, n, err := net.ParseCIDR(s) 45 assert.NoError(t, err) 46 return n 47 } 48 49 func TestNetsContainsAny(t *testing.T) { 50 tests := []struct { 51 name string 52 a []*net.IPNet 53 b []*net.IPNet 54 ret bool 55 }{ 56 { 57 name: "a contains b", 58 a: []*net.IPNet{mustParseCIDR(t, "0.0.0.0/0")}, 59 b: []*net.IPNet{mustParseCIDR(t, "192.0.0.1/32")}, 60 ret: true, 61 }, 62 { 63 name: "b contains a", 64 a: []*net.IPNet{mustParseCIDR(t, "192.0.0.1/32")}, 65 b: []*net.IPNet{mustParseCIDR(t, "0.0.0.0/0")}, 66 }, 67 { 68 name: "a equals b", 69 a: []*net.IPNet{mustParseCIDR(t, "192.0.0.1/32")}, 70 b: []*net.IPNet{mustParseCIDR(t, "192.0.0.1/32")}, 71 ret: true, 72 }, 73 } 74 75 for _, tt := range tests { 76 t.Run(tt.name, func(t *testing.T) { 77 assert.Equal(t, tt.ret, NetsContainsAny(tt.a, tt.b)) 78 }) 79 } 80 }