Skip to content

Commit 5e71c3c

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

File tree

1 file changed

+17
-7
lines changed

1 file changed

+17
-7
lines changed

pkg/controller/vpc.go

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"encoding/json"
66
"errors"
77
"fmt"
8+
"maps"
89
"net"
910
"reflect"
1011
"slices"
@@ -277,7 +278,7 @@ func (c *Controller) handleAddOrUpdateVpc(key string) error {
277278
klog.Errorf("failed to format vpc %s: %v", key, err)
278279
return err
279280
}
280-
if err = c.createVpcRouter(key); err != nil {
281+
if err = c.createVpcRouter(key, vpc.Spec.EnableExternal); err != nil {
281282
klog.Errorf("failed to create vpc router for vpc %s: %v", key, err)
282283
return err
283284
}
@@ -1002,7 +1003,7 @@ func (c *Controller) getVpcSubnets(vpc *kubeovnv1.Vpc) (subnets []string, defaul
10021003
}
10031004

10041005
// createVpcRouter create router to connect logical switches in vpc
1005-
func (c *Controller) createVpcRouter(lr string) error {
1006+
func (c *Controller) createVpcRouter(lr string, enableExternal bool) error {
10061007
if err := c.OVNNbClient.CreateLogicalRouter(lr); err != nil {
10071008
klog.Errorf("create logical router %s failed: %v", lr, err)
10081009
return err
@@ -1014,12 +1015,21 @@ func (c *Controller) createVpcRouter(lr string) error {
10141015
return err
10151016
}
10161017

1017-
vpcRouter.Options = map[string]string{"always_learn_from_arp_request": "false", "dynamic_neigh_routers": "true", "mac_binding_age_threshold": "300"}
1018-
err = c.OVNNbClient.UpdateLogicalRouter(vpcRouter, &vpcRouter.Options)
1019-
if err != nil {
1020-
klog.Errorf("update logical router %s failed: %v", lr, err)
1021-
return err
1018+
lrOptions := map[string]string{
1019+
"mac_binding_age_threshold": "300",
1020+
"dynamic_neigh_routers": "true",
10221021
}
1022+
if !enableExternal {
1023+
lrOptions["always_learn_from_arp_request"] = "false"
1024+
}
1025+
if !maps.Equal(vpcRouter.Options, lrOptions) {
1026+
vpcRouter.Options = lrOptions
1027+
if err = c.OVNNbClient.UpdateLogicalRouter(vpcRouter, &vpcRouter.Options); err != nil {
1028+
klog.Errorf("failed to update options of logical router %s: %v", lr, err)
1029+
return err
1030+
}
1031+
}
1032+
10231033
return nil
10241034
}
10251035

0 commit comments

Comments
 (0)