Skip to content

Commit 0b4f2a3

Browse files
committed
controller: set always_learn_from_arp_request to false only when LR is not connected to external network (#5419)
Signed-off-by: zhangzujian <zhangzujian.7@gmail.com>
1 parent f54fc8a commit 0b4f2a3

File tree

1 file changed

+18
-7
lines changed

1 file changed

+18
-7
lines changed

pkg/controller/vpc.go

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"encoding/json"
66
"fmt"
7+
"maps"
78
"net"
89
"reflect"
910
"slices"
@@ -278,7 +279,8 @@ func (c *Controller) handleAddOrUpdateVpc(key string) error {
278279
klog.Errorf("failed to format vpc %s: %v", key, err)
279280
return err
280281
}
281-
if err = c.createVpcRouter(key); err != nil {
282+
if err = c.createVpcRouter(key, vpc.Spec.EnableExternal); err != nil {
283+
klog.Errorf("failed to create vpc router for vpc %s: %v", key, err)
282284
return err
283285
}
284286

@@ -1049,7 +1051,7 @@ func (c *Controller) getVpcSubnets(vpc *kubeovnv1.Vpc) (subnets []string, defaul
10491051
}
10501052

10511053
// createVpcRouter create router to connect logical switches in vpc
1052-
func (c *Controller) createVpcRouter(lr string) error {
1054+
func (c *Controller) createVpcRouter(lr string, enableExternal bool) error {
10531055
if err := c.OVNNbClient.CreateLogicalRouter(lr); err != nil {
10541056
klog.Errorf("create logical router %s failed: %v", lr, err)
10551057
return err
@@ -1061,12 +1063,21 @@ func (c *Controller) createVpcRouter(lr string) error {
10611063
return err
10621064
}
10631065

1064-
vpcRouter.Options = map[string]string{"always_learn_from_arp_request": "false", "dynamic_neigh_routers": "true", "mac_binding_age_threshold": "300"}
1065-
err = c.OVNNbClient.UpdateLogicalRouter(vpcRouter, &vpcRouter.Options)
1066-
if err != nil {
1067-
klog.Errorf("update logical router %s failed: %v", lr, err)
1068-
return err
1066+
lrOptions := map[string]string{
1067+
"mac_binding_age_threshold": "300",
1068+
"dynamic_neigh_routers": "true",
10691069
}
1070+
if !enableExternal {
1071+
lrOptions["always_learn_from_arp_request"] = "false"
1072+
}
1073+
if !maps.Equal(vpcRouter.Options, lrOptions) {
1074+
vpcRouter.Options = lrOptions
1075+
if err = c.OVNNbClient.UpdateLogicalRouter(vpcRouter, &vpcRouter.Options); err != nil {
1076+
klog.Errorf("failed to update options of logical router %s: %v", lr, err)
1077+
return err
1078+
}
1079+
}
1080+
10701081
return nil
10711082
}
10721083

0 commit comments

Comments
 (0)