@@ -352,7 +352,50 @@ func TestFlowMarshalText(t *testing.T) {
352
352
Output (4 ),
353
353
},
354
354
},
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` ,
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,hard_timeout=0,limit=0,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` ,
356
+ },
357
+ {
358
+ desc : "Flow with LearnedFlow in Learn action with hard_timeout and limit options" ,
359
+ f : & Flow {
360
+ Priority : 5000 ,
361
+ Protocol : "tcp" ,
362
+ InPort : 3 ,
363
+ Matches : []Match {
364
+ NetworkDestination ("169.254.169.254" ),
365
+ TransportDestinationPort (80 ),
366
+ },
367
+ Actions : []Action {
368
+ Learn (
369
+ & LearnedFlow {
370
+ DeleteLearned : true ,
371
+ FinHardTimeout : 1 ,
372
+ HardTimeout : 30 ,
373
+ Limit : 10 ,
374
+ Table : 0 ,
375
+ IdleTimeout : 60 ,
376
+ Priority : 5000 ,
377
+ InPort : 4 ,
378
+ Matches : []Match {
379
+ DataLinkType (0x800 ),
380
+ NetworkProtocol (6 ),
381
+ FieldMatch ("NXM_OF_IP_SRC[]" , "NXM_OF_IP_DST[]" ),
382
+ FieldMatch ("NXM_OF_TCP_SRC[]" , "NXM_OF_TCP_DST[]" ),
383
+ NetworkDestination ("1.2.3.4" ),
384
+ TransportDestinationPort (567 ),
385
+ },
386
+ Actions : []Action {
387
+ Load ("NXM_OF_ETH_SRC[]" , "NXM_OF_ETH_DST[]" ),
388
+ Load ("NXM_OF_IP_SRC[]" , "NXM_OF_IP_DST[]" ),
389
+ Load ("NXM_OF_TCP_SRC[]" , "NXM_OF_TCP_DST[]" ),
390
+ OutputField ("NXM_OF_IN_PORT[]" ),
391
+ },
392
+ }),
393
+ ModNetworkSource (net .IPv4 (1 , 2 , 3 , 4 )),
394
+ ModTransportSourcePort (567 ),
395
+ Output (4 ),
396
+ },
397
+ },
398
+ 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` ,
356
399
},
357
400
}
358
401
0 commit comments