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

// A common class for general resource information.
type VirtualNetworkGateway_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 type local virtual network gateway.
	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 virtual network gateway.
	Properties *VirtualNetworkGatewayPropertiesFormat_STATUS `json:"properties,omitempty"`

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

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

// VirtualNetworkGateway properties.
type VirtualNetworkGatewayPropertiesFormat_STATUS struct {
	// ActiveActive: ActiveActive flag.
	ActiveActive *bool `json:"activeActive,omitempty"`

	// BgpSettings: Virtual network gateway's BGP speaker settings.
	BgpSettings *BgpSettings_STATUS `json:"bgpSettings,omitempty"`

	// CustomRoutes: The reference to the address space resource which represents the custom routes address space specified by
	// the customer for virtual network gateway and VpnClient.
	CustomRoutes *AddressSpace_STATUS `json:"customRoutes,omitempty"`

	// EnableBgp: Whether BGP is enabled for this virtual network gateway or not.
	EnableBgp *bool `json:"enableBgp,omitempty"`

	// EnableDnsForwarding: Whether dns forwarding is enabled or not.
	EnableDnsForwarding *bool `json:"enableDnsForwarding,omitempty"`

	// EnablePrivateIpAddress: Whether private IP needs to be enabled on this gateway for connections or not.
	EnablePrivateIpAddress *bool `json:"enablePrivateIpAddress,omitempty"`

	// GatewayDefaultSite: The reference to the LocalNetworkGateway resource which represents local network site having default
	// routes. Assign Null value in case of removing existing default site setting.
	GatewayDefaultSite *SubResource_STATUS `json:"gatewayDefaultSite,omitempty"`

	// GatewayType: The type of this virtual network gateway.
	GatewayType *VirtualNetworkGatewayPropertiesFormat_GatewayType_STATUS `json:"gatewayType,omitempty"`

	// InboundDnsForwardingEndpoint: The IP address allocated by the gateway to which dns requests can be sent.
	InboundDnsForwardingEndpoint *string `json:"inboundDnsForwardingEndpoint,omitempty"`

	// IpConfigurations: IP configurations for virtual network gateway.
	IpConfigurations []VirtualNetworkGatewayIPConfiguration_STATUS `json:"ipConfigurations,omitempty"`

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

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

	// Sku: The reference to the VirtualNetworkGatewaySku resource which represents the SKU selected for Virtual network
	// gateway.
	Sku *VirtualNetworkGatewaySku_STATUS `json:"sku,omitempty"`

	// VNetExtendedLocationResourceId: Customer vnet resource id. VirtualNetworkGateway of type local gateway is associated
	// with the customer vnet.
	VNetExtendedLocationResourceId *string `json:"vNetExtendedLocationResourceId,omitempty"`

	// VpnClientConfiguration: The reference to the VpnClientConfiguration resource which represents the P2S VpnClient
	// configurations.
	VpnClientConfiguration *VpnClientConfiguration_STATUS `json:"vpnClientConfiguration,omitempty"`

	// VpnGatewayGeneration: The generation for this VirtualNetworkGateway. Must be None if gatewayType is not VPN.
	VpnGatewayGeneration *VirtualNetworkGatewayPropertiesFormat_VpnGatewayGeneration_STATUS `json:"vpnGatewayGeneration,omitempty"`

	// VpnType: The type of this virtual network gateway.
	VpnType *VirtualNetworkGatewayPropertiesFormat_VpnType_STATUS `json:"vpnType,omitempty"`
}

// AddressSpace contains an array of IP address ranges that can be used by subnets of the virtual network.
type AddressSpace_STATUS struct {
	// AddressPrefixes: A list of address blocks reserved for this virtual network in CIDR notation.
	AddressPrefixes []string `json:"addressPrefixes,omitempty"`
}

// BGP settings details.
type BgpSettings_STATUS struct {
	// Asn: The BGP speaker's ASN.
	Asn *uint32 `json:"asn,omitempty"`

	// BgpPeeringAddress: The BGP peering address and BGP identifier of this BGP speaker.
	BgpPeeringAddress *string `json:"bgpPeeringAddress,omitempty"`

	// BgpPeeringAddresses: BGP peering address with IP configuration ID for virtual network gateway.
	BgpPeeringAddresses []IPConfigurationBgpPeeringAddress_STATUS `json:"bgpPeeringAddresses,omitempty"`

	// PeerWeight: The weight added to routes learned from this BGP speaker.
	PeerWeight *int `json:"peerWeight,omitempty"`
}

// IP configuration for virtual network gateway.
type VirtualNetworkGatewayIPConfiguration_STATUS 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: Properties of the virtual network gateway ip configuration.
	Properties *VirtualNetworkGatewayIPConfigurationPropertiesFormat_STATUS `json:"properties,omitempty"`
}

type VirtualNetworkGatewayPropertiesFormat_GatewayType_STATUS string

const (
	VirtualNetworkGatewayPropertiesFormat_GatewayType_STATUS_ExpressRoute = VirtualNetworkGatewayPropertiesFormat_GatewayType_STATUS("ExpressRoute")
	VirtualNetworkGatewayPropertiesFormat_GatewayType_STATUS_LocalGateway = VirtualNetworkGatewayPropertiesFormat_GatewayType_STATUS("LocalGateway")
	VirtualNetworkGatewayPropertiesFormat_GatewayType_STATUS_Vpn          = VirtualNetworkGatewayPropertiesFormat_GatewayType_STATUS("Vpn")
)

// Mapping from string to VirtualNetworkGatewayPropertiesFormat_GatewayType_STATUS
var virtualNetworkGatewayPropertiesFormat_GatewayType_STATUS_Values = map[string]VirtualNetworkGatewayPropertiesFormat_GatewayType_STATUS{
	"expressroute": VirtualNetworkGatewayPropertiesFormat_GatewayType_STATUS_ExpressRoute,
	"localgateway": VirtualNetworkGatewayPropertiesFormat_GatewayType_STATUS_LocalGateway,
	"vpn":          VirtualNetworkGatewayPropertiesFormat_GatewayType_STATUS_Vpn,
}

type VirtualNetworkGatewayPropertiesFormat_VpnGatewayGeneration_STATUS string

const (
	VirtualNetworkGatewayPropertiesFormat_VpnGatewayGeneration_STATUS_Generation1 = VirtualNetworkGatewayPropertiesFormat_VpnGatewayGeneration_STATUS("Generation1")
	VirtualNetworkGatewayPropertiesFormat_VpnGatewayGeneration_STATUS_Generation2 = VirtualNetworkGatewayPropertiesFormat_VpnGatewayGeneration_STATUS("Generation2")
	VirtualNetworkGatewayPropertiesFormat_VpnGatewayGeneration_STATUS_None        = VirtualNetworkGatewayPropertiesFormat_VpnGatewayGeneration_STATUS("None")
)

// Mapping from string to VirtualNetworkGatewayPropertiesFormat_VpnGatewayGeneration_STATUS
var virtualNetworkGatewayPropertiesFormat_VpnGatewayGeneration_STATUS_Values = map[string]VirtualNetworkGatewayPropertiesFormat_VpnGatewayGeneration_STATUS{
	"generation1": VirtualNetworkGatewayPropertiesFormat_VpnGatewayGeneration_STATUS_Generation1,
	"generation2": VirtualNetworkGatewayPropertiesFormat_VpnGatewayGeneration_STATUS_Generation2,
	"none":        VirtualNetworkGatewayPropertiesFormat_VpnGatewayGeneration_STATUS_None,
}

type VirtualNetworkGatewayPropertiesFormat_VpnType_STATUS string

const (
	VirtualNetworkGatewayPropertiesFormat_VpnType_STATUS_PolicyBased = VirtualNetworkGatewayPropertiesFormat_VpnType_STATUS("PolicyBased")
	VirtualNetworkGatewayPropertiesFormat_VpnType_STATUS_RouteBased  = VirtualNetworkGatewayPropertiesFormat_VpnType_STATUS("RouteBased")
)

// Mapping from string to VirtualNetworkGatewayPropertiesFormat_VpnType_STATUS
var virtualNetworkGatewayPropertiesFormat_VpnType_STATUS_Values = map[string]VirtualNetworkGatewayPropertiesFormat_VpnType_STATUS{
	"policybased": VirtualNetworkGatewayPropertiesFormat_VpnType_STATUS_PolicyBased,
	"routebased":  VirtualNetworkGatewayPropertiesFormat_VpnType_STATUS_RouteBased,
}

// VirtualNetworkGatewaySku details.
type VirtualNetworkGatewaySku_STATUS struct {
	// Capacity: The capacity.
	Capacity *int `json:"capacity,omitempty"`

	// Name: Gateway SKU name.
	Name *VirtualNetworkGatewaySku_Name_STATUS `json:"name,omitempty"`

	// Tier: Gateway SKU tier.
	Tier *VirtualNetworkGatewaySku_Tier_STATUS `json:"tier,omitempty"`
}

// VpnClientConfiguration for P2S client.
type VpnClientConfiguration_STATUS struct {
	// AadAudience: The AADAudience property of the VirtualNetworkGateway resource for vpn client connection used for AAD
	// authentication.
	AadAudience *string `json:"aadAudience,omitempty"`

	// AadIssuer: The AADIssuer property of the VirtualNetworkGateway resource for vpn client connection used for AAD
	// authentication.
	AadIssuer *string `json:"aadIssuer,omitempty"`

	// AadTenant: The AADTenant property of the VirtualNetworkGateway resource for vpn client connection used for AAD
	// authentication.
	AadTenant *string `json:"aadTenant,omitempty"`

	// RadiusServerAddress: The radius server address property of the VirtualNetworkGateway resource for vpn client connection.
	RadiusServerAddress *string `json:"radiusServerAddress,omitempty"`

	// RadiusServerSecret: The radius secret property of the VirtualNetworkGateway resource for vpn client connection.
	RadiusServerSecret *string `json:"radiusServerSecret,omitempty"`

	// RadiusServers: The radiusServers property for multiple radius server configuration.
	RadiusServers []RadiusServer_STATUS `json:"radiusServers,omitempty"`

	// VpnAuthenticationTypes: VPN authentication types for the virtual network gateway..
	VpnAuthenticationTypes []VpnClientConfiguration_VpnAuthenticationTypes_STATUS `json:"vpnAuthenticationTypes,omitempty"`

	// VpnClientAddressPool: The reference to the address space resource which represents Address space for P2S VpnClient.
	VpnClientAddressPool *AddressSpace_STATUS `json:"vpnClientAddressPool,omitempty"`

	// VpnClientIpsecPolicies: VpnClientIpsecPolicies for virtual network gateway P2S client.
	VpnClientIpsecPolicies []IpsecPolicy_STATUS `json:"vpnClientIpsecPolicies,omitempty"`

	// VpnClientProtocols: VpnClientProtocols for Virtual network gateway.
	VpnClientProtocols []VpnClientConfiguration_VpnClientProtocols_STATUS `json:"vpnClientProtocols,omitempty"`

	// VpnClientRevokedCertificates: VpnClientRevokedCertificate for Virtual network gateway.
	VpnClientRevokedCertificates []VpnClientRevokedCertificate_STATUS `json:"vpnClientRevokedCertificates,omitempty"`

	// VpnClientRootCertificates: VpnClientRootCertificate for virtual network gateway.
	VpnClientRootCertificates []VpnClientRootCertificate_STATUS `json:"vpnClientRootCertificates,omitempty"`
}

// Properties of IPConfigurationBgpPeeringAddress.
type IPConfigurationBgpPeeringAddress_STATUS struct {
	// CustomBgpIpAddresses: The list of custom BGP peering addresses which belong to IP configuration.
	CustomBgpIpAddresses []string `json:"customBgpIpAddresses,omitempty"`

	// DefaultBgpIpAddresses: The list of default BGP peering addresses which belong to IP configuration.
	DefaultBgpIpAddresses []string `json:"defaultBgpIpAddresses,omitempty"`

	// IpconfigurationId: The ID of IP configuration which belongs to gateway.
	IpconfigurationId *string `json:"ipconfigurationId,omitempty"`

	// TunnelIpAddresses: The list of tunnel public IP addresses which belong to IP configuration.
	TunnelIpAddresses []string `json:"tunnelIpAddresses,omitempty"`
}

// An IPSec Policy configuration for a virtual network gateway connection.
type IpsecPolicy_STATUS struct {
	// DhGroup: The DH Group used in IKE Phase 1 for initial SA.
	DhGroup *DhGroup_STATUS `json:"dhGroup,omitempty"`

	// IkeEncryption: The IKE encryption algorithm (IKE phase 2).
	IkeEncryption *IkeEncryption_STATUS `json:"ikeEncryption,omitempty"`

	// IkeIntegrity: The IKE integrity algorithm (IKE phase 2).
	IkeIntegrity *IkeIntegrity_STATUS `json:"ikeIntegrity,omitempty"`

	// IpsecEncryption: The IPSec encryption algorithm (IKE phase 1).
	IpsecEncryption *IpsecEncryption_STATUS `json:"ipsecEncryption,omitempty"`

	// IpsecIntegrity: The IPSec integrity algorithm (IKE phase 1).
	IpsecIntegrity *IpsecIntegrity_STATUS `json:"ipsecIntegrity,omitempty"`

	// PfsGroup: The Pfs Group used in IKE Phase 2 for new child SA.
	PfsGroup *PfsGroup_STATUS `json:"pfsGroup,omitempty"`

	// SaDataSizeKilobytes: The IPSec Security Association (also called Quick Mode or Phase 2 SA) payload size in KB for a site
	// to site VPN tunnel.
	SaDataSizeKilobytes *int `json:"saDataSizeKilobytes,omitempty"`

	// SaLifeTimeSeconds: The IPSec Security Association (also called Quick Mode or Phase 2 SA) lifetime in seconds for a site
	// to site VPN tunnel.
	SaLifeTimeSeconds *int `json:"saLifeTimeSeconds,omitempty"`
}

// Radius Server Settings.
type RadiusServer_STATUS struct {
	// RadiusServerAddress: The address of this radius server.
	RadiusServerAddress *string `json:"radiusServerAddress,omitempty"`

	// RadiusServerScore: The initial score assigned to this radius server.
	RadiusServerScore *int `json:"radiusServerScore,omitempty"`

	// RadiusServerSecret: The secret used for this radius server.
	RadiusServerSecret *string `json:"radiusServerSecret,omitempty"`
}

// Properties of VirtualNetworkGatewayIPConfiguration.
type VirtualNetworkGatewayIPConfigurationPropertiesFormat_STATUS struct {
	// PrivateIPAddress: Private IP Address for this gateway.
	PrivateIPAddress *string `json:"privateIPAddress,omitempty"`

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

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

	// PublicIPAddress: The reference to the public IP resource.
	PublicIPAddress *SubResource_STATUS `json:"publicIPAddress,omitempty"`

	// Subnet: The reference to the subnet resource.
	Subnet *SubResource_STATUS `json:"subnet,omitempty"`
}

type VirtualNetworkGatewaySku_Name_STATUS string

const (
	VirtualNetworkGatewaySku_Name_STATUS_Basic            = VirtualNetworkGatewaySku_Name_STATUS("Basic")
	VirtualNetworkGatewaySku_Name_STATUS_ErGw1AZ          = VirtualNetworkGatewaySku_Name_STATUS("ErGw1AZ")
	VirtualNetworkGatewaySku_Name_STATUS_ErGw2AZ          = VirtualNetworkGatewaySku_Name_STATUS("ErGw2AZ")
	VirtualNetworkGatewaySku_Name_STATUS_ErGw3AZ          = VirtualNetworkGatewaySku_Name_STATUS("ErGw3AZ")
	VirtualNetworkGatewaySku_Name_STATUS_HighPerformance  = VirtualNetworkGatewaySku_Name_STATUS("HighPerformance")
	VirtualNetworkGatewaySku_Name_STATUS_Standard         = VirtualNetworkGatewaySku_Name_STATUS("Standard")
	VirtualNetworkGatewaySku_Name_STATUS_UltraPerformance = VirtualNetworkGatewaySku_Name_STATUS("UltraPerformance")
	VirtualNetworkGatewaySku_Name_STATUS_VpnGw1           = VirtualNetworkGatewaySku_Name_STATUS("VpnGw1")
	VirtualNetworkGatewaySku_Name_STATUS_VpnGw1AZ         = VirtualNetworkGatewaySku_Name_STATUS("VpnGw1AZ")
	VirtualNetworkGatewaySku_Name_STATUS_VpnGw2           = VirtualNetworkGatewaySku_Name_STATUS("VpnGw2")
	VirtualNetworkGatewaySku_Name_STATUS_VpnGw2AZ         = VirtualNetworkGatewaySku_Name_STATUS("VpnGw2AZ")
	VirtualNetworkGatewaySku_Name_STATUS_VpnGw3           = VirtualNetworkGatewaySku_Name_STATUS("VpnGw3")
	VirtualNetworkGatewaySku_Name_STATUS_VpnGw3AZ         = VirtualNetworkGatewaySku_Name_STATUS("VpnGw3AZ")
	VirtualNetworkGatewaySku_Name_STATUS_VpnGw4           = VirtualNetworkGatewaySku_Name_STATUS("VpnGw4")
	VirtualNetworkGatewaySku_Name_STATUS_VpnGw4AZ         = VirtualNetworkGatewaySku_Name_STATUS("VpnGw4AZ")
	VirtualNetworkGatewaySku_Name_STATUS_VpnGw5           = VirtualNetworkGatewaySku_Name_STATUS("VpnGw5")
	VirtualNetworkGatewaySku_Name_STATUS_VpnGw5AZ         = VirtualNetworkGatewaySku_Name_STATUS("VpnGw5AZ")
)

// Mapping from string to VirtualNetworkGatewaySku_Name_STATUS
var virtualNetworkGatewaySku_Name_STATUS_Values = map[string]VirtualNetworkGatewaySku_Name_STATUS{
	"basic":            VirtualNetworkGatewaySku_Name_STATUS_Basic,
	"ergw1az":          VirtualNetworkGatewaySku_Name_STATUS_ErGw1AZ,
	"ergw2az":          VirtualNetworkGatewaySku_Name_STATUS_ErGw2AZ,
	"ergw3az":          VirtualNetworkGatewaySku_Name_STATUS_ErGw3AZ,
	"highperformance":  VirtualNetworkGatewaySku_Name_STATUS_HighPerformance,
	"standard":         VirtualNetworkGatewaySku_Name_STATUS_Standard,
	"ultraperformance": VirtualNetworkGatewaySku_Name_STATUS_UltraPerformance,
	"vpngw1":           VirtualNetworkGatewaySku_Name_STATUS_VpnGw1,
	"vpngw1az":         VirtualNetworkGatewaySku_Name_STATUS_VpnGw1AZ,
	"vpngw2":           VirtualNetworkGatewaySku_Name_STATUS_VpnGw2,
	"vpngw2az":         VirtualNetworkGatewaySku_Name_STATUS_VpnGw2AZ,
	"vpngw3":           VirtualNetworkGatewaySku_Name_STATUS_VpnGw3,
	"vpngw3az":         VirtualNetworkGatewaySku_Name_STATUS_VpnGw3AZ,
	"vpngw4":           VirtualNetworkGatewaySku_Name_STATUS_VpnGw4,
	"vpngw4az":         VirtualNetworkGatewaySku_Name_STATUS_VpnGw4AZ,
	"vpngw5":           VirtualNetworkGatewaySku_Name_STATUS_VpnGw5,
	"vpngw5az":         VirtualNetworkGatewaySku_Name_STATUS_VpnGw5AZ,
}

type VirtualNetworkGatewaySku_Tier_STATUS string

const (
	VirtualNetworkGatewaySku_Tier_STATUS_Basic            = VirtualNetworkGatewaySku_Tier_STATUS("Basic")
	VirtualNetworkGatewaySku_Tier_STATUS_ErGw1AZ          = VirtualNetworkGatewaySku_Tier_STATUS("ErGw1AZ")
	VirtualNetworkGatewaySku_Tier_STATUS_ErGw2AZ          = VirtualNetworkGatewaySku_Tier_STATUS("ErGw2AZ")
	VirtualNetworkGatewaySku_Tier_STATUS_ErGw3AZ          = VirtualNetworkGatewaySku_Tier_STATUS("ErGw3AZ")
	VirtualNetworkGatewaySku_Tier_STATUS_HighPerformance  = VirtualNetworkGatewaySku_Tier_STATUS("HighPerformance")
	VirtualNetworkGatewaySku_Tier_STATUS_Standard         = VirtualNetworkGatewaySku_Tier_STATUS("Standard")
	VirtualNetworkGatewaySku_Tier_STATUS_UltraPerformance = VirtualNetworkGatewaySku_Tier_STATUS("UltraPerformance")
	VirtualNetworkGatewaySku_Tier_STATUS_VpnGw1           = VirtualNetworkGatewaySku_Tier_STATUS("VpnGw1")
	VirtualNetworkGatewaySku_Tier_STATUS_VpnGw1AZ         = VirtualNetworkGatewaySku_Tier_STATUS("VpnGw1AZ")
	VirtualNetworkGatewaySku_Tier_STATUS_VpnGw2           = VirtualNetworkGatewaySku_Tier_STATUS("VpnGw2")
	VirtualNetworkGatewaySku_Tier_STATUS_VpnGw2AZ         = VirtualNetworkGatewaySku_Tier_STATUS("VpnGw2AZ")
	VirtualNetworkGatewaySku_Tier_STATUS_VpnGw3           = VirtualNetworkGatewaySku_Tier_STATUS("VpnGw3")
	VirtualNetworkGatewaySku_Tier_STATUS_VpnGw3AZ         = VirtualNetworkGatewaySku_Tier_STATUS("VpnGw3AZ")
	VirtualNetworkGatewaySku_Tier_STATUS_VpnGw4           = VirtualNetworkGatewaySku_Tier_STATUS("VpnGw4")
	VirtualNetworkGatewaySku_Tier_STATUS_VpnGw4AZ         = VirtualNetworkGatewaySku_Tier_STATUS("VpnGw4AZ")
	VirtualNetworkGatewaySku_Tier_STATUS_VpnGw5           = VirtualNetworkGatewaySku_Tier_STATUS("VpnGw5")
	VirtualNetworkGatewaySku_Tier_STATUS_VpnGw5AZ         = VirtualNetworkGatewaySku_Tier_STATUS("VpnGw5AZ")
)

// Mapping from string to VirtualNetworkGatewaySku_Tier_STATUS
var virtualNetworkGatewaySku_Tier_STATUS_Values = map[string]VirtualNetworkGatewaySku_Tier_STATUS{
	"basic":            VirtualNetworkGatewaySku_Tier_STATUS_Basic,
	"ergw1az":          VirtualNetworkGatewaySku_Tier_STATUS_ErGw1AZ,
	"ergw2az":          VirtualNetworkGatewaySku_Tier_STATUS_ErGw2AZ,
	"ergw3az":          VirtualNetworkGatewaySku_Tier_STATUS_ErGw3AZ,
	"highperformance":  VirtualNetworkGatewaySku_Tier_STATUS_HighPerformance,
	"standard":         VirtualNetworkGatewaySku_Tier_STATUS_Standard,
	"ultraperformance": VirtualNetworkGatewaySku_Tier_STATUS_UltraPerformance,
	"vpngw1":           VirtualNetworkGatewaySku_Tier_STATUS_VpnGw1,
	"vpngw1az":         VirtualNetworkGatewaySku_Tier_STATUS_VpnGw1AZ,
	"vpngw2":           VirtualNetworkGatewaySku_Tier_STATUS_VpnGw2,
	"vpngw2az":         VirtualNetworkGatewaySku_Tier_STATUS_VpnGw2AZ,
	"vpngw3":           VirtualNetworkGatewaySku_Tier_STATUS_VpnGw3,
	"vpngw3az":         VirtualNetworkGatewaySku_Tier_STATUS_VpnGw3AZ,
	"vpngw4":           VirtualNetworkGatewaySku_Tier_STATUS_VpnGw4,
	"vpngw4az":         VirtualNetworkGatewaySku_Tier_STATUS_VpnGw4AZ,
	"vpngw5":           VirtualNetworkGatewaySku_Tier_STATUS_VpnGw5,
	"vpngw5az":         VirtualNetworkGatewaySku_Tier_STATUS_VpnGw5AZ,
}

type VpnClientConfiguration_VpnAuthenticationTypes_STATUS string

const (
	VpnClientConfiguration_VpnAuthenticationTypes_STATUS_AAD         = VpnClientConfiguration_VpnAuthenticationTypes_STATUS("AAD")
	VpnClientConfiguration_VpnAuthenticationTypes_STATUS_Certificate = VpnClientConfiguration_VpnAuthenticationTypes_STATUS("Certificate")
	VpnClientConfiguration_VpnAuthenticationTypes_STATUS_Radius      = VpnClientConfiguration_VpnAuthenticationTypes_STATUS("Radius")
)

// Mapping from string to VpnClientConfiguration_VpnAuthenticationTypes_STATUS
var vpnClientConfiguration_VpnAuthenticationTypes_STATUS_Values = map[string]VpnClientConfiguration_VpnAuthenticationTypes_STATUS{
	"aad":         VpnClientConfiguration_VpnAuthenticationTypes_STATUS_AAD,
	"certificate": VpnClientConfiguration_VpnAuthenticationTypes_STATUS_Certificate,
	"radius":      VpnClientConfiguration_VpnAuthenticationTypes_STATUS_Radius,
}

type VpnClientConfiguration_VpnClientProtocols_STATUS string

const (
	VpnClientConfiguration_VpnClientProtocols_STATUS_IkeV2   = VpnClientConfiguration_VpnClientProtocols_STATUS("IkeV2")
	VpnClientConfiguration_VpnClientProtocols_STATUS_OpenVPN = VpnClientConfiguration_VpnClientProtocols_STATUS("OpenVPN")
	VpnClientConfiguration_VpnClientProtocols_STATUS_SSTP    = VpnClientConfiguration_VpnClientProtocols_STATUS("SSTP")
)

// Mapping from string to VpnClientConfiguration_VpnClientProtocols_STATUS
var vpnClientConfiguration_VpnClientProtocols_STATUS_Values = map[string]VpnClientConfiguration_VpnClientProtocols_STATUS{
	"ikev2":   VpnClientConfiguration_VpnClientProtocols_STATUS_IkeV2,
	"openvpn": VpnClientConfiguration_VpnClientProtocols_STATUS_OpenVPN,
	"sstp":    VpnClientConfiguration_VpnClientProtocols_STATUS_SSTP,
}

// VPN client revoked certificate of virtual network gateway.
type VpnClientRevokedCertificate_STATUS 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: Properties of the vpn client revoked certificate.
	Properties *VpnClientRevokedCertificatePropertiesFormat_STATUS `json:"properties,omitempty"`
}

// VPN client root certificate of virtual network gateway.
type VpnClientRootCertificate_STATUS 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: Properties of the vpn client root certificate.
	Properties *VpnClientRootCertificatePropertiesFormat_STATUS `json:"properties,omitempty"`
}

// The DH Groups used in IKE Phase 1 for initial SA.
type DhGroup_STATUS string

const (
	DhGroup_STATUS_DHGroup1    = DhGroup_STATUS("DHGroup1")
	DhGroup_STATUS_DHGroup14   = DhGroup_STATUS("DHGroup14")
	DhGroup_STATUS_DHGroup2    = DhGroup_STATUS("DHGroup2")
	DhGroup_STATUS_DHGroup2048 = DhGroup_STATUS("DHGroup2048")
	DhGroup_STATUS_DHGroup24   = DhGroup_STATUS("DHGroup24")
	DhGroup_STATUS_ECP256      = DhGroup_STATUS("ECP256")
	DhGroup_STATUS_ECP384      = DhGroup_STATUS("ECP384")
	DhGroup_STATUS_None        = DhGroup_STATUS("None")
)

// Mapping from string to DhGroup_STATUS
var dhGroup_STATUS_Values = map[string]DhGroup_STATUS{
	"dhgroup1":    DhGroup_STATUS_DHGroup1,
	"dhgroup14":   DhGroup_STATUS_DHGroup14,
	"dhgroup2":    DhGroup_STATUS_DHGroup2,
	"dhgroup2048": DhGroup_STATUS_DHGroup2048,
	"dhgroup24":   DhGroup_STATUS_DHGroup24,
	"ecp256":      DhGroup_STATUS_ECP256,
	"ecp384":      DhGroup_STATUS_ECP384,
	"none":        DhGroup_STATUS_None,
}

// The IKE encryption algorithm (IKE phase 2).
type IkeEncryption_STATUS string

const (
	IkeEncryption_STATUS_AES128    = IkeEncryption_STATUS("AES128")
	IkeEncryption_STATUS_AES192    = IkeEncryption_STATUS("AES192")
	IkeEncryption_STATUS_AES256    = IkeEncryption_STATUS("AES256")
	IkeEncryption_STATUS_DES       = IkeEncryption_STATUS("DES")
	IkeEncryption_STATUS_DES3      = IkeEncryption_STATUS("DES3")
	IkeEncryption_STATUS_GCMAES128 = IkeEncryption_STATUS("GCMAES128")
	IkeEncryption_STATUS_GCMAES256 = IkeEncryption_STATUS("GCMAES256")
)

// Mapping from string to IkeEncryption_STATUS
var ikeEncryption_STATUS_Values = map[string]IkeEncryption_STATUS{
	"aes128":    IkeEncryption_STATUS_AES128,
	"aes192":    IkeEncryption_STATUS_AES192,
	"aes256":    IkeEncryption_STATUS_AES256,
	"des":       IkeEncryption_STATUS_DES,
	"des3":      IkeEncryption_STATUS_DES3,
	"gcmaes128": IkeEncryption_STATUS_GCMAES128,
	"gcmaes256": IkeEncryption_STATUS_GCMAES256,
}

// The IKE integrity algorithm (IKE phase 2).
type IkeIntegrity_STATUS string

const (
	IkeIntegrity_STATUS_GCMAES128 = IkeIntegrity_STATUS("GCMAES128")
	IkeIntegrity_STATUS_GCMAES256 = IkeIntegrity_STATUS("GCMAES256")
	IkeIntegrity_STATUS_MD5       = IkeIntegrity_STATUS("MD5")
	IkeIntegrity_STATUS_SHA1      = IkeIntegrity_STATUS("SHA1")
	IkeIntegrity_STATUS_SHA256    = IkeIntegrity_STATUS("SHA256")
	IkeIntegrity_STATUS_SHA384    = IkeIntegrity_STATUS("SHA384")
)

// Mapping from string to IkeIntegrity_STATUS
var ikeIntegrity_STATUS_Values = map[string]IkeIntegrity_STATUS{
	"gcmaes128": IkeIntegrity_STATUS_GCMAES128,
	"gcmaes256": IkeIntegrity_STATUS_GCMAES256,
	"md5":       IkeIntegrity_STATUS_MD5,
	"sha1":      IkeIntegrity_STATUS_SHA1,
	"sha256":    IkeIntegrity_STATUS_SHA256,
	"sha384":    IkeIntegrity_STATUS_SHA384,
}

// The IPSec encryption algorithm (IKE phase 1).
type IpsecEncryption_STATUS string

const (
	IpsecEncryption_STATUS_AES128    = IpsecEncryption_STATUS("AES128")
	IpsecEncryption_STATUS_AES192    = IpsecEncryption_STATUS("AES192")
	IpsecEncryption_STATUS_AES256    = IpsecEncryption_STATUS("AES256")
	IpsecEncryption_STATUS_DES       = IpsecEncryption_STATUS("DES")
	IpsecEncryption_STATUS_DES3      = IpsecEncryption_STATUS("DES3")
	IpsecEncryption_STATUS_GCMAES128 = IpsecEncryption_STATUS("GCMAES128")
	IpsecEncryption_STATUS_GCMAES192 = IpsecEncryption_STATUS("GCMAES192")
	IpsecEncryption_STATUS_GCMAES256 = IpsecEncryption_STATUS("GCMAES256")
	IpsecEncryption_STATUS_None      = IpsecEncryption_STATUS("None")
)

// Mapping from string to IpsecEncryption_STATUS
var ipsecEncryption_STATUS_Values = map[string]IpsecEncryption_STATUS{
	"aes128":    IpsecEncryption_STATUS_AES128,
	"aes192":    IpsecEncryption_STATUS_AES192,
	"aes256":    IpsecEncryption_STATUS_AES256,
	"des":       IpsecEncryption_STATUS_DES,
	"des3":      IpsecEncryption_STATUS_DES3,
	"gcmaes128": IpsecEncryption_STATUS_GCMAES128,
	"gcmaes192": IpsecEncryption_STATUS_GCMAES192,
	"gcmaes256": IpsecEncryption_STATUS_GCMAES256,
	"none":      IpsecEncryption_STATUS_None,
}

// The IPSec integrity algorithm (IKE phase 1).
type IpsecIntegrity_STATUS string

const (
	IpsecIntegrity_STATUS_GCMAES128 = IpsecIntegrity_STATUS("GCMAES128")
	IpsecIntegrity_STATUS_GCMAES192 = IpsecIntegrity_STATUS("GCMAES192")
	IpsecIntegrity_STATUS_GCMAES256 = IpsecIntegrity_STATUS("GCMAES256")
	IpsecIntegrity_STATUS_MD5       = IpsecIntegrity_STATUS("MD5")
	IpsecIntegrity_STATUS_SHA1      = IpsecIntegrity_STATUS("SHA1")
	IpsecIntegrity_STATUS_SHA256    = IpsecIntegrity_STATUS("SHA256")
)

// Mapping from string to IpsecIntegrity_STATUS
var ipsecIntegrity_STATUS_Values = map[string]IpsecIntegrity_STATUS{
	"gcmaes128": IpsecIntegrity_STATUS_GCMAES128,
	"gcmaes192": IpsecIntegrity_STATUS_GCMAES192,
	"gcmaes256": IpsecIntegrity_STATUS_GCMAES256,
	"md5":       IpsecIntegrity_STATUS_MD5,
	"sha1":      IpsecIntegrity_STATUS_SHA1,
	"sha256":    IpsecIntegrity_STATUS_SHA256,
}

// The Pfs Groups used in IKE Phase 2 for new child SA.
type PfsGroup_STATUS string

const (
	PfsGroup_STATUS_ECP256  = PfsGroup_STATUS("ECP256")
	PfsGroup_STATUS_ECP384  = PfsGroup_STATUS("ECP384")
	PfsGroup_STATUS_None    = PfsGroup_STATUS("None")
	PfsGroup_STATUS_PFS1    = PfsGroup_STATUS("PFS1")
	PfsGroup_STATUS_PFS14   = PfsGroup_STATUS("PFS14")
	PfsGroup_STATUS_PFS2    = PfsGroup_STATUS("PFS2")
	PfsGroup_STATUS_PFS2048 = PfsGroup_STATUS("PFS2048")
	PfsGroup_STATUS_PFS24   = PfsGroup_STATUS("PFS24")
	PfsGroup_STATUS_PFSMM   = PfsGroup_STATUS("PFSMM")
)

// Mapping from string to PfsGroup_STATUS
var pfsGroup_STATUS_Values = map[string]PfsGroup_STATUS{
	"ecp256":  PfsGroup_STATUS_ECP256,
	"ecp384":  PfsGroup_STATUS_ECP384,
	"none":    PfsGroup_STATUS_None,
	"pfs1":    PfsGroup_STATUS_PFS1,
	"pfs14":   PfsGroup_STATUS_PFS14,
	"pfs2":    PfsGroup_STATUS_PFS2,
	"pfs2048": PfsGroup_STATUS_PFS2048,
	"pfs24":   PfsGroup_STATUS_PFS24,
	"pfsmm":   PfsGroup_STATUS_PFSMM,
}

// Properties of the revoked VPN client certificate of virtual network gateway.
type VpnClientRevokedCertificatePropertiesFormat_STATUS struct {
	// ProvisioningState: The provisioning state of the VPN client revoked certificate resource.
	ProvisioningState *ProvisioningState_STATUS `json:"provisioningState,omitempty"`

	// Thumbprint: The revoked VPN client certificate thumbprint.
	Thumbprint *string `json:"thumbprint,omitempty"`
}

// Properties of SSL certificates of application gateway.
type VpnClientRootCertificatePropertiesFormat_STATUS struct {
	// ProvisioningState: The provisioning state of the VPN client root certificate resource.
	ProvisioningState *ProvisioningState_STATUS `json:"provisioningState,omitempty"`

	// PublicCertData: The certificate public data.
	PublicCertData *string `json:"publicCertData,omitempty"`
}
