Skip to content

Commit df8c5f7

Browse files
committed
controller: set always_learn_from_arp_request to false only when LR is not connected to external network
Signed-off-by: zhangzujian <zhangzujian.7@gmail.com>
1 parent 0109369 commit df8c5f7

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

pkg/controller/vpc.go

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@ func (c *Controller) handleAddOrUpdateVpc(key string) error {
268268
return err
269269
}
270270

271-
if err = c.createVpcRouter(key); err != nil {
271+
if err = c.createVpcRouter(key, vpc.Spec.EnableExternal); err != nil {
272272
klog.Errorf("failed to create vpc router for vpc %s: %v", key, err)
273273
return err
274274
}
@@ -1235,7 +1235,7 @@ func (c *Controller) getVpcSubnets(vpc *kubeovnv1.Vpc) (subnets []string, defaul
12351235
}
12361236

12371237
// createVpcRouter create router to connect logical switches in vpc
1238-
func (c *Controller) createVpcRouter(lr string) error {
1238+
func (c *Controller) createVpcRouter(lr string, enableExternal bool) error {
12391239
if err := c.OVNNbClient.CreateLogicalRouter(lr); err != nil {
12401240
klog.Errorf("create logical router %s failed: %v", lr, err)
12411241
return err
@@ -1247,12 +1247,21 @@ func (c *Controller) createVpcRouter(lr string) error {
12471247
return err
12481248
}
12491249

1250-
vpcRouter.Options = map[string]string{"always_learn_from_arp_request": "false", "dynamic_neigh_routers": "true", "mac_binding_age_threshold": "300"}
1251-
err = c.OVNNbClient.UpdateLogicalRouter(vpcRouter, &vpcRouter.Options)
1252-
if err != nil {
1253-
klog.Errorf("update logical router %s failed: %v", lr, err)
1254-
return err
1250+
lrOptions := map[string]string{
1251+
"mac_binding_age_threshold": "300",
1252+
"dynamic_neigh_routers": "true",
12551253
}
1254+
if !enableExternal {
1255+
lrOptions["always_learn_from_arp_request"] = "false"
1256+
}
1257+
if !maps.Equal(vpcRouter.Options, lrOptions) {
1258+
vpcRouter.Options = lrOptions
1259+
if err = c.OVNNbClient.UpdateLogicalRouter(vpcRouter, &vpcRouter.Options); err != nil {
1260+
klog.Errorf("failed to update options of logical router %s: %v", lr, err)
1261+
return err
1262+
}
1263+
}
1264+
12561265
return nil
12571266
}
12581267

0 commit comments

Comments
 (0)