@@ -101,6 +101,10 @@ func TestTrieIPv4(t *testing.T) {
101
101
allowedIPs .Insert (netip .PrefixFrom (netip .AddrFrom4 ([4 ]byte {a , b , c , d }), int (cidr )), peer )
102
102
}
103
103
104
+ remove := func (peer * Peer , a , b , c , d byte , cidr uint8 ) {
105
+ allowedIPs .Remove (netip .PrefixFrom (netip .AddrFrom4 ([4 ]byte {a , b , c , d }), int (cidr )), peer )
106
+ }
107
+
104
108
assertEQ := func (peer * Peer , a , b , c , d byte ) {
105
109
p := allowedIPs .Lookup ([]byte {a , b , c , d })
106
110
if p != peer {
@@ -176,6 +180,21 @@ func TestTrieIPv4(t *testing.T) {
176
180
allowedIPs .RemoveByPeer (a )
177
181
178
182
assertNEQ (a , 192 , 168 , 0 , 1 )
183
+
184
+ insert (a , 1 , 0 , 0 , 0 , 32 )
185
+ insert (a , 192 , 0 , 0 , 0 , 24 )
186
+ assertEQ (a , 1 , 0 , 0 , 0 )
187
+ assertEQ (a , 192 , 0 , 0 , 1 )
188
+ remove (a , 192 , 0 , 0 , 0 , 32 )
189
+ assertEQ (a , 192 , 0 , 0 , 1 )
190
+ remove (nil , 192 , 0 , 0 , 0 , 24 )
191
+ assertEQ (a , 192 , 0 , 0 , 1 )
192
+ remove (b , 192 , 0 , 0 , 0 , 24 )
193
+ assertEQ (a , 192 , 0 , 0 , 1 )
194
+ remove (a , 192 , 0 , 0 , 0 , 24 )
195
+ assertNEQ (a , 192 , 0 , 0 , 1 )
196
+ remove (a , 1 , 0 , 0 , 0 , 32 )
197
+ assertNEQ (a , 1 , 0 , 0 , 0 )
179
198
}
180
199
181
200
/* Test ported from kernel implementation:
@@ -211,6 +230,15 @@ func TestTrieIPv6(t *testing.T) {
211
230
allowedIPs .Insert (netip .PrefixFrom (netip .AddrFrom16 (* (* [16 ]byte )(addr )), int (cidr )), peer )
212
231
}
213
232
233
+ remove := func (peer * Peer , a , b , c , d uint32 , cidr uint8 ) {
234
+ var addr []byte
235
+ addr = append (addr , expand (a )... )
236
+ addr = append (addr , expand (b )... )
237
+ addr = append (addr , expand (c )... )
238
+ addr = append (addr , expand (d )... )
239
+ allowedIPs .Remove (netip .PrefixFrom (netip .AddrFrom16 (* (* [16 ]byte )(addr )), int (cidr )), peer )
240
+ }
241
+
214
242
assertEQ := func (peer * Peer , a , b , c , d uint32 ) {
215
243
var addr []byte
216
244
addr = append (addr , expand (a )... )
@@ -223,6 +251,18 @@ func TestTrieIPv6(t *testing.T) {
223
251
}
224
252
}
225
253
254
+ assertNEQ := func (peer * Peer , a , b , c , d uint32 ) {
255
+ var addr []byte
256
+ addr = append (addr , expand (a )... )
257
+ addr = append (addr , expand (b )... )
258
+ addr = append (addr , expand (c )... )
259
+ addr = append (addr , expand (d )... )
260
+ p := allowedIPs .Lookup (addr )
261
+ if p == peer {
262
+ t .Error ("Assert NEQ failed" )
263
+ }
264
+ }
265
+
226
266
insert (d , 0x26075300 , 0x60006b00 , 0 , 0xc05f0543 , 128 )
227
267
insert (c , 0x26075300 , 0x60006b00 , 0 , 0 , 64 )
228
268
insert (e , 0 , 0 , 0 , 0 , 0 )
@@ -244,4 +284,21 @@ func TestTrieIPv6(t *testing.T) {
244
284
assertEQ (h , 0x24046800 , 0x40040800 , 0 , 0 )
245
285
assertEQ (h , 0x24046800 , 0x40040800 , 0x10101010 , 0x10101010 )
246
286
assertEQ (a , 0x24046800 , 0x40040800 , 0xdeadbeef , 0xdeadbeef )
287
+
288
+ insert (a , 0x24446801 , 0x40e40800 , 0xdeaebeef , 0xdefbeef , 128 )
289
+ insert (a , 0x24446800 , 0xf0e40800 , 0xeeaebeef , 0 , 98 )
290
+ assertEQ (a , 0x24446801 , 0x40e40800 , 0xdeaebeef , 0xdefbeef )
291
+ assertEQ (a , 0x24446800 , 0xf0e40800 , 0xeeaebeef , 0x10101010 )
292
+ remove (a , 0x24446801 , 0x40e40800 , 0xdeaebeef , 0xdefbeef , 96 )
293
+ assertEQ (a , 0x24446801 , 0x40e40800 , 0xdeaebeef , 0xdefbeef )
294
+ remove (nil , 0x24446801 , 0x40e40800 , 0xdeaebeef , 0xdefbeef , 128 )
295
+ assertEQ (a , 0x24446801 , 0x40e40800 , 0xdeaebeef , 0xdefbeef )
296
+ remove (b , 0x24446801 , 0x40e40800 , 0xdeaebeef , 0xdefbeef , 128 )
297
+ assertEQ (a , 0x24446801 , 0x40e40800 , 0xdeaebeef , 0xdefbeef )
298
+ remove (a , 0x24446801 , 0x40e40800 , 0xdeaebeef , 0xdefbeef , 128 )
299
+ assertNEQ (a , 0x24446801 , 0x40e40800 , 0xdeaebeef , 0xdefbeef )
300
+ remove (b , 0x24446800 , 0xf0e40800 , 0xeeaebeef , 0 , 98 )
301
+ assertEQ (a , 0x24446800 , 0xf0e40800 , 0xeeaebeef , 0x10101010 )
302
+ remove (a , 0x24446800 , 0xf0e40800 , 0xeeaebeef , 0 , 98 )
303
+ assertNEQ (a , 0x24446800 , 0xf0e40800 , 0xeeaebeef , 0x10101010 )
247
304
}
0 commit comments