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

package v1

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

// OVNKubernetesConfigApplyConfiguration represents an 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         *operatorv1.IPsecConfig                `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"`
}

// OVNKubernetesConfigApplyConfiguration constructs an 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 operatorv1.IPsecConfig) *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
}
