@@ -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,22 @@ 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+ var lrOptions map [string ]string
1251+ if ! enableExternal {
1252+ lrOptions = map [string ]string {
1253+ "always_learn_from_arp_request" : "false" ,
1254+ "dynamic_neigh_routers" : "true" ,
1255+ "mac_binding_age_threshold" : "300" ,
1256+ }
12551257 }
1258+ if ! maps .Equal (vpcRouter .Options , lrOptions ) {
1259+ vpcRouter .Options = lrOptions
1260+ if err = c .OVNNbClient .UpdateLogicalRouter (vpcRouter , & vpcRouter .Options ); err != nil {
1261+ klog .Errorf ("failed to update options of logical router %s: %v" , lr , err )
1262+ return err
1263+ }
1264+ }
1265+
12561266 return nil
12571267}
12581268
0 commit comments