@@ -352,7 +352,50 @@ func TestFlowMarshalText(t *testing.T) {
352352 Output (4 ),
353353 },
354354 },
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` ,
356399 },
357400 }
358401
0 commit comments