Skip to content

Commit d928d9e

Browse files
committed
Add unit tests for pkg/ovs/openflow
Signed-off-by: Hongliang Liu <lhongliang@vmware.com>
1 parent e7486d5 commit d928d9e

8 files changed

Lines changed: 3845 additions & 38 deletions

File tree

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ go 1.19
44

55
require (
66
antrea.io/libOpenflow v0.8.1
7-
antrea.io/ofnet v0.6.2
7+
antrea.io/ofnet v0.6.3
88
github.com/ClickHouse/clickhouse-go v1.5.4
99
github.com/DATA-DOG/go-sqlmock v1.5.0
1010
github.com/Mellanox/sriovnet v1.1.0

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
antrea.io/libOpenflow v0.8.1 h1:uxkXvhlPRXAVw26LW6Pt2jCSEh8NR56vQW70YGvy7aU=
22
antrea.io/libOpenflow v0.8.1/go.mod h1:CzEJZxDNAupiGxeL5VOw92PsxfyvehEAvE3PiC6gr8o=
3-
antrea.io/ofnet v0.6.2 h1:CCW2lOVBtEgpbsIT+DatHcYCfQ5+MDTHSSlQrc2Qelc=
4-
antrea.io/ofnet v0.6.2/go.mod h1:/gjpTqhUpyn8uZnef+ytdCCAeY5oGG1jCr/szPUqVXU=
3+
antrea.io/ofnet v0.6.3 h1:nRd8+MV+X60OL6iOmJBMEMFGQExAEQVyhMh9VtouH5U=
4+
antrea.io/ofnet v0.6.3/go.mod h1:/gjpTqhUpyn8uZnef+ytdCCAeY5oGG1jCr/szPUqVXU=
55
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
66
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
77
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=

pkg/ovs/openflow/ofctrl_action_test.go

Lines changed: 1423 additions & 0 deletions
Large diffs are not rendered by default.

pkg/ovs/openflow/ofctrl_builder.go

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,8 @@ func (b *ofFlowBuilder) MatchXXReg(regID int, data []byte) FlowBuilder {
9898

9999
// matchRegRange adds match condition for matching data in the target register at specified range.
100100
func (b *ofFlowBuilder) matchRegRange(regID int, data uint32, rng *Range) FlowBuilder {
101-
s := fmt.Sprintf("reg%d[%d..%d]=0x%x", regID, rng[0], rng[1], data)
101+
mask := rng.ToNXRange().ToUint32Mask()
102+
s := fmt.Sprintf("reg%d=0x%x/0x%x", regID, (data<<rng.Offset())&mask, mask)
102103
b.matchers = append(b.matchers, s)
103104
reg := &ofctrl.NXRegister{
104105
ID: regID,
@@ -302,31 +303,37 @@ func ctLabelRange(high, low uint64, rng *Range, match *ofctrl.FlowMatch) {
302303
match.CtLabelLo = low
303304
match.CtLabelHiMask = 0xffff_ffff_ffff_ffff
304305
match.CtLabelLoMask = 0xffff_ffff_ffff_ffff
305-
if rng[0] == rng[1] {
306-
if rng[0] < 64 {
307-
match.CtLabelLoMask = 1 << rng[0]
308-
match.CtLabelHiMask = 0
309-
} else {
310-
match.CtLabelHiMask = 1 << (rng[0] - 64)
311-
match.CtLabelLoMask = 0
312-
}
313-
} else if rng[0] < 64 && rng[1] >= 64 {
314-
match.CtLabelLoMask <<= rng[0]
315-
match.CtLabelHiMask >>= 127 - rng[1]
316-
} else if rng[1] < 64 {
306+
if rng[1] < 64 {
317307
match.CtLabelLoMask &= 0xffff_ffff_ffff_ffff << rng[0]
318308
match.CtLabelLoMask &= 0xffff_ffff_ffff_ffff >> (63 - rng[1])
309+
match.CtLabelLo &= match.CtLabelLoMask
310+
match.CtLabelHi = 0
319311
match.CtLabelHiMask = 0
320312
} else if rng[0] >= 64 {
321313
match.CtLabelHiMask &= 0xffff_ffff_ffff_ffff << (rng[0] - 64)
322314
match.CtLabelHiMask &= 0xffff_ffff_ffff_ffff >> (127 - rng[1])
315+
match.CtLabelHi &= match.CtLabelHiMask
316+
match.CtLabelLo = 0
323317
match.CtLabelLoMask = 0
318+
} else {
319+
match.CtLabelLoMask <<= rng[0]
320+
match.CtLabelHiMask >>= 127 - rng[1]
321+
match.CtLabelLo &= match.CtLabelLoMask
322+
match.CtLabelHi &= match.CtLabelHiMask
324323
}
325324
}
326325

327326
func (b *ofFlowBuilder) MatchCTLabelField(high, low uint64, field *CtLabel) FlowBuilder {
328-
b.matchers = append(b.matchers, fmt.Sprintf("ct_label[%d..%d]=0x%x%x", field.rng[0], field.rng[1], high, low))
329327
ctLabelRange(high, low, field.GetRange(), &b.ofFlow.Match)
328+
var matchStr string
329+
if field.rng[1] < 64 {
330+
matchStr = fmt.Sprintf("ct_label=0x%x/0x%x", b.ofFlow.Match.CtLabelLo, b.ofFlow.Match.CtLabelLoMask)
331+
} else if field.rng[0] > 63 {
332+
matchStr = fmt.Sprintf("ct_label=0x%x%016x/0x%x%016x", b.ofFlow.Match.CtLabelHi, 0, b.ofFlow.Match.CtLabelHiMask, 0)
333+
} else {
334+
matchStr = fmt.Sprintf("ct_label=0x%x%016x/0x%x%016x", b.ofFlow.Match.CtLabelHi, b.ofFlow.Match.CtLabelLo, b.ofFlow.Match.CtLabelHiMask, b.ofFlow.Match.CtLabelLoMask)
335+
}
336+
b.matchers = append(b.matchers, matchStr)
330337
return b
331338
}
332339

0 commit comments

Comments
 (0)