diff --git a/pkg/cloudprovider/provider/azure/create_delete_resources.go b/pkg/cloudprovider/provider/azure/create_delete_resources.go index 242fd765f..09b1c7513 100644 --- a/pkg/cloudprovider/provider/azure/create_delete_resources.go +++ b/pkg/cloudprovider/provider/azure/create_delete_resources.go @@ -319,7 +319,7 @@ func getVirtualNetwork(ctx context.Context, c *config) (network.VirtualNetwork, return virtualNetworksClient.Get(ctx, c.VNetResourceGroup, c.VNetName, "") } -func createOrUpdateNetworkInterface(ctx context.Context, log *zap.SugaredLogger, ifName string, machineUID types.UID, config *config, publicIP, publicIPv6 *network.PublicIPAddress, ipFamily util.IPFamily, enableAcceleratedNetworking *bool) (*network.Interface, error) { +func createOrUpdateNetworkInterface(ctx context.Context, log *zap.SugaredLogger, ifName string, machineUID types.UID, config *config, publicIP, publicIPv6 *network.PublicIPAddress, ipFamily util.IPFamily, enableAcceleratedNetworking *bool, enableIPForwarding *bool) (*network.Interface, error) { ifClient, err := getInterfacesClient(config) if err != nil { return nil, fmt.Errorf("failed to create interfaces client: %w", err) @@ -363,6 +363,7 @@ func createOrUpdateNetworkInterface(ctx context.Context, log *zap.SugaredLogger, } ifSpec.InterfacePropertiesFormat.EnableAcceleratedNetworking = enableAcceleratedNetworking + ifSpec.InterfacePropertiesFormat.EnableIPForwarding = enableIPForwarding if config.SecurityGroupName != "" { authorizer, err := auth.NewClientCredentialsConfig(config.ClientID, config.ClientSecret, config.TenantID).Authorizer() diff --git a/pkg/cloudprovider/provider/azure/provider.go b/pkg/cloudprovider/provider/azure/provider.go index b6a90b70a..606350f2c 100644 --- a/pkg/cloudprovider/provider/azure/provider.go +++ b/pkg/cloudprovider/provider/azure/provider.go @@ -106,6 +106,7 @@ type config struct { AssignPublicIP bool PublicIPSKU *network.PublicIPAddressSkuName EnableAcceleratedNetworking *bool + EnableIPForwarding *bool EnableBootDiagnostics bool Tags map[string]string } @@ -335,6 +336,7 @@ func (p *provider) getConfig(provSpec clusterv1alpha1.ProviderSpec) (*config, *p c.AssignAvailabilitySet = rawCfg.AssignAvailabilitySet c.EnableAcceleratedNetworking = rawCfg.EnableAcceleratedNetworking + c.EnableIPForwarding = rawCfg.EnableIPForwarding c.AvailabilitySet, err = p.configVarResolver.GetConfigVarStringValue(rawCfg.AvailabilitySet) if err != nil { @@ -639,7 +641,7 @@ func (p *provider) Create(ctx context.Context, log *zap.SugaredLogger, machine * return nil, err } - iface, err := createOrUpdateNetworkInterface(ctx, log, ifaceName(machine), machine.UID, config, publicIP, publicIPv6, ipFamily, config.EnableAcceleratedNetworking) + iface, err := createOrUpdateNetworkInterface(ctx, log, ifaceName(machine), machine.UID, config, publicIP, publicIPv6, ipFamily, config.EnableAcceleratedNetworking, config.EnableIPForwarding) if err != nil { return nil, fmt.Errorf("failed to generate main network interface: %w", err) } @@ -1157,7 +1159,7 @@ func (p *provider) MigrateUID(ctx context.Context, log *zap.SugaredLogger, machi } if kuberneteshelper.HasFinalizer(machine, finalizerNIC) { - _, err = createOrUpdateNetworkInterface(ctx, log, ifaceName(machine), newUID, config, publicIP, publicIPv6, util.IPFamilyUnspecified, config.EnableAcceleratedNetworking) + _, err = createOrUpdateNetworkInterface(ctx, log, ifaceName(machine), newUID, config, publicIP, publicIPv6, util.IPFamilyUnspecified, config.EnableAcceleratedNetworking, config.EnableIPForwarding) if err != nil { return fmt.Errorf("failed to update UID on main network interface: %w", err) } diff --git a/pkg/cloudprovider/provider/azure/types/types.go b/pkg/cloudprovider/provider/azure/types/types.go index 7b472689e..74f51fead 100644 --- a/pkg/cloudprovider/provider/azure/types/types.go +++ b/pkg/cloudprovider/provider/azure/types/types.go @@ -43,6 +43,7 @@ type RawConfig struct { ImagePlan *ImagePlan `json:"imagePlan,omitempty"` ImageReference *ImageReference `json:"imageReference,omitempty"` EnableAcceleratedNetworking *bool `json:"enableAcceleratedNetworking"` + EnableIPForwarding *bool `json:"enableIPForwarding"` EnableBootDiagnostics *bool `json:"enableBootDiagnostics,omitempty"` ImageID providerconfigtypes.ConfigVarString `json:"imageID"`