Skip to content

Commit 1b1f713

Browse files
arghosh93jcaamano
authored andcommitted
Remove default route if UDN network is advertised on its own VRF
Add or remove default route from a vrf device based on the network is advertised on its own network or default network. Default route from a VRF corresponding to a UDN does not get removed if the network is advertised on default VRF. default via 172.18.0.1 dev breth0 mtu 1400 Signed-off-by: Arnab Ghosh <[email protected]>
1 parent 59656d8 commit 1b1f713

File tree

5 files changed

+524
-142
lines changed

5 files changed

+524
-142
lines changed

go-controller/pkg/node/gateway.go

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -359,13 +359,13 @@ func setupUDPAggregationUplink(ifname string) error {
359359
func gatewayInitInternal(nodeName, gwIntf, egressGatewayIntf string, gwNextHops []net.IP, nodeSubnets, gwIPs []*net.IPNet,
360360
advertised bool, nodeAnnotator kube.Annotator) (
361361
*bridgeConfiguration, *bridgeConfiguration, error) {
362-
gatewayBridge, err := bridgeForInterface(gwIntf, nodeName, types.PhysicalNetworkName, nodeSubnets, gwIPs, advertised)
362+
gatewayBridge, err := bridgeForInterface(gwIntf, nodeName, types.PhysicalNetworkName, nodeSubnets, gwIPs, gwNextHops, advertised)
363363
if err != nil {
364364
return nil, nil, fmt.Errorf("bridge for interface failed for %s: %w", gwIntf, err)
365365
}
366366
var egressGWBridge *bridgeConfiguration
367367
if egressGatewayIntf != "" {
368-
egressGWBridge, err = bridgeForInterface(egressGatewayIntf, nodeName, types.PhysicalNetworkExGwName, nodeSubnets, nil, false)
368+
egressGWBridge, err = bridgeForInterface(egressGatewayIntf, nodeName, types.PhysicalNetworkExGwName, nodeSubnets, nil, nil, false)
369369
if err != nil {
370370
return nil, nil, fmt.Errorf("bridge for interface failed for %s: %w", egressGatewayIntf, err)
371371
}
@@ -550,6 +550,7 @@ type bridgeConfiguration struct {
550550
ofPortHost string
551551
netConfig map[string]*bridgeUDNConfiguration
552552
eipMarkIPs *markIPsCache
553+
nextHops []net.IP
553554
}
554555

555556
func (b *bridgeConfiguration) getGatewayIface() string {
@@ -590,7 +591,10 @@ func (b *bridgeConfiguration) updateInterfaceIPAddresses(node *corev1.Node) ([]*
590591
return ifAddrs, nil
591592
}
592593

593-
func bridgeForInterface(intfName, nodeName, physicalNetworkName string, nodeSubnets, gwIPs []*net.IPNet,
594+
func bridgeForInterface(intfName, nodeName,
595+
physicalNetworkName string,
596+
nodeSubnets, gwIPs []*net.IPNet,
597+
gwNextHops []net.IP,
594598
advertised bool) (*bridgeConfiguration, error) {
595599
var intfRep string
596600
var err error
@@ -609,6 +613,9 @@ func bridgeForInterface(intfName, nodeName, physicalNetworkName string, nodeSubn
609613
},
610614
eipMarkIPs: newMarkIPsCache(),
611615
}
616+
if len(gwNextHops) > 0 {
617+
res.nextHops = gwNextHops
618+
}
612619
res.netConfig[types.DefaultNetworkName].advertised.Store(advertised)
613620

614621
if config.Gateway.GatewayAcceleratedInterface != "" {

0 commit comments

Comments
 (0)