@@ -336,7 +336,7 @@ var _ = g.Describe("[sig-network][Feature:IPsec]", g.Ordered, func() {
336336 return nil
337337 }
338338
339- setupTestPods := func (config * testConfig , isHostNetwork bool ) error {
339+ setupTestPods := func (config * testConfig , isSrcPingPodInHostNetwork , isDstPingPodInHostNetwork bool ) error {
340340 tcpdumpImage , err := exutil .DetermineImageFromRelease (context .TODO (), oc , "network-tools" )
341341 o .Expect (err ).NotTo (o .HaveOccurred ())
342342 createSync := errgroup.Group {}
@@ -348,7 +348,7 @@ var _ = g.Describe("[sig-network][Feature:IPsec]", g.Ordered, func() {
348348 }
349349 srcPingPod := e2epod .CreateExecPodOrFail (context .TODO (), f .ClientSet , f .Namespace .Name , "ipsec-test-srcpod-" , func (p * corev1.Pod ) {
350350 p .Spec .NodeName = config .srcNodeConfig .nodeName
351- p .Spec .HostNetwork = isHostNetwork
351+ p .Spec .HostNetwork = isSrcPingPodInHostNetwork
352352 })
353353 config .srcNodeConfig .pingPod , err = f .ClientSet .CoreV1 ().Pods (f .Namespace .Name ).Get (context .TODO (), srcPingPod .Name , metav1.GetOptions {})
354354 return err
@@ -361,7 +361,7 @@ var _ = g.Describe("[sig-network][Feature:IPsec]", g.Ordered, func() {
361361 }
362362 dstPingPod := e2epod .CreateExecPodOrFail (context .TODO (), f .ClientSet , f .Namespace .Name , "ipsec-test-dstpod-" , func (p * corev1.Pod ) {
363363 p .Spec .NodeName = config .dstNodeConfig .nodeName
364- p .Spec .HostNetwork = isHostNetwork
364+ p .Spec .HostNetwork = isDstPingPodInHostNetwork
365365 })
366366 config .dstNodeConfig .pingPod , err = f .ClientSet .CoreV1 ().Pods (f .Namespace .Name ).Get (context .TODO (), dstPingPod .Name , metav1.GetOptions {})
367367 return err
@@ -388,7 +388,7 @@ var _ = g.Describe("[sig-network][Feature:IPsec]", g.Ordered, func() {
388388
389389 checkForGeneveOnlyPodTraffic := func (config * testConfig ) {
390390 g .GinkgoHelper ()
391- err := setupTestPods (config , false )
391+ err := setupTestPods (config , false , false )
392392 o .Expect (err ).NotTo (o .HaveOccurred ())
393393 defer func () {
394394 // Don't cleanup test pods in error scenario.
@@ -410,7 +410,7 @@ var _ = g.Describe("[sig-network][Feature:IPsec]", g.Ordered, func() {
410410
411411 checkForESPOnlyPodTraffic := func (config * testConfig ) {
412412 g .GinkgoHelper ()
413- err := setupTestPods (config , false )
413+ err := setupTestPods (config , false , false )
414414 o .Expect (err ).NotTo (o .HaveOccurred ())
415415 defer func () {
416416 // Don't cleanup test pods in error scenario.
@@ -430,7 +430,7 @@ var _ = g.Describe("[sig-network][Feature:IPsec]", g.Ordered, func() {
430430
431431 checkForNATTOnlyPodTraffic := func (config * testConfig ) {
432432 g .GinkgoHelper ()
433- err := setupTestPods (config , false )
433+ err := setupTestPods (config , false , false )
434434 o .Expect (err ).NotTo (o .HaveOccurred ())
435435 defer func () {
436436 // Don't cleanup test pods in error scenario.
@@ -461,7 +461,7 @@ var _ = g.Describe("[sig-network][Feature:IPsec]", g.Ordered, func() {
461461
462462 checkNodeTraffic := func (mode v1.IPsecMode ) {
463463 g .GinkgoHelper ()
464- err := setupTestPods (config , true )
464+ err := setupTestPods (config , true , true )
465465 o .Expect (err ).NotTo (o .HaveOccurred ())
466466 defer func () {
467467 // Don't cleanup test pods in error scenario.
@@ -483,6 +483,30 @@ var _ = g.Describe("[sig-network][Feature:IPsec]", g.Ordered, func() {
483483 }
484484 }
485485
486+ checkPodToNodeTraffic := func (mode v1.IPsecMode ) {
487+ g .GinkgoHelper ()
488+ err := setupTestPods (config , false , true )
489+ o .Expect (err ).NotTo (o .HaveOccurred ())
490+ defer func () {
491+ // Don't cleanup test pods in error scenario.
492+ if err != nil && ! framework .TestContext .DeleteNamespaceOnFailure {
493+ return
494+ }
495+ cleanupTestPods (config )
496+ }()
497+ if mode == v1 .IPsecModeExternal {
498+ err = pingAndCheckNodeTraffic (config .srcNodeConfig , config .dstNodeConfig , esp )
499+ o .Expect (err ).NotTo (o .HaveOccurred ())
500+ err = pingAndCheckNodeTraffic (config .srcNodeConfig , config .dstNodeConfig , icmp )
501+ o .Expect (err ).To (o .HaveOccurred ())
502+ err = nil
503+ return
504+ } else {
505+ err = pingAndCheckNodeTraffic (config .srcNodeConfig , config .dstNodeConfig , icmp )
506+ o .Expect (err ).NotTo (o .HaveOccurred ())
507+ }
508+ }
509+
486510 g .BeforeAll (func () {
487511 // Set up the config object with existing IPsecConfig, setup testing config on
488512 // the selected nodes.
@@ -617,8 +641,10 @@ var _ = g.Describe("[sig-network][Feature:IPsec]", g.Ordered, func() {
617641
618642 g .By ("validate traffic before changing IPsec configuration" )
619643 checkPodTraffic (config .ipsecCfg )
620- // N/S ipsec config is not in effect yet, so node traffic behaves as it were disabled
644+ // N/S ipsec config is not in effect yet, so node to node and pod to node traffic behave
645+ // as it were disabled
621646 checkNodeTraffic (v1 .IPsecModeDisabled )
647+ checkPodToNodeTraffic (v1 .IPsecModeDisabled )
622648
623649 // TODO: remove this block when https://issues.redhat.com/browse/RHEL-67307 is fixed.
624650 if config .ipsecCfg .mode == v1 .IPsecModeFull {
@@ -653,6 +679,7 @@ var _ = g.Describe("[sig-network][Feature:IPsec]", g.Ordered, func() {
653679 checkPodTraffic (& ipsecConfig {mode : v1 .IPsecModeFull ,
654680 encap : v1 .Encapsulation (v1 .EncapsulationAuto )})
655681 checkNodeTraffic (v1 .IPsecModeExternal )
682+ checkPodToNodeTraffic (v1 .IPsecModeExternal )
656683 })
657684 })
658685})
0 commit comments