Skip to content

Commit fdd7edb

Browse files
committed
Test coverage
1 parent 3d9483c commit fdd7edb

File tree

4 files changed

+63
-23
lines changed

4 files changed

+63
-23
lines changed

go/pkg/pass1/check-identical-services.go

+7-8
Original file line numberDiff line numberDiff line change
@@ -85,18 +85,17 @@ func (c *spoc) checkIdenticalServices(sRules *serviceRules) {
8585
// Sort riList, because we use attributes of first element
8686
// to build hash key from.
8787
slices.SortFunc(riList, func(a, b *ruleInfo) int {
88-
if a.deny != b.deny {
89-
if a.deny {
88+
cmpBool1 := func(a bool) int {
89+
if a {
9090
return -1
9191
}
92-
// Uncoverable, deny rules have been put in front of list.
93-
//return 1
92+
return 1
93+
}
94+
if a.deny != b.deny {
95+
return cmpBool1(a.deny)
9496
}
9597
if a.objIsSrc != b.objIsSrc {
96-
if !a.objIsSrc {
97-
return -1
98-
}
99-
return 1
98+
return cmpBool1(!a.objIsSrc)
10099
}
101100
return slices.Compare(a.names, b.names)
102101
})

go/pkg/pass2/cisco.go

+13-15
Original file line numberDiff line numberDiff line change
@@ -343,26 +343,24 @@ func moveRulesEspAh(
343343
}
344344
return cmp.Compare(a.Bits(), b.Bits())
345345
}
346+
hasLog = true
346347
slices.SortStableFunc(rules, func(a, b *ciscoRule) int {
347-
if a.deny && b.deny {
348-
return 0
349-
}
350-
if a.deny {
351-
return -1
352-
}
353-
if b.deny {
348+
cmpBool := func(a, b bool) int {
349+
if a == b {
350+
return 0
351+
}
352+
if a {
353+
return -1
354+
}
354355
return 1
355356
}
357+
if a.deny || b.deny {
358+
return cmpBool(a.deny, b.deny)
359+
}
356360
sa := needSort(a)
357361
sb := needSort(b)
358-
if !sa && !sb {
359-
return 0
360-
}
361-
if !sa {
362-
return 1
363-
}
364-
if !sb {
365-
return -1
362+
if !sa || !sb {
363+
return cmpBool(!sb, !sa)
366364
}
367365
if cmp := strings.Compare(a.prt.protocol, b.prt.protocol); cmp != 0 {
368366
return cmp

go/testdata/identical-services.t

+21
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,27 @@ Warning: These services have identical rule definitions.
337337
- service:s2
338338
=OPTIONS=--check_identical_services=warn
339339

340+
############################################################
341+
=TITLE=Changed order of equal rules (3)
342+
=INPUT=
343+
[[topo]]
344+
service:s1 = {
345+
user = network:n2;
346+
deny src = host:h10; dst = user; prt = tcp 22;
347+
permit src = network:n1; dst = user; prt = tcp 22;
348+
}
349+
service:s2 = {
350+
user = interface:r1.n1;
351+
permit src = network:n1; dst = user; prt = tcp 22;
352+
deny src = host:h10; dst = user; prt = tcp 22;
353+
}
354+
=WARNING=
355+
Warning: These services have identical rule definitions.
356+
A single service should be created instead, with merged users.
357+
- service:s1
358+
- service:s2
359+
=OPTIONS=--check_identical_services=warn --check_duplicate_rules=0
360+
340361
############################################################
341362
=TITLE=Similar service, but changed src/dst
342363
=INPUT=

go/testdata/ipv6/identical-services_ipv6.t

+22
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,28 @@ Warning: These services have identical rule definitions.
353353
- service:s2
354354
=OPTIONS=--check_identical_services=warn
355355
356+
############################################################
357+
=TITLE=Changed order of equal rules (3)
358+
=PARAMS=--ipv6
359+
=INPUT=
360+
[[topo]]
361+
service:s1 = {
362+
user = network:n2;
363+
deny src = host:h10; dst = user; prt = tcp 22;
364+
permit src = network:n1; dst = user; prt = tcp 22;
365+
}
366+
service:s2 = {
367+
user = interface:r1.n1;
368+
permit src = network:n1; dst = user; prt = tcp 22;
369+
deny src = host:h10; dst = user; prt = tcp 22;
370+
}
371+
=WARNING=
372+
Warning: These services have identical rule definitions.
373+
A single service should be created instead, with merged users.
374+
- service:s1
375+
- service:s2
376+
=OPTIONS=--check_identical_services=warn --check_duplicate_rules=0
377+
356378
############################################################
357379
=TITLE=Similar service, but changed src/dst
358380
=PARAMS=--ipv6

0 commit comments

Comments
 (0)