@@ -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