Skip to content

Commit 4ad1727

Browse files
committed
[bridgeconfig] make most members internal, ensure correct locking.
Split internal member into read-only and read-writable, make sure to use mutex in the second case. Rename some methods to remove unneeded "bridge" part of the name. Move GetGatewayIface logic to the bridgeconfig creation. Signed-off-by: Nadia Pinaeva <[email protected]>
1 parent 5a5e3b6 commit 4ad1727

File tree

10 files changed

+211
-159
lines changed

10 files changed

+211
-159
lines changed

go-controller/pkg/node/bridgeconfig/bridgeconfig.go

Lines changed: 129 additions & 84 deletions
Large diffs are not rendered by default.

go-controller/pkg/node/bridgeconfig/bridgeconfig_testutil.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,25 @@ func TestDefaultBridgeConfig() *BridgeConfiguration {
2020
OfPortPatch: "patch-breth0_ov",
2121
}
2222
return &BridgeConfiguration{
23-
NetConfig: map[string]*BridgeUDNConfiguration{
23+
netConfig: map[string]*BridgeUDNConfiguration{
2424
types.DefaultNetworkName: defaultNetConfig,
2525
},
2626
}
2727
}
2828

2929
func TestBridgeConfig(brName string) *BridgeConfiguration {
3030
return &BridgeConfiguration{
31-
BridgeName: brName,
32-
GwIface: brName,
31+
bridgeName: brName,
32+
gwIface: brName,
3333
}
3434
}
3535

36+
func (b *BridgeConfiguration) GetNetConfigLen() int {
37+
b.Mutex.Lock()
38+
defer b.Mutex.Unlock()
39+
return len(b.netConfig)
40+
}
41+
3642
func CheckUDNSvcIsolationOVSFlows(flows []string, netConfig *BridgeUDNConfiguration, netName string, svcCIDR *net.IPNet, expectedNFlows int) {
3743
By(fmt.Sprintf("Checking UDN %s service isolation flows for %s; expected %d flows",
3844
netName, svcCIDR.String(), expectedNFlows))

go-controller/pkg/node/bridgeconfig/bridgeflows.go

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,10 @@ func (b *BridgeConfiguration) flowsForDefaultBridge(extraIPs []net.IP) ([]string
3939
// CAUTION: when adding new flows where the in_port is ofPortPatch and the out_port is ofPortPhys, ensure
4040
// that dl_src is included in match criteria!
4141

42-
ofPortPhys := b.OfPortPhys
43-
bridgeMacAddress := b.MacAddress.String()
44-
ofPortHost := b.OfPortHost
45-
bridgeIPs := b.Ips
42+
ofPortPhys := b.ofPortPhys
43+
bridgeMacAddress := b.macAddress.String()
44+
ofPortHost := b.ofPortHost
45+
bridgeIPs := b.ips
4646

4747
var dftFlows []string
4848
// 14 bytes of overhead for ethernet header (does not include VLAN)
@@ -340,7 +340,7 @@ func (b *BridgeConfiguration) flowsForDefaultBridge(extraIPs []net.IP) ([]string
340340
nodetypes.DefaultOpenFlowCookie, match_vlan, bridgeMacAddress, strip_vlan, ofPortHost))
341341
}
342342

343-
defaultNetConfig := b.NetConfig[types.DefaultNetworkName]
343+
defaultNetConfig := b.netConfig[types.DefaultNetworkName]
344344

345345
// table 2, dispatch from Host -> OVN
346346
dftFlows = append(dftFlows,
@@ -497,10 +497,10 @@ func generateIPFragmentReassemblyFlow(ofPortPhys string) []string {
497497
func (b *BridgeConfiguration) commonFlows(hostSubnets []*net.IPNet) ([]string, error) {
498498
// CAUTION: when adding new flows where the in_port is ofPortPatch and the out_port is ofPortPhys, ensure
499499
// that dl_src is included in match criteria!
500-
ofPortPhys := b.OfPortPhys
501-
bridgeMacAddress := b.MacAddress.String()
502-
ofPortHost := b.OfPortHost
503-
bridgeIPs := b.Ips
500+
ofPortPhys := b.ofPortPhys
501+
bridgeMacAddress := b.macAddress.String()
502+
ofPortHost := b.ofPortHost
503+
bridgeIPs := b.ips
504504

505505
var dftFlows []string
506506

@@ -558,9 +558,9 @@ func (b *BridgeConfiguration) commonFlows(hostSubnets []*net.IPNet) ([]string, e
558558
// table 0, packets coming from egressIP pods only from user defined networks. If an egressIP is assigned to
559559
// this node, then all networks get a flow even if no pods on that network were selected for by this egressIP.
560560
if util.IsNetworkSegmentationSupportEnabled() && config.OVNKubernetesFeature.EnableInterconnect &&
561-
config.Gateway.Mode != config.GatewayModeDisabled && b.EipMarkIPs != nil {
561+
config.Gateway.Mode != config.GatewayModeDisabled && b.eipMarkIPs != nil {
562562
if netConfig.MasqCTMark != nodetypes.CtMarkOVN {
563-
for mark, eip := range b.EipMarkIPs.GetIPv4() {
563+
for mark, eip := range b.eipMarkIPs.GetIPv4() {
564564
dftFlows = append(dftFlows,
565565
fmt.Sprintf("cookie=%s, priority=105, in_port=%s, dl_src=%s, ip, pkt_mark=%d, "+
566566
"actions=ct(commit, zone=%d, nat(src=%s), exec(set_field:%s->ct_mark)), output:%s",
@@ -657,9 +657,9 @@ func (b *BridgeConfiguration) commonFlows(hostSubnets []*net.IPNet) ([]string, e
657657
// table 0, packets coming from egressIP pods only from user defined networks. If an egressIP is assigned to
658658
// this node, then all networks get a flow even if no pods on that network were selected for by this egressIP.
659659
if util.IsNetworkSegmentationSupportEnabled() && config.OVNKubernetesFeature.EnableInterconnect &&
660-
config.Gateway.Mode != config.GatewayModeDisabled && b.EipMarkIPs != nil {
660+
config.Gateway.Mode != config.GatewayModeDisabled && b.eipMarkIPs != nil {
661661
if netConfig.MasqCTMark != nodetypes.CtMarkOVN {
662-
for mark, eip := range b.EipMarkIPs.GetIPv6() {
662+
for mark, eip := range b.eipMarkIPs.GetIPv6() {
663663
dftFlows = append(dftFlows,
664664
fmt.Sprintf("cookie=%s, priority=105, in_port=%s, dl_src=%s, ipv6, pkt_mark=%d, "+
665665
"actions=ct(commit, zone=%d, nat(src=%s), exec(set_field:%s->ct_mark)), output:%s",
@@ -736,7 +736,7 @@ func (b *BridgeConfiguration) commonFlows(hostSubnets []*net.IPNet) ([]string, e
736736
// Due to the fact that ovn-controllers on different nodes apply the changes independently,
737737
// there is a chance that the pod traffic will reach the egress node before it configures the SNAT flows.
738738
// Drop pod traffic that is not SNATed, excluding local pods(required for ICNIv2)
739-
defaultNetConfig := b.NetConfig[types.DefaultNetworkName]
739+
defaultNetConfig := b.netConfig[types.DefaultNetworkName]
740740
if config.OVNKubernetesFeature.EnableEgressIP {
741741
for _, clusterEntry := range config.Default.ClusterSubnets {
742742
cidr := clusterEntry.CIDR

go-controller/pkg/node/gateway.go

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,7 @@ func gatewayInitInternal(nodeName, gwIntf, egressGatewayIntf string, gwNextHops
382382
"IP fragmentation or large TCP/UDP payloads may not be forwarded correctly.")
383383
enableGatewayMTU = false
384384
} else {
385-
chkPktLengthSupported, err := util.DetectCheckPktLengthSupport(gatewayBridge.BridgeName)
385+
chkPktLengthSupported, err := util.DetectCheckPktLengthSupport(gatewayBridge.GetBridgeName())
386386
if err != nil {
387387
return nil, nil, err
388388
}
@@ -416,9 +416,9 @@ func gatewayInitInternal(nodeName, gwIntf, egressGatewayIntf string, gwNextHops
416416
}
417417

418418
if config.Default.EnableUDPAggregation {
419-
err = setupUDPAggregationUplink(gatewayBridge.UplinkName)
419+
err = setupUDPAggregationUplink(gatewayBridge.GetUplinkName())
420420
if err == nil && egressGWBridge != nil {
421-
err = setupUDPAggregationUplink(egressGWBridge.UplinkName)
421+
err = setupUDPAggregationUplink(egressGWBridge.GetUplinkName())
422422
}
423423
if err != nil {
424424
klog.Warningf("Could not enable UDP packet aggregation on uplink interface (aggregation will be disabled): %v", err)
@@ -427,25 +427,25 @@ func gatewayInitInternal(nodeName, gwIntf, egressGatewayIntf string, gwNextHops
427427
}
428428

429429
// Set static FDB entry for LOCAL port
430-
if err := util.SetStaticFDBEntry(gatewayBridge.bridgeName, gatewayBridge.bridgeName, gatewayBridge.macAddress); err != nil {
430+
if err := util.SetStaticFDBEntry(gatewayBridge.GetBridgeName(), gatewayBridge.GetBridgeName(), gatewayBridge.GetMAC()); err != nil {
431431
return nil, nil, err
432432
}
433433

434434
l3GwConfig := util.L3GatewayConfig{
435435
Mode: config.Gateway.Mode,
436436
ChassisID: chassisID,
437-
BridgeID: gatewayBridge.BridgeName,
438-
InterfaceID: gatewayBridge.InterfaceID,
439-
MACAddress: gatewayBridge.MacAddress,
440-
IPAddresses: gatewayBridge.Ips,
437+
BridgeID: gatewayBridge.GetBridgeName(),
438+
InterfaceID: gatewayBridge.GetInterfaceID(),
439+
MACAddress: gatewayBridge.GetMAC(),
440+
IPAddresses: gatewayBridge.GetIPs(),
441441
NextHops: gwNextHops,
442442
NodePortEnable: config.Gateway.NodeportEnable,
443443
VLANID: &config.Gateway.VLANID,
444444
}
445445
if egressGWBridge != nil {
446-
l3GwConfig.EgressGWInterfaceID = egressGWBridge.InterfaceID
447-
l3GwConfig.EgressGWMACAddress = egressGWBridge.MacAddress
448-
l3GwConfig.EgressGWIPAddresses = egressGWBridge.Ips
446+
l3GwConfig.EgressGWInterfaceID = egressGWBridge.GetInterfaceID()
447+
l3GwConfig.EgressGWMACAddress = egressGWBridge.GetMAC()
448+
l3GwConfig.EgressGWIPAddresses = egressGWBridge.GetIPs()
449449
}
450450

451451
err = util.SetL3GatewayConfig(nodeAnnotator, &l3GwConfig)
@@ -467,11 +467,11 @@ func (g *gateway) SetDefaultGatewayBridgeMAC(macAddr net.HardwareAddr) {
467467
}
468468

469469
func (g *gateway) SetDefaultPodNetworkAdvertised(isPodNetworkAdvertised bool) {
470-
g.openflowManager.defaultBridge.NetConfig[types.DefaultNetworkName].Advertised.Store(isPodNetworkAdvertised)
470+
g.openflowManager.defaultBridge.GetNetworkConfig(types.DefaultNetworkName).Advertised.Store(isPodNetworkAdvertised)
471471
}
472472

473473
func (g *gateway) GetDefaultPodNetworkAdvertised() bool {
474-
return g.openflowManager.defaultBridge.NetConfig[types.DefaultNetworkName].Advertised.Load()
474+
return g.openflowManager.defaultBridge.GetNetworkConfig(types.DefaultNetworkName).Advertised.Load()
475475
}
476476

477477
// Reconcile handles triggering updates to different components of a gateway, like OFM, Services

go-controller/pkg/node/gateway_localnet_linux_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ func initFakeNodePortWatcher(iptV4, iptV6 util.IPTablesHelper) *nodePortWatcher
5858
gwMACParsed, _ := net.ParseMAC(gwMAC)
5959

6060
defaultBridge := bridgeconfig.TestDefaultBridgeConfig()
61-
defaultBridge.MacAddress = gwMACParsed
61+
defaultBridge.SetMAC(gwMACParsed)
6262

6363
fNPW := nodePortWatcher{
6464
ofportPhys: "eth0",

go-controller/pkg/node/gateway_shared_intf.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1474,8 +1474,8 @@ func newGateway(
14741474
}
14751475
}
14761476
if util.IsNetworkSegmentationSupportEnabled() && config.OVNKubernetesFeature.EnableInterconnect && config.Gateway.Mode != config.GatewayModeDisabled {
1477-
gw.bridgeEIPAddrManager = egressip.NewBridgeEIPAddrManager(nodeName, gwBridge.BridgeName, linkManager, kube, watchFactory.EgressIPInformer(), watchFactory.NodeCoreInformer())
1478-
gwBridge.EipMarkIPs = gw.bridgeEIPAddrManager.GetCache()
1477+
gw.bridgeEIPAddrManager = egressip.NewBridgeEIPAddrManager(nodeName, gwBridge.GetBridgeName(), linkManager, kube, watchFactory.EgressIPInformer(), watchFactory.NodeCoreInformer())
1478+
gwBridge.SetEIPMarkIPs(gw.bridgeEIPAddrManager.GetCache())
14791479
}
14801480
gw.nodeIPManager = newAddressManager(nodeName, kube, mgmtPort, watchFactory, gwBridge)
14811481

@@ -1559,10 +1559,10 @@ func newNodePortWatcher(
15591559

15601560
// Get ofport of physical interface
15611561
ofportPhys, stderr, err := util.GetOVSOfPort("--if-exists", "get",
1562-
"interface", gwBridge.UplinkName, "ofport")
1562+
"interface", gwBridge.GetUplinkName(), "ofport")
15631563
if err != nil {
15641564
return nil, fmt.Errorf("failed to get ofport of %s, stderr: %q, error: %v",
1565-
gwBridge.UplinkName, stderr, err)
1565+
gwBridge.GetUplinkName(), stderr, err)
15661566
}
15671567

15681568
// In the shared gateway mode, the NodePort service is handled by the OpenFlow flows configured
@@ -1615,7 +1615,7 @@ func newNodePortWatcher(
16151615
}
16161616

16171617
// Get Physical IPs of Node, Can be IPV4 IPV6 or both
1618-
gatewayIPv4, gatewayIPv6 := getGatewayFamilyAddrs(gwBridge.Ips)
1618+
gatewayIPv4, gatewayIPv6 := getGatewayFamilyAddrs(gwBridge.GetIPs())
16191619

16201620
npw := &nodePortWatcher{
16211621
dpuMode: dpuMode,

go-controller/pkg/node/gateway_udn.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -599,7 +599,7 @@ func (udng *UserDefinedNetworkGateway) getDefaultRoute(isNetworkAdvertised bool)
599599

600600
var retVal []netlink.Route
601601
var defaultAnyCIDR *net.IPNet
602-
for _, nextHop := range udng.gateway.openflowManager.defaultBridge.NextHops {
602+
for _, nextHop := range udng.gateway.openflowManager.defaultBridge.GetNextHops() {
603603
isV6 := utilnet.IsIPv6(nextHop)
604604
_, defaultAnyCIDR, _ = net.ParseCIDR("0.0.0.0/0")
605605
if isV6 {
@@ -791,7 +791,7 @@ func (udng *UserDefinedNetworkGateway) doReconcile() error {
791791

792792
// update bridge configuration
793793
isNetworkAdvertised := util.IsPodNetworkAdvertisedAtNode(udng.NetInfo, udng.node.Name)
794-
netConfig := udng.openflowManager.defaultBridge.GetNetworkBridgeConfig(udng.GetNetworkName())
794+
netConfig := udng.openflowManager.defaultBridge.GetNetworkConfig(udng.GetNetworkName())
795795
if netConfig == nil {
796796
return fmt.Errorf("missing bridge configuration for network %s", udng.GetNetworkName())
797797
}

go-controller/pkg/node/gateway_udn_test.go

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -667,16 +667,16 @@ var _ = Describe("UserDefinedNetworkGateway", func() {
667667
}
668668
}
669669
Expect(udnFlows).To(Equal(0))
670-
Expect(udnGateway.openflowManager.defaultBridge.NetConfig).To(HaveLen(1)) // only default network
670+
Expect(udnGateway.openflowManager.defaultBridge.GetNetConfigLen()).To(Equal(1)) // only default network
671671

672672
Expect(udnGateway.AddNetwork()).To(Succeed())
673673
flowMap = udnGateway.gateway.openflowManager.flowCache
674-
Expect(flowMap["DEFAULT"]).To(HaveLen(64)) // 18 UDN Flows are added by default
675-
Expect(udnGateway.openflowManager.defaultBridge.NetConfig).To(HaveLen(2)) // default network + UDN network
676-
defaultUdnConfig := udnGateway.openflowManager.defaultBridge.NetConfig["default"]
677-
bridgeUdnConfig := udnGateway.openflowManager.defaultBridge.NetConfig["bluenet"]
678-
bridgeMAC := udnGateway.openflowManager.defaultBridge.MacAddress.String()
679-
ofPortHost := udnGateway.openflowManager.defaultBridge.OfPortHost
674+
Expect(flowMap["DEFAULT"]).To(HaveLen(64)) // 18 UDN Flows are added by default
675+
Expect(udnGateway.openflowManager.defaultBridge.GetNetConfigLen()).To(Equal(2)) // default network + UDN network
676+
defaultUdnConfig := udnGateway.openflowManager.defaultBridge.GetNetworkConfig("default")
677+
bridgeUdnConfig := udnGateway.openflowManager.defaultBridge.GetNetworkConfig("bluenet")
678+
bridgeMAC := udnGateway.openflowManager.defaultBridge.GetMAC().String()
679+
ofPortHost := udnGateway.openflowManager.defaultBridge.GetOfPortHost()
680680
for _, flows := range flowMap {
681681
for _, flow := range flows {
682682
if strings.Contains(flow, fmt.Sprintf("0x%x", udnGateway.masqCTMark)) {
@@ -707,8 +707,8 @@ var _ = Describe("UserDefinedNetworkGateway", func() {
707707
kubeMock.On("UpdateNodeStatus", cnode).Return(nil) // check if network key gets deleted from annotation
708708
Expect(udnGateway.DelNetwork()).To(Succeed())
709709
flowMap = udnGateway.gateway.openflowManager.flowCache
710-
Expect(flowMap["DEFAULT"]).To(HaveLen(46)) // only default network flows are present
711-
Expect(udnGateway.openflowManager.defaultBridge.NetConfig).To(HaveLen(1)) // default network only
710+
Expect(flowMap["DEFAULT"]).To(HaveLen(46)) // only default network flows are present
711+
Expect(udnGateway.openflowManager.defaultBridge.GetNetConfigLen()).To(Equal(1)) // default network only
712712
udnFlows = 0
713713
for _, flows := range flowMap {
714714
for _, flow := range flows {
@@ -898,16 +898,16 @@ var _ = Describe("UserDefinedNetworkGateway", func() {
898898
}
899899
}
900900
Expect(udnFlows).To(Equal(0))
901-
Expect(udnGateway.openflowManager.defaultBridge.NetConfig).To(HaveLen(1)) // only default network
901+
Expect(udnGateway.openflowManager.defaultBridge.GetNetConfigLen()).To(Equal(1)) // only default network
902902

903903
Expect(udnGateway.AddNetwork()).To(Succeed())
904904
flowMap = udnGateway.gateway.openflowManager.flowCache
905-
Expect(flowMap["DEFAULT"]).To(HaveLen(64)) // 18 UDN Flows are added by default
906-
Expect(udnGateway.openflowManager.defaultBridge.NetConfig).To(HaveLen(2)) // default network + UDN network
907-
defaultUdnConfig := udnGateway.openflowManager.defaultBridge.NetConfig["default"]
908-
bridgeUdnConfig := udnGateway.openflowManager.defaultBridge.NetConfig["bluenet"]
909-
bridgeMAC := udnGateway.openflowManager.defaultBridge.MacAddress.String()
910-
ofPortHost := udnGateway.openflowManager.defaultBridge.OfPortHost
905+
Expect(flowMap["DEFAULT"]).To(HaveLen(64)) // 18 UDN Flows are added by default
906+
Expect(udnGateway.openflowManager.defaultBridge.GetNetConfigLen()).To(Equal(2)) // default network + UDN network
907+
defaultUdnConfig := udnGateway.openflowManager.defaultBridge.GetNetworkConfig("default")
908+
bridgeUdnConfig := udnGateway.openflowManager.defaultBridge.GetNetworkConfig("bluenet")
909+
bridgeMAC := udnGateway.openflowManager.defaultBridge.GetMAC().String()
910+
ofPortHost := udnGateway.openflowManager.defaultBridge.GetOfPortHost()
911911
for _, flows := range flowMap {
912912
for _, flow := range flows {
913913
if strings.Contains(flow, fmt.Sprintf("0x%x", udnGateway.masqCTMark)) {
@@ -938,8 +938,8 @@ var _ = Describe("UserDefinedNetworkGateway", func() {
938938
kubeMock.On("UpdateNodeStatus", cnode).Return(nil) // check if network key gets deleted from annotation
939939
Expect(udnGateway.DelNetwork()).To(Succeed())
940940
flowMap = udnGateway.gateway.openflowManager.flowCache
941-
Expect(flowMap["DEFAULT"]).To(HaveLen(46)) // only default network flows are present
942-
Expect(udnGateway.openflowManager.defaultBridge.NetConfig).To(HaveLen(1)) // default network only
941+
Expect(flowMap["DEFAULT"]).To(HaveLen(46)) // only default network flows are present
942+
Expect(udnGateway.openflowManager.defaultBridge.GetNetConfigLen()).To(Equal(1)) // default network only
943943
udnFlows = 0
944944
for _, flows := range flowMap {
945945
for _, flow := range flows {
@@ -1139,16 +1139,16 @@ var _ = Describe("UserDefinedNetworkGateway", func() {
11391139
}
11401140
}
11411141
Expect(udnFlows).To(Equal(0))
1142-
Expect(udnGateway.openflowManager.defaultBridge.NetConfig).To(HaveLen(1)) // only default network
1142+
Expect(udnGateway.openflowManager.defaultBridge.GetNetConfigLen()).To(Equal(1)) // only default network
11431143

11441144
Expect(udnGateway.AddNetwork()).To(Succeed())
11451145
flowMap = udnGateway.gateway.openflowManager.flowCache
1146-
Expect(flowMap["DEFAULT"]).To(HaveLen(69)) // 18 UDN Flows and 5 advertisedUDN flows are added by default
1147-
Expect(udnGateway.openflowManager.defaultBridge.NetConfig).To(HaveLen(2)) // default network + UDN network
1148-
defaultUdnConfig := udnGateway.openflowManager.defaultBridge.NetConfig["default"]
1149-
bridgeUdnConfig := udnGateway.openflowManager.defaultBridge.NetConfig["bluenet"]
1150-
bridgeMAC := udnGateway.openflowManager.defaultBridge.MacAddress.String()
1151-
ofPortHost := udnGateway.openflowManager.defaultBridge.OfPortHost
1146+
Expect(flowMap["DEFAULT"]).To(HaveLen(69)) // 18 UDN Flows and 5 advertisedUDN flows are added by default
1147+
Expect(udnGateway.openflowManager.defaultBridge.GetNetConfigLen()).To(Equal(2)) // default network + UDN network
1148+
defaultUdnConfig := udnGateway.openflowManager.defaultBridge.GetNetworkConfig("default")
1149+
bridgeUdnConfig := udnGateway.openflowManager.defaultBridge.GetNetworkConfig("bluenet")
1150+
bridgeMAC := udnGateway.openflowManager.defaultBridge.GetMAC().String()
1151+
ofPortHost := udnGateway.openflowManager.defaultBridge.GetOfPortHost()
11521152
for _, flows := range flowMap {
11531153
for _, flow := range flows {
11541154
if strings.Contains(flow, fmt.Sprintf("0x%x", udnGateway.masqCTMark)) {
@@ -1179,8 +1179,8 @@ var _ = Describe("UserDefinedNetworkGateway", func() {
11791179
kubeMock.On("UpdateNodeStatus", cnode).Return(nil) // check if network key gets deleted from annotation
11801180
Expect(udnGateway.DelNetwork()).To(Succeed())
11811181
flowMap = udnGateway.gateway.openflowManager.flowCache
1182-
Expect(flowMap["DEFAULT"]).To(HaveLen(46)) // only default network flows are present
1183-
Expect(udnGateway.openflowManager.defaultBridge.NetConfig).To(HaveLen(1)) // default network only
1182+
Expect(flowMap["DEFAULT"]).To(HaveLen(46)) // only default network flows are present
1183+
Expect(udnGateway.openflowManager.defaultBridge.GetNetConfigLen()).To(Equal(1)) // default network only
11841184
udnFlows = 0
11851185
for _, flows := range flowMap {
11861186
for _, flow := range flows {
@@ -1380,7 +1380,7 @@ var _ = Describe("UserDefinedNetworkGateway", func() {
13801380
err = testNS.Do(func(ns.NetNS) error {
13811381
defer GinkgoRecover()
13821382
ofm := getDummyOpenflowManager()
1383-
ofm.defaultBridge.NextHops = ovntest.MustParseIPs(config.Gateway.NextHop)
1383+
ofm.defaultBridge.SetNextHops(ovntest.MustParseIPs(config.Gateway.NextHop))
13841384
udnGateway, err := NewUserDefinedNetworkGateway(mutableNetInfo, node, nil, nil, vrf, nil, &gateway{openflowManager: ofm})
13851385
Expect(err).NotTo(HaveOccurred())
13861386
mplink, err := netlink.LinkByName(mgtPort)

go-controller/pkg/node/node_ip_handler_linux.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,8 @@ func (c *addressManager) isValidNodeIP(addr net.IP, linkIndex int) bool {
438438
if util.IsNetworkSegmentationSupportEnabled() && config.OVNKubernetesFeature.EnableInterconnect && config.Gateway.Mode != config.GatewayModeDisabled {
439439
// Two methods to lookup EIPs assigned to the gateway bridge. Fast path from a shared cache or slow path from node annotations.
440440
// At startup, gateway bridge cache gets sync
441-
if c.gatewayBridge.EipMarkIPs != nil && c.gatewayBridge.EipMarkIPs.HasSyncdOnce() && c.gatewayBridge.EipMarkIPs.IsIPPresent(addr) {
441+
eipMarkIPs := c.gatewayBridge.GetEIPMarkIPs()
442+
if eipMarkIPs != nil && eipMarkIPs.HasSyncdOnce() && eipMarkIPs.IsIPPresent(addr) {
442443
return false
443444
} else {
444445
if eipAddresses, err := c.getPrimaryHostEgressIPs(); err != nil {

0 commit comments

Comments
 (0)