// Code generated by applyconfiguration-gen. DO NOT EDIT.

package v1

import (
	operatorv1 "github.com/openshift/api/operator/v1"
)

// OVNKubernetesConfigApplyConfiguration represents a declarative configuration of the OVNKubernetesConfig type for use
// with apply.
type OVNKubernetesConfigApplyConfiguration struct {
	MTU                 *uint32                                    `json:"mtu,omitempty"`
	GenevePort          *uint32                                    `json:"genevePort,omitempty"`
	HybridOverlayConfig *HybridOverlayConfigApplyConfiguration     `json:"hybridOverlayConfig,omitempty"`
	IPsecConfig         *IPsecConfigApplyConfiguration             `json:"ipsecConfig,omitempty"`
	PolicyAuditConfig   *PolicyAuditConfigApplyConfiguration       `json:"policyAuditConfig,omitempty"`
	GatewayConfig       *GatewayConfigApplyConfiguration           `json:"gatewayConfig,omitempty"`
	V4InternalSubnet    *string                                    `json:"v4InternalSubnet,omitempty"`
	V6InternalSubnet    *string                                    `json:"v6InternalSubnet,omitempty"`
	EgressIPConfig      *EgressIPConfigApplyConfiguration          `json:"egressIPConfig,omitempty"`
	IPv4                *IPv4OVNKubernetesConfigApplyConfiguration `json:"ipv4,omitempty"`
	IPv6                *IPv6OVNKubernetesConfigApplyConfiguration `json:"ipv6,omitempty"`
	RouteAdvertisements *operatorv1.RouteAdvertisementsEnablement  `json:"routeAdvertisements,omitempty"`
}

// OVNKubernetesConfigApplyConfiguration constructs a declarative configuration of the OVNKubernetesConfig type for use with
// apply.
func OVNKubernetesConfig() *OVNKubernetesConfigApplyConfiguration {
	return &OVNKubernetesConfigApplyConfiguration{}
}

// WithMTU sets the MTU field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the MTU field is set to the value of the last call.
func (b *OVNKubernetesConfigApplyConfiguration) WithMTU(value uint32) *OVNKubernetesConfigApplyConfiguration {
	b.MTU = &value
	return b
}

// WithGenevePort sets the GenevePort field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the GenevePort field is set to the value of the last call.
func (b *OVNKubernetesConfigApplyConfiguration) WithGenevePort(value uint32) *OVNKubernetesConfigApplyConfiguration {
	b.GenevePort = &value
	return b
}

// WithHybridOverlayConfig sets the HybridOverlayConfig field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the HybridOverlayConfig field is set to the value of the last call.
func (b *OVNKubernetesConfigApplyConfiguration) WithHybridOverlayConfig(value *HybridOverlayConfigApplyConfiguration) *OVNKubernetesConfigApplyConfiguration {
	b.HybridOverlayConfig = value
	return b
}

// WithIPsecConfig sets the IPsecConfig field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the IPsecConfig field is set to the value of the last call.
func (b *OVNKubernetesConfigApplyConfiguration) WithIPsecConfig(value *IPsecConfigApplyConfiguration) *OVNKubernetesConfigApplyConfiguration {
	b.IPsecConfig = value
	return b
}

// WithPolicyAuditConfig sets the PolicyAuditConfig field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the PolicyAuditConfig field is set to the value of the last call.
func (b *OVNKubernetesConfigApplyConfiguration) WithPolicyAuditConfig(value *PolicyAuditConfigApplyConfiguration) *OVNKubernetesConfigApplyConfiguration {
	b.PolicyAuditConfig = value
	return b
}

// WithGatewayConfig sets the GatewayConfig field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the GatewayConfig field is set to the value of the last call.
func (b *OVNKubernetesConfigApplyConfiguration) WithGatewayConfig(value *GatewayConfigApplyConfiguration) *OVNKubernetesConfigApplyConfiguration {
	b.GatewayConfig = value
	return b
}

// WithV4InternalSubnet sets the V4InternalSubnet field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the V4InternalSubnet field is set to the value of the last call.
func (b *OVNKubernetesConfigApplyConfiguration) WithV4InternalSubnet(value string) *OVNKubernetesConfigApplyConfiguration {
	b.V4InternalSubnet = &value
	return b
}

// WithV6InternalSubnet sets the V6InternalSubnet field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the V6InternalSubnet field is set to the value of the last call.
func (b *OVNKubernetesConfigApplyConfiguration) WithV6InternalSubnet(value string) *OVNKubernetesConfigApplyConfiguration {
	b.V6InternalSubnet = &value
	return b
}

// WithEgressIPConfig sets the EgressIPConfig field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the EgressIPConfig field is set to the value of the last call.
func (b *OVNKubernetesConfigApplyConfiguration) WithEgressIPConfig(value *EgressIPConfigApplyConfiguration) *OVNKubernetesConfigApplyConfiguration {
	b.EgressIPConfig = value
	return b
}

// WithIPv4 sets the IPv4 field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the IPv4 field is set to the value of the last call.
func (b *OVNKubernetesConfigApplyConfiguration) WithIPv4(value *IPv4OVNKubernetesConfigApplyConfiguration) *OVNKubernetesConfigApplyConfiguration {
	b.IPv4 = value
	return b
}

// WithIPv6 sets the IPv6 field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the IPv6 field is set to the value of the last call.
func (b *OVNKubernetesConfigApplyConfiguration) WithIPv6(value *IPv6OVNKubernetesConfigApplyConfiguration) *OVNKubernetesConfigApplyConfiguration {
	b.IPv6 = value
	return b
}

// WithRouteAdvertisements sets the RouteAdvertisements field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the RouteAdvertisements field is set to the value of the last call.
func (b *OVNKubernetesConfigApplyConfiguration) WithRouteAdvertisements(value operatorv1.RouteAdvertisementsEnablement) *OVNKubernetesConfigApplyConfiguration {
	b.RouteAdvertisements = &value
	return b
}
