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

package v1

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

// GatewayConfigApplyConfiguration represents a declarative configuration of the GatewayConfig type for use
// with apply.
type GatewayConfigApplyConfiguration struct {
	RoutingViaHost *bool                                `json:"routingViaHost,omitempty"`
	IPForwarding   *operatorv1.IPForwardingMode         `json:"ipForwarding,omitempty"`
	IPv4           *IPv4GatewayConfigApplyConfiguration `json:"ipv4,omitempty"`
	IPv6           *IPv6GatewayConfigApplyConfiguration `json:"ipv6,omitempty"`
}

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

// WithRoutingViaHost sets the RoutingViaHost 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 RoutingViaHost field is set to the value of the last call.
func (b *GatewayConfigApplyConfiguration) WithRoutingViaHost(value bool) *GatewayConfigApplyConfiguration {
	b.RoutingViaHost = &value
	return b
}

// WithIPForwarding sets the IPForwarding 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 IPForwarding field is set to the value of the last call.
func (b *GatewayConfigApplyConfiguration) WithIPForwarding(value operatorv1.IPForwardingMode) *GatewayConfigApplyConfiguration {
	b.IPForwarding = &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 *GatewayConfigApplyConfiguration) WithIPv4(value *IPv4GatewayConfigApplyConfiguration) *GatewayConfigApplyConfiguration {
	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 *GatewayConfigApplyConfiguration) WithIPv6(value *IPv6GatewayConfigApplyConfiguration) *GatewayConfigApplyConfiguration {
	b.IPv6 = value
	return b
}
