11package pod
22
33import (
4+ "context"
45 "fmt"
56 "math/rand/v2"
67 "net"
78 "strconv"
89 "strings"
910
1011 corev1 "k8s.io/api/core/v1"
12+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1113 "k8s.io/apimachinery/pkg/util/intstr"
1214
1315 "github.com/onsi/ginkgo/v2"
@@ -185,9 +187,12 @@ func checkTProxyRules(f *framework.Framework, pod *corev1.Pod, probePort int32,
185187 ginkgo .GinkgoHelper ()
186188
187189 nodeName := pod .Spec .NodeName
188- isZeroIP := false
189- if len (pod .Status .PodIPs ) == 2 {
190- isZeroIP = true
190+ node , err := f .ClientSet .CoreV1 ().Nodes ().Get (context .Background (), nodeName , metav1.GetOptions {})
191+ framework .ExpectNoError (err )
192+
193+ nodeIPv4 , nodeIPv6 := util .GetNodeInternalIP (* node )
194+ if len (pod .Status .PodIPs ) == 2 && f .VersionPriorTo (1 , 13 ) {
195+ nodeIPv4 , nodeIPv6 = net .IPv4zero .String (), net .IPv6zero .String ()
191196 }
192197
193198 for _ , podIP := range pod .Status .PodIPs {
@@ -196,12 +201,8 @@ func checkTProxyRules(f *framework.Framework, pod *corev1.Pod, probePort int32,
196201 fmt .Sprintf (`-A OVN-OUTPUT -d %s/32 -p tcp -m tcp --dport %d -j MARK --set-xmark %s` , podIP .IP , probePort , tProxyOutputMarkMask ),
197202 }
198203 iptables .CheckIptablesRulesOnNode (f , nodeName , util .Mangle , util .OvnOutput , apiv1 .ProtocolIPv4 , expectedRules , exist )
199- hostIP := pod .Status .HostIP
200- if isZeroIP {
201- hostIP = net .IPv4zero .String ()
202- }
203204 expectedRules = []string {
204- fmt .Sprintf (`-A OVN-PREROUTING -d %s/32 -p tcp -m tcp --dport %d -j TPROXY --on-port %d --on-ip %s --tproxy-mark %s` , podIP .IP , probePort , util .TProxyListenPort , hostIP , tProxyPreRoutingMarkMask ),
205+ fmt .Sprintf (`-A OVN-PREROUTING -d %s/32 -p tcp -m tcp --dport %d -j TPROXY --on-port %d --on-ip %s --tproxy-mark %s` , podIP .IP , probePort , util .TProxyListenPort , nodeIPv4 , tProxyPreRoutingMarkMask ),
205206 }
206207 iptables .CheckIptablesRulesOnNode (f , nodeName , util .Mangle , util .OvnPrerouting , apiv1 .ProtocolIPv4 , expectedRules , exist )
207208 } else if util .CheckProtocol (podIP .IP ) == apiv1 .ProtocolIPv6 {
@@ -210,12 +211,8 @@ func checkTProxyRules(f *framework.Framework, pod *corev1.Pod, probePort int32,
210211 }
211212 iptables .CheckIptablesRulesOnNode (f , nodeName , util .Mangle , util .OvnOutput , apiv1 .ProtocolIPv6 , expectedRules , exist )
212213
213- hostIP := pod .Status .HostIP
214- if isZeroIP {
215- hostIP = "::"
216- }
217214 expectedRules = []string {
218- fmt .Sprintf (`-A OVN-PREROUTING -d %s/128 -p tcp -m tcp --dport %d -j TPROXY --on-port %d --on-ip %s --tproxy-mark %s` , podIP .IP , probePort , util .TProxyListenPort , hostIP , tProxyPreRoutingMarkMask ),
215+ fmt .Sprintf (`-A OVN-PREROUTING -d %s/128 -p tcp -m tcp --dport %d -j TPROXY --on-port %d --on-ip %s --tproxy-mark %s` , podIP .IP , probePort , util .TProxyListenPort , nodeIPv6 , tProxyPreRoutingMarkMask ),
219216 }
220217 iptables .CheckIptablesRulesOnNode (f , nodeName , util .Mangle , util .OvnPrerouting , apiv1 .ProtocolIPv6 , expectedRules , exist )
221218 }
0 commit comments