-
Notifications
You must be signed in to change notification settings - Fork 431
/
net.go
146 lines (132 loc) · 4.31 KB
/
net.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
package util
import (
"net"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
"github.com/kubeovn/kube-ovn/pkg/util"
)
var _ = Describe("[Net]", func() {
It("AddressCount", func() {
args := []*net.IPNet{
{IP: net.ParseIP("10.0.0.0"), Mask: net.CIDRMask(32, 32)},
{IP: net.ParseIP("10.0.0.0"), Mask: net.CIDRMask(31, 32)},
{IP: net.ParseIP("10.0.0.0"), Mask: net.CIDRMask(30, 32)},
{IP: net.ParseIP("10.0.0.0"), Mask: net.CIDRMask(24, 32)},
}
wants := []float64{
0,
0,
2,
254,
}
Expect(args).To(HaveLen(len(wants)))
for i := range args {
Expect(args[i].IP).NotTo(BeNil())
Expect(util.AddressCount(args[i])).To(Equal(wants[i]))
}
})
It("CountIPNums", func() {
args := [][]string{
{"10.0.0.101"},
{"10.0.0.101..10.0.0.105"},
{"10.0.0.101..10.0.0.105", "10.0.0.111..10.0.0.120"},
}
wants := []float64{
1,
5,
15,
}
Expect(args).To(HaveLen(len(wants)))
for i := range args {
Expect(util.CountIPNums(args[i])).To(Equal(wants[i]))
}
})
It("ExpandExcludeIPs", func() {
type arg struct {
cidr string
excludeIps []string
}
args := []arg{
{"10.0.1.0/24", []string{"10.0.0.255"}},
{"10.0.1.0/24", []string{"10.0.1.0"}},
{"10.0.1.0/24", []string{"10.0.1.1"}},
{"10.0.1.0/24", []string{"10.0.1.254"}},
{"10.0.1.0/24", []string{"10.0.1.255"}},
{"10.0.1.0/24", []string{"10.0.2.0"}},
{"10.0.1.0/24", []string{"10.0.1.101..10.0.1.105"}},
{"10.0.1.0/24", []string{"10.0.0.101..10.0.1.105"}},
{"10.0.1.0/24", []string{"10.0.1.101..10.0.2.105"}},
{"10.0.1.0/24", []string{"10.0.1.101..10.0.1.101"}},
{"10.0.1.0/24", []string{"10.0.1.105..10.0.1.101"}},
{"10.0.1.0/24", []string{"10.0.1.1", "10.0.1.101"}},
{"10.0.1.0/24", []string{"10.0.1.1", "10.0.1.101..10.0.1.105"}},
{"10.0.1.0/24", []string{"10.0.1.1", "10.0.1.101..10.0.1.105", "10.0.1.111..10.0.1.120"}},
{"10.0.1.0/30", []string{"10.0.1.1", "179.17.0.0..179.17.0.10"}},
{"10.0.1.0/31", []string{"10.0.1.1", "179.17.0.0..179.17.0.10"}},
{"10.0.1.0/32", []string{"10.0.1.1", "179.17.0.0..179.17.0.10"}},
{"fe00::100/120", []string{"fe00::ff"}},
{"fe00::100/120", []string{"fe00::100"}},
{"fe00::100/120", []string{"fe00::101"}},
{"fe00::100/120", []string{"fe00::1fe"}},
{"fe00::100/120", []string{"fe00::1ff"}},
{"fe00::100/120", []string{"fe00::200"}},
{"fe00::100/120", []string{"fe00::1a1..fe00::1a5"}},
{"fe00::100/120", []string{"fe00::a1..fe00::1a5"}},
{"fe00::100/120", []string{"fe00::1a1..fe00::2a5"}},
{"fe00::100/120", []string{"fe00::1a1..fe00::1a1"}},
{"fe00::100/120", []string{"fe00::1a5..fe00::1a1"}},
{"fe00::100/120", []string{"fe00::101", "fe00::1a1"}},
{"fe00::100/120", []string{"fe00::101", "fe00::1a1..fe00::1a5"}},
{"fe00::100/120", []string{"fe00::101", "fe00::1a1..fe00::1a5", "fe00::1b1..fe00::1c0"}},
{"fe00::100/126", []string{"fe00::101", "feff::..feff::a"}},
{"fe00::100/127", []string{"fe00::101", "feff::..feff::a"}},
{"fe00::100/128", []string{"fe00::101", "feff::..feff::a"}},
{"10.0.1.0/24,fe00::100/120", []string{"10.0.1.1", "10.0.1.101..10.0.1.105"}},
{"10.0.1.0/24,fe00::100/120", []string{"fe00::101", "fe00::1a1..fe00::1a5"}},
{"10.0.1.0/24,fe00::100/120", []string{"10.0.1.1", "10.0.1.101..10.0.1.105", "fe00::101", "fe00::1a1..fe00::1a5"}},
}
wants := [][]string{
{},
{},
{"10.0.1.1"},
{"10.0.1.254"},
{},
{},
{"10.0.1.101..10.0.1.105"},
{"10.0.1.1..10.0.1.105"},
{"10.0.1.101..10.0.1.254"},
{"10.0.1.101"},
{},
{"10.0.1.1", "10.0.1.101"},
{"10.0.1.1", "10.0.1.101..10.0.1.105"},
{"10.0.1.1", "10.0.1.101..10.0.1.105", "10.0.1.111..10.0.1.120"},
{"10.0.1.1"},
{},
{},
{},
{},
{"fe00::101"},
{"fe00::1fe"},
{},
{},
{"fe00::1a1..fe00::1a5"},
{"fe00::101..fe00::1a5"},
{"fe00::1a1..fe00::1fe"},
{"fe00::1a1"},
{},
{"fe00::101", "fe00::1a1"},
{"fe00::101", "fe00::1a1..fe00::1a5"},
{"fe00::101", "fe00::1a1..fe00::1a5", "fe00::1b1..fe00::1c0"},
{"fe00::101"},
{},
{},
{"10.0.1.1", "10.0.1.101..10.0.1.105"},
{"fe00::101", "fe00::1a1..fe00::1a5"},
{"10.0.1.1", "10.0.1.101..10.0.1.105", "fe00::101", "fe00::1a1..fe00::1a5"},
}
Expect(args).To(HaveLen(len(wants)))
for i := range args {
Expect(util.ExpandExcludeIPs(args[i].excludeIps, args[i].cidr)).To(Equal(wants[i]))
}
})
})