Skip to content

Commit f45fc10

Browse files
author
Nicolas Bouliane
committed
add hard_timeout and limit options to the learn action
1 parent 953ccd8 commit f45fc10

File tree

3 files changed

+18
-3
lines changed

3 files changed

+18
-3
lines changed

ovs/action_test.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -679,10 +679,12 @@ func TestLearn(t *testing.T) {
679679
a: Learn(&LearnedFlow{
680680
DeleteLearned: true,
681681
FinHardTimeout: 10,
682+
HardTimeout: 30,
683+
Limit: 10,
682684
Matches: []Match{DataLinkType(0x800)},
683685
Actions: []Action{OutputField("in_port"), Load("2", "tp_dst")},
684686
}),
685-
action: `learn(priority=0,dl_type=0x0800,table=0,idle_timeout=0,fin_hard_timeout=10,delete_learned,output:in_port,load:2->tp_dst)`,
687+
action: `learn(priority=0,dl_type=0x0800,table=0,idle_timeout=0,fin_hard_timeout=10,hard_timeout=30,limit=10,delete_learned,output:in_port,load:2->tp_dst)`,
686688
},
687689
{
688690
desc: "prohibited learned action, mod_tp_dst",
@@ -806,10 +808,12 @@ func TestActionGoString(t *testing.T) {
806808
a: Learn(&LearnedFlow{
807809
DeleteLearned: true,
808810
FinHardTimeout: 10,
811+
HardTimeout: 30,
812+
Limit: 10,
809813
Matches: []Match{DataLinkType(0x800)},
810814
Actions: []Action{OutputField("in_port")},
811815
}),
812-
s: `ovs.Learn(&ovs.LearnedFlow{Priority:0, InPort:0, Matches:[]ovs.Match{ovs.DataLinkType(0x0800)}, Table:0, IdleTimeout:0, Cookie:0x0, Actions:[]ovs.Action{ovs.OutputField("in_port")}, DeleteLearned:true, FinHardTimeout:10})`,
816+
s: `ovs.Learn(&ovs.LearnedFlow{Priority:0, InPort:0, Matches:[]ovs.Match{ovs.DataLinkType(0x0800)}, Table:0, IdleTimeout:0, Cookie:0x0, Actions:[]ovs.Action{ovs.OutputField("in_port")}, DeleteLearned:true, FinHardTimeout:10, HardTimeout:30, Limit:10})`,
813817
},
814818
}
815819

ovs/flow.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ type LearnedFlow struct {
7979

8080
DeleteLearned bool
8181
FinHardTimeout int
82+
HardTimeout int
83+
Limit int
8284
}
8385

8486
var _ error = &FlowError{}
@@ -123,6 +125,8 @@ const (
123125
// Variables used in LearnedFlows only.
124126
deleteLearned = "delete_learned"
125127
finHardTimeout = "fin_hard_timeout"
128+
hardTimeout = "hard_timeout"
129+
limit = "limit"
126130

127131
portLOCAL = "LOCAL"
128132
)
@@ -262,6 +266,11 @@ func (f *LearnedFlow) MarshalText() ([]byte, error) {
262266
b = append(b, ","+finHardTimeout+"="...)
263267
b = strconv.AppendInt(b, int64(f.FinHardTimeout), 10)
264268

269+
b = append(b, ","+hardTimeout+"="...)
270+
b = strconv.AppendInt(b, int64(f.HardTimeout), 10)
271+
272+
b = append(b, ","+limit+"="...)
273+
b = strconv.AppendInt(b, int64(f.Limit), 10)
265274
if f.DeleteLearned {
266275
b = append(b, ","+deleteLearned...)
267276
}

ovs/flow_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,8 @@ func TestFlowMarshalText(t *testing.T) {
328328
&LearnedFlow{
329329
DeleteLearned: true,
330330
FinHardTimeout: 1,
331+
HardTimeout: 30,
332+
Limit: 10,
331333
Table: 0,
332334
IdleTimeout: 60,
333335
Priority: 5000,
@@ -352,7 +354,7 @@ func TestFlowMarshalText(t *testing.T) {
352354
Output(4),
353355
},
354356
},
355-
s: `priority=5000,tcp,in_port=3,nw_dst=169.254.169.254,tp_dst=80,table=0,idle_timeout=0,actions=learn(priority=5000,in_port=4,dl_type=0x0800,nw_proto=6,NXM_OF_IP_SRC[]=NXM_OF_IP_DST[],NXM_OF_TCP_SRC[]=NXM_OF_TCP_DST[],nw_dst=1.2.3.4,tp_dst=567,table=0,idle_timeout=60,fin_hard_timeout=1,delete_learned,load:NXM_OF_ETH_SRC[]->NXM_OF_ETH_DST[],load:NXM_OF_IP_SRC[]->NXM_OF_IP_DST[],load:NXM_OF_TCP_SRC[]->NXM_OF_TCP_DST[],output:NXM_OF_IN_PORT[]),mod_nw_src:1.2.3.4,mod_tp_src:567,output:4`,
357+
s: `priority=5000,tcp,in_port=3,nw_dst=169.254.169.254,tp_dst=80,table=0,idle_timeout=0,actions=learn(priority=5000,in_port=4,dl_type=0x0800,nw_proto=6,NXM_OF_IP_SRC[]=NXM_OF_IP_DST[],NXM_OF_TCP_SRC[]=NXM_OF_TCP_DST[],nw_dst=1.2.3.4,tp_dst=567,table=0,idle_timeout=60,fin_hard_timeout=1,hard_timeout=30,limit=10,delete_learned,load:NXM_OF_ETH_SRC[]->NXM_OF_ETH_DST[],load:NXM_OF_IP_SRC[]->NXM_OF_IP_DST[],load:NXM_OF_TCP_SRC[]->NXM_OF_TCP_DST[],output:NXM_OF_IN_PORT[]),mod_nw_src:1.2.3.4,mod_tp_src:567,output:4`,
356358
},
357359
}
358360

0 commit comments

Comments
 (0)