// Code generated by azure-service-operator-codegen. DO NOT EDIT.
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
package arm

// A network interface in a resource group.
type NetworkInterface_STATUS struct {
	// Etag: A unique read-only string that changes whenever the resource is updated.
	Etag *string `json:"etag,omitempty"`

	// ExtendedLocation: The extended location of the network interface.
	ExtendedLocation *ExtendedLocation_STATUS `json:"extendedLocation,omitempty"`

	// Id: Resource ID.
	Id *string `json:"id,omitempty"`

	// Location: Resource location.
	Location *string `json:"location,omitempty"`

	// Name: Resource name.
	Name *string `json:"name,omitempty"`

	// Properties: Properties of the network interface.
	Properties *NetworkInterfacePropertiesFormat_STATUS `json:"properties,omitempty"`

	// Tags: Resource tags.
	Tags map[string]string `json:"tags,omitempty"`

	// Type: Resource type.
	Type *string `json:"type,omitempty"`
}

// NetworkInterface properties.
type NetworkInterfacePropertiesFormat_STATUS struct {
	// DnsSettings: The DNS settings in network interface.
	DnsSettings *NetworkInterfaceDnsSettings_STATUS `json:"dnsSettings,omitempty"`

	// DscpConfiguration: A reference to the dscp configuration to which the network interface is linked.
	DscpConfiguration *SubResource_STATUS `json:"dscpConfiguration,omitempty"`

	// EnableAcceleratedNetworking: If the network interface is accelerated networking enabled.
	EnableAcceleratedNetworking *bool `json:"enableAcceleratedNetworking,omitempty"`

	// EnableIPForwarding: Indicates whether IP forwarding is enabled on this network interface.
	EnableIPForwarding *bool `json:"enableIPForwarding,omitempty"`

	// HostedWorkloads: A list of references to linked BareMetal resources.
	HostedWorkloads []string `json:"hostedWorkloads,omitempty"`

	// IpConfigurations: A list of IPConfigurations of the network interface.
	IpConfigurations []NetworkInterfaceIPConfiguration_STATUS_NetworkInterface_SubResourceEmbedded `json:"ipConfigurations,omitempty"`

	// MacAddress: The MAC address of the network interface.
	MacAddress *string `json:"macAddress,omitempty"`

	// MigrationPhase: Migration phase of Network Interface resource.
	MigrationPhase *NetworkInterfacePropertiesFormat_MigrationPhase_STATUS `json:"migrationPhase,omitempty"`

	// NetworkSecurityGroup: The reference to the NetworkSecurityGroup resource.
	NetworkSecurityGroup *NetworkSecurityGroup_STATUS_NetworkInterface_SubResourceEmbedded `json:"networkSecurityGroup,omitempty"`

	// NicType: Type of Network Interface resource.
	NicType *NetworkInterfacePropertiesFormat_NicType_STATUS `json:"nicType,omitempty"`

	// Primary: Whether this is a primary network interface on a virtual machine.
	Primary *bool `json:"primary,omitempty"`

	// PrivateEndpoint: A reference to the private endpoint to which the network interface is linked.
	PrivateEndpoint *PrivateEndpoint_STATUS_NetworkInterface_SubResourceEmbedded `json:"privateEndpoint,omitempty"`

	// PrivateLinkService: Privatelinkservice of the network interface resource.
	PrivateLinkService *PrivateLinkService_STATUS_NetworkInterface_SubResourceEmbedded `json:"privateLinkService,omitempty"`

	// ProvisioningState: The provisioning state of the network interface resource.
	ProvisioningState *ProvisioningState_STATUS `json:"provisioningState,omitempty"`

	// ResourceGuid: The resource GUID property of the network interface resource.
	ResourceGuid *string `json:"resourceGuid,omitempty"`

	// TapConfigurations: A list of TapConfigurations of the network interface.
	TapConfigurations []NetworkInterfaceTapConfiguration_STATUS_NetworkInterface_SubResourceEmbedded `json:"tapConfigurations,omitempty"`

	// VirtualMachine: The reference to a virtual machine.
	VirtualMachine *SubResource_STATUS `json:"virtualMachine,omitempty"`
}

// DNS settings of a network interface.
type NetworkInterfaceDnsSettings_STATUS struct {
	// AppliedDnsServers: If the VM that uses this NIC is part of an Availability Set, then this list will have the union of
	// all DNS servers from all NICs that are part of the Availability Set. This property is what is configured on each of
	// those VMs.
	AppliedDnsServers []string `json:"appliedDnsServers,omitempty"`

	// DnsServers: List of DNS servers IP addresses. Use 'AzureProvidedDNS' to switch to azure provided DNS resolution.
	// 'AzureProvidedDNS' value cannot be combined with other IPs, it must be the only value in dnsServers collection.
	DnsServers []string `json:"dnsServers,omitempty"`

	// InternalDnsNameLabel: Relative DNS name for this NIC used for internal communications between VMs in the same virtual
	// network.
	InternalDnsNameLabel *string `json:"internalDnsNameLabel,omitempty"`

	// InternalDomainNameSuffix: Even if internalDnsNameLabel is not specified, a DNS entry is created for the primary NIC of
	// the VM. This DNS name can be constructed by concatenating the VM name with the value of internalDomainNameSuffix.
	InternalDomainNameSuffix *string `json:"internalDomainNameSuffix,omitempty"`

	// InternalFqdn: Fully qualified DNS name supporting internal communications between VMs in the same virtual network.
	InternalFqdn *string `json:"internalFqdn,omitempty"`
}

// IPConfiguration in a network interface.
type NetworkInterfaceIPConfiguration_STATUS_NetworkInterface_SubResourceEmbedded struct {
	// Etag: A unique read-only string that changes whenever the resource is updated.
	Etag *string `json:"etag,omitempty"`

	// Id: Resource ID.
	Id *string `json:"id,omitempty"`

	// Name: The name of the resource that is unique within a resource group. This name can be used to access the resource.
	Name *string `json:"name,omitempty"`

	// Properties: Network interface IP configuration properties.
	Properties *NetworkInterfaceIPConfigurationPropertiesFormat_STATUS `json:"properties,omitempty"`

	// Type: Resource type.
	Type *string `json:"type,omitempty"`
}

type NetworkInterfacePropertiesFormat_MigrationPhase_STATUS string

const (
	NetworkInterfacePropertiesFormat_MigrationPhase_STATUS_Abort     = NetworkInterfacePropertiesFormat_MigrationPhase_STATUS("Abort")
	NetworkInterfacePropertiesFormat_MigrationPhase_STATUS_Commit    = NetworkInterfacePropertiesFormat_MigrationPhase_STATUS("Commit")
	NetworkInterfacePropertiesFormat_MigrationPhase_STATUS_Committed = NetworkInterfacePropertiesFormat_MigrationPhase_STATUS("Committed")
	NetworkInterfacePropertiesFormat_MigrationPhase_STATUS_None      = NetworkInterfacePropertiesFormat_MigrationPhase_STATUS("None")
	NetworkInterfacePropertiesFormat_MigrationPhase_STATUS_Prepare   = NetworkInterfacePropertiesFormat_MigrationPhase_STATUS("Prepare")
)

// Mapping from string to NetworkInterfacePropertiesFormat_MigrationPhase_STATUS
var networkInterfacePropertiesFormat_MigrationPhase_STATUS_Values = map[string]NetworkInterfacePropertiesFormat_MigrationPhase_STATUS{
	"abort":     NetworkInterfacePropertiesFormat_MigrationPhase_STATUS_Abort,
	"commit":    NetworkInterfacePropertiesFormat_MigrationPhase_STATUS_Commit,
	"committed": NetworkInterfacePropertiesFormat_MigrationPhase_STATUS_Committed,
	"none":      NetworkInterfacePropertiesFormat_MigrationPhase_STATUS_None,
	"prepare":   NetworkInterfacePropertiesFormat_MigrationPhase_STATUS_Prepare,
}

type NetworkInterfacePropertiesFormat_NicType_STATUS string

const (
	NetworkInterfacePropertiesFormat_NicType_STATUS_Elastic  = NetworkInterfacePropertiesFormat_NicType_STATUS("Elastic")
	NetworkInterfacePropertiesFormat_NicType_STATUS_Standard = NetworkInterfacePropertiesFormat_NicType_STATUS("Standard")
)

// Mapping from string to NetworkInterfacePropertiesFormat_NicType_STATUS
var networkInterfacePropertiesFormat_NicType_STATUS_Values = map[string]NetworkInterfacePropertiesFormat_NicType_STATUS{
	"elastic":  NetworkInterfacePropertiesFormat_NicType_STATUS_Elastic,
	"standard": NetworkInterfacePropertiesFormat_NicType_STATUS_Standard,
}

// Tap configuration in a Network Interface.
type NetworkInterfaceTapConfiguration_STATUS_NetworkInterface_SubResourceEmbedded struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// NetworkSecurityGroup resource.
type NetworkSecurityGroup_STATUS_NetworkInterface_SubResourceEmbedded struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// Private endpoint resource.
type PrivateEndpoint_STATUS_NetworkInterface_SubResourceEmbedded struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// Private link service resource.
type PrivateLinkService_STATUS_NetworkInterface_SubResourceEmbedded struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// Properties of IP configuration.
type NetworkInterfaceIPConfigurationPropertiesFormat_STATUS struct {
	// ApplicationGatewayBackendAddressPools: The reference to ApplicationGatewayBackendAddressPool resource.
	ApplicationGatewayBackendAddressPools []ApplicationGatewayBackendAddressPool_STATUS_NetworkInterface_SubResourceEmbedded `json:"applicationGatewayBackendAddressPools,omitempty"`

	// ApplicationSecurityGroups: Application security groups in which the IP configuration is included.
	ApplicationSecurityGroups []ApplicationSecurityGroup_STATUS_NetworkInterface_SubResourceEmbedded `json:"applicationSecurityGroups,omitempty"`

	// LoadBalancerBackendAddressPools: The reference to LoadBalancerBackendAddressPool resource.
	LoadBalancerBackendAddressPools []BackendAddressPool_STATUS_NetworkInterface_SubResourceEmbedded `json:"loadBalancerBackendAddressPools,omitempty"`

	// LoadBalancerInboundNatRules: A list of references of LoadBalancerInboundNatRules.
	LoadBalancerInboundNatRules []InboundNatRule_STATUS_NetworkInterface_SubResourceEmbedded `json:"loadBalancerInboundNatRules,omitempty"`

	// Primary: Whether this is a primary customer address on the network interface.
	Primary *bool `json:"primary,omitempty"`

	// PrivateIPAddress: Private IP address of the IP configuration.
	PrivateIPAddress *string `json:"privateIPAddress,omitempty"`

	// PrivateIPAddressVersion: Whether the specific IP configuration is IPv4 or IPv6. Default is IPv4.
	PrivateIPAddressVersion *IPVersion_STATUS `json:"privateIPAddressVersion,omitempty"`

	// PrivateIPAllocationMethod: The private IP address allocation method.
	PrivateIPAllocationMethod *IPAllocationMethod_STATUS `json:"privateIPAllocationMethod,omitempty"`

	// PrivateLinkConnectionProperties: PrivateLinkConnection properties for the network interface.
	PrivateLinkConnectionProperties *NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties_STATUS `json:"privateLinkConnectionProperties,omitempty"`

	// ProvisioningState: The provisioning state of the network interface IP configuration.
	ProvisioningState *ProvisioningState_STATUS `json:"provisioningState,omitempty"`

	// PublicIPAddress: Public IP address bound to the IP configuration.
	PublicIPAddress *PublicIPAddress_STATUS_NetworkInterface_SubResourceEmbedded `json:"publicIPAddress,omitempty"`

	// Subnet: Subnet bound to the IP configuration.
	Subnet *Subnet_STATUS_NetworkInterface_SubResourceEmbedded `json:"subnet,omitempty"`

	// VirtualNetworkTaps: The reference to Virtual Network Taps.
	VirtualNetworkTaps []VirtualNetworkTap_STATUS_NetworkInterface_SubResourceEmbedded `json:"virtualNetworkTaps,omitempty"`
}

// Backend Address Pool of an application gateway.
type ApplicationGatewayBackendAddressPool_STATUS_NetworkInterface_SubResourceEmbedded struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// An application security group in a resource group.
type ApplicationSecurityGroup_STATUS_NetworkInterface_SubResourceEmbedded struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// Pool of backend IP addresses.
type BackendAddressPool_STATUS_NetworkInterface_SubResourceEmbedded struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// Inbound NAT rule of the load balancer.
type InboundNatRule_STATUS_NetworkInterface_SubResourceEmbedded struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// PrivateLinkConnection properties for the network interface.
type NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties_STATUS struct {
	// Fqdns: List of FQDNs for current private link connection.
	Fqdns []string `json:"fqdns,omitempty"`

	// GroupId: The group ID for current private link connection.
	GroupId *string `json:"groupId,omitempty"`

	// RequiredMemberName: The required member name for current private link connection.
	RequiredMemberName *string `json:"requiredMemberName,omitempty"`
}

// Public IP address resource.
type PublicIPAddress_STATUS_NetworkInterface_SubResourceEmbedded struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// Subnet in a virtual network resource.
type Subnet_STATUS_NetworkInterface_SubResourceEmbedded struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// Virtual Network Tap resource.
type VirtualNetworkTap_STATUS_NetworkInterface_SubResourceEmbedded struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}
