Skip to content

Commit 52d9524

Browse files
SkalaNetworkszbb88888
authored andcommitted
fix(netpol): use parenthesis around ipblock expressions
Signed-off-by: SkalaNetworks <contact@skala.network> (cherry picked from commit eeafcfd)
1 parent 3f1185e commit 52d9524

File tree

2 files changed

+45
-23
lines changed

2 files changed

+45
-23
lines changed

pkg/ovs/util.go

Lines changed: 26 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,7 @@ func (m AndACLMatch) Match() (string, error) {
225225
klog.Error(err)
226226
return "", fmt.Errorf("generate match %s: %w", match, err)
227227
}
228+
228229
matches = append(matches, match)
229230
}
230231

@@ -256,8 +257,8 @@ func (m OrACLMatch) Match() (string, error) {
256257
return "", fmt.Errorf("generate match %s: %w", match, err)
257258
}
258259

259-
// has more then one rule
260-
if strings.Contains(match, "&&") {
260+
// has more than one rule
261+
if strings.Contains(match, "&&") || strings.Contains(match, "||") {
261262
match = "(" + match + ")"
262263
}
263264

@@ -272,27 +273,6 @@ func (m OrACLMatch) String() string {
272273
return match
273274
}
274275

275-
type groupACLMatch struct {
276-
match ACLMatch
277-
}
278-
279-
func NewGroupACLMatch(match ACLMatch) ACLMatch {
280-
return groupACLMatch{match: match}
281-
}
282-
283-
func (m groupACLMatch) Match() (string, error) {
284-
s, err := m.match.Match()
285-
if err != nil {
286-
return "", err
287-
}
288-
return "(" + s + ")", nil
289-
}
290-
291-
func (m groupACLMatch) String() string {
292-
match, _ := m.Match()
293-
return match
294-
}
295-
296276
type aclMatch struct {
297277
key string
298278
value string
@@ -340,6 +320,29 @@ func (m aclMatch) String() string {
340320
return rule
341321
}
342322

323+
type groupACLMatch struct {
324+
match ACLMatch
325+
}
326+
327+
func NewGroupACLMatch(match ACLMatch) ACLMatch {
328+
return groupACLMatch{
329+
match: match,
330+
}
331+
}
332+
333+
func (m groupACLMatch) Match() (string, error) {
334+
match, err := m.match.Match()
335+
if err != nil {
336+
return "", err
337+
}
338+
return "(" + match + ")", nil
339+
}
340+
341+
func (m groupACLMatch) String() string {
342+
match, _ := m.Match()
343+
return match
344+
}
345+
343346
type Limiter struct {
344347
limit int32
345348
current int32

pkg/ovs/util_test.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,25 @@ func Test_OrAclMatch_Match(t *testing.T) {
254254
})
255255
}
256256

257+
func Test_GroupAclMatch_Match(t *testing.T) {
258+
t.Parallel()
259+
260+
t.Run("generate grouped match", func(t *testing.T) {
261+
t.Parallel()
262+
match := NewGroupACLMatch(NewACLMatch("ip4.dst", "==", "10.0.0.0/8", ""))
263+
rule, err := match.Match()
264+
require.NoError(t, err)
265+
require.Equal(t, "(ip4.dst == 10.0.0.0/8)", rule)
266+
})
267+
268+
t.Run("error propagation", func(t *testing.T) {
269+
t.Parallel()
270+
match := NewGroupACLMatch(NewACLMatch("", "", "", ""))
271+
_, err := match.Match()
272+
require.Error(t, err)
273+
})
274+
}
275+
257276
func Test_Limiter(t *testing.T) {
258277
t.Parallel()
259278

0 commit comments

Comments
 (0)